From a76684f20359005575021d53fe3c652ab9db08dc Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 17 Dec 2016 14:07:44 -0800 Subject: [PATCH 001/189] Version bump to 0.36.0.dev0 --- homeassistant/const.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 0a93f080df7..0789531e9a3 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,8 +1,8 @@ # coding: utf-8 """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 -MINOR_VERSION = 35 -PATCH_VERSION = '0' +MINOR_VERSION = 36 +PATCH_VERSION = '0.dev0' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4, 2) From 01e6bd2c9252f701e80e514f81ad7ad7c5f639bd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 00:14:59 -0800 Subject: [PATCH 002/189] Gracefully exit with async logger (#4965) * Gracefully exit with async logger * Lint --- homeassistant/core.py | 5 ++--- homeassistant/util/logging.py | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/homeassistant/core.py b/homeassistant/core.py index 7daab159f21..de272beeeea 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -298,9 +298,8 @@ class HomeAssistant(object): # cleanup async layer from python logging if self.data.get(DATA_ASYNCHANDLER): handler = self.data.pop(DATA_ASYNCHANDLER) - logger = logging.getLogger('') - handler.close() - logger.removeHandler(handler) + logging.getLogger('').removeHandler(handler) + yield from handler.async_close(blocking=True) self.loop.stop() diff --git a/homeassistant/util/logging.py b/homeassistant/util/logging.py index 1ddec0bc6a1..0a1218f5796 100644 --- a/homeassistant/util/logging.py +++ b/homeassistant/util/logging.py @@ -49,6 +49,23 @@ class AsyncHandler(object): """Wrap close to handler.""" self.emit(None) + @asyncio.coroutine + def async_close(self, blocking=False): + """Close the handler. + + When blocking=True, will wait till closed. + """ + self.close() + + if blocking: + # Python 3.4.4+ + # pylint: disable=no-member + if hasattr(self._queue, 'join'): + yield from self._queue.join() + else: + while not self._queue.empty(): + yield from asyncio.sleep(0, loop=self.loop) + def emit(self, record): """Process a record.""" ident = self.loop.__dict__.get("_thread_ident") @@ -66,15 +83,23 @@ class AsyncHandler(object): def _process(self): """Process log in a thread.""" + support_join = hasattr(self._queue, 'task_done') + while True: record = run_coroutine_threadsafe( self._queue.get(), self.loop).result() + # pylint: disable=no-member + if record is None: self.handler.close() + if support_join: + self.loop.call_soon_threadsafe(self._queue.task_done) return self.handler.emit(record) + if support_join: + self.loop.call_soon_threadsafe(self._queue.task_done) def createLock(self): """Ignore lock stuff.""" From 9f298a92f44ed58dea8ad6af151562b5045d2d12 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 11:39:33 +0100 Subject: [PATCH 003/189] Remove and update docstrings (#4969) --- homeassistant/components/sensor/sensehat.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/sensor/sensehat.py b/homeassistant/components/sensor/sensehat.py index 50cd233b39b..65ffca714b0 100644 --- a/homeassistant/components/sensor/sensehat.py +++ b/homeassistant/components/sensor/sensehat.py @@ -26,8 +26,8 @@ MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) SENSOR_TYPES = { 'temperature': ['temperature', TEMP_CELSIUS], - 'humidity': ['humidity', "%"], - 'pressure': ['pressure', "mb"], + 'humidity': ['humidity', '%'], + 'pressure': ['pressure', 'mb'], } PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -56,7 +56,7 @@ def get_average(temp_base): def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the sensor platform.""" + """Setup the Sense HAT sensor platform.""" data = SenseHatData() dev = [] @@ -67,7 +67,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class SenseHatSensor(Entity): - """Representation of a sensehat sensor.""" + """Representation of a Sense HAT sensor.""" def __init__(self, data, sensor_types): """Initialize the sensor.""" @@ -76,7 +76,6 @@ class SenseHatSensor(Entity): self._unit_of_measurement = SENSOR_TYPES[sensor_types][1] self.type = sensor_types self._state = None - """updating data.""" self.update() @property @@ -98,7 +97,7 @@ class SenseHatSensor(Entity): """Get the latest data and updates the states.""" self.data.update() if not self.data.humidity: - _LOGGER.error("Don't receive data!") + _LOGGER.error("Don't receive data") return if self.type == 'temperature': @@ -120,14 +119,14 @@ class SenseHatData(object): @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): - """Get the latest data from sensehat.""" + """Get the latest data from Sense HAT.""" from sense_hat import SenseHat sense = SenseHat() temp_from_h = sense.get_temperature_from_humidity() temp_from_p = sense.get_temperature_from_pressure() t_cpu = get_cpu_temp() - t_total = (temp_from_h+temp_from_p)/2 - t_correct = t_total - ((t_cpu-t_total)/1.5) + t_total = (temp_from_h + temp_from_p) / 2 + t_correct = t_total - ((t_cpu - t_total) / 1.5) t_correct = get_average(t_correct) self.temperature = t_correct self.humidity = sense.get_humidity() From 18cf6f6f992158432ceb31c0fe50b1273c33e951 Mon Sep 17 00:00:00 2001 From: Thibault Cohen Date: Sun, 18 Dec 2016 06:23:10 -0500 Subject: [PATCH 004/189] Add HydroQuebec support (#4840) --- .coveragerc | 1 + .../components/sensor/hydroquebec.py | 320 ++++++++++++++++++ requirements_all.txt | 1 + 3 files changed, 322 insertions(+) create mode 100644 homeassistant/components/sensor/hydroquebec.py diff --git a/.coveragerc b/.coveragerc index 1a62d7e60f3..42ea738a3ef 100644 --- a/.coveragerc +++ b/.coveragerc @@ -277,6 +277,7 @@ omit = homeassistant/components/sensor/haveibeenpwned.py homeassistant/components/sensor/hddtemp.py homeassistant/components/sensor/hp_ilo.py + homeassistant/components/sensor/hydroquebec.py homeassistant/components/sensor/imap.py homeassistant/components/sensor/imap_email_content.py homeassistant/components/sensor/influxdb.py diff --git a/homeassistant/components/sensor/hydroquebec.py b/homeassistant/components/sensor/hydroquebec.py new file mode 100644 index 00000000000..c7fbac6b56a --- /dev/null +++ b/homeassistant/components/sensor/hydroquebec.py @@ -0,0 +1,320 @@ +""" +Support for HydroQuebec. + +Get data from 'My Consumption Profile' page: +https://www.hydroquebec.com/portail/en/group/clientele/portrait-de-consommation + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.hydroquebec/ +""" +import logging +from datetime import timedelta + +import requests +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import ( + CONF_USERNAME, CONF_PASSWORD, + CONF_NAME, CONF_MONITORED_VARIABLES) +from homeassistant.helpers.entity import Entity +from homeassistant.util import Throttle +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['beautifulsoup4==4.5.1'] + +_LOGGER = logging.getLogger(__name__) + +KILOWATT_HOUR = "kWh" # type: str +PRICE = "CAD" # type: str +DAYS = "days" # type: str + +DEFAULT_NAME = "HydroQuebec" + +REQUESTS_TIMEOUT = 15 +MIN_TIME_BETWEEN_UPDATES = timedelta(hours=1) + +SENSOR_TYPES = { + 'period_total_bill': ['Current period bill', + PRICE, 'mdi:square-inc-cash'], + 'period_length': ['Current period length', + DAYS, 'mdi:calendar-today'], + 'period_total_days': ['Total number of days in this period', + DAYS, 'mdi:calendar-today'], + 'period_mean_daily_bill': ['Period daily average bill', + PRICE, 'mdi:square-inc-cash'], + 'period_mean_daily_consumption': ['Period daily average consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'period_total_consumption': ['Total Consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'period_lower_price_consumption': ['Period Lower price consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'period_higher_price_consumption': ['Period Higher price consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'yesterday_total_consumption': ['Yesterday total consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'yesterday_lower_price_consumption': ['Yesterday lower price consumption', + KILOWATT_HOUR, 'mdi:flash'], + 'yesterday_higher_price_consumption': + ['Yesterday higher price consumption', KILOWATT_HOUR, 'mdi:flash'], +} + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_MONITORED_VARIABLES): + vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]), + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}) + +HOST = "https://www.hydroquebec.com" +HOME_URL = "{}/portail/web/clientele/authentification".format(HOST) +PROFILE_URL = ("{}/portail/fr/group/clientele/" + "portrait-de-consommation".format(HOST)) +MONTHLY_MAP = (('period_total_bill', 'montantFacturePeriode'), + ('period_length', 'nbJourLecturePeriode'), + ('period_total_days', 'nbJourPrevuPeriode'), + ('period_mean_daily_bill', 'moyenneDollarsJourPeriode'), + ('period_mean_daily_consumption', 'moyenneKwhJourPeriode'), + ('period_total_consumption', 'consoTotalPeriode'), + ('period_lower_price_consumption', 'consoRegPeriode'), + ('period_higher_price_consumption', 'consoHautPeriode')) +DAILY_MAP = (('yesterday_total_consumption', 'consoTotalQuot'), + ('yesterday_lower_price_consumption', 'consoRegQuot'), + ('yesterday_higher_price_consumption', 'consoHautQuot')) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the HydroQuebec sensor.""" + # Create a data fetcher to support all of the configured sensors. Then make + # the first call to init the data. + + username = config.get(CONF_USERNAME) + password = config.get(CONF_PASSWORD) + + try: + hydroquebec_data = HydroquebecData(username, password) + hydroquebec_data.update() + except requests.exceptions.HTTPError as error: + _LOGGER.error(error) + return False + + name = config.get(CONF_NAME) + + sensors = [] + for variable in config[CONF_MONITORED_VARIABLES]: + sensors.append(HydroQuebecSensor(hydroquebec_data, variable, name)) + + add_devices(sensors) + + +class HydroQuebecSensor(Entity): + """Implementation of a HydroQuebec sensor.""" + + def __init__(self, hydroquebec_data, sensor_type, name): + """Initialize the sensor.""" + self.client_name = name + self.type = sensor_type + self.entity_id = "sensor.{}_{}".format(name, sensor_type) + self._name = SENSOR_TYPES[sensor_type][0] + self._unit_of_measurement = SENSOR_TYPES[sensor_type][1] + self._icon = SENSOR_TYPES[sensor_type][2] + self.hydroquebec_data = hydroquebec_data + self._state = None + + self.update() + + @property + def name(self): + """Return the name of the sensor.""" + return '{} {}'.format(self.client_name, self._name) + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def unit_of_measurement(self): + """Return the unit of measurement of this entity, if any.""" + return self._unit_of_measurement + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return self._icon + + def update(self): + """Get the latest data from Hydroquebec and update the state.""" + self.hydroquebec_data.update() + self._state = round(self.hydroquebec_data.data[self.type], 2) + + +class HydroquebecData(object): + """Get data from HydroQuebec.""" + + def __init__(self, username, password): + """Initialize the data object.""" + self.username = username + self.password = password + self.data = None + self.cookies = None + + def _get_login_page(self): + """Go to the login page.""" + from bs4 import BeautifulSoup + try: + raw_res = requests.get(HOME_URL, timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not connect to login page") + return False + # Get cookies + self.cookies = raw_res.cookies + # Get login url + soup = BeautifulSoup(raw_res.content, 'html.parser') + form_node = soup.find('form', {'name': 'fm'}) + if form_node is None: + _LOGGER.error("No login form find") + return False + login_url = form_node.attrs.get('action') + if login_url is None: + _LOGGER.error("Can not found login url") + return False + return login_url + + def _post_login_page(self, login_url): + """Login to HydroQuebec website.""" + data = {"login": self.username, + "_58_password": self.password} + + try: + raw_res = requests.post(login_url, + data=data, + cookies=self.cookies, + allow_redirects=False, + timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not submit login form") + return False + if raw_res.status_code != 302: + _LOGGER.error("Bad HTTP status code") + return False + + # Update cookies + self.cookies.update(raw_res.cookies) + return True + + def _get_p_p_id(self): + """Get id of consumption profile.""" + from bs4 import BeautifulSoup + try: + raw_res = requests.get(PROFILE_URL, + cookies=self.cookies, + timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not get profile page") + return False + # Update cookies + self.cookies.update(raw_res.cookies) + # Looking for p_p_id + soup = BeautifulSoup(raw_res.content, 'html.parser') + p_p_id = None + for node in soup.find_all('span'): + node_id = node.attrs.get('id', "") + print(node_id) + if node_id.startswith("p_portraitConsommation_WAR"): + p_p_id = node_id[2:] + break + + if p_p_id is None: + _LOGGER.error("Could not get p_p_id") + return False + + return p_p_id + + def _get_monthly_data(self, p_p_id): + """Get monthly data.""" + params = {"p_p_id": p_p_id, + "p_p_lifecycle": 2, + "p_p_resource_id": ("resourceObtenirDonnees" + "PeriodesConsommation")} + try: + raw_res = requests.get(PROFILE_URL, + params=params, + cookies=self.cookies, + timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not get monthly data") + return False + try: + json_output = raw_res.json() + except OSError: + _LOGGER.error("Could not get monthly data") + return False + + if not json_output.get('success'): + _LOGGER.error("Could not get monthly data") + return False + + return json_output.get('results') + + def _get_daily_data(self, p_p_id, start_date, end_date): + """Get daily data.""" + params = {"p_p_id": p_p_id, + "p_p_lifecycle": 2, + "p_p_resource_id": + "resourceObtenirDonneesQuotidiennesConsommation", + "dateDebutPeriode": start_date, + "dateFinPeriode": end_date} + try: + raw_res = requests.get(PROFILE_URL, + params=params, + cookies=self.cookies, + timeout=REQUESTS_TIMEOUT) + except OSError: + _LOGGER.error("Can not get daily data") + return False + try: + json_output = raw_res.json() + except OSError: + _LOGGER.error("Could not get daily data") + return False + + if not json_output.get('success'): + _LOGGER.error("Could not get daily data") + return False + + return json_output.get('results') + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """Get the latest data from HydroQuebec.""" + # Get login page + login_url = self._get_login_page() + if not login_url: + return + # Post login page + if not self._post_login_page(login_url): + return + # Get p_p_id + p_p_id = self._get_p_p_id() + if not p_p_id: + return + # Get Monthly data + monthly_data = self._get_monthly_data(p_p_id)[0] + if not monthly_data: + return + # Get daily data + start_date = monthly_data.get('dateDebutPeriode') + end_date = monthly_data.get('dateFinPeriode') + daily_data = self._get_daily_data(p_p_id, start_date, end_date) + if not daily_data: + return + daily_data = daily_data[0]['courant'] + + # format data + self.data = {} + for key1, key2 in MONTHLY_MAP: + self.data[key1] = monthly_data[key2] + for key1, key2 in DAILY_MAP: + self.data[key1] = daily_data[key2] diff --git a/requirements_all.txt b/requirements_all.txt index f39a560f2f8..291ef4813a0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -48,6 +48,7 @@ astral==1.3.3 # homeassistant.components.sensor.linux_battery batinfo==0.4.2 +# homeassistant.components.sensor.hydroquebec # homeassistant.components.sensor.scrape beautifulsoup4==4.5.1 From 44eaca5985b73a2e2e7af06efb59f34bb0bd7b55 Mon Sep 17 00:00:00 2001 From: Nick Sabinske Date: Sun, 18 Dec 2016 13:05:05 -0500 Subject: [PATCH 005/189] Add support for the Sonarr URL Base setting (#4975) * Add support for the Sonarr URL Base setting For those of us who have sonarr hidden behind reverse proxy under a path, we need to be able to pass the path Adds urlbase: XXX to the sonarr yaml... Match it to what you have set in Sonarr (Settings>General>URL Base) * Fix line lengths * Fix trailing white space caused by last change * Removing use of len() --- homeassistant/components/sensor/sonarr.py | 25 +++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/sensor/sonarr.py b/homeassistant/components/sensor/sonarr.py index 62f33556c17..d60a26f7092 100644 --- a/homeassistant/components/sensor/sonarr.py +++ b/homeassistant/components/sensor/sonarr.py @@ -23,9 +23,11 @@ _LOGGER = logging.getLogger(__name__) CONF_DAYS = 'days' CONF_INCLUDED = 'include_paths' CONF_UNIT = 'unit' +CONF_URLBASE = 'urlbase' DEFAULT_HOST = 'localhost' DEFAULT_PORT = 8989 +DEFAULT_URLBASE = '' DEFAULT_DAYS = '1' DEFAULT_UNIT = 'GB' @@ -39,12 +41,13 @@ SENSOR_TYPES = { } ENDPOINTS = { - 'diskspace': 'http{0}://{1}:{2}/api/diskspace?apikey={3}', - 'queue': 'http{0}://{1}:{2}/api/queue?apikey={3}', - 'upcoming': 'http{0}://{1}:{2}/api/calendar?apikey={3}&start={4}&end={5}', - 'wanted': 'http{0}://{1}:{2}/api/wanted/missing?apikey={3}', - 'series': 'http{0}://{1}:{2}/api/series?apikey={3}', - 'commands': 'http{0}://{1}:{2}/api/command?apikey={3}' + 'diskspace': 'http{0}://{1}:{2}/{3}api/diskspace?apikey={4}', + 'queue': 'http{0}://{1}:{2}/{3}api/queue?apikey={4}', + 'upcoming': + 'http{0}://{1}:{2}/{3}api/calendar?apikey={4}&start={5}&end={6}', + 'wanted': 'http{0}://{1}:{2}/{3}api/wanted/missing?apikey={4}', + 'series': 'http{0}://{1}:{2}/{3}api/series?apikey={4}', + 'commands': 'http{0}://{1}:{2}/{3}api/command?apikey={4}' } # Support to Yottabytes for the future, why not @@ -57,6 +60,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SSL, default=False): cv.boolean, vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string, vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_URLBASE, default=DEFAULT_URLBASE): cv.string, vol.Optional(CONF_DAYS, default=DEFAULT_DAYS): cv.string, vol.Optional(CONF_UNIT, default=DEFAULT_UNIT): vol.In(BYTE_SIZES) }) @@ -80,6 +84,9 @@ class SonarrSensor(Entity): self.conf = conf self.host = conf.get(CONF_HOST) self.port = conf.get(CONF_PORT) + self.urlbase = conf.get(CONF_URLBASE) + if self.urlbase: + self.urlbase = "%s/" % self.urlbase.strip('/') self.apikey = conf.get(CONF_API_KEY) self.included = conf.get(CONF_INCLUDED) self.days = int(conf.get(CONF_DAYS)) @@ -107,7 +114,8 @@ class SonarrSensor(Entity): try: res = requests.get( ENDPOINTS[self.type].format( - self.ssl, self.host, self.port, self.apikey, start, end), + self.ssl, self.host, self.port, + self.urlbase, self.apikey, start, end), timeout=5) except OSError: _LOGGER.error('Host %s is not available', self.host) @@ -133,7 +141,8 @@ class SonarrSensor(Entity): data = res.json() res = requests.get('{}&pageSize={}'.format( ENDPOINTS[self.type].format( - self.ssl, self.host, self.port, self.apikey), + self.ssl, self.host, self.port, + self.urlbase, self.apikey), data['totalRecords']), timeout=5) self.data = res.json()['records'] self._state = len(self.data) From fec33347fb0e99c680d3045f574974b1711a94ac Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 18 Dec 2016 20:26:40 +0100 Subject: [PATCH 006/189] Bugfix TTS clear cache (#4974) * Bugfix TTS base url with certificate * fix lint * remove base_url stuff fix only clear_cache stuff * cleanup --- homeassistant/components/tts/__init__.py | 11 +++--- tests/components/tts/test_init.py | 44 ++++++++++++------------ 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index d0faa60684f..32cbbaa265b 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -157,7 +157,8 @@ def async_setup(hass, config): hass.services.async_register( DOMAIN, SERVICE_CLEAR_CACHE, async_clear_cache_handle, - descriptions.get(SERVICE_CLEAR_CACHE), schema=SERVICE_CLEAR_CACHE) + descriptions.get(SERVICE_CLEAR_CACHE), + schema=SCHEMA_SERVICE_CLEAR_CACHE) return True @@ -170,9 +171,9 @@ class SpeechManager(object): self.hass = hass self.providers = {} - self.use_cache = True - self.cache_dir = None - self.time_memory = None + self.use_cache = DEFAULT_CACHE + self.cache_dir = DEFAULT_CACHE_DIR + self.time_memory = DEFAULT_TIME_MEMORY self.file_cache = {} self.mem_cache = {} @@ -229,7 +230,7 @@ class SpeechManager(object): """Remove files from filesystem.""" for _, filename in self.file_cache.items(): try: - os.remove(os.path.join(self.cache_dir), filename) + os.remove(os.path.join(self.cache_dir, filename)) except OSError: pass diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py index fbdbddb8db5..fccd9d66bd7 100644 --- a/tests/components/tts/test_init.py +++ b/tests/components/tts/test_init.py @@ -88,35 +88,35 @@ class TestTTS(object): self.default_tts_cache, "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) - def test_setup_component_and_test_service_clear_cache(self): - """Setup the demo platform and call service clear cache.""" - calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + def test_setup_component_and_test_service_clear_cache(self): + """Setup the demo platform and call service clear cache.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - config = { - tts.DOMAIN: { - 'platform': 'demo', - } + config = { + tts.DOMAIN: { + 'platform': 'demo', } + } - with assert_setup_component(1, tts.DOMAIN): - setup_component(self.hass, tts.DOMAIN, config) + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) - self.hass.services.call(tts.DOMAIN, 'demo_say', { - tts.ATTR_MESSAGE: "I person is on front of your door.", - }) - self.hass.block_till_done() + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + }) + self.hass.block_till_done() - assert len(calls) == 1 - assert os.path.isfile(os.path.join( - self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + assert len(calls) == 1 + assert os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) - self.hass.services.call(tts.DOMAIN, tts.SERVICE_CLEAR_CACHE, {}) - self.hass.block_till_done() + self.hass.services.call(tts.DOMAIN, tts.SERVICE_CLEAR_CACHE, {}) + self.hass.block_till_done() - assert not os.path.isfile(os.path.join( - self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + assert not os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) def test_setup_component_and_test_service_with_receive_voice(self): """Setup the demo platform and call service and receive voice.""" From f8af6e786338afafefcf99809d41f0e6f2deca61 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 12:56:07 -0800 Subject: [PATCH 007/189] Allow setting base url (#4985) --- homeassistant/components/http/__init__.py | 18 +++++++-- tests/components/http/test_init.py | 47 +++++++++++++++++++++++ 2 files changed, 61 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index 446b1f5f28b..1bbb3576eed 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -18,7 +18,7 @@ from aiohttp.web_exceptions import HTTPUnauthorized, HTTPMovedPermanently import homeassistant.helpers.config_validation as cv import homeassistant.remote as rem -from homeassistant.util import get_local_ip +import homeassistant.util as hass_util from homeassistant.components import persistent_notification from homeassistant.const import ( SERVER_PORT, CONTENT_TYPE_JSON, ALLOWED_CORS_HEADERS, @@ -41,6 +41,7 @@ REQUIREMENTS = ('aiohttp_cors==0.5.0',) CONF_API_PASSWORD = 'api_password' CONF_SERVER_HOST = 'server_host' CONF_SERVER_PORT = 'server_port' +CONF_BASE_URL = 'base_url' CONF_DEVELOPMENT = 'development' CONF_SSL_CERTIFICATE = 'ssl_certificate' CONF_SSL_KEY = 'ssl_key' @@ -84,6 +85,7 @@ HTTP_SCHEMA = vol.Schema({ vol.Optional(CONF_SERVER_HOST, default=DEFAULT_SERVER_HOST): cv.string, vol.Optional(CONF_SERVER_PORT, default=SERVER_PORT): vol.All(vol.Coerce(int), vol.Range(min=1, max=65535)), + vol.Optional(CONF_BASE_URL): cv.string, vol.Optional(CONF_DEVELOPMENT, default=DEFAULT_DEVELOPMENT): cv.string, vol.Optional(CONF_SSL_CERTIFICATE, default=None): cv.isfile, vol.Optional(CONF_SSL_KEY, default=None): cv.isfile, @@ -155,9 +157,17 @@ def async_setup(hass, config): hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, start_server) hass.http = server - hass.config.api = rem.API(server_host if server_host != '0.0.0.0' - else get_local_ip(), - api_password, server_port, + + host = conf.get(CONF_BASE_URL) + + if host: + pass + elif server_host != DEFAULT_SERVER_HOST: + host = server_host + else: + host = hass_util.get_local_ip() + + hass.config.api = rem.API(host, api_password, server_port, ssl_certificate is not None) return True diff --git a/tests/components/http/test_init.py b/tests/components/http/test_init.py index f50e1fb9dbf..10793406ea7 100644 --- a/tests/components/http/test_init.py +++ b/tests/components/http/test_init.py @@ -1,6 +1,7 @@ """The tests for the Home Assistant HTTP component.""" import asyncio import requests +from unittest.mock import MagicMock from homeassistant import bootstrap, const import homeassistant.components.http as http @@ -154,3 +155,49 @@ def test_registering_view_while_running(hass, test_client): text = yield from resp.text() assert text == 'hello' + + +def test_api_base_url(loop): + """Test setting api url.""" + + hass = MagicMock() + hass.loop = loop + + assert loop.run_until_complete( + bootstrap.async_setup_component(hass, 'http', { + 'http': { + 'base_url': 'example.com' + } + }) + ) + + assert hass.config.api.base_url == 'http://example.com:8123' + + assert loop.run_until_complete( + bootstrap.async_setup_component(hass, 'http', { + 'http': { + 'server_host': '1.1.1.1' + } + }) + ) + + assert hass.config.api.base_url == 'http://1.1.1.1:8123' + + assert loop.run_until_complete( + bootstrap.async_setup_component(hass, 'http', { + 'http': { + 'server_host': '1.1.1.1' + } + }) + ) + + assert hass.config.api.base_url == 'http://1.1.1.1:8123' + + assert loop.run_until_complete( + bootstrap.async_setup_component(hass, 'http', { + 'http': { + } + }) + ) + + assert hass.config.api.base_url == 'http://127.0.0.1:8123' From a6d995e394bd347e6154b9f4b8eaa12cc71685ba Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 18 Dec 2016 21:57:31 +0100 Subject: [PATCH 008/189] Bugfix wait in automation (#4984) --- homeassistant/components/automation/__init__.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/automation/__init__.py b/homeassistant/components/automation/__init__.py index 9ff2fbd878a..341e6e90233 100644 --- a/homeassistant/components/automation/__init__.py +++ b/homeassistant/components/automation/__init__.py @@ -166,7 +166,9 @@ def async_setup(hass, config): for entity in component.async_extract_from_service(service_call): tasks.append(entity.async_trigger( service_call.data.get(ATTR_VARIABLES), True)) - yield from asyncio.wait(tasks, loop=hass.loop) + + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) @asyncio.coroutine def turn_onoff_service_handler(service_call): @@ -175,7 +177,9 @@ def async_setup(hass, config): method = 'async_{}'.format(service_call.service) for entity in component.async_extract_from_service(service_call): tasks.append(getattr(entity, method)()) - yield from asyncio.wait(tasks, loop=hass.loop) + + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) @asyncio.coroutine def toggle_service_handler(service_call): @@ -186,7 +190,9 @@ def async_setup(hass, config): tasks.append(entity.async_turn_off()) else: tasks.append(entity.async_turn_on()) - yield from asyncio.wait(tasks, loop=hass.loop) + + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) @asyncio.coroutine def reload_service_handler(service_call): From 744d00a36e77897a2aa13f1d62b6a3dda4f90be9 Mon Sep 17 00:00:00 2001 From: andrey-git Date: Sun, 18 Dec 2016 22:58:59 +0200 Subject: [PATCH 009/189] Fix non-radio Sonos album-art by using track_info['album_art'] before checking other options. (#4958) * Fix Sonos album art for non-radio streams * Revert "Fix Sonos album art for non-radio streams" This reverts commit d71502d18f5778146cf45dcb717aba71f88a3fac. * Fix Sonos album art for non-radio streams * Move art existance check into _format_media_image_url --- homeassistant/components/media_player/sonos.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/media_player/sonos.py b/homeassistant/components/media_player/sonos.py index 94649b3a597..621fc03a7c3 100644 --- a/homeassistant/components/media_player/sonos.py +++ b/homeassistant/components/media_player/sonos.py @@ -424,6 +424,7 @@ class SonosDevice(MediaPlayerDevice): media_artist = track_info.get('artist') media_album_name = track_info.get('album') media_title = track_info.get('title') + media_image_url = track_info.get('album_art', None) media_position = None media_position_updated_at = None @@ -454,6 +455,7 @@ class SonosDevice(MediaPlayerDevice): elif is_radio_stream: media_image_url = self._format_media_image_url( + media_image_url, current_media_uri ) support_previous_track = False @@ -521,6 +523,7 @@ class SonosDevice(MediaPlayerDevice): else: # not a radio stream media_image_url = self._format_media_image_url( + media_image_url, track_info['uri'] ) support_previous_track = True @@ -647,12 +650,14 @@ class SonosDevice(MediaPlayerDevice): self._last_avtransport_event = None - def _format_media_image_url(self, uri): - return 'http://{host}:{port}/getaa?s=1&u={uri}'.format( - host=self._player.ip_address, - port=1400, - uri=urllib.parse.quote(uri) - ) + def _format_media_image_url(self, url, fallback_uri): + if url in ('', 'NOT_IMPLEMENTED', None): + return 'http://{host}:{port}/getaa?s=1&u={uri}'.format( + host=self._player.ip_address, + port=1400, + uri=urllib.parse.quote(fallback_uri) + ) + return url def process_sonos_event(self, event): """Process a service event coming from the speaker.""" @@ -672,6 +677,7 @@ class SonosDevice(MediaPlayerDevice): next_track_uri = event.variables.get('next_track_uri') if next_track_uri: next_track_image_url = self._format_media_image_url( + None, next_track_uri ) From ed0d14c902cb191b8393f69fea64bd60d284ca43 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 14:59:45 -0800 Subject: [PATCH 010/189] Base url: Fix external port different from internal port (#4990) * Base url: Fix external port different from internal port * Add base_url example to new config --- homeassistant/components/http/__init__.py | 6 ++++-- homeassistant/config.py | 7 +++++++ homeassistant/remote.py | 17 +++++++++++------ tests/components/http/test_init.py | 2 +- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index 1bbb3576eed..e35b5f31d8f 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -161,13 +161,15 @@ def async_setup(hass, config): host = conf.get(CONF_BASE_URL) if host: - pass + port = None elif server_host != DEFAULT_SERVER_HOST: host = server_host + port = server_port else: host = hass_util.get_local_ip() + port = server_port - hass.config.api = rem.API(host, api_password, server_port, + hass.config.api = rem.API(host, api_password, port, ssl_certificate is not None) return True diff --git a/homeassistant/config.py b/homeassistant/config.py index ba8cbeba3ee..f2f642de8ea 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -54,6 +54,8 @@ frontend: http: # Uncomment this to add a password (recommended!) # api_password: PASSWORD + # Uncomment this if you are using SSL or running in Docker etc + # base_url: example.duckdns.org:8123 # Checks for available updates updater: @@ -76,6 +78,11 @@ sun: # Weather Prediction sensor: platform: yr + +# Text to speech +tts: + platform: google + """ diff --git a/homeassistant/remote.py b/homeassistant/remote.py index c9270e2032f..69e8b88305f 100644 --- a/homeassistant/remote.py +++ b/homeassistant/remote.py @@ -55,15 +55,20 @@ class API(object): """Object to pass around Home Assistant API location and credentials.""" def __init__(self, host: str, api_password: Optional[str]=None, - port: Optional[int]=None, use_ssl: bool=False) -> None: + port: Optional[int]=SERVER_PORT, use_ssl: bool=False) -> None: """Initalize the API.""" self.host = host - self.port = port or SERVER_PORT + self.port = port self.api_password = api_password + if use_ssl: - self.base_url = "https://{}:{}".format(host, self.port) + self.base_url = "https://{}".format(host) else: - self.base_url = "http://{}:{}".format(host, self.port) + self.base_url = "http://{}".format(host) + + if port is not None: + self.base_url += ':{}'.format(port) + self.status = None self._headers = { HTTP_HEADER_CONTENT_TYPE: CONTENT_TYPE_JSON, @@ -106,8 +111,8 @@ class API(object): def __repr__(self) -> str: """Return the representation of the API.""" - return "API({}, {}, {})".format( - self.host, self.api_password, self.port) + return "".format( + self.base_url, 'yes' if self.api_password is not None else 'no') class HomeAssistant(ha.HomeAssistant): diff --git a/tests/components/http/test_init.py b/tests/components/http/test_init.py index 10793406ea7..e4deb7b60d1 100644 --- a/tests/components/http/test_init.py +++ b/tests/components/http/test_init.py @@ -171,7 +171,7 @@ def test_api_base_url(loop): }) ) - assert hass.config.api.base_url == 'http://example.com:8123' + assert hass.config.api.base_url == 'http://example.com' assert loop.run_until_complete( bootstrap.async_setup_component(hass, 'http', { From 53dde0e4e141a2c2d825960003ad87189e4f3c31 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 17:35:42 -0800 Subject: [PATCH 011/189] Unbreak dev --- homeassistant/const.py | 1 - 1 file changed, 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index 1a29b36cb4d..0789531e9a3 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -3,7 +3,6 @@ MAJOR_VERSION = 0 MINOR_VERSION = 36 PATCH_VERSION = '0.dev0' ->>>>>>> master __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4, 2) From 00b80d4fe1b5ac7329706dae9bc159dc6a7a4b39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Mon, 19 Dec 2016 02:59:08 +0100 Subject: [PATCH 012/189] Support for broadlink sp (#4961) * initial support for broadlink sp * style fix * style * bug fix --- homeassistant/components/switch/broadlink.py | 91 +++++++++++++++++++- 1 file changed, 87 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index ee71de3a22e..786ac5f06f5 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -17,7 +17,8 @@ from homeassistant.util.dt import utcnow from homeassistant.components.switch import (SwitchDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_FRIENDLY_NAME, CONF_SWITCHES, CONF_COMMAND_OFF, CONF_COMMAND_ON, - CONF_TIMEOUT, CONF_HOST, CONF_MAC) + CONF_TIMEOUT, CONF_HOST, CONF_MAC, + CONF_TYPE) import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['broadlink==0.2'] @@ -29,6 +30,8 @@ DEFAULT_NAME = 'Broadlink switch' DEFAULT_TIMEOUT = 10 SERVICE_LEARN = "learn_command" +SENSOR_TYPES = ["rm", "sp1", "sp2"] + SWITCH_SCHEMA = vol.Schema({ vol.Optional(CONF_COMMAND_OFF, default=None): cv.string, vol.Optional(CONF_COMMAND_ON, default=None): cv.string, @@ -39,6 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}), vol.Required(CONF_HOST): cv.string, vol.Required(CONF_MAC): cv.string, + vol.Optional(CONF_TYPE, default=SENSOR_TYPES[0]): vol.In(SENSOR_TYPES), vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int }) @@ -51,7 +55,18 @@ def setup_platform(hass, config, add_devices, discovery_info=None): ip_addr = config.get(CONF_HOST) mac_addr = binascii.unhexlify( config.get(CONF_MAC).encode().replace(b':', b'')) - broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) + sensor_type = config.get(CONF_TYPE) + + if sensor_type == "rm": + broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) + switch = BroadlinkRMSwitch + elif sensor_type == "sp1": + broadlink_device = broadlink.sp1((ip_addr, 80), mac_addr) + switch = BroadlinkSP1Switch + elif sensor_type == "sp2": + broadlink_device = broadlink.sp2((ip_addr, 80), mac_addr) + switch = BroadlinkSP2Switch + broadlink_device.timeout = config.get(CONF_TIMEOUT) try: broadlink_device.auth() @@ -92,7 +107,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): for object_id, device_config in devices.items(): switches.append( - BroadlinkRM2Switch( + switch( device_config.get(CONF_FRIENDLY_NAME, object_id), device_config.get(CONF_COMMAND_ON), device_config.get(CONF_COMMAND_OFF), @@ -103,7 +118,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): add_devices(switches) -class BroadlinkRM2Switch(SwitchDevice): +class BroadlinkRMSwitch(SwitchDevice): """Representation of an Broadlink switch.""" def __init__(self, friendly_name, command_on, command_off, device): @@ -124,6 +139,11 @@ class BroadlinkRM2Switch(SwitchDevice): """Return true if unable to access real state of entity.""" return True + @property + def should_poll(self): + """No polling needed.""" + return False + @property def is_on(self): """Return true if device is on.""" @@ -156,3 +176,66 @@ class BroadlinkRM2Switch(SwitchDevice): pass return self._sendpacket(packet, max(0, retry-1)) return True + + +class BroadlinkSP1Switch(BroadlinkRMSwitch): + """Representation of an Broadlink switch.""" + + def __init__(self, friendly_name, command_on, command_off, device): + """Initialize the switch.""" + super().__init__(friendly_name, command_on, command_off, device) + self._command_on = 1 + self._command_off = 0 + + def _sendpacket(self, packet, retry=2): + """Send packet to device.""" + try: + self._device.set_power(packet) + except socket.timeout as error: + if retry < 1: + _LOGGER.error(error) + return False + try: + self._device.auth() + except socket.timeout: + pass + return self._sendpacket(packet, max(0, retry-1)) + return True + + +class BroadlinkSP2Switch(BroadlinkSP1Switch): + """Representation of an Broadlink switch.""" + + def __init__(self, friendly_name, command_on, command_off, device): + """Initialize the switch.""" + super().__init__(friendly_name, command_on, command_off, device) + + @property + def assumed_state(self): + """Return true if unable to access real state of entity.""" + return False + + @property + def should_poll(self): + """Polling needed.""" + return True + + def update(self): + """Synchronize state with switch.""" + self._update() + + def _update(self, retry=2): + try: + state = self._device.check_power() + except socket.timeout as error: + if retry < 1: + _LOGGER.error(error) + return + try: + self._device.auth() + except socket.timeout: + pass + return self._update(max(0, retry-1)) + if state is None and retry > 0: + return self._update(max(0, retry-1)) + self._state = state From 2cb67eca4608e7d9f5047ce80eba9028e222c432 Mon Sep 17 00:00:00 2001 From: Daniel Hoyer Iversen Date: Mon, 19 Dec 2016 09:21:40 +0100 Subject: [PATCH 013/189] rfxtrx lib upgrade --- homeassistant/components/rfxtrx.py | 21 +++++++++++++++------ requirements_all.txt | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/rfxtrx.py b/homeassistant/components/rfxtrx.py index f8a4f29738f..56026168383 100644 --- a/homeassistant/components/rfxtrx.py +++ b/homeassistant/components/rfxtrx.py @@ -14,7 +14,7 @@ from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.helpers.entity import Entity from homeassistant.const import (ATTR_ENTITY_ID, TEMP_CELSIUS) -REQUIREMENTS = ['pyRFXtrx==0.13.0'] +REQUIREMENTS = ['pyRFXtrx==0.14.0'] DOMAIN = "rfxtrx" @@ -132,11 +132,12 @@ def setup(hass, config): # Log RFXCOM event if not event.device.id_string: return - _LOGGER.info("Receive RFXCOM event from " - "(Device_id: %s Class: %s Sub: %s)", - slugify(event.device.id_string.lower()), - event.device.__class__.__name__, - event.device.subtype) + _LOGGER.debug("Receive RFXCOM event from " + "(Device_id: %s Class: %s Sub: %s, Pkt_id: %s)", + slugify(event.device.id_string.lower()), + event.device.__class__.__name__, + event.device.subtype, + "".join("{0:02x}".format(x) for x in event.data)) # Callback to HA registered components. for subscriber in RECEIVED_EVT_SUBSCRIBERS: @@ -274,6 +275,14 @@ def apply_received_command(event): ATTR_STATE: event.values['Command'].lower() } ) + _LOGGER.info( + "Rfxtrx fired event: (event_type: %s, %s: %s, %s: %s)", + EVENT_BUTTON_PRESSED, + ATTR_ENTITY_ID, + RFX_DEVICES[device_id].entity_id, + ATTR_STATE, + event.values['Command'].lower() + ) class RfxtrxDevice(Entity): diff --git a/requirements_all.txt b/requirements_all.txt index 291ef4813a0..a4542aa5dcb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -369,7 +369,7 @@ pwaqi==1.3 py-cpuinfo==0.2.3 # homeassistant.components.rfxtrx -pyRFXtrx==0.13.0 +pyRFXtrx==0.14.0 # homeassistant.components.notify.xmpp pyasn1-modules==0.0.8 From ee6fb9301801c420376b010246e5b683239c78f6 Mon Sep 17 00:00:00 2001 From: Hugo Dupras Date: Mon, 19 Dec 2016 16:47:38 +0100 Subject: [PATCH 014/189] Hotfix for Netatmo Camera (#4998) Signed-off-by: Hugo D. (jabesq) --- homeassistant/components/netatmo.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/netatmo.py b/homeassistant/components/netatmo.py index 3bb98a00b87..b4ebbc1d460 100644 --- a/homeassistant/components/netatmo.py +++ b/homeassistant/components/netatmo.py @@ -18,7 +18,7 @@ from homeassistant.util import Throttle REQUIREMENTS = [ 'https://github.com/jabesq/netatmo-api-python/archive/' - 'v0.8.0.zip#lnetatmo==0.8.0'] + 'v0.8.1.zip#lnetatmo==0.8.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index a4542aa5dcb..5e10b96614e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -213,7 +213,7 @@ https://github.com/danieljkemp/onkyo-eiscp/archive/python3.zip#onkyo-eiscp==0.9. # https://github.com/deisi/fritzconnection/archive/b5c14515e1c8e2652b06b6316a7f3913df942841.zip#fritzconnection==0.4.6 # homeassistant.components.netatmo -https://github.com/jabesq/netatmo-api-python/archive/v0.8.0.zip#lnetatmo==0.8.0 +https://github.com/jabesq/netatmo-api-python/archive/v0.8.1.zip#lnetatmo==0.8.1 # homeassistant.components.neato https://github.com/jabesq/pybotvac/archive/v0.0.1.zip#pybotvac==0.0.1 From 877efac6300617a3d9e6fe93a4904d249485c27f Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Tue, 20 Dec 2016 11:39:29 +0100 Subject: [PATCH 015/189] Add missing support for HMIP-PSM (#5013) --- homeassistant/components/homematic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 00adf3701c0..004a0c6dbfb 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -61,7 +61,7 @@ HM_DEVICE_TYPES = { 'ThermostatWall', 'AreaThermostat', 'RotaryHandleSensor', 'WaterSensor', 'PowermeterGas', 'LuxSensor', 'WeatherSensor', 'WeatherStation', 'ThermostatWall2', 'TemperatureDiffSensor', - 'TemperatureSensor', 'CO2Sensor'], + 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter'], DISCOVER_CLIMATE: [ 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2'], DISCOVER_BINARY_SENSORS: [ From 1aea3e0d51cbe3b8b69a26df107d27c19e9366cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Vran=C3=ADk?= Date: Tue, 20 Dec 2016 12:06:53 +0100 Subject: [PATCH 016/189] script/lint only on python files (#5018) --- script/lint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/lint b/script/lint index 2c3739c5c13..d607aa87bb6 100755 --- a/script/lint +++ b/script/lint @@ -4,7 +4,7 @@ # performs roughly what this test did in the past. if [ "$1" = "--changed" ]; then - export files="`git diff upstream/dev --name-only | grep -v requirements_all.txt`" + export files="`git diff upstream/dev --name-only | grep -e '\.py$'`" echo "=================================================" echo "FILES CHANGED (git diff upstream/dev --name-only)" echo "=================================================" From f224ee72293a0de34b1c24efa799a0152c5bb015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 20 Dec 2016 21:05:54 +0100 Subject: [PATCH 017/189] Solve some bugs in the bradlink switch --- homeassistant/components/switch/broadlink.py | 43 +++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index 786ac5f06f5..d2885bf43d2 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -57,22 +57,6 @@ def setup_platform(hass, config, add_devices, discovery_info=None): config.get(CONF_MAC).encode().replace(b':', b'')) sensor_type = config.get(CONF_TYPE) - if sensor_type == "rm": - broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) - switch = BroadlinkRMSwitch - elif sensor_type == "sp1": - broadlink_device = broadlink.sp1((ip_addr, 80), mac_addr) - switch = BroadlinkSP1Switch - elif sensor_type == "sp2": - broadlink_device = broadlink.sp2((ip_addr, 80), mac_addr) - switch = BroadlinkSP2Switch - - broadlink_device.timeout = config.get(CONF_TIMEOUT) - try: - broadlink_device.auth() - except socket.timeout: - _LOGGER.error("Failed to connect to device.") - persistent_notification = loader.get_component('persistent_notification') @asyncio.coroutine @@ -103,7 +87,24 @@ def setup_platform(hass, config, add_devices, discovery_info=None): persistent_notification.async_create(hass, "Did not received any signal", title='Broadlink switch') - hass.services.register(DOMAIN, SERVICE_LEARN, _learn_command) + + if sensor_type == "rm": + broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) + switch = BroadlinkRMSwitch + hass.services.register(DOMAIN, SERVICE_LEARN + '_' + ip_addr, + _learn_command) + elif sensor_type == "sp1": + broadlink_device = broadlink.sp1((ip_addr, 80), mac_addr) + switch = BroadlinkSP1Switch + elif sensor_type == "sp2": + broadlink_device = broadlink.sp2((ip_addr, 80), mac_addr) + switch = BroadlinkSP2Switch + + broadlink_device.timeout = config.get(CONF_TIMEOUT) + try: + broadlink_device.auth() + except socket.timeout: + _LOGGER.error("Failed to connect to device.") for object_id, device_config in devices.items(): switches.append( @@ -153,11 +154,13 @@ class BroadlinkRMSwitch(SwitchDevice): """Turn the device on.""" if self._sendpacket(self._command_on): self._state = True + self.update_ha_state() def turn_off(self, **kwargs): """Turn the device off.""" if self._sendpacket(self._command_off): self._state = False + self.update_ha_state() def _sendpacket(self, packet, retry=2): """Send packet to device.""" @@ -166,7 +169,7 @@ class BroadlinkRMSwitch(SwitchDevice): return True try: self._device.send_data(packet) - except socket.timeout as error: + except (socket.timeout, ValueError) as error: if retry < 1: _LOGGER.error(error) return False @@ -191,7 +194,7 @@ class BroadlinkSP1Switch(BroadlinkRMSwitch): """Send packet to device.""" try: self._device.set_power(packet) - except socket.timeout as error: + except (socket.timeout, ValueError) as error: if retry < 1: _LOGGER.error(error) return False @@ -227,7 +230,7 @@ class BroadlinkSP2Switch(BroadlinkSP1Switch): def _update(self, retry=2): try: state = self._device.check_power() - except socket.timeout as error: + except (socket.timeout, ValueError) as error: if retry < 1: _LOGGER.error(error) return From 133c03ee574593579ccd02861e3e989d881a32ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 20 Dec 2016 21:16:18 +0100 Subject: [PATCH 018/189] style fix --- homeassistant/components/switch/broadlink.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index d2885bf43d2..c2ae18ac5b3 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -169,7 +169,7 @@ class BroadlinkRMSwitch(SwitchDevice): return True try: self._device.send_data(packet) - except (socket.timeout, ValueError) as error: + except (socket.timeout, ValueError) as error: if retry < 1: _LOGGER.error(error) return False From a8b390091363c5af54880ecbf10e5f07824c2033 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 21 Dec 2016 09:40:44 +0200 Subject: [PATCH 019/189] device_tracker (#5023) 2 --- tests/components/device_tracker/test_init.py | 67 +++++++++++-------- .../device_tracker/test_locative.py | 15 +++-- 2 files changed, 48 insertions(+), 34 deletions(-) diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index c3087b108e9..d1c19b30307 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -100,8 +100,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): 'AB:CD:EF:GH:IJ', 'Test name', picture='http://test.picture', hide_if_away=True) device_tracker.update_config(self.yaml_devices, dev_id, device) - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) config = device_tracker.load_config(self.yaml_devices, self.hass, device.consider_home)[0] self.assertEqual(device.dev_id, config.dev_id) @@ -146,8 +147,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): def test_setup_without_yaml_file(self): """Test with no YAML file.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) # pylint: disable=invalid-name def test_adding_unknown_device_to_config(self): @@ -156,15 +158,15 @@ class TestComponentsDeviceTracker(unittest.TestCase): scanner.reset() scanner.come_home('DEV1') - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, { - device_tracker.DOMAIN: {CONF_PLATFORM: 'test'}})) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, { + device_tracker.DOMAIN: {CONF_PLATFORM: 'test'}}) # wait for async calls (macvendor) to finish self.hass.block_till_done() config = device_tracker.load_config(self.yaml_devices, self.hass, timedelta(seconds=0)) - assert len(config) == 1 assert config[0].dev_id == 'dev1' assert config[0].track @@ -280,8 +282,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): with patch.dict(device_tracker.DISCOVERY_PLATFORMS, {'test': 'test'}): with patch.object(scanner, 'scan_devices') as mock_scan: - self.assertTrue(setup_component( - self.hass, device_tracker.DOMAIN, TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component( + self.hass, device_tracker.DOMAIN, TEST_PLATFORM) fire_service_discovered(self.hass, 'test', {}) self.assertTrue(mock_scan.called) @@ -296,11 +299,12 @@ class TestComponentsDeviceTracker(unittest.TestCase): with patch('homeassistant.components.device_tracker.dt_util.utcnow', return_value=register_time): - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, { - device_tracker.DOMAIN: { - CONF_PLATFORM: 'test', - device_tracker.CONF_CONSIDER_HOME: 59, - }})) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, { + device_tracker.DOMAIN: { + CONF_PLATFORM: 'test', + device_tracker.CONF_CONSIDER_HOME: 59, + }}) self.assertEqual(STATE_HOME, self.hass.states.get('device_tracker.dev1').state) @@ -327,8 +331,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): friendly_name, picture, hide_if_away=True) device_tracker.update_config(self.yaml_devices, dev_id, device) - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) attrs = self.hass.states.get(entity_id).attributes @@ -347,8 +352,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): scanner = get_component('device_tracker.test').SCANNER scanner.reset() - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) self.assertTrue(self.hass.states.get(entity_id) .attributes.get(ATTR_HIDDEN)) @@ -365,8 +371,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): scanner = get_component('device_tracker.test').SCANNER scanner.reset() - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) state = self.hass.states.get(device_tracker.ENTITY_ID_ALL_DEVICES) self.assertIsNotNone(state) @@ -377,8 +384,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): @patch('homeassistant.components.device_tracker.DeviceTracker.async_see') def test_see_service(self, mock_see): """Test the see service with a unicode dev_id and NO MAC.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) params = { 'dev_id': 'some_device', 'host_name': 'example.com', @@ -405,8 +413,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): def test_new_device_event_fired(self): """Test that the device tracker will fire an event.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) test_events = [] @callback @@ -434,8 +443,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): # pylint: disable=invalid-name def test_not_write_duplicate_yaml_keys(self): """Test that the device tracker will not generate invalid YAML.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) device_tracker.see(self.hass, 'mac_1', host_name='hello') device_tracker.see(self.hass, 'mac_2', host_name='hello') @@ -449,8 +459,9 @@ class TestComponentsDeviceTracker(unittest.TestCase): # pylint: disable=invalid-name def test_not_allow_invalid_dev_id(self): """Test that the device tracker will not allow invalid dev ids.""" - self.assertTrue(setup_component(self.hass, device_tracker.DOMAIN, - TEST_PLATFORM)) + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, + TEST_PLATFORM) device_tracker.see(self.hass, dev_id='hello-world') diff --git a/tests/components/device_tracker/test_locative.py b/tests/components/device_tracker/test_locative.py index b1977556c63..20257d5d1f5 100644 --- a/tests/components/device_tracker/test_locative.py +++ b/tests/components/device_tracker/test_locative.py @@ -9,7 +9,8 @@ import homeassistant.components.device_tracker as device_tracker import homeassistant.components.http as http from homeassistant.const import CONF_PLATFORM -from tests.common import get_test_home_assistant, get_test_instance_port +from tests.common import ( + assert_setup_component, get_test_home_assistant, get_test_instance_port) SERVER_PORT = get_test_instance_port() HTTP_BASE_URL = "http://127.0.0.1:{}".format(SERVER_PORT) @@ -31,6 +32,7 @@ def setUpModule(): global hass hass = get_test_home_assistant() + # http is not platform based, assert_setup_component not applicable bootstrap.setup_component(hass, http.DOMAIN, { http.DOMAIN: { http.CONF_SERVER_PORT: SERVER_PORT @@ -38,11 +40,12 @@ def setUpModule(): }) # Set up device tracker - bootstrap.setup_component(hass, device_tracker.DOMAIN, { - device_tracker.DOMAIN: { - CONF_PLATFORM: 'locative' - } - }) + with assert_setup_component(1, device_tracker.DOMAIN): + bootstrap.setup_component(hass, device_tracker.DOMAIN, { + device_tracker.DOMAIN: { + CONF_PLATFORM: 'locative' + } + }) hass.start() From b170f4c3996b162d4dd4fc5e92d60fee44b3a7a6 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 21 Dec 2016 09:42:23 +0200 Subject: [PATCH 020/189] Spread seconds (#5025) --- homeassistant/components/sensor/yr.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/yr.py b/homeassistant/components/sensor/yr.py index d2b3a35816d..ef12ba392e1 100644 --- a/homeassistant/components/sensor/yr.py +++ b/homeassistant/components/sensor/yr.py @@ -7,6 +7,7 @@ https://home-assistant.io/components/sensor.yr/ import asyncio from datetime import timedelta import logging +from random import randrange from xml.parsers.expat import ExpatError import async_timeout @@ -80,8 +81,9 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): yield from async_add_devices(dev) weather = YrData(hass, coordinates, dev) - # Update weather on the hour - async_track_utc_time_change(hass, weather.async_update, minute=0, second=0) + # Update weather on the hour, spread seconds + async_track_utc_time_change(hass, weather.async_update, minute=0, + second=randrange(5, 25)) yield from weather.async_update() From 25469dd8ee6cc7dddd3e46f390fe7d0ab2d91e56 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 21 Dec 2016 10:22:12 +0100 Subject: [PATCH 021/189] Bugfix voicerss post api (#5021) * Bugfix voicerss post api * fix unittest * Add cache to service description --- homeassistant/components/tts/services.yaml | 8 +++- homeassistant/components/tts/voicerss.py | 27 +++++++++++-- tests/components/tts/test_voicerss.py | 45 +++++++++++++++++++--- 3 files changed, 68 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/tts/services.yaml b/homeassistant/components/tts/services.yaml index aba1334da87..5cb146950b4 100644 --- a/homeassistant/components/tts/services.yaml +++ b/homeassistant/components/tts/services.yaml @@ -3,12 +3,16 @@ say: fields: entity_id: - description: Name(s) of media player entities + description: Name(s) of media player entities. example: 'media_player.floor' message: - description: Text to speak on devices + description: Text to speak on devices. example: 'My name is hanna' + cache: + description: Control file cache of this message. + example: 'true' + clear_cache: description: Remove cache files and RAM cache. diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index 728a1996a5d..fdbe8a8d806 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -21,6 +21,18 @@ _LOGGER = logging.getLogger(__name__) VOICERSS_API_URL = "https://api.voicerss.org/" +ERROR_MSG = [ + b'Error description', + b'The subscription is expired or requests count limitation is exceeded!', + b'The request content length is too large!', + b'The language does not support!', + b'The language is not specified!', + b'The text is not specified!', + b'The API key is not available!', + b'The API key is not specified!', + b'The subscription does not support SSML!', +] + SUPPORT_LANGUAGES = [ 'ca-es', 'zh-cn', 'zh-hk', 'zh-tw', 'da-dk', 'nl-nl', 'en-au', 'en-ca', 'en-gb', 'en-in', 'en-us', 'fi-fi', 'fr-ca', 'fr-fr', 'de-de', 'it-it', @@ -83,7 +95,7 @@ class VoiceRSSProvider(Provider): self.hass = hass self.extension = conf.get(CONF_CODEC) - self.params = { + self.form_data = { 'key': conf.get(CONF_API_KEY), 'hl': conf.get(CONF_LANG), 'c': (conf.get(CONF_CODEC)).upper(), @@ -94,21 +106,28 @@ class VoiceRSSProvider(Provider): def async_get_tts_audio(self, message): """Load TTS from voicerss.""" websession = async_get_clientsession(self.hass) + form_data = self.form_data.copy() + + form_data['src'] = message request = None try: with async_timeout.timeout(10, loop=self.hass.loop): request = yield from websession.post( - VOICERSS_API_URL, params=self.params, - data=bytes(message, 'utf-8') + VOICERSS_API_URL, data=form_data ) if request.status != 200: - _LOGGER.error("Error %d on load url %s", + _LOGGER.error("Error %d on load url %s.", request.status, request.url) return (None, None) data = yield from request.read() + if data in ERROR_MSG: + _LOGGER.error( + "Error receive %s from voicerss.", str(data, 'utf-8')) + return (None, None) + except (asyncio.TimeoutError, aiohttp.errors.ClientError): _LOGGER.error("Timeout for voicerss api.") return (None, None) diff --git a/tests/components/tts/test_voicerss.py b/tests/components/tts/test_voicerss.py index 44ce0d6739f..ea1263b189e 100644 --- a/tests/components/tts/test_voicerss.py +++ b/tests/components/tts/test_voicerss.py @@ -20,11 +20,12 @@ class TestTTSVoiceRSSPlatform(object): self.hass = get_test_home_assistant() self.url = "https://api.voicerss.org/" - self.url_param = { + self.form_data = { 'key': '1234567xx', 'hl': 'en-us', 'c': 'MP3', 'f': '8khz_8bit_mono', + 'src': "I person is on front of your door.", } def teardown_method(self): @@ -63,7 +64,7 @@ class TestTTSVoiceRSSPlatform(object): calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) aioclient_mock.post( - self.url, params=self.url_param, status=200, content=b'test') + self.url, data=self.form_data, status=200, content=b'test') config = { tts.DOMAIN: { @@ -82,15 +83,16 @@ class TestTTSVoiceRSSPlatform(object): assert len(calls) == 1 assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find(".mp3") != -1 def test_service_say_german(self, aioclient_mock): """Test service call say with german code.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - self.url_param['hl'] = 'de-de' + self.form_data['hl'] = 'de-de' aioclient_mock.post( - self.url, params=self.url_param, status=200, content=b'test') + self.url, data=self.form_data, status=200, content=b'test') config = { tts.DOMAIN: { @@ -110,13 +112,14 @@ class TestTTSVoiceRSSPlatform(object): assert len(calls) == 1 assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data def test_service_say_error(self, aioclient_mock): """Test service call say with http response 400.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) aioclient_mock.post( - self.url, params=self.url_param, status=400, content=b'test') + self.url, data=self.form_data, status=400, content=b'test') config = { tts.DOMAIN: { @@ -135,13 +138,14 @@ class TestTTSVoiceRSSPlatform(object): assert len(calls) == 0 assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data def test_service_say_timeout(self, aioclient_mock): """Test service call say with http timeout.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) aioclient_mock.post( - self.url, params=self.url_param, exc=asyncio.TimeoutError()) + self.url, data=self.form_data, exc=asyncio.TimeoutError()) config = { tts.DOMAIN: { @@ -160,3 +164,32 @@ class TestTTSVoiceRSSPlatform(object): assert len(calls) == 0 assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data + + def test_service_say_error_msg(self, aioclient_mock): + """Test service call say with http error api message.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + aioclient_mock.post( + self.url, data=self.form_data, status=200, + content=b'The subscription does not support SSML!' + ) + + config = { + tts.DOMAIN: { + 'platform': 'voicerss', + 'api_key': '1234567xx', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'voicerss_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + }) + self.hass.block_till_done() + + assert len(calls) == 0 + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data From 4c9347eb2ad904ae8b7f4dd8d4c0fc1ad6763eac Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 21 Dec 2016 11:39:59 +0100 Subject: [PATCH 022/189] Fix spell media_player service (#5030) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/media_player/services.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/media_player/services.yaml b/homeassistant/components/media_player/services.yaml index 9482661b464..ca3aaba7a9e 100644 --- a/homeassistant/components/media_player/services.yaml +++ b/homeassistant/components/media_player/services.yaml @@ -59,8 +59,8 @@ volume_set: description: Name(s) of entities to set volume level on example: 'media_player.living_room_sonos' volume_level: - description: Volume level to set - example: 60 + description: Volume level to set as float + example: 0.6 media_play_pause: description: Toggle media player play/pause state @@ -236,4 +236,4 @@ soundtouch_remove_zone_slave: fields: entity_id: description: Name of entites that will be remove from the multi-room zone. Platform dependent. - example: 'media_player.soundtouch_home' \ No newline at end of file + example: 'media_player.soundtouch_home' From 9a1605486707ce9cb942085e962726cfdd21dbc7 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 21 Dec 2016 15:11:14 +0100 Subject: [PATCH 023/189] Bugfix create a task from a task in component update (#5033) --- homeassistant/components/alarm_control_panel/__init__.py | 2 +- homeassistant/components/light/__init__.py | 2 +- homeassistant/components/remote/__init__.py | 2 +- homeassistant/components/switch/__init__.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/__init__.py b/homeassistant/components/alarm_control_panel/__init__.py index 1b64431c7a1..54be6aa4d0b 100644 --- a/homeassistant/components/alarm_control_panel/__init__.py +++ b/homeassistant/components/alarm_control_panel/__init__.py @@ -115,7 +115,7 @@ def async_setup(hass, config): update_coro = hass.loop.create_task( alarm.async_update_ha_state(True)) if hasattr(alarm, 'async_update'): - update_tasks.append(hass.loop.create_task(update_coro)) + update_tasks.append(update_coro) else: yield from update_coro diff --git a/homeassistant/components/light/__init__.py b/homeassistant/components/light/__init__.py index 869bbd90e7d..d98d8b0d5fc 100644 --- a/homeassistant/components/light/__init__.py +++ b/homeassistant/components/light/__init__.py @@ -253,7 +253,7 @@ def async_setup(hass, config): update_coro = hass.loop.create_task( light.async_update_ha_state(True)) if hasattr(light, 'async_update'): - update_tasks.append(hass.loop.create_task(update_coro)) + update_tasks.append(update_coro) else: yield from update_coro diff --git a/homeassistant/components/remote/__init__.py b/homeassistant/components/remote/__init__.py index 3a481e83830..2baef2011fc 100755 --- a/homeassistant/components/remote/__init__.py +++ b/homeassistant/components/remote/__init__.py @@ -115,7 +115,7 @@ def async_setup(hass, config): update_coro = hass.loop.create_task( remote.async_update_ha_state(True)) if hasattr(remote, 'async_update'): - update_tasks.append(hass.loop.create_task(update_coro)) + update_tasks.append(update_coro) else: yield from update_coro diff --git a/homeassistant/components/switch/__init__.py b/homeassistant/components/switch/__init__.py index 846a87f5067..fe74711dff0 100644 --- a/homeassistant/components/switch/__init__.py +++ b/homeassistant/components/switch/__init__.py @@ -98,7 +98,7 @@ def async_setup(hass, config): update_coro = hass.loop.create_task( switch.async_update_ha_state(True)) if hasattr(switch, 'async_update'): - update_tasks.append(hass.loop.create_task(update_coro)) + update_tasks.append(update_coro) else: yield from update_coro From 334b3b8636540070222755a35ac35bc2baa797d5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 22 Dec 2016 16:08:01 +0100 Subject: [PATCH 024/189] Bugfix async log handle re-close bug (#5034) * Bugfix async log handle re-close bug * Check on running thread on async_close * Fix now on right place --- homeassistant/util/logging.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/homeassistant/util/logging.py b/homeassistant/util/logging.py index 0a1218f5796..736fee0d1b3 100644 --- a/homeassistant/util/logging.py +++ b/homeassistant/util/logging.py @@ -55,7 +55,9 @@ class AsyncHandler(object): When blocking=True, will wait till closed. """ - self.close() + if not self._thread.is_alive(): + return + yield from self._queue.put(None) if blocking: # Python 3.4.4+ From 5e1e5992af38a5ad47aa44f989db568ead2cd600 Mon Sep 17 00:00:00 2001 From: John Mihalic Date: Thu, 22 Dec 2016 12:45:05 -0500 Subject: [PATCH 025/189] Update pyHik requirement version (#5040) --- homeassistant/components/binary_sensor/hikvision.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/binary_sensor/hikvision.py b/homeassistant/components/binary_sensor/hikvision.py index 90d61cbf3b7..1cc98372cee 100644 --- a/homeassistant/components/binary_sensor/hikvision.py +++ b/homeassistant/components/binary_sensor/hikvision.py @@ -17,7 +17,7 @@ from homeassistant.const import ( CONF_HOST, CONF_PORT, CONF_NAME, CONF_USERNAME, CONF_PASSWORD, CONF_SSL, EVENT_HOMEASSISTANT_STOP, ATTR_LAST_TRIP_TIME, CONF_CUSTOMIZE) -REQUIREMENTS = ['pyhik==0.0.6', 'pydispatcher==2.0.5'] +REQUIREMENTS = ['pyhik==0.0.7', 'pydispatcher==2.0.5'] _LOGGER = logging.getLogger(__name__) CONF_IGNORED = 'ignored' diff --git a/requirements_all.txt b/requirements_all.txt index 5e10b96614e..394db97f2fe 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -411,7 +411,7 @@ pyfttt==0.3 pyharmony==1.0.12 # homeassistant.components.binary_sensor.hikvision -pyhik==0.0.6 +pyhik==0.0.7 # homeassistant.components.homematic pyhomematic==0.1.18 From 6c50f53696704faaaa10e5a53ebc8efec231d4d6 Mon Sep 17 00:00:00 2001 From: Josh Nichols Date: Thu, 22 Dec 2016 14:22:07 -0500 Subject: [PATCH 026/189] Nest fixes (#5011) * Updated Nest API to have logical names * Fix NoneType not having replace method in NestSensor constructor * Move name setting to constructor, in case zone.name causes IO. * normalize is_online to online * Updated python-nest API * push is_* helpers down to python-nest, and use inheritence to implement rather than checking class name * Update python-nest --- .../components/binary_sensor/nest.py | 18 ++++----- homeassistant/components/camera/nest.py | 6 +-- homeassistant/components/climate/nest.py | 2 +- homeassistant/components/nest.py | 37 ++++++------------- homeassistant/components/sensor/nest.py | 21 +++-------- requirements_all.txt | 2 +- 6 files changed, 31 insertions(+), 55 deletions(-) diff --git a/homeassistant/components/binary_sensor/nest.py b/homeassistant/components/binary_sensor/nest.py index 070703df32a..c66373bc58a 100644 --- a/homeassistant/components/binary_sensor/nest.py +++ b/homeassistant/components/binary_sensor/nest.py @@ -13,8 +13,7 @@ from homeassistant.components.binary_sensor import ( BinarySensorDevice, PLATFORM_SCHEMA) from homeassistant.components.sensor.nest import NestSensor from homeassistant.const import (CONF_SCAN_INTERVAL, CONF_MONITORED_CONDITIONS) -from homeassistant.components.nest import ( - DATA_NEST, is_thermostat, is_camera) +from homeassistant.components.nest import DATA_NEST import homeassistant.helpers.config_validation as cv DEPENDENCIES = ['nest'] @@ -76,9 +75,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): _LOGGER.error(wstr) sensors = [] - device_chain = chain(nest.devices(), - nest.protect_devices(), - nest.camera_devices()) + device_chain = chain(nest.thermostats(), + nest.smoke_co_alarms(), + nest.cameras()) for structure, device in device_chain: sensors += [NestBinarySensor(structure, device, variable) for variable in conf @@ -86,9 +85,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): sensors += [NestBinarySensor(structure, device, variable) for variable in conf if variable in CLIMATE_BINARY_TYPES - and is_thermostat(device)] + and device.is_thermostat] - if is_camera(device): + if device.is_camera: sensors += [NestBinarySensor(structure, device, variable) for variable in conf if variable in CAMERA_BINARY_TYPES] @@ -118,13 +117,14 @@ class NestActivityZoneSensor(NestBinarySensor): def __init__(self, structure, device, zone): """Initialize the sensor.""" - super(NestActivityZoneSensor, self).__init__(structure, device, None) + super(NestActivityZoneSensor, self).__init__(structure, device, "") self.zone = zone + self._name = "{} {} activity".format(self._name, self.zone.name) @property def name(self): """Return the name of the nest, if any.""" - return "{} {} activity".format(self._name, self.zone.name) + return self._name def update(self): """Retrieve latest state.""" diff --git a/homeassistant/components/camera/nest.py b/homeassistant/components/camera/nest.py index aa2041e07a6..6ffb7ef8561 100644 --- a/homeassistant/components/camera/nest.py +++ b/homeassistant/components/camera/nest.py @@ -27,7 +27,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if discovery_info is None: return - camera_devices = hass.data[nest.DATA_NEST].camera_devices() + camera_devices = hass.data[nest.DATA_NEST].cameras() cameras = [NestCamera(structure, device) for structure, device in camera_devices] add_devices(cameras, True) @@ -43,7 +43,7 @@ class NestCamera(Camera): self.device = device self._location = None self._name = None - self._is_online = None + self._online = None self._is_streaming = None self._is_video_history_enabled = False # Default to non-NestAware subscribed, but will be fixed during update @@ -76,7 +76,7 @@ class NestCamera(Camera): """Cache value from Python-nest.""" self._location = self.device.where self._name = self.device.name - self._is_online = self.device.is_online + self._online = self.device.online self._is_streaming = self.device.is_streaming self._is_video_history_enabled = self.device.is_video_history_enabled diff --git a/homeassistant/components/climate/nest.py b/homeassistant/components/climate/nest.py index e098c3c3709..32cae5c4cec 100644 --- a/homeassistant/components/climate/nest.py +++ b/homeassistant/components/climate/nest.py @@ -40,7 +40,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): add_devices( [NestThermostat(structure, device, temp_unit) - for structure, device in hass.data[DATA_NEST].devices()], + for structure, device in hass.data[DATA_NEST].thermostats()], True ) diff --git a/homeassistant/components/nest.py b/homeassistant/components/nest.py index cd871c8e039..30a256f1c37 100644 --- a/homeassistant/components/nest.py +++ b/homeassistant/components/nest.py @@ -19,8 +19,8 @@ _LOGGER = logging.getLogger(__name__) REQUIREMENTS = [ 'http://github.com/technicalpickles/python-nest' - '/archive/b8391d2b3cb8682f8b0c2bdff477179983609f39.zip' # nest-cam branch - '#python-nest==3.0.2'] + '/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip' # nest-cam branch + '#python-nest==3.0.3'] DOMAIN = 'nest' @@ -132,12 +132,12 @@ class NestDevice(object): self._structure = conf[CONF_STRUCTURE] _LOGGER.debug("Structures to include: %s", self._structure) - def devices(self): - """Generator returning list of devices and their location.""" + def thermostats(self): + """Generator returning list of thermostats and their location.""" try: for structure in self.nest.structures: if structure.name in self._structure: - for device in structure.devices: + for device in structure.thermostats: yield (structure, device) else: _LOGGER.debug("Ignoring structure %s, not in %s", @@ -146,12 +146,12 @@ class NestDevice(object): _LOGGER.error( "Connection error logging into the nest web service.") - def protect_devices(self): - """Generator returning list of protect devices.""" + def smoke_co_alarms(self): + """Generator returning list of smoke co alarams.""" try: for structure in self.nest.structures: if structure.name in self._structure: - for device in structure.protectdevices: + for device in structure.smoke_co_alarms: yield(structure, device) else: _LOGGER.info("Ignoring structure %s, not in %s", @@ -160,12 +160,12 @@ class NestDevice(object): _LOGGER.error( "Connection error logging into the nest web service.") - def camera_devices(self): - """Generator returning list of camera devices.""" + def cameras(self): + """Generator returning list of cameras.""" try: for structure in self.nest.structures: if structure.name in self._structure: - for device in structure.cameradevices: + for device in structure.cameras: yield(structure, device) else: _LOGGER.info("Ignoring structure %s, not in %s", @@ -173,18 +173,3 @@ class NestDevice(object): except socket.error: _LOGGER.error( "Connection error logging into the nest web service.") - - -def is_thermostat(device): - """Target devices that are Nest Thermostats.""" - return bool(device.__class__.__name__ == 'Device') - - -def is_protect(device): - """Target devices that are Nest Protect Smoke Alarms.""" - return bool(device.__class__.__name__ == 'ProtectDevice') - - -def is_camera(device): - """Target devices that are Nest Protect Smoke Alarms.""" - return bool(device.__class__.__name__ == 'CameraDevice') diff --git a/homeassistant/components/sensor/nest.py b/homeassistant/components/sensor/nest.py index f7bbf41cff9..a074dcc310d 100644 --- a/homeassistant/components/sensor/nest.py +++ b/homeassistant/components/sensor/nest.py @@ -9,7 +9,8 @@ import logging import voluptuous as vol -from homeassistant.components.nest import DATA_NEST, DOMAIN +from homeassistant.components.nest import ( + DATA_NEST, DOMAIN) from homeassistant.helpers.entity import Entity from homeassistant.const import ( TEMP_CELSIUS, TEMP_FAHRENHEIT, CONF_PLATFORM, @@ -93,31 +94,21 @@ def setup_platform(hass, config, add_devices, discovery_info=None): _LOGGER.error(wstr) all_sensors = [] - for structure, device in chain(nest.devices(), nest.protect_devices()): + for structure, device in chain(nest.thermostats(), nest.smoke_co_alarms()): sensors = [NestBasicSensor(structure, device, variable) for variable in conf - if variable in SENSOR_TYPES and is_thermostat(device)] + if variable in SENSOR_TYPES and device.is_thermostat] sensors += [NestTempSensor(structure, device, variable) for variable in conf - if variable in SENSOR_TEMP_TYPES and is_thermostat(device)] + if variable in SENSOR_TEMP_TYPES and device.is_thermostat] sensors += [NestProtectSensor(structure, device, variable) for variable in conf - if variable in PROTECT_VARS and is_protect(device)] + if variable in PROTECT_VARS and device.is_smoke_co_alarm] all_sensors.extend(sensors) add_devices(all_sensors, True) -def is_thermostat(device): - """Target devices that are Nest Thermostats.""" - return bool(device.__class__.__name__ == 'Device') - - -def is_protect(device): - """Target devices that are Nest Protect Smoke Alarms.""" - return bool(device.__class__.__name__ == 'ProtectDevice') - - class NestSensor(Entity): """Representation of a Nest sensor.""" diff --git a/requirements_all.txt b/requirements_all.txt index 394db97f2fe..c8cd8f81802 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -175,7 +175,7 @@ hikvision==0.4 # http://github.com/adafruit/Adafruit_Python_DHT/archive/310c59b0293354d07d94375f1365f7b9b9110c7d.zip#Adafruit_DHT==1.3.0 # homeassistant.components.nest -http://github.com/technicalpickles/python-nest/archive/b8391d2b3cb8682f8b0c2bdff477179983609f39.zip#python-nest==3.0.2 +http://github.com/technicalpickles/python-nest/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip#python-nest==3.0.3 # homeassistant.components.light.flux_led https://github.com/Danielhiversen/flux_led/archive/0.10.zip#flux_led==0.10 From 1c1b04718f276cee013c3b0c17e34b76189796d6 Mon Sep 17 00:00:00 2001 From: abmantis Date: Mon, 26 Dec 2016 12:58:32 +0000 Subject: [PATCH 027/189] emulated_hue: fix alexa "device not responding" (#5058) * emulated_hue: fix alexa "device not responding" we need to set the brightness to 100 for devices that only turn on * emulated_hue: dont override brightness for scenes/scripts * emulated_hue: python and semi-colons * emulated_hue: fix output brightness level --- homeassistant/components/emulated_hue/hue_api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/emulated_hue/hue_api.py b/homeassistant/components/emulated_hue/hue_api.py index 57a4f18825a..cc63873a1fd 100644 --- a/homeassistant/components/emulated_hue/hue_api.py +++ b/homeassistant/components/emulated_hue/hue_api.py @@ -288,6 +288,9 @@ def get_entity_state(config, entity): final_brightness = round(min(1.0, level) * 255) else: final_state, final_brightness = cached_state + # Make sure brightness is valid + if final_brightness is None: + final_brightness = 255 if final_state else 0 return (final_state, final_brightness) From e5dfcf731080b345af7b21c2cbdd60f7dd4b9ada Mon Sep 17 00:00:00 2001 From: abmantis Date: Mon, 26 Dec 2016 13:00:43 +0000 Subject: [PATCH 028/189] Emulated hue: add support for cover open/close (#5057) * add support for cover open/close * fix action compare; reduce line width --- .../components/emulated_hue/hue_api.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/emulated_hue/hue_api.py b/homeassistant/components/emulated_hue/hue_api.py index cc63873a1fd..24060bdfbcb 100644 --- a/homeassistant/components/emulated_hue/hue_api.py +++ b/homeassistant/components/emulated_hue/hue_api.py @@ -7,7 +7,8 @@ from aiohttp import web from homeassistant import core from homeassistant.const import ( ATTR_ENTITY_ID, SERVICE_TURN_OFF, SERVICE_TURN_ON, SERVICE_VOLUME_SET, - STATE_ON, STATE_OFF, HTTP_BAD_REQUEST, HTTP_NOT_FOUND, + SERVICE_OPEN_COVER, SERVICE_CLOSE_COVER, STATE_ON, STATE_OFF, + HTTP_BAD_REQUEST, HTTP_NOT_FOUND, ) from homeassistant.components.light import ( ATTR_BRIGHTNESS, ATTR_SUPPORTED_FEATURES, SUPPORT_BRIGHTNESS @@ -161,6 +162,9 @@ class HueOneLightChangeView(HomeAssistantView): # Choose general HA domain domain = core.DOMAIN + # Entity needs separate call to turn on + turn_on_needed = False + # Convert the resulting "on" status into the service we need to call service = SERVICE_TURN_ON if result else SERVICE_TURN_OFF @@ -189,11 +193,20 @@ class HueOneLightChangeView(HomeAssistantView): ATTR_SUPPORTED_MEDIA_COMMANDS, 0) if media_commands & SUPPORT_VOLUME_SET == SUPPORT_VOLUME_SET: if brightness is not None: + turn_on_needed = True domain = entity.domain service = SERVICE_VOLUME_SET # Convert 0-100 to 0.0-1.0 data[ATTR_MEDIA_VOLUME_LEVEL] = brightness / 100.0 + # If the requested entity is a cover, convert to open_cover/close_cover + elif entity.domain == "cover": + domain = entity.domain + if service == SERVICE_TURN_ON: + service = SERVICE_OPEN_COVER + else: + service = SERVICE_CLOSE_COVER + if entity.domain in config.off_maps_to_on_domains: # Map the off command to on service = SERVICE_TURN_ON @@ -206,7 +219,7 @@ class HueOneLightChangeView(HomeAssistantView): config.cached_states[entity_id] = (result, brightness) # Separate call to turn on needed - if domain != core.DOMAIN: + if turn_on_needed: hass.async_add_job(hass.services.async_call( core.DOMAIN, SERVICE_TURN_ON, {ATTR_ENTITY_ID: entity_id}, blocking=True)) From 43e5d28643934e6297c5aeec24c5563f8bc7c020 Mon Sep 17 00:00:00 2001 From: Johan Bloemberg Date: Mon, 26 Dec 2016 14:02:12 +0100 Subject: [PATCH 029/189] Fix and test for prefixed MAC addresses. (#5052) * Fix and test for prefixed MAC addresses. * Fix style. * Don't commit old code. * Fix style. --- .../components/device_tracker/__init__.py | 9 +++-- tests/components/device_tracker/test_init.py | 34 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index d497ea4c314..902ff509b3e 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -485,13 +485,18 @@ class Device(Entity): if not self.mac: return None + if '_' in self.mac: + _, mac = self.mac.split('_', 1) + else: + mac = self.mac + # prevent lookup of invalid macs - if not len(self.mac.split(':')) == 6: + if not len(mac.split(':')) == 6: return 'unknown' # we only need the first 3 bytes of the mac for a lookup # this improves somewhat on privacy - oui_bytes = self.mac.split(':')[0:3] + oui_bytes = mac.split(':')[0:3] # bytes like 00 get truncates to 0, API needs full bytes oui = '{:02x}:{:02x}:{:02x}'.format(*[int(b, 16) for b in oui_bytes]) url = 'http://api.macvendors.com/' + oui diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index d1c19b30307..555efd97ed5 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -210,6 +210,40 @@ class TestComponentsDeviceTracker(unittest.TestCase): self.assertEqual(device.vendor, vendor_string) + def test_mac_vendor_mac_formats(self): + """Verify all variations of MAC addresses are handled correctly.""" + vendor_string = 'Raspberry Pi Foundation' + + with mock_aiohttp_client() as aioclient_mock: + aioclient_mock.get('http://api.macvendors.com/b8:27:eb', + text=vendor_string) + aioclient_mock.get('http://api.macvendors.com/00:27:eb', + text=vendor_string) + + mac = 'B8:27:EB:00:00:00' + device = device_tracker.Device( + self.hass, timedelta(seconds=180), + True, 'test', mac, 'Test name') + run_coroutine_threadsafe(device.set_vendor_for_mac(), + self.hass.loop).result() + self.assertEqual(device.vendor, vendor_string) + + mac = '0:27:EB:00:00:00' + device = device_tracker.Device( + self.hass, timedelta(seconds=180), + True, 'test', mac, 'Test name') + run_coroutine_threadsafe(device.set_vendor_for_mac(), + self.hass.loop).result() + self.assertEqual(device.vendor, vendor_string) + + mac = 'PREFIXED_B8:27:EB:00:00:00' + device = device_tracker.Device( + self.hass, timedelta(seconds=180), + True, 'test', mac, 'Test name') + run_coroutine_threadsafe(device.set_vendor_for_mac(), + self.hass.loop).result() + self.assertEqual(device.vendor, vendor_string) + def test_mac_vendor_lookup_unknown(self): """Prevent another mac vendor lookup if was not found first time.""" mac = 'B8:27:EB:00:00:00' From 22d1bf0acd00bb00874a44eab6b783cdcc879466 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 26 Dec 2016 14:09:15 +0100 Subject: [PATCH 030/189] Async migrate climate (#5026) * Async migrate climate * Change update handling --- homeassistant/components/climate/__init__.py | 204 ++++++++++++++----- 1 file changed, 150 insertions(+), 54 deletions(-) diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index 80ef97622d5..79d0fbbb2de 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -4,8 +4,10 @@ Provides functionality to interact with climate devices. For more details about this component, please refer to the documentation at https://home-assistant.io/components/climate/ """ +import asyncio import logging import os +import functools as ft from numbers import Number import voluptuous as vol @@ -185,17 +187,38 @@ def set_swing_mode(hass, swing_mode, entity_id=None): hass.services.call(DOMAIN, SERVICE_SET_SWING_MODE, data) -def setup(hass, config): +@asyncio.coroutine +def async_setup(hass, config): """Setup climate devices.""" component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) - component.setup(config) + yield from component.async_setup(config) - descriptions = load_yaml_config_file( + descriptions = yield from hass.loop.run_in_executor( + None, load_yaml_config_file, os.path.join(os.path.dirname(__file__), 'services.yaml')) - def away_mode_set_service(service): + @asyncio.coroutine + def _async_update_climate(target_climate): + """Update climate entity after service stuff.""" + update_tasks = [] + for climate in target_climate: + if not climate.should_poll: + continue + + update_coro = hass.loop.create_task( + climate.async_update_ha_state(True)) + if hasattr(climate, 'async_update'): + update_tasks.append(update_coro) + else: + yield from update_coro + + if update_tasks: + yield from asyncio.wait(update_tasks, loop=hass.loop) + + @asyncio.coroutine + def async_away_mode_set_service(service): """Set away mode on target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) away_mode = service.data.get(ATTR_AWAY_MODE) @@ -207,21 +230,21 @@ def setup(hass, config): for climate in target_climate: if away_mode: - climate.turn_away_mode_on() + yield from climate.async_turn_away_mode_on() else: - climate.turn_away_mode_off() + yield from climate.async_turn_away_mode_off() - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_AWAY_MODE, away_mode_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_AWAY_MODE, async_away_mode_set_service, descriptions.get(SERVICE_SET_AWAY_MODE), schema=SET_AWAY_MODE_SCHEMA) - def aux_heat_set_service(service): + @asyncio.coroutine + def async_aux_heat_set_service(service): """Set auxillary heater on target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) aux_heat = service.data.get(ATTR_AUX_HEAT) @@ -233,21 +256,21 @@ def setup(hass, config): for climate in target_climate: if aux_heat: - climate.turn_aux_heat_on() + yield from climate.async_turn_aux_heat_on() else: - climate.turn_aux_heat_off() + yield from climate.async_turn_aux_heat_off() - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_AUX_HEAT, aux_heat_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_AUX_HEAT, async_aux_heat_set_service, descriptions.get(SERVICE_SET_AUX_HEAT), schema=SET_AUX_HEAT_SCHEMA) - def temperature_set_service(service): + @asyncio.coroutine + def async_temperature_set_service(service): """Set temperature on the target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) for climate in target_climate: kwargs = {} @@ -261,18 +284,19 @@ def setup(hass, config): else: kwargs[value] = temp - climate.set_temperature(**kwargs) - if climate.should_poll: - climate.update_ha_state(True) + yield from climate.async_set_temperature(**kwargs) - hass.services.register( - DOMAIN, SERVICE_SET_TEMPERATURE, temperature_set_service, + yield from _async_update_climate(target_climate) + + hass.services.async_register( + DOMAIN, SERVICE_SET_TEMPERATURE, async_temperature_set_service, descriptions.get(SERVICE_SET_TEMPERATURE), schema=SET_TEMPERATURE_SCHEMA) - def humidity_set_service(service): + @asyncio.coroutine + def async_humidity_set_service(service): """Set humidity on the target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) humidity = service.data.get(ATTR_HUMIDITY) @@ -283,19 +307,19 @@ def setup(hass, config): return for climate in target_climate: - climate.set_humidity(humidity) + yield from climate.async_set_humidity(humidity) - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_HUMIDITY, humidity_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_HUMIDITY, async_humidity_set_service, descriptions.get(SERVICE_SET_HUMIDITY), schema=SET_HUMIDITY_SCHEMA) - def fan_mode_set_service(service): + @asyncio.coroutine + def async_fan_mode_set_service(service): """Set fan mode on target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) fan = service.data.get(ATTR_FAN_MODE) @@ -306,19 +330,19 @@ def setup(hass, config): return for climate in target_climate: - climate.set_fan_mode(fan) + yield from climate.async_set_fan_mode(fan) - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_FAN_MODE, fan_mode_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_FAN_MODE, async_fan_mode_set_service, descriptions.get(SERVICE_SET_FAN_MODE), schema=SET_FAN_MODE_SCHEMA) - def operation_set_service(service): + @asyncio.coroutine + def async_operation_set_service(service): """Set operating mode on the target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) operation_mode = service.data.get(ATTR_OPERATION_MODE) @@ -329,19 +353,19 @@ def setup(hass, config): return for climate in target_climate: - climate.set_operation_mode(operation_mode) + yield from climate.async_set_operation_mode(operation_mode) - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_OPERATION_MODE, operation_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_OPERATION_MODE, async_operation_set_service, descriptions.get(SERVICE_SET_OPERATION_MODE), schema=SET_OPERATION_MODE_SCHEMA) - def swing_set_service(service): + @asyncio.coroutine + def async_swing_set_service(service): """Set swing mode on the target climate devices.""" - target_climate = component.extract_from_service(service) + target_climate = component.async_extract_from_service(service) swing_mode = service.data.get(ATTR_SWING_MODE) @@ -352,15 +376,15 @@ def setup(hass, config): return for climate in target_climate: - climate.set_swing_mode(swing_mode) + yield from climate.async_set_swing_mode(swing_mode) - if climate.should_poll: - climate.update_ha_state(True) + yield from _async_update_climate(target_climate) - hass.services.register( - DOMAIN, SERVICE_SET_SWING_MODE, swing_set_service, + hass.services.async_register( + DOMAIN, SERVICE_SET_SWING_MODE, async_swing_set_service, descriptions.get(SERVICE_SET_SWING_MODE), schema=SET_SWING_MODE_SCHEMA) + return True @@ -521,38 +545,110 @@ class ClimateDevice(Entity): """Set new target temperature.""" raise NotImplementedError() + def async_set_temperature(self, **kwargs): + """Set new target temperature. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, ft.partial(self.set_temperature, **kwargs)) + def set_humidity(self, humidity): """Set new target humidity.""" raise NotImplementedError() + def async_set_humidity(self, humidity): + """Set new target humidity. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_humidity, humidity) + def set_fan_mode(self, fan): """Set new target fan mode.""" raise NotImplementedError() + def async_set_fan_mode(self, fan): + """Set new target fan mode. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_fan_mode, fan) + def set_operation_mode(self, operation_mode): """Set new target operation mode.""" raise NotImplementedError() + def async_set_operation_mode(self, operation_mode): + """Set new target operation mode. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_operation_mode, operation_mode) + def set_swing_mode(self, swing_mode): """Set new target swing operation.""" raise NotImplementedError() + def async_set_swing_mode(self, swing_mode): + """Set new target swing operation. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_swing_mode, swing_mode) + def turn_away_mode_on(self): """Turn away mode on.""" raise NotImplementedError() + def async_turn_away_mode_on(self): + """Turn away mode on. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_away_mode_on) + def turn_away_mode_off(self): """Turn away mode off.""" raise NotImplementedError() + def async_turn_away_mode_off(self): + """Turn away mode off. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_away_mode_off) + def turn_aux_heat_on(self): """Turn auxillary heater on.""" raise NotImplementedError() + def async_turn_aux_heat_on(self): + """Turn auxillary heater on. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_aux_heat_on) + def turn_aux_heat_off(self): """Turn auxillary heater off.""" raise NotImplementedError() + def async_turn_aux_heat_off(self): + """Turn auxillary heater off. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_aux_heat_off) + @property def min_temp(self): """Return the minimum temperature.""" From 244cdf43d04317aea0e0a9f2a50f7cc24b9d63a2 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 26 Dec 2016 14:10:23 +0100 Subject: [PATCH 031/189] Async reduce coro (#5001) * Asyncio coro reduce * Replace comments --- .../alarm_control_panel/__init__.py | 32 ++++++++++++------- homeassistant/components/camera/__init__.py | 7 ++-- homeassistant/components/remote/__init__.py | 7 ++-- homeassistant/components/scene/__init__.py | 5 ++- homeassistant/components/tts/__init__.py | 6 ++-- homeassistant/helpers/entity.py | 26 +++++++++------ 6 files changed, 47 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/__init__.py b/homeassistant/components/alarm_control_panel/__init__.py index 54be6aa4d0b..ea7727cea33 100644 --- a/homeassistant/components/alarm_control_panel/__init__.py +++ b/homeassistant/components/alarm_control_panel/__init__.py @@ -152,40 +152,48 @@ class AlarmControlPanel(Entity): """Send disarm command.""" raise NotImplementedError() - @asyncio.coroutine def async_alarm_disarm(self, code=None): - """Send disarm command.""" - yield from self.hass.loop.run_in_executor( + """Send disarm command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, self.alarm_disarm, code) def alarm_arm_home(self, code=None): """Send arm home command.""" raise NotImplementedError() - @asyncio.coroutine def async_alarm_arm_home(self, code=None): - """Send arm home command.""" - yield from self.hass.loop.run_in_executor( + """Send arm home command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, self.alarm_arm_home, code) def alarm_arm_away(self, code=None): """Send arm away command.""" raise NotImplementedError() - @asyncio.coroutine def async_alarm_arm_away(self, code=None): - """Send arm away command.""" - yield from self.hass.loop.run_in_executor( + """Send arm away command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, self.alarm_arm_away, code) def alarm_trigger(self, code=None): """Send alarm trigger command.""" raise NotImplementedError() - @asyncio.coroutine def async_alarm_trigger(self, code=None): - """Send alarm trigger command.""" - yield from self.hass.loop.run_in_executor( + """Send alarm trigger command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, self.alarm_trigger, code) @property diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 427d4535ef6..8a114cb627d 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -81,15 +81,12 @@ class Camera(Entity): """Return bytes of camera image.""" raise NotImplementedError() - @asyncio.coroutine def async_camera_image(self): """Return bytes of camera image. - This method must be run in the event loop. + This method must be run in the event loop and returns a coroutine. """ - image = yield from self.hass.loop.run_in_executor( - None, self.camera_image) - return image + return self.hass.loop.run_in_executor(None, self.camera_image) @asyncio.coroutine def handle_async_mjpeg_stream(self, request): diff --git a/homeassistant/components/remote/__init__.py b/homeassistant/components/remote/__init__.py index 2baef2011fc..118a160c305 100755 --- a/homeassistant/components/remote/__init__.py +++ b/homeassistant/components/remote/__init__.py @@ -149,6 +149,9 @@ class RemoteDevice(ToggleEntity): raise NotImplementedError() def async_send_command(self, **kwargs): - """Send a command to a device.""" - yield from self.hass.loop.run_in_executor( + """Send a command to a device. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, ft.partial(self.send_command, **kwargs)) diff --git a/homeassistant/components/scene/__init__.py b/homeassistant/components/scene/__init__.py index 3f532a33151..7e20338f4ab 100644 --- a/homeassistant/components/scene/__init__.py +++ b/homeassistant/components/scene/__init__.py @@ -96,10 +96,9 @@ class Scene(Entity): """Activate scene. Try to get entities into requested state.""" raise NotImplementedError() - @asyncio.coroutine def async_activate(self): """Activate scene. Try to get entities into requested state. - This method is a coroutine. + This method must be run in the event loop and returns a coroutine. """ - yield from self.hass.loop.run_in_executor(None, self.activate) + return self.hass.loop.run_in_executor(None, self.activate) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index 32cbbaa265b..bd19de52a98 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -384,17 +384,15 @@ class Provider(object): """Load tts audio file from provider.""" raise NotImplementedError() - @asyncio.coroutine def async_get_tts_audio(self, message): """Load tts audio file from provider. Return a tuple of file extension and data as bytes. - This method is a coroutine. + This method must be run in the event loop and returns a coroutine. """ - extension, data = yield from self.hass.loop.run_in_executor( + return self.hass.loop.run_in_executor( None, self.get_tts_audio, message) - return (extension, data) class TextToSpeechView(HomeAssistantView): diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 4137a31b8b6..0d2f56f1807 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -346,20 +346,24 @@ class ToggleEntity(Entity): """Turn the entity on.""" raise NotImplementedError() - @asyncio.coroutine def async_turn_on(self, **kwargs): - """Turn the entity on.""" - yield from self.hass.loop.run_in_executor( + """Turn the entity on. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, ft.partial(self.turn_on, **kwargs)) def turn_off(self, **kwargs) -> None: """Turn the entity off.""" raise NotImplementedError() - @asyncio.coroutine def async_turn_off(self, **kwargs): - """Turn the entity off.""" - yield from self.hass.loop.run_in_executor( + """Turn the entity off. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( None, ft.partial(self.turn_off, **kwargs)) def toggle(self) -> None: @@ -369,10 +373,12 @@ class ToggleEntity(Entity): else: self.turn_on() - @asyncio.coroutine def async_toggle(self): - """Toggle the entity.""" + """Toggle the entity. + + This method must be run in the event loop and returns a coroutine. + """ if self.is_on: - yield from self.async_turn_off() + return self.async_turn_off() else: - yield from self.async_turn_on() + return self.async_turn_on() From 5b619a94adc2add3d400f5aeda490d635926a9be Mon Sep 17 00:00:00 2001 From: Hydreliox Date: Mon, 26 Dec 2016 16:02:11 +0100 Subject: [PATCH 032/189] Add sensor for International Space Station (#4968) * Add sensor for International Space Station * Change two sensors to one with attributes. * Fix due to comments in HA PR. Thanks ! * Update Requirement --- .coveragerc | 1 + homeassistant/components/sensor/iss.py | 127 +++++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 131 insertions(+) create mode 100644 homeassistant/components/sensor/iss.py diff --git a/.coveragerc b/.coveragerc index 42ea738a3ef..34531651358 100644 --- a/.coveragerc +++ b/.coveragerc @@ -278,6 +278,7 @@ omit = homeassistant/components/sensor/hddtemp.py homeassistant/components/sensor/hp_ilo.py homeassistant/components/sensor/hydroquebec.py + homeassistant/components/sensor/iss.py homeassistant/components/sensor/imap.py homeassistant/components/sensor/imap_email_content.py homeassistant/components/sensor/influxdb.py diff --git a/homeassistant/components/sensor/iss.py b/homeassistant/components/sensor/iss.py new file mode 100644 index 00000000000..6d9cf4b7106 --- /dev/null +++ b/homeassistant/components/sensor/iss.py @@ -0,0 +1,127 @@ +""" +Support for International Space Station data sensor. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.iss/ +""" +import logging +from datetime import timedelta, datetime +import requests +import voluptuous as vol +from homeassistant.util import Throttle +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import (CONF_NAME) +from homeassistant.helpers.entity import Entity +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['pyiss==1.0.1'] + +_LOGGER = logging.getLogger(__name__) + +ATTR_ISS_VISIBLE = 'visible' +ATTR_ISS_NEXT_RISE = 'next_rise' +ATTR_ISS_NUMBER_PEOPLE_SPACE = 'number_of_people_in_space' + +DEFAULT_NAME = 'ISS' +MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the ISS sensor.""" + # Validate the configuration + if None in (hass.config.latitude, hass.config.longitude): + _LOGGER.error("Latitude or longitude not set in Home Assistant config") + return False + + try: + iss_data = IssData(hass.config.latitude, hass.config.longitude) + iss_data.update() + except requests.exceptions.HTTPError as error: + _LOGGER.error(error) + return False + + name = config.get(CONF_NAME) + + sensors = [] + sensors.append(IssSensor(iss_data, name)) + + add_devices(sensors, True) + + +class IssSensor(Entity): + """Implementation of a ISS sensor.""" + + def __init__(self, iss_data, name): + """Initialize the sensor.""" + self.iss_data = iss_data + self._state = None + self._attributes = {} + self._client_name = name + self._name = ATTR_ISS_VISIBLE + self._unit_of_measurement = None + self._icon = 'mdi:eye' + + @property + def name(self): + """Return the name of the sensor.""" + return '{} {}'.format(self._client_name, self._name) + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def device_state_attributes(self): + """Return the state attributes.""" + return self._attributes + + @property + def unit_of_measurement(self): + """Return the unit of measurement of this entity, if any.""" + return self._unit_of_measurement + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return self._icon + + def update(self): + """Get the latest data from ISS API and updates the states.""" + self._state = self.iss_data.is_above + + self._attributes[ATTR_ISS_NUMBER_PEOPLE_SPACE] = \ + self.iss_data.number_of_people_in_space + delta = self.iss_data.next_rise - datetime.utcnow() + self._attributes[ATTR_ISS_NEXT_RISE] = int(delta.total_seconds() / 60) + + +class IssData(object): + """Get data from the ISS.""" + + def __init__(self, latitude, longitude): + """Initialize the data object.""" + self.is_above = None + self.next_rise = None + self.number_of_people_in_space = None + self.latitude = latitude + self.longitude = longitude + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """Get the latest data from the ISS.""" + import pyiss + + try: + iss = pyiss.ISS() + self.is_above = iss.is_ISS_above(self.latitude, self.longitude) + self.next_rise = iss.next_rise(self.latitude, self.longitude) + self.number_of_people_in_space = iss.number_of_people_in_space() + _LOGGER.error(self.next_rise.tzinfo) + except requests.exceptions.HTTPError as error: + _LOGGER.error(error) + return False diff --git a/requirements_all.txt b/requirements_all.txt index c8cd8f81802..f50e32a652b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -419,6 +419,9 @@ pyhomematic==0.1.18 # homeassistant.components.device_tracker.icloud pyicloud==0.9.1 +# homeassistant.components.sensor.iss +pyiss==1.0.1 + # homeassistant.components.sensor.lastfm pylast==1.6.0 From ac1063266c6eb8248b090ed352aed70d0a73b5b3 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 26 Dec 2016 16:31:26 +0100 Subject: [PATCH 033/189] Upgrade pyowm to 2.6.0 (#5071) --- homeassistant/components/sensor/openweathermap.py | 2 +- homeassistant/components/weather/openweathermap.py | 2 +- requirements_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensor/openweathermap.py b/homeassistant/components/sensor/openweathermap.py index 450b749b0a2..08b2a4c0f65 100755 --- a/homeassistant/components/sensor/openweathermap.py +++ b/homeassistant/components/sensor/openweathermap.py @@ -17,7 +17,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle -REQUIREMENTS = ['pyowm==2.5.0'] +REQUIREMENTS = ['pyowm==2.6.0'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/weather/openweathermap.py b/homeassistant/components/weather/openweathermap.py index a93b0142d90..931ce7bdf6b 100644 --- a/homeassistant/components/weather/openweathermap.py +++ b/homeassistant/components/weather/openweathermap.py @@ -15,7 +15,7 @@ from homeassistant.const import ( import homeassistant.helpers.config_validation as cv from homeassistant.util import Throttle -REQUIREMENTS = ['pyowm==2.5.0'] +REQUIREMENTS = ['pyowm==2.6.0'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index f50e32a652b..ad62b8168ef 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -449,7 +449,7 @@ pynx584==0.2 # homeassistant.components.sensor.openweathermap # homeassistant.components.weather.openweathermap -pyowm==2.5.0 +pyowm==2.6.0 # homeassistant.components.switch.acer_projector pyserial==3.1.1 From ec89accd29998b1ef47315678a97702aca155a45 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 26 Dec 2016 16:31:44 +0100 Subject: [PATCH 034/189] Upgrade psutil to 5.0.1 (#5072) --- homeassistant/components/sensor/systemmonitor.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/systemmonitor.py b/homeassistant/components/sensor/systemmonitor.py index b59c5d0cd43..4feb5ed3a59 100755 --- a/homeassistant/components/sensor/systemmonitor.py +++ b/homeassistant/components/sensor/systemmonitor.py @@ -15,7 +15,7 @@ from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -REQUIREMENTS = ['psutil==5.0.0'] +REQUIREMENTS = ['psutil==5.0.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index ad62b8168ef..2fc2d1a47f2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -351,7 +351,7 @@ pmsensor==0.3 proliphix==0.4.1 # homeassistant.components.sensor.systemmonitor -psutil==5.0.0 +psutil==5.0.1 # homeassistant.components.wink pubnubsub-handler==0.0.5 From c5f70e8be3a0e951549e6065ffe21acd014e4c3b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 26 Dec 2016 16:41:18 +0100 Subject: [PATCH 035/189] Upgrade speedtest-cli to 1.0.1 (#5073) --- homeassistant/components/sensor/speedtest.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/speedtest.py b/homeassistant/components/sensor/speedtest.py index dff6f1c9dde..3b661062198 100644 --- a/homeassistant/components/sensor/speedtest.py +++ b/homeassistant/components/sensor/speedtest.py @@ -19,7 +19,7 @@ from homeassistant.const import CONF_MONITORED_CONDITIONS from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_change -REQUIREMENTS = ['speedtest-cli==1.0.0'] +REQUIREMENTS = ['speedtest-cli==1.0.1'] _LOGGER = logging.getLogger(__name__) _SPEEDTEST_REGEX = re.compile(r'Ping:\s(\d+\.\d+)\sms[\r\n]+' diff --git a/requirements_all.txt b/requirements_all.txt index 2fc2d1a47f2..7e962fe1f65 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -558,7 +558,7 @@ snapcast==1.2.2 somecomfort==0.3.2 # homeassistant.components.sensor.speedtest -speedtest-cli==1.0.0 +speedtest-cli==1.0.1 # homeassistant.components.recorder # homeassistant.scripts.db_migrator From 68865ec27bebfc4f48e5e2fcb26d4876b3934d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 27 Dec 2016 09:24:05 +0100 Subject: [PATCH 036/189] upgrade miflora (#5075) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/sensor/miflora.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/miflora.py b/homeassistant/components/sensor/miflora.py index 75042f4e911..a519d97a855 100644 --- a/homeassistant/components/sensor/miflora.py +++ b/homeassistant/components/sensor/miflora.py @@ -16,7 +16,7 @@ from homeassistant.util import Throttle from homeassistant.const import ( CONF_MONITORED_CONDITIONS, CONF_NAME, CONF_MAC) -REQUIREMENTS = ['miflora==0.1.13'] +REQUIREMENTS = ['miflora==0.1.14'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 7e962fe1f65..cbaa90150d3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -304,7 +304,7 @@ messagebird==1.2.0 mficlient==0.3.0 # homeassistant.components.sensor.miflora -miflora==0.1.13 +miflora==0.1.14 # homeassistant.components.discovery netdisco==0.8.1 From 4728fa8da64b215ac6fd5b8b3ef05893309f032a Mon Sep 17 00:00:00 2001 From: andrey-git Date: Tue, 27 Dec 2016 18:01:22 +0200 Subject: [PATCH 037/189] Allow to specify TTS language in the service call. (#5047) * Allow to specify TTS language in the service call. * Allow to specify TTS language in the service call. * Respect 79 char limit * Fix "Too many blank lines" * Fix "Too many blank lines" * Fix "Too many blank lines" * Change language to be optional parameter of *get_tts_audio * Change language to be optional parameter of *get_tts_audio * Respect 79 char limit * Don't pass "None * Use default of "None" for TTS language * Use default of "None" for TTS language * Don't pass "None" * Change TTS cache key to be hash_lang_engine * Change language from demo to en * Fix wrong replace --- homeassistant/components/tts/__init__.py | 46 +++++---- homeassistant/components/tts/demo.py | 6 +- homeassistant/components/tts/google.py | 9 +- homeassistant/components/tts/services.yaml | 4 + homeassistant/components/tts/voicerss.py | 7 +- tests/components/tts/test_google.py | 32 +++++- tests/components/tts/test_init.py | 108 ++++++++++++++++++--- tests/components/tts/test_voicerss.py | 32 +++++- 8 files changed, 206 insertions(+), 38 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index bd19de52a98..01d0a6a15e3 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -5,8 +5,9 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/tts/ """ import asyncio -import logging +import functools import hashlib +import logging import mimetypes import os import re @@ -48,8 +49,10 @@ SERVICE_CLEAR_CACHE = 'clear_cache' ATTR_MESSAGE = 'message' ATTR_CACHE = 'cache' +ATTR_LANGUAGE = 'language' -_RE_VOICE_FILE = re.compile(r"([a-f0-9]{40})_([a-z]+)\.[a-z0-9]{3,4}") +_RE_VOICE_FILE = re.compile(r"([a-f0-9]{40})_([^_]+)_([a-z]+)\.[a-z0-9]{3,4}") +KEY_PATTERN = '{}_{}_{}' PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ vol.Optional(CONF_CACHE, default=DEFAULT_CACHE): cv.boolean, @@ -63,6 +66,7 @@ SCHEMA_SERVICE_SAY = vol.Schema({ vol.Required(ATTR_MESSAGE): cv.string, vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, vol.Optional(ATTR_CACHE): cv.boolean, + vol.Optional(ATTR_LANGUAGE): cv.string }) SCHEMA_SERVICE_CLEAR_CACHE = vol.Schema({}) @@ -121,10 +125,11 @@ def async_setup(hass, config): entity_ids = service.data.get(ATTR_ENTITY_ID) message = service.data.get(ATTR_MESSAGE) cache = service.data.get(ATTR_CACHE) + language = service.data.get(ATTR_LANGUAGE) try: url = yield from tts.async_get_url( - p_type, message, cache=cache) + p_type, message, cache=cache, language=language) except HomeAssistantError as err: _LOGGER.error("Error on init tts: %s", err) return @@ -207,7 +212,8 @@ class SpeechManager(object): for file_data in folder_data: record = _RE_VOICE_FILE.match(file_data) if record: - key = "{}_{}".format(record.group(1), record.group(2)) + key = KEY_PATTERN.format( + record.group(1), record.group(2), record.group(3)) cache[key.lower()] = file_data.lower() return cache @@ -241,17 +247,19 @@ class SpeechManager(object): def async_register_engine(self, engine, provider, config): """Register a TTS provider.""" provider.hass = self.hass - provider.language = config.get(CONF_LANG) + if CONF_LANG in config: + provider.language = config.get(CONF_LANG) self.providers[engine] = provider @asyncio.coroutine - def async_get_url(self, engine, message, cache=None): + def async_get_url(self, engine, message, cache=None, language=None): """Get URL for play message. This method is a coroutine. """ msg_hash = hashlib.sha1(bytes(message, 'utf-8')).hexdigest() - key = ("{}_{}".format(msg_hash, engine)).lower() + language_key = language or self.providers[engine].language + key = KEY_PATTERN.format(msg_hash, language_key, engine).lower() use_cache = cache if cache is not None else self.use_cache # is speech allready in memory @@ -260,23 +268,24 @@ class SpeechManager(object): # is file store in file cache elif use_cache and key in self.file_cache: filename = self.file_cache[key] - self.hass.async_add_job(self.async_file_to_mem(engine, key)) + self.hass.async_add_job(self.async_file_to_mem(key)) # load speech from provider into memory else: filename = yield from self.async_get_tts_audio( - engine, key, message, use_cache) + engine, key, message, use_cache, language) return "{}/api/tts_proxy/{}".format( self.hass.config.api.base_url, filename) @asyncio.coroutine - def async_get_tts_audio(self, engine, key, message, cache): + def async_get_tts_audio(self, engine, key, message, cache, language): """Receive TTS and store for view in cache. This method is a coroutine. """ provider = self.providers[engine] - extension, data = yield from provider.async_get_tts_audio(message) + extension, data = yield from provider.async_get_tts_audio( + message, language) if data is None or extension is None: raise HomeAssistantError( @@ -314,7 +323,7 @@ class SpeechManager(object): _LOGGER.error("Can't write %s", filename) @asyncio.coroutine - def async_file_to_mem(self, engine, key): + def async_file_to_mem(self, key): """Load voice from file cache into memory. This method is a coroutine. @@ -362,13 +371,13 @@ class SpeechManager(object): if not record: raise HomeAssistantError("Wrong tts file format!") - key = "{}_{}".format(record.group(1), record.group(2)) + key = KEY_PATTERN.format( + record.group(1), record.group(2), record.group(3)) if key not in self.mem_cache: if key not in self.file_cache: raise HomeAssistantError("%s not in cache!", key) - engine = record.group(2) - yield from self.async_file_to_mem(engine, key) + yield from self.async_file_to_mem(key) content, _ = mimetypes.guess_type(filename) return (content, self.mem_cache[key][MEM_CACHE_VOICE]) @@ -380,11 +389,11 @@ class Provider(object): hass = None language = None - def get_tts_audio(self, message): + def get_tts_audio(self, message, language=None): """Load tts audio file from provider.""" raise NotImplementedError() - def async_get_tts_audio(self, message): + def async_get_tts_audio(self, message, language=None): """Load tts audio file from provider. Return a tuple of file extension and data as bytes. @@ -392,7 +401,8 @@ class Provider(object): This method must be run in the event loop and returns a coroutine. """ return self.hass.loop.run_in_executor( - None, self.get_tts_audio, message) + None, + functools.partial(self.get_tts_audio, message, language=language)) class TextToSpeechView(HomeAssistantView): diff --git a/homeassistant/components/tts/demo.py b/homeassistant/components/tts/demo.py index a63bd6373ea..68d49d58f78 100644 --- a/homeassistant/components/tts/demo.py +++ b/homeassistant/components/tts/demo.py @@ -17,7 +17,11 @@ def get_engine(hass, config): class DemoProvider(Provider): """Demo speech api provider.""" - def get_tts_audio(self, message): + def __init__(self): + """Initialize demo provider for TTS.""" + self.language = 'en' + + def get_tts_audio(self, message, language=None): """Load TTS from demo.""" filename = os.path.join(os.path.dirname(__file__), "demo.mp3") try: diff --git a/homeassistant/components/tts/google.py b/homeassistant/components/tts/google.py index 49d53961062..e1bb4e5e4e5 100644 --- a/homeassistant/components/tts/google.py +++ b/homeassistant/components/tts/google.py @@ -59,7 +59,7 @@ class GoogleProvider(Provider): } @asyncio.coroutine - def async_get_tts_audio(self, message): + def async_get_tts_audio(self, message, language=None): """Load TTS from google.""" from gtts_token import gtts_token @@ -67,6 +67,11 @@ class GoogleProvider(Provider): websession = async_get_clientsession(self.hass) message_parts = self._split_message_to_parts(message) + # If language is not specified or is not supported - use the language + # from the config. + if language not in SUPPORT_LANGUAGES: + language = self.language + data = b'' for idx, part in enumerate(message_parts): part_token = yield from self.hass.loop.run_in_executor( @@ -74,7 +79,7 @@ class GoogleProvider(Provider): url_param = { 'ie': 'UTF-8', - 'tl': self.language, + 'tl': language, 'q': yarl.quote(part), 'tk': part_token, 'total': len(message_parts), diff --git a/homeassistant/components/tts/services.yaml b/homeassistant/components/tts/services.yaml index 5cb146950b4..b44ef6ac66c 100644 --- a/homeassistant/components/tts/services.yaml +++ b/homeassistant/components/tts/services.yaml @@ -14,5 +14,9 @@ say: description: Control file cache of this message. example: 'true' + language: + description: Language to use for speech generation. + example: 'ru' + clear_cache: description: Remove cache files and RAM cache. diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index fdbe8a8d806..688ae7f6e25 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -103,13 +103,18 @@ class VoiceRSSProvider(Provider): } @asyncio.coroutine - def async_get_tts_audio(self, message): + def async_get_tts_audio(self, message, language=None): """Load TTS from voicerss.""" websession = async_get_clientsession(self.hass) form_data = self.form_data.copy() form_data['src'] = message + # If language is specified and supported - use it instead of the + # language in the config. + if language in SUPPORT_LANGUAGES: + form_data['hl'] = language + request = None try: with async_timeout.timeout(10, loop=self.hass.loop): diff --git a/tests/components/tts/test_google.py b/tests/components/tts/test_google.py index 623a96f1dfb..3483a4830fa 100644 --- a/tests/components/tts/test_google.py +++ b/tests/components/tts/test_google.py @@ -80,8 +80,8 @@ class TestTTSGooglePlatform(object): @patch('gtts_token.gtts_token.Token.calculate_token', autospec=True, return_value=5) - def test_service_say_german(self, mock_calculate, aioclient_mock): - """Test service call say with german code.""" + def test_service_say_german_config(self, mock_calculate, aioclient_mock): + """Test service call say with german code in the config.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) self.url_param['tl'] = 'de' @@ -106,6 +106,34 @@ class TestTTSGooglePlatform(object): assert len(calls) == 1 assert len(aioclient_mock.mock_calls) == 1 + @patch('gtts_token.gtts_token.Token.calculate_token', autospec=True, + return_value=5) + def test_service_say_german_service(self, mock_calculate, aioclient_mock): + """Test service call say with german code in the service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + self.url_param['tl'] = 'de' + aioclient_mock.get( + self.url, params=self.url_param, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'google', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'google_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + tts.ATTR_LANGUAGE: "de" + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert len(aioclient_mock.mock_calls) == 1 + @patch('gtts_token.gtts_token.Token.calculate_token', autospec=True, return_value=5) def test_service_say_error(self, mock_calculate, aioclient_mock): diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py index fccd9d66bd7..55381395313 100644 --- a/tests/components/tts/test_init.py +++ b/tests/components/tts/test_init.py @@ -82,11 +82,69 @@ class TestTTS(object): assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_demo.mp3") \ + "_en_demo.mp3") \ != -1 assert os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) + + def test_setup_component_and_test_service_with_config_language(self): + """Setup the demo platform and call service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + config = { + tts.DOMAIN: { + 'platform': 'demo', + 'language': 'lang' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( + "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" + "_lang_demo.mp3") \ + != -1 + assert os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_lang_demo.mp3")) + + def test_setup_component_and_test_service_with_service_language(self): + """Setup the demo platform and call service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + config = { + tts.DOMAIN: { + 'platform': 'demo', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + tts.ATTR_LANGUAGE: "lang", + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( + "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" + "_lang_demo.mp3") \ + != -1 + assert os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_lang_demo.mp3")) def test_setup_component_and_test_service_clear_cache(self): """Setup the demo platform and call service clear cache.""" @@ -109,14 +167,14 @@ class TestTTS(object): assert len(calls) == 1 assert os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) self.hass.services.call(tts.DOMAIN, tts.SERVICE_CLEAR_CACHE, {}) self.hass.block_till_done() assert not os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) def test_setup_component_and_test_service_with_receive_voice(self): """Setup the demo platform and call service and receive voice.""" @@ -144,6 +202,32 @@ class TestTTS(object): assert req.status_code == 200 assert req.content == demo_data + def test_setup_component_and_test_service_with_receive_voice_german(self): + """Setup the demo platform and call service and receive voice.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + config = { + tts.DOMAIN: { + 'platform': 'demo', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.start() + + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + }) + self.hass.block_till_done() + + assert len(calls) == 1 + req = requests.get(calls[0].data[ATTR_MEDIA_CONTENT_ID]) + _, demo_data = self.demo_provider.get_tts_audio("bla", "de") + assert req.status_code == 200 + assert req.content == demo_data + def test_setup_component_and_web_view_wrong_file(self): """Setup the demo platform and receive wrong file from web.""" config = { @@ -158,7 +242,7 @@ class TestTTS(object): self.hass.start() url = ("{}/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_demo.mp3").format(self.hass.config.api.base_url) + "_en_demo.mp3").format(self.hass.config.api.base_url) req = requests.get(url) assert req.status_code == 404 @@ -177,7 +261,7 @@ class TestTTS(object): self.hass.start() url = ("{}/api/tts_proxy/265944dsk32c1b2a621be5930510bb2cd" - "_demo.mp3").format(self.hass.config.api.base_url) + "_en_demo.mp3").format(self.hass.config.api.base_url) req = requests.get(url) assert req.status_code == 404 @@ -204,7 +288,7 @@ class TestTTS(object): assert len(calls) == 1 assert not os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) def test_setup_component_test_with_cache_call_service_without_cache(self): """Setup demo platform with cache and call service without cache.""" @@ -229,7 +313,7 @@ class TestTTS(object): assert len(calls) == 1 assert not os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3")) def test_setup_component_test_with_cache_dir(self): """Setup demo platform with cache and call service without cache.""" @@ -238,7 +322,7 @@ class TestTTS(object): _, demo_data = self.demo_provider.get_tts_audio("bla") cache_file = os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3") + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3") os.mkdir(self.default_tts_cache) with open(cache_file, "wb") as voice_file: @@ -264,7 +348,7 @@ class TestTTS(object): assert len(calls) == 1 assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_demo.mp3") \ + "_en_demo.mp3") \ != -1 @patch('homeassistant.components.tts.demo.DemoProvider.get_tts_audio', @@ -294,7 +378,7 @@ class TestTTS(object): _, demo_data = self.demo_provider.get_tts_audio("bla") cache_file = os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_demo.mp3") + "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3") os.mkdir(self.default_tts_cache) with open(cache_file, "wb") as voice_file: @@ -313,7 +397,7 @@ class TestTTS(object): self.hass.start() url = ("{}/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_demo.mp3").format(self.hass.config.api.base_url) + "_en_demo.mp3").format(self.hass.config.api.base_url) req = requests.get(url) assert req.status_code == 200 diff --git a/tests/components/tts/test_voicerss.py b/tests/components/tts/test_voicerss.py index ea1263b189e..b8f73487831 100644 --- a/tests/components/tts/test_voicerss.py +++ b/tests/components/tts/test_voicerss.py @@ -86,8 +86,8 @@ class TestTTSVoiceRSSPlatform(object): assert aioclient_mock.mock_calls[0][2] == self.form_data assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find(".mp3") != -1 - def test_service_say_german(self, aioclient_mock): - """Test service call say with german code.""" + def test_service_say_german_config(self, aioclient_mock): + """Test service call say with german code in the config.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) self.form_data['hl'] = 'de-de' @@ -114,6 +114,34 @@ class TestTTSVoiceRSSPlatform(object): assert len(aioclient_mock.mock_calls) == 1 assert aioclient_mock.mock_calls[0][2] == self.form_data + def test_service_say_german_service(self, aioclient_mock): + """Test service call say with german code in the service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + self.form_data['hl'] = 'de-de' + aioclient_mock.post( + self.url, data=self.form_data, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'voicerss', + 'api_key': '1234567xx', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'voicerss_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + tts.ATTR_LANGUAGE: "de-de" + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == self.form_data + def test_service_say_error(self, aioclient_mock): """Test service call say with http response 400.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) From c77b4a48062c93629d65963264a378ab3a7f27ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Tue, 27 Dec 2016 21:36:07 +0100 Subject: [PATCH 038/189] Update icons from materialdesignicons.com (#5081) --- homeassistant/components/frontend/version.py | 2 +- .../components/frontend/www_static/mdi.html | 2 +- .../frontend/www_static/mdi.html.gz | Bin 176048 -> 181452 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 6c480254cb8..b24c2a6819f 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,7 +3,7 @@ FINGERPRINTS = { "core.js": "ad1ebcd0614c98a390d982087a7ca75c", "frontend.html": "826ee6a4b39c939e31aa468b1ef618f9", - "mdi.html": "46a76f877ac9848899b8ed382427c16f", + "mdi.html": "48fcee544a61b668451faf2b7295df70", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "c2d5ec676be98d4474d19f94d0262c1e", "panels/ha-panel-dev-info.html": "a9c07bf281fe9791fb15827ec1286825", diff --git a/homeassistant/components/frontend/www_static/mdi.html b/homeassistant/components/frontend/www_static/mdi.html index e9f69984a47..c3d73386f8d 100644 --- a/homeassistant/components/frontend/www_static/mdi.html +++ b/homeassistant/components/frontend/www_static/mdi.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/mdi.html.gz b/homeassistant/components/frontend/www_static/mdi.html.gz index e219e5bcd4527f8cacb7e0198575debb207cb75e..bdf10ffef9ce864fc953ff69bcadef5764cec272 100644 GIT binary patch delta 171198 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%0A*AcA#2Vd4>h2yEE6p7LWmF5Y9j#_N5iETq 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

!3eYhGE~LkHMgA9kMow&T`( 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 NAFO=k(@t_Q000hX?3e%m delta 165707 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

  • `&l37#j5nLZTGIObS?wBwoNZ~GZvFC<=2 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%0DAIFC;^;GE%Fe*=5aIYe1clm3j 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

    jY_V+!f?~B64LoP-Od?#kK9nZ^`Jzi5v6k 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%0AT4b#t5ByKNR-T3s{ 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�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 Date: Tue, 27 Dec 2016 12:56:26 -0800 Subject: [PATCH 039/189] Ecobee service fix and new 'resume program' service (#4510) * ecobee_set_fan_min_on_time: fix issue using 'entity_id' field and add service field help text * climate.ecobee: add 'resume_program' service * Add default value for resume_all and correct entity_id field name reference --- homeassistant/components/climate/ecobee.py | 43 +++++++++++++++++-- .../components/climate/services.yaml | 24 +++++++++++ homeassistant/helpers/state.py | 4 +- 3 files changed, 66 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/climate/ecobee.py b/homeassistant/components/climate/ecobee.py index 84d8c32f9ff..bfb11f703d1 100644 --- a/homeassistant/components/climate/ecobee.py +++ b/homeassistant/components/climate/ecobee.py @@ -22,16 +22,25 @@ _CONFIGURING = {} _LOGGER = logging.getLogger(__name__) ATTR_FAN_MIN_ON_TIME = 'fan_min_on_time' +ATTR_RESUME_ALL = 'resume_all' + +DEFAULT_RESUME_ALL = False DEPENDENCIES = ['ecobee'] SERVICE_SET_FAN_MIN_ON_TIME = 'ecobee_set_fan_min_on_time' +SERVICE_RESUME_PROGRAM = 'ecobee_resume_program' SET_FAN_MIN_ON_TIME_SCHEMA = vol.Schema({ vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, vol.Required(ATTR_FAN_MIN_ON_TIME): vol.Coerce(int), }) +RESUME_PROGRAM_SCHEMA = vol.Schema({ + vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, + vol.Optional(ATTR_RESUME_ALL, default=DEFAULT_RESUME_ALL): cv.boolean, +}) + def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the Ecobee Thermostat Platform.""" @@ -48,21 +57,36 @@ def setup_platform(hass, config, add_devices, discovery_info=None): def fan_min_on_time_set_service(service): """Set the minimum fan on time on the target thermostats.""" - entity_id = service.data.get('entity_id') + entity_id = service.data.get(ATTR_ENTITY_ID) + fan_min_on_time = service.data[ATTR_FAN_MIN_ON_TIME] if entity_id: target_thermostats = [device for device in devices - if device.entity_id == entity_id] + if device.entity_id in entity_id] else: target_thermostats = devices - fan_min_on_time = service.data[ATTR_FAN_MIN_ON_TIME] - for thermostat in target_thermostats: thermostat.set_fan_min_on_time(str(fan_min_on_time)) thermostat.update_ha_state(True) + def resume_program_set_service(service): + """Resume the program on the target thermostats.""" + entity_id = service.data.get(ATTR_ENTITY_ID) + resume_all = service.data.get(ATTR_RESUME_ALL) + + if entity_id: + target_thermostats = [device for device in devices + if device.entity_id in entity_id] + else: + target_thermostats = devices + + for thermostat in target_thermostats: + thermostat.resume_program(resume_all) + + thermostat.update_ha_state(True) + descriptions = load_yaml_config_file( path.join(path.dirname(__file__), 'services.yaml')) @@ -71,6 +95,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None): descriptions.get(SERVICE_SET_FAN_MIN_ON_TIME), schema=SET_FAN_MIN_ON_TIME_SCHEMA) + hass.services.register( + DOMAIN, SERVICE_RESUME_PROGRAM, resume_program_set_service, + descriptions.get(SERVICE_RESUME_PROGRAM), + schema=RESUME_PROGRAM_SCHEMA) + class Thermostat(ClimateDevice): """A thermostat class for Ecobee.""" @@ -249,6 +278,12 @@ class Thermostat(ClimateDevice): fan_min_on_time) self.update_without_throttle = True + def resume_program(self, resume_all): + """Resume the thermostat schedule program.""" + self.data.ecobee.resume_program(self.thermostat_index, + str(resume_all).lower()) + self.update_without_throttle = True + # Home and Sleep mode aren't used in UI yet: # def turn_home_mode_on(self): diff --git a/homeassistant/components/climate/services.yaml b/homeassistant/components/climate/services.yaml index d28e8c4dd88..ac8e2ab1dea 100644 --- a/homeassistant/components/climate/services.yaml +++ b/homeassistant/components/climate/services.yaml @@ -94,3 +94,27 @@ set_swing_mode: swing_mode: description: New value of swing mode example: 1 + +ecobee_set_fan_min_on_time: + description: Set the minimum fan on time + + fields: + entity_id: + description: Name(s) of entities to change + example: 'climate.kitchen' + + fan_min_on_time: + description: New value of fan min on time + example: 5 + +ecobee_resume_program: + description: Resume the programmed schedule + + fields: + entity_id: + description: Name(s) of entities to change + example: 'climate.kitchen' + + resume_all: + description: Resume all events and return to the scheduled program. This default to false which removes only the top event. + example: true diff --git a/homeassistant/helpers/state.py b/homeassistant/helpers/state.py index 536975c100e..3be344e7d9d 100644 --- a/homeassistant/helpers/state.py +++ b/homeassistant/helpers/state.py @@ -22,7 +22,8 @@ from homeassistant.components.climate import ( SERVICE_SET_HUMIDITY, SERVICE_SET_OPERATION_MODE, SERVICE_SET_SWING_MODE, SERVICE_SET_TEMPERATURE) from homeassistant.components.climate.ecobee import ( - ATTR_FAN_MIN_ON_TIME, SERVICE_SET_FAN_MIN_ON_TIME) + ATTR_FAN_MIN_ON_TIME, SERVICE_SET_FAN_MIN_ON_TIME, + ATTR_RESUME_ALL, SERVICE_RESUME_PROGRAM) from homeassistant.const import ( ATTR_ENTITY_ID, ATTR_TEMPERATURE, SERVICE_ALARM_ARM_AWAY, SERVICE_ALARM_ARM_HOME, SERVICE_ALARM_DISARM, SERVICE_ALARM_TRIGGER, @@ -52,6 +53,7 @@ SERVICE_ATTRIBUTES = { SERVICE_SET_AWAY_MODE: [ATTR_AWAY_MODE], SERVICE_SET_FAN_MODE: [ATTR_FAN_MODE], SERVICE_SET_FAN_MIN_ON_TIME: [ATTR_FAN_MIN_ON_TIME], + SERVICE_RESUME_PROGRAM: [ATTR_RESUME_ALL], SERVICE_SET_TEMPERATURE: [ATTR_TEMPERATURE], SERVICE_SET_HUMIDITY: [ATTR_HUMIDITY], SERVICE_SET_SWING_MODE: [ATTR_SWING_MODE], From fee47f35b95f10e606e5d4463240a4d253573ca1 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Tue, 27 Dec 2016 22:08:35 +0100 Subject: [PATCH 040/189] Improvements to zwave lock platform (#5066) --- homeassistant/components/lock/zwave.py | 58 ++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/lock/zwave.py b/homeassistant/components/lock/zwave.py index 4c0b7ae34ac..d359cacba8f 100644 --- a/homeassistant/components/lock/zwave.py +++ b/homeassistant/components/lock/zwave.py @@ -6,9 +6,34 @@ https://home-assistant.io/components/lock.zwave/ """ # Because we do not compile openzwave on CI # pylint: disable=import-error +import logging + from homeassistant.components.lock import DOMAIN, LockDevice from homeassistant.components import zwave +_LOGGER = logging.getLogger(__name__) + +ATTR_NOTIFICATION = 'notification' + +LOCK_NOTIFICATION = { + 1: 'Manual Lock', + 2: 'Manual Unlock', + 3: 'RF Lock', + 4: 'RF Unlock', + 5: 'Keypad Lock', + 6: 'Keypad Unlock', + 254: 'Unknown Event' +} + +LOCK_STATUS = { + 1: True, + 2: False, + 3: True, + 4: False, + 5: True, + 6: False +} + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): @@ -40,15 +65,32 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): zwave.ZWaveDeviceEntity.__init__(self, value, DOMAIN) - self._state = value.data + self._node = value.node + self._state = None + self._notification = None dispatcher.connect( self._value_changed, ZWaveNetwork.SIGNAL_VALUE_CHANGED) + self.update_properties() def _value_changed(self, value): """Called when a value has changed on the network.""" - if self._value.value_id == value.value_id: - self._state = value.data - self.update_ha_state() + if self._value.value_id == value.value_id or \ + self._value.node == value.node: + self.update_properties() + self.schedule_update_ha_state() + + def update_properties(self): + """Callback on data change for the registered node/value pair.""" + for value in self._node.get_values( + class_id=zwave.const.COMMAND_CLASS_ALARM).values(): + if value.label != "Access Control": + continue + self._notification = LOCK_NOTIFICATION.get(value.data) + if self._notification: + self._state = LOCK_STATUS.get(value.data) + break + if not self._notification: + self._state = self._value.data @property def is_locked(self): @@ -62,3 +104,11 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): def unlock(self, **kwargs): """Unlock the device.""" self._value.data = False + + @property + def device_state_attributes(self): + """Return the device specific state attributes.""" + data = super().device_state_attributes + if self._notification: + data[ATTR_NOTIFICATION] = self._notification + return data From d8ff22870a5d953f78b5302157eaec8223bcbb27 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 28 Dec 2016 06:26:27 +0100 Subject: [PATCH 041/189] Include flake8-docstrings to test requirements to better mimic tox -e lint (#4926) --- requirements_test.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements_test.txt b/requirements_test.txt index 2dbc98326db..d001c5d1a78 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -1,7 +1,7 @@ # linters such as flake8 and pylint should be pinned, as new releases # make new things fail. Manually update these pins when pulling in a # new version -flake8==3.2.0 +flake8==3.2.1 pylint==1.6.4 mypy-lang==0.4.5 pydocstyle==1.1.1 @@ -15,3 +15,4 @@ pytest-catchlog>=1.2.2 pytest-sugar>=0.7.1 requests_mock>=1.0 mock-open>=1.3.1 +flake8-docstrings==1.0.2 From 98efbbc129e0f72f5ceb0fff33bd27f92f88e760 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 28 Dec 2016 08:12:10 +0100 Subject: [PATCH 042/189] Fix typo. (#5087) --- homeassistant/components/media_player/squeezebox.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/squeezebox.py b/homeassistant/components/media_player/squeezebox.py index 18081e9eebb..c51834057d2 100644 --- a/homeassistant/components/media_player/squeezebox.py +++ b/homeassistant/components/media_player/squeezebox.py @@ -177,7 +177,7 @@ class SqueezeBoxDevice(MediaPlayerDevice): """Representation of a SqueezeBox device.""" def __init__(self, lms, player_id): - """Initialize the SqeezeBox device.""" + """Initialize the SqueezeBox device.""" super(SqueezeBoxDevice, self).__init__() self._lms = lms self._id = player_id From f0b1874d2d435221d2382b53731dcf1bcd8663ba Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 28 Dec 2016 20:04:59 +0200 Subject: [PATCH 043/189] Fix up docstring for tests (#5090) --- setup.py | 1 + tests/components/automation/test_litejet.py | 4 ++++ .../climate/test_generic_thermostat.py | 16 ++++---------- tests/components/emulated_hue/test_init.py | 1 + tests/components/http/test_ban.py | 4 ++-- tests/components/http/test_init.py | 3 +-- tests/components/light/test_litejet.py | 6 ++--- .../media_player/test_soundtouch.py | 10 +++++++++ tests/components/media_player/test_yamaha.py | 3 ++- tests/components/remote/test_demo.py | 2 -- tests/components/remote/test_init.py | 8 +++---- tests/components/scene/test_litejet.py | 3 ++- tests/components/sensor/test_api_streams.py | 1 + tests/components/sensor/test_sonarr.py | 22 +++++++++---------- tests/components/switch/test_command_line.py | 2 +- tests/components/switch/test_litejet.py | 10 ++------- tests/components/test_litejet.py | 3 +++ tests/components/test_websocket_api.py | 11 +++++----- tests/util/test_async.py | 10 ++++----- 19 files changed, 61 insertions(+), 59 deletions(-) diff --git a/setup.py b/setup.py index d6f4792c186..4dc8ba9f75f 100755 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +"""Home Assistant setup script.""" import os from setuptools import setup, find_packages from homeassistant.const import (__version__, PROJECT_PACKAGE_NAME, diff --git a/tests/components/automation/test_litejet.py b/tests/components/automation/test_litejet.py index be329487406..d76a0ee19ac 100644 --- a/tests/components/automation/test_litejet.py +++ b/tests/components/automation/test_litejet.py @@ -71,6 +71,7 @@ class TestLiteJetTrigger(unittest.TestCase): self.hass.stop() def simulate_press(self, number): + """Test to simulate a press.""" _LOGGER.info('*** simulate press of %d', number) callback = self.switch_pressed_callbacks.get(number) with mock.patch('homeassistant.helpers.condition.dt_util.utcnow', @@ -80,6 +81,7 @@ class TestLiteJetTrigger(unittest.TestCase): self.hass.block_till_done() def simulate_release(self, number): + """Test to simulate releasing.""" _LOGGER.info('*** simulate release of %d', number) callback = self.switch_released_callbacks.get(number) with mock.patch('homeassistant.helpers.condition.dt_util.utcnow', @@ -89,6 +91,7 @@ class TestLiteJetTrigger(unittest.TestCase): self.hass.block_till_done() def simulate_time(self, delta): + """Test to simulate time.""" _LOGGER.info( '*** simulate time change by %s: %s', delta, @@ -102,6 +105,7 @@ class TestLiteJetTrigger(unittest.TestCase): _LOGGER.info('done with now=%s', dt_util.utcnow()) def setup_automation(self, trigger): + """Test setting up the automation.""" assert bootstrap.setup_component(self.hass, automation.DOMAIN, { automation.DOMAIN: [ { diff --git a/tests/components/climate/test_generic_thermostat.py b/tests/components/climate/test_generic_thermostat.py index 7c4ee8db58f..5fad8e16aed 100644 --- a/tests/components/climate/test_generic_thermostat.py +++ b/tests/components/climate/test_generic_thermostat.py @@ -182,9 +182,7 @@ class TestClimateGenericThermostat(unittest.TestCase): self.assertEqual(ENT_SWITCH, call.data['entity_id']) def test_temp_change_heater_on_within_tolerance(self): - """Test if temperature change doesn't turn heater on within - tolerance. - """ + """Test if temperature change doesn't turn on within tolerance.""" self._setup_switch(False) climate.set_temperature(self.hass, 30) self.hass.block_till_done() @@ -206,9 +204,7 @@ class TestClimateGenericThermostat(unittest.TestCase): self.assertEqual(ENT_SWITCH, call.data['entity_id']) def test_temp_change_heater_off_within_tolerance(self): - """Test if temperature change doesn't turn heater off within - tolerance. - """ + """Test if temperature change doesn't turn off within tolerance.""" self._setup_switch(True) climate.set_temperature(self.hass, 30) self.hass.block_till_done() @@ -296,9 +292,7 @@ class TestClimateGenericThermostatACMode(unittest.TestCase): self.assertEqual(ENT_SWITCH, call.data['entity_id']) def test_temp_change_ac_off_within_tolerance(self): - """Test if temperature change doesn't turn ac off within - tolerance. - """ + """Test if temperature change doesn't turn ac off within tolerance.""" self._setup_switch(True) climate.set_temperature(self.hass, 30) self.hass.block_till_done() @@ -320,9 +314,7 @@ class TestClimateGenericThermostatACMode(unittest.TestCase): self.assertEqual(ENT_SWITCH, call.data['entity_id']) def test_temp_change_ac_on_within_tolerance(self): - """Test if temperature change doesn't turn ac on within - tolerance. - """ + """Test if temperature change doesn't turn ac on within tolerance.""" self._setup_switch(False) climate.set_temperature(self.hass, 25) self.hass.block_till_done() diff --git a/tests/components/emulated_hue/test_init.py b/tests/components/emulated_hue/test_init.py index ec3cc0a11cb..2ee7c385d8d 100755 --- a/tests/components/emulated_hue/test_init.py +++ b/tests/components/emulated_hue/test_init.py @@ -1,3 +1,4 @@ +"""Test the Emulated Hue component.""" from unittest.mock import patch from homeassistant.components.emulated_hue import Config, _LOGGER diff --git a/tests/components/http/test_ban.py b/tests/components/http/test_ban.py index b2aeca2917f..c210bc3f0e0 100644 --- a/tests/components/http/test_ban.py +++ b/tests/components/http/test_ban.py @@ -75,7 +75,7 @@ class TestHttp: assert req.status_code == 403 def test_access_from_banned_ip_when_ban_is_off(self): - """Test accessing to server from banned IP when feature is off""" + """Test accessing to server from banned IP when feature is off.""" hass.http.app[KEY_BANS_ENABLED] = False for remote_addr in BANNED_IPS: with patch('homeassistant.components.http.' @@ -87,7 +87,7 @@ class TestHttp: assert req.status_code == 200 def test_ip_bans_file_creation(self): - """Testing if banned IP file created""" + """Testing if banned IP file created.""" hass.http.app[KEY_BANS_ENABLED] = True hass.http.app[KEY_LOGIN_THRESHOLD] = 1 diff --git a/tests/components/http/test_init.py b/tests/components/http/test_init.py index e4deb7b60d1..5fa37012c7a 100644 --- a/tests/components/http/test_init.py +++ b/tests/components/http/test_init.py @@ -63,7 +63,6 @@ class TestCors: def test_cors_allowed_with_password_in_url(self): """Test cross origin resource sharing with password in url.""" - req = requests.get(_url(const.URL_API), params={'api_password': API_PASSWORD}, headers={const.HTTP_HEADER_ORIGIN: HTTP_BASE_URL}) @@ -119,6 +118,7 @@ class TestCors: class TestView(http.HomeAssistantView): + """Test the HTTP views.""" name = 'test' url = '/hello' @@ -159,7 +159,6 @@ def test_registering_view_while_running(hass, test_client): def test_api_base_url(loop): """Test setting api url.""" - hass = MagicMock() hass.loop = loop diff --git a/tests/components/light/test_litejet.py b/tests/components/light/test_litejet.py index ab10752b14a..10b205a8c7a 100644 --- a/tests/components/light/test_litejet.py +++ b/tests/components/light/test_litejet.py @@ -60,9 +60,11 @@ class TestLiteJetLight(unittest.TestCase): self.mock_lj.get_load_level.reset_mock() def light(self): + """Test for main light entity.""" return self.hass.states.get(ENTITY_LIGHT) def other_light(self): + """Test the other light.""" return self.hass.states.get(ENTITY_OTHER_LIGHT) def teardown_method(self, method): @@ -71,7 +73,6 @@ class TestLiteJetLight(unittest.TestCase): def test_on_brightness(self): """Test turning the light on with brightness.""" - assert self.light().state == 'off' assert self.other_light().state == 'off' @@ -84,7 +85,6 @@ class TestLiteJetLight(unittest.TestCase): def test_on_off(self): """Test turning the light on and off.""" - assert self.light().state == 'off' assert self.other_light().state == 'off' @@ -100,7 +100,6 @@ class TestLiteJetLight(unittest.TestCase): def test_activated_event(self): """Test handling an event from LiteJet.""" - self.mock_lj.get_load_level.return_value = 99 # Light 1 @@ -138,7 +137,6 @@ class TestLiteJetLight(unittest.TestCase): def test_deactivated_event(self): """Test handling an event from LiteJet.""" - # Initial state is on. self.mock_lj.get_load_level.return_value = 99 diff --git a/tests/components/media_player/test_soundtouch.py b/tests/components/media_player/test_soundtouch.py index b95b774845a..16f1065767a 100644 --- a/tests/components/media_player/test_soundtouch.py +++ b/tests/components/media_player/test_soundtouch.py @@ -30,6 +30,7 @@ class MockDevice(STD): """Mock device.""" def __init__(self): + """Init the class.""" self._config = MockConfig @@ -37,6 +38,7 @@ class MockConfig(Config): """Mock config.""" def __init__(self): + """Init class.""" self._name = "name" @@ -49,6 +51,7 @@ class MockPreset(Preset): """Mock preset.""" def __init__(self, id): + """Init the class.""" self._id = id self._name = "preset" @@ -57,6 +60,7 @@ class MockVolume(Volume): """Mock volume with value.""" def __init__(self): + """Init class.""" self._actual = 12 @@ -64,6 +68,7 @@ class MockVolumeMuted(Volume): """Mock volume muted.""" def __init__(self): + """Init the class.""" self._actual = 12 self._muted = True @@ -72,6 +77,7 @@ class MockStatusStandby(Status): """Mock status standby.""" def __init__(self): + """Init the class.""" self._source = "STANDBY" @@ -79,6 +85,7 @@ class MockStatusPlaying(Status): """Mock status playing media.""" def __init__(self): + """Init the class.""" self._source = "" self._play_status = "PLAY_STATE" self._image = "image.url" @@ -93,6 +100,7 @@ class MockStatusPlayingRadio(Status): """Mock status radio.""" def __init__(self): + """Init the class.""" self._source = "" self._play_status = "PLAY_STATE" self._image = "image.url" @@ -107,6 +115,7 @@ class MockStatusUnknown(Status): """Mock status unknown media.""" def __init__(self): + """Init the class.""" self._source = "" self._play_status = "PLAY_STATE" self._image = "image.url" @@ -121,6 +130,7 @@ class MockStatusPause(Status): """Mock status pause.""" def __init__(self): + """Init the class.""" self._source = "" self._play_status = "PAUSE_STATE" diff --git a/tests/components/media_player/test_yamaha.py b/tests/components/media_player/test_yamaha.py index 94810a84e3a..7484b18a904 100644 --- a/tests/components/media_player/test_yamaha.py +++ b/tests/components/media_player/test_yamaha.py @@ -20,6 +20,7 @@ class FakeYamaha(rxv.rxv.RXV): ensure that usage of the rxv library by HomeAssistant is as we'd expect. """ + _fake_input = 'HDMI1' def _discover_features(self): @@ -75,7 +76,7 @@ class TestYamaha(unittest.TestCase): self.rec = FakeYamaha('10.0.0.0') def test_get_playback_support(self): - """Test the playback""" + """Test the playback.""" rec = self.rec support = rec.get_playback_support() self.assertFalse(support.play) diff --git a/tests/components/remote/test_demo.py b/tests/components/remote/test_demo.py index 7dc8f2c8976..8277ef12c8e 100755 --- a/tests/components/remote/test_demo.py +++ b/tests/components/remote/test_demo.py @@ -30,7 +30,6 @@ class TestDemoRemote(unittest.TestCase): def test_methods(self): """Test if methods call the services as expected.""" - self.assertTrue( setup_component(self.hass, remote.DOMAIN, {remote.DOMAIN: {CONF_PLATFORM: 'demo'}})) @@ -50,7 +49,6 @@ class TestDemoRemote(unittest.TestCase): def test_services(self): """Test the provided services.""" - # Test turn_on turn_on_calls = mock_service( self.hass, remote.DOMAIN, SERVICE_TURN_ON) diff --git a/tests/components/remote/test_init.py b/tests/components/remote/test_init.py index a5d711f8680..60a049fa291 100755 --- a/tests/components/remote/test_init.py +++ b/tests/components/remote/test_init.py @@ -28,7 +28,7 @@ class TestRemote(unittest.TestCase): self.hass.stop() def test_is_on(self): - """ Test is_on""" + """Test is_on.""" self.hass.states.set('remote.test', STATE_ON) self.assertTrue(remote.is_on(self.hass, 'remote.test')) @@ -42,7 +42,7 @@ class TestRemote(unittest.TestCase): self.assertFalse(remote.is_on(self.hass)) def test_turn_on(self): - """ Test turn_on""" + """Test turn_on.""" turn_on_calls = mock_service( self.hass, remote.DOMAIN, SERVICE_TURN_ON) @@ -58,7 +58,7 @@ class TestRemote(unittest.TestCase): self.assertEqual(remote.DOMAIN, call.domain) def test_turn_off(self): - """ Test turn_off""" + """Test turn_off.""" turn_off_calls = mock_service( self.hass, remote.DOMAIN, SERVICE_TURN_OFF) @@ -75,7 +75,7 @@ class TestRemote(unittest.TestCase): self.assertEqual('entity_id_val', call.data[ATTR_ENTITY_ID]) def test_send_command(self): - """ Test send_command""" + """Test send_command.""" send_command_calls = mock_service( self.hass, remote.DOMAIN, SERVICE_SEND_COMMAND) diff --git a/tests/components/scene/test_litejet.py b/tests/components/scene/test_litejet.py index 7596736a567..17ba4ce7304 100644 --- a/tests/components/scene/test_litejet.py +++ b/tests/components/scene/test_litejet.py @@ -50,14 +50,15 @@ class TestLiteJetScene(unittest.TestCase): self.hass.stop() def scene(self): + """Get the current scene.""" return self.hass.states.get(ENTITY_SCENE) def other_scene(self): + """Get the other scene.""" return self.hass.states.get(ENTITY_OTHER_SCENE) def test_activate(self): """Test activating the scene.""" - scene.activate(self.hass, ENTITY_SCENE) self.hass.block_till_done() self.mock_lj.activate_scene.assert_called_once_with( diff --git a/tests/components/sensor/test_api_streams.py b/tests/components/sensor/test_api_streams.py index 2154cc3bd49..e7978ce0fb8 100644 --- a/tests/components/sensor/test_api_streams.py +++ b/tests/components/sensor/test_api_streams.py @@ -1,3 +1,4 @@ +"""Test cases for the API stream sensor.""" import asyncio import logging diff --git a/tests/components/sensor/test_sonarr.py b/tests/components/sensor/test_sonarr.py index cc9186677dc..24a733e6565 100644 --- a/tests/components/sensor/test_sonarr.py +++ b/tests/components/sensor/test_sonarr.py @@ -574,7 +574,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_diskspace_no_paths(self, req_mock): - """Tests getting all disk space""" + """Test getting all disk space.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -599,7 +599,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_diskspace_paths(self, req_mock): - """Tests getting diskspace for included paths""" + """Test getting diskspace for included paths.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -626,7 +626,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_commands(self, req_mock): - """Tests getting running commands""" + """Test getting running commands.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -653,7 +653,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_queue(self, req_mock): - """Tests getting downloads in the queue""" + """Test getting downloads in the queue.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -680,7 +680,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_series(self, req_mock): - """Tests getting the number of series""" + """Test getting the number of series.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -707,7 +707,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_wanted(self, req_mock): - """Tests getting wanted episodes""" + """Test getting wanted episodes.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -734,7 +734,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_upcoming_multiple_days(self, req_mock): - """Tests upcoming episodes for multiple days""" + """Test the upcoming episodes for multiple days.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -762,8 +762,8 @@ class TestSonarrSetup(unittest.TestCase): @pytest.mark.skip @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_upcoming_today(self, req_mock): - """ - Tests filtering for a single day. + """Test filtering for a single day. + Sonarr needs to respond with at least 2 days """ config = { @@ -793,7 +793,7 @@ class TestSonarrSetup(unittest.TestCase): @pytest.mark.skip @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_ssl(self, req_mock): - """Tests SSL being enabled""" + """Test SSL being enabled.""" config = { 'platform': 'sonarr', 'api_key': 'foo', @@ -822,7 +822,7 @@ class TestSonarrSetup(unittest.TestCase): @unittest.mock.patch('requests.get', side_effect=mocked_exception) def test_exception_handling(self, req_mock): - """Tests exception being handled""" + """Test exception being handled.""" config = { 'platform': 'sonarr', 'api_key': 'foo', diff --git a/tests/components/switch/test_command_line.py b/tests/components/switch/test_command_line.py index bc8e6d6173a..de122df0479 100644 --- a/tests/components/switch/test_command_line.py +++ b/tests/components/switch/test_command_line.py @@ -185,7 +185,7 @@ class TestCommandSwitch(unittest.TestCase): self.assertFalse(state_device.assumed_state) def test_entity_id_set_correctly(self): - """Test that entity_id is set correctly from object_id""" + """Test that entity_id is set correctly from object_id.""" self.hass = get_test_home_assistant() init_args = [ diff --git a/tests/components/switch/test_litejet.py b/tests/components/switch/test_litejet.py index 55d468bccd4..3d090fd173d 100644 --- a/tests/components/switch/test_litejet.py +++ b/tests/components/switch/test_litejet.py @@ -64,26 +64,25 @@ class TestLiteJetSwitch(unittest.TestCase): self.hass.stop() def switch(self): + """Return the switch state.""" return self.hass.states.get(ENTITY_SWITCH) def other_switch(self): + """Return the other switch state.""" return self.hass.states.get(ENTITY_OTHER_SWITCH) def test_include_switches_unspecified(self): """Test that switches are ignored by default.""" - self.mock_lj.button_switches.assert_not_called() self.mock_lj.all_switches.assert_not_called() def test_include_switches_False(self): """Test that switches can be explicitly ignored.""" - self.mock_lj.button_switches.assert_not_called() self.mock_lj.all_switches.assert_not_called() def test_on_off(self): """Test turning the switch on and off.""" - assert self.switch().state == 'off' assert self.other_switch().state == 'off' @@ -99,9 +98,7 @@ class TestLiteJetSwitch(unittest.TestCase): def test_pressed_event(self): """Test handling an event from LiteJet.""" - # Switch 1 - _LOGGER.info(self.switch_pressed_callbacks[ENTITY_SWITCH_NUMBER]) self.switch_pressed_callbacks[ENTITY_SWITCH_NUMBER]() self.hass.block_till_done() @@ -112,7 +109,6 @@ class TestLiteJetSwitch(unittest.TestCase): assert self.other_switch().state == 'off' # Switch 2 - self.switch_pressed_callbacks[ENTITY_OTHER_SWITCH_NUMBER]() self.hass.block_till_done() @@ -123,9 +119,7 @@ class TestLiteJetSwitch(unittest.TestCase): def test_released_event(self): """Test handling an event from LiteJet.""" - # Initial state is on. - self.switch_pressed_callbacks[ENTITY_OTHER_SWITCH_NUMBER]() self.hass.block_till_done() diff --git a/tests/components/test_litejet.py b/tests/components/test_litejet.py index 6d62e1ab0cd..dfbcb9d99d8 100644 --- a/tests/components/test_litejet.py +++ b/tests/components/test_litejet.py @@ -22,16 +22,19 @@ class TestLiteJet(unittest.TestCase): self.hass.stop() def test_is_ignored_unspecified(self): + """Ensure it is ignored when unspecified.""" self.hass.data['litejet_config'] = {} assert not litejet.is_ignored(self.hass, 'Test') def test_is_ignored_empty(self): + """Ensure it is ignored when empty.""" self.hass.data['litejet_config'] = { litejet.CONF_EXCLUDE_NAMES: [] } assert not litejet.is_ignored(self.hass, 'Test') def test_is_ignored_normal(self): + """Test if usually ignored.""" self.hass.data['litejet_config'] = { litejet.CONF_EXCLUDE_NAMES: ['Test', 'Other One'] } diff --git a/tests/components/test_websocket_api.py b/tests/components/test_websocket_api.py index bdad5032a24..a6748e7fc16 100644 --- a/tests/components/test_websocket_api.py +++ b/tests/components/test_websocket_api.py @@ -1,3 +1,4 @@ +"""Tests for the Home Assistant Websocket API.""" import asyncio from unittest.mock import patch @@ -213,7 +214,7 @@ def test_subscribe_unsubscribe_events(hass, websocket_client): @asyncio.coroutine def test_get_states(hass, websocket_client): - """ Test get_states command.""" + """Test get_states command.""" hass.states.async_set('greeting.hello', 'world') hass.states.async_set('greeting.bye', 'universe') @@ -239,7 +240,7 @@ def test_get_states(hass, websocket_client): @asyncio.coroutine def test_get_services(hass, websocket_client): - """ Test get_services command.""" + """Test get_services command.""" websocket_client.send_json({ 'id': 5, 'type': wapi.TYPE_GET_SERVICES, @@ -254,7 +255,7 @@ def test_get_services(hass, websocket_client): @asyncio.coroutine def test_get_config(hass, websocket_client): - """ Test get_config command.""" + """Test get_config command.""" websocket_client.send_json({ 'id': 5, 'type': wapi.TYPE_GET_CONFIG, @@ -269,7 +270,7 @@ def test_get_config(hass, websocket_client): @asyncio.coroutine def test_get_panels(hass, websocket_client): - """ Test get_panels command.""" + """Test get_panels command.""" frontend.register_built_in_panel(hass, 'map', 'Map', 'mdi:account-location') @@ -287,7 +288,7 @@ def test_get_panels(hass, websocket_client): @asyncio.coroutine def test_ping(websocket_client): - """ Test get_panels command.""" + """Test get_panels command.""" websocket_client.send_json({ 'id': 5, 'type': wapi.TYPE_PING, diff --git a/tests/util/test_async.py b/tests/util/test_async.py index f88887e3c6e..a3da7e7f4e1 100644 --- a/tests/util/test_async.py +++ b/tests/util/test_async.py @@ -86,6 +86,7 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase): """Test case for asyncio.run_coroutine_threadsafe.""" def setUp(self): + """Test setup method.""" self.loop = asyncio.new_event_loop() self.set_event_loop(self.loop) # Will cleanup properly @@ -126,16 +127,14 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase): self.assertEqual(result, 3) def test_run_coroutine_threadsafe_with_exception(self): - """Test coroutine submission from a thread to an event loop - when an exception is raised.""" + """Test coroutine submission from thread to event loop on exception.""" future = self.loop.run_in_executor(None, self.target, True) with self.assertRaises(RuntimeError) as exc_context: self.loop.run_until_complete(future) self.assertIn("Fail!", exc_context.exception.args) def test_run_coroutine_threadsafe_with_timeout(self): - """Test coroutine submission from a thread to an event loop - when a timeout is raised.""" + """Test coroutine submission from thread to event loop on timeout.""" callback = lambda: self.target(timeout=0) # noqa future = self.loop.run_in_executor(None, callback) with self.assertRaises(asyncio.TimeoutError): @@ -146,8 +145,7 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase): self.assertTrue(task.done()) def test_run_coroutine_threadsafe_task_cancelled(self): - """Test coroutine submission from a tread to an event loop - when the task is cancelled.""" + """Test coroutine submission from tread to event loop on cancel.""" callback = lambda: self.target(cancel=True) # noqa future = self.loop.run_in_executor(None, callback) with self.assertRaises(asyncio.CancelledError): From cf714f42dfa19985880a25344316b5f3e8abb6af Mon Sep 17 00:00:00 2001 From: Brent Hughes Date: Wed, 28 Dec 2016 23:21:29 -0600 Subject: [PATCH 044/189] Added Ledenet protocol support to flux_led (#5097) * Added Ledenet protocol support to flux_led * Made the protocol config lowercase --- homeassistant/components/light/flux_led.py | 12 +++++++++--- requirements_all.txt | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/light/flux_led.py b/homeassistant/components/light/flux_led.py index a5474612496..43c5ada9b8d 100644 --- a/homeassistant/components/light/flux_led.py +++ b/homeassistant/components/light/flux_led.py @@ -10,15 +10,15 @@ import random import voluptuous as vol -from homeassistant.const import CONF_DEVICES, CONF_NAME +from homeassistant.const import CONF_DEVICES, CONF_NAME, CONF_PROTOCOL from homeassistant.components.light import ( ATTR_BRIGHTNESS, ATTR_RGB_COLOR, ATTR_EFFECT, EFFECT_RANDOM, SUPPORT_BRIGHTNESS, SUPPORT_EFFECT, SUPPORT_RGB_COLOR, Light, PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['https://github.com/Danielhiversen/flux_led/archive/0.10.zip' - '#flux_led==0.10'] +REQUIREMENTS = ['https://github.com/Danielhiversen/flux_led/archive/0.11.zip' + '#flux_led==0.11'] _LOGGER = logging.getLogger(__name__) @@ -34,6 +34,8 @@ DEVICE_SCHEMA = vol.Schema({ vol.Optional(CONF_NAME): cv.string, vol.Optional(ATTR_MODE, default='rgbw'): vol.All(cv.string, vol.In(['rgbw', 'rgb'])), + vol.Optional(CONF_PROTOCOL, default=None): + vol.All(cv.string, vol.In(['ledenet'])), }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -51,6 +53,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): device = {} device['name'] = device_config[CONF_NAME] device['ipaddr'] = ipaddr + device[CONF_PROTOCOL] = device_config[CONF_PROTOCOL] device[ATTR_MODE] = device_config[ATTR_MODE] light = FluxLight(device) if light.is_valid: @@ -87,11 +90,14 @@ class FluxLight(Light): self._name = device['name'] self._ipaddr = device['ipaddr'] + self._protocol = device[CONF_PROTOCOL] self._mode = device[ATTR_MODE] self.is_valid = True self._bulb = None try: self._bulb = flux_led.WifiLedBulb(self._ipaddr) + if self._protocol: + self._bulb.setProtocol(self._protocol) except socket.error: self.is_valid = False _LOGGER.error( diff --git a/requirements_all.txt b/requirements_all.txt index cbaa90150d3..b7d140b4492 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -178,7 +178,7 @@ hikvision==0.4 http://github.com/technicalpickles/python-nest/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip#python-nest==3.0.3 # homeassistant.components.light.flux_led -https://github.com/Danielhiversen/flux_led/archive/0.10.zip#flux_led==0.10 +https://github.com/Danielhiversen/flux_led/archive/0.11.zip#flux_led==0.11 # homeassistant.components.switch.tplink https://github.com/GadgetReactor/pyHS100/archive/45fc3548882628bcde3e3d365db341849457bef2.zip#pyHS100==0.2.2 From aaff8d8602824bee79f53c019c6eb8f63fd0e698 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Thu, 29 Dec 2016 11:08:11 +0200 Subject: [PATCH 045/189] Qwikswitch library PyPi update (#5099) --- homeassistant/components/qwikswitch.py | 3 +-- requirements_all.txt | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/qwikswitch.py b/homeassistant/components/qwikswitch.py index bb10d72b45b..2e01d91f50f 100644 --- a/homeassistant/components/qwikswitch.py +++ b/homeassistant/components/qwikswitch.py @@ -15,8 +15,7 @@ from homeassistant.components.light import (ATTR_BRIGHTNESS, from homeassistant.components.switch import SwitchDevice DOMAIN = 'qwikswitch' -REQUIREMENTS = ['https://github.com/kellerza/pyqwikswitch/archive/v0.4.zip' - '#pyqwikswitch==0.4'] +REQUIREMENTS = ['pyqwikswitch==0.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index b7d140b4492..f57865790ef 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -221,9 +221,6 @@ https://github.com/jabesq/pybotvac/archive/v0.0.1.zip#pybotvac==0.0.1 # homeassistant.components.sensor.sabnzbd https://github.com/jamespcole/home-assistant-nzb-clients/archive/616cad59154092599278661af17e2a9f2cf5e2a9.zip#python-sabnzbd==0.1 -# homeassistant.components.qwikswitch -https://github.com/kellerza/pyqwikswitch/archive/v0.4.zip#pyqwikswitch==0.4 - # homeassistant.components.media_player.russound_rnet https://github.com/laf/russound/archive/0.1.6.zip#russound==0.1.6 @@ -451,6 +448,9 @@ pynx584==0.2 # homeassistant.components.weather.openweathermap pyowm==2.6.0 +# homeassistant.components.qwikswitch +pyqwikswitch==0.4 + # homeassistant.components.switch.acer_projector pyserial==3.1.1 From 6892048de0183627e2bd30bfaf2195125978fb77 Mon Sep 17 00:00:00 2001 From: Gopal Date: Thu, 29 Dec 2016 18:19:11 +0530 Subject: [PATCH 046/189] Facebook Notify Started --- homeassistant/components/notify/facebook.py | 61 +++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 homeassistant/components/notify/facebook.py diff --git a/homeassistant/components/notify/facebook.py b/homeassistant/components/notify/facebook.py new file mode 100644 index 00000000000..bf5bf9cf195 --- /dev/null +++ b/homeassistant/components/notify/facebook.py @@ -0,0 +1,61 @@ +""" +Facebook platform for notify component. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/notify.facebook/ +""" +import logging + +import requests + +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.notify import ( + PLATFORM_SCHEMA, BaseNotificationService) + +_LOGGER = logging.getLogger(__name__) + +CONF_ID = 'id' +CONF_PHONE_NUMBER = 'phone_number' +CONF_PAGE_ACCESS_TOKEN = 'page_access_token' +BASE_URL = 'https://graph.facebook.com/v2.6/me/messages' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_PHONE_NUMBER): cv.string, + vol.Required(CONF_PAGE_ACCESS_TOKEN): cv.string, +}) + + +def get_service(hass, config): + """Get the Twitter notification service.""" + return FacebookNotificationService( + config[CONF_PHONE_NUMBER], config[CONF_PAGE_ACCESS_TOKEN] + ) + + +class FacebookNotificationService(BaseNotificationService): + """Implementation of a notification service for the Twitter service.""" + + def __init__(self, id, access_token): + """Initialize the service.""" + self.user_id = id + self.page_access_token = access_token + + def send_message(self, message="", **kwargs): + """Send some message.""" + payload = {'access_token': self.page_access_token} + body = { + "recipient": {"phone_number": self.user_id}, + "message": {"text": message} + } + import json + resp = requests.post(BASE_URL, data=json.dumps(body), params=payload, + headers={'Content-Type': 'application/json'}) + if resp.status_code != 200: + obj = resp.json() + error_message = obj['error']['message'] + error_code = obj['error']['code'] + _LOGGER.error("Error %s : %s (Code %s)", resp.status_code, + error_message, + error_code) From a2f17cccbbf59b6c3b3bcfd93c18e0867cb63e69 Mon Sep 17 00:00:00 2001 From: Jesse Newland Date: Thu, 29 Dec 2016 10:26:23 -0600 Subject: [PATCH 047/189] Replace dots in Alexa built-in intent slots w/ underscores (#5092) * Replace dots in built-in intent slots w/ underscores * Add a built-in intent test --- homeassistant/components/alexa.py | 9 +++-- tests/components/test_alexa.py | 65 +++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/alexa.py b/homeassistant/components/alexa.py index 9bd0d783fee..59d2ec8852a 100644 --- a/homeassistant/components/alexa.py +++ b/homeassistant/components/alexa.py @@ -203,11 +203,12 @@ class AlexaResponse(object): self.reprompt = None self.session_attributes = {} self.should_end_session = True + self.variables = {} if intent is not None and 'slots' in intent: - self.variables = {key: value['value'] for key, value - in intent['slots'].items() if 'value' in value} - else: - self.variables = {} + for key, value in intent['slots'].items(): + if 'value' in value: + underscored_key = key.replace('.', '_') + self.variables[underscored_key] = value['value'] def add_card(self, card_type, title, content): """Add a card to the response.""" diff --git a/tests/components/test_alexa.py b/tests/components/test_alexa.py index 41e7474974d..fe980bf05b3 100644 --- a/tests/components/test_alexa.py +++ b/tests/components/test_alexa.py @@ -101,6 +101,12 @@ def setUpModule(): "text": "You told us your sign is {{ ZodiacSign }}.", } }, + "AMAZON.PlaybackAction": { + "speech": { + "type": "plaintext", + "text": "Playing {{ object_byArtist_name }}.", + } + }, "CallServiceIntent": { "speech": { "type": "plaintext", @@ -376,6 +382,65 @@ class TestAlexa(unittest.TestCase): self.assertEqual(200, req.status_code) self.assertEqual("", req.text) + def test_intent_from_built_in_intent_library(self): + """Test intents from the Built-in Intent Library.""" + data = { + 'request': { + 'intent': { + 'name': 'AMAZON.PlaybackAction', + 'slots': { + 'object.byArtist.name': { + 'name': 'object.byArtist.name', + 'value': 'the shins' + }, + 'object.composer.name': { + 'name': 'object.composer.name' + }, + 'object.contentSource': { + 'name': 'object.contentSource' + }, + 'object.era': { + 'name': 'object.era' + }, + 'object.genre': { + 'name': 'object.genre' + }, + 'object.name': { + 'name': 'object.name' + }, + 'object.owner.name': { + 'name': 'object.owner.name' + }, + 'object.select': { + 'name': 'object.select' + }, + 'object.sort': { + 'name': 'object.sort' + }, + 'object.type': { + 'name': 'object.type', + 'value': 'music' + } + } + }, + 'timestamp': '2016-12-14T23:23:37Z', + 'type': 'IntentRequest', + 'requestId': REQUEST_ID, + + }, + 'session': { + 'sessionId': SESSION_ID, + 'application': { + 'applicationId': APPLICATION_ID + } + } + } + req = _intent_req(data) + self.assertEqual(200, req.status_code) + text = req.json().get("response", {}).get("outputSpeech", + {}).get("text") + self.assertEqual("Playing the shins.", text) + def test_flash_briefing_invalid_id(self): """Test an invalid Flash Briefing ID.""" req = _flash_briefing_req() From 0ecd185f0df27c33f8987c623b5b1a18a6a9a7c1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 29 Dec 2016 17:27:58 +0100 Subject: [PATCH 048/189] Bugfix close async log handler (#5086) --- homeassistant/util/logging.py | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/homeassistant/util/logging.py b/homeassistant/util/logging.py index 736fee0d1b3..095e906efe1 100644 --- a/homeassistant/util/logging.py +++ b/homeassistant/util/logging.py @@ -55,18 +55,11 @@ class AsyncHandler(object): When blocking=True, will wait till closed. """ - if not self._thread.is_alive(): - return yield from self._queue.put(None) if blocking: - # Python 3.4.4+ - # pylint: disable=no-member - if hasattr(self._queue, 'join'): - yield from self._queue.join() - else: - while not self._queue.empty(): - yield from asyncio.sleep(0, loop=self.loop) + while self._thread.is_alive(): + yield from asyncio.sleep(0, loop=self.loop) def emit(self, record): """Process a record.""" @@ -85,23 +78,15 @@ class AsyncHandler(object): def _process(self): """Process log in a thread.""" - support_join = hasattr(self._queue, 'task_done') - while True: record = run_coroutine_threadsafe( self._queue.get(), self.loop).result() - # pylint: disable=no-member - if record is None: self.handler.close() - if support_join: - self.loop.call_soon_threadsafe(self._queue.task_done) return self.handler.emit(record) - if support_join: - self.loop.call_soon_threadsafe(self._queue.task_done) def createLock(self): """Ignore lock stuff.""" From 9e66755baf39480d415c15238c5ab8cc25af1318 Mon Sep 17 00:00:00 2001 From: Thibault Cohen Date: Fri, 30 Dec 2016 02:51:37 -0500 Subject: [PATCH 049/189] Fix proximity issue (#5109) --- homeassistant/components/proximity.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homeassistant/components/proximity.py b/homeassistant/components/proximity.py index 60a0a8c547b..73e72149b37 100644 --- a/homeassistant/components/proximity.py +++ b/homeassistant/components/proximity.py @@ -142,6 +142,10 @@ class Proximity(Entity): for device in self.proximity_devices: device_state = self.hass.states.get(device) + if device_state is None: + devices_to_calculate = True + continue + if device_state.state not in self.ignored_zones: devices_to_calculate = True From d04ee666693a90be13ba917ae049350d357906d1 Mon Sep 17 00:00:00 2001 From: Felix Date: Fri, 30 Dec 2016 11:16:34 +0100 Subject: [PATCH 050/189] Fixes moldindicator sensor after switch to asyncio (#5038) --- homeassistant/components/sensor/mold_indicator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/sensor/mold_indicator.py b/homeassistant/components/sensor/mold_indicator.py index 0457d8a9fa2..61cdae5fb36 100644 --- a/homeassistant/components/sensor/mold_indicator.py +++ b/homeassistant/components/sensor/mold_indicator.py @@ -163,7 +163,7 @@ class MoldIndicator(Entity): self._indoor_hum = MoldIndicator._update_hum_sensor(new_state) self.update() - self.update_ha_state() + self.schedule_update_ha_state() def _calc_dewpoint(self): """Calculate the dewpoint for the indoor air.""" From 227fb29cabab708f690e30beabdb4740c219d78c Mon Sep 17 00:00:00 2001 From: Gopal Date: Sat, 31 Dec 2016 09:59:44 +0530 Subject: [PATCH 051/189] Facebook notify updated --- homeassistant/components/notify/facebook.py | 52 +++++++++++---------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/notify/facebook.py b/homeassistant/components/notify/facebook.py index bf5bf9cf195..630d5453daf 100644 --- a/homeassistant/components/notify/facebook.py +++ b/homeassistant/components/notify/facebook.py @@ -12,50 +12,52 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.notify import ( - PLATFORM_SCHEMA, BaseNotificationService) + ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService) _LOGGER = logging.getLogger(__name__) -CONF_ID = 'id' -CONF_PHONE_NUMBER = 'phone_number' CONF_PAGE_ACCESS_TOKEN = 'page_access_token' BASE_URL = 'https://graph.facebook.com/v2.6/me/messages' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_PHONE_NUMBER): cv.string, vol.Required(CONF_PAGE_ACCESS_TOKEN): cv.string, }) def get_service(hass, config): - """Get the Twitter notification service.""" - return FacebookNotificationService( - config[CONF_PHONE_NUMBER], config[CONF_PAGE_ACCESS_TOKEN] - ) + """Get the Facebook notification service.""" + return FacebookNotificationService(config[CONF_PAGE_ACCESS_TOKEN]) class FacebookNotificationService(BaseNotificationService): - """Implementation of a notification service for the Twitter service.""" + """Implementation of a notification service for the Facebook service.""" - def __init__(self, id, access_token): + def __init__(self, access_token): """Initialize the service.""" - self.user_id = id self.page_access_token = access_token def send_message(self, message="", **kwargs): """Send some message.""" payload = {'access_token': self.page_access_token} - body = { - "recipient": {"phone_number": self.user_id}, - "message": {"text": message} - } - import json - resp = requests.post(BASE_URL, data=json.dumps(body), params=payload, - headers={'Content-Type': 'application/json'}) - if resp.status_code != 200: - obj = resp.json() - error_message = obj['error']['message'] - error_code = obj['error']['code'] - _LOGGER.error("Error %s : %s (Code %s)", resp.status_code, - error_message, - error_code) + targets = kwargs.get(ATTR_TARGET) + + if not targets: + _LOGGER.info("At least 1 target is required") + return + + for target in targets: + body = { + "recipient": {"phone_number": target}, + "message": {"text": message} + } + import json + resp = requests.post(BASE_URL, data=json.dumps(body), + params=payload, + headers={'Content-Type': 'application/json'}) + if resp.status_code != 200: + obj = resp.json() + error_message = obj['error']['message'] + error_code = obj['error']['code'] + _LOGGER.error("Error %s : %s (Code %s)", resp.status_code, + error_message, + error_code) From e89aa6b2d684045b379e77a517c07b9f15b844fe Mon Sep 17 00:00:00 2001 From: Gopal Date: Sat, 31 Dec 2016 10:11:30 +0530 Subject: [PATCH 052/189] File added to coveragerc --- .coveragerc | 1 + 1 file changed, 1 insertion(+) diff --git a/.coveragerc b/.coveragerc index 34531651358..cb0b70ac84b 100644 --- a/.coveragerc +++ b/.coveragerc @@ -219,6 +219,7 @@ omit = homeassistant/components/notify/aws_lambda.py homeassistant/components/notify/aws_sns.py homeassistant/components/notify/aws_sqs.py + homeassistant/components/notify/facebook.py homeassistant/components/notify/free_mobile.py homeassistant/components/notify/gntp.py homeassistant/components/notify/group.py From 01be70cda9febb22d573a723703328f0b0996462 Mon Sep 17 00:00:00 2001 From: Mark Date: Sun, 1 Jan 2017 19:40:34 +0000 Subject: [PATCH 053/189] Philio 3-in-1 Gen 4 zwave sensor needs the no-off-event workaround. (#5120) --- homeassistant/components/binary_sensor/zwave.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/binary_sensor/zwave.py b/homeassistant/components/binary_sensor/zwave.py index e99a2625ea2..b48b4578af9 100644 --- a/homeassistant/components/binary_sensor/zwave.py +++ b/homeassistant/components/binary_sensor/zwave.py @@ -20,6 +20,8 @@ DEPENDENCIES = [] PHILIO = 0x013c PHILIO_SLIM_SENSOR = 0x0002 PHILIO_SLIM_SENSOR_MOTION = (PHILIO, PHILIO_SLIM_SENSOR, 0) +PHILIO_3_IN_1_SENSOR_GEN_4 = 0x000d +PHILIO_3_IN_1_SENSOR_GEN_4_MOTION = (PHILIO, PHILIO_3_IN_1_SENSOR_GEN_4, 0) WENZHOU = 0x0118 WENZHOU_SLIM_SENSOR_MOTION = (WENZHOU, PHILIO_SLIM_SENSOR, 0) @@ -27,6 +29,7 @@ WORKAROUND_NO_OFF_EVENT = 'trigger_no_off_event' DEVICE_MAPPINGS = { PHILIO_SLIM_SENSOR_MOTION: WORKAROUND_NO_OFF_EVENT, + PHILIO_3_IN_1_SENSOR_GEN_4_MOTION: WORKAROUND_NO_OFF_EVENT, WENZHOU_SLIM_SENSOR_MOTION: WORKAROUND_NO_OFF_EVENT, } From 7fbf68df35808a1d2c4f57f50eb8f2887bedec4a Mon Sep 17 00:00:00 2001 From: andrey-git Date: Sun, 1 Jan 2017 22:10:45 +0200 Subject: [PATCH 054/189] Add print_config_parameter service to Z-Wave (#5121) * Add print_config_param service to z-wave * Add print_config_parameter service to z-wave * Add print_config_parameter service to z-wave * Fix typos * Fix typos * Fix typo --- homeassistant/components/zwave/__init__.py | 18 ++++++++++++++++++ homeassistant/components/zwave/const.py | 1 + homeassistant/components/zwave/services.yaml | 9 +++++++++ 3 files changed, 28 insertions(+) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 7c4d5e02879..c0666f77c73 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -136,6 +136,11 @@ SET_CONFIG_PARAMETER_SCHEMA = vol.Schema({ vol.Required(const.ATTR_CONFIG_VALUE): vol.Coerce(int), vol.Optional(const.ATTR_CONFIG_SIZE): vol.Coerce(int) }) +PRINT_CONFIG_PARAMETER_SCHEMA = vol.Schema({ + vol.Required(const.ATTR_NODE_ID): vol.Coerce(int), + vol.Required(const.ATTR_CONFIG_PARAMETER): vol.Coerce(int), +}) + CHANGE_ASSOCIATION_SCHEMA = vol.Schema({ vol.Required(const.ATTR_ASSOCIATION): cv.string, vol.Required(const.ATTR_NODE_ID): vol.Coerce(int), @@ -463,6 +468,14 @@ def setup(hass, config): _LOGGER.info("Setting config parameter %s on Node %s " "with value %s and size=%s", param, node_id, value, size) + def print_config_parameter(service): + """Print a config parameter from a node.""" + node_id = service.data.get(const.ATTR_NODE_ID) + node = NETWORK.nodes[node_id] + param = service.data.get(const.ATTR_CONFIG_PARAMETER) + _LOGGER.info("Config parameter %s on Node %s : %s", + param, node_id, get_config_value(node, param)) + def change_association(service): """Change an association in the zwave network.""" association_type = service.data.get(const.ATTR_ASSOCIATION) @@ -548,6 +561,11 @@ def setup(hass, config): descriptions[ const.SERVICE_SET_CONFIG_PARAMETER], schema=SET_CONFIG_PARAMETER_SCHEMA) + hass.services.register(DOMAIN, const.SERVICE_PRINT_CONFIG_PARAMETER, + print_config_parameter, + descriptions[ + const.SERVICE_PRINT_CONFIG_PARAMETER], + schema=PRINT_CONFIG_PARAMETER_SCHEMA) hass.services.register(DOMAIN, const.SERVICE_CHANGE_ASSOCIATION, change_association, descriptions[ diff --git a/homeassistant/components/zwave/const.py b/homeassistant/components/zwave/const.py index d30cb6c5f92..b5dbf2f402a 100644 --- a/homeassistant/components/zwave/const.py +++ b/homeassistant/components/zwave/const.py @@ -24,6 +24,7 @@ SERVICE_HEAL_NETWORK = "heal_network" SERVICE_SOFT_RESET = "soft_reset" SERVICE_TEST_NETWORK = "test_network" SERVICE_SET_CONFIG_PARAMETER = "set_config_parameter" +SERVICE_PRINT_CONFIG_PARAMETER = "print_config_parameter" SERVICE_STOP_NETWORK = "stop_network" SERVICE_START_NETWORK = "start_network" SERVICE_RENAME_NODE = "rename_node" diff --git a/homeassistant/components/zwave/services.yaml b/homeassistant/components/zwave/services.yaml index cfe2edab5c9..2a44096ce0e 100644 --- a/homeassistant/components/zwave/services.yaml +++ b/homeassistant/components/zwave/services.yaml @@ -38,6 +38,15 @@ set_config_parameter: description: Value to set on parameter. (integer). size: description: (Optional) The size of the value. Defaults to 2. + +print_config_parameter: + description: Prints a Z-Wave node config parameter value to log. + fields: + node_id: + description: Node id of the device to print the parameter from (integer). + parameter: + description: Parameter number to print (integer). + start_network: description: Start the Z-Wave network. This might take a while, depending on how big your Z-Wave network is. From a8a98f258547c6bb209e3059fbfdce92fc5d7537 Mon Sep 17 00:00:00 2001 From: jtscott Date: Mon, 2 Jan 2017 03:17:52 -0700 Subject: [PATCH 055/189] [climate] Fix typo in services.yaml (#5136) --- homeassistant/components/climate/services.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/climate/services.yaml b/homeassistant/components/climate/services.yaml index ac8e2ab1dea..801052b31ff 100644 --- a/homeassistant/components/climate/services.yaml +++ b/homeassistant/components/climate/services.yaml @@ -76,7 +76,7 @@ set_operation_mode: fields: entity_id: description: Name(s) of entities to change - example: 'climet.nest' + example: 'climate.nest' operation_mode: description: New value of operation mode From 9af1e0ccf3512b5fad84e01f3eb18b863ff46569 Mon Sep 17 00:00:00 2001 From: pavoni Date: Mon, 2 Jan 2017 14:15:38 +0000 Subject: [PATCH 056/189] Bump pyloopenergy to catch SSL exception. --- homeassistant/components/sensor/loopenergy.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/loopenergy.py b/homeassistant/components/sensor/loopenergy.py index c7217044c26..d537d8067cb 100644 --- a/homeassistant/components/sensor/loopenergy.py +++ b/homeassistant/components/sensor/loopenergy.py @@ -17,7 +17,7 @@ from homeassistant.const import EVENT_HOMEASSISTANT_STOP _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['pyloopenergy==0.0.15'] +REQUIREMENTS = ['pyloopenergy==0.0.16'] CONF_ELEC = 'electricity' CONF_GAS = 'gas' diff --git a/requirements_all.txt b/requirements_all.txt index f57865790ef..cb04ecbab75 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -426,7 +426,7 @@ pylast==1.6.0 pylitejet==0.1 # homeassistant.components.sensor.loopenergy -pyloopenergy==0.0.15 +pyloopenergy==0.0.16 # homeassistant.components.mochad pymochad==0.1.1 From 23f16bb68f18d5675aebce4854de7e265b9ced30 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Mon, 2 Jan 2017 18:45:10 +0100 Subject: [PATCH 057/189] Catch RuntimeError (#5134) --- homeassistant/components/zwave/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index c0666f77c73..40675c8b91b 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -621,7 +621,12 @@ class ZWaveDeviceEntity: const.ATTR_NODE_ID: self._value.node.node_id, } - battery_level = self._value.node.get_battery_level() + try: + battery_level = self._value.node.get_battery_level() + except RuntimeError: + # If we get an runtime error the dict has changed while + # we was looking for a value, just do it again + battery_level = self._value.node.get_battery_level() if battery_level is not None: attrs[ATTR_BATTERY_LEVEL] = battery_level From a7cc7ce476b2ed00761637cbe334db43b69ff687 Mon Sep 17 00:00:00 2001 From: andrey-git Date: Mon, 2 Jan 2017 19:45:44 +0200 Subject: [PATCH 058/189] Clean up DEFAULT_DEBUG constant in zwave (#5138) Nice :+1: --- homeassistant/components/zwave/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 40675c8b91b..be4add384c3 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -38,7 +38,7 @@ CONF_REFRESH_DELAY = 'delay' DEFAULT_CONF_AUTOHEAL = True DEFAULT_CONF_USB_STICK_PATH = '/zwaveusbstick' DEFAULT_POLLING_INTERVAL = 60000 -DEFAULT_DEBUG = True +DEFAULT_DEBUG = False DEFAULT_CONF_IGNORED = False DEFAULT_CONF_REFRESH_VALUE = False DEFAULT_CONF_REFRESH_DELAY = 2 @@ -165,7 +165,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_CONFIG_PATH): cv.string, vol.Optional(CONF_CUSTOMIZE, default={}): vol.Schema({cv.string: CUSTOMIZE_SCHEMA}), - vol.Optional(CONF_DEBUG, default=False): cv.boolean, + vol.Optional(CONF_DEBUG, default=DEFAULT_DEBUG): cv.boolean, vol.Optional(CONF_POLLING_INTERVAL, default=DEFAULT_POLLING_INTERVAL): cv.positive_int, vol.Optional(CONF_USB_STICK_PATH, default=DEFAULT_CONF_USB_STICK_PATH): From 5c006cd2d272a17622fc8e8236c3ef61bd2d4df8 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Mon, 2 Jan 2017 18:53:46 +0100 Subject: [PATCH 059/189] Prevent Homeassistant to create a segfault with OZW (#5085) --- homeassistant/components/zwave/__init__.py | 26 ++++++++++++++++++---- homeassistant/components/zwave/const.py | 1 + 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index be4add384c3..82c116aaa5c 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -462,11 +462,29 @@ def setup(hass, config): node_id = service.data.get(const.ATTR_NODE_ID) node = NETWORK.nodes[node_id] param = service.data.get(const.ATTR_CONFIG_PARAMETER) - value = service.data.get(const.ATTR_CONFIG_VALUE) + selection = service.data.get(const.ATTR_CONFIG_VALUE) size = service.data.get(const.ATTR_CONFIG_SIZE, 2) - node.set_config_param(param, value, size) - _LOGGER.info("Setting config parameter %s on Node %s " - "with value %s and size=%s", param, node_id, value, size) + i = 0 + for value in ( + node.get_values(class_id=const.COMMAND_CLASS_CONFIGURATION) + .values()): + if value.index == param and value.type == const.TYPE_LIST: + _LOGGER.debug('Values for parameter %s: %s', param, + value.data_items) + i = len(value.data_items) - 1 + if i == 0: + node.set_config_param(param, selection, size) + else: + if selection > i: + _LOGGER.info('Config parameter selection does not exist!' + ' Please check zwcfg_[home_id].xml in' + ' your homeassistant config directory. ' + ' Available selections are 0 to %s', i) + return + node.set_config_param(param, selection, size) + _LOGGER.info('Setting config parameter %s on Node %s ' + 'with selection %s and size=%s', param, node_id, + selection, size) def print_config_parameter(service): """Print a config parameter from a node.""" diff --git a/homeassistant/components/zwave/const.py b/homeassistant/components/zwave/const.py index b5dbf2f402a..2350b4bee75 100644 --- a/homeassistant/components/zwave/const.py +++ b/homeassistant/components/zwave/const.py @@ -302,3 +302,4 @@ TYPE_BYTE = "Byte" TYPE_BOOL = "Bool" TYPE_DECIMAL = "Decimal" TYPE_INT = "Int" +TYPE_LIST = "List" From 9c6a985c56d6509f880c81d3664bccf54685d261 Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Mon, 2 Jan 2017 18:55:56 +0100 Subject: [PATCH 060/189] [zwave]Use schedule_ha_state and add debug message (#5143) * Use schedule_ha_state and add debug message * Logger not defined --- homeassistant/components/binary_sensor/zwave.py | 1 + homeassistant/components/climate/zwave.py | 2 +- homeassistant/components/cover/zwave.py | 8 ++++---- homeassistant/components/light/zwave.py | 5 +++-- homeassistant/components/lock/zwave.py | 1 + homeassistant/components/sensor/zwave.py | 6 +++++- homeassistant/components/switch/zwave.py | 6 +++++- 7 files changed, 20 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/binary_sensor/zwave.py b/homeassistant/components/binary_sensor/zwave.py index b48b4578af9..32de0f653a7 100644 --- a/homeassistant/components/binary_sensor/zwave.py +++ b/homeassistant/components/binary_sensor/zwave.py @@ -99,6 +99,7 @@ class ZWaveBinarySensor(BinarySensorDevice, zwave.ZWaveDeviceEntity, Entity): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) self.schedule_update_ha_state() diff --git a/homeassistant/components/climate/zwave.py b/homeassistant/components/climate/zwave.py index eb3aca7be5b..f7bbe341cf7 100755 --- a/homeassistant/components/climate/zwave.py +++ b/homeassistant/components/climate/zwave.py @@ -89,9 +89,9 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) self.update_properties() self.schedule_update_ha_state() - _LOGGER.debug("Value changed on network %s", value) def update_properties(self): """Callback on data change for the registered node/value pair.""" diff --git a/homeassistant/components/cover/zwave.py b/homeassistant/components/cover/zwave.py index a190e69bf53..89947e3e4fc 100644 --- a/homeassistant/components/cover/zwave.py +++ b/homeassistant/components/cover/zwave.py @@ -78,9 +78,9 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) self.update_properties() - self.update_ha_state() - _LOGGER.debug("Value changed on network %s", value) + self.schedule_update_ha_state() def update_properties(self): """Callback on data change for the registered node/value pair.""" @@ -170,9 +170,9 @@ class ZwaveGarageDoor(zwave.ZWaveDeviceEntity, CoverDevice): def value_changed(self, value): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id: + _LOGGER.debug('Value changed for label %s', self._value.label) self._state = value.data - self.update_ha_state() - _LOGGER.debug("Value changed on network %s", value) + self.schedule_update_ha_state() @property def is_closed(self): diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index de471db4957..30fa0611e45 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -127,6 +127,7 @@ class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) if self._refresh_value: if self._refreshing: self._refreshing = False @@ -142,10 +143,10 @@ class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): self._timer = Timer(self._delay, _refresh_value) self._timer.start() - self.update_ha_state() + self.schedule_update_ha_state() else: self.update_properties() - self.update_ha_state() + self.schedule_update_ha_state() @property def brightness(self): diff --git a/homeassistant/components/lock/zwave.py b/homeassistant/components/lock/zwave.py index d359cacba8f..17fc30e93cf 100644 --- a/homeassistant/components/lock/zwave.py +++ b/homeassistant/components/lock/zwave.py @@ -76,6 +76,7 @@ class ZwaveLock(zwave.ZWaveDeviceEntity, LockDevice): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: + _LOGGER.debug('Value changed for label %s', self._value.label) self.update_properties() self.schedule_update_ha_state() diff --git a/homeassistant/components/sensor/zwave.py b/homeassistant/components/sensor/zwave.py index 3a70e0d521f..67e2801974f 100644 --- a/homeassistant/components/sensor/zwave.py +++ b/homeassistant/components/sensor/zwave.py @@ -4,6 +4,7 @@ Interfaces with Z-Wave sensors. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.zwave/ """ +import logging # Because we do not compile openzwave on CI # pylint: disable=import-error from homeassistant.components.sensor import DOMAIN @@ -11,6 +12,8 @@ from homeassistant.components import zwave from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT from homeassistant.helpers.entity import Entity +_LOGGER = logging.getLogger(__name__) + def setup_platform(hass, config, add_devices, discovery_info=None): """Setup Z-Wave sensors.""" @@ -72,7 +75,8 @@ class ZWaveSensor(zwave.ZWaveDeviceEntity, Entity): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id or \ self._value.node == value.node: - self.update_ha_state() + _LOGGER.debug('Value changed for label %s', self._value.label) + self.schedule_update_ha_state() class ZWaveMultilevelSensor(ZWaveSensor): diff --git a/homeassistant/components/switch/zwave.py b/homeassistant/components/switch/zwave.py index 4ba9cff378e..2f409f94ef3 100644 --- a/homeassistant/components/switch/zwave.py +++ b/homeassistant/components/switch/zwave.py @@ -4,11 +4,14 @@ Z-Wave platform that handles simple binary switches. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/switch.zwave/ """ +import logging # Because we do not compile openzwave on CI # pylint: disable=import-error from homeassistant.components.switch import DOMAIN, SwitchDevice from homeassistant.components import zwave +_LOGGER = logging.getLogger(__name__) + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): @@ -46,8 +49,9 @@ class ZwaveSwitch(zwave.ZWaveDeviceEntity, SwitchDevice): def _value_changed(self, value): """Called when a value has changed on the network.""" if self._value.value_id == value.value_id: + _LOGGER.debug('Value changed for label %s', self._value.label) self._state = value.data - self.update_ha_state() + self.schedule_update_ha_state() @property def is_on(self): From b2371c66147f7c2e0e2148560af1c5fd6c0774a0 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 2 Jan 2017 20:50:42 +0100 Subject: [PATCH 061/189] Update device_traker for async platforms (#5102) Async DeviceScanner object, migrate to async, cleanups --- .../components/device_tracker/__init__.py | 71 +++++++++++++++---- .../components/device_tracker/actiontec.py | 5 +- .../components/device_tracker/aruba.py | 5 +- .../components/device_tracker/asuswrt.py | 5 +- .../components/device_tracker/automatic.py | 4 +- .../components/device_tracker/bbox.py | 4 +- .../device_tracker/bluetooth_le_tracker.py | 9 +-- .../device_tracker/bt_home_hub_5.py | 5 +- .../components/device_tracker/cisco_ios.py | 5 +- .../components/device_tracker/ddwrt.py | 5 +- .../components/device_tracker/fritz.py | 5 +- .../components/device_tracker/icloud.py | 4 +- .../components/device_tracker/locative.py | 5 +- .../components/device_tracker/luci.py | 5 +- .../components/device_tracker/netgear.py | 5 +- .../components/device_tracker/nmap_tracker.py | 5 +- .../components/device_tracker/snmp.py | 5 +- .../components/device_tracker/swisscom.py | 5 +- .../components/device_tracker/thomson.py | 5 +- .../components/device_tracker/tomato.py | 5 +- .../components/device_tracker/tplink.py | 5 +- .../components/device_tracker/ubus.py | 5 +- .../components/device_tracker/unifi.py | 5 +- .../components/device_tracker/volvooncall.py | 7 +- tests/components/device_tracker/test_init.py | 3 +- .../custom_components/device_tracker/test.py | 4 +- 26 files changed, 124 insertions(+), 72 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 902ff509b3e..30c9fbe9a3a 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -8,7 +8,7 @@ import asyncio from datetime import timedelta import logging import os -from typing import Any, Sequence, Callable +from typing import Any, List, Sequence, Callable import aiohttp import async_timeout @@ -142,23 +142,34 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): if platform is None: return + _LOGGER.info("Setting up %s.%s", DOMAIN, p_type) try: - if hasattr(platform, 'get_scanner'): + scanner = None + setup = None + if hasattr(platform, 'async_get_scanner'): + scanner = yield from platform.async_get_scanner( + hass, {DOMAIN: p_config}) + elif hasattr(platform, 'get_scanner'): scanner = yield from hass.loop.run_in_executor( None, platform.get_scanner, hass, {DOMAIN: p_config}) + elif hasattr(platform, 'async_setup_scanner'): + setup = yield from platform.setup_scanner( + hass, p_config, tracker.see) + elif hasattr(platform, 'setup_scanner'): + setup = yield from hass.loop.run_in_executor( + None, platform.setup_scanner, hass, p_config, tracker.see) + else: + raise HomeAssistantError("Invalid device_tracker platform.") - if scanner is None: - _LOGGER.error('Error setting up platform %s', p_type) - return - + if scanner: yield from async_setup_scanner_platform( hass, p_config, scanner, tracker.async_see) return - ret = yield from hass.loop.run_in_executor( - None, platform.setup_scanner, hass, p_config, tracker.see) - if not ret: + if not setup: _LOGGER.error('Error setting up platform %s', p_type) + return + except Exception: # pylint: disable=broad-except _LOGGER.exception('Error setting up platform %s', p_type) @@ -526,6 +537,34 @@ class Device(Entity): yield from resp.release() +class DeviceScanner(object): + """Device scanner object.""" + + hass = None # type: HomeAssistantType + + def scan_devices(self) -> List[str]: + """Scan for devices.""" + raise NotImplementedError() + + def async_scan_devices(self) -> Any: + """Scan for devices. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor(None, self.scan_devices) + + def get_device_name(self, mac: str) -> str: + """Get device name from mac.""" + raise NotImplementedError() + + def async_get_device_name(self, mac: str) -> Any: + """Get device name from mac. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor(None, self.get_device_name, mac) + + def load_config(path: str, hass: HomeAssistantType, consider_home: timedelta): """Load devices from YAML configuration file.""" return run_coroutine_threadsafe( @@ -582,26 +621,28 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, This method is a coroutine. """ interval = config.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL) + scanner.hass = hass # Initial scan of each mac we also tell about host name for config seen = set() # type: Any - def device_tracker_scan(now: dt_util.dt.datetime): + @asyncio.coroutine + def async_device_tracker_scan(now: dt_util.dt.datetime): """Called when interval matches.""" - found_devices = scanner.scan_devices() + found_devices = yield from scanner.async_scan_devices() for mac in found_devices: if mac in seen: host_name = None else: - host_name = scanner.get_device_name(mac) + host_name = yield from scanner.async_get_device_name(mac) seen.add(mac) - hass.add_job(async_see_device(mac=mac, host_name=host_name)) + hass.async_add_job(async_see_device(mac=mac, host_name=host_name)) async_track_utc_time_change( - hass, device_tracker_scan, second=range(0, 60, interval)) + hass, async_device_tracker_scan, second=range(0, 60, interval)) - hass.async_add_job(device_tracker_scan, None) + hass.async_add_job(async_device_tracker_scan, None) def update_config(path: str, dev_id: str, device: Device): diff --git a/homeassistant/components/device_tracker/actiontec.py b/homeassistant/components/device_tracker/actiontec.py index 9583237a912..95286800b3c 100644 --- a/homeassistant/components/device_tracker/actiontec.py +++ b/homeassistant/components/device_tracker/actiontec.py @@ -14,7 +14,8 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -from homeassistant.components.device_tracker import (DOMAIN, PLATFORM_SCHEMA) +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -46,7 +47,7 @@ def get_scanner(hass, config): Device = namedtuple("Device", ["mac", "ip", "last_update"]) -class ActiontecDeviceScanner(object): +class ActiontecDeviceScanner(DeviceScanner): """This class queries a an actiontec router for connected devices.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/aruba.py b/homeassistant/components/device_tracker/aruba.py index 6383bc962a4..42e8a5b2d5c 100644 --- a/homeassistant/components/device_tracker/aruba.py +++ b/homeassistant/components/device_tracker/aruba.py @@ -12,7 +12,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -42,7 +43,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class ArubaDeviceScanner(object): +class ArubaDeviceScanner(DeviceScanner): """This class queries a Aruba Access Point for connected devices.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/asuswrt.py b/homeassistant/components/device_tracker/asuswrt.py index 4e860846f8e..be530abc9e2 100644 --- a/homeassistant/components/device_tracker/asuswrt.py +++ b/homeassistant/components/device_tracker/asuswrt.py @@ -14,7 +14,8 @@ from datetime import timedelta import voluptuous as vol -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv @@ -97,7 +98,7 @@ def get_scanner(hass, config): AsusWrtResult = namedtuple('AsusWrtResult', 'neighbors leases arp nvram') -class AsusWrtDeviceScanner(object): +class AsusWrtDeviceScanner(DeviceScanner): """This class queries a router running ASUSWRT firmware.""" # Eighth attribute needed for mode (AP mode vs router mode) diff --git a/homeassistant/components/device_tracker/automatic.py b/homeassistant/components/device_tracker/automatic.py index a07db8ec404..d47aa818673 100644 --- a/homeassistant/components/device_tracker/automatic.py +++ b/homeassistant/components/device_tracker/automatic.py @@ -11,8 +11,8 @@ import requests import voluptuous as vol -from homeassistant.components.device_tracker import (PLATFORM_SCHEMA, - ATTR_ATTRIBUTES) +from homeassistant.components.device_tracker import ( + PLATFORM_SCHEMA, ATTR_ATTRIBUTES) from homeassistant.const import CONF_USERNAME, CONF_PASSWORD import homeassistant.helpers.config_validation as cv from homeassistant.helpers.event import track_utc_time_change diff --git a/homeassistant/components/device_tracker/bbox.py b/homeassistant/components/device_tracker/bbox.py index 50864f47be1..60b9738cc71 100644 --- a/homeassistant/components/device_tracker/bbox.py +++ b/homeassistant/components/device_tracker/bbox.py @@ -9,7 +9,7 @@ import logging from datetime import timedelta import homeassistant.util.dt as dt_util -from homeassistant.components.device_tracker import DOMAIN +from homeassistant.components.device_tracker import DOMAIN, DeviceScanner from homeassistant.util import Throttle REQUIREMENTS = ['pybbox==0.0.5-alpha'] @@ -29,7 +29,7 @@ def get_scanner(hass, config): Device = namedtuple('Device', ['mac', 'name', 'ip', 'last_update']) -class BboxDeviceScanner(object): +class BboxDeviceScanner(DeviceScanner): """This class scans for devices connected to the bbox.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/bluetooth_le_tracker.py b/homeassistant/components/device_tracker/bluetooth_le_tracker.py index 5b5b9ce2411..2505d6670a0 100644 --- a/homeassistant/components/device_tracker/bluetooth_le_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_le_tracker.py @@ -5,13 +5,8 @@ from datetime import timedelta import voluptuous as vol from homeassistant.helpers.event import track_point_in_utc_time from homeassistant.components.device_tracker import ( - YAML_DEVICES, - CONF_TRACK_NEW, - CONF_SCAN_INTERVAL, - DEFAULT_SCAN_INTERVAL, - PLATFORM_SCHEMA, - load_config, - DEFAULT_TRACK_NEW + YAML_DEVICES, CONF_TRACK_NEW, CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL, + PLATFORM_SCHEMA, load_config, DEFAULT_TRACK_NEW ) import homeassistant.util as util import homeassistant.util.dt as dt_util diff --git a/homeassistant/components/device_tracker/bt_home_hub_5.py b/homeassistant/components/device_tracker/bt_home_hub_5.py index 3b4115ff355..301ec61abc2 100644 --- a/homeassistant/components/device_tracker/bt_home_hub_5.py +++ b/homeassistant/components/device_tracker/bt_home_hub_5.py @@ -16,7 +16,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST from homeassistant.util import Throttle @@ -40,7 +41,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class BTHomeHub5DeviceScanner(object): +class BTHomeHub5DeviceScanner(DeviceScanner): """This class queries a BT Home Hub 5.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/cisco_ios.py b/homeassistant/components/device_tracker/cisco_ios.py index 0d42282b17c..95319a872ae 100644 --- a/homeassistant/components/device_tracker/cisco_ios.py +++ b/homeassistant/components/device_tracker/cisco_ios.py @@ -10,7 +10,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME, \ CONF_PORT from homeassistant.util import Throttle @@ -39,7 +40,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class CiscoDeviceScanner(object): +class CiscoDeviceScanner(DeviceScanner): """This class queries a wireless router running Cisco IOS firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/ddwrt.py b/homeassistant/components/device_tracker/ddwrt.py index a67ee3d1d39..2c8a2ec4907 100644 --- a/homeassistant/components/device_tracker/ddwrt.py +++ b/homeassistant/components/device_tracker/ddwrt.py @@ -13,7 +13,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -41,7 +42,7 @@ def get_scanner(hass, config): return None -class DdWrtDeviceScanner(object): +class DdWrtDeviceScanner(DeviceScanner): """This class queries a wireless router running DD-WRT firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/fritz.py b/homeassistant/components/device_tracker/fritz.py index fd30946c919..055c3bc85c0 100644 --- a/homeassistant/components/device_tracker/fritz.py +++ b/homeassistant/components/device_tracker/fritz.py @@ -10,7 +10,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -38,7 +39,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class FritzBoxScanner(object): +class FritzBoxScanner(DeviceScanner): """This class queries a FRITZ!Box router.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/icloud.py b/homeassistant/components/device_tracker/icloud.py index b5ae5ded01a..0878f8b005b 100644 --- a/homeassistant/components/device_tracker/icloud.py +++ b/homeassistant/components/device_tracker/icloud.py @@ -12,7 +12,7 @@ import voluptuous as vol from homeassistant.const import CONF_USERNAME, CONF_PASSWORD from homeassistant.components.device_tracker import ( - PLATFORM_SCHEMA, DOMAIN, ATTR_ATTRIBUTES, ENTITY_ID_FORMAT) + PLATFORM_SCHEMA, DOMAIN, ATTR_ATTRIBUTES, ENTITY_ID_FORMAT, DeviceScanner) from homeassistant.components.zone import active_zone from homeassistant.helpers.event import track_utc_time_change import homeassistant.helpers.config_validation as cv @@ -131,7 +131,7 @@ def setup_scanner(hass, config: dict, see): return True -class Icloud(object): +class Icloud(DeviceScanner): """Represent an icloud account in Home Assistant.""" def __init__(self, hass, username, password, name, see): diff --git a/homeassistant/components/device_tracker/locative.py b/homeassistant/components/device_tracker/locative.py index 10641b3a921..40d1ab8a12f 100644 --- a/homeassistant/components/device_tracker/locative.py +++ b/homeassistant/components/device_tracker/locative.py @@ -8,9 +8,8 @@ import asyncio from functools import partial import logging -from homeassistant.const import (ATTR_LATITUDE, ATTR_LONGITUDE, - STATE_NOT_HOME, - HTTP_UNPROCESSABLE_ENTITY) +from homeassistant.const import ( + ATTR_LATITUDE, ATTR_LONGITUDE, STATE_NOT_HOME, HTTP_UNPROCESSABLE_ENTITY) from homeassistant.components.http import HomeAssistantView # pylint: disable=unused-import from homeassistant.components.device_tracker import ( # NOQA diff --git a/homeassistant/components/device_tracker/luci.py b/homeassistant/components/device_tracker/luci.py index f9e90fee6c7..9dd9a11c426 100644 --- a/homeassistant/components/device_tracker/luci.py +++ b/homeassistant/components/device_tracker/luci.py @@ -14,7 +14,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -37,7 +38,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class LuciDeviceScanner(object): +class LuciDeviceScanner(DeviceScanner): """This class queries a wireless router running OpenWrt firmware. Adapted from Tomato scanner. diff --git a/homeassistant/components/device_tracker/netgear.py b/homeassistant/components/device_tracker/netgear.py index ff6fe2f1e41..d6716dfb9b1 100644 --- a/homeassistant/components/device_tracker/netgear.py +++ b/homeassistant/components/device_tracker/netgear.py @@ -11,7 +11,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import ( CONF_HOST, CONF_PASSWORD, CONF_USERNAME, CONF_PORT) from homeassistant.util import Throttle @@ -47,7 +48,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class NetgearDeviceScanner(object): +class NetgearDeviceScanner(DeviceScanner): """Queries a Netgear wireless router using the SOAP-API.""" def __init__(self, host, username, password, port): diff --git a/homeassistant/components/device_tracker/nmap_tracker.py b/homeassistant/components/device_tracker/nmap_tracker.py index 404492e35cf..182826a1f62 100644 --- a/homeassistant/components/device_tracker/nmap_tracker.py +++ b/homeassistant/components/device_tracker/nmap_tracker.py @@ -14,7 +14,8 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOSTS from homeassistant.util import Throttle @@ -63,7 +64,7 @@ def _arp(ip_address): return None -class NmapDeviceScanner(object): +class NmapDeviceScanner(DeviceScanner): """This class scans for devices using nmap.""" exclude = [] diff --git a/homeassistant/components/device_tracker/snmp.py b/homeassistant/components/device_tracker/snmp.py index 39315ebfd7a..43c0662e568 100644 --- a/homeassistant/components/device_tracker/snmp.py +++ b/homeassistant/components/device_tracker/snmp.py @@ -12,7 +12,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST from homeassistant.util import Throttle @@ -46,7 +47,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class SnmpScanner(object): +class SnmpScanner(DeviceScanner): """Queries any SNMP capable Access Point for connected devices.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/swisscom.py b/homeassistant/components/device_tracker/swisscom.py index 7966fe3ea6a..530e39d3e57 100644 --- a/homeassistant/components/device_tracker/swisscom.py +++ b/homeassistant/components/device_tracker/swisscom.py @@ -12,7 +12,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST from homeassistant.util import Throttle @@ -35,7 +36,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class SwisscomDeviceScanner(object): +class SwisscomDeviceScanner(DeviceScanner): """This class queries a router running Swisscom Internet-Box firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/thomson.py b/homeassistant/components/device_tracker/thomson.py index cf8f808f82a..e9ab4e347eb 100644 --- a/homeassistant/components/device_tracker/thomson.py +++ b/homeassistant/components/device_tracker/thomson.py @@ -13,7 +13,8 @@ from datetime import timedelta import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -46,7 +47,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class ThomsonDeviceScanner(object): +class ThomsonDeviceScanner(DeviceScanner): """This class queries a router running THOMSON firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/tomato.py b/homeassistant/components/device_tracker/tomato.py index f463c5a809d..3f01600259b 100644 --- a/homeassistant/components/device_tracker/tomato.py +++ b/homeassistant/components/device_tracker/tomato.py @@ -14,7 +14,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -38,7 +39,7 @@ def get_scanner(hass, config): return TomatoDeviceScanner(config[DOMAIN]) -class TomatoDeviceScanner(object): +class TomatoDeviceScanner(DeviceScanner): """This class queries a wireless router running Tomato firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/tplink.py b/homeassistant/components/device_tracker/tplink.py index 3e691a7149d..8d476136d23 100755 --- a/homeassistant/components/device_tracker/tplink.py +++ b/homeassistant/components/device_tracker/tplink.py @@ -15,7 +15,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -42,7 +43,7 @@ def get_scanner(hass, config): return None -class TplinkDeviceScanner(object): +class TplinkDeviceScanner(DeviceScanner): """This class queries a wireless router running TP-Link firmware.""" def __init__(self, config): diff --git a/homeassistant/components/device_tracker/ubus.py b/homeassistant/components/device_tracker/ubus.py index 9d9b8e718d6..083e1599d11 100644 --- a/homeassistant/components/device_tracker/ubus.py +++ b/homeassistant/components/device_tracker/ubus.py @@ -14,7 +14,8 @@ import requests import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.util import Throttle @@ -37,7 +38,7 @@ def get_scanner(hass, config): return scanner if scanner.success_init else None -class UbusDeviceScanner(object): +class UbusDeviceScanner(DeviceScanner): """ This class queries a wireless router running OpenWrt firmware. diff --git a/homeassistant/components/device_tracker/unifi.py b/homeassistant/components/device_tracker/unifi.py index ab84eb22e04..fa6668638f5 100644 --- a/homeassistant/components/device_tracker/unifi.py +++ b/homeassistant/components/device_tracker/unifi.py @@ -10,7 +10,8 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv import homeassistant.loader as loader -from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.const import CONF_HOST, CONF_USERNAME, CONF_PASSWORD # Unifi package doesn't list urllib3 as a requirement @@ -59,7 +60,7 @@ def get_scanner(hass, config): return UnifiScanner(ctrl) -class UnifiScanner(object): +class UnifiScanner(DeviceScanner): """Provide device_tracker support from Unifi WAP client data.""" def __init__(self, controller): diff --git a/homeassistant/components/device_tracker/volvooncall.py b/homeassistant/components/device_tracker/volvooncall.py index 36e0d96cdf1..a7dba230831 100644 --- a/homeassistant/components/device_tracker/volvooncall.py +++ b/homeassistant/components/device_tracker/volvooncall.py @@ -14,12 +14,9 @@ from homeassistant.helpers.event import track_point_in_utc_time from homeassistant.util.dt import utcnow from homeassistant.util import slugify from homeassistant.const import ( - CONF_PASSWORD, - CONF_SCAN_INTERVAL, - CONF_USERNAME) + CONF_PASSWORD, CONF_SCAN_INTERVAL, CONF_USERNAME) from homeassistant.components.device_tracker import ( - DEFAULT_SCAN_INTERVAL, - PLATFORM_SCHEMA) + DEFAULT_SCAN_INTERVAL, PLATFORM_SCHEMA) MIN_TIME_BETWEEN_SCANS = timedelta(minutes=1) diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index 555efd97ed5..ffcb1e8acd6 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -315,7 +315,8 @@ class TestComponentsDeviceTracker(unittest.TestCase): scanner = get_component('device_tracker.test').SCANNER with patch.dict(device_tracker.DISCOVERY_PLATFORMS, {'test': 'test'}): - with patch.object(scanner, 'scan_devices') as mock_scan: + with patch.object(scanner, 'scan_devices', + autospec=True) as mock_scan: with assert_setup_component(1, device_tracker.DOMAIN): assert setup_component( self.hass, device_tracker.DOMAIN, TEST_PLATFORM) diff --git a/tests/testing_config/custom_components/device_tracker/test.py b/tests/testing_config/custom_components/device_tracker/test.py index 70ec0c4cef9..6f4314b767d 100644 --- a/tests/testing_config/custom_components/device_tracker/test.py +++ b/tests/testing_config/custom_components/device_tracker/test.py @@ -1,12 +1,14 @@ """Provide a mock device scanner.""" +from homeassistant.components.device_tracker import DeviceScanner + def get_scanner(hass, config): """Return a mock scanner.""" return SCANNER -class MockScanner(object): +class MockScanner(DeviceScanner): """Mock device scanner.""" def __init__(self): From c864ea60c9829d38d8bc75181d532174205804e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Mon, 2 Jan 2017 22:04:09 +0100 Subject: [PATCH 062/189] Improve development workflow in docker (#5079) * Allow bower install of frontend components as root. Needed for frontend development in docker since everything runs as root in the docker image. * Improve development workflow in docker * Use LANG=C.UTF-8 in tox. Fixes installation of libraries with UTF-8 in it's readme. * Install mysqlclient psycopg2 uvloop after requirements_all.txt again, but with a --no-cache-dir this time. Allows bootstrap_frontend to be executed in a different path like the other scripts. --- Dockerfile | 2 +- script/bootstrap | 6 +-- script/bootstrap_frontend | 16 +++++++- script/bootstrap_server | 6 +++ script/build_frontend | 20 +++++++--- script/build_python_openzwave | 8 +++- script/dev_docker | 8 +++- script/dev_openzwave_docker | 4 +- script/fingerprint_frontend.py | 2 +- script/lint | 4 +- script/lint_docker | 7 +++- script/release | 6 ++- script/server | 6 +-- script/setup | 8 +++- script/test | 4 +- script/test_docker | 9 +++-- script/update | 5 ++- script/update_mdi.py | 2 +- tox.ini | 2 +- virtualization/Docker/Dockerfile.dev | 56 +++++++++++++++++++++++++++ virtualization/Docker/Dockerfile.test | 32 --------------- 21 files changed, 142 insertions(+), 71 deletions(-) create mode 100644 virtualization/Docker/Dockerfile.dev delete mode 100644 virtualization/Docker/Dockerfile.test diff --git a/Dockerfile b/Dockerfile index 634edb8af59..1141149d9fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ RUN script/build_python_openzwave && \ COPY requirements_all.txt requirements_all.txt RUN pip3 install --no-cache-dir -r requirements_all.txt && \ - pip3 install mysqlclient psycopg2 uvloop + pip3 install --no-cache-dir mysqlclient psycopg2 uvloop # Copy source COPY . . diff --git a/script/bootstrap b/script/bootstrap index f4cb6753fe8..4e77ba60ed5 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -1,9 +1,9 @@ #!/bin/sh +# Resolve all dependencies that the application requires to run. -# script/bootstrap: Resolve all dependencies that the application requires to -# run. +# Stop on errors +set -e cd "$(dirname "$0")/.." - script/bootstrap_server script/bootstrap_frontend diff --git a/script/bootstrap_frontend b/script/bootstrap_frontend index 7062ecf3db5..296f56c8f88 100755 --- a/script/bootstrap_frontend +++ b/script/bootstrap_frontend @@ -1,7 +1,21 @@ +#!/bin/sh +# Resolve all frontend dependencies that the application requires to run. + +# Stop on errors +set -e + +cd "$(dirname "$0")/.." + echo "Bootstrapping frontend..." + git submodule update cd homeassistant/components/frontend/www_static/home-assistant-polymer + +# Install node modules npm install -./node_modules/.bin/bower install + +# Install bower web components. Allow to download the components as root since the user in docker is root. +./node_modules/.bin/bower install --allow-root + npm run setup_js_dev cd ../../../../.. diff --git a/script/bootstrap_server b/script/bootstrap_server index f71abda0e65..ccb7d1a8464 100755 --- a/script/bootstrap_server +++ b/script/bootstrap_server @@ -1,3 +1,9 @@ +#!/bin/sh +# Resolve all server dependencies that the application requires to run. + +# Stop on errors +set -e + cd "$(dirname "$0")/.." echo "Installing dependencies..." diff --git a/script/build_frontend b/script/build_frontend index a00f89f1eea..0cb976d4fa5 100755 --- a/script/build_frontend +++ b/script/build_frontend @@ -1,22 +1,30 @@ +#!/bin/sh # Builds the frontend for production +# Stop on errors +set -e + cd "$(dirname "$0")/.." -cd homeassistant/components/frontend/www_static -rm -rf core.js* frontend.html* webcomponents-lite.min.js* panels -cd home-assistant-polymer +# Clean up +rm -rf homeassistant/components/frontend/www_static/core.js* \ + homeassistant/components/frontend/www_static/frontend.html* \ + homeassistant/components/frontend/www_static/webcomponents-lite.min.js* \ + homeassistant/components/frontend/www_static/panels +cd homeassistant/components/frontend/www_static/home-assistant-polymer npm run clean -npm run frontend_prod +# Build frontend +npm run frontend_prod cp bower_components/webcomponentsjs/webcomponents-lite.min.js .. cp -r build/* .. BUILD_DEV=0 node script/gen-service-worker.js cp build/service_worker.js .. - cd .. +# Pack frontend gzip -f -k -9 *.html *.js ./panels/*.html +cd ../../../.. # Generate the MD5 hash of the new frontend -cd ../../../.. script/fingerprint_frontend.py diff --git a/script/build_python_openzwave b/script/build_python_openzwave index d4e3e07b769..db82fe08d8b 100755 --- a/script/build_python_openzwave +++ b/script/build_python_openzwave @@ -1,7 +1,11 @@ -# Sets up and builds python open zwave to be used with Home Assistant +#!/bin/sh +# Sets up and builds python open zwave to be used with Home Assistant. # Dependencies that need to be installed: # apt-get install cython3 libudev-dev python3-sphinx python3-setuptools +# Stop on errors +set -e + cd "$(dirname "$0")/.." if [ ! -d build ]; then @@ -15,7 +19,7 @@ if [ -d python-openzwave ]; then git pull --recurse-submodules=yes git submodule update --init --recursive else - git clone --recursive --depth 1 https://github.com/OpenZWave/python-openzwave.git + git clone --branch python3 --recursive --depth 1 https://github.com/OpenZWave/python-openzwave.git cd python-openzwave fi diff --git a/script/dev_docker b/script/dev_docker index b63afaa36da..73c4ee60d0a 100755 --- a/script/dev_docker +++ b/script/dev_docker @@ -1,11 +1,15 @@ -# Build and run Home Assinstant in Docker +#!/bin/sh +# Build and run Home Assinstant in Docker. # Optional: pass in a timezone as first argument # If not given will attempt to mount /etc/localtime +# Stop on errors +set -e + cd "$(dirname "$0")/.." -docker build -t home-assistant-dev . +docker build -t home-assistant-dev -f virtualization/Docker/Dockerfile.dev . if [ $# -gt 0 ] then diff --git a/script/dev_openzwave_docker b/script/dev_openzwave_docker index 387c38ef6da..7304995f3e1 100755 --- a/script/dev_openzwave_docker +++ b/script/dev_openzwave_docker @@ -1,5 +1,5 @@ -# Open a docker that can be used to debug/dev python-openzwave -# Pass in a command line argument to build +#!/bin/sh +# Open a docker that can be used to debug/dev python-openzwave. Pass in a command line argument to build cd "$(dirname "$0")/.." diff --git a/script/fingerprint_frontend.py b/script/fingerprint_frontend.py index e04f3eefe6a..23b959cdc37 100755 --- a/script/fingerprint_frontend.py +++ b/script/fingerprint_frontend.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 - """Generate a file with all md5 hashes of the assets.""" + from collections import OrderedDict import glob import hashlib diff --git a/script/lint b/script/lint index d607aa87bb6..624ff0e5093 100755 --- a/script/lint +++ b/script/lint @@ -1,7 +1,5 @@ #!/bin/sh -# -# NOTE: all testing is now driven through tox. The tox command below -# performs roughly what this test did in the past. +# Execute lint to spot code mistakes. if [ "$1" = "--changed" ]; then export files="`git diff upstream/dev --name-only | grep -e '\.py$'`" diff --git a/script/lint_docker b/script/lint_docker index 61f4e4be96a..dca877d49ff 100755 --- a/script/lint_docker +++ b/script/lint_docker @@ -1,5 +1,8 @@ -#!/bin/bash +#!/bin/sh +# Execute lint in a docker container to spot code mistakes. + +# Stop on errors set -e -docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.test . +docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.dev . docker run --rm -it home-assistant-test tox -e lint diff --git a/script/release b/script/release index 43af9b92cb1..3bcddcfef76 100755 --- a/script/release +++ b/script/release @@ -1,4 +1,8 @@ -# Pushes a new version to PyPi +#!/bin/sh +# Pushes a new version to PyPi. + +# Stop on errors +set -e cd "$(dirname "$0")/.." diff --git a/script/server b/script/server index 0904bfd728e..4d246c8be44 100755 --- a/script/server +++ b/script/server @@ -1,8 +1,8 @@ #!/bin/sh +# Launch the application and any extra required processes locally. -# script/server: Launch the application and any extra required processes -# locally. +# Stop on errors +set -e cd "$(dirname "$0")/.." - python3 -m homeassistant -c config diff --git a/script/setup b/script/setup index 443dee7889f..3dbfc1d2c97 100755 --- a/script/setup +++ b/script/setup @@ -1,6 +1,10 @@ -#!/usr/bin/env sh -cd "$(dirname "$0")/.." +#!/bin/sh +# Setups the repository. +# Stop on errors +set -e + +cd "$(dirname "$0")/.." git submodule init script/bootstrap python3 setup.py develop diff --git a/script/test b/script/test index dac5c43d2de..7aca00421b3 100755 --- a/script/test +++ b/script/test @@ -1,6 +1,4 @@ #!/bin/sh -# -# NOTE: all testing is now driven through tox. The tox command below -# performs roughly what this test did in the past. +# Excutes the tests with tox. tox -e py34 diff --git a/script/test_docker b/script/test_docker index ab2296cf5fc..78b4247857b 100755 --- a/script/test_docker +++ b/script/test_docker @@ -1,5 +1,8 @@ -#!/bin/bash +#!/bin/sh +# Excutes the tests with tox in a docker container. + +# Stop on errors set -e -docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.test . -docker run --rm -it home-assistant-test tox -e py34 +docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.dev . +docker run --rm -it home-assistant-test tox -e py35 diff --git a/script/update b/script/update index 9f8b2530a7e..7866cd7a18d 100755 --- a/script/update +++ b/script/update @@ -1,8 +1,9 @@ #!/bin/sh +# Update application to run for its current checkout. -# script/update: Update application to run for its current checkout. +# Stop on errors +set -e cd "$(dirname "$0")/.." - git pull git submodule update diff --git a/script/update_mdi.py b/script/update_mdi.py index af9ee26c949..f9a0a8aca9f 100755 --- a/script/update_mdi.py +++ b/script/update_mdi.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 - """Download the latest Polymer v1 iconset for materialdesignicons.com.""" + import gzip import os import re diff --git a/tox.ini b/tox.ini index 1cf402468b5..a5f6ea45f53 100644 --- a/tox.ini +++ b/tox.ini @@ -8,7 +8,7 @@ setenv = ; which get read in from setup.py. If we don't force our locale to a ; utf8 one, tox's env is reset. And the install of these 2 packages ; fail. - LANG=en_US.UTF-8 + LANG=C.UTF-8 PYTHONPATH = {toxinidir}:{toxinidir}/homeassistant commands = py.test --timeout=30 --duration=10 --cov --cov-report= {posargs} diff --git a/virtualization/Docker/Dockerfile.dev b/virtualization/Docker/Dockerfile.dev new file mode 100644 index 00000000000..3b5eb493f82 --- /dev/null +++ b/virtualization/Docker/Dockerfile.dev @@ -0,0 +1,56 @@ +# Dockerfile for development +# Based on the production Dockerfile, but with development additions. +# Keep this file as close as possible to the production Dockerfile, so the environments match. + +FROM python:3.5 +MAINTAINER Paulus Schoutsen + +VOLUME /config + +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +RUN pip3 install --no-cache-dir colorlog cython + +# For the nmap tracker, bluetooth tracker, Z-Wave, tellstick +RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list && \ + wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ + apt-get update && \ + apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ + libtelldus-core2 && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +COPY script/build_python_openzwave script/build_python_openzwave +RUN script/build_python_openzwave && \ + mkdir -p /usr/local/share/python-openzwave && \ + ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config + +COPY requirements_all.txt requirements_all.txt +RUN pip3 install --no-cache-dir -r requirements_all.txt && \ + pip3 install --no-cache-dir mysqlclient psycopg2 uvloop + +# BEGIN: Development additions + +# Install nodejs +RUN curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - && \ + apt-get install -y nodejs + +# Install tox +RUN pip3 install --no-cache-dir tox + +# Copy over everything required to run tox +COPY requirements_test.txt . +COPY setup.cfg . +COPY setup.py . +COPY tox.ini . +COPY homeassistant/const.py homeassistant/const.py + +# Get all dependencies +RUN tox -e py35 --notest + +# END: Development additions + +# Copy source +COPY . . + +CMD [ "python", "-m", "homeassistant", "--config", "/config" ] diff --git a/virtualization/Docker/Dockerfile.test b/virtualization/Docker/Dockerfile.test deleted file mode 100644 index 651f19e4720..00000000000 --- a/virtualization/Docker/Dockerfile.test +++ /dev/null @@ -1,32 +0,0 @@ -FROM python:3.4 -MAINTAINER Paulus Schoutsen - -VOLUME /config - -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -RUN pip3 install --no-cache-dir colorlog cython - -# For the nmap tracker, bluetooth tracker, Z-Wave -RUN apt-get update && \ - apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev locales-all bluetooth libbluetooth-dev && \ - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN pip3 install --no-cache-dir tox - -# Copy over everything required to run tox -COPY requirements_all.txt requirements_all.txt -COPY requirements_test.txt requirements_test.txt -COPY setup.cfg setup.cfg -COPY setup.py setup.py -COPY tox.ini tox.ini -COPY homeassistant/const.py homeassistant/const.py - -# Get deps -RUN tox --notest - -# Copy source and run tests -COPY . . - -CMD [ "tox" ] From 328ff6027b4468d2e86894ab10bfef3d7cdd6b0d Mon Sep 17 00:00:00 2001 From: Zac-HD Date: Tue, 3 Jan 2017 14:26:24 +1100 Subject: [PATCH 063/189] Fix link to pull request advice for contributors --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a63c1400723..9a3238e665d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ Everybody is invited and welcome to contribute to Home Assistant. There is a lot The process is straight-forward. - - Read [How to get faster PR reviews](https://github.com/kubernetes/kubernetes/blob/master/docs/devel/faster_reviews.md) by Kubernetes (but skip step 0) + - Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/devel/faster_reviews.md) by Kubernetes (but skip step 0) - Fork the Home Assistant [git repository](https://github.com/home-assistant/home-assistant). - Write the code for your device, notification service, sensor, or IoT thing. - Ensure tests work. From f71027a9c70164a3d56134d6eaa95ebf9578d586 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Mon, 2 Jan 2017 23:19:33 -0800 Subject: [PATCH 064/189] Nx584 maint (#5149) * Update nx584 requirement to 0.4 There have been a few bug fixes to nx584 since 0.2, so this just updates our requirement to pull in the newer version. * Fix nx584 if no partitions are found If we succeed in our connection to the panel but find no configured partitions, then we will fall through to the bypass probe and fail because 'zones' is never initialized. This fixes both exception paths and adds a test that would poke it. --- homeassistant/components/alarm_control_panel/nx584.py | 4 +++- homeassistant/components/binary_sensor/nx584.py | 2 +- requirements_all.txt | 2 +- tests/components/binary_sensor/test_nx584.py | 6 ++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/nx584.py b/homeassistant/components/alarm_control_panel/nx584.py index 58ec8d915ab..b7b3beec72d 100644 --- a/homeassistant/components/alarm_control_panel/nx584.py +++ b/homeassistant/components/alarm_control_panel/nx584.py @@ -16,7 +16,7 @@ from homeassistant.const import ( STATE_UNKNOWN, CONF_NAME, CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pynx584==0.2'] +REQUIREMENTS = ['pynx584==0.4'] _LOGGER = logging.getLogger(__name__) @@ -86,9 +86,11 @@ class NX584Alarm(alarm.AlarmControlPanel): _LOGGER.error('Unable to connect to %(host)s: %(reason)s', dict(host=self._url, reason=ex)) self._state = STATE_UNKNOWN + zones = [] except IndexError: _LOGGER.error('nx584 reports no partitions') self._state = STATE_UNKNOWN + zones = [] bypassed = False for zone in zones: diff --git a/homeassistant/components/binary_sensor/nx584.py b/homeassistant/components/binary_sensor/nx584.py index b21e40dc5dd..ad7612d11a6 100644 --- a/homeassistant/components/binary_sensor/nx584.py +++ b/homeassistant/components/binary_sensor/nx584.py @@ -16,7 +16,7 @@ from homeassistant.components.binary_sensor import ( from homeassistant.const import (CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pynx584==0.2'] +REQUIREMENTS = ['pynx584==0.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index cb04ecbab75..79cfbb5c588 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -442,7 +442,7 @@ pynut2==2.1.2 # homeassistant.components.alarm_control_panel.nx584 # homeassistant.components.binary_sensor.nx584 -pynx584==0.2 +pynx584==0.4 # homeassistant.components.sensor.openweathermap # homeassistant.components.weather.openweathermap diff --git a/tests/components/binary_sensor/test_nx584.py b/tests/components/binary_sensor/test_nx584.py index 5481bbc9198..ef8861e12ce 100644 --- a/tests/components/binary_sensor/test_nx584.py +++ b/tests/components/binary_sensor/test_nx584.py @@ -106,6 +106,12 @@ class TestNX584SensorSetup(unittest.TestCase): requests.exceptions.ConnectionError self._test_assert_graceful_fail({}) + def test_setup_no_partitions(self): + """Test the setup with connection failure.""" + nx584_client.Client.return_value.list_zones.side_effect = \ + IndexError + self._test_assert_graceful_fail({}) + def test_setup_version_too_old(self): """"Test if version is too old.""" nx584_client.Client.return_value.get_version.return_value = '1.0' From 52f6fe3e0638691e910b668a1eaf6d6c80b48eec Mon Sep 17 00:00:00 2001 From: Brandon Weeks Date: Tue, 3 Jan 2017 08:47:33 -0800 Subject: [PATCH 065/189] Add version test for monkey_patch_asyncio() (#5127) * Add version test for monkey_patch_asyncio() * Update __main__.py --- homeassistant/__main__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index 510b98b6bdd..d9ab410b745 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -356,7 +356,8 @@ def try_to_restart() -> None: def main() -> int: """Start Home Assistant.""" - monkey_patch_asyncio() + if sys.version_info[:3] < (3, 5, 3): + monkey_patch_asyncio() validate_python() From a0a9f26312f94eb06c794244dd68a0204b33447a Mon Sep 17 00:00:00 2001 From: andrey-git Date: Tue, 3 Jan 2017 21:31:44 +0200 Subject: [PATCH 066/189] Keep previous brightness of dimming zwave light upon turning it on/off (#5160) * Keep previous brightness of dimming zwave light upon turning it on/off * Fix initialization * Use value 255 to set dimmer to previous value --- homeassistant/components/light/zwave.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index 30fa0611e45..d973f8d8dd2 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -79,7 +79,7 @@ def brightness_state(value): if value.data > 0: return (value.data / 99) * 255, STATE_ON else: - return 255, STATE_OFF + return 0, STATE_OFF class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): @@ -165,12 +165,13 @@ class ZwaveDimmer(zwave.ZWaveDeviceEntity, Light): def turn_on(self, **kwargs): """Turn the device on.""" + # Zwave multilevel switches use a range of [0, 99] to control + # brightness. Level 255 means to set it to previous value. if ATTR_BRIGHTNESS in kwargs: self._brightness = kwargs[ATTR_BRIGHTNESS] - - # Zwave multilevel switches use a range of [0, 99] to control - # brightness. - brightness = int((self._brightness / 255) * 99) + brightness = int((self._brightness / 255) * 99) + else: + brightness = 255 if self._value.node.set_dimmer(self._value.value_id, brightness): self._state = STATE_ON From 6ec500f2e7232ad1001e6e3b067fdde3d5ac7bdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 3 Jan 2017 21:13:02 +0100 Subject: [PATCH 067/189] issue #5101 (#5161) --- homeassistant/components/media_player/vlc.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index ee4fef3cfde..da6e9a696b9 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -62,8 +62,10 @@ class VlcDevice(MediaPlayerDevice): else: self._state = STATE_IDLE self._media_duration = self._vlc.get_length()/1000 - self._media_position = self._vlc.get_position() * self._media_duration - self._media_position_updated_at = dt_util.utcnow() + position = self._vlc.get_position() * self._media_duration + if position != self._media_position: + self._media_position_updated_at = dt_util.utcnow() + self._media_position = position self._volume = self._vlc.audio_get_volume() / 100 self._muted = (self._vlc.audio_get_mute() == 1) From fdd3fa7d80762c3e01cdffd20b0a0ec72fbbe0ab Mon Sep 17 00:00:00 2001 From: eieste Date: Tue, 3 Jan 2017 21:32:40 +0100 Subject: [PATCH 068/189] Apple TouchBar icon Support (mask-icon) (#5159) * Update index.html Add Apple TouchBar icon Color Support * Add svg icon * Change path to SVG icon * Rename mask-icon.svg to home-assistant-icon.svg * Remove useless whitespace * Update index.html --- .../components/frontend/templates/index.html | 1 + .../www_static/icons/home-assistant-icon.svg | 2814 +++++++++++++++++ 2 files changed, 2815 insertions(+) create mode 100644 homeassistant/components/frontend/www_static/icons/home-assistant-icon.svg diff --git a/homeassistant/components/frontend/templates/index.html b/homeassistant/components/frontend/templates/index.html index afa9ca68af9..a13d640a579 100644 --- a/homeassistant/components/frontend/templates/index.html +++ b/homeassistant/components/frontend/templates/index.html @@ -8,6 +8,7 @@ + {% for panel in panels.values() -%} {% endfor -%} diff --git a/homeassistant/components/frontend/www_static/icons/home-assistant-icon.svg b/homeassistant/components/frontend/www_static/icons/home-assistant-icon.svg new file mode 100644 index 00000000000..1ff4c190f59 --- /dev/null +++ b/homeassistant/components/frontend/www_static/icons/home-assistant-icon.svg @@ -0,0 +1,2814 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9eed03108f6aa4ae19cf07f879727969654b1b1a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 Jan 2017 21:33:48 +0100 Subject: [PATCH 069/189] Run tests on Python 3.6 (#5162) * Run tests on Python 3.6 * Fix dsmr test * Fix async util tests * Fix rest sensor test --- .travis.yml | 2 ++ tests/components/sensor/test_dsmr.py | 5 +++-- tests/components/sensor/test_rest.py | 2 +- tests/util/test_async.py | 1 + tox.ini | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9cf13f2c831..f4c696a2236 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,8 @@ matrix: env: TOXENV=typing - python: "3.5" env: TOXENV=py35 + - python: "3.6" + env: TOXENV=py36 allow_failures: - python: "3.5" env: TOXENV=typing diff --git a/tests/components/sensor/test_dsmr.py b/tests/components/sensor/test_dsmr.py index e76b26a811b..35e224253ee 100644 --- a/tests/components/sensor/test_dsmr.py +++ b/tests/components/sensor/test_dsmr.py @@ -11,7 +11,7 @@ from unittest.mock import Mock from homeassistant.bootstrap import async_setup_component from homeassistant.components.sensor.dsmr import DerivativeDSMREntity from homeassistant.const import STATE_UNKNOWN -from tests.common import assert_setup_component +from tests.common import assert_setup_component, mock_coro @asyncio.coroutine @@ -35,7 +35,7 @@ def test_default_setup(hass, monkeypatch): } # mock for injecting DSMR telegram - dsmr = Mock(return_value=Mock()) + dsmr = Mock(return_value=mock_coro([Mock(), None])) monkeypatch.setattr('dsmr_parser.protocol.create_dsmr_reader', dsmr) with assert_setup_component(1): @@ -66,6 +66,7 @@ def test_default_setup(hass, monkeypatch): assert power_tariff.attributes.get('unit_of_measurement') is None +@asyncio.coroutine def test_derivative(): """Test calculation of derivative value.""" from dsmr_parser.objects import MBusObject diff --git a/tests/components/sensor/test_rest.py b/tests/components/sensor/test_rest.py index ab5a255c885..4abfb2d4551 100644 --- a/tests/components/sensor/test_rest.py +++ b/tests/components/sensor/test_rest.py @@ -200,7 +200,7 @@ class TestRestData(unittest.TestCase): self.rest.update() self.assertEqual('test data', self.rest.data) - @patch('requests.get', side_effect=RequestException) + @patch('requests.Session', side_effect=RequestException) def test_update_request_exception(self, mock_req): """Test update when a request exception occurs.""" self.rest.update() diff --git a/tests/util/test_async.py b/tests/util/test_async.py index a3da7e7f4e1..1d6e669e1d6 100644 --- a/tests/util/test_async.py +++ b/tests/util/test_async.py @@ -87,6 +87,7 @@ class RunCoroutineThreadsafeTests(test_utils.TestCase): def setUp(self): """Test setup method.""" + super().setUp() self.loop = asyncio.new_event_loop() self.set_event_loop(self.loop) # Will cleanup properly diff --git a/tox.ini b/tox.ini index a5f6ea45f53..3da1de04bf3 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py34, py35, lint, requirements, typing +envlist = py34, py35, py36, lint, requirements, typing skip_missing_interpreters = True [testenv] From 254eb4e88a1dbac856638f60da8b49866102770c Mon Sep 17 00:00:00 2001 From: Mike Hennessy Date: Tue, 3 Jan 2017 15:39:42 -0500 Subject: [PATCH 070/189] Change zeroconf to use local ip not base_url (#5151) Rather than rely on base_url being unconfigured and therefore be set as the host ip in the api component, get the local ip directly. Use server port from the http component instead of the api component where it will be None if base_url is set. Change the exception catch meant to check for ipv4 vs ipv6 to wrap the address encoding only instead of the zeroconf service info declaration. --- homeassistant/components/zeroconf.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/zeroconf.py b/homeassistant/components/zeroconf.py index ab4a3b497fe..104abd19260 100644 --- a/homeassistant/components/zeroconf.py +++ b/homeassistant/components/zeroconf.py @@ -9,6 +9,7 @@ import socket import voluptuous as vol +from homeassistant import util from homeassistant.const import (EVENT_HOMEASSISTANT_STOP, __version__) _LOGGER = logging.getLogger(__name__) @@ -40,16 +41,15 @@ def setup(hass, config): 'requires_api_password': requires_api_password, } + host_ip = util.get_local_ip() + try: - info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name, - socket.inet_pton( - socket.AF_INET, hass.config.api.host), - hass.config.api.port, 0, 0, params) + host_ip_pton = socket.inet_pton(socket.AF_INET, host_ip) except socket.error: - info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name, - socket.inet_pton( - socket.AF_INET6, hass.config.api.host), - hass.config.api.port, 0, 0, params) + host_ip_pton = socket.inet_pton(socket.AF_INET6, host_ip) + + info = ServiceInfo(ZEROCONF_TYPE, zeroconf_name, host_ip_pton, + hass.http.server_port, 0, 0, params) zeroconf.register_service(info) From 018d786f36986a7a3e47b73628fe923a627e0c85 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Tue, 3 Jan 2017 15:41:42 -0500 Subject: [PATCH 071/189] Kodi cleanup and config update (#5098) --- homeassistant/components/media_player/kodi.py | 71 ++++++++----------- 1 file changed, 30 insertions(+), 41 deletions(-) diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index 9676fe451c7..0a88336b5a3 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -43,27 +43,24 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def setup_platform(hass, config, add_devices, discovery_info=None): +def setup_platform(hass, config, add_entities, discovery_info=None): """Setup the Kodi platform.""" - url = '{}:{}'.format(config.get(CONF_HOST), config.get(CONF_PORT)) + host = config.get(CONF_HOST) + port = config.get(CONF_PORT) - jsonrpc_url = config.get('url') # deprecated - if jsonrpc_url: - url = jsonrpc_url.rstrip('/jsonrpc') + if host.startswith('http://') or host.startswith('https://'): + host = host.lstrip('http://').lstrip('https://') + _LOGGER.warning( + "Kodi host name should no longer conatin http:// See updated " + "definitions here: " + "https://home-assistant.io/components/media_player.kodi/") - username = config.get(CONF_USERNAME) - password = config.get(CONF_PASSWORD) - - if username is not None: - auth = (username, password) - else: - auth = None - - add_devices([ + add_entities([ KodiDevice( config.get(CONF_NAME), - url, - auth=auth, + host=host, port=port, + username=config.get(CONF_USERNAME), + password=config.get(CONF_PASSWORD), turn_off_action=config.get(CONF_TURN_OFF_ACTION)), ]) @@ -71,25 +68,25 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class KodiDevice(MediaPlayerDevice): """Representation of a XBMC/Kodi device.""" - def __init__(self, name, url, auth=None, turn_off_action=None): + def __init__(self, name, host, port, username=None, password=None, + turn_off_action=None): """Initialize the Kodi device.""" import jsonrpc_requests self._name = name - self._url = url - self._basic_auth_url = None kwargs = {'timeout': 5} - if auth is not None: - kwargs['auth'] = auth - scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url) - self._basic_auth_url = \ - urllib.parse.urlunsplit((scheme, '{}:{}@{}'.format - (auth[0], auth[1], netloc), - path, query, fragment)) + if username is not None: + kwargs['auth'] = (username, password) + image_auth_string = "{}:{}@".format(username, password) + else: + image_auth_string = "" - self._server = jsonrpc_requests.Server( - '{}/jsonrpc'.format(self._url), **kwargs) + self._http_url = 'http://{}:{}/jsonrpc'.format(host, port) + self._image_url = 'http://{}{}:{}/image'.format( + image_auth_string, host, port) + + self._server = jsonrpc_requests.Server(self._http_url, **kwargs) self._turn_off_action = turn_off_action self._players = list() @@ -110,7 +107,7 @@ class KodiDevice(MediaPlayerDevice): return self._server.Player.GetActivePlayers() except jsonrpc_requests.jsonrpc.TransportError: if self._players is not None: - _LOGGER.warning('Unable to fetch kodi data') + _LOGGER.info('Unable to fetch kodi data') _LOGGER.debug('Unable to fetch kodi data', exc_info=True) return None @@ -193,21 +190,13 @@ class KodiDevice(MediaPlayerDevice): @property def media_image_url(self): """Image url of current playing media.""" - if self._item is not None: - return self._get_image_url() + if self._item is None: + return None - def _get_image_url(self): - """Helper function that parses the thumbnail URLs used by Kodi.""" url_components = urllib.parse.urlparse(self._item['thumbnail']) - if url_components.scheme == 'image': - if self._basic_auth_url is not None: - return '{}/image/{}'.format( - self._basic_auth_url, - urllib.parse.quote_plus(self._item['thumbnail'])) - - return '{}/image/{}'.format( - self._url, + return '{}/{}'.format( + self._image_url, urllib.parse.quote_plus(self._item['thumbnail'])) @property From 4692ea85b7e53ab21cefc9bfe4b73fc436d5238d Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 4 Jan 2017 00:17:56 +0200 Subject: [PATCH 072/189] [mqtt] Embedded MQTT server fix (#5132) * Embedded MQTT server fix and schema * feedback --- homeassistant/components/mqtt/__init__.py | 29 +++++++------ homeassistant/components/mqtt/server.py | 16 ++++++- tests/components/mqtt/test_init.py | 52 ++++++++++++++--------- 3 files changed, 62 insertions(+), 35 deletions(-) diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index 87c1a783e6e..ad4cce15cf3 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -20,6 +20,7 @@ from homeassistant.helpers.event import threaded_listener_factory from homeassistant.const import ( EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, CONF_VALUE_TEMPLATE, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, CONF_PROTOCOL, CONF_PAYLOAD) +from homeassistant.components.mqtt.server import HBMQTT_CONFIG_SCHEMA _LOGGER = logging.getLogger(__name__) @@ -80,7 +81,6 @@ def valid_publish_topic(value): _VALID_QOS_SCHEMA = vol.All(vol.Coerce(int), vol.In([0, 1, 2])) -_HBMQTT_CONFIG_SCHEMA = vol.Schema(dict) CLIENT_KEY_AUTH_MSG = 'client_key and client_cert must both be present in ' \ 'the mqtt broker config' @@ -109,7 +109,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_TLS_INSECURE): cv.boolean, vol.Optional(CONF_PROTOCOL, default=DEFAULT_PROTOCOL): vol.All(cv.string, vol.In([PROTOCOL_31, PROTOCOL_311])), - vol.Optional(CONF_EMBEDDED): _HBMQTT_CONFIG_SCHEMA, + vol.Optional(CONF_EMBEDDED): HBMQTT_CONFIG_SCHEMA, vol.Optional(CONF_WILL_MESSAGE): MQTT_WILL_BIRTH_SCHEMA, vol.Optional(CONF_BIRTH_MESSAGE): MQTT_WILL_BIRTH_SCHEMA }), @@ -222,18 +222,7 @@ def setup(hass, config): broker_config = _setup_server(hass, config) - broker_in_conf = CONF_BROKER in conf - - # Only auto config if no server config was passed in - if broker_config and CONF_EMBEDDED not in conf: - broker, port, username, password, certificate, protocol = broker_config - # Embedded broker doesn't have some ssl variables - client_key, client_cert, tls_insecure = None, None, None - elif not broker_config and not broker_in_conf: - _LOGGER.error("Unable to start broker and auto-configure MQTT") - return False - - if broker_in_conf: + if CONF_BROKER in conf: broker = conf[CONF_BROKER] port = conf[CONF_PORT] username = conf.get(CONF_USERNAME) @@ -243,6 +232,18 @@ def setup(hass, config): client_cert = conf.get(CONF_CLIENT_CERT) tls_insecure = conf.get(CONF_TLS_INSECURE) protocol = conf[CONF_PROTOCOL] + elif broker_config: + # If no broker passed in, auto config to internal server + broker, port, username, password, certificate, protocol = broker_config + # Embedded broker doesn't have some ssl variables + client_key, client_cert, tls_insecure = None, None, None + else: + err = "Unable to start MQTT broker." + if conf.get(CONF_EMBEDDED) is not None: + # Explicit embedded config, requires explicit broker config + err += " (Broker configuration required.)" + _LOGGER.error(err) + return False # For cloudmqtt.com, secured connection, auto fill in certificate if certificate is None and 19999 < port < 30000 and \ diff --git a/homeassistant/components/mqtt/server.py b/homeassistant/components/mqtt/server.py index 7910477c808..57ad04fd18d 100644 --- a/homeassistant/components/mqtt/server.py +++ b/homeassistant/components/mqtt/server.py @@ -7,14 +7,27 @@ https://home-assistant.io/components/mqtt/#use-the-embedded-broker import logging import tempfile +import voluptuous as vol + from homeassistant.core import callback -from homeassistant.components.mqtt import PROTOCOL_311 from homeassistant.const import EVENT_HOMEASSISTANT_STOP +import homeassistant.helpers.config_validation as cv from homeassistant.util.async import run_coroutine_threadsafe REQUIREMENTS = ['hbmqtt==0.8'] DEPENDENCIES = ['http'] +# None allows custom config to be created through generate_config +HBMQTT_CONFIG_SCHEMA = vol.Any(None, vol.Schema({ + vol.Optional('auth'): vol.Schema({ + vol.Optional('password-file'): cv.isfile, + }, extra=vol.ALLOW_EXTRA), + vol.Optional('listeners'): vol.Schema({ + vol.Required('default'): vol.Schema(dict), + str: vol.Schema(dict) + }) +}, extra=vol.ALLOW_EXTRA)) + def start(hass, server_config): """Initialize MQTT Server.""" @@ -48,6 +61,7 @@ def start(hass, server_config): def generate_config(hass, passwd): """Generate a configuration based on current Home Assistant instance.""" + from homeassistant.components.mqtt import PROTOCOL_311 config = { 'listeners': { 'default': { diff --git a/tests/components/mqtt/test_init.py b/tests/components/mqtt/test_init.py index ff74c070d85..54566a09f59 100644 --- a/tests/components/mqtt/test_init.py +++ b/tests/components/mqtt/test_init.py @@ -17,6 +17,7 @@ from tests.common import ( get_test_home_assistant, mock_mqtt_component, fire_mqtt_message) +# pylint: disable=invalid-name class TestMQTT(unittest.TestCase): """Test the MQTT component.""" @@ -49,27 +50,37 @@ class TestMQTT(unittest.TestCase): self.hass.block_till_done() self.assertTrue(mqtt.MQTT_CLIENT.stop.called) - def test_setup_fails_if_no_connect_broker(self): + @mock.patch('paho.mqtt.client.Client') + def test_setup_fails_if_no_connect_broker(self, _): """Test for setup failure if connection to broker is missing.""" + test_broker_cfg = {mqtt.DOMAIN: {mqtt.CONF_BROKER: 'test-broker'}} + with mock.patch('homeassistant.components.mqtt.MQTT', side_effect=socket.error()): self.hass.config.components = [] - assert not setup_component(self.hass, mqtt.DOMAIN, { - mqtt.DOMAIN: { - mqtt.CONF_BROKER: 'test-broker', - } - }) + assert not setup_component(self.hass, mqtt.DOMAIN, test_broker_cfg) - def test_setup_protocol_validation(self): - """Test for setup failure if connection to broker is missing.""" - with mock.patch('paho.mqtt.client.Client'): + # Ensure if we dont raise it sets up correctly + self.hass.config.components = [] + assert setup_component(self.hass, mqtt.DOMAIN, test_broker_cfg) + + @mock.patch('paho.mqtt.client.Client') + def test_setup_embedded(self, _): + """Test setting up embedded server with no config.""" + client_config = ('localhost', 1883, 'user', 'pass', None, '3.1.1') + + with mock.patch('homeassistant.components.mqtt.server.start', + return_value=(True, client_config)) as _start: self.hass.config.components = [] - assert setup_component(self.hass, mqtt.DOMAIN, { - mqtt.DOMAIN: { - mqtt.CONF_BROKER: 'test-broker', - mqtt.CONF_PROTOCOL: 3.1, - } - }) + assert setup_component(self.hass, mqtt.DOMAIN, + {mqtt.DOMAIN: {}}) + assert _start.call_count == 1 + + # Test with `embedded: None` + self.hass.config.components = [] + assert setup_component(self.hass, mqtt.DOMAIN, + {mqtt.DOMAIN: {'embedded': None}}) + assert _start.call_count == 2 # Another call def test_publish_calls_service(self): """Test the publishing of call to services.""" @@ -81,11 +92,11 @@ class TestMQTT(unittest.TestCase): self.assertEqual(1, len(self.calls)) self.assertEqual( - 'test-topic', - self.calls[0][0].data['service_data'][mqtt.ATTR_TOPIC]) + 'test-topic', + self.calls[0][0].data['service_data'][mqtt.ATTR_TOPIC]) self.assertEqual( - 'test-payload', - self.calls[0][0].data['service_data'][mqtt.ATTR_PAYLOAD]) + 'test-payload', + self.calls[0][0].data['service_data'][mqtt.ATTR_PAYLOAD]) def test_service_call_without_topic_does_not_publish(self): """Test the service call if topic is missing.""" @@ -293,7 +304,8 @@ class TestMQTTCallbacks(unittest.TestCase): 3: 'home/sensor', }, mqtt.MQTT_CLIENT.progress) - def test_mqtt_birth_message_on_connect(self): + def test_mqtt_birth_message_on_connect(self): \ + # pylint: disable=no-self-use """Test birth message on connect.""" mqtt.MQTT_CLIENT._mqtt_on_connect(None, None, 0, 0) mqtt.MQTT_CLIENT._mqttc.publish.assert_called_with('birth', 'birth', 0, From 2970196f61d47497f0f95ca3bf254fb19a749a6c Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Tue, 3 Jan 2017 16:19:28 -0600 Subject: [PATCH 073/189] Add support for limiting which entities are recorded (#4733) --- homeassistant/components/history.py | 8 +--- homeassistant/components/recorder/__init__.py | 44 ++++++++++++++++--- homeassistant/const.py | 4 ++ 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/history.py b/homeassistant/components/history.py index eee0570c9bc..a077ad09ec7 100644 --- a/homeassistant/components/history.py +++ b/homeassistant/components/history.py @@ -10,7 +10,8 @@ from datetime import timedelta from itertools import groupby import voluptuous as vol -from homeassistant.const import HTTP_BAD_REQUEST +from homeassistant.const import ( + HTTP_BAD_REQUEST, CONF_DOMAINS, CONF_ENTITIES, CONF_EXCLUDE, CONF_INCLUDE) import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util from homeassistant.components import recorder, script @@ -21,11 +22,6 @@ from homeassistant.const import ATTR_HIDDEN DOMAIN = 'history' DEPENDENCIES = ['recorder', 'http'] -CONF_EXCLUDE = 'exclude' -CONF_INCLUDE = 'include' -CONF_ENTITIES = 'entities' -CONF_DOMAINS = 'domains' - CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ CONF_EXCLUDE: vol.Schema({ diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 8de8925e093..41a7991c32f 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -12,14 +12,15 @@ import queue import threading import time from datetime import timedelta, datetime -from typing import Any, Union, Optional, List +from typing import Any, Union, Optional, List, Dict import voluptuous as vol from homeassistant.core import HomeAssistant, callback -from homeassistant.const import (EVENT_HOMEASSISTANT_START, - EVENT_HOMEASSISTANT_STOP, EVENT_STATE_CHANGED, - EVENT_TIME_CHANGED, MATCH_ALL) +from homeassistant.const import ( + ATTR_ENTITY_ID, ATTR_DOMAIN, CONF_ENTITIES, CONF_EXCLUDE, CONF_DOMAINS, + CONF_INCLUDE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, + EVENT_STATE_CHANGED, EVENT_TIME_CHANGED, MATCH_ALL) import homeassistant.helpers.config_validation as cv from homeassistant.helpers.event import track_point_in_utc_time from homeassistant.helpers.typing import ConfigType, QueryType @@ -44,6 +45,16 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_PURGE_DAYS): vol.All(vol.Coerce(int), vol.Range(min=1)), vol.Optional(CONF_DB_URL): cv.string, + vol.Optional(CONF_EXCLUDE, default={}): vol.Schema({ + vol.Optional(CONF_ENTITIES, default=[]): cv.entity_ids, + vol.Optional(CONF_DOMAINS, default=[]): + vol.All(cv.ensure_list, [cv.string]) + }), + vol.Optional(CONF_INCLUDE, default={}): vol.Schema({ + vol.Optional(CONF_ENTITIES, default=[]): cv.entity_ids, + vol.Optional(CONF_DOMAINS, default=[]): + vol.All(cv.ensure_list, [cv.string]) + }) }) }, extra=vol.ALLOW_EXTRA) @@ -110,7 +121,10 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool: db_url = DEFAULT_URL.format( hass_config_path=hass.config.path(DEFAULT_DB_FILE)) - _INSTANCE = Recorder(hass, purge_days=purge_days, uri=db_url) + include = config.get(DOMAIN, {}).get(CONF_INCLUDE, {}) + exclude = config.get(DOMAIN, {}).get(CONF_EXCLUDE, {}) + _INSTANCE = Recorder(hass, purge_days=purge_days, uri=db_url, + include=include, exclude=exclude) return True @@ -153,7 +167,8 @@ def log_error(e: Exception, retry_wait: Optional[float]=0, class Recorder(threading.Thread): """A threaded recorder class.""" - def __init__(self, hass: HomeAssistant, purge_days: int, uri: str) -> None: + def __init__(self, hass: HomeAssistant, purge_days: int, uri: str, + include: Dict, exclude: Dict) -> None: """Initialize the recorder.""" threading.Thread.__init__(self) @@ -166,6 +181,11 @@ class Recorder(threading.Thread): self.engine = None # type: Any self._run = None # type: Any + self.include = include.get(CONF_ENTITIES, []) + \ + include.get(CONF_DOMAINS, []) + self.exclude = exclude.get(CONF_ENTITIES, []) + \ + exclude.get(CONF_DOMAINS, []) + def start_recording(event): """Start recording.""" self.start() @@ -210,6 +230,18 @@ class Recorder(threading.Thread): self.queue.task_done() continue + entity_id = event.data.get(ATTR_ENTITY_ID) + domain = event.data.get(ATTR_DOMAIN) + + if entity_id in self.exclude or domain in self.exclude: + self.queue.task_done() + continue + + if (self.include and entity_id not in self.include and + domain not in self.include): + self.queue.task_done() + continue + dbevent = Events.from_event(event) self._commit(dbevent) diff --git a/homeassistant/const.py b/homeassistant/const.py index 0789531e9a3..d266a3aae55 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -81,11 +81,14 @@ CONF_DEVICES = 'devices' CONF_DISARM_AFTER_TRIGGER = 'disarm_after_trigger' CONF_DISCOVERY = 'discovery' CONF_DISPLAY_OPTIONS = 'display_options' +CONF_DOMAINS = 'domains' CONF_ELEVATION = 'elevation' CONF_EMAIL = 'email' +CONF_ENTITIES = 'entities' CONF_ENTITY_ID = 'entity_id' CONF_ENTITY_NAMESPACE = 'entity_namespace' CONF_EVENT = 'event' +CONF_EXCLUDE = 'exclude' CONF_FILE_PATH = 'file_path' CONF_FILENAME = 'filename' CONF_FRIENDLY_NAME = 'friendly_name' @@ -93,6 +96,7 @@ CONF_HEADERS = 'headers' CONF_HOST = 'host' CONF_HOSTS = 'hosts' CONF_ICON = 'icon' +CONF_INCLUDE = 'include' CONF_ID = 'id' CONF_LATITUDE = 'latitude' CONF_LONGITUDE = 'longitude' From c14a5fa7c161531ebe7c90d138d6d000725c5a3f Mon Sep 17 00:00:00 2001 From: Brandon Weeks Date: Tue, 3 Jan 2017 14:28:23 -0800 Subject: [PATCH 074/189] Upgrade samsungctl to 0.6.0 (#5126) --- .../components/media_player/samsungtv.py | 22 ++++++++++++++----- requirements_all.txt | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/media_player/samsungtv.py b/homeassistant/components/media_player/samsungtv.py index c7705393381..85e32947fb0 100644 --- a/homeassistant/components/media_player/samsungtv.py +++ b/homeassistant/components/media_player/samsungtv.py @@ -17,7 +17,7 @@ from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN, CONF_PORT) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['samsungctl==0.5.1'] +REQUIREMENTS = ['samsungctl==0.6.0'] _LOGGER = logging.getLogger(__name__) @@ -81,8 +81,10 @@ class SamsungTVDevice(MediaPlayerDevice): def __init__(self, host, port, name, timeout): """Initialize the Samsung device.""" + from samsungctl import exceptions from samsungctl import Remote - # Save a reference to the imported class + # Save a reference to the imported classes + self._exceptions_class = exceptions self._remote_class = Remote self._name = name # Assume that the TV is not muted @@ -101,6 +103,11 @@ class SamsungTVDevice(MediaPlayerDevice): 'timeout': timeout, } + if self._config['port'] == 8001: + self._config['method'] = 'websocket' + else: + self._config['method'] = 'legacy' + def update(self): """Retrieve the latest data.""" # Send an empty key to see if we are still connected @@ -119,14 +126,14 @@ class SamsungTVDevice(MediaPlayerDevice): try: self.get_remote().control(key) self._state = STATE_ON - except (self._remote_class.UnhandledResponse, - self._remote_class.AccessDenied, BrokenPipeError): + except (self._exceptions_class.UnhandledResponse, + self._exceptions_class.AccessDenied, BrokenPipeError): # We got a response so it's on. # BrokenPipe can occur when the commands is sent to fast self._state = STATE_ON self._remote = None return False - except (self._remote_class.ConnectionClosed, OSError): + except (self._exceptions_class.ConnectionClosed, OSError): self._state = STATE_OFF self._remote = None return False @@ -155,7 +162,10 @@ class SamsungTVDevice(MediaPlayerDevice): def turn_off(self): """Turn off media player.""" - self.send_key('KEY_POWEROFF') + if self._config['method'] == 'websocket': + self.send_key('KEY_POWER') + else: + self.send_key('KEY_POWEROFF') # Force closing of remote session to provide instant UI feedback self.get_remote().close() diff --git a/requirements_all.txt b/requirements_all.txt index 79cfbb5c588..e7e066290e2 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -525,7 +525,7 @@ radiotherm==1.2 rxv==0.4.0 # homeassistant.components.media_player.samsungtv -samsungctl==0.5.1 +samsungctl==0.6.0 # homeassistant.components.sensor.deutsche_bahn schiene==0.18 From 67b74abf8d38a1df42a0fb72ed19b1f99d10ecb3 Mon Sep 17 00:00:00 2001 From: Giannie Date: Tue, 3 Jan 2017 22:34:51 +0000 Subject: [PATCH 075/189] Allow selection of bluetooth device to use (#5104) Adding the device_id key to the bevice tracker component allows selecting the bluetooth device to use in case the default device does not have BLE Capabilities --- .../components/device_tracker/bluetooth_le_tracker.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/bluetooth_le_tracker.py b/homeassistant/components/device_tracker/bluetooth_le_tracker.py index 2505d6670a0..8c29bc94be5 100644 --- a/homeassistant/components/device_tracker/bluetooth_le_tracker.py +++ b/homeassistant/components/device_tracker/bluetooth_le_tracker.py @@ -19,9 +19,11 @@ REQUIREMENTS = ['gattlib==0.20150805'] BLE_PREFIX = 'BLE_' MIN_SEEN_NEW = 5 CONF_SCAN_DURATION = "scan_duration" +CONF_BLUETOOTH_DEVICE = "device_id" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_SCAN_DURATION, default=10): cv.positive_int + vol.Optional(CONF_SCAN_DURATION, default=10): cv.positive_int, + vol.Optional(CONF_BLUETOOTH_DEVICE, default="hci0"): cv.string }) @@ -55,7 +57,7 @@ def setup_scanner(hass, config, see): """Discover Bluetooth LE devices.""" _LOGGER.debug("Discovering Bluetooth LE devices") try: - service = DiscoveryService() + service = DiscoveryService(ble_dev_id) devices = service.discover(duration) _LOGGER.debug("Bluetooth LE devices discovered = %s", devices) except RuntimeError as error: @@ -65,6 +67,7 @@ def setup_scanner(hass, config, see): yaml_path = hass.config.path(YAML_DEVICES) duration = config.get(CONF_SCAN_DURATION) + ble_dev_id = config.get(CONF_BLUETOOTH_DEVICE) devs_to_track = [] devs_donot_track = [] From e17ce4f374dacd9cb80f71674f5941df2836e5ca Mon Sep 17 00:00:00 2001 From: Thibault Cohen Date: Tue, 3 Jan 2017 17:38:21 -0500 Subject: [PATCH 076/189] Improve Sharp Aquos TV component - Fixes #4973 (#5108) --- .../components/media_player/aquostv.py | 150 ++++++++++++++---- requirements_all.txt | 2 +- 2 files changed, 124 insertions(+), 28 deletions(-) diff --git a/homeassistant/components/media_player/aquostv.py b/homeassistant/components/media_player/aquostv.py index c39986d7588..5dc6635f8cc 100644 --- a/homeassistant/components/media_player/aquostv.py +++ b/homeassistant/components/media_player/aquostv.py @@ -9,18 +9,19 @@ import logging import voluptuous as vol from homeassistant.components.media_player import ( - SUPPORT_TURN_ON, SUPPORT_TURN_OFF, + SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, + SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_SELECT_SOURCE, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_VOLUME_SET, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN, - CONF_PORT, CONF_USERNAME, CONF_PASSWORD) + CONF_PORT, CONF_USERNAME, CONF_PASSWORD, CONF_TIMEOUT) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['sharp-aquos-rc==0.2'] +REQUIREMENTS = ['sharp_aquos_rc==0.3.2'] _LOGGER = logging.getLogger(__name__) @@ -28,10 +29,13 @@ DEFAULT_NAME = 'Sharp Aquos TV' DEFAULT_PORT = 10002 DEFAULT_USERNAME = 'admin' DEFAULT_PASSWORD = 'password' +DEFAULT_TIMEOUT = 0.5 +DEFAULT_RETRIES = 2 -SUPPORT_SHARPTV = SUPPORT_VOLUME_STEP | \ - SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_OFF | SUPPORT_TURN_ON +SUPPORT_SHARPTV = SUPPORT_TURN_OFF | \ + SUPPORT_NEXT_TRACK | SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | \ + SUPPORT_SELECT_SOURCE | SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP | \ + SUPPORT_VOLUME_SET PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, @@ -39,8 +43,21 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, vol.Optional(CONF_USERNAME, default=DEFAULT_USERNAME): cv.string, vol.Optional(CONF_PASSWORD, default=DEFAULT_PASSWORD): cv.string, + vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.string, + vol.Optional('retries', default=DEFAULT_RETRIES): cv.string, + vol.Optional('power_on_enabled', default=False): cv.boolean, }) +SOURCES = {0: 'TV / Antenna', + 1: 'HDMI_IN_1', + 2: 'HDMI_IN_2', + 3: 'HDMI_IN_3', + 4: 'HDMI_IN_4', + 5: 'COMPONENT IN', + 6: 'VIDEO_IN_1', + 7: 'VIDEO_IN_2', + 8: 'PC_IN'} + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): @@ -51,6 +68,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): port = config.get(CONF_PORT) username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) + power_on_enabled = config.get('power_on_enabled') if discovery_info: _LOGGER.debug('%s', discovery_info) @@ -62,54 +80,85 @@ def setup_platform(hass, config, add_devices, discovery_info=None): remote = sharp_aquos_rc.TV(host, port, username, - password) - add_devices([SharpAquosTVDevice(name, remote)]) + password, + timeout=20) + add_devices([SharpAquosTVDevice(name, remote, power_on_enabled)]) return True host = config.get(CONF_HOST) remote = sharp_aquos_rc.TV(host, port, username, - password) + password, + 15, + 1) - add_devices([SharpAquosTVDevice(name, remote)]) + add_devices([SharpAquosTVDevice(name, remote, power_on_enabled)]) return True +def _retry(func): + """Decorator to handle query retries.""" + def wrapper(obj, *args, **kwargs): + """Wrapper for all query functions.""" + update_retries = 5 + while update_retries > 0: + try: + func(obj, *args, **kwargs) + break + except (OSError, TypeError, ValueError): + update_retries -= 1 + if update_retries == 0: + obj.set_state(STATE_OFF) + return wrapper + + # pylint: disable=abstract-method class SharpAquosTVDevice(MediaPlayerDevice): """Representation of a Aquos TV.""" # pylint: disable=too-many-public-methods - def __init__(self, name, remote): + def __init__(self, name, remote, power_on_enabled=False): """Initialize the aquos device.""" + global SUPPORT_SHARPTV + self._power_on_enabled = power_on_enabled + if self._power_on_enabled: + SUPPORT_SHARPTV = SUPPORT_SHARPTV | SUPPORT_TURN_ON # Save a reference to the imported class self._name = name # Assume that the TV is not muted self._muted = False - # Assume that the TV is in Play mode - self._playing = True self._state = STATE_UNKNOWN self._remote = remote self._volume = 0 + self._source = None + self._source_list = list(SOURCES.values()) + def set_state(self, state): + """Set TV state.""" + self._state = state + + @_retry def update(self): """Retrieve the latest data.""" - try: - if self._remote.power() == 1: - self._state = STATE_ON - else: - self._state = STATE_OFF - - # Set TV to be able to remotely power on - # self._remote.power_on_command_settings(2) - if self._remote.mute() == 2: - self._muted = False - else: - self._muted = True - self._volume = self._remote.volume() / 60 - except OSError: + if self._remote.power() == 1: + self._state = STATE_ON + else: self._state = STATE_OFF + # Set TV to be able to remotely power on + if self._power_on_enabled: + self._remote.power_on_command_settings(2) + else: + self._remote.power_on_command_settings(0) + # Get mute state + if self._remote.mute() == 2: + self._muted = False + else: + self._muted = True + # Get source + self._source = SOURCES.get(self._remote.input()) + # Get volume + self._volume = self._remote.volume() / 60 @property def name(self): @@ -121,6 +170,16 @@ class SharpAquosTVDevice(MediaPlayerDevice): """Return the state of the device.""" return self._state + @property + def source(self): + """Return the current source.""" + return self._source + + @property + def source_list(self): + """Return the source list.""" + return self._source_list + @property def volume_level(self): """Volume level of the media player (0..1).""" @@ -136,26 +195,63 @@ class SharpAquosTVDevice(MediaPlayerDevice): """Flag of media commands that are supported.""" return SUPPORT_SHARPTV + @_retry def turn_off(self): """Turn off tvplayer.""" self._remote.power(0) + @_retry def volume_up(self): """Volume up the media player.""" self._remote.volume(int(self._volume * 60) + 2) + @_retry def volume_down(self): """Volume down media player.""" self._remote.volume(int(self._volume * 60) - 2) + @_retry def set_volume_level(self, level): """Set Volume media player.""" self._remote.volume(int(level * 60)) + @_retry def mute_volume(self, mute): """Send mute command.""" self._remote.mute(0) + @_retry def turn_on(self): """Turn the media player on.""" self._remote.power(1) + + @_retry + def media_play_pause(self): + """Simulate play pause media player.""" + self._remote.remote_button(40) + + @_retry + def media_play(self): + """Send play command.""" + self._remote.remote_button(16) + + @_retry + def media_pause(self): + """Send pause command.""" + self._remote.remote_button(16) + + @_retry + def media_next_track(self): + """Send next track command.""" + self._remote.remote_button(21) + + @_retry + def media_previous_track(self): + """Send the previous track command.""" + self._remote.remote_button(19) + + def select_source(self, source): + """Set the input source.""" + for key, value in SOURCES.items(): + if source == value: + self._remote.input(key) diff --git a/requirements_all.txt b/requirements_all.txt index e7e066290e2..92d5f39abb4 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -540,7 +540,7 @@ sendgrid==3.6.3 sense-hat==2.2.0 # homeassistant.components.media_player.aquostv -sharp-aquos-rc==0.2 +sharp_aquos_rc==0.3.2 # homeassistant.components.notify.slack slacker==0.9.30 From ebfb2c9b26bba08680f09118aa1226c2cc1a2656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Tue, 3 Jan 2017 23:45:11 +0100 Subject: [PATCH 077/189] Broadlink fix (#5065) * Broadlink fix * style fix * style fix * typo * restructure * Update broadlink.py * Update broadlink.py * Add support for more devices * fix library version * fix library version * fix library version * fix library version * fix library version * Update broadlink.py * lib version * remove lower * remove lower * refactor * refactor * refactor * authorization * authorization * refactor * lib version * lib version --- homeassistant/components/sensor/broadlink.py | 21 +++-- homeassistant/components/switch/broadlink.py | 95 +++++++++++--------- requirements_all.txt | 2 +- 3 files changed, 69 insertions(+), 49 deletions(-) diff --git a/homeassistant/components/sensor/broadlink.py b/homeassistant/components/sensor/broadlink.py index 53aac3d353a..5fda261b61c 100644 --- a/homeassistant/components/sensor/broadlink.py +++ b/homeassistant/components/sensor/broadlink.py @@ -19,7 +19,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['broadlink==0.2'] +REQUIREMENTS = ['broadlink==0.3'] _LOGGER = logging.getLogger(__name__) @@ -111,9 +111,7 @@ class BroadlinkData(object): self._device = broadlink.a1((ip_addr, 80), mac_addr) self._device.timeout = timeout self.update = Throttle(interval)(self._update) - try: - self._device.auth() - except socket.timeout: + if not self._auth(): _LOGGER.error("Failed to connect to device.") def _update(self, retry=2): @@ -123,8 +121,15 @@ class BroadlinkData(object): if retry < 1: _LOGGER.error(error) return - try: - self._device.auth() - except socket.timeout: - pass + if not self._auth(): + return return self._update(max(0, retry-1)) + + def _auth(self, retry=2): + try: + auth = self._device.auth() + except socket.timeout: + auth = False + if not auth and retry > 0: + return self._auth(max(0, retry-1)) + return auth diff --git a/homeassistant/components/switch/broadlink.py b/homeassistant/components/switch/broadlink.py index c2ae18ac5b3..7c561a3eb1f 100644 --- a/homeassistant/components/switch/broadlink.py +++ b/homeassistant/components/switch/broadlink.py @@ -21,7 +21,7 @@ from homeassistant.const import (CONF_FRIENDLY_NAME, CONF_SWITCHES, CONF_TYPE) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['broadlink==0.2'] +REQUIREMENTS = ['broadlink==0.3'] _LOGGER = logging.getLogger(__name__) @@ -30,7 +30,13 @@ DEFAULT_NAME = 'Broadlink switch' DEFAULT_TIMEOUT = 10 SERVICE_LEARN = "learn_command" -SENSOR_TYPES = ["rm", "sp1", "sp2"] +RM_TYPES = ["rm", "rm2", "rm_mini", "rm_pro_phicomm", "rm2_home_plus", + "rm2_home_plus_gdt", "rm2_pro_plus", "rm2_pro_plus2", + "rm2_pro_plus_bl", "rm_mini_shate"] +SP1_TYPES = ["sp1"] +SP2_TYPES = ["sp2", "honeywell_sp2", "sp3", "spmini2", "spminiplus"] + +SWITCH_TYPES = RM_TYPES + SP1_TYPES + SP2_TYPES SWITCH_SCHEMA = vol.Schema({ vol.Optional(CONF_COMMAND_OFF, default=None): cv.string, @@ -39,10 +45,12 @@ SWITCH_SCHEMA = vol.Schema({ }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}), + vol.Optional(CONF_SWITCHES, default={}): + vol.Schema({cv.slug: SWITCH_SCHEMA}), vol.Required(CONF_HOST): cv.string, vol.Required(CONF_MAC): cv.string, - vol.Optional(CONF_TYPE, default=SENSOR_TYPES[0]): vol.In(SENSOR_TYPES), + vol.Optional(CONF_FRIENDLY_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_TYPE, default=SWITCH_TYPES[0]): vol.In(SWITCH_TYPES), vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int }) @@ -51,21 +59,26 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup Broadlink switches.""" import broadlink devices = config.get(CONF_SWITCHES, {}) - switches = [] ip_addr = config.get(CONF_HOST) + friendly_name = config.get(CONF_FRIENDLY_NAME) mac_addr = binascii.unhexlify( config.get(CONF_MAC).encode().replace(b':', b'')) - sensor_type = config.get(CONF_TYPE) + switch_type = config.get(CONF_TYPE) persistent_notification = loader.get_component('persistent_notification') @asyncio.coroutine def _learn_command(call): try: - yield from hass.loop.run_in_executor(None, broadlink_device.auth) + auth = yield from hass.loop.run_in_executor(None, + broadlink_device.auth) except socket.timeout: + _LOGGER.error("Failed to connect to device, timeout.") + return + if not auth: _LOGGER.error("Failed to connect to device.") return + yield from hass.loop.run_in_executor(None, broadlink_device.enter_learning) @@ -88,17 +101,26 @@ def setup_platform(hass, config, add_devices, discovery_info=None): "Did not received any signal", title='Broadlink switch') - if sensor_type == "rm": + if switch_type in RM_TYPES: broadlink_device = broadlink.rm((ip_addr, 80), mac_addr) - switch = BroadlinkRMSwitch hass.services.register(DOMAIN, SERVICE_LEARN + '_' + ip_addr, _learn_command) - elif sensor_type == "sp1": + switches = [] + for object_id, device_config in devices.items(): + switches.append( + BroadlinkRMSwitch( + device_config.get(CONF_FRIENDLY_NAME, object_id), + broadlink_device, + device_config.get(CONF_COMMAND_ON), + device_config.get(CONF_COMMAND_OFF) + ) + ) + elif switch_type in SP1_TYPES: broadlink_device = broadlink.sp1((ip_addr, 80), mac_addr) - switch = BroadlinkSP1Switch - elif sensor_type == "sp2": + switches = [BroadlinkSP1Switch(friendly_name, broadlink_device)] + elif switch_type in SP2_TYPES: broadlink_device = broadlink.sp2((ip_addr, 80), mac_addr) - switch = BroadlinkSP2Switch + switches = [BroadlinkSP2Switch(friendly_name, broadlink_device)] broadlink_device.timeout = config.get(CONF_TIMEOUT) try: @@ -106,23 +128,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): except socket.timeout: _LOGGER.error("Failed to connect to device.") - for object_id, device_config in devices.items(): - switches.append( - switch( - device_config.get(CONF_FRIENDLY_NAME, object_id), - device_config.get(CONF_COMMAND_ON), - device_config.get(CONF_COMMAND_OFF), - broadlink_device - ) - ) - add_devices(switches) class BroadlinkRMSwitch(SwitchDevice): """Representation of an Broadlink switch.""" - def __init__(self, friendly_name, command_on, command_off, device): + def __init__(self, friendly_name, device, command_on, command_off): """Initialize the switch.""" self._name = friendly_name self._state = False @@ -173,20 +185,27 @@ class BroadlinkRMSwitch(SwitchDevice): if retry < 1: _LOGGER.error(error) return False - try: - self._device.auth() - except socket.timeout: - pass + if not self._auth(): + return False return self._sendpacket(packet, max(0, retry-1)) return True + def _auth(self, retry=2): + try: + auth = self._device.auth() + except socket.timeout: + auth = False + if not auth and retry > 0: + return self._auth(max(0, retry-1)) + return auth + class BroadlinkSP1Switch(BroadlinkRMSwitch): """Representation of an Broadlink switch.""" - def __init__(self, friendly_name, command_on, command_off, device): + def __init__(self, friendly_name, device): """Initialize the switch.""" - super().__init__(friendly_name, command_on, command_off, device) + super().__init__(friendly_name, device, None, None) self._command_on = 1 self._command_off = 0 @@ -198,10 +217,8 @@ class BroadlinkSP1Switch(BroadlinkRMSwitch): if retry < 1: _LOGGER.error(error) return False - try: - self._device.auth() - except socket.timeout: - pass + if not self._auth(): + return False return self._sendpacket(packet, max(0, retry-1)) return True @@ -209,9 +226,9 @@ class BroadlinkSP1Switch(BroadlinkRMSwitch): class BroadlinkSP2Switch(BroadlinkSP1Switch): """Representation of an Broadlink switch.""" - def __init__(self, friendly_name, command_on, command_off, device): + def __init__(self, friendly_name, device): """Initialize the switch.""" - super().__init__(friendly_name, command_on, command_off, device) + super().__init__(friendly_name, device) @property def assumed_state(self): @@ -234,10 +251,8 @@ class BroadlinkSP2Switch(BroadlinkSP1Switch): if retry < 1: _LOGGER.error(error) return - try: - self._device.auth() - except socket.timeout: - pass + if not self._auth(): + return return self._update(max(0, retry-1)) if state is None and retry > 0: return self._update(max(0, retry-1)) diff --git a/requirements_all.txt b/requirements_all.txt index 92d5f39abb4..4e25d3e2362 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -68,7 +68,7 @@ boto3==1.3.1 # homeassistant.components.sensor.broadlink # homeassistant.components.switch.broadlink -broadlink==0.2 +broadlink==0.3 # homeassistant.components.sensor.coinmarketcap coinmarketcap==2.0.1 From b78cf4772df9efc83c11b4c6e3f3d3916a335a05 Mon Sep 17 00:00:00 2001 From: Nathan Henrie Date: Tue, 3 Jan 2017 15:46:30 -0700 Subject: [PATCH 078/189] Add ability to set rpi_rf `tx_repeats` attribute (#5070) * Add ability to set rpi_rf `tx_repeats` attribute Uses the current `rpi_rf` default of 10 Closes home-assistant/home-assistant#5069 * Use `signal_repetitions` instead of `repeats` for consistency --- homeassistant/components/switch/rpi_rf.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/switch/rpi_rf.py b/homeassistant/components/switch/rpi_rf.py index 2822f2fc9d4..361f4e0e934 100644 --- a/homeassistant/components/switch/rpi_rf.py +++ b/homeassistant/components/switch/rpi_rf.py @@ -21,13 +21,17 @@ CONF_CODE_ON = 'code_on' CONF_GPIO = 'gpio' CONF_PROTOCOL = 'protocol' CONF_PULSELENGTH = 'pulselength' +CONF_SIGNAL_REPETITIONS = 'signal_repetitions' DEFAULT_PROTOCOL = 1 +DEFAULT_SIGNAL_REPETITIONS = 10 SWITCH_SCHEMA = vol.Schema({ vol.Required(CONF_CODE_OFF): cv.positive_int, vol.Required(CONF_CODE_ON): cv.positive_int, vol.Optional(CONF_PULSELENGTH): cv.positive_int, + vol.Optional(CONF_SIGNAL_REPETITIONS, + default=DEFAULT_SIGNAL_REPETITIONS): cv.positive_int, vol.Optional(CONF_PROTOCOL, default=DEFAULT_PROTOCOL): cv.positive_int, }) @@ -55,6 +59,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): rfdevice, properties.get(CONF_PROTOCOL), properties.get(CONF_PULSELENGTH), + properties.get(CONF_SIGNAL_REPETITIONS), properties.get(CONF_CODE_ON), properties.get(CONF_CODE_OFF) ) @@ -69,7 +74,7 @@ class RPiRFSwitch(SwitchDevice): """Representation of a GPIO RF switch.""" def __init__(self, hass, name, rfdevice, protocol, pulselength, - code_on, code_off): + signal_repetitions, code_on, code_off): """Initialize the switch.""" self._hass = hass self._name = name @@ -79,6 +84,7 @@ class RPiRFSwitch(SwitchDevice): self._pulselength = pulselength self._code_on = code_on self._code_off = code_off + self._rfdevice.tx_repeat = signal_repetitions @property def should_poll(self): From 2a7a419ff3e3f964608d16f6bf77774f040f6578 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Tue, 3 Jan 2017 17:51:23 -0500 Subject: [PATCH 079/189] Async support in media player component (#4995) * Async support in media player component * Removed redundant new tests * Update to new 'reduce coroutine' standards * Remove extra create_task --- .../components/media_player/__init__.py | 375 ++++++++++++------ tests/components/media_player/test_demo.py | 3 +- 2 files changed, 244 insertions(+), 134 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 3dea75df874..aa30c1abdb1 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -5,6 +5,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/media_player/ """ import asyncio +import functools as ft import hashlib import logging import os @@ -100,20 +101,62 @@ SUPPORT_SELECT_SOURCE = 2048 SUPPORT_STOP = 4096 SUPPORT_CLEAR_PLAYLIST = 8192 -# simple services that only take entity_id(s) as optional argument +# Service call validation schemas +MEDIA_PLAYER_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.entity_ids, +}) + +MEDIA_PLAYER_SET_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_VOLUME_LEVEL): cv.small_float, +}) + +MEDIA_PLAYER_MUTE_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_VOLUME_MUTED): cv.boolean, +}) + +MEDIA_PLAYER_MEDIA_SEEK_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_SEEK_POSITION): + vol.All(vol.Coerce(float), vol.Range(min=0)), +}) + +MEDIA_PLAYER_SELECT_SOURCE_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_INPUT_SOURCE): cv.string, +}) + +MEDIA_PLAYER_PLAY_MEDIA_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ + vol.Required(ATTR_MEDIA_CONTENT_TYPE): cv.string, + vol.Required(ATTR_MEDIA_CONTENT_ID): cv.string, + vol.Optional(ATTR_MEDIA_ENQUEUE): cv.boolean, +}) + SERVICE_TO_METHOD = { - SERVICE_TURN_ON: 'turn_on', - SERVICE_TURN_OFF: 'turn_off', - SERVICE_TOGGLE: 'toggle', - SERVICE_VOLUME_UP: 'volume_up', - SERVICE_VOLUME_DOWN: 'volume_down', - SERVICE_MEDIA_PLAY_PAUSE: 'media_play_pause', - SERVICE_MEDIA_PLAY: 'media_play', - SERVICE_MEDIA_PAUSE: 'media_pause', - SERVICE_MEDIA_STOP: 'media_stop', - SERVICE_MEDIA_NEXT_TRACK: 'media_next_track', - SERVICE_MEDIA_PREVIOUS_TRACK: 'media_previous_track', - SERVICE_CLEAR_PLAYLIST: 'clear_playlist' + SERVICE_TURN_ON: {'method': 'async_turn_on'}, + SERVICE_TURN_OFF: {'method': 'async_turn_off'}, + SERVICE_TOGGLE: {'method': 'async_toggle'}, + SERVICE_VOLUME_UP: {'method': 'async_volume_up'}, + SERVICE_VOLUME_DOWN: {'method': 'async_volume_down'}, + SERVICE_MEDIA_PLAY_PAUSE: {'method': 'async_media_play_pause'}, + SERVICE_MEDIA_PLAY: {'method': 'async_media_play'}, + SERVICE_MEDIA_PAUSE: {'method': 'async_media_pause'}, + SERVICE_MEDIA_STOP: {'method': 'async_media_stop'}, + SERVICE_MEDIA_NEXT_TRACK: {'method': 'async_media_next_track'}, + SERVICE_MEDIA_PREVIOUS_TRACK: {'method': 'async_media_previous_track'}, + SERVICE_CLEAR_PLAYLIST: {'method': 'async_clear_playlist'}, + SERVICE_VOLUME_SET: { + 'method': 'async_set_volume_level', + 'schema': MEDIA_PLAYER_SET_VOLUME_SCHEMA}, + SERVICE_VOLUME_MUTE: { + 'method': 'async_mute_volume', + 'schema': MEDIA_PLAYER_MUTE_VOLUME_SCHEMA}, + SERVICE_MEDIA_SEEK: { + 'method': 'async_media_seek', + 'schema': MEDIA_PLAYER_MEDIA_SEEK_SCHEMA}, + SERVICE_SELECT_SOURCE: { + 'method': 'async_select_source', + 'schema': MEDIA_PLAYER_SELECT_SOURCE_SCHEMA}, + SERVICE_PLAY_MEDIA: { + 'method': 'async_play_media', + 'schema': MEDIA_PLAYER_PLAY_MEDIA_SCHEMA}, } ATTR_TO_PROPERTY = [ @@ -141,34 +184,6 @@ ATTR_TO_PROPERTY = [ ATTR_INPUT_SOURCE_LIST, ] -# Service call validation schemas -MEDIA_PLAYER_SCHEMA = vol.Schema({ - ATTR_ENTITY_ID: cv.entity_ids, -}) - -MEDIA_PLAYER_MUTE_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_MEDIA_VOLUME_MUTED): cv.boolean, -}) - -MEDIA_PLAYER_SET_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_MEDIA_VOLUME_LEVEL): cv.small_float, -}) - -MEDIA_PLAYER_MEDIA_SEEK_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_MEDIA_SEEK_POSITION): - vol.All(vol.Coerce(float), vol.Range(min=0)), -}) - -MEDIA_PLAYER_PLAY_MEDIA_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_MEDIA_CONTENT_TYPE): cv.string, - vol.Required(ATTR_MEDIA_CONTENT_ID): cv.string, - vol.Optional(ATTR_MEDIA_ENQUEUE): cv.boolean, -}) - -MEDIA_PLAYER_SELECT_SOURCE_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ - vol.Required(ATTR_INPUT_SOURCE): cv.string, -}) - def is_on(hass, entity_id=None): """ @@ -304,109 +319,67 @@ def clear_playlist(hass, entity_id=None): hass.services.call(DOMAIN, SERVICE_CLEAR_PLAYLIST, data) -def setup(hass, config): +@asyncio.coroutine +def async_setup(hass, config): """Track states and offer events for media_players.""" component = EntityComponent( logging.getLogger(__name__), DOMAIN, hass, SCAN_INTERVAL) hass.http.register_view(MediaPlayerImageView(component.entities)) - component.setup(config) + yield from component.async_setup(config) - descriptions = load_yaml_config_file( - os.path.join(os.path.dirname(__file__), 'services.yaml')) + descriptions = yield from hass.loop.run_in_executor( + None, load_yaml_config_file, os.path.join( + os.path.dirname(__file__), 'services.yaml')) - def media_player_service_handler(service): + @asyncio.coroutine + def async_service_handler(service): """Map services to methods on MediaPlayerDevice.""" - method = SERVICE_TO_METHOD[service.service] + method = SERVICE_TO_METHOD.get(service.service) + if not method: + return - for player in component.extract_from_service(service): - getattr(player, method)() + params = {} + if service.service == SERVICE_VOLUME_SET: + params['volume'] = service.data.get(ATTR_MEDIA_VOLUME_LEVEL) + elif service.service == SERVICE_VOLUME_MUTE: + params['mute'] = service.data.get(ATTR_MEDIA_VOLUME_MUTED) + elif service.service == SERVICE_MEDIA_SEEK: + params['position'] = service.data.get(ATTR_MEDIA_SEEK_POSITION) + elif service.service == SERVICE_SELECT_SOURCE: + params['source'] = service.data.get(ATTR_INPUT_SOURCE) + elif service.service == SERVICE_PLAY_MEDIA: + params['media_type'] = \ + service.data.get(ATTR_MEDIA_CONTENT_TYPE) + params['media_id'] = service.data.get(ATTR_MEDIA_CONTENT_ID) + params[ATTR_MEDIA_ENQUEUE] = \ + service.data.get(ATTR_MEDIA_ENQUEUE) + target_players = component.async_extract_from_service(service) - if player.should_poll: - player.update_ha_state(True) + update_tasks = [] + for player in target_players: + yield from getattr(player, method['method'])(**params) + + for player in target_players: + if not player.should_poll: + continue + + update_coro = player.async_update_ha_state(True) + if hasattr(player, 'async_update'): + update_tasks.append(update_coro) + else: + yield from update_coro + + if update_tasks: + yield from asyncio.wait(update_tasks, loop=hass.loop) for service in SERVICE_TO_METHOD: - hass.services.register(DOMAIN, service, media_player_service_handler, - descriptions.get(service), - schema=MEDIA_PLAYER_SCHEMA) - - def volume_set_service(service): - """Set specified volume on the media player.""" - volume = service.data.get(ATTR_MEDIA_VOLUME_LEVEL) - - for player in component.extract_from_service(service): - player.set_volume_level(volume) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_VOLUME_SET, volume_set_service, - descriptions.get(SERVICE_VOLUME_SET), - schema=MEDIA_PLAYER_SET_VOLUME_SCHEMA) - - def volume_mute_service(service): - """Mute (true) or unmute (false) the media player.""" - mute = service.data.get(ATTR_MEDIA_VOLUME_MUTED) - - for player in component.extract_from_service(service): - player.mute_volume(mute) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_VOLUME_MUTE, volume_mute_service, - descriptions.get(SERVICE_VOLUME_MUTE), - schema=MEDIA_PLAYER_MUTE_VOLUME_SCHEMA) - - def media_seek_service(service): - """Seek to a position.""" - position = service.data.get(ATTR_MEDIA_SEEK_POSITION) - - for player in component.extract_from_service(service): - player.media_seek(position) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_MEDIA_SEEK, media_seek_service, - descriptions.get(SERVICE_MEDIA_SEEK), - schema=MEDIA_PLAYER_MEDIA_SEEK_SCHEMA) - - def select_source_service(service): - """Change input to selected source.""" - input_source = service.data.get(ATTR_INPUT_SOURCE) - - for player in component.extract_from_service(service): - player.select_source(input_source) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_SELECT_SOURCE, - select_source_service, - descriptions.get(SERVICE_SELECT_SOURCE), - schema=MEDIA_PLAYER_SELECT_SOURCE_SCHEMA) - - def play_media_service(service): - """Play specified media_id on the media player.""" - media_type = service.data.get(ATTR_MEDIA_CONTENT_TYPE) - media_id = service.data.get(ATTR_MEDIA_CONTENT_ID) - enqueue = service.data.get(ATTR_MEDIA_ENQUEUE) - - kwargs = { - ATTR_MEDIA_ENQUEUE: enqueue, - } - - for player in component.extract_from_service(service): - player.play_media(media_type, media_id, **kwargs) - - if player.should_poll: - player.update_ha_state(True) - - hass.services.register(DOMAIN, SERVICE_PLAY_MEDIA, play_media_service, - descriptions.get(SERVICE_PLAY_MEDIA), - schema=MEDIA_PLAYER_PLAY_MEDIA_SCHEMA) + schema = SERVICE_TO_METHOD[service].get( + 'schema', MEDIA_PLAYER_SCHEMA) + hass.services.async_register( + DOMAIN, service, async_service_handler, + descriptions.get(service), schema=schema) return True @@ -548,54 +521,158 @@ class MediaPlayerDevice(Entity): """Turn the media player on.""" raise NotImplementedError() + def async_turn_on(self): + """Turn the media player on. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_on) + def turn_off(self): """Turn the media player off.""" raise NotImplementedError() + def async_turn_off(self): + """Turn the media player off. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.turn_off) + def mute_volume(self, mute): """Mute the volume.""" raise NotImplementedError() + def async_mute_volume(self, mute): + """Mute the volume. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.mute_volume, mute) + def set_volume_level(self, volume): """Set volume level, range 0..1.""" raise NotImplementedError() + def async_set_volume_level(self, volume): + """Set volume level, range 0..1. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.set_volume_level, volume) + def media_play(self): """Send play commmand.""" raise NotImplementedError() + def async_media_play(self): + """Send play commmand. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_play) + def media_pause(self): """Send pause command.""" raise NotImplementedError() + def async_media_pause(self): + """Send pause command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_pause) + def media_stop(self): """Send stop command.""" raise NotImplementedError() + def async_media_stop(self): + """Send stop command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_stop) + def media_previous_track(self): """Send previous track command.""" raise NotImplementedError() + def async_media_previous_track(self): + """Send previous track command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_previous_track) + def media_next_track(self): """Send next track command.""" raise NotImplementedError() + def async_media_next_track(self): + """Send next track command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_next_track) + def media_seek(self, position): """Send seek command.""" raise NotImplementedError() - def play_media(self, media_type, media_id): + def async_media_seek(self, position): + """Send seek command. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.media_seek, position) + + def play_media(self, media_type, media_id, **kwargs): """Play a piece of media.""" raise NotImplementedError() + def async_play_media(self, media_type, media_id, **kwargs): + """Play a piece of media. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, ft.partial(self.play_media, media_type, media_id, **kwargs)) + def select_source(self, source): """Select input source.""" raise NotImplementedError() + def async_select_source(self, source): + """Select input source. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.select_source, source) + def clear_playlist(self): """Clear players playlist.""" raise NotImplementedError() + def async_clear_playlist(self): + """Clear players playlist. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor( + None, self.clear_playlist) + # No need to overwrite these. @property def support_pause(self): @@ -654,16 +731,40 @@ class MediaPlayerDevice(Entity): else: self.turn_off() + def async_toggle(self): + """Toggle the power on the media player. + + This method must be run in the event loop and returns a coroutine. + """ + if self.state in [STATE_OFF, STATE_IDLE]: + return self.async_turn_on() + else: + return self.async_turn_off() + def volume_up(self): """Turn volume up for media player.""" if self.volume_level < 1: self.set_volume_level(min(1, self.volume_level + .1)) + def async_volume_up(self): + """Turn volume up for media player. + + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_volume_level(min(1, self.volume_level + .1)) + def volume_down(self): """Turn volume down for media player.""" if self.volume_level > 0: self.set_volume_level(max(0, self.volume_level - .1)) + def async_volume_down(self): + """Turn volume down for media player. + + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_volume_level(max(0, self.volume_level - .1)) + def media_play_pause(self): """Play or pause the media player.""" if self.state == STATE_PLAYING: @@ -671,6 +772,16 @@ class MediaPlayerDevice(Entity): else: self.media_play() + def async_media_play_pause(self): + """Play or pause the media player. + + This method must be run in the event loop and returns a coroutine. + """ + if self.state == STATE_PLAYING: + return self.async_media_pause() + else: + return self.async_media_play() + @property def entity_picture(self): """Return image of the media playing.""" diff --git a/tests/components/media_player/test_demo.py b/tests/components/media_player/test_demo.py index 4da1fb6a725..a9c75e90d37 100644 --- a/tests/components/media_player/test_demo.py +++ b/tests/components/media_player/test_demo.py @@ -69,7 +69,6 @@ class TestDemoMediaPlayer(unittest.TestCase): self.hass, mp.DOMAIN, {'media_player': {'platform': 'demo'}}) state = self.hass.states.get(entity_id) - print(state) assert 1.0 == state.attributes.get('volume_level') mp.set_volume_level(self.hass, None, entity_id) @@ -203,7 +202,7 @@ class TestDemoMediaPlayer(unittest.TestCase): state.attributes.get('supported_media_commands')) @patch('homeassistant.components.media_player.demo.DemoYoutubePlayer.' - 'media_seek') + 'media_seek', autospec=True) def test_play_media(self, mock_seek): """Test play_media .""" assert setup_component( From d9614cff464b5bbbfb9e8e6b0645b48ae75ad4b1 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Tue, 3 Jan 2017 23:54:11 +0100 Subject: [PATCH 080/189] Improve async/multithreaded behavior of tellstick code (#4989) * Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity. * Refactor Tellstick object model for increased clarity. * Update comments. Unify better with sensors. Fix typo bug. Add debug logging. * Refactor tellstick code for increased readability. Especially highlight if "device" is a telldus core device or a HA entity. * Refactor Tellstick object model for increased clarity. * Update comments. Unify better with sensors. Fix typo bug. Add debug logging. * Fix lint issues. * Remove global variable according to hint from balloob. * Better async/threading behavior for tellstick. * Fix lint/style checks. * Use hass.async_add_job --- homeassistant/components/light/tellstick.py | 9 +- homeassistant/components/switch/tellstick.py | 6 +- homeassistant/components/tellstick.py | 106 ++++++++++++------- 3 files changed, 77 insertions(+), 44 deletions(-) diff --git a/homeassistant/components/light/tellstick.py b/homeassistant/components/light/tellstick.py index d23d5e2c4d6..ea908fda02f 100644 --- a/homeassistant/components/light/tellstick.py +++ b/homeassistant/components/light/tellstick.py @@ -80,9 +80,10 @@ class TellstickLight(TellstickDevice, Light): else: self._state = False - def _send_tellstick_command(self): - """Let tellcore update the device to match the current state.""" - if self._state: - self._tellcore_device.dim(self._brightness) + def _send_device_command(self, requested_state, requested_data): + """Let tellcore update the actual device to the requested state.""" + if requested_state: + brightness = requested_data + self._tellcore_device.dim(brightness) else: self._tellcore_device.turn_off() diff --git a/homeassistant/components/switch/tellstick.py b/homeassistant/components/switch/tellstick.py index 46b1ad0aa49..094db06c49f 100644 --- a/homeassistant/components/switch/tellstick.py +++ b/homeassistant/components/switch/tellstick.py @@ -46,9 +46,9 @@ class TellstickSwitch(TellstickDevice, ToggleEntity): """Update the device entity state to match the arguments.""" self._state = new_state - def _send_tellstick_command(self): - """Let tellcore update the device to match the current state.""" - if self._state: + def _send_device_command(self, requested_state, requested_data): + """Let tellcore update the actual device to the requested state.""" + if requested_state: self._tellcore_device.turn_on() else: self._tellcore_device.turn_off() diff --git a/homeassistant/components/tellstick.py b/homeassistant/components/tellstick.py index e957ef5e2a8..e6031a91ab4 100644 --- a/homeassistant/components/tellstick.py +++ b/homeassistant/components/tellstick.py @@ -27,7 +27,7 @@ ATTR_DISCOVER_CONFIG = 'config' # Use a global tellstick domain lock to avoid getting Tellcore errors when # calling concurrently. -TELLSTICK_LOCK = threading.Lock() +TELLSTICK_LOCK = threading.RLock() # A TellstickRegistry that keeps a map from tellcore_id to the corresponding # tellcore_device and HA device (entity). @@ -59,12 +59,12 @@ def _discover(hass, config, component_name, found_tellcore_devices): def setup(hass, config): """Setup the Tellstick component.""" from tellcore.constants import TELLSTICK_DIM - from tellcore.library import DirectCallbackDispatcher + from tellcore.telldus import AsyncioCallbackDispatcher from tellcore.telldus import TelldusCore try: tellcore_lib = TelldusCore( - callback_dispatcher=DirectCallbackDispatcher()) + callback_dispatcher=AsyncioCallbackDispatcher(hass.loop)) except OSError: _LOGGER.exception('Could not initialize Tellstick') return False @@ -115,8 +115,7 @@ class TellstickRegistry(object): ha_device = self._id_to_ha_device_map.get(tellcore_id, None) if ha_device is not None: # Pass it on to the HA device object - ha_device.update_from_tellcore(tellcore_command, tellcore_data) - ha_device.schedule_update_ha_state() + ha_device.update_from_callback(tellcore_command, tellcore_data) def _setup_tellcore_callback(self, hass, tellcore_lib): """Register the callback handler.""" @@ -156,12 +155,17 @@ class TellstickDevice(Entity): """Initalize the Tellstick device.""" self._signal_repetitions = signal_repetitions self._state = None + self._requested_state = None + self._requested_data = None + self._repeats_left = 0 + # Look up our corresponding tellcore device self._tellcore_device = tellcore_registry.get_tellcore_device( tellcore_id) + self._name = self._tellcore_device.name # Query tellcore for the current state - self.update() - # Add ourselves to the mapping + self._update_from_tellcore() + # Add ourselves to the mapping for callbacks tellcore_registry.register_ha_device(tellcore_id, self) @property @@ -177,7 +181,7 @@ class TellstickDevice(Entity): @property def name(self): """Return the name of the device as reported by tellcore.""" - return self._tellcore_device.name + return self._name @property def is_on(self): @@ -196,60 +200,88 @@ class TellstickDevice(Entity): """Update the device entity state to match the arguments.""" raise NotImplementedError - def _send_tellstick_command(self): - """Let tellcore update the device to match the current state.""" + def _send_device_command(self, requested_state, requested_data): + """Let tellcore update the actual device to the requested state.""" raise NotImplementedError - def _do_action(self, new_state, data): - """The logic for actually turning on or off the device.""" + def _send_repeated_command(self): + """Send a tellstick command once and decrease the repeat count.""" from tellcore.library import TelldusError with TELLSTICK_LOCK: - # Update self with requested new state + if self._repeats_left > 0: + self._repeats_left -= 1 + try: + self._send_device_command(self._requested_state, + self._requested_data) + except TelldusError as err: + _LOGGER.error(err) + + def _change_device_state(self, new_state, data): + """The logic for actually turning on or off the device.""" + with TELLSTICK_LOCK: + # Set the requested state and number of repeats before calling + # _send_repeated_command the first time. Subsequent calls will be + # made from the callback. (We don't want to queue a lot of commands + # in case the user toggles the switch the other way before the + # queue is fully processed.) + self._requested_state = new_state + self._requested_data = data + self._repeats_left = self._signal_repetitions + self._send_repeated_command() + + # Sooner or later this will propagate to the model from the + # callback, but for a fluid UI experience update it directly. self._update_model(new_state, data) - # ... and then send this new state to the Tellstick - try: - for _ in range(self._signal_repetitions): - self._send_tellstick_command() - except TelldusError: - _LOGGER.error(TelldusError) - self.update_ha_state() + self.schedule_update_ha_state() def turn_on(self, **kwargs): """Turn the switch on.""" - self._do_action(True, self._parse_ha_data(kwargs)) + self._change_device_state(True, self._parse_ha_data(kwargs)) def turn_off(self, **kwargs): """Turn the switch off.""" - self._do_action(False, None) + self._change_device_state(False, None) - def update_from_tellcore(self, tellcore_command, tellcore_data): - """Handle updates from the tellcore callback.""" + def _update_model_from_command(self, tellcore_command, tellcore_data): + """Update the model, from a sent tellcore command and data.""" from tellcore.constants import (TELLSTICK_TURNON, TELLSTICK_TURNOFF, TELLSTICK_DIM) if tellcore_command not in [TELLSTICK_TURNON, TELLSTICK_TURNOFF, TELLSTICK_DIM]: - _LOGGER.debug("Unhandled tellstick command: %d", - tellcore_command) + _LOGGER.debug("Unhandled tellstick command: %d", tellcore_command) return self._update_model(tellcore_command != TELLSTICK_TURNOFF, self._parse_tellcore_data(tellcore_data)) - def update(self): - """Poll the current state of the device.""" + def update_from_callback(self, tellcore_command, tellcore_data): + """Handle updates from the tellcore callback.""" + self._update_model_from_command(tellcore_command, tellcore_data) + self.schedule_update_ha_state() + + # This is a benign race on _repeats_left -- it's checked with the lock + # in _send_repeated_command. + if self._repeats_left > 0: + self.hass.async_add_job(self._send_repeated_command) + + def _update_from_tellcore(self): + """Read the current state of the device from the tellcore library.""" from tellcore.library import TelldusError from tellcore.constants import (TELLSTICK_TURNON, TELLSTICK_TURNOFF, TELLSTICK_DIM) - try: - last_tellcore_command = self._tellcore_device.last_sent_command( - TELLSTICK_TURNON | TELLSTICK_TURNOFF | TELLSTICK_DIM - ) - last_tellcore_data = self._tellcore_device.last_sent_value() + with TELLSTICK_LOCK: + try: + last_command = self._tellcore_device.last_sent_command( + TELLSTICK_TURNON | TELLSTICK_TURNOFF | TELLSTICK_DIM) + last_data = self._tellcore_device.last_sent_value() + self._update_model_from_command(last_command, last_data) + except TelldusError as err: + _LOGGER.error(err) - self.update_from_tellcore(last_tellcore_command, - last_tellcore_data) - except TelldusError: - _LOGGER.error(TelldusError) + def update(self): + """Poll the current state of the device.""" + self._update_from_tellcore() + self.schedule_update_ha_state() From 8e61fab579fabbf78360d7b4c6baee7a7d71d938 Mon Sep 17 00:00:00 2001 From: Oliver Date: Wed, 4 Jan 2017 00:02:44 +0100 Subject: [PATCH 081/189] Pushed to another version of denonavr library with fixes for AVR-nonX devices (#5156) --- homeassistant/components/media_player/denonavr.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/denonavr.py b/homeassistant/components/media_player/denonavr.py index 5784fd6c829..edae45e564d 100644 --- a/homeassistant/components/media_player/denonavr.py +++ b/homeassistant/components/media_player/denonavr.py @@ -19,7 +19,7 @@ from homeassistant.const import ( CONF_NAME, STATE_ON) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['denonavr==0.2.2'] +REQUIREMENTS = ['denonavr==0.3.0'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 4e25d3e2362..ca0530912cc 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -81,7 +81,7 @@ colorlog>2.1,<3 concord232==0.14 # homeassistant.components.media_player.denonavr -denonavr==0.2.2 +denonavr==0.3.0 # homeassistant.components.media_player.directv directpy==0.1 From 3f7a6290797dd31285d58c2a9f14b71a30153684 Mon Sep 17 00:00:00 2001 From: Florian Holzapfel Date: Wed, 4 Jan 2017 13:16:52 +0100 Subject: [PATCH 082/189] fix #5157 (#5173) --- homeassistant/components/media_player/panasonic_viera.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/panasonic_viera.py b/homeassistant/components/media_player/panasonic_viera.py index b345fcf4884..4585d251d9f 100644 --- a/homeassistant/components/media_player/panasonic_viera.py +++ b/homeassistant/components/media_player/panasonic_viera.py @@ -133,10 +133,13 @@ class PanasonicVieraTVDevice(MediaPlayerDevice): """Turn on the media player.""" if self._mac: self._wol.send_magic_packet(self._mac) + self._state = STATE_ON def turn_off(self): """Turn off media player.""" - self.send_key('NRC_POWER-ONOFF') + if self._state != STATE_OFF: + self.send_key('NRC_POWER-ONOFF') + self._state = STATE_OFF def volume_up(self): """Volume up the media player.""" From d09dcc4b03426e2f0216c64153ca8baedc6e0d90 Mon Sep 17 00:00:00 2001 From: Gopal Date: Wed, 4 Jan 2017 18:23:29 +0530 Subject: [PATCH 083/189] Timeout and Constant added --- homeassistant/components/notify/facebook.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/notify/facebook.py b/homeassistant/components/notify/facebook.py index 630d5453daf..2acabcf02c0 100644 --- a/homeassistant/components/notify/facebook.py +++ b/homeassistant/components/notify/facebook.py @@ -13,6 +13,7 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.notify import ( ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService) +from homeassistant.const import CONTENT_TYPE_JSON _LOGGER = logging.getLogger(__name__) @@ -42,7 +43,7 @@ class FacebookNotificationService(BaseNotificationService): targets = kwargs.get(ATTR_TARGET) if not targets: - _LOGGER.info("At least 1 target is required") + _LOGGER.error("At least 1 target is required") return for target in targets: @@ -53,7 +54,8 @@ class FacebookNotificationService(BaseNotificationService): import json resp = requests.post(BASE_URL, data=json.dumps(body), params=payload, - headers={'Content-Type': 'application/json'}) + headers={'Content-Type': CONTENT_TYPE_JSON}, + timeout=10) if resp.status_code != 200: obj = resp.json() error_message = obj['error']['message'] From 6ed3c6960480df4f6c2c0f2d6c76ad4ed6c24896 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 4 Jan 2017 10:55:16 -0800 Subject: [PATCH 084/189] Bump uvcclient to 0.10.0 (#5175) This brings fixes for newer versions of unifi-video and a few fixes. --- homeassistant/components/camera/uvc.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/camera/uvc.py b/homeassistant/components/camera/uvc.py index c29100ecaad..c5252209996 100644 --- a/homeassistant/components/camera/uvc.py +++ b/homeassistant/components/camera/uvc.py @@ -14,7 +14,7 @@ from homeassistant.const import CONF_PORT from homeassistant.components.camera import Camera, PLATFORM_SCHEMA import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['uvcclient==0.9.0'] +REQUIREMENTS = ['uvcclient==0.10.0'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index ca0530912cc..709f7ccd8ec 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -597,7 +597,7 @@ uber_rides==0.2.7 urllib3 # homeassistant.components.camera.uvc -uvcclient==0.9.0 +uvcclient==0.10.0 # homeassistant.components.device_tracker.volvooncall volvooncall==0.1.1 From 5e8e2a8312e3de769267f3c8d06341b3b310dd5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Wed, 4 Jan 2017 21:06:09 +0100 Subject: [PATCH 085/189] Ping device tracker (#5176) * Ping device tracker * Style fixes --- .coveragerc | 1 + .../components/device_tracker/ping.py | 92 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 homeassistant/components/device_tracker/ping.py diff --git a/.coveragerc b/.coveragerc index 34531651358..bd0376ee87a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -157,6 +157,7 @@ omit = homeassistant/components/device_tracker/luci.py homeassistant/components/device_tracker/netgear.py homeassistant/components/device_tracker/nmap_tracker.py + homeassistant/components/device_tracker/ping.py homeassistant/components/device_tracker/snmp.py homeassistant/components/device_tracker/swisscom.py homeassistant/components/device_tracker/thomson.py diff --git a/homeassistant/components/device_tracker/ping.py b/homeassistant/components/device_tracker/ping.py new file mode 100644 index 00000000000..de75a09a943 --- /dev/null +++ b/homeassistant/components/device_tracker/ping.py @@ -0,0 +1,92 @@ +""" +Tracks devices by sending a ICMP ping. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.ping/ + +device_tracker: + - platform: ping + count: 2 + hosts: + host_one: pc.local + host_two: 192.168.2.25 +""" +import logging +import subprocess +import sys +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.device_tracker import ( + PLATFORM_SCHEMA, DEFAULT_SCAN_INTERVAL) +from homeassistant.helpers.event import track_point_in_utc_time +from homeassistant import util +from homeassistant import const +import homeassistant.helpers.config_validation as cv + +DEPENDENCIES = [] + +_LOGGER = logging.getLogger(__name__) + +CONF_PING_COUNT = 'count' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(const.CONF_HOSTS): {cv.string: cv.string}, + vol.Optional(CONF_PING_COUNT, default=1): cv.positive_int, +}) + + +class Host: + """Host object with ping detection.""" + + def __init__(self, ip_address, dev_id, hass, config): + """Initialize the Host pinger.""" + self.hass = hass + self.ip_address = ip_address + self.dev_id = dev_id + self._count = config[CONF_PING_COUNT] + if sys.platform == "win32": + self._ping_cmd = ['ping', '-n 1', '-w 1000', self.ip_address] + else: + self._ping_cmd = ['ping', '-n', '-q', '-c1', '-W1', + self.ip_address] + + def ping(self): + """Send ICMP ping and return True if success.""" + pinger = subprocess.Popen(self._ping_cmd, stdout=subprocess.PIPE) + try: + pinger.communicate() + return pinger.returncode == 0 + except subprocess.CalledProcessError: + return False + + def update(self, see): + """Update device state by sending one or more ping messages.""" + failed = 0 + while failed < self._count: # check more times if host in unreachable + if self.ping(): + see(dev_id=self.dev_id) + return True + failed += 1 + + _LOGGER.debug("ping KO on ip=%s failed=%d", self.ip_address, failed) + + +def setup_scanner(hass, config, see): + """Setup the Host objects and return the update function.""" + hosts = [Host(ip, dev_id, hass, config) for (dev_id, ip) in + config[const.CONF_HOSTS].items()] + interval = timedelta(seconds=len(hosts) * config[CONF_PING_COUNT] + + DEFAULT_SCAN_INTERVAL) + _LOGGER.info("Started ping tracker with interval=%s on hosts: %s", + interval, ",".join([host.ip_address for host in hosts])) + + def update(now): + """Update all the hosts on every interval time.""" + for host in hosts: + host.update(see) + track_point_in_utc_time(hass, update, now + interval) + return True + + return update(util.dt.utcnow()) From 67ab1f69d8e0f5c03c455cbe08c851ecb841c64c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Wed, 4 Jan 2017 21:15:50 +0100 Subject: [PATCH 086/189] user agent header (#5172) * user agent in header * update user agent info * Use user-agent from lib --- homeassistant/helpers/aiohttp_client.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index a1ec8ac85da..b0bf2b8e1d3 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -1,16 +1,19 @@ """Helper for aiohttp webclient stuff.""" +import sys import asyncio - import aiohttp +from aiohttp.hdrs import USER_AGENT from homeassistant.core import callback from homeassistant.const import EVENT_HOMEASSISTANT_STOP - +from homeassistant.const import __version__ DATA_CONNECTOR = 'aiohttp_connector' DATA_CONNECTOR_NOTVERIFY = 'aiohttp_connector_notverify' DATA_CLIENTSESSION = 'aiohttp_clientsession' DATA_CLIENTSESSION_NOTVERIFY = 'aiohttp_clientsession_notverify' +SERVER_SOFTWARE = 'HomeAssistant/{0} aiohttp/{1} Python/{2[0]}.{2[1]}'.format( + __version__, aiohttp.__version__, sys.version_info) @callback @@ -28,7 +31,8 @@ def async_get_clientsession(hass, verify_ssl=True): connector = _async_get_connector(hass, verify_ssl) clientsession = aiohttp.ClientSession( loop=hass.loop, - connector=connector + connector=connector, + headers={USER_AGENT: SERVER_SOFTWARE} ) _async_register_clientsession_shutdown(hass, clientsession) hass.data[key] = clientsession @@ -52,6 +56,7 @@ def async_create_clientsession(hass, verify_ssl=True, auto_cleanup=True, clientsession = aiohttp.ClientSession( loop=hass.loop, connector=connector, + headers={USER_AGENT: SERVER_SOFTWARE}, **kwargs ) From 9f65b8fef50ce9ebfdb963d4bad6eac32631bee1 Mon Sep 17 00:00:00 2001 From: doudz Date: Wed, 4 Jan 2017 22:05:41 +0100 Subject: [PATCH 087/189] add offline tts using pico (#5005) * add offline tts using pico * Update picotts.py * Update picotts.py * Update picotts.py * Update picotts.py * Update picotts.py * Update picotts.py * Update picotts.py * Update .coveragerc --- .coveragerc | 1 + homeassistant/components/tts/picotts.py | 57 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 homeassistant/components/tts/picotts.py diff --git a/.coveragerc b/.coveragerc index bd0376ee87a..38bea01387a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -345,6 +345,7 @@ omit = homeassistant/components/switch/transmission.py homeassistant/components/switch/wake_on_lan.py homeassistant/components/thingspeak.py + homeassistant/components/tts/picotts.py homeassistant/components/upnp.py homeassistant/components/weather/openweathermap.py homeassistant/components/zeroconf.py diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py new file mode 100644 index 00000000000..366973813a2 --- /dev/null +++ b/homeassistant/components/tts/picotts.py @@ -0,0 +1,57 @@ +""" +Support for the picotts speech service. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/tts/picotts/ +""" +import os +import tempfile +import shutil +import subprocess +import logging +import voluptuous as vol + +from homeassistant.components.tts import Provider, PLATFORM_SCHEMA, CONF_LANG + +_LOGGER = logging.getLogger(__name__) + +SUPPORT_LANGUAGES = ['en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'it-IT'] + +DEFAULT_LANG = 'en-US' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORT_LANGUAGES), +}) + + +def get_engine(hass, config): + """Setup pico speech component.""" + if shutil.which("pico2wave") is None: + _LOGGER.error("'pico2wave' was not found") + return False + return PicoProvider() + + +class PicoProvider(Provider): + """pico speech api provider.""" + + def get_tts_audio(self, message, language=None): + """Load TTS using pico2wave.""" + if language not in SUPPORT_LANGUAGES: + language = self.language + with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as tmpf: + fname = tmpf.name + cmd = ['pico2wave', '--wave', fname, '-l', language, message] + subprocess.call(cmd) + data = None + try: + with open(fname, 'rb') as voice: + data = voice.read() + except OSError: + _LOGGER.error("Error trying to read %s", fname) + return (None, None) + finally: + os.remove(fname) + if data: + return ("wav", data) + return (None, None) From ff0788324c73ebecb57d67960c05870c93e680bd Mon Sep 17 00:00:00 2001 From: Matthew Garrett Date: Wed, 4 Jan 2017 13:31:31 -0800 Subject: [PATCH 088/189] Add support for Tikteck Bluetooth bulbs (#4843) * Add support for Tikteck Bluetooth bulbs Adds support for the Tikteck RGBW BLE bulbs. These don't provide "true" RGBW support - at a certain point in RGB space, the white LEDs turn on. Each bulb has a specific key that needs to be extracted from the Android app. * Update tikteck.py --- .coveragerc | 1 + homeassistant/components/light/tikteck.py | 134 ++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 138 insertions(+) create mode 100644 homeassistant/components/light/tikteck.py diff --git a/.coveragerc b/.coveragerc index 38bea01387a..d3bc2bf18e9 100644 --- a/.coveragerc +++ b/.coveragerc @@ -184,6 +184,7 @@ omit = homeassistant/components/light/lifx.py homeassistant/components/light/limitlessled.py homeassistant/components/light/osramlightify.py + homeassistant/components/light/tikteck.py homeassistant/components/light/x10.py homeassistant/components/light/yeelight.py homeassistant/components/lirc.py diff --git a/homeassistant/components/light/tikteck.py b/homeassistant/components/light/tikteck.py new file mode 100644 index 00000000000..7b0222107a2 --- /dev/null +++ b/homeassistant/components/light/tikteck.py @@ -0,0 +1,134 @@ +""" +Support for Tikteck lights. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.tikteck/ +""" +import logging + +import voluptuous as vol + +from homeassistant.const import CONF_DEVICES, CONF_NAME, CONF_PASSWORD +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, ATTR_RGB_COLOR, SUPPORT_BRIGHTNESS, SUPPORT_RGB_COLOR, + Light, PLATFORM_SCHEMA) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['tikteck==0.4'] + +_LOGGER = logging.getLogger(__name__) + +SUPPORT_TIKTECK_LED = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR) + +DEVICE_SCHEMA = vol.Schema({ + vol.Optional(CONF_NAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_DEVICES, default={}): {cv.string: DEVICE_SCHEMA}, +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Tikteck platform.""" + lights = [] + for address, device_config in config[CONF_DEVICES].items(): + device = {} + device['name'] = device_config[CONF_NAME] + device['password'] = device_config[CONF_PASSWORD] + device['address'] = address + light = TikteckLight(device) + if light.is_valid: + lights.append(light) + + add_devices(lights) + + +class TikteckLight(Light): + """Representation of a Tikteck light.""" + + def __init__(self, device): + """Initialize the light.""" + import tikteck + + self._name = device['name'] + self._address = device['address'] + self._password = device['password'] + self._brightness = 255 + self._rgb = [255, 255, 255] + self._state = False + self.is_valid = True + self._bulb = tikteck.tikteck(self._address, "Smart Light", + self._password) + if self._bulb.connect() is False: + self.is_valid = False + _LOGGER.error( + "Failed to connect to bulb %s, %s", self._address, self._name) + + @property + def unique_id(self): + """Return the ID of this light.""" + return "{}.{}".format(self.__class__, self._address) + + @property + def name(self): + """Return the name of the device if any.""" + return self._name + + @property + def is_on(self): + """Return true if device is on.""" + return self._state + + @property + def brightness(self): + """Return the brightness of this light between 0..255.""" + return self._brightness + + @property + def rgb_color(self): + """Return the color property.""" + return self._rgb + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_TIKTECK_LED + + @property + def should_poll(self): + """Don't poll.""" + return False + + @property + def assumed_state(self): + """We can't read the actual state, so assume it matches.""" + return True + + def set_state(self, red, green, blue, brightness): + """Set the bulb state.""" + return self._bulb.set_state(red, green, blue, brightness) + + def turn_on(self, **kwargs): + """Turn the specified light on.""" + self._state = True + + rgb = kwargs.get(ATTR_RGB_COLOR) + brightness = kwargs.get(ATTR_BRIGHTNESS) + + if rgb is not None: + self._rgb = rgb + if brightness is not None: + self._brightness = brightness + + self.set_state(self._rgb[0], self._rgb[1], self._rgb[2], + self.brightness) + self.schedule_update_ha_state() + + def turn_off(self, **kwargs): + """Turn the specified light off.""" + self._state = False + self.set_state(0, 0, 0, 0) + self.schedule_update_ha_state() diff --git a/requirements_all.txt b/requirements_all.txt index 709f7ccd8ec..fed2d1296a0 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -583,6 +583,9 @@ temperusb==1.5.1 # homeassistant.components.thingspeak thingspeak==0.4.0 +# homeassistant.components.light.tikteck +tikteck==0.4 + # homeassistant.components.sensor.transmission # homeassistant.components.switch.transmission transmissionrpc==0.11 From 4ef7e08553b224f8d28bd4a7e797ac7a65a4e515 Mon Sep 17 00:00:00 2001 From: Brent Hughes Date: Wed, 4 Jan 2017 15:36:54 -0600 Subject: [PATCH 089/189] Rewrite influxdb metrics to be more consistent (#4791) * Updated to make all metrics consistent * Updated existing test for new format * Updated checks on lists and dictionarys --- homeassistant/components/influxdb.py | 61 ++++--- tests/components/test_influxdb.py | 252 ++++++++++----------------- 2 files changed, 124 insertions(+), 189 deletions(-) diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index c712cf6a27e..0250efae818 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -9,9 +9,8 @@ import logging import voluptuous as vol from homeassistant.const import ( - EVENT_STATE_CHANGED, STATE_UNAVAILABLE, STATE_UNKNOWN, CONF_HOST, - CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, CONF_USERNAME, CONF_BLACKLIST, - CONF_PASSWORD, CONF_WHITELIST) + EVENT_STATE_CHANGED, CONF_HOST, CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, + CONF_USERNAME, CONF_BLACKLIST, CONF_PASSWORD, CONF_WHITELIST) from homeassistant.helpers import state as state_helper import homeassistant.helpers.config_validation as cv @@ -38,7 +37,6 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_DB_NAME, default=DEFAULT_DATABASE): cv.string, vol.Optional(CONF_PORT): cv.port, vol.Optional(CONF_SSL): cv.boolean, - vol.Optional(CONF_DEFAULT_MEASUREMENT): cv.string, vol.Optional(CONF_TAGS, default={}): vol.Schema({cv.string: cv.string}), vol.Optional(CONF_WHITELIST, default=[]): @@ -78,7 +76,6 @@ def setup(hass, config): blacklist = conf.get(CONF_BLACKLIST) whitelist = conf.get(CONF_WHITELIST) tags = conf.get(CONF_TAGS) - default_measurement = conf.get(CONF_DEFAULT_MEASUREMENT) try: influx = InfluxDBClient(**kwargs) @@ -92,51 +89,57 @@ def setup(hass, config): def influx_event_listener(event): """Listen for new messages on the bus and sends them to Influx.""" state = event.data.get('new_state') - if state is None or state.state in ( - STATE_UNKNOWN, '', STATE_UNAVAILABLE) or \ - state.entity_id in blacklist: + if state is None or state.entity_id in blacklist: + return + + if whitelist and state.entity_id not in whitelist: return try: - if len(whitelist) > 0 and state.entity_id not in whitelist: - return - _state = state_helper.state_as_number(state) except ValueError: _state = state.state - measurement = state.attributes.get('unit_of_measurement') - if measurement in (None, ''): - if default_measurement: - measurement = default_measurement - else: - measurement = state.entity_id - + # Create a counter for this state change json_body = [ { - 'measurement': measurement, + 'measurement': "hass.state.count", 'tags': { 'domain': state.domain, 'entity_id': state.object_id, }, 'time': event.time_fired, 'fields': { - 'value': _state, + 'value': 1 } } ] - for key, value in state.attributes.items(): - if key != 'unit_of_measurement': - if isinstance(value, (str, float, bool)) or \ - key.endswith('_id'): - json_body[0]['fields'][key] = value - elif isinstance(value, int): - # Prevent column data errors in influxDB. - json_body[0]['fields'][key] = float(value) - json_body[0]['tags'].update(tags) + state_fields = {} + if isinstance(_state, (int, float)): + state_fields['value'] = float(_state) + + for key, value in state.attributes.items(): + if isinstance(value, (int, float)): + state_fields[key] = float(value) + + if state_fields: + json_body.append( + { + 'measurement': "hass.state", + 'tags': { + 'domain': state.domain, + 'entity_id': state.object_id + }, + 'time': event.time_fired, + 'fields': state_fields + } + ) + + json_body[1]['tags'].update(tags) + try: influx.write_points(json_body) except exceptions.InfluxDBClientError: diff --git a/tests/components/test_influxdb.py b/tests/components/test_influxdb.py index f7536958283..1e64351e406 100644 --- a/tests/components/test_influxdb.py +++ b/tests/components/test_influxdb.py @@ -106,36 +106,43 @@ class TestInfluxDB(unittest.TestCase): """Test the event listener.""" self._setup() - valid = { - '1': 1, - '1.0': 1.0, - STATE_ON: 1, - STATE_OFF: 0, - 'foo': 'foo' - } + valid = {'1': 1, '1.0': 1.0, STATE_ON: 1, STATE_OFF: 0, 'str': 'str'} for in_, out in valid.items(): - attrs = { - 'unit_of_measurement': 'foobars', - 'longitude': '1.1', - 'latitude': '2.2' - } - state = mock.MagicMock( - state=in_, domain='fake', object_id='entity', attributes=attrs) + state = mock.MagicMock(state=in_, domain='fake', + object_id='entity') event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'foobars', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': out, - 'longitude': '1.1', - 'latitude': '2.2' - }, - }] + + body = [ + { + 'measurement': 'hass.state.count', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': 1, + } + } + ] + + if isinstance(out, (int, float)): + body.append( + { + 'measurement': 'hass.state', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': float(out) + } + } + ) + self.handler_method(event) + self.assertEqual( mock_client.return_value.write_points.call_count, 1 ) @@ -143,40 +150,7 @@ class TestInfluxDB(unittest.TestCase): mock_client.return_value.write_points.call_args, mock.call(body) ) - mock_client.return_value.write_points.reset_mock() - def test_event_listener_no_units(self, mock_client): - """Test the event listener for missing units.""" - self._setup() - - for unit in (None, ''): - if unit: - attrs = {'unit_of_measurement': unit} - else: - attrs = {} - state = mock.MagicMock( - state=1, domain='fake', entity_id='entity-id', - object_id='entity', attributes=attrs) - event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'entity-id', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': 1, - }, - }] - self.handler_method(event) - self.assertEqual( - mock_client.return_value.write_points.call_count, 1 - ) - self.assertEqual( - mock_client.return_value.write_points.call_args, - mock.call(body) - ) mock_client.return_value.write_points.reset_mock() def test_event_listener_fail_write(self, mock_client): @@ -191,39 +165,6 @@ class TestInfluxDB(unittest.TestCase): influx_client.exceptions.InfluxDBClientError('foo') self.handler_method(event) - def test_event_listener_states(self, mock_client): - """Test the event listener against ignored states.""" - self._setup() - - for state_state in (1, 'unknown', '', 'unavailable'): - state = mock.MagicMock( - state=state_state, domain='fake', entity_id='entity-id', - object_id='entity', attributes={}) - event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'entity-id', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': 1, - }, - }] - self.handler_method(event) - if state_state == 1: - self.assertEqual( - mock_client.return_value.write_points.call_count, 1 - ) - self.assertEqual( - mock_client.return_value.write_points.call_args, - mock.call(body) - ) - else: - self.assertFalse(mock_client.return_value.write_points.called) - mock_client.return_value.write_points.reset_mock() - def test_event_listener_blacklist(self, mock_client): """Test the event listener against a blacklist.""" self._setup() @@ -233,18 +174,34 @@ class TestInfluxDB(unittest.TestCase): state=1, domain='fake', entity_id='fake.{}'.format(entity_id), object_id=entity_id, attributes={}) event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'fake.{}'.format(entity_id), - 'tags': { - 'domain': 'fake', - 'entity_id': entity_id, + + body = [ + { + 'measurement': 'hass.state.count', + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, + }, + 'time': 12345, + 'fields': { + 'value': 1, + } }, - 'time': 12345, - 'fields': { - 'value': 1, - }, - }] + { + 'measurement': 'hass.state', + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, + }, + 'time': 12345, + 'fields': { + 'value': 1 + } + } + ] + self.handler_method(event) + if entity_id == 'ok': self.assertEqual( mock_client.return_value.write_points.call_count, 1 @@ -255,6 +212,7 @@ class TestInfluxDB(unittest.TestCase): ) else: self.assertFalse(mock_client.return_value.write_points.called) + mock_client.return_value.write_points.reset_mock() def test_event_listener_invalid_type(self, mock_client): @@ -271,27 +229,43 @@ class TestInfluxDB(unittest.TestCase): for in_, out in valid.items(): attrs = { 'unit_of_measurement': 'foobars', - 'longitude': '1.1', - 'latitude': '2.2', 'invalid_attribute': ['value1', 'value2'] } state = mock.MagicMock( state=in_, domain='fake', object_id='entity', attributes=attrs) event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'foobars', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': out, - 'longitude': '1.1', - 'latitude': '2.2' - }, - }] + + body = [ + { + 'measurement': 'hass.state.count', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': 1, + } + } + ] + + if isinstance(out, (int, float)): + body.append( + { + 'measurement': 'hass.state', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': float(out) + } + } + ) + self.handler_method(event) + self.assertEqual( mock_client.return_value.write_points.call_count, 1 ) @@ -299,47 +273,5 @@ class TestInfluxDB(unittest.TestCase): mock_client.return_value.write_points.call_args, mock.call(body) ) - mock_client.return_value.write_points.reset_mock() - def test_event_listener_default_measurement(self, mock_client): - """Test the event listener with a default measurement.""" - config = { - 'influxdb': { - 'host': 'host', - 'username': 'user', - 'password': 'pass', - 'default_measurement': 'state', - 'blacklist': ['fake.blacklisted'] - } - } - assert setup_component(self.hass, influxdb.DOMAIN, config) - self.handler_method = self.hass.bus.listen.call_args_list[0][0][1] - - for entity_id in ('ok', 'blacklisted'): - state = mock.MagicMock( - state=1, domain='fake', entity_id='fake.{}'.format(entity_id), - object_id=entity_id, attributes={}) - event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - body = [{ - 'measurement': 'state', - 'tags': { - 'domain': 'fake', - 'entity_id': entity_id, - }, - 'time': 12345, - 'fields': { - 'value': 1, - }, - }] - self.handler_method(event) - if entity_id == 'ok': - self.assertEqual( - mock_client.return_value.write_points.call_count, 1 - ) - self.assertEqual( - mock_client.return_value.write_points.call_args, - mock.call(body) - ) - else: - self.assertFalse(mock_client.return_value.write_points.called) mock_client.return_value.write_points.reset_mock() From 2f907696f30bfd15ae6372a2238f4339d62367f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Wed, 4 Jan 2017 23:20:30 +0100 Subject: [PATCH 090/189] =?UTF-8?q?[WIP]=20Spread=20the=20traffic=20to=20y?= =?UTF-8?q?r.no=20servers=20and=20remove=20yr.no=20from=20the=20default?= =?UTF-8?q?=E2=80=A6=20(#5171)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Spread the traffic to yr.no servers and remove yr.no from the default config * use unique address for yr.no * update yr tests * Wait 10 min extra before requesting new data * Update config.py * Update yr.py --- homeassistant/components/sensor/yr.py | 8 +++++--- tests/components/sensor/test_yr.py | 6 ++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/sensor/yr.py b/homeassistant/components/sensor/yr.py index ef12ba392e1..7da72b6fd38 100644 --- a/homeassistant/components/sensor/yr.py +++ b/homeassistant/components/sensor/yr.py @@ -82,8 +82,9 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): weather = YrData(hass, coordinates, dev) # Update weather on the hour, spread seconds - async_track_utc_time_change(hass, weather.async_update, minute=0, - second=randrange(5, 25)) + async_track_utc_time_change(hass, weather.async_update, + minute=randrange(1, 10), + second=randrange(0, 59)) yield from weather.async_update() @@ -139,7 +140,8 @@ class YrData(object): def __init__(self, hass, coordinates, devices): """Initialize the data object.""" - self._url = 'http://api.yr.no/weatherapi/locationforecast/1.9/' + self._url = 'https://aa015h6buqvih86i1.api.met.no/'\ + 'weatherapi/locationforecast/1.9/' self._urlparams = coordinates self._nextrun = None self.devices = devices diff --git a/tests/components/sensor/test_yr.py b/tests/components/sensor/test_yr.py index 8d54037a379..d0504db963c 100644 --- a/tests/components/sensor/test_yr.py +++ b/tests/components/sensor/test_yr.py @@ -14,7 +14,8 @@ NOW = datetime(2016, 6, 9, 1, tzinfo=dt_util.UTC) @asyncio.coroutine def test_default_setup(hass, aioclient_mock): """Test the default setup.""" - aioclient_mock.get('http://api.yr.no/weatherapi/locationforecast/1.9/', + aioclient_mock.get('https://aa015h6buqvih86i1.api.met.no/' + 'weatherapi/locationforecast/1.9/', text=load_fixture('yr.no.json')) config = {'platform': 'yr', 'elevation': 0} @@ -32,7 +33,8 @@ def test_default_setup(hass, aioclient_mock): @asyncio.coroutine def test_custom_setup(hass, aioclient_mock): """Test a custom setup.""" - aioclient_mock.get('http://api.yr.no/weatherapi/locationforecast/1.9/', + aioclient_mock.get('https://aa015h6buqvih86i1.api.met.no/' + 'weatherapi/locationforecast/1.9/', text=load_fixture('yr.no.json')) config = {'platform': 'yr', From 497a1c84b508eecb7d55ecaa2d0a8e7e1416b205 Mon Sep 17 00:00:00 2001 From: Sander de Leeuw Date: Thu, 5 Jan 2017 09:05:39 +0100 Subject: [PATCH 091/189] Fixed invalid response when sending a test-request from Locative iOS app (#5179) --- homeassistant/components/device_tracker/locative.py | 12 ++++++------ tests/components/device_tracker/test_locative.py | 7 +++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/device_tracker/locative.py b/homeassistant/components/device_tracker/locative.py index 40d1ab8a12f..32eb033a284 100644 --- a/homeassistant/components/device_tracker/locative.py +++ b/homeassistant/components/device_tracker/locative.py @@ -63,18 +63,18 @@ class LocativeView(HomeAssistantView): return ('Device id not specified.', HTTP_UNPROCESSABLE_ENTITY) - if 'id' not in data: - _LOGGER.error('Location id not specified.') - return ('Location id not specified.', - HTTP_UNPROCESSABLE_ENTITY) - if 'trigger' not in data: _LOGGER.error('Trigger is not specified.') return ('Trigger is not specified.', HTTP_UNPROCESSABLE_ENTITY) + if 'id' not in data and data['trigger'] != 'test': + _LOGGER.error('Location id not specified.') + return ('Location id not specified.', + HTTP_UNPROCESSABLE_ENTITY) + device = data['device'].replace('-', '') - location_name = data['id'].lower() + location_name = data.get('id', data['trigger']).lower() direction = data['trigger'] gps_location = (data[ATTR_LATITUDE], data[ATTR_LONGITUDE]) diff --git a/tests/components/device_tracker/test_locative.py b/tests/components/device_tracker/test_locative.py index 20257d5d1f5..33f1b078166 100644 --- a/tests/components/device_tracker/test_locative.py +++ b/tests/components/device_tracker/test_locative.py @@ -108,6 +108,13 @@ class TestLocative(unittest.TestCase): req = requests.get(_url(copy)) self.assertEqual(200, req.status_code) + # Test message, no location + copy = data.copy() + copy['trigger'] = 'test' + del copy['id'] + req = requests.get(_url(copy)) + self.assertEqual(200, req.status_code) + # Unknown trigger copy = data.copy() copy['trigger'] = 'foobar' From 74aa8194d77825156ca9b7591ca7386718a73f42 Mon Sep 17 00:00:00 2001 From: happyleavesaoc Date: Thu, 5 Jan 2017 03:44:15 -0500 Subject: [PATCH 092/189] USPS sensor (#5180) * usps sensor * Update usps.py --- .coveragerc | 1 + homeassistant/components/sensor/usps.py | 92 +++++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 96 insertions(+) create mode 100644 homeassistant/components/sensor/usps.py diff --git a/.coveragerc b/.coveragerc index d3bc2bf18e9..9d53970762d 100644 --- a/.coveragerc +++ b/.coveragerc @@ -321,6 +321,7 @@ omit = homeassistant/components/sensor/transmission.py homeassistant/components/sensor/twitch.py homeassistant/components/sensor/uber.py + homeassistant/components/sensor/usps.py homeassistant/components/sensor/vasttrafik.py homeassistant/components/sensor/waqi.py homeassistant/components/sensor/xbox_live.py diff --git a/homeassistant/components/sensor/usps.py b/homeassistant/components/sensor/usps.py new file mode 100644 index 00000000000..2290749a717 --- /dev/null +++ b/homeassistant/components/sensor/usps.py @@ -0,0 +1,92 @@ +""" +Sensor for USPS packages. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.usps/ +""" +from collections import defaultdict +import logging +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import CONF_USERNAME, CONF_PASSWORD, ATTR_ATTRIBUTION +from homeassistant.helpers.entity import Entity +from homeassistant.util import slugify +from homeassistant.util import Throttle +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['myusps==1.0.0'] + +_LOGGER = logging.getLogger(__name__) + +CONF_UPDATE_INTERVAL = 'update_interval' +ICON = 'mdi:package-variant-closed' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_UPDATE_INTERVAL, default=timedelta(seconds=1800)): ( + vol.All(cv.time_period, cv.positive_timedelta)), +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the USPS platform.""" + import myusps + try: + session = myusps.get_session(config.get(CONF_USERNAME), + config.get(CONF_PASSWORD)) + except myusps.USPSError: + _LOGGER.exception('Could not connect to My USPS') + return False + + add_devices([USPSSensor(session, config.get(CONF_UPDATE_INTERVAL))]) + + +class USPSSensor(Entity): + """USPS Sensor.""" + + def __init__(self, session, interval): + """Initialize the sensor.""" + import myusps + self._session = session + self._profile = myusps.get_profile(session) + self._packages = None + self.update = Throttle(interval)(self._update) + self.update() + + @property + def name(self): + """Return the name of the sensor.""" + return self._profile.get('address') + + @property + def state(self): + """Return the state of the sensor.""" + return len(self._packages) + + def _update(self): + """Update device state.""" + import myusps + self._packages = myusps.get_packages(self._session) + + @property + def device_state_attributes(self): + """Return the state attributes.""" + import myusps + status_counts = defaultdict(int) + for package in self._packages: + status_counts[slugify(package['status'])] += 1 + attributes = { + ATTR_ATTRIBUTION: myusps.ATTRIBUTION + } + attributes.update(status_counts) + return attributes + + @property + def icon(self): + """Icon to use in the frontend.""" + return ICON diff --git a/requirements_all.txt b/requirements_all.txt index fed2d1296a0..c55dab4738b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -303,6 +303,9 @@ mficlient==0.3.0 # homeassistant.components.sensor.miflora miflora==0.1.14 +# homeassistant.components.sensor.usps +myusps==1.0.0 + # homeassistant.components.discovery netdisco==0.8.1 From cb851283044c05e3f8da6795ef3ded353ebbcbe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Thu, 5 Jan 2017 09:45:14 +0100 Subject: [PATCH 093/189] Speeds up lint and test in docker by keeping the cache between invocations. (#5177) * Add a volume to store the tox cache on the host. This gives quite some speed boost when running lint_docker and test_docker. * Only map .tox directory for cache. --- script/lint | 2 ++ script/lint_docker | 7 ++++++- script/test | 4 +++- script/test_docker | 9 +++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/script/lint b/script/lint index 624ff0e5093..ab7561b9a5b 100755 --- a/script/lint +++ b/script/lint @@ -1,6 +1,8 @@ #!/bin/sh # Execute lint to spot code mistakes. +cd "$(dirname "$0")/.." + if [ "$1" = "--changed" ]; then export files="`git diff upstream/dev --name-only | grep -e '\.py$'`" echo "=================================================" diff --git a/script/lint_docker b/script/lint_docker index dca877d49ff..7e6ff42e074 100755 --- a/script/lint_docker +++ b/script/lint_docker @@ -4,5 +4,10 @@ # Stop on errors set -e +cd "$(dirname "$0")/.." + docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.dev . -docker run --rm -it home-assistant-test tox -e lint +docker run --rm \ + -v `pwd`/.tox/:/usr/src/app/.tox/ \ + -t -i home-assistant-test \ + tox -e lint diff --git a/script/test b/script/test index 7aca00421b3..2f3f3557094 100755 --- a/script/test +++ b/script/test @@ -1,4 +1,6 @@ #!/bin/sh -# Excutes the tests with tox. +# Executes the tests with tox. + +cd "$(dirname "$0")/.." tox -e py34 diff --git a/script/test_docker b/script/test_docker index 78b4247857b..75b7cddf970 100755 --- a/script/test_docker +++ b/script/test_docker @@ -1,8 +1,13 @@ #!/bin/sh -# Excutes the tests with tox in a docker container. +# Executes the tests with tox in a docker container. # Stop on errors set -e +cd "$(dirname "$0")/.." + docker build -t home-assistant-test -f virtualization/Docker/Dockerfile.dev . -docker run --rm -it home-assistant-test tox -e py35 +docker run --rm \ + -v `pwd`/.tox/:/usr/src/app/.tox/ \ + -t -i home-assistant-test \ + tox -e py35 From cbda516af992a6e19dcb58527469d7ad21dcb722 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Thu, 5 Jan 2017 21:33:22 +0200 Subject: [PATCH 094/189] ensure_list validator - Allow None to return an empty list (#5133) --- homeassistant/helpers/config_validation.py | 2 + tests/helpers/test_config_validation.py | 96 ++++++++++++++-------- 2 files changed, 62 insertions(+), 36 deletions(-) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index 4755c1b03a4..57ab1582454 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -85,6 +85,8 @@ def isfile(value: Any) -> str: def ensure_list(value: Union[T, Sequence[T]]) -> Sequence[T]: """Wrap value in list if it is not one.""" + if value is None: + return [] return value if isinstance(value, list) else [value] diff --git a/tests/helpers/test_config_validation.py b/tests/helpers/test_config_validation.py index 60972b7e494..9d8f60279e9 100644 --- a/tests/helpers/test_config_validation.py +++ b/tests/helpers/test_config_validation.py @@ -4,10 +4,10 @@ from datetime import timedelta, datetime, date import enum import os from socket import _GLOBAL_DEFAULT_TIMEOUT +from unittest.mock import Mock, patch import pytest import voluptuous as vol -from unittest.mock import Mock, patch import homeassistant.helpers.config_validation as cv @@ -100,20 +100,33 @@ def test_url(): def test_platform_config(): """Test platform config validation.""" - for value in ( + options = ( {}, {'hello': 'world'}, - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): cv.PLATFORM_SCHEMA(value) - for value in ( + options = ( {'platform': 'mqtt'}, {'platform': 'mqtt', 'beer': 'yes'}, - ): + ) + for value in options: cv.PLATFORM_SCHEMA(value) +def test_ensure_list(): + """Test ensure_list.""" + schema = vol.Schema(cv.ensure_list) + assert [] == schema(None) + assert [1] == schema(1) + assert [1] == schema([1]) + assert ['1'] == schema('1') + assert ['1'] == schema(['1']) + assert [{'1': '2'}] == schema({'1': '2'}) + + def test_entity_id(): """Test entity ID validation.""" schema = vol.Schema(cv.entity_id) @@ -121,28 +134,30 @@ def test_entity_id(): with pytest.raises(vol.MultipleInvalid): schema('invalid_entity') - assert 'sensor.light' == schema('sensor.LIGHT') + assert schema('sensor.LIGHT') == 'sensor.light' def test_entity_ids(): """Test entity ID validation.""" schema = vol.Schema(cv.entity_ids) - for value in ( + options = ( 'invalid_entity', 'sensor.light,sensor_invalid', ['invalid_entity'], ['sensor.light', 'sensor_invalid'], ['sensor.light,sensor_invalid'], - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): schema(value) - for value in ( + options = ( [], ['sensor.light'], 'sensor.light' - ): + ) + for value in options: schema(value) assert schema('sensor.LIGHT, light.kitchen ') == [ @@ -152,7 +167,7 @@ def test_entity_ids(): def test_event_schema(): """Test event_schema validation.""" - for value in ( + options = ( {}, None, { 'event_data': {}, @@ -161,14 +176,16 @@ def test_event_schema(): 'event': 'state_changed', 'event_data': 1, }, - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): cv.EVENT_SCHEMA(value) - for value in ( + options = ( {'event': 'state_changed'}, {'event': 'state_changed', 'event_data': {'hello': 'world'}}, - ): + ) + for value in options: cv.EVENT_SCHEMA(value) @@ -200,16 +217,19 @@ def test_time_period(): """Test time_period validation.""" schema = vol.Schema(cv.time_period) - for value in ( + options = ( None, '', 'hello:world', '12:', '12:34:56:78', {}, {'wrong_key': -10} - ): + ) + for value in options: + with pytest.raises(vol.MultipleInvalid): schema(value) - for value in ( + options = ( '8:20', '23:59', '-8:20', '-23:59:59', '-48:00', {'minutes': 5}, 1, '5' - ): + ) + for value in options: schema(value) assert timedelta(seconds=180) == schema('180') @@ -229,7 +249,7 @@ def test_service(): def test_service_schema(): """Test service_schema validation.""" - for value in ( + options = ( {}, None, { 'service': 'homeassistant.turn_on', @@ -248,11 +268,12 @@ def test_service_schema(): 'brightness': '{{ no_end' } }, - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): cv.SERVICE_SCHEMA(value) - for value in ( + options = ( {'service': 'homeassistant.turn_on'}, { 'service': 'homeassistant.turn_on', @@ -262,7 +283,8 @@ def test_service_schema(): 'service': 'homeassistant.turn_on', 'entity_id': ['light.kitchen', 'light.ceiling'], }, - ): + ) + for value in options: cv.SERVICE_SCHEMA(value) @@ -321,11 +343,12 @@ def test_template(): message='{} not considered invalid'.format(value)): schema(value) - for value in ( + options = ( 1, 'Hello', '{{ beer }}', '{% if 1 == 1 %}Hello{% else %}World{% endif %}', - ): + ) + for value in options: schema(value) @@ -337,13 +360,14 @@ def test_template_complex(): with pytest.raises(vol.MultipleInvalid): schema(value) - for value in ( + options = ( 1, 'Hello', '{{ beer }}', '{% if 1 == 1 %}Hello{% else %}World{% endif %}', {'test': 1, 'test2': '{{ beer }}'}, ['{{ beer }}', 1] - ): + ) + for value in options: schema(value) @@ -373,16 +397,18 @@ def test_key_dependency(): """Test key_dependency validator.""" schema = vol.Schema(cv.key_dependency('beer', 'soda')) - for value in ( + options = ( {'beer': None} - ): + ) + for value in options: with pytest.raises(vol.MultipleInvalid): schema(value) - for value in ( + options = ( {'beer': None, 'soda': None}, {'soda': None}, {} - ): + ) + for value in options: schema(value) @@ -429,7 +455,7 @@ def test_ordered_dict_key_validator(): schema({1: 'works'}) -def test_ordered_dict_value_validator(): +def test_ordered_dict_value_validator(): # pylint: disable=invalid-name """Test ordered_dict validator.""" schema = vol.Schema(cv.ordered_dict(cv.string)) @@ -459,12 +485,10 @@ def test_enum(): with pytest.raises(vol.Invalid): schema('value3') - TestEnum['value1'] - -def test_socket_timeout(): +def test_socket_timeout(): # pylint: disable=invalid-name """Test socket timeout validator.""" - TEST_CONF_TIMEOUT = 'timeout' + TEST_CONF_TIMEOUT = 'timeout' # pylint: disable=invalid-name schema = vol.Schema( {vol.Required(TEST_CONF_TIMEOUT, default=None): cv.socket_timeout}) @@ -478,4 +502,4 @@ def test_socket_timeout(): assert _GLOBAL_DEFAULT_TIMEOUT == schema({TEST_CONF_TIMEOUT: None})[TEST_CONF_TIMEOUT] - assert 1.0 == schema({TEST_CONF_TIMEOUT: 1})[TEST_CONF_TIMEOUT] + assert schema({TEST_CONF_TIMEOUT: 1})[TEST_CONF_TIMEOUT] == 1.0 From 6b682d0d81517a7e9be93c8a0918d69d6c5ed785 Mon Sep 17 00:00:00 2001 From: Martin Vacula Date: Thu, 5 Jan 2017 20:53:48 +0100 Subject: [PATCH 095/189] Beaglebone black GPIO control by switch v2 (#4908) * Added support for BBB GPIO * Requirements updated * unnecessary pylint statement removed * Changed according arduino switch * typo corrected * Hound errors solved * lint error * Update bbb_gpio.py --- .coveragerc | 3 + homeassistant/components/bbb_gpio.py | 68 +++++++++++++ homeassistant/components/switch/bbb_gpio.py | 100 ++++++++++++++++++++ requirements_all.txt | 3 + 4 files changed, 174 insertions(+) create mode 100644 homeassistant/components/bbb_gpio.py create mode 100644 homeassistant/components/switch/bbb_gpio.py diff --git a/.coveragerc b/.coveragerc index 9d53970762d..cee3448936c 100644 --- a/.coveragerc +++ b/.coveragerc @@ -13,6 +13,9 @@ omit = homeassistant/components/arduino.py homeassistant/components/*/arduino.py + homeassistant/components/bbb_gpio.py + homeassistant/components/*/bbb_gpio.py + homeassistant/components/bloomsky.py homeassistant/components/*/bloomsky.py diff --git a/homeassistant/components/bbb_gpio.py b/homeassistant/components/bbb_gpio.py new file mode 100644 index 00000000000..e85c027882f --- /dev/null +++ b/homeassistant/components/bbb_gpio.py @@ -0,0 +1,68 @@ +""" +Support for controlling GPIO pins of a Beaglebone Black. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/bbb_gpio/ +""" +import logging + +from homeassistant.const import ( + EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP) + +REQUIREMENTS = ['Adafruit_BBIO==1.0.0'] + +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'bbb_gpio' + + +# pylint: disable=no-member +def setup(hass, config): + """Setup the Beaglebone black GPIO component.""" + import Adafruit_BBIO.GPIO as GPIO + + def cleanup_gpio(event): + """Stuff to do before stopping.""" + GPIO.cleanup() + + def prepare_gpio(event): + """Stuff to do when home assistant starts.""" + hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, cleanup_gpio) + + hass.bus.listen_once(EVENT_HOMEASSISTANT_START, prepare_gpio) + return True + + +def setup_output(pin): + """Setup a GPIO as output.""" + import Adafruit_BBIO.GPIO as GPIO + GPIO.setup(pin, GPIO.OUT) + + +def setup_input(pin, pull_mode): + """Setup a GPIO as input.""" + import Adafruit_BBIO.GPIO as GPIO + GPIO.setup(pin, GPIO.IN, + GPIO.PUD_DOWN if pull_mode == 'DOWN' else GPIO.PUD_UP) + + +def write_output(pin, value): + """Write a value to a GPIO.""" + import Adafruit_BBIO.GPIO as GPIO + GPIO.output(pin, value) + + +def read_input(pin): + """Read a value from a GPIO.""" + import Adafruit_BBIO.GPIO as GPIO + return GPIO.input(pin) + + +def edge_detect(pin, event_callback, bounce): + """Add detection for RISING and FALLING events.""" + import Adafruit_BBIO.GPIO as GPIO + GPIO.add_event_detect( + pin, + GPIO.BOTH, + callback=event_callback, + bouncetime=bounce) diff --git a/homeassistant/components/switch/bbb_gpio.py b/homeassistant/components/switch/bbb_gpio.py new file mode 100644 index 00000000000..f765cb95e1f --- /dev/null +++ b/homeassistant/components/switch/bbb_gpio.py @@ -0,0 +1,100 @@ +""" +Allows to configure a switch using BBB GPIO. + +Switch example for two GPIOs pins P9_12 and P9_42 +Allowed GPIO pin name is GPIOxxx or Px_x + +switch: + - platform: bbb_gpio + pins: + GPIO0_7: + name: LED Red + P9_12: + name: LED Green + initial: true + invert_logic: true +""" +import logging + +import voluptuous as vol + +from homeassistant.components.switch import PLATFORM_SCHEMA +import homeassistant.components.bbb_gpio as bbb_gpio +from homeassistant.const import (DEVICE_DEFAULT_NAME, CONF_NAME) +from homeassistant.helpers.entity import ToggleEntity +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) + +DEPENDENCIES = ['bbb_gpio'] + +CONF_PINS = 'pins' +CONF_INITIAL = 'initial' +CONF_INVERT_LOGIC = 'invert_logic' + +PIN_SCHEMA = vol.Schema({ + vol.Required(CONF_NAME): cv.string, + vol.Optional(CONF_INITIAL, default=False): cv.boolean, + vol.Optional(CONF_INVERT_LOGIC, default=False): cv.boolean, +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_PINS, default={}): + vol.Schema({cv.string: PIN_SCHEMA}), +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Beaglebone GPIO devices.""" + pins = config.get(CONF_PINS) + + switches = [] + for pin, params in pins.items(): + switches.append(BBBGPIOSwitch(pin, params)) + add_devices(switches) + + +class BBBGPIOSwitch(ToggleEntity): + """Representation of a Beaglebone GPIO.""" + + def __init__(self, pin, params): + """Initialize the pin.""" + self._pin = pin + self._name = params.get(CONF_NAME) or DEVICE_DEFAULT_NAME + self._state = params.get(CONF_INITIAL) + self._invert_logic = params.get(CONF_INVERT_LOGIC) + + bbb_gpio.setup_output(self._pin) + + if self._state is False: + bbb_gpio.write_output(self._pin, 1 if self._invert_logic else 0) + else: + bbb_gpio.write_output(self._pin, 0 if self._invert_logic else 1) + + @property + def name(self): + """Return the name of the switch.""" + return self._name + + @property + def should_poll(self): + """No polling needed.""" + return False + + @property + def is_on(self): + """Return true if device is on.""" + return self._state + + def turn_on(self): + """Turn the device on.""" + bbb_gpio.write_output(self._pin, 0 if self._invert_logic else 1) + self._state = True + self.schedule_update_ha_state() + + def turn_off(self): + """Turn the device off.""" + bbb_gpio.write_output(self._pin, 1 if self._invert_logic else 0) + self._state = False + self.schedule_update_ha_state() diff --git a/requirements_all.txt b/requirements_all.txt index c55dab4738b..dd43d13fd4f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -12,6 +12,9 @@ async_timeout==1.1.0 # homeassistant.components.nuimo_controller --only-binary=all http://github.com/getSenic/nuimo-linux-python/archive/29fc42987f74d8090d0e2382e8f248ff5990b8c9.zip#nuimo==1.0.0 +# homeassistant.components.bbb_gpio +Adafruit_BBIO==1.0.0 + # homeassistant.components.isy994 PyISY==1.0.7 From 276a29c8f483298f372e343a1302cabc1e3fa3df Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Thu, 5 Jan 2017 15:01:13 -0500 Subject: [PATCH 096/189] Convert Kodi platform to async (#5167) * Convert Kodi platform to async * Remove unnecessary async_update_ha_state --- homeassistant/components/media_player/kodi.py | 210 +++++++++++------- requirements_all.txt | 2 + 2 files changed, 127 insertions(+), 85 deletions(-) diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index 0a88336b5a3..abab433eb38 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -4,9 +4,11 @@ Support for interfacing with the XBMC/Kodi JSON-RPC API. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/media_player.kodi/ """ +import asyncio import logging import urllib +import aiohttp import voluptuous as vol from homeassistant.components.media_player import ( @@ -16,9 +18,10 @@ from homeassistant.components.media_player import ( from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, CONF_HOST, CONF_NAME, CONF_PORT, CONF_USERNAME, CONF_PASSWORD) +from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['jsonrpc-requests==0.3'] +REQUIREMENTS = ['jsonrpc-async==0.1'] _LOGGER = logging.getLogger(__name__) @@ -26,6 +29,7 @@ CONF_TURN_OFF_ACTION = 'turn_off_action' DEFAULT_NAME = 'Kodi' DEFAULT_PORT = 8080 +DEFAULT_TIMEOUT = 5 TURN_OFF_ACTION = [None, 'quit', 'hibernate', 'suspend', 'reboot', 'shutdown'] @@ -43,7 +47,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def setup_platform(hass, config, add_entities, discovery_info=None): +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_entities, + discovery_info=None): """Setup the Kodi platform.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -55,29 +61,34 @@ def setup_platform(hass, config, add_entities, discovery_info=None): "definitions here: " "https://home-assistant.io/components/media_player.kodi/") - add_entities([ - KodiDevice( - config.get(CONF_NAME), - host=host, port=port, - username=config.get(CONF_USERNAME), - password=config.get(CONF_PASSWORD), - turn_off_action=config.get(CONF_TURN_OFF_ACTION)), - ]) + entity = KodiDevice( + hass, + name=config.get(CONF_NAME), + host=host, port=port, + username=config.get(CONF_USERNAME), + password=config.get(CONF_PASSWORD), + turn_off_action=config.get(CONF_TURN_OFF_ACTION)) + + yield from async_add_entities([entity], update_before_add=True) class KodiDevice(MediaPlayerDevice): """Representation of a XBMC/Kodi device.""" - def __init__(self, name, host, port, username=None, password=None, + def __init__(self, hass, name, host, port, username=None, password=None, turn_off_action=None): """Initialize the Kodi device.""" - import jsonrpc_requests + import jsonrpc_async + self.hass = hass self._name = name - kwargs = {'timeout': 5} + kwargs = { + 'timeout': DEFAULT_TIMEOUT, + 'session': async_get_clientsession(hass), + } if username is not None: - kwargs['auth'] = (username, password) + kwargs['auth'] = aiohttp.BasicAuth(username, password) image_auth_string = "{}:{}@".format(username, password) else: image_auth_string = "" @@ -86,26 +97,26 @@ class KodiDevice(MediaPlayerDevice): self._image_url = 'http://{}{}:{}/image'.format( image_auth_string, host, port) - self._server = jsonrpc_requests.Server(self._http_url, **kwargs) + self._server = jsonrpc_async.Server(self._http_url, **kwargs) self._turn_off_action = turn_off_action self._players = list() self._properties = None self._item = None self._app_properties = None - self.update() @property def name(self): """Return the name of the device.""" return self._name + @asyncio.coroutine def _get_players(self): """Return the active player objects or None.""" - import jsonrpc_requests + import jsonrpc_async try: - return self._server.Player.GetActivePlayers() - except jsonrpc_requests.jsonrpc.TransportError: + return (yield from self._server.Player.GetActivePlayers()) + except jsonrpc_async.jsonrpc.TransportError: if self._players is not None: _LOGGER.info('Unable to fetch kodi data') _LOGGER.debug('Unable to fetch kodi data', exc_info=True) @@ -125,28 +136,30 @@ class KodiDevice(MediaPlayerDevice): else: return STATE_PLAYING - def update(self): + @asyncio.coroutine + def async_update(self): """Retrieve latest state.""" - self._players = self._get_players() + self._players = yield from self._get_players() if self._players is not None and len(self._players) > 0: player_id = self._players[0]['playerid'] assert isinstance(player_id, int) - self._properties = self._server.Player.GetProperties( + self._properties = yield from self._server.Player.GetProperties( player_id, ['time', 'totaltime', 'speed', 'live'] ) - self._item = self._server.Player.GetItem( + self._item = (yield from self._server.Player.GetItem( player_id, ['title', 'file', 'uniqueid', 'thumbnail', 'artist'] - )['item'] + ))['item'] - self._app_properties = self._server.Application.GetProperties( - ['volume', 'muted'] - ) + self._app_properties = \ + yield from self._server.Application.GetProperties( + ['volume', 'muted'] + ) else: self._properties = None self._item = None @@ -218,94 +231,118 @@ class KodiDevice(MediaPlayerDevice): return supported_media_commands - def turn_off(self): + @asyncio.coroutine + def async_turn_off(self): """Execute turn_off_action to turn off media player.""" if self._turn_off_action == 'quit': - self._server.Application.Quit() + yield from self._server.Application.Quit() elif self._turn_off_action == 'hibernate': - self._server.System.Hibernate() + yield from self._server.System.Hibernate() elif self._turn_off_action == 'suspend': - self._server.System.Suspend() + yield from self._server.System.Suspend() elif self._turn_off_action == 'reboot': - self._server.System.Reboot() + yield from self._server.System.Reboot() elif self._turn_off_action == 'shutdown': - self._server.System.Shutdown() + yield from self._server.System.Shutdown() else: _LOGGER.warning('turn_off requested but turn_off_action is none') - self.update_ha_state() - - def volume_up(self): + @asyncio.coroutine + def async_volume_up(self): """Volume up the media player.""" - assert self._server.Input.ExecuteAction('volumeup') == 'OK' - self.update_ha_state() + assert ( + yield from self._server.Input.ExecuteAction('volumeup')) == 'OK' - def volume_down(self): + @asyncio.coroutine + def async_volume_down(self): """Volume down the media player.""" - assert self._server.Input.ExecuteAction('volumedown') == 'OK' - self.update_ha_state() + assert ( + yield from self._server.Input.ExecuteAction('volumedown')) == 'OK' - def set_volume_level(self, volume): - """Set volume level, range 0..1.""" - self._server.Application.SetVolume(int(volume * 100)) - self.update_ha_state() + def async_set_volume_level(self, volume): + """Set volume level, range 0..1. - def mute_volume(self, mute): - """Mute (true) or unmute (false) media player.""" - self._server.Application.SetMute(mute) - self.update_ha_state() + This method must be run in the event loop and returns a coroutine. + """ + return self._server.Application.SetVolume(int(volume * 100)) - def _set_play_state(self, state): + def async_mute_volume(self, mute): + """Mute (true) or unmute (false) media player. + + This method must be run in the event loop and returns a coroutine. + """ + return self._server.Application.SetMute(mute) + + @asyncio.coroutine + def async_set_play_state(self, state): """Helper method for play/pause/toggle.""" - players = self._get_players() + players = yield from self._get_players() if len(players) != 0: - self._server.Player.PlayPause(players[0]['playerid'], state) + yield from self._server.Player.PlayPause( + players[0]['playerid'], state) - self.update_ha_state() + def async_media_play_pause(self): + """Pause media on media player. - def media_play_pause(self): - """Pause media on media player.""" - self._set_play_state('toggle') + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_play_state('toggle') - def media_play(self): - """Play media.""" - self._set_play_state(True) + def async_media_play(self): + """Play media. - def media_pause(self): - """Pause the media player.""" - self._set_play_state(False) + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_play_state(True) - def media_stop(self): + def async_media_pause(self): + """Pause the media player. + + This method must be run in the event loop and returns a coroutine. + """ + return self.async_set_play_state(False) + + @asyncio.coroutine + def async_media_stop(self): """Stop the media player.""" - players = self._get_players() + players = yield from self._get_players() if len(players) != 0: - self._server.Player.Stop(players[0]['playerid']) + yield from self._server.Player.Stop(players[0]['playerid']) + @asyncio.coroutine def _goto(self, direction): """Helper method used for previous/next track.""" - players = self._get_players() + players = yield from self._get_players() if len(players) != 0: - self._server.Player.GoTo(players[0]['playerid'], direction) + if direction == 'previous': + # first seek to position 0. Kodi goes to the beginning of the + # current track if the current track is not at the beginning. + yield from self._server.Player.Seek(players[0]['playerid'], 0) - self.update_ha_state() + yield from self._server.Player.GoTo( + players[0]['playerid'], direction) - def media_next_track(self): - """Send next track command.""" - self._goto('next') + def async_media_next_track(self): + """Send next track command. - def media_previous_track(self): - """Send next track command.""" - # first seek to position 0, Kodi seems to go to the beginning - # of the current track current track is not at the beginning - self.media_seek(0) - self._goto('previous') + This method must be run in the event loop and returns a coroutine. + """ + return self._goto('next') - def media_seek(self, position): + def async_media_previous_track(self): + """Send next track command. + + This method must be run in the event loop and returns a coroutine. + """ + return self._goto('previous') + + @asyncio.coroutine + def async_media_seek(self, position): """Send seek command.""" - players = self._get_players() + players = yield from self._get_players() time = {} @@ -321,13 +358,16 @@ class KodiDevice(MediaPlayerDevice): time['hours'] = int(position) if len(players) != 0: - self._server.Player.Seek(players[0]['playerid'], time) + yield from self._server.Player.Seek(players[0]['playerid'], time) - self.update_ha_state() + def async_play_media(self, media_type, media_id, **kwargs): + """Send the play_media command to the media player. - def play_media(self, media_type, media_id, **kwargs): - """Send the play_media command to the media player.""" + This method must be run in the event loop and returns a coroutine. + """ if media_type == "CHANNEL": - self._server.Player.Open({"item": {"channelid": int(media_id)}}) + return self._server.Player.Open( + {"item": {"channelid": int(media_id)}}) else: - self._server.Player.Open({"item": {"file": str(media_id)}}) + return self._server.Player.Open( + {"item": {"file": str(media_id)}}) diff --git a/requirements_all.txt b/requirements_all.txt index dd43d13fd4f..9892551f9f8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -272,6 +272,8 @@ influxdb==3.0.0 insteon_hub==0.4.5 # homeassistant.components.media_player.kodi +jsonrpc-async==0.1 + # homeassistant.components.notify.kodi jsonrpc-requests==0.3 From 95ddef31fe2866e03d8433a0c25c15b1fac4b725 Mon Sep 17 00:00:00 2001 From: MrMep Date: Thu, 5 Jan 2017 22:03:05 +0100 Subject: [PATCH 097/189] Update keyboard_remote.py (#5112) * Update keyboard_remote.py I changed os.path.isFile() to os.path.exists: as far as I know isFile doesn't work with device files. At least on my Ubuntu it wasn't working. Then I added some error control in case the keyboard disconnects: with bluetooth keyboards this happen often due to battery saving. Now it reconnects automatically when the keyboard wakes up. We could fire an event to hass when the keyboard connects-disconnects, maybe I'll do this later. We should also manage errors due to permissions problems on the device file, or at least give some info in the docs about how to allow HA to grab control over an system input file. I'm sorry if my coding isn't up to some standard practice I'm not aware of: I'm new to HA and to python itself, I'm just trying to be of help. Gianluca * Update keyboard_remote.py I changed some other few things. Not the component gets loaded even if the keyboard is disconnected. When it connects, it starts to fire events when keys are pressed. I also added a sleep(0.1) that reduces a lot the load on the CPU, but without many consequences on key pressed detection. --- homeassistant/components/keyboard_remote.py | 55 +++++++++++++++++---- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/keyboard_remote.py b/homeassistant/components/keyboard_remote.py index 9a6a2a5d89b..de7eacf96dd 100644 --- a/homeassistant/components/keyboard_remote.py +++ b/homeassistant/components/keyboard_remote.py @@ -1,5 +1,5 @@ """ -Recieve signals from a keyboard and use it as a remote control. +Receive signals from a keyboard and use it as a remote control. This component allows to use a keyboard as remote control. It will fire ´keyboard_remote_command_received´ events witch can then be used @@ -12,7 +12,7 @@ because `evdev` will block it. Example: keyboard_remote: device_descriptor: '/dev/input/by-id/foo' - key_value: 'key_up' # optional alternaive 'key_down' and 'key_hold' + type: 'key_up' # optional alternaive 'key_down' and 'key_hold' # be carefull, 'key_hold' fires a lot of events and an automation rule to bring breath live into it. @@ -33,6 +33,7 @@ Example: import threading import logging import os +import time import voluptuous as vol @@ -65,8 +66,8 @@ def setup(hass, config): """Setup keyboard_remote.""" config = config.get(DOMAIN) device_descriptor = config.get(DEVICE_DESCRIPTOR) - if not device_descriptor or not os.path.isfile(device_descriptor): - id_folder = '/dev/input/by-id/' + if not device_descriptor: + id_folder = '/dev/input/' _LOGGER.error( 'A device_descriptor must be defined. ' 'Possible descriptors are %s:\n%s', @@ -107,7 +108,20 @@ class KeyboardRemote(threading.Thread): """Construct a KeyboardRemote interface object.""" from evdev import InputDevice - self.dev = InputDevice(device_descriptor) + self.device_descriptor = device_descriptor + try: + self.dev = InputDevice(device_descriptor) + except OSError: # Keyboard not present + _LOGGER.debug( + 'KeyboardRemote: keyboard not connected, %s', + self.device_descriptor) + self.keyboard_connected = False + else: + self.keyboard_connected = True + _LOGGER.debug( + 'KeyboardRemote: keyboard connected, %s', + self.dev) + threading.Thread.__init__(self) self.stopped = threading.Event() self.hass = hass @@ -115,13 +129,36 @@ class KeyboardRemote(threading.Thread): def run(self): """Main loop of the KeyboardRemote.""" - from evdev import categorize, ecodes - _LOGGER.debug('KeyboardRemote interface started for %s', self.dev) + from evdev import categorize, ecodes, InputDevice - self.dev.grab() + if self.keyboard_connected: + self.dev.grab() + _LOGGER.debug( + 'KeyboardRemote interface started for %s', + self.dev) while not self.stopped.isSet(): - event = self.dev.read_one() + # Sleeps to ease load on processor + time.sleep(.1) + + if not self.keyboard_connected: + try: + self.dev = InputDevice(self.device_descriptor) + except OSError: # still disconnected + continue + else: + self.dev.grab() + self.keyboard_connected = True + _LOGGER.debug('KeyboardRemote: keyboard re-connected, %s', + self.device_descriptor) + + try: + event = self.dev.read_one() + except IOError: # Keyboard Disconnected + self.keyboard_connected = False + _LOGGER.debug('KeyboardRemote: keyard disconnected, %s', + self.device_descriptor) + continue if not event: continue From 51446e0772e25a1e55e0f10e92ca0086bb968949 Mon Sep 17 00:00:00 2001 From: webworxshop Date: Fri, 6 Jan 2017 10:16:00 +1300 Subject: [PATCH 098/189] Add support for customised Kankun SP3 Wifi switches. (#5089) * Add support for customised Kankun SP3 Wifi switches. * Add config validation for Kankun SP3 wifi switch. * Update kankun.py --- .coveragerc | 1 + homeassistant/components/switch/kankun.py | 120 ++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 homeassistant/components/switch/kankun.py diff --git a/.coveragerc b/.coveragerc index cee3448936c..4957221dd94 100644 --- a/.coveragerc +++ b/.coveragerc @@ -339,6 +339,7 @@ omit = homeassistant/components/switch/edimax.py homeassistant/components/switch/hikvisioncam.py homeassistant/components/switch/hook.py + homeassistant/components/switch/kankun.py homeassistant/components/switch/mystrom.py homeassistant/components/switch/netio.py homeassistant/components/switch/orvibo.py diff --git a/homeassistant/components/switch/kankun.py b/homeassistant/components/switch/kankun.py new file mode 100644 index 00000000000..252839004ee --- /dev/null +++ b/homeassistant/components/switch/kankun.py @@ -0,0 +1,120 @@ +""" +Support for customised Kankun SP3 wifi switch. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/switch.kankun/ +""" +import logging +import requests +import voluptuous as vol + +from homeassistant.components.switch import SwitchDevice, PLATFORM_SCHEMA +from homeassistant.const import ( + CONF_HOST, CONF_NAME, CONF_PORT, CONF_PATH, CONF_USERNAME, CONF_PASSWORD, + CONF_SWITCHES) +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_PORT = 80 +DEFAULT_PATH = "/cgi-bin/json.cgi" + +SWITCH_SCHEMA = vol.Schema({ + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_PATH, default=DEFAULT_PATH): cv.string, + vol.Optional(CONF_USERNAME): cv.string, + vol.Optional(CONF_PASSWORD): cv.string, +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}), +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices_callback, discovery_info=None): + """Find and return kankun switches.""" + switches = config.get('switches', {}) + devices = [] + + for dev_name, properties in switches.items(): + devices.append( + KankunSwitch( + hass, + properties.get(CONF_NAME, dev_name), + properties.get(CONF_HOST, None), + properties.get(CONF_PORT, DEFAULT_PORT), + properties.get(CONF_PATH, DEFAULT_PATH), + properties.get(CONF_USERNAME, None), + properties.get(CONF_PASSWORD))) + + add_devices_callback(devices) + + +class KankunSwitch(SwitchDevice): + """Represents a Kankun wifi switch.""" + + # pylint: disable=too-many-arguments + def __init__(self, hass, name, host, port, path, user, passwd): + """Initialise device.""" + self._hass = hass + self._name = name + self._state = False + self._url = "http://{}:{}{}".format(host, port, path) + if user is not None: + self._auth = (user, passwd) + else: + self._auth = None + + def _switch(self, newstate): + """Switch on or off.""" + _LOGGER.info('Switching to state: %s', newstate) + + try: + req = requests.get("{}?set={}".format(self._url, newstate), + auth=self._auth) + return req.json()['ok'] + except requests.RequestException: + _LOGGER.error('Switching failed.') + + def _query_state(self): + """Query switch state.""" + _LOGGER.info('Querying state from: %s', self._url) + + try: + req = requests.get("{}?get=state".format(self._url), + auth=self._auth) + return req.json()['state'] == "on" + except requests.RequestException: + _LOGGER.error('State query failed.') + + @property + def should_poll(self): + """Switch should always be polled.""" + return True + + @property + def name(self): + """The name of the switch.""" + return self._name + + @property + def is_on(self): + """True if device is on.""" + return self._state + + def update(self): + """Update device state.""" + self._state = self._query_state() + + def turn_on(self, **kwargs): + """Turn the device on.""" + if self._switch('on'): + self._state = True + + def turn_off(self, **kwargs): + """Turn the device off.""" + if self._switch('off'): + self._state = False From f88b5a9c5e015c0943d289f30ac16276a4f6b48e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 5 Jan 2017 22:28:48 +0100 Subject: [PATCH 099/189] Update frontend --- homeassistant/components/frontend/version.py | 6 +++--- .../frontend/www_static/frontend.html | 4 ++-- .../frontend/www_static/frontend.html.gz | Bin 131040 -> 131102 bytes .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-history.html | 2 +- .../panels/ha-panel-history.html.gz | Bin 6842 -> 6844 bytes .../www_static/panels/ha-panel-logbook.html | 2 +- .../panels/ha-panel-logbook.html.gz | Bin 7344 -> 7322 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2324 -> 2323 bytes 10 files changed, 9 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index b24c2a6819f..ba7937662a1 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,7 +2,7 @@ FINGERPRINTS = { "core.js": "ad1ebcd0614c98a390d982087a7ca75c", - "frontend.html": "826ee6a4b39c939e31aa468b1ef618f9", + "frontend.html": "d6132d3aaac78e1a91efe7bc130b6f45", "mdi.html": "48fcee544a61b668451faf2b7295df70", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "c2d5ec676be98d4474d19f94d0262c1e", @@ -10,9 +10,9 @@ FINGERPRINTS = { "panels/ha-panel-dev-service.html": "ac74f7ce66fd7136d25c914ea12f4351", "panels/ha-panel-dev-state.html": "65e5f791cc467561719bf591f1386054", "panels/ha-panel-dev-template.html": "7d744ab7f7c08b6d6ad42069989de400", - "panels/ha-panel-history.html": "efe1bcdd7733b09e55f4f965d171c295", + "panels/ha-panel-history.html": "8f7b538b7bedc83149112aea9c11b77a", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", - "panels/ha-panel-logbook.html": "4bc5c8370a85a4215413fbae8f85addb", + "panels/ha-panel-logbook.html": "1a9017aaeaf45453cae0a1a8c56992ad", "panels/ha-panel-map.html": "3b0ca63286cbe80f27bd36dbc2434e89", "websocket_test.html": "575de64b431fe11c3785bf96d7813450" } diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index d8ab01b320f..545d1f50fc7 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -1,5 +1,5 @@

    \ No newline at end of file +n&&e.updateNativeStyleProperties(document.documentElement,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.serializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(this._styles,this):null)},customStyle:null,getComputedStyleValue:function(e){return i||this._styleProperties||this._computeStyleProperties(),!i&&this._styleProperties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_setupStyleProperties:function(){this.customStyle={},this._styleCache=null,this._styleProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._customStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySelector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeStyle.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSelector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__stylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.host))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=this._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCache||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styles,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),this._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStyleProperties,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,this.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(this.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStyleProperties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeStyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootPropertiesForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styles,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStyleProperties:function(){for(var e,t={},n=0;n0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e=0;t--){var n=this._instances[t];n.isPlaceholder&&t=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i=0;i--){var c=a[i];void 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 3708f52a28065a5713abca93a753c689e6d1d4b8..cf5960d5805d5476f6676f719af498050f1bfe84 100644 GIT binary patch delta 103531 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
    bJFdSKr#|k#_6r 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 delta 103485 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 \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}} \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html.gz index 6a8e59f4d2f09722141dbfa61a9151719b045c97..3025b732cdd8960f82e4704fa7280d37ae34fa26 100644 GIT binary patch literal 6844 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 literal 6842 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 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html index 1a2398a061f..e8d615caba0 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html @@ -1,4 +1,4 @@ \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}} \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html.gz index 4bc730683e0dc6e895ce50c295f2be694ab7ba01..ebdf2fc7e724247381ca825a206fe8da955ae30b 100644 GIT binary patch delta 6973 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 Tw*J-odWM(Vl74;kXJ7yTwCG`G delta 7012 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 Y5p^X0SMKNg41eS!R|(s51u!rG00gzDY5)KL diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 02760e32c34..aebec9ec51c 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","cd9f7f9eccd5c74e35114b33ad286551"],["/frontend/panels/dev-event-c2d5ec676be98d4474d19f94d0262c1e.html","6c55fc819751923ab00c62ae3fbb7222"],["/frontend/panels/dev-info-a9c07bf281fe9791fb15827ec1286825.html","931f9327e368db710fcdf5f7202f2588"],["/frontend/panels/dev-service-ac74f7ce66fd7136d25c914ea12f4351.html","7018929ba2aba240fc86e16d33201490"],["/frontend/panels/dev-state-65e5f791cc467561719bf591f1386054.html","78158786a6597ef86c3fd6f4985cde92"],["/frontend/panels/dev-template-7d744ab7f7c08b6d6ad42069989de400.html","8a6ee994b1cdb45b081299b8609915ed"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-ad1ebcd0614c98a390d982087a7ca75c.js","e900a4b42404d2a5a1c0497e7c53c975"],["/static/frontend-826ee6a4b39c939e31aa468b1ef618f9.html","a1d3b9b10b74fec6eb6499056c0280eb"],["/static/mdi-46a76f877ac9848899b8ed382427c16f.html","a846c4082dd5cffd88ac72cbe943e691"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},createCacheKey=function(e,t,n,a){var c=new URL(e);return a&&c.toString().match(a)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],a=new URL(t,self.location),c=createCacheKey(a,hashParamName,n,!1);return[a.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n))return e.add(new Request(n,{credentials:"same-origin"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(n);var a="index.html";!t&&a&&(n=addDirectoryIndex(n,a),t=urlsToCacheKeys.has(n));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(n=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var n,a;for(n=0;n0noA1RszN=3uUuWg`q|C?aS`9EkYmG46Cll5=y z&#zx#biN{zOK<q%AY&U$|P>ia#_@9(hu6^}1G{BeJ*Wn=7T-uZXqkE`Cl zqw`QE@2~QDmiTpN`!d;gS$B&}NnrSUchAH2%P+t5{$RTF<;Bs!6y0fh0&(gKp$Ln`FDf)iApZE68PtgkI zvj;4Vx6jkhDlPtZ{(F8LyIJun$*7C$Z@bK!Q<*QN@nu~&np0Kyut)ZOVxrQdj-s<3 zb6y1mdtM57UGL&8_-cyVxpaB+SIdmOd#CSd+9a#JL#na&r$^A#2A|C#4(CE-(l;vY zJeMqbNhH;=o#~ZlYLk)V$;~ZKOdcumq}K*L(r=3b z=VD0@r^r(on*t}hyF3@P>j+xr;^w3)YBl-dgsfQxWl_G|XX`^16OW{dz4mdMl{Iyu zMySa|%g#pORgX0krF|nkBK(REY97BYA-Yk-W7VRLHkEUS*-a$#5~ip%ls$DhWpQ@W zloSlS6W0rQU@(HtL)!91|bnQY^o@?oj#P7Tc`8#@g7HZHPx=+b6*XzEFoNi&M7>x<0!dP2OE zRw<1XZ{!?-v!+K~&I>QytouOmu*L(srJZ3Kkr_1|6O#XkdPn4cJC$N>~YrRD!7O(9UJi9bSsq3=I<@%N*HvUOo7tLK=X1Li4f88|W?AfR=H6dMz%Pm|7 zCiN=IwmEc85ERo|`0;$oUZ&7BV%dpO9xR3@oqP&BxB5iPYGK*L6U-9u?R?AL=9{aY zoQ;w?{^tCr7*(f&-nlAQWvm&+eHgoymCBcjZp-gC-M=Z`?MCUohxr@Uq-m(DRmy3) zH7UAe2%K-&Bw#CIrpkG8(&QqhKgr7Cmo)^t(pQMCiEeOJZs3~vY~^G>7O6myYocZM%R2k+%v4+e$8;^TC8ogc_)iFWBt69$?XBLQ&#-E;U@gx#Kk*z zY>j5S_ire6>}G!D`s3znx0{o9?YrW-HSlV^`{j2}&(GQZnXh@Dk6!t!BOePR^6an7 zev)Nv61Q;M-;b{jFmTVE8O8jU%bsJ}(by+{)}1)DOa6<2{j%ShZ$8z|Ht3e0$oosY z=6FSX-M+7TJk|MMudAPZI{wy@RRY1w4_JyF4?KQHLInqJ#KFW}v514?k_~DVn1xMEsxq#-}3m=niVoE%YIv0ynOScxqide`0l6b zE=&B`emB)K`BnGrJY?|p@lE%t;xwz551#x#@b^gKdaJIouL4uPz1hy3Ucc<1Z9R)d zq}a6P50k~a=Q~`L?f+Kjq&;W9{r?9gYuCPfEdIrPiD^fKrn>dy>hFBJJ_ra`3LEd0 zZ?)^)#dd0WgqVldUmvr|7Io`9&a|p}hv;=r`TkGY5I1X%Qf{f!lY$o^7RG0Cn%?~G zm|`F!S5o`^(9gT2^KFW%7yWNkKPkUWb&CBp_sOSU@A}Eb8}zrIbv;*Z>P=%svF`8J z_dn>_!0vf`(rq#2_giP&omO~B`Th;%0%qNy>Ayl|{G5OO^1Re{r{_B!Z*G5|=y$+O zT0O1)-j(ak&wYcF*=lDTUJ$&JZLg~?&zU*151Qt)f5`1@Jml_bec(v`#f=AE8b_3g z$-ML^TeaFdy4CloU0v9Euh750H%dlqdFa=^?qkVc@7Fvz`(No=$p88D?4#YS6Me6> z8{QU$3oO@8+L`s-UF!If{r(3YC`PZz*NTd+`j@xg!pL#T+1IbHTVGew3rb4#^1j_} zAb;;{Nx3#(nzcxH1y6MR!5h)jzv}k>-4L!{zFqg8^VfaV&ds%l;_78~RsCW+`SRZ6 x9*#tHX=&q}wY9H8^0&#_75z(#`O&fTLAug(6$e}ez=&Z!~{3;@h6m1Y0{ delta 1923 zcmbO%G)0JAzMF$Xd1~-PcGda{rZCf)IcAraoi(*ov)>WP-^bp`>AFfK<+$&k{ofm> zq@0{I=kCj%+>;6)``*jmXPy(v-F(fY)#RMZdacZ^T~b>T?!8ElIp|8GwfzF~U*!_B{?F`v$! z6*~9un*Ao#A4R!kKGqlRMlM;v!u;ZWTD!d8^2_FrxIHc}zHa}iNodu~nf&dq!&74u zRl+V^Ia_wPV2Ap->j_Wplpd>z?6Llw*R(ToO8v`-b-4w9-g6s#j+$$oe}B*a2S17* zaLxL5XVLHef4hI*tqcoi+bC1(kUqD#U4Q!1TNgi0-?mQX|4Xh`lcV*!w-!GSf52

    wU!m1b?};c z%BImmRYkDyOns=!W)szO>GJVceAA~%=~uF*T89;wGD&})*b~BKblRA)XO+rHVb>XH zom`7`Cb3wF1o*364)OMim?tE5G^SYCJtx3&nniZJ5Nn+>6W?6 zwem#Bu~4B_$>b@T9)}7R*LQv5Y1rr@u+n8x*MvzOhKj&ft?1GjwSrD31bTYD9^JlCsyFYruWnXw z|NT<=#qqC$SdV3N=g1gpuI!ksbK122nn8M|kn0@f2BkBP=66;_o_Ut0t1Z4#Y)Y08 z=YdJSNwRGMf{MvHAwsJ5lfQC>Y>ZmdnyFx@qQY-@Fm*|4SFWncgy%Dq8aCCdy^%c= zrka24l0{nmxfx!q52UO;msyrE>8)Uzb;RYJmv+v5x$L^s{XH9A*Bri|5P3Gh&&i-c zYvTeAL8&9f2OJi)A6llO_`1bXP5prV4tt+P7NT9xSBS2OZg5pr5Hd=hIoX#*DsWCh zda#R-)bbmS8w4hE_$C%|NUA+uwag+e(OH>1LCZu6 za@MHunwCvy@s?A%HvexQbKGZEpSju`!*=M z7Z-m&kt1h&=p3sq-wN@E>FcFa{a^hG62Iye`d`*}_jLQ>d*`fqei`k&vr_o@@x+~f z1M(-WetV&!_13rJtC^W~O471;zi9tah!88E_<6UI_UpO}hyToYw|v9t@41I`>RilT z#D9=|T>JCqwa;pEZPx6r&(o{VoV?1(XD-w82pMnaoN!j@^=J=bh@;Mcl4 zxr;4o4J>T>?o^jbFFbgAS)7P2%Zhuow@m)1IY`Cr_+ z*efd48r|Ui$7%7_@)_6RE&b{8FVD_=xukjWf9CJP?R#Ho+`8%~M0^2AP)mdm{d@ta?|mrC&Je;h(=h*_UVM`pWNLV6U{+@rak@&6#(0+rBvD?DNF; z%$GWmUnZ}lH0CEoDrkN+zWGFO-kTk&GhWs+=I)$k{U`WPRc2AwmaCi-4=)UUc*bBe z=cf0{L5B(|E_}Vq{k;5o?WYrOJO8oIQ>ni(E#O~-yszH+*Uz*~JigkC?a|sYHT8T; zgwDPA|4qh++T%({}3Dv&r(yy*oUo zA=k|BO#Pmf>)FrGUUrP9@pAfx zH#!!VCcX&?pT3Q2_Nm%GYvQJ^`t?28ctghFxqPvYU;dhYP4Y(F)#w7dA5YIduH71Bjrc7hq2Z?R_nl^6NdmSzHJ8^y7yS(Tp)yw?1u{N~EUoT(xV3;=|d BojU*k From a36ca6244517e52f2fefac5911343c3625f60b59 Mon Sep 17 00:00:00 2001 From: Nick Touran Date: Thu, 5 Jan 2017 14:05:16 -0800 Subject: [PATCH 100/189] Support longer-than-60-second scan_interval and interval_seconds (#5147) * Update scan_interval and interval_seconds max to 1 day vs. 60 seconds * Format fixes * Add docstring on unittest. * Added and implemented new async_track_time_interval helper. * Format fixes, removed unused import. * Undid whoops on unsub_polling. * Updated unit tests for scan_interval. * Added unit test for track_time_interval. * Allow other forms of time interval input for scan_interval and interval_seconds --- .../components/device_tracker/__init__.py | 8 +++-- homeassistant/helpers/config_validation.py | 3 +- homeassistant/helpers/entity_component.py | 8 +++-- homeassistant/helpers/event.py | 29 ++++++++++++++++++- tests/helpers/test_entity_component.py | 20 ++++++++----- tests/helpers/test_event.py | 29 +++++++++++++++++++ 6 files changed, 81 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 30c9fbe9a3a..6467869610d 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -24,6 +24,7 @@ from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers import config_per_platform, discovery from homeassistant.helpers.entity import Entity +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.typing import GPSType, ConfigType, HomeAssistantType import homeassistant.helpers.config_validation as cv import homeassistant.util as util @@ -71,7 +72,7 @@ ATTR_BATTERY = 'battery' ATTR_ATTRIBUTES = 'attributes' PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_SCAN_INTERVAL): cv.positive_int, # seconds + vol.Optional(CONF_SCAN_INTERVAL): cv.time_period, vol.Optional(CONF_TRACK_NEW, default=DEFAULT_TRACK_NEW): cv.boolean, vol.Optional(CONF_CONSIDER_HOME, default=timedelta(seconds=DEFAULT_CONSIDER_HOME)): vol.All( @@ -639,8 +640,9 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, seen.add(mac) hass.async_add_job(async_see_device(mac=mac, host_name=host_name)) - async_track_utc_time_change( - hass, async_device_tracker_scan, second=range(0, 60, interval)) + async_track_time_interval( + hass, async_device_tracker_scan, + timedelta(seconds=interval)) hass.async_add_job(async_device_tracker_scan, None) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index 57ab1582454..b78eedec8c2 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -405,8 +405,7 @@ def key_dependency(key, dependency): PLATFORM_SCHEMA = vol.Schema({ vol.Required(CONF_PLATFORM): string, - vol.Optional(CONF_SCAN_INTERVAL): - vol.All(vol.Coerce(int), vol.Range(min=1)), + vol.Optional(CONF_SCAN_INTERVAL): time_period }, extra=vol.ALLOW_EXTRA) EVENT_SCHEMA = vol.Schema({ diff --git a/homeassistant/helpers/entity_component.py b/homeassistant/helpers/entity_component.py index cd49a5e237e..71ae352c39f 100644 --- a/homeassistant/helpers/entity_component.py +++ b/homeassistant/helpers/entity_component.py @@ -1,5 +1,6 @@ """Helpers for components that manage entities.""" import asyncio +from datetime import timedelta from homeassistant import config as conf_util from homeassistant.bootstrap import ( @@ -12,7 +13,7 @@ from homeassistant.exceptions import HomeAssistantError from homeassistant.loader import get_component from homeassistant.helpers import config_per_platform, discovery from homeassistant.helpers.entity import async_generate_entity_id -from homeassistant.helpers.event import async_track_utc_time_change +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.service import extract_entity_ids from homeassistant.util.async import ( run_callback_threadsafe, run_coroutine_threadsafe) @@ -324,9 +325,10 @@ class EntityPlatform(object): in self.platform_entities): return - self._async_unsub_polling = async_track_utc_time_change( + self._async_unsub_polling = async_track_time_interval( self.component.hass, self._update_entity_states, - second=range(0, 60, self.scan_interval)) + timedelta(seconds=self.scan_interval) + ) @asyncio.coroutine def _async_process_entity(self, new_entity, update_before_add): diff --git a/homeassistant/helpers/event.py b/homeassistant/helpers/event.py index dd00cfee30e..29d3d131f5c 100644 --- a/homeassistant/helpers/event.py +++ b/homeassistant/helpers/event.py @@ -85,7 +85,7 @@ track_state_change = threaded_listener_factory(async_track_state_change) def async_track_point_in_time(hass, action, point_in_time): - """Add a listener that fires once after a spefic point in time.""" + """Add a listener that fires once after a specific point in time.""" utc_point_in_time = dt_util.as_utc(point_in_time) @callback @@ -133,6 +133,33 @@ track_point_in_utc_time = threaded_listener_factory( async_track_point_in_utc_time) +def async_track_time_interval(hass, action, interval): + """Add a listener that fires repetitively at every timedelta interval.""" + def next_interval(): + """Return the next interval.""" + return dt_util.utcnow() + interval + + @callback + def interval_listener(now): + """Called when when the interval has elapsed.""" + nonlocal remove + remove = async_track_point_in_utc_time( + hass, interval_listener, next_interval()) + hass.async_run_job(action, now) + + remove = async_track_point_in_utc_time( + hass, interval_listener, next_interval()) + + def remove_listener(): + """Remove interval listener.""" + remove() + + return remove_listener + + +track_time_interval = threaded_listener_factory(async_track_time_interval) + + def async_track_sunrise(hass, action, offset=None): """Add a listener that will fire a specified offset from sunrise daily.""" from homeassistant.components import sun diff --git a/tests/helpers/test_entity_component.py b/tests/helpers/test_entity_component.py index 1e12d7c3ea3..69c314a8208 100644 --- a/tests/helpers/test_entity_component.py +++ b/tests/helpers/test_entity_component.py @@ -5,12 +5,15 @@ from collections import OrderedDict import logging import unittest from unittest.mock import patch, Mock +from datetime import timedelta import homeassistant.core as ha import homeassistant.loader as loader from homeassistant.components import group from homeassistant.helpers.entity import Entity, generate_entity_id -from homeassistant.helpers.entity_component import EntityComponent +from homeassistant.helpers.entity_component import ( + EntityComponent, DEFAULT_SCAN_INTERVAL) + from homeassistant.helpers import discovery import homeassistant.util.dt as dt_util @@ -106,7 +109,7 @@ class TestHelpersEntityComponent(unittest.TestCase): no_poll_ent.async_update.reset_mock() poll_ent.async_update.reset_mock() - fire_time_changed(self.hass, dt_util.utcnow().replace(second=0)) + fire_time_changed(self.hass, dt_util.utcnow() + timedelta(seconds=20)) self.hass.block_till_done() assert not no_poll_ent.async_update.called @@ -123,7 +126,10 @@ class TestHelpersEntityComponent(unittest.TestCase): assert 1 == len(self.hass.states.entity_ids()) ent2.update = lambda *_: component.add_entities([ent1]) - fire_time_changed(self.hass, dt_util.utcnow().replace(second=0)) + fire_time_changed( + self.hass, dt_util.utcnow() + + timedelta(seconds=DEFAULT_SCAN_INTERVAL) + ) self.hass.block_till_done() assert 2 == len(self.hass.states.entity_ids()) @@ -311,7 +317,7 @@ class TestHelpersEntityComponent(unittest.TestCase): mock_setup.call_args[0] @patch('homeassistant.helpers.entity_component.' - 'async_track_utc_time_change') + 'async_track_time_interval') def test_set_scan_interval_via_config(self, mock_track): """Test the setting of the scan interval via configuration.""" def platform_setup(hass, config, add_devices, discovery_info=None): @@ -331,10 +337,10 @@ class TestHelpersEntityComponent(unittest.TestCase): }) assert mock_track.called - assert [0, 30] == list(mock_track.call_args[1]['second']) + assert timedelta(seconds=30) == mock_track.call_args[0][2] @patch('homeassistant.helpers.entity_component.' - 'async_track_utc_time_change') + 'async_track_time_interval') def test_set_scan_interval_via_platform(self, mock_track): """Test the setting of the scan interval via platform.""" def platform_setup(hass, config, add_devices, discovery_info=None): @@ -355,7 +361,7 @@ class TestHelpersEntityComponent(unittest.TestCase): }) assert mock_track.called - assert [0, 30] == list(mock_track.call_args[1]['second']) + assert timedelta(seconds=30) == mock_track.call_args[0][2] def test_set_entity_namespace_via_config(self): """Test setting an entity namespace.""" diff --git a/tests/helpers/test_event.py b/tests/helpers/test_event.py index 77518241080..05d5953d08a 100644 --- a/tests/helpers/test_event.py +++ b/tests/helpers/test_event.py @@ -15,6 +15,7 @@ from homeassistant.helpers.event import ( track_utc_time_change, track_time_change, track_state_change, + track_time_interval, track_sunrise, track_sunset, ) @@ -187,6 +188,34 @@ class TestEventHelpers(unittest.TestCase): self.assertEqual(5, len(wildcard_runs)) self.assertEqual(6, len(wildercard_runs)) + def test_track_time_interval(self): + """Test tracking time interval.""" + specific_runs = [] + + utc_now = dt_util.utcnow() + unsub = track_time_interval( + self.hass, lambda x: specific_runs.append(1), + timedelta(seconds=10) + ) + + self._send_time_changed(utc_now + timedelta(seconds=5)) + self.hass.block_till_done() + self.assertEqual(0, len(specific_runs)) + + self._send_time_changed(utc_now + timedelta(seconds=13)) + self.hass.block_till_done() + self.assertEqual(1, len(specific_runs)) + + self._send_time_changed(utc_now + timedelta(minutes=20)) + self.hass.block_till_done() + self.assertEqual(2, len(specific_runs)) + + unsub() + + self._send_time_changed(utc_now + timedelta(seconds=30)) + self.hass.block_till_done() + self.assertEqual(2, len(specific_runs)) + def test_track_sunrise(self): """Test track the sunrise.""" latitude = 32.87336 From 50a8ec733526a594a6e1dce61bd9df4accafcd69 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 5 Jan 2017 23:09:04 +0100 Subject: [PATCH 101/189] Bugfix aiohttp connector pool close on shutdown (#5190) * Bugfix aiohttp connector pool close on shutdown * fix circular import * remove lint disable --- homeassistant/core.py | 5 +++++ homeassistant/helpers/aiohttp_client.py | 26 +++++++++++-------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/homeassistant/core.py b/homeassistant/core.py index de272beeeea..7fd6006f916 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -288,6 +288,8 @@ class HomeAssistant(object): This method is a coroutine. """ + import homeassistant.helpers.aiohttp_client as aiohttp_client + self.state = CoreState.stopping self.async_track_tasks() self.bus.async_fire(EVENT_HOMEASSISTANT_STOP) @@ -295,6 +297,9 @@ class HomeAssistant(object): self.executor.shutdown() self.state = CoreState.not_running + # cleanup connector pool from aiohttp + yield from aiohttp_client.async_cleanup_websession(self) + # cleanup async layer from python logging if self.data.get(DATA_ASYNCHANDLER): handler = self.data.pop(DATA_ASYNCHANDLER) diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index b0bf2b8e1d3..b44b6aebefe 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -92,33 +92,29 @@ def _async_get_connector(hass, verify_ssl=True): if DATA_CONNECTOR not in hass.data: connector = aiohttp.TCPConnector(loop=hass.loop) hass.data[DATA_CONNECTOR] = connector - - _async_register_connector_shutdown(hass, connector) else: connector = hass.data[DATA_CONNECTOR] else: if DATA_CONNECTOR_NOTVERIFY not in hass.data: connector = aiohttp.TCPConnector(loop=hass.loop, verify_ssl=False) hass.data[DATA_CONNECTOR_NOTVERIFY] = connector - - _async_register_connector_shutdown(hass, connector) else: connector = hass.data[DATA_CONNECTOR_NOTVERIFY] return connector -@callback -# pylint: disable=invalid-name -def _async_register_connector_shutdown(hass, connector): - """Register connector pool close on homeassistant shutdown. +@asyncio.coroutine +def async_cleanup_websession(hass): + """Cleanup aiohttp connector pool. - This method must be run in the event loop. + This method is a coroutine. """ - @asyncio.coroutine - def _async_close_connector(event): - """Close websession on shutdown.""" - yield from connector.close() + tasks = [] + if DATA_CONNECTOR in hass.data: + tasks.append(hass.data[DATA_CONNECTOR].close()) + if DATA_CONNECTOR_NOTVERIFY in hass.data: + tasks.append(hass.data[DATA_CONNECTOR_NOTVERIFY].close()) - hass.bus.async_listen_once( - EVENT_HOMEASSISTANT_STOP, _async_close_connector) + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) From 93d462b010f35b08d00beb089d3e4b7aa123d78a Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Thu, 5 Jan 2017 17:10:43 -0500 Subject: [PATCH 102/189] Fix for async device_tracker (#5192) --- homeassistant/components/device_tracker/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 6467869610d..5cedfc5cb09 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -154,7 +154,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): scanner = yield from hass.loop.run_in_executor( None, platform.get_scanner, hass, {DOMAIN: p_config}) elif hasattr(platform, 'async_setup_scanner'): - setup = yield from platform.setup_scanner( + setup = yield from platform.async_setup_scanner( hass, p_config, tracker.see) elif hasattr(platform, 'setup_scanner'): setup = yield from hass.loop.run_in_executor( From ba29ba0fc3c45e37f1c6a683f3a43453579164bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Thu, 5 Jan 2017 23:15:26 +0100 Subject: [PATCH 103/189] Universal media_player returns ATTR_MEDIA_POSITION and ATTR_MEDIA_POSITION_UPDATED_AT from it's active child now. (#5184) --- homeassistant/components/media_player/universal.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/universal.py b/homeassistant/components/media_player/universal.py index 85a3eb42aa5..45c30b979a6 100644 --- a/homeassistant/components/media_player/universal.py +++ b/homeassistant/components/media_player/universal.py @@ -15,7 +15,8 @@ from homeassistant.components.media_player import ( ATTR_MEDIA_PLAYLIST, ATTR_MEDIA_SEASON, ATTR_MEDIA_SEEK_POSITION, ATTR_MEDIA_SERIES_TITLE, ATTR_MEDIA_TITLE, ATTR_MEDIA_TRACK, ATTR_MEDIA_VOLUME_LEVEL, ATTR_MEDIA_VOLUME_MUTED, ATTR_INPUT_SOURCE_LIST, - ATTR_SUPPORTED_MEDIA_COMMANDS, DOMAIN, SERVICE_PLAY_MEDIA, + ATTR_SUPPORTED_MEDIA_COMMANDS, ATTR_MEDIA_POSITION, + ATTR_MEDIA_POSITION_UPDATED_AT, DOMAIN, SERVICE_PLAY_MEDIA, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_VOLUME_STEP, SUPPORT_SELECT_SOURCE, SUPPORT_CLEAR_PLAYLIST, ATTR_INPUT_SOURCE, SERVICE_SELECT_SOURCE, SERVICE_CLEAR_PLAYLIST, @@ -380,6 +381,16 @@ class UniversalMediaPlayer(MediaPlayerDevice): return {ATTR_ACTIVE_CHILD: active_child.entity_id} \ if active_child else {} + @property + def media_position(self): + """Position of current playing media in seconds.""" + return self._child_attr(ATTR_MEDIA_POSITION) + + @property + def media_position_updated_at(self): + """When was the position of the current playing media valid.""" + return self._child_attr(ATTR_MEDIA_POSITION_UPDATED_AT) + def turn_on(self): """Turn the media player on.""" self._call_service(SERVICE_TURN_ON, allow_override=True) From db623040a4a2c9dfd21b00e22aa22956735a6a6e Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Thu, 5 Jan 2017 17:33:52 -0500 Subject: [PATCH 104/189] Re-enabled Weather Sensors for the ISY component. (#5148) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Re-enabled Weather Sensors for the ISY component. As the ISY component had been updated to support newer components and have better UOM support, the support for ISY’s weather module was dropped. This adds that support back into Home Assistant. * Cleanup of the ISY Weather support. Cleaned up the for loops used to generate nodes representing weather data from the ISY. Moved the weather_node named tuple to the top of the file so that it can be more easily identified. * Update isy994.py --- homeassistant/components/isy994.py | 19 +++++++++ homeassistant/components/sensor/isy994.py | 47 +++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/homeassistant/components/isy994.py b/homeassistant/components/isy994.py index 0539469f198..7451b3286f7 100644 --- a/homeassistant/components/isy994.py +++ b/homeassistant/components/isy994.py @@ -4,6 +4,7 @@ Support the ISY-994 controllers. For configuration details please visit the documentation for this component at https://home-assistant.io/components/isy994/ """ +from collections import namedtuple import logging from urllib.parse import urlparse import voluptuous as vol @@ -47,6 +48,7 @@ CONFIG_SCHEMA = vol.Schema({ }, extra=vol.ALLOW_EXTRA) SENSOR_NODES = [] +WEATHER_NODES = [] NODES = [] GROUPS = [] PROGRAMS = {} @@ -59,6 +61,9 @@ SUPPORTED_DOMAINS = ['binary_sensor', 'cover', 'fan', 'light', 'lock', 'sensor', 'switch'] +WeatherNode = namedtuple('WeatherNode', ('status', 'name', 'uom')) + + def filter_nodes(nodes: list, units: list=None, states: list=None) -> list: """Filter a list of ISY nodes based on the units and states provided.""" filtered_nodes = [] @@ -132,6 +137,17 @@ def _categorize_programs() -> None: PROGRAMS[component].append(program) +def _categorize_weather() -> None: + """Categorize the ISY994 weather data.""" + global WEATHER_NODES + + climate_attrs = dir(ISY.climate) + WEATHER_NODES = [WeatherNode(getattr(ISY.climate, attr), attr, + getattr(ISY.climate, attr + '_units')) + for attr in climate_attrs + if attr + '_units' in climate_attrs] + + def setup(hass: HomeAssistant, config: ConfigType) -> bool: """Set up the ISY 994 platform.""" isy_config = config.get(DOMAIN) @@ -178,6 +194,9 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool: _categorize_programs() + if ISY.configuration.get('Weather Information'): + _categorize_weather() + # Listen for HA stop to disconnect. hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop) diff --git a/homeassistant/components/sensor/isy994.py b/homeassistant/components/sensor/isy994.py index df3ae9ed7ba..d35c76b81dc 100644 --- a/homeassistant/components/sensor/isy994.py +++ b/homeassistant/components/sensor/isy994.py @@ -251,6 +251,9 @@ def setup_platform(hass, config: ConfigType, _LOGGER.debug('LOADING %s', node.name) devices.append(ISYSensorDevice(node)) + for node in isy.WEATHER_NODES: + devices.append(ISYWeatherDevice(node)) + add_devices(devices) @@ -309,3 +312,47 @@ class ISYSensorDevice(isy.ISYDevice): return self.hass.config.units.temperature_unit else: return raw_units + + +class ISYWeatherDevice(isy.ISYDevice): + """Representation of an ISY994 weather device.""" + + _domain = 'sensor' + + def __init__(self, node) -> None: + """Initialize the ISY994 weather device.""" + isy.ISYDevice.__init__(self, node) + + @property + def unique_id(self) -> str: + """Return the unique identifier for the node.""" + return self._node.name + + @property + def raw_units(self) -> str: + """Return the raw unit of measurement.""" + if self._node.uom == 'F': + return TEMP_FAHRENHEIT + if self._node.uom == 'C': + return TEMP_CELSIUS + return self._node.uom + + @property + def state(self) -> object: + """Return the value of the node.""" + # pylint: disable=protected-access + val = self._node.status._val + raw_units = self._node.uom + + if raw_units in [TEMP_CELSIUS, TEMP_FAHRENHEIT]: + return self.hass.config.units.temperature(val, raw_units) + return val + + @property + def unit_of_measurement(self) -> str: + """Return the unit of measurement for the node.""" + raw_units = self.raw_units + + if raw_units in [TEMP_CELSIUS, TEMP_FAHRENHEIT]: + return self.hass.config.units.temperature_unit + return raw_units From c959637ebebcd8651a7d9ecfacb7369c4b2c2b8f Mon Sep 17 00:00:00 2001 From: Jared J Date: Thu, 5 Jan 2017 17:39:28 -0500 Subject: [PATCH 105/189] Add Yeelight auto discovery, color temp (#5145) * Add Yeelight auto discovery, color temp * Fixing linting issues --- homeassistant/components/discovery.py | 1 + homeassistant/components/light/yeelight.py | 36 +++++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/discovery.py b/homeassistant/components/discovery.py index 32cb205fa0f..32d57b4bf85 100644 --- a/homeassistant/components/discovery.py +++ b/homeassistant/components/discovery.py @@ -38,6 +38,7 @@ SERVICE_HANDLERS = { 'directv': ('media_player', 'directv'), 'denonavr': ('media_player', 'denonavr'), 'samsung_tv': ('media_player', 'samsungtv'), + 'yeelight': ('light', 'yeelight'), } CONFIG_SCHEMA = vol.Schema({ diff --git a/homeassistant/components/light/yeelight.py b/homeassistant/components/light/yeelight.py index d8aa138af47..a8a2ec9b3fc 100644 --- a/homeassistant/components/light/yeelight.py +++ b/homeassistant/components/light/yeelight.py @@ -11,10 +11,15 @@ import voluptuous as vol from homeassistant.const import CONF_DEVICES, CONF_NAME from homeassistant.components.light import (ATTR_BRIGHTNESS, ATTR_RGB_COLOR, + ATTR_COLOR_TEMP, SUPPORT_BRIGHTNESS, - SUPPORT_RGB_COLOR, Light, - PLATFORM_SCHEMA) + SUPPORT_RGB_COLOR, + SUPPORT_COLOR_TEMP, + Light, PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv +from homeassistant.util import color as color_util +from homeassistant.util.color import \ + color_temperature_mired_to_kelvin as mired_to_kelvin REQUIREMENTS = ['pyyeelight==1.0-beta'] @@ -22,7 +27,8 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'yeelight' -SUPPORT_YEELIGHT = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR) +SUPPORT_YEELIGHT = (SUPPORT_BRIGHTNESS | SUPPORT_RGB_COLOR | + SUPPORT_COLOR_TEMP) DEVICE_SCHEMA = vol.Schema({vol.Optional(CONF_NAME): cv.string, }) @@ -33,9 +39,14 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the Yeelight bulbs.""" lights = [] - for ipaddr, device_config in config[CONF_DEVICES].items(): - device = {'name': device_config[CONF_NAME], 'ipaddr': ipaddr} + if discovery_info is not None: + device = {'name': discovery_info['hostname'], + 'ipaddr': discovery_info['host']} lights.append(YeelightLight(device)) + else: + for ipaddr, device_config in config[CONF_DEVICES].items(): + device = {'name': device_config[CONF_NAME], 'ipaddr': ipaddr} + lights.append(YeelightLight(device)) add_devices(lights) @@ -54,6 +65,7 @@ class YeelightLight(Light): self._state = None self._bright = None self._rgb = None + self._ct = None try: self._bulb = pyyeelight.YeelightBulb(self._ipaddr) except socket.error: @@ -86,6 +98,11 @@ class YeelightLight(Light): """Return the color property.""" return self._rgb + @property + def color_temp(self): + """Return the color temperature.""" + return color_util.color_temperature_kelvin_to_mired(self._ct) + @property def supported_features(self): """Flag supported features.""" @@ -101,6 +118,11 @@ class YeelightLight(Light): self._bulb.set_rgb_color(rgb[0], rgb[1], rgb[2]) self._rgb = [rgb[0], rgb[1], rgb[2]] + if ATTR_COLOR_TEMP in kwargs: + kelvin = int(mired_to_kelvin(kwargs[ATTR_COLOR_TEMP])) + self._bulb.set_color_temperature(kelvin) + self._ct = kelvin + if ATTR_BRIGHTNESS in kwargs: bright = int(kwargs[ATTR_BRIGHTNESS] * 100 / 255) self._bulb.set_brightness(bright) @@ -134,3 +156,7 @@ class YeelightLight(Light): green = int((raw_rgb - (red * 65536)) / 256) blue = raw_rgb - (red * 65536) - (green * 256) self._rgb = [red, green, blue] + + # Update CT value + self._ct = int(self._bulb.get_property( + self._bulb.PROPERTY_NAME_COLOR_TEMPERATURE)) From 1719d88602bd0ec959aa9dd934533201644d35b3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 6 Jan 2017 00:16:12 +0100 Subject: [PATCH 106/189] Bugfix default values to timedelta (#5193) * Bugfix default values to timedelta * fix unittests --- .../components/alarm_control_panel/__init__.py | 3 ++- .../components/alarm_control_panel/concord232.py | 3 ++- homeassistant/components/binary_sensor/__init__.py | 3 ++- .../components/binary_sensor/command_line.py | 3 ++- .../components/binary_sensor/concord232.py | 2 +- homeassistant/components/camera/__init__.py | 3 ++- homeassistant/components/climate/__init__.py | 7 ++++--- homeassistant/components/cover/__init__.py | 3 ++- .../components/device_tracker/__init__.py | 14 +++++--------- homeassistant/components/fan/__init__.py | 3 ++- homeassistant/components/light/__init__.py | 3 ++- homeassistant/components/lock/__init__.py | 2 +- homeassistant/components/media_player/__init__.py | 3 ++- homeassistant/components/remote/__init__.py | 2 +- homeassistant/components/sensor/__init__.py | 3 ++- homeassistant/components/sensor/command_line.py | 3 ++- homeassistant/components/sensor/eliqonline.py | 3 ++- homeassistant/components/switch/__init__.py | 2 +- homeassistant/helpers/entity_component.py | 5 ++--- tests/helpers/test_entity_component.py | 10 +++++----- 20 files changed, 44 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/alarm_control_panel/__init__.py b/homeassistant/components/alarm_control_panel/__init__.py index ea7727cea33..f6fbc933467 100644 --- a/homeassistant/components/alarm_control_panel/__init__.py +++ b/homeassistant/components/alarm_control_panel/__init__.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/alarm_control_panel/ """ import asyncio +from datetime import timedelta import logging import os @@ -20,7 +21,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent DOMAIN = 'alarm_control_panel' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ATTR_CHANGED_BY = 'changed_by' ENTITY_ID_FORMAT = DOMAIN + '.{}' diff --git a/homeassistant/components/alarm_control_panel/concord232.py b/homeassistant/components/alarm_control_panel/concord232.py index de153a9e0a5..18a492d6c12 100755 --- a/homeassistant/components/alarm_control_panel/concord232.py +++ b/homeassistant/components/alarm_control_panel/concord232.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/alarm_control_panel.concord232/ """ import datetime +from datetime import timedelta import logging import requests @@ -25,7 +26,7 @@ DEFAULT_HOST = 'localhost' DEFAULT_NAME = 'CONCORD232' DEFAULT_PORT = 5007 -SCAN_INTERVAL = 1 +SCAN_INTERVAL = timedelta(seconds=1) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, diff --git a/homeassistant/components/binary_sensor/__init__.py b/homeassistant/components/binary_sensor/__init__.py index 38b08fd32b4..26a19ce3f59 100644 --- a/homeassistant/components/binary_sensor/__init__.py +++ b/homeassistant/components/binary_sensor/__init__.py @@ -5,6 +5,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/binary_sensor/ """ import asyncio +from datetime import timedelta import logging import voluptuous as vol @@ -15,7 +16,7 @@ from homeassistant.const import (STATE_ON, STATE_OFF) from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa DOMAIN = 'binary_sensor' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ENTITY_ID_FORMAT = DOMAIN + '.{}' SENSOR_CLASSES = [ diff --git a/homeassistant/components/binary_sensor/command_line.py b/homeassistant/components/binary_sensor/command_line.py index 72d0a240809..f051120d680 100644 --- a/homeassistant/components/binary_sensor/command_line.py +++ b/homeassistant/components/binary_sensor/command_line.py @@ -4,6 +4,7 @@ Support for custom shell commands to retrieve values. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/binary_sensor.command_line/ """ +from datetime import timedelta import logging import voluptuous as vol @@ -22,7 +23,7 @@ DEFAULT_NAME = 'Binary Command Sensor' DEFAULT_PAYLOAD_ON = 'ON' DEFAULT_PAYLOAD_OFF = 'OFF' -SCAN_INTERVAL = 60 +SCAN_INTERVAL = timedelta(seconds=60) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_COMMAND): cv.string, diff --git a/homeassistant/components/binary_sensor/concord232.py b/homeassistant/components/binary_sensor/concord232.py index d9cb11ba6a7..109eed1fdc2 100755 --- a/homeassistant/components/binary_sensor/concord232.py +++ b/homeassistant/components/binary_sensor/concord232.py @@ -27,7 +27,7 @@ DEFAULT_NAME = 'Alarm' DEFAULT_PORT = '5007' DEFAULT_SSL = False -SCAN_INTERVAL = 1 +SCAN_INTERVAL = datetime.timedelta(seconds=1) ZONE_TYPES_SCHEMA = vol.Schema({ cv.positive_int: vol.In(SENSOR_CLASSES), diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 8a114cb627d..5b2aa463607 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -6,6 +6,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/camera/ """ import asyncio +from datetime import timedelta import logging from aiohttp import web @@ -17,7 +18,7 @@ from homeassistant.components.http import HomeAssistantView, KEY_AUTHENTICATED DOMAIN = 'camera' DEPENDENCIES = ['http'] -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ENTITY_ID_FORMAT = DOMAIN + '.{}' STATE_RECORDING = 'recording' diff --git a/homeassistant/components/climate/__init__.py b/homeassistant/components/climate/__init__.py index 79d0fbbb2de..3058258c75a 100644 --- a/homeassistant/components/climate/__init__.py +++ b/homeassistant/components/climate/__init__.py @@ -5,16 +5,17 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/climate/ """ import asyncio +from datetime import timedelta import logging import os import functools as ft from numbers import Number -import voluptuous as vol -from homeassistant.helpers.entity_component import EntityComponent +import voluptuous as vol from homeassistant.config import load_yaml_config_file from homeassistant.util.temperature import convert as convert_temperature +from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.entity import Entity from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa import homeassistant.helpers.config_validation as cv @@ -25,7 +26,7 @@ from homeassistant.const import ( DOMAIN = "climate" ENTITY_ID_FORMAT = DOMAIN + ".{}" -SCAN_INTERVAL = 60 +SCAN_INTERVAL = timedelta(seconds=60) SERVICE_SET_AWAY_MODE = "set_away_mode" SERVICE_SET_AUX_HEAT = "set_aux_heat" diff --git a/homeassistant/components/cover/__init__.py b/homeassistant/components/cover/__init__.py index 6c268e49be6..da473df111e 100644 --- a/homeassistant/components/cover/__init__.py +++ b/homeassistant/components/cover/__init__.py @@ -5,6 +5,7 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/cover/ """ import os +from datetime import timedelta import logging import voluptuous as vol @@ -23,7 +24,7 @@ from homeassistant.const import ( DOMAIN = 'cover' -SCAN_INTERVAL = 15 +SCAN_INTERVAL = timedelta(seconds=15) GROUP_NAME_ALL_COVERS = 'all covers' ENTITY_ID_ALL_COVERS = group.ENTITY_ID_FORMAT.format('all_covers') diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 5cedfc5cb09..9b5556d7ace 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -51,10 +51,10 @@ CONF_TRACK_NEW = 'track_new_devices' DEFAULT_TRACK_NEW = True CONF_CONSIDER_HOME = 'consider_home' -DEFAULT_CONSIDER_HOME = 180 +DEFAULT_CONSIDER_HOME = timedelta(seconds=180) CONF_SCAN_INTERVAL = 'interval_seconds' -DEFAULT_SCAN_INTERVAL = 12 +DEFAULT_SCAN_INTERVAL = timedelta(seconds=12) CONF_AWAY_HIDE = 'hide_if_away' DEFAULT_AWAY_HIDE = False @@ -75,7 +75,7 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SCAN_INTERVAL): cv.time_period, vol.Optional(CONF_TRACK_NEW, default=DEFAULT_TRACK_NEW): cv.boolean, vol.Optional(CONF_CONSIDER_HOME, - default=timedelta(seconds=DEFAULT_CONSIDER_HOME)): vol.All( + default=DEFAULT_CONSIDER_HOME): vol.All( cv.time_period, cv.positive_timedelta) }) @@ -122,8 +122,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): return False else: conf = conf[0] if len(conf) > 0 else {} - consider_home = conf.get(CONF_CONSIDER_HOME, - timedelta(seconds=DEFAULT_CONSIDER_HOME)) + consider_home = conf.get(CONF_CONSIDER_HOME, DEFAULT_CONSIDER_HOME) track_new = conf.get(CONF_TRACK_NEW, DEFAULT_TRACK_NEW) devices = yield from async_load_config(yaml_path, hass, consider_home) @@ -640,10 +639,7 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, seen.add(mac) hass.async_add_job(async_see_device(mac=mac, host_name=host_name)) - async_track_time_interval( - hass, async_device_tracker_scan, - timedelta(seconds=interval)) - + async_track_time_interval(hass, async_device_tracker_scan, interval) hass.async_add_job(async_device_tracker_scan, None) diff --git a/homeassistant/components/fan/__init__.py b/homeassistant/components/fan/__init__.py index 79793435625..b67b4d2ad24 100644 --- a/homeassistant/components/fan/__init__.py +++ b/homeassistant/components/fan/__init__.py @@ -4,6 +4,7 @@ Provides functionality to interact with fans. For more details about this component, please refer to the documentation at https://home-assistant.io/components/fan/ """ +from datetime import timedelta import logging import os @@ -21,7 +22,7 @@ import homeassistant.helpers.config_validation as cv DOMAIN = 'fan' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) GROUP_NAME_ALL_FANS = 'all fans' ENTITY_ID_ALL_FANS = group.ENTITY_ID_FORMAT.format(GROUP_NAME_ALL_FANS) diff --git a/homeassistant/components/light/__init__.py b/homeassistant/components/light/__init__.py index d98d8b0d5fc..efbb9447fcf 100644 --- a/homeassistant/components/light/__init__.py +++ b/homeassistant/components/light/__init__.py @@ -5,6 +5,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/light/ """ import asyncio +from datetime import timedelta import logging import os import csv @@ -26,7 +27,7 @@ from homeassistant.util.async import run_callback_threadsafe DOMAIN = "light" -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) GROUP_NAME_ALL_LIGHTS = 'all lights' ENTITY_ID_ALL_LIGHTS = group.ENTITY_ID_FORMAT.format('all_lights') diff --git a/homeassistant/components/lock/__init__.py b/homeassistant/components/lock/__init__.py index e74b675733b..a7d392b321e 100644 --- a/homeassistant/components/lock/__init__.py +++ b/homeassistant/components/lock/__init__.py @@ -21,7 +21,7 @@ from homeassistant.const import ( from homeassistant.components import group DOMAIN = 'lock' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ATTR_CHANGED_BY = 'changed_by' GROUP_NAME_ALL_LOCKS = 'all locks' diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index aa30c1abdb1..e29e950a7f9 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -5,6 +5,7 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/media_player/ """ import asyncio +from datetime import timedelta import functools as ft import hashlib import logging @@ -34,7 +35,7 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'media_player' DEPENDENCIES = ['http'] -SCAN_INTERVAL = 10 +SCAN_INTERVAL = timedelta(seconds=10) ENTITY_ID_FORMAT = DOMAIN + '.{}' diff --git a/homeassistant/components/remote/__init__.py b/homeassistant/components/remote/__init__.py index 118a160c305..485ee681209 100755 --- a/homeassistant/components/remote/__init__.py +++ b/homeassistant/components/remote/__init__.py @@ -36,7 +36,7 @@ GROUP_NAME_ALL_REMOTES = 'all remotes' MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) SERVICE_SEND_COMMAND = 'send_command' SERVICE_SYNC = 'sync' diff --git a/homeassistant/components/sensor/__init__.py b/homeassistant/components/sensor/__init__.py index b4a467e240f..a3f361bdffe 100644 --- a/homeassistant/components/sensor/__init__.py +++ b/homeassistant/components/sensor/__init__.py @@ -5,13 +5,14 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/sensor/ """ import asyncio +from datetime import timedelta import logging from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa DOMAIN = 'sensor' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) ENTITY_ID_FORMAT = DOMAIN + '.{}' diff --git a/homeassistant/components/sensor/command_line.py b/homeassistant/components/sensor/command_line.py index e0700e12903..227b133535d 100644 --- a/homeassistant/components/sensor/command_line.py +++ b/homeassistant/components/sensor/command_line.py @@ -4,6 +4,7 @@ Allows to configure custom shell commands to turn a value for a sensor. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.command_line/ """ +from datetime import timedelta import logging import subprocess @@ -20,7 +21,7 @@ _LOGGER = logging.getLogger(__name__) DEFAULT_NAME = 'Command Sensor' -SCAN_INTERVAL = 60 +SCAN_INTERVAL = timedelta(seconds=60) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_COMMAND): cv.string, diff --git a/homeassistant/components/sensor/eliqonline.py b/homeassistant/components/sensor/eliqonline.py index 7029be9fca2..4feb3c66694 100644 --- a/homeassistant/components/sensor/eliqonline.py +++ b/homeassistant/components/sensor/eliqonline.py @@ -4,6 +4,7 @@ Monitors home energy use for the ELIQ Online service. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.eliqonline/ """ +from datetime import timedelta import logging from urllib.error import URLError @@ -24,7 +25,7 @@ DEFAULT_NAME = 'ELIQ Online' ICON = 'mdi:speedometer' -SCAN_INTERVAL = 60 +SCAN_INTERVAL = timedelta(seconds=60) UNIT_OF_MEASUREMENT = 'W' diff --git a/homeassistant/components/switch/__init__.py b/homeassistant/components/switch/__init__.py index fe74711dff0..56ad5ea8966 100644 --- a/homeassistant/components/switch/__init__.py +++ b/homeassistant/components/switch/__init__.py @@ -22,7 +22,7 @@ from homeassistant.const import ( from homeassistant.components import group DOMAIN = 'switch' -SCAN_INTERVAL = 30 +SCAN_INTERVAL = timedelta(seconds=30) GROUP_NAME_ALL_SWITCHES = 'all switches' ENTITY_ID_ALL_SWITCHES = group.ENTITY_ID_FORMAT.format('all_switches') diff --git a/homeassistant/helpers/entity_component.py b/homeassistant/helpers/entity_component.py index 71ae352c39f..4b773d50bb9 100644 --- a/homeassistant/helpers/entity_component.py +++ b/homeassistant/helpers/entity_component.py @@ -18,7 +18,7 @@ from homeassistant.helpers.service import extract_entity_ids from homeassistant.util.async import ( run_callback_threadsafe, run_coroutine_threadsafe) -DEFAULT_SCAN_INTERVAL = 15 +DEFAULT_SCAN_INTERVAL = timedelta(seconds=15) class EntityComponent(object): @@ -326,8 +326,7 @@ class EntityPlatform(object): return self._async_unsub_polling = async_track_time_interval( - self.component.hass, self._update_entity_states, - timedelta(seconds=self.scan_interval) + self.component.hass, self._update_entity_states, self.scan_interval ) @asyncio.coroutine diff --git a/tests/helpers/test_entity_component.py b/tests/helpers/test_entity_component.py index 69c314a8208..59f75bdfb16 100644 --- a/tests/helpers/test_entity_component.py +++ b/tests/helpers/test_entity_component.py @@ -97,7 +97,8 @@ class TestHelpersEntityComponent(unittest.TestCase): def test_polling_only_updates_entities_it_should_poll(self): """Test the polling of only updated entities.""" - component = EntityComponent(_LOGGER, DOMAIN, self.hass, 20) + component = EntityComponent( + _LOGGER, DOMAIN, self.hass, timedelta(seconds=20)) no_poll_ent = EntityTest(should_poll=False) no_poll_ent.async_update = Mock() @@ -127,8 +128,7 @@ class TestHelpersEntityComponent(unittest.TestCase): ent2.update = lambda *_: component.add_entities([ent1]) fire_time_changed( - self.hass, dt_util.utcnow() + - timedelta(seconds=DEFAULT_SCAN_INTERVAL) + self.hass, dt_util.utcnow() + DEFAULT_SCAN_INTERVAL ) self.hass.block_till_done() @@ -332,7 +332,7 @@ class TestHelpersEntityComponent(unittest.TestCase): component.setup({ DOMAIN: { 'platform': 'platform', - 'scan_interval': 30, + 'scan_interval': timedelta(seconds=30), } }) @@ -348,7 +348,7 @@ class TestHelpersEntityComponent(unittest.TestCase): add_devices([EntityTest(should_poll=True)]) platform = MockPlatform(platform_setup) - platform.SCAN_INTERVAL = 30 + platform.SCAN_INTERVAL = timedelta(seconds=30) loader.set_component('test_domain.platform', platform) From 2b991e2f3221cf69aeef951c635f43c25a1fe859 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 6 Jan 2017 23:42:53 +0100 Subject: [PATCH 107/189] [new] component rest_command (#5055) * New component rest_command * add unittests * change handling like other command * change unittest * address @balloob comments --- homeassistant/components/rest_command.py | 115 ++++++++++++ tests/components/test_rest_command.py | 223 +++++++++++++++++++++++ 2 files changed, 338 insertions(+) create mode 100644 homeassistant/components/rest_command.py create mode 100644 tests/components/test_rest_command.py diff --git a/homeassistant/components/rest_command.py b/homeassistant/components/rest_command.py new file mode 100644 index 00000000000..dfcb5610073 --- /dev/null +++ b/homeassistant/components/rest_command.py @@ -0,0 +1,115 @@ +""" +Exposes regular rest commands as services. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/rest_command/ +""" +import asyncio +import logging + +import aiohttp +import async_timeout +import voluptuous as vol + +from homeassistant.const import ( + CONF_TIMEOUT, CONF_USERNAME, CONF_PASSWORD, CONF_URL, CONF_PAYLOAD, + CONF_METHOD) +from homeassistant.helpers.aiohttp_client import async_get_clientsession +import homeassistant.helpers.config_validation as cv + +DOMAIN = 'rest_command' + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_TIMEOUT = 10 +DEFAULT_METHOD = 'get' + +SUPPORT_REST_METHODS = [ + 'get', + 'post', + 'put', + 'delete', +] + +COMMAND_SCHEMA = vol.Schema({ + vol.Required(CONF_URL): cv.template, + vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): + vol.All(vol.Lower, vol.In(SUPPORT_REST_METHODS)), + vol.Inclusive(CONF_USERNAME, 'authentication'): cv.string, + vol.Inclusive(CONF_PASSWORD, 'authentication'): cv.string, + vol.Optional(CONF_PAYLOAD): cv.template, + vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): vol.Coerce(int), +}) + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + cv.slug: COMMAND_SCHEMA, + }), +}, extra=vol.ALLOW_EXTRA) + + +@asyncio.coroutine +def async_setup(hass, config): + """Setup the rest_command component.""" + websession = async_get_clientsession(hass) + + def async_register_rest_command(name, command_config): + """Create service for rest command.""" + timeout = command_config[CONF_TIMEOUT] + method = command_config[CONF_METHOD] + + template_url = command_config[CONF_URL] + template_url.hass = hass + + auth = None + if CONF_USERNAME in command_config: + username = command_config[CONF_USERNAME] + password = command_config.get(CONF_PASSWORD, '') + auth = aiohttp.BasicAuth(username, password=password) + + template_payload = None + if CONF_PAYLOAD in command_config: + template_payload = command_config[CONF_PAYLOAD] + template_payload.hass = hass + + @asyncio.coroutine + def async_service_handler(service): + """Execute a shell command service.""" + payload = None + if template_payload: + payload = bytes( + template_payload.async_render(variables=service.data), + 'utf-8') + + request = None + try: + with async_timeout.timeout(timeout, loop=hass.loop): + request = yield from getattr(websession, method)( + template_url.async_render(variables=service.data), + data=payload, + auth=auth + ) + + if request.status == 200: + _LOGGER.info("Success call %s.", request.url) + return + + _LOGGER.warning( + "Error %d on call %s.", request.status, request.url) + except asyncio.TimeoutError: + _LOGGER.warning("Timeout call %s.", request.url) + + except aiohttp.errors.ClientError: + _LOGGER.error("Client error %s.", request.url) + + finally: + if request is not None: + yield from request.release() + + # register services + hass.services.async_register(DOMAIN, name, async_service_handler) + + for command, command_config in config[DOMAIN].items(): + async_register_rest_command(command, command_config) + + return True diff --git a/tests/components/test_rest_command.py b/tests/components/test_rest_command.py new file mode 100644 index 00000000000..8fe9523801d --- /dev/null +++ b/tests/components/test_rest_command.py @@ -0,0 +1,223 @@ +"""The tests for the rest command platform.""" +import asyncio + +import aiohttp + +import homeassistant.components.rest_command as rc +from homeassistant.bootstrap import setup_component + +from tests.common import ( + get_test_home_assistant, assert_setup_component) + + +class TestRestCommandSetup(object): + """Test the rest command component.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + self.config = { + rc.DOMAIN: {'test_get': { + 'url': 'http://example.com/' + }} + } + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_component(self): + """Test setup component.""" + with assert_setup_component(1): + setup_component(self.hass, rc.DOMAIN, self.config) + + def test_setup_component_timeout(self): + """Test setup component timeout.""" + self.config[rc.DOMAIN]['test_get']['timeout'] = 10 + + with assert_setup_component(1): + setup_component(self.hass, rc.DOMAIN, self.config) + + def test_setup_component_test_service(self): + """Test setup component and check if service exits.""" + with assert_setup_component(1): + setup_component(self.hass, rc.DOMAIN, self.config) + + assert self.hass.services.has_service(rc.DOMAIN, 'test_get') + + +class TestRestCommandComponent(object): + """Test the rest command component.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.url = "https://example.com/" + self.config = { + rc.DOMAIN: { + 'get_test': { + 'url': self.url, + 'method': 'get', + }, + 'post_test': { + 'url': self.url, + 'method': 'post', + }, + 'put_test': { + 'url': self.url, + 'method': 'put', + }, + 'delete_test': { + 'url': self.url, + 'method': 'delete', + }, + } + } + + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_tests(self): + """Setup test config and test it.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + assert self.hass.services.has_service(rc.DOMAIN, 'get_test') + assert self.hass.services.has_service(rc.DOMAIN, 'post_test') + assert self.hass.services.has_service(rc.DOMAIN, 'put_test') + assert self.hass.services.has_service(rc.DOMAIN, 'delete_test') + + def test_rest_command_timeout(self, aioclient_mock): + """Call a rest command with timeout.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, exc=asyncio.TimeoutError()) + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_aiohttp_error(self, aioclient_mock): + """Call a rest command with aiohttp exception.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, exc=aiohttp.errors.ClientError()) + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_http_error(self, aioclient_mock): + """Call a rest command with status code 400.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, status=400) + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_auth(self, aioclient_mock): + """Call a rest command with auth credential.""" + data = { + 'username': 'test', + 'password': '123456', + } + self.config[rc.DOMAIN]['get_test'].update(data) + + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_form_data(self, aioclient_mock): + """Call a rest command with post form data.""" + data = { + 'payload': 'test' + } + self.config[rc.DOMAIN]['post_test'].update(data) + + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.post(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'post_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == b'test' + + def test_rest_command_get(self, aioclient_mock): + """Call a rest command with get.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.get(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'get_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_delete(self, aioclient_mock): + """Call a rest command with delete.""" + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.delete(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'delete_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_rest_command_post(self, aioclient_mock): + """Call a rest command with post.""" + data = { + 'payload': 'data', + } + self.config[rc.DOMAIN]['post_test'].update(data) + + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.post(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'post_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == b'data' + + def test_rest_command_put(self, aioclient_mock): + """Call a rest command with put.""" + data = { + 'payload': 'data', + } + self.config[rc.DOMAIN]['put_test'].update(data) + + with assert_setup_component(4): + setup_component(self.hass, rc.DOMAIN, self.config) + + aioclient_mock.put(self.url, content=b'success') + + self.hass.services.call(rc.DOMAIN, 'put_test', {}) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2] == b'data' From aa1e4c564cb8660bf6b7637bc25317ee58869214 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 7 Jan 2017 01:47:25 +0100 Subject: [PATCH 108/189] Fix tests closing properly (#5203) --- .../components/binary_sensor/test_sleepiq.py | 4 + .../components/device_tracker/test_asuswrt.py | 1 + .../device_tracker/test_automatic.py | 1 + tests/components/device_tracker/test_ddwrt.py | 1 + tests/components/device_tracker/test_mqtt.py | 1 + .../device_tracker/test_owntracks.py | 4 + .../components/device_tracker/test_tplink.py | 1 + tests/components/notify/test_apns.py | 141 +++++++++--------- tests/components/sensor/test_darksky.py | 4 + tests/components/sensor/test_sleepiq.py | 4 + tests/components/sensor/test_sonarr.py | 4 + tests/components/sensor/test_wunderground.py | 4 + tests/components/switch/test_command_line.py | 4 - tests/helpers/test_config_validation.py | 17 ++- 14 files changed, 108 insertions(+), 83 deletions(-) diff --git a/tests/components/binary_sensor/test_sleepiq.py b/tests/components/binary_sensor/test_sleepiq.py index 94a51832d56..fb86e2b3ee5 100644 --- a/tests/components/binary_sensor/test_sleepiq.py +++ b/tests/components/binary_sensor/test_sleepiq.py @@ -31,6 +31,10 @@ class TestSleepIQBinarySensorSetup(unittest.TestCase): 'password': self.password, } + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + @requests_mock.Mocker() def test_setup(self, mock): """Test for successfully setting up the SleepIQ platform.""" diff --git a/tests/components/device_tracker/test_asuswrt.py b/tests/components/device_tracker/test_asuswrt.py index ad42fd9d9a6..9dfa010edb3 100644 --- a/tests/components/device_tracker/test_asuswrt.py +++ b/tests/components/device_tracker/test_asuswrt.py @@ -47,6 +47,7 @@ class TestComponentsDeviceTrackerASUSWRT(unittest.TestCase): def teardown_method(self, _): """Stop everything that was started.""" + self.hass.stop() try: os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) except FileNotFoundError: diff --git a/tests/components/device_tracker/test_automatic.py b/tests/components/device_tracker/test_automatic.py index 2e476ac742d..8e7d37d8798 100644 --- a/tests/components/device_tracker/test_automatic.py +++ b/tests/components/device_tracker/test_automatic.py @@ -210,6 +210,7 @@ class TestAutomatic(unittest.TestCase): def tearDown(self): """Tear down test data.""" + self.hass.stop() @patch('requests.get', side_effect=mocked_requests) @patch('requests.post', side_effect=mocked_requests) diff --git a/tests/components/device_tracker/test_ddwrt.py b/tests/components/device_tracker/test_ddwrt.py index e86432e1659..f7a1c011d10 100644 --- a/tests/components/device_tracker/test_ddwrt.py +++ b/tests/components/device_tracker/test_ddwrt.py @@ -43,6 +43,7 @@ class TestDdwrt(unittest.TestCase): def teardown_method(self, _): """Stop everything that was started.""" + self.hass.stop() try: os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) except FileNotFoundError: diff --git a/tests/components/device_tracker/test_mqtt.py b/tests/components/device_tracker/test_mqtt.py index 7a34318bd79..6eb5ba2381c 100644 --- a/tests/components/device_tracker/test_mqtt.py +++ b/tests/components/device_tracker/test_mqtt.py @@ -24,6 +24,7 @@ class TestComponentsDeviceTrackerMQTT(unittest.TestCase): def tearDown(self): # pylint: disable=invalid-name """Stop everything that was started.""" + self.hass.stop() try: os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) except FileNotFoundError: diff --git a/tests/components/device_tracker/test_owntracks.py b/tests/components/device_tracker/test_owntracks.py index 85529c6ed96..183bbbd994f 100644 --- a/tests/components/device_tracker/test_owntracks.py +++ b/tests/components/device_tracker/test_owntracks.py @@ -691,6 +691,10 @@ class TestDeviceTrackerOwnTrackConfigs(BaseMQTT): self.hass = get_test_home_assistant() mock_mqtt_component(self.hass) + def teardown_method(self, method): + """Tear down resources.""" + self.hass.stop() + def mock_cipher(): # pylint: disable=no-method-argument """Return a dummy pickle-based cipher.""" def mock_decrypt(ciphertext, key): diff --git a/tests/components/device_tracker/test_tplink.py b/tests/components/device_tracker/test_tplink.py index 6c424033a8a..171548358db 100644 --- a/tests/components/device_tracker/test_tplink.py +++ b/tests/components/device_tracker/test_tplink.py @@ -21,6 +21,7 @@ class TestTplink4DeviceScanner(unittest.TestCase): def tearDown(self): # pylint: disable=invalid-name """Stop everything that was started.""" + self.hass.stop() try: os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) except FileNotFoundError: diff --git a/tests/components/notify/test_apns.py b/tests/components/notify/test_apns.py index 8be04de9b23..e0363f2d8b8 100644 --- a/tests/components/notify/test_apns.py +++ b/tests/components/notify/test_apns.py @@ -14,6 +14,14 @@ from apns2.errors import Unregistered class TestApns(unittest.TestCase): """Test the APNS component.""" + def setUp(self): # pylint: disable=invalid-name + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + def test_apns_setup_full(self): """Test setup with all data.""" config = { @@ -25,9 +33,8 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - self.assertTrue(notify.setup(hass, config)) + self.assertTrue(notify.setup(self.hass, config)) def test_apns_setup_missing_name(self): """Test setup with missing name.""" @@ -39,8 +46,7 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - self.assertFalse(notify.setup(hass, config)) + self.assertFalse(notify.setup(self.hass, config)) def test_apns_setup_missing_certificate(self): """Test setup with missing name.""" @@ -51,8 +57,7 @@ class TestApns(unittest.TestCase): 'name': 'test_app' } } - hass = get_test_home_assistant() - self.assertFalse(notify.setup(hass, config)) + self.assertFalse(notify.setup(self.hass, config)) def test_apns_setup_missing_topic(self): """Test setup with missing topic.""" @@ -63,8 +68,7 @@ class TestApns(unittest.TestCase): 'name': 'test_app' } } - hass = get_test_home_assistant() - self.assertFalse(notify.setup(hass, config)) + self.assertFalse(notify.setup(self.hass, config)) def test_register_new_device(self): """Test registering a new device with a name.""" @@ -76,18 +80,17 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('5678: {name: test device 2}\n') - notify.setup(hass, config) - self.assertTrue(hass.services.call('apns', - 'test_app', - {'push_id': '1234', - 'name': 'test device'}, - blocking=True)) + notify.setup(self.hass, config) + self.assertTrue(self.hass.services.call('apns', + 'test_app', + {'push_id': '1234', + 'name': 'test device'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} @@ -112,16 +115,15 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('5678: {name: test device 2}\n') - notify.setup(hass, config) - self.assertTrue(hass.services.call('apns', 'test_app', - {'push_id': '1234'}, - blocking=True)) + notify.setup(self.hass, config) + self.assertTrue(self.hass.services.call('apns', 'test_app', + {'push_id': '1234'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} @@ -143,19 +145,18 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') out.write('5678: {name: test device 2}\n') - notify.setup(hass, config) - self.assertTrue(hass.services.call('apns', - 'test_app', - {'push_id': '1234', - 'name': 'updated device 1'}, - blocking=True)) + notify.setup(self.hass, config) + self.assertTrue(self.hass.services.call('apns', + 'test_app', + {'push_id': '1234', + 'name': 'updated device 1'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} @@ -180,21 +181,20 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, ' 'tracking_device_id: tracking123}\n') out.write('5678: {name: test device 2, ' 'tracking_device_id: tracking456}\n') - notify.setup(hass, config) - self.assertTrue(hass.services.call('apns', - 'test_app', - {'push_id': '1234', - 'name': 'updated device 1'}, - blocking=True)) + notify.setup(self.hass, config) + self.assertTrue(self.hass.services.call('apns', + 'test_app', + {'push_id': '1234', + 'name': 'updated device 1'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} @@ -224,23 +224,22 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') - notify.setup(hass, config) + notify.setup(self.hass, config) - self.assertTrue(hass.services.call('notify', 'test_app', - {'message': 'Hello', - 'data': { - 'badge': 1, - 'sound': 'test.mp3', - 'category': 'testing' - } - }, - blocking=True)) + self.assertTrue(self.hass.services.call('notify', 'test_app', + {'message': 'Hello', + 'data': { + 'badge': 1, + 'sound': 'test.mp3', + 'category': 'testing' + } + }, + blocking=True)) self.assertTrue(send.called) self.assertEqual(1, len(send.mock_calls)) @@ -266,23 +265,22 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, disabled: True}\n') - notify.setup(hass, config) + notify.setup(self.hass, config) - self.assertTrue(hass.services.call('notify', 'test_app', - {'message': 'Hello', - 'data': { - 'badge': 1, - 'sound': 'test.mp3', - 'category': 'testing' - } - }, - blocking=True)) + self.assertTrue(self.hass.services.call('notify', 'test_app', + {'message': 'Hello', + 'data': { + 'badge': 1, + 'sound': 'test.mp3', + 'category': 'testing' + } + }, + blocking=True)) self.assertFalse(send.called) @@ -291,9 +289,7 @@ class TestApns(unittest.TestCase): """Test updating an existing device.""" send = mock_client.return_value.send_notification - hass = get_test_home_assistant() - - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, ' 'tracking_device_id: tracking123}\n') @@ -301,7 +297,7 @@ class TestApns(unittest.TestCase): 'tracking_device_id: tracking456}\n') notify_service = ApnsNotificationService( - hass, + self.hass, 'test_app', 'testapp.appname', False, @@ -313,7 +309,7 @@ class TestApns(unittest.TestCase): State('device_tracker.tracking456', None), State('device_tracker.tracking456', 'home')) - hass.block_till_done() + self.hass.block_till_done() notify_service.send_message(message='Hello', target='home') @@ -340,17 +336,16 @@ class TestApns(unittest.TestCase): 'cert_file': 'test_app.pem' } } - hass = get_test_home_assistant() - devices_path = hass.config.path('test_app_apns.yaml') + devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') - notify.setup(hass, config) + notify.setup(self.hass, config) - self.assertTrue(hass.services.call('notify', 'test_app', - {'message': 'Hello'}, - blocking=True)) + self.assertTrue(self.hass.services.call('notify', 'test_app', + {'message': 'Hello'}, + blocking=True)) devices = {str(key): value for (key, value) in load_yaml_config_file(devices_path).items()} diff --git a/tests/components/sensor/test_darksky.py b/tests/components/sensor/test_darksky.py index 976a9278452..e3c83bad2a6 100644 --- a/tests/components/sensor/test_darksky.py +++ b/tests/components/sensor/test_darksky.py @@ -41,6 +41,10 @@ class TestDarkSkySetup(unittest.TestCase): self.hass.config.longitude = self.lon self.entities = [] + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + def test_setup_with_config(self): """Test the platform setup with configuration.""" self.assertTrue( diff --git a/tests/components/sensor/test_sleepiq.py b/tests/components/sensor/test_sleepiq.py index b0c937c4025..765acb56ec9 100644 --- a/tests/components/sensor/test_sleepiq.py +++ b/tests/components/sensor/test_sleepiq.py @@ -30,6 +30,10 @@ class TestSleepIQSensorSetup(unittest.TestCase): 'password': self.password, } + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + @requests_mock.Mocker() def test_setup(self, mock): """Test for successfully setting up the SleepIQ platform.""" diff --git a/tests/components/sensor/test_sonarr.py b/tests/components/sensor/test_sonarr.py index 24a733e6565..dbf918812cc 100644 --- a/tests/components/sensor/test_sonarr.py +++ b/tests/components/sensor/test_sonarr.py @@ -572,6 +572,10 @@ class TestSonarrSetup(unittest.TestCase): self.hass = get_test_home_assistant() self.hass.config.time_zone = 'America/Los_Angeles' + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_diskspace_no_paths(self, req_mock): """Test getting all disk space.""" diff --git a/tests/components/sensor/test_wunderground.py b/tests/components/sensor/test_wunderground.py index 7c92ac20424..286f9d959e2 100644 --- a/tests/components/sensor/test_wunderground.py +++ b/tests/components/sensor/test_wunderground.py @@ -129,6 +129,10 @@ class TestWundergroundSetup(unittest.TestCase): self.hass.config.latitude = self.lat self.hass.config.longitude = self.lon + def tearDown(self): # pylint: disable=invalid-name + """Stop everything that was started.""" + self.hass.stop() + @unittest.mock.patch('requests.get', side_effect=mocked_requests_get) def test_setup(self, req_mock): """Test that the component is loaded if passed in PWS Id.""" diff --git a/tests/components/switch/test_command_line.py b/tests/components/switch/test_command_line.py index de122df0479..008727df7f8 100644 --- a/tests/components/switch/test_command_line.py +++ b/tests/components/switch/test_command_line.py @@ -161,8 +161,6 @@ class TestCommandSwitch(unittest.TestCase): def test_assumed_state_should_be_true_if_command_state_is_false(self): """Test with state value.""" - self.hass = get_test_home_assistant() - # args: hass, device_name, friendly_name, command_on, command_off, # command_state, value_template init_args = [ @@ -186,8 +184,6 @@ class TestCommandSwitch(unittest.TestCase): def test_entity_id_set_correctly(self): """Test that entity_id is set correctly from object_id.""" - self.hass = get_test_home_assistant() - init_args = [ self.hass, "test_device_name", diff --git a/tests/helpers/test_config_validation.py b/tests/helpers/test_config_validation.py index 9d8f60279e9..252f7f60c95 100644 --- a/tests/helpers/test_config_validation.py +++ b/tests/helpers/test_config_validation.py @@ -191,15 +191,20 @@ def test_event_schema(): def test_platform_validator(): """Test platform validation.""" - # Prepares loading - get_test_home_assistant() + hass = None - schema = vol.Schema(cv.platform_validator('light')) + try: + hass = get_test_home_assistant() - with pytest.raises(vol.MultipleInvalid): - schema('platform_that_does_not_exist') + schema = vol.Schema(cv.platform_validator('light')) - schema('hue') + with pytest.raises(vol.MultipleInvalid): + schema('platform_that_does_not_exist') + + schema('hue') + finally: + if hass is not None: + hass.stop() def test_icon(): From 81922b88a23987e31b599c659a7e79fa3f2fe4df Mon Sep 17 00:00:00 2001 From: Lewis Juggins Date: Sat, 7 Jan 2017 10:24:25 +0000 Subject: [PATCH 109/189] [calendar] Fix scan interval (#5205) --- homeassistant/components/calendar/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/calendar/__init__.py b/homeassistant/components/calendar/__init__.py index 503b97a2b13..63083f46bba 100644 --- a/homeassistant/components/calendar/__init__.py +++ b/homeassistant/components/calendar/__init__.py @@ -6,6 +6,8 @@ https://home-assistant.io/components/calendar/ """ import logging +from datetime import timedelta + import re from homeassistant.components.google import (CONF_OFFSET, @@ -20,6 +22,7 @@ from homeassistant.util import dt _LOGGER = logging.getLogger(__name__) +SCAN_INTERVAL = timedelta(seconds=60) DOMAIN = 'calendar' ENTITY_ID_FORMAT = DOMAIN + '.{}' @@ -27,7 +30,7 @@ ENTITY_ID_FORMAT = DOMAIN + '.{}' def setup(hass, config): """Track states and offer events for calendars.""" component = EntityComponent( - logging.getLogger(__name__), DOMAIN, hass, 60, DOMAIN) + logging.getLogger(__name__), DOMAIN, hass, SCAN_INTERVAL, DOMAIN) component.setup(config) From ca4a857532bce95e04956c859c6f15d642a09b69 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 7 Jan 2017 21:11:19 +0100 Subject: [PATCH 110/189] Improve aiohttp default clientsession close with connector (#5208) --- homeassistant/helpers/aiohttp_client.py | 5 ++++- tests/components/media_player/test_demo.py | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index b44b6aebefe..32e0861ff53 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -34,7 +34,6 @@ def async_get_clientsession(hass, verify_ssl=True): connector=connector, headers={USER_AGENT: SERVER_SOFTWARE} ) - _async_register_clientsession_shutdown(hass, clientsession) hass.data[key] = clientsession return hass.data[key] @@ -111,8 +110,12 @@ def async_cleanup_websession(hass): This method is a coroutine. """ tasks = [] + if DATA_CLIENTSESSION in hass.data: + hass.data[DATA_CLIENTSESSION].detach() if DATA_CONNECTOR in hass.data: tasks.append(hass.data[DATA_CONNECTOR].close()) + if DATA_CLIENTSESSION_NOTVERIFY in hass.data: + hass.data[DATA_CLIENTSESSION_NOTVERIFY].detach() if DATA_CONNECTOR_NOTVERIFY in hass.data: tasks.append(hass.data[DATA_CONNECTOR_NOTVERIFY].close()) diff --git a/tests/components/media_player/test_demo.py b/tests/components/media_player/test_demo.py index a9c75e90d37..d6079ee0351 100644 --- a/tests/components/media_player/test_demo.py +++ b/tests/components/media_player/test_demo.py @@ -284,8 +284,7 @@ class TestMediaPlayerWeb(unittest.TestCase): def get(self, url): return MockResponse() - @asyncio.coroutine - def close(self): + def detach(self): pass self.hass.data[DATA_CLIENTSESSION] = MockWebsession() From 41ef6228be15cdd2639673c7c6573d866a0c6c48 Mon Sep 17 00:00:00 2001 From: Lewis Juggins Date: Sat, 7 Jan 2017 21:09:07 +0000 Subject: [PATCH 111/189] [device_tracker] Use home zone GPS coordinates for router based devices. (#4852) --- .../components/device_tracker/__init__.py | 52 +++++++++++---- tests/components/device_tracker/test_init.py | 64 +++++++++++++++++++ 2 files changed, 105 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 9b5556d7ace..f08a9badb6f 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -70,6 +70,10 @@ ATTR_LOCATION_NAME = 'location_name' ATTR_GPS = 'gps' ATTR_BATTERY = 'battery' ATTR_ATTRIBUTES = 'attributes' +ATTR_SOURCE_TYPE = 'source_type' + +SOURCE_TYPE_GPS = 'gps' +SOURCE_TYPE_ROUTER = 'router' PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ vol.Optional(CONF_SCAN_INTERVAL): cv.time_period, @@ -234,17 +238,19 @@ class DeviceTracker(object): def see(self, mac: str=None, dev_id: str=None, host_name: str=None, location_name: str=None, gps: GPSType=None, gps_accuracy=None, - battery: str=None, attributes: dict=None): + battery: str=None, attributes: dict=None, + source_type: str=SOURCE_TYPE_GPS): """Notify the device tracker that you see a device.""" self.hass.add_job( self.async_see(mac, dev_id, host_name, location_name, gps, - gps_accuracy, battery, attributes) + gps_accuracy, battery, attributes, source_type) ) @asyncio.coroutine def async_see(self, mac: str=None, dev_id: str=None, host_name: str=None, location_name: str=None, gps: GPSType=None, - gps_accuracy=None, battery: str=None, attributes: dict=None): + gps_accuracy=None, battery: str=None, attributes: dict=None, + source_type: str=SOURCE_TYPE_GPS): """Notify the device tracker that you see a device. This method is a coroutine. @@ -262,7 +268,8 @@ class DeviceTracker(object): if device: yield from device.async_seen(host_name, location_name, gps, - gps_accuracy, battery, attributes) + gps_accuracy, battery, attributes, + source_type) if device.track: yield from device.async_update_ha_state() return @@ -277,7 +284,8 @@ class DeviceTracker(object): self.mac_to_dev[mac] = device yield from device.async_seen(host_name, location_name, gps, - gps_accuracy, battery, attributes) + gps_accuracy, battery, attributes, + source_type) if device.track: yield from device.async_update_ha_state() @@ -381,6 +389,9 @@ class Device(Entity): self.away_hide = hide_if_away self.vendor = vendor + + self.source_type = None + self._attributes = {} @property @@ -401,7 +412,9 @@ class Device(Entity): @property def state_attributes(self): """Return the device state attributes.""" - attr = {} + attr = { + ATTR_SOURCE_TYPE: self.source_type + } if self.gps: attr[ATTR_LATITUDE] = self.gps[0] @@ -426,12 +439,13 @@ class Device(Entity): @asyncio.coroutine def async_seen(self, host_name: str=None, location_name: str=None, gps: GPSType=None, gps_accuracy=0, battery: str=None, - attributes: dict=None): + attributes: dict=None, source_type: str=SOURCE_TYPE_GPS): """Mark the device as seen.""" + self.source_type = source_type self.last_seen = dt_util.utcnow() self.host_name = host_name self.location_name = location_name - self.gps_accuracy = gps_accuracy or 0 + if battery: self.battery = battery if attributes: @@ -442,7 +456,10 @@ class Device(Entity): if gps is not None: try: self.gps = float(gps[0]), float(gps[1]) + self.gps_accuracy = gps_accuracy or 0 except (ValueError, TypeError, IndexError): + self.gps = None + self.gps_accuracy = 0 _LOGGER.warning('Could not parse gps value for %s: %s', self.dev_id, gps) @@ -467,7 +484,7 @@ class Device(Entity): return elif self.location_name: self._state = self.location_name - elif self.gps is not None: + elif self.gps is not None and self.source_type == SOURCE_TYPE_GPS: zone_state = zone.async_active_zone( self.hass, self.gps[0], self.gps[1], self.gps_accuracy) if zone_state is None: @@ -476,9 +493,9 @@ class Device(Entity): self._state = STATE_HOME else: self._state = zone_state.name - elif self.stale(): self._state = STATE_NOT_HOME + self.gps = None self.last_update_home = False else: self._state = STATE_HOME @@ -637,7 +654,20 @@ def async_setup_scanner_platform(hass: HomeAssistantType, config: ConfigType, else: host_name = yield from scanner.async_get_device_name(mac) seen.add(mac) - hass.async_add_job(async_see_device(mac=mac, host_name=host_name)) + + kwargs = { + 'mac': mac, + 'host_name': host_name, + 'source_type': SOURCE_TYPE_ROUTER + } + + zone_home = hass.states.get(zone.ENTITY_ID_HOME) + if zone_home: + kwargs['gps'] = [zone_home.attributes[ATTR_LATITUDE], + zone_home.attributes[ATTR_LONGITUDE]] + kwargs['gps_accuracy'] = 0 + + hass.async_add_job(async_see_device(**kwargs)) async_track_time_interval(hass, async_device_tracker_scan, interval) hass.async_add_job(async_device_tracker_scan, None) diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index ffcb1e8acd6..c083557294b 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -8,6 +8,7 @@ from unittest.mock import call, patch from datetime import datetime, timedelta import os +from homeassistant.components import zone from homeassistant.core import callback from homeassistant.bootstrap import setup_component from homeassistant.loader import get_component @@ -541,8 +542,71 @@ class TestComponentsDeviceTracker(unittest.TestCase): self.assertEqual(attrs['longitude'], 0.8) self.assertEqual(attrs['test'], 'test') self.assertEqual(attrs['gps_accuracy'], 1) + self.assertEqual(attrs['source_type'], 'gps') self.assertEqual(attrs['number'], 1) + def test_see_passive_zone_state(self): + """Test that the device tracker sets gps for passive trackers.""" + register_time = datetime(2015, 9, 15, 23, tzinfo=dt_util.UTC) + scan_time = datetime(2015, 9, 15, 23, 1, tzinfo=dt_util.UTC) + + with assert_setup_component(1, zone.DOMAIN): + zone_info = { + 'name': 'Home', + 'latitude': 1, + 'longitude': 2, + 'radius': 250, + 'passive': False + } + + setup_component(self.hass, zone.DOMAIN, { + 'zone': zone_info + }) + + scanner = get_component('device_tracker.test').SCANNER + scanner.reset() + scanner.come_home('dev1') + + with patch('homeassistant.components.device_tracker.dt_util.utcnow', + return_value=register_time): + with assert_setup_component(1, device_tracker.DOMAIN): + assert setup_component(self.hass, device_tracker.DOMAIN, { + device_tracker.DOMAIN: { + CONF_PLATFORM: 'test', + device_tracker.CONF_CONSIDER_HOME: 59, + }}) + + state = self.hass.states.get('device_tracker.dev1') + attrs = state.attributes + self.assertEqual(STATE_HOME, state.state) + self.assertEqual(state.object_id, 'dev1') + self.assertEqual(state.name, 'dev1') + self.assertEqual(attrs.get('friendly_name'), 'dev1') + self.assertEqual(attrs.get('latitude'), 1) + self.assertEqual(attrs.get('longitude'), 2) + self.assertEqual(attrs.get('gps_accuracy'), 0) + self.assertEqual(attrs.get('source_type'), + device_tracker.SOURCE_TYPE_ROUTER) + + scanner.leave_home('dev1') + + with patch('homeassistant.components.device_tracker.dt_util.utcnow', + return_value=scan_time): + fire_time_changed(self.hass, scan_time) + self.hass.block_till_done() + + state = self.hass.states.get('device_tracker.dev1') + attrs = state.attributes + self.assertEqual(STATE_NOT_HOME, state.state) + self.assertEqual(state.object_id, 'dev1') + self.assertEqual(state.name, 'dev1') + self.assertEqual(attrs.get('friendly_name'), 'dev1') + self.assertEqual(attrs.get('latitude'), None) + self.assertEqual(attrs.get('longitude'), None) + self.assertEqual(attrs.get('gps_accuracy'), None) + self.assertEqual(attrs.get('source_type'), + device_tracker.SOURCE_TYPE_ROUTER) + @patch('homeassistant.components.device_tracker._LOGGER.warning') def test_see_failures(self, mock_warning): """Test that the device tracker see failures.""" From a65388e778b4110d9d54f418caf9b6580840c85e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 8 Jan 2017 14:06:15 +0100 Subject: [PATCH 112/189] Bugfix segfault with new helper track_time_interval (#5222) * Bugfix sigfault with new helper track_time_interval * Add none init also to sunrise/sunset for consistance --- homeassistant/helpers/event.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homeassistant/helpers/event.py b/homeassistant/helpers/event.py index 29d3d131f5c..802a1dc1a7d 100644 --- a/homeassistant/helpers/event.py +++ b/homeassistant/helpers/event.py @@ -135,6 +135,8 @@ track_point_in_utc_time = threaded_listener_factory( def async_track_time_interval(hass, action, interval): """Add a listener that fires repetitively at every timedelta interval.""" + remove = None + def next_interval(): """Return the next interval.""" return dt_util.utcnow() + interval @@ -164,6 +166,7 @@ def async_track_sunrise(hass, action, offset=None): """Add a listener that will fire a specified offset from sunrise daily.""" from homeassistant.components import sun offset = offset or timedelta() + remove = None def next_rise(): """Return the next sunrise.""" @@ -199,6 +202,7 @@ def async_track_sunset(hass, action, offset=None): """Add a listener that will fire a specified offset from sunset daily.""" from homeassistant.components import sun offset = offset or timedelta() + remove = None def next_set(): """Return next sunrise.""" From 469aad5fc8eb8efcb310205843b31f271787fd10 Mon Sep 17 00:00:00 2001 From: Jan Losinski Date: Sun, 8 Jan 2017 14:23:01 +0100 Subject: [PATCH 113/189] Add teardown method to pilight tests (#5195) * Add teardown method to pilight tests This is necessary to stop the HomeAssistant instance that was started in the setUp method. Without this there happen random test failures. This is necessary to stabilize the tests for PR #5045. Signed-off-by: Jan Losinski * Update test_pilight.py --- tests/components/test_pilight.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/components/test_pilight.py b/tests/components/test_pilight.py index 0fe68b4fbe5..036beb0c139 100644 --- a/tests/components/test_pilight.py +++ b/tests/components/test_pilight.py @@ -69,6 +69,12 @@ class TestPilight(unittest.TestCase): def setUp(self): # pylint: disable=invalid-name """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() + self.skip_teardown_stop = False + + def tearDown(self): + """Stop everything that was started.""" + if not self.skip_teardown_stop: + self.hass.stop() @patch('homeassistant.components.pilight._LOGGER.error') def test_connection_failed_error(self, mock_error): @@ -208,6 +214,7 @@ class TestPilight(unittest.TestCase): 'PilightDaemonSim start' in str(error_log_call)) # Test stop + self.skip_teardown_stop = True self.hass.stop() error_log_call = mock_pilight_error.call_args_list[-1] self.assertTrue( @@ -344,6 +351,10 @@ class TestPilightCallrateThrottler(unittest.TestCase): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() + def tearDown(self): + """Stop everything that was started.""" + self.hass.stop() + def test_call_rate_delay_throttle_disabled(self): """Test that the limiter is a noop if no delay set.""" runs = [] From fd50201407f32f185bde846966ce9918c7310a17 Mon Sep 17 00:00:00 2001 From: dasos Date: Sun, 8 Jan 2017 13:32:15 +0000 Subject: [PATCH 114/189] Squeezebox JSON-RPC (#5084) * Refactor of Squeezebox connection code * Refactor of Squeezebox connection code * Typos * Make Python 3.4 friendly * Addressing comments * Improving docstring * Using discovered port * Style better * Accept new disco object * Revert "Accept new disco object" * Make it obvious that port isn't discovered yet * Flake8. ;) --- .../components/media_player/squeezebox.py | 270 ++++++++---------- 1 file changed, 120 insertions(+), 150 deletions(-) diff --git a/homeassistant/components/media_player/squeezebox.py b/homeassistant/components/media_player/squeezebox.py index c51834057d2..08d498053ce 100644 --- a/homeassistant/components/media_player/squeezebox.py +++ b/homeassistant/components/media_player/squeezebox.py @@ -5,8 +5,11 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/media_player.squeezebox/ """ import logging -import telnetlib +import asyncio import urllib.parse +import json +import aiohttp +import async_timeout import voluptuous as vol @@ -19,10 +22,12 @@ from homeassistant.const import ( CONF_HOST, CONF_PASSWORD, CONF_USERNAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN, CONF_PORT) import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.aiohttp_client import async_get_clientsession _LOGGER = logging.getLogger(__name__) -DEFAULT_PORT = 9090 +DEFAULT_PORT = 9000 +TIMEOUT = 10 KNOWN_DEVICES = [] @@ -38,7 +43,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def setup_platform(hass, config, add_devices, discovery_info=None): +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Setup the squeezebox platform.""" import socket @@ -47,11 +53,15 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if discovery_info is not None: host = discovery_info[0] - port = DEFAULT_PORT + port = None # Port is not collected in netdisco 0.8.1 else: host = config.get(CONF_HOST) port = config.get(CONF_PORT) + # In case the port is not discovered + if port is None: + port = DEFAULT_PORT + # Get IP of host, to prevent duplication of same host (different DNS names) try: ipaddr = socket.gethostbyname(host) @@ -68,13 +78,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): return False KNOWN_DEVICES.append(key) - _LOGGER.debug("Creating LMS object for %s", key) - lms = LogitechMediaServer(host, port, username, password) - - if not lms.init_success: + _LOGGER.debug("Creating LMS object for %s", ipaddr) + lms = LogitechMediaServer(hass, host, port, username, password) + if lms is False: return False - add_devices(lms.create_players()) + players = yield from lms.create_players() + yield from async_add_devices(players) return True @@ -82,107 +92,86 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class LogitechMediaServer(object): """Representation of a Logitech media server.""" - def __init__(self, host, port, username, password): + def __init__(self, hass, host, port, username, password): """Initialize the Logitech device.""" + self.hass = hass self.host = host self.port = port self._username = username self._password = password - self.http_port = self._get_http_port() - self.init_success = True if self.http_port else False - - def _get_http_port(self): - """Get http port from media server, it is used to get cover art.""" - http_port = self.query('pref', 'httpport', '?') - if not http_port: - _LOGGER.error("Failed to connect to server %s:%s", - self.host, self.port) - return http_port + @asyncio.coroutine def create_players(self): - """Create a list of SqueezeBoxDevices connected to the LMS.""" - players = [] - count = self.query('player', 'count', '?') - for index in range(0, int(count)): - player_id = self.query('player', 'id', str(index), '?') - player = SqueezeBoxDevice(self, player_id) - players.append(player) - return players + """Create a list of devices connected to LMS.""" + result = [] + data = yield from self.async_query('players', 'status') - def query(self, *parameters): - """Send request and await response from server.""" - response = self.get(' '.join(parameters)) - response = response.split(' ')[-1].strip() - response = urllib.parse.unquote(response) + for players in data['players_loop']: + player = SqueezeBoxDevice( + self, players['playerid'], players['name']) + yield from player.async_update() + result.append(player) + return result - return response + @asyncio.coroutine + def async_query(self, *command, player=""): + """Abstract out the JSON-RPC connection.""" + response = None + auth = None if self._username is None else aiohttp.BasicAuth( + self._username, self._password) + url = "http://{}:{}/jsonrpc.js".format( + self.host, self.port) + data = json.dumps({ + "id": "1", + "method": "slim.request", + "params": [player, command] + }) - def get_player_status(self, player): - """Get the status of a player.""" - # (title) : Song title - # Requested Information - # a (artist): Artist name 'artist' - # d (duration): Song duration in seconds 'duration' - # K (artwork_url): URL to remote artwork - # l (album): Album, including the server's "(N of M)" - tags = 'adKl' - new_status = {} - response = self.get('{player} status - 1 tags:{tags}\n' - .format(player=player, tags=tags)) + _LOGGER.debug("URL: %s Data: %s", url, data) - if not response: - return {} - - response = response.split(' ') - - for item in response: - parts = urllib.parse.unquote(item).partition(':') - new_status[parts[0]] = parts[2] - return new_status - - def get(self, command): - """Abstract out the telnet connection.""" try: - telnet = telnetlib.Telnet(self.host, self.port) + websession = async_get_clientsession(self.hass) + with async_timeout.timeout(TIMEOUT, loop=self.hass.loop): + response = yield from websession.post( + url, + data=data, + auth=auth) - if self._username and self._password: - _LOGGER.debug("Logging in") + if response.status == 200: + data = yield from response.json() + else: + _LOGGER.error( + "Query failed, response code: %s Full message: %s", + response.status, response) + return False - telnet.write('login {username} {password}\n'.format( - username=self._username, - password=self._password).encode('UTF-8')) - telnet.read_until(b'\n', timeout=3) + except (asyncio.TimeoutError, + aiohttp.errors.ClientError, + aiohttp.errors.ClientDisconnectedError) as error: + _LOGGER.error("Failed communicating with LMS: %s", type(error)) + return False + finally: + if response is not None: + yield from response.release() - _LOGGER.debug("About to send message: %s", command) - message = '{}\n'.format(command) - telnet.write(message.encode('UTF-8')) - - response = telnet.read_until(b'\n', timeout=3)\ - .decode('UTF-8')\ - - telnet.write(b'exit\n') - _LOGGER.debug("Response: %s", response) - - return response - - except (OSError, EOFError) as error: - _LOGGER.error("Could not communicate with %s:%d: %s", - self.host, - self.port, - error) - return None + try: + return data['result'] + except AttributeError: + _LOGGER.error("Received invalid response: %s", data) + return False class SqueezeBoxDevice(MediaPlayerDevice): """Representation of a SqueezeBox device.""" - def __init__(self, lms, player_id): + def __init__(self, lms, player_id, name): """Initialize the SqueezeBox device.""" super(SqueezeBoxDevice, self).__init__() self._lms = lms self._id = player_id - self._name = self._lms.query(self._id, 'name', '?') - self._status = self._lms.get_player_status(self._id) + self._status = {} + self._name = name + _LOGGER.debug("Creating SqueezeBox object: %s, %s", name, player_id) @property def name(self): @@ -203,9 +192,31 @@ class SqueezeBoxDevice(MediaPlayerDevice): return STATE_IDLE return STATE_UNKNOWN - def update(self): - """Retrieve latest state.""" - self._status = self._lms.get_player_status(self._id) + def async_query(self, *parameters): + """Send a command to the LMS. + + This method must be run in the event loop and returns a coroutine. + """ + return self._lms.async_query( + *parameters, player=self._id) + + def query(self, *parameters): + """Queue up a command to send the LMS.""" + self.hass.loop.create_task(self.async_query(*parameters)) + + @asyncio.coroutine + def async_update(self): + """Retrieve the current state of the player.""" + tags = 'adKl' + response = yield from self.async_query( + "status", "-", "1", "tags:{tags}" + .format(tags=tags)) + + try: + self._status = response.copy() + self._status.update(response["remoteMeta"]) + except KeyError: + pass @property def volume_level(self): @@ -217,7 +228,7 @@ class SqueezeBoxDevice(MediaPlayerDevice): def is_volume_muted(self): """Return true if volume is muted.""" if 'mixer volume' in self._status: - return self._status['mixer volume'].startswith('-') + return str(self._status['mixer volume']).startswith('-') @property def media_content_id(self): @@ -254,15 +265,14 @@ class SqueezeBoxDevice(MediaPlayerDevice): username=self._lms._username, password=self._lms._password, server=self._lms.host, - port=self._lms.http_port) + port=self._lms.port) else: base_url = 'http://{server}:{port}/'.format( server=self._lms.host, - port=self._lms.http_port) + port=self._lms.port) url = urllib.parse.urljoin(base_url, media_url) - _LOGGER.debug("Media image url: %s", url) return url @property @@ -284,7 +294,7 @@ class SqueezeBoxDevice(MediaPlayerDevice): def media_album_name(self): """Album of current playing media.""" if 'album' in self._status: - return self._status['album'].rstrip() + return self._status['album'] @property def supported_media_commands(self): @@ -293,64 +303,64 @@ class SqueezeBoxDevice(MediaPlayerDevice): def turn_off(self): """Turn off media player.""" - self._lms.query(self._id, 'power', '0') + self.query('power', '0') self.update_ha_state() def volume_up(self): """Volume up media player.""" - self._lms.query(self._id, 'mixer', 'volume', '+5') + self.query('mixer', 'volume', '+5') self.update_ha_state() def volume_down(self): """Volume down media player.""" - self._lms.query(self._id, 'mixer', 'volume', '-5') + self.query('mixer', 'volume', '-5') self.update_ha_state() def set_volume_level(self, volume): """Set volume level, range 0..1.""" volume_percent = str(int(volume*100)) - self._lms.query(self._id, 'mixer', 'volume', volume_percent) + self.query('mixer', 'volume', volume_percent) self.update_ha_state() def mute_volume(self, mute): """Mute (true) or unmute (false) media player.""" mute_numeric = '1' if mute else '0' - self._lms.query(self._id, 'mixer', 'muting', mute_numeric) + self.query('mixer', 'muting', mute_numeric) self.update_ha_state() def media_play_pause(self): """Send pause command to media player.""" - self._lms.query(self._id, 'pause') + self.query('pause') self.update_ha_state() def media_play(self): """Send play command to media player.""" - self._lms.query(self._id, 'play') + self.query('play') self.update_ha_state() def media_pause(self): """Send pause command to media player.""" - self._lms.query(self._id, 'pause', '1') + self.query('pause', '1') self.update_ha_state() def media_next_track(self): """Send next track command.""" - self._lms.query(self._id, 'playlist', 'index', '+1') + self.query('playlist', 'index', '+1') self.update_ha_state() def media_previous_track(self): """Send next track command.""" - self._lms.query(self._id, 'playlist', 'index', '-1') + self.query('playlist', 'index', '-1') self.update_ha_state() def media_seek(self, position): """Send seek command.""" - self._lms.query(self._id, 'time', position) + self.query('time', position) self.update_ha_state() def turn_on(self): """Turn the media player on.""" - self._lms.query(self._id, 'power', '1') + self.query('power', '1') self.update_ha_state() def play_media(self, media_type, media_id, **kwargs): @@ -365,51 +375,11 @@ class SqueezeBoxDevice(MediaPlayerDevice): self._play_uri(media_id) def _play_uri(self, media_id): - """ - Replace the current play list with the uri. - - Telnet Command Structure: - playlist play <fadeInSecs> - - The "playlist play" command puts the specified song URL, - playlist or directory contents into the current playlist - and plays starting at the first item. Any songs previously - in the playlist are discarded. An optional title value may be - passed to set a title. This can be useful for remote URLs. - The "fadeInSecs" parameter may be passed to specify fade-in period. - - Examples: - Request: "04:20:00:12:23:45 playlist play - /music/abba/01_Voulez_Vous.mp3<LF>" - Response: "04:20:00:12:23:45 playlist play - /music/abba/01_Voulez_Vous.mp3<LF>" - - """ - self._lms.query(self._id, 'playlist', 'play', media_id) + """Replace the current play list with the uri.""" + self.query('playlist', 'play', media_id) self.update_ha_state() def _add_uri_to_playlist(self, media_id): - """ - Add a items to the existing playlist. - - Telnet Command Structure: - <playerid> playlist add <item> - - The "playlist add" command adds the specified song URL, playlist or - directory contents to the end of the current playlist. Songs - currently playing or already on the playlist are not affected. - - Examples: - Request: "04:20:00:12:23:45 playlist add - /music/abba/01_Voulez_Vous.mp3<LF>" - Response: "04:20:00:12:23:45 playlist add - /music/abba/01_Voulez_Vous.mp3<LF>" - - Request: "04:20:00:12:23:45 playlist add - /playlists/abba.m3u<LF>" - Response: "04:20:00:12:23:45 playlist add - /playlists/abba.m3u<LF>" - - """ - self._lms.query(self._id, 'playlist', 'add', media_id) + """Add a items to the existing playlist.""" + self.query('playlist', 'add', media_id) self.update_ha_state() From f643149d2464454952275ae034537f86337c2cf5 Mon Sep 17 00:00:00 2001 From: happyleavesaoc <happyleaves.tfr@gmail.com> Date: Sun, 8 Jan 2017 08:35:14 -0500 Subject: [PATCH 115/189] usps sensor: better delivery handling (#5202) * better delivery handling * bump dep version --- homeassistant/components/sensor/usps.py | 32 +++++++++++++++---------- requirements_all.txt | 2 +- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/sensor/usps.py b/homeassistant/components/sensor/usps.py index 2290749a717..e9562667f6d 100644 --- a/homeassistant/components/sensor/usps.py +++ b/homeassistant/components/sensor/usps.py @@ -15,14 +15,16 @@ from homeassistant.const import CONF_USERNAME, CONF_PASSWORD, ATTR_ATTRIBUTION from homeassistant.helpers.entity import Entity from homeassistant.util import slugify from homeassistant.util import Throttle +from homeassistant.util.dt import now, parse_datetime import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['myusps==1.0.0'] +REQUIREMENTS = ['myusps==1.0.1'] _LOGGER = logging.getLogger(__name__) CONF_UPDATE_INTERVAL = 'update_interval' ICON = 'mdi:package-variant-closed' +STATUS_DELIVERED = 'delivered' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_USERNAME): cv.string, @@ -54,7 +56,8 @@ class USPSSensor(Entity): import myusps self._session = session self._profile = myusps.get_profile(session) - self._packages = None + self._attributes = None + self._state = None self.update = Throttle(interval)(self._update) self.update() @@ -66,25 +69,28 @@ class USPSSensor(Entity): @property def state(self): """Return the state of the sensor.""" - return len(self._packages) + return self._state def _update(self): """Update device state.""" import myusps - self._packages = myusps.get_packages(self._session) + status_counts = defaultdict(int) + for package in myusps.get_packages(self._session): + status = slugify(package['primary_status']) + if status == STATUS_DELIVERED and \ + parse_datetime(package['date']).date() < now().date(): + continue + status_counts[status] += 1 + self._attributes = { + ATTR_ATTRIBUTION: myusps.ATTRIBUTION + } + self._attributes.update(status_counts) + self._state = sum(status_counts.values()) @property def device_state_attributes(self): """Return the state attributes.""" - import myusps - status_counts = defaultdict(int) - for package in self._packages: - status_counts[slugify(package['status'])] += 1 - attributes = { - ATTR_ATTRIBUTION: myusps.ATTRIBUTION - } - attributes.update(status_counts) - return attributes + return self._attributes @property def icon(self): diff --git a/requirements_all.txt b/requirements_all.txt index 9892551f9f8..e17c6b2c8a8 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -309,7 +309,7 @@ mficlient==0.3.0 miflora==0.1.14 # homeassistant.components.sensor.usps -myusps==1.0.0 +myusps==1.0.1 # homeassistant.components.discovery netdisco==0.8.1 From 81f988cf9ece775a1bf2b594063ec8378ca54712 Mon Sep 17 00:00:00 2001 From: happyleavesaoc <happyleaves.tfr@gmail.com> Date: Sun, 8 Jan 2017 17:50:42 -0500 Subject: [PATCH 116/189] date fix (#5227) --- homeassistant/components/calendar/__init__.py | 6 +++--- homeassistant/components/calendar/google.py | 2 +- tests/components/calendar/test_google.py | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/calendar/__init__.py b/homeassistant/components/calendar/__init__.py index 63083f46bba..e4de69c3ce8 100644 --- a/homeassistant/components/calendar/__init__.py +++ b/homeassistant/components/calendar/__init__.py @@ -147,10 +147,10 @@ class CalendarEventDevice(Entity): def _get_date(date): """Get the dateTime from date or dateTime as a local.""" if 'date' in date: - return dt.as_utc(dt.dt.datetime.combine( - dt.parse_date(date['date']), dt.dt.time())) + return dt.start_of_local_day(dt.dt.datetime.combine( + dt.parse_date(date['date']), dt.dt.time.min)) else: - return dt.parse_datetime(date['dateTime']) + return dt.as_local(dt.parse_datetime(date['dateTime'])) start = _get_date(self.data.event['start']) end = _get_date(self.data.event['end']) diff --git a/homeassistant/components/calendar/google.py b/homeassistant/components/calendar/google.py index 741b3238b49..022d39b602b 100644 --- a/homeassistant/components/calendar/google.py +++ b/homeassistant/components/calendar/google.py @@ -66,7 +66,7 @@ class GoogleCalendarData(object): """Get the latest data.""" service = self.calendar_service.get() params = dict(DEFAULT_GOOGLE_SEARCH_PARAMS) - params['timeMin'] = dt.utcnow().isoformat('T') + params['timeMin'] = dt.start_of_local_day().isoformat('T') params['calendarId'] = self.calendar_id if self.search: params['q'] = self.search diff --git a/tests/components/calendar/test_google.py b/tests/components/calendar/test_google.py index 014e52304c1..7496b4519ab 100755 --- a/tests/components/calendar/test_google.py +++ b/tests/components/calendar/test_google.py @@ -96,8 +96,8 @@ class TestComponentsGoogleCalendar(unittest.TestCase): 'message': event['summary'], 'all_day': True, 'offset_reached': False, - 'start_time': '{} 06:00:00'.format(event['start']['date']), - 'end_time': '{} 06:00:00'.format(event['end']['date']), + 'start_time': '{} 00:00:00'.format(event['start']['date']), + 'end_time': '{} 00:00:00'.format(event['end']['date']), 'location': event['location'], 'description': event['description'] }) @@ -416,8 +416,8 @@ class TestComponentsGoogleCalendar(unittest.TestCase): 'message': event_summary, 'all_day': True, 'offset_reached': False, - 'start_time': '{} 06:00:00'.format(event['start']['date']), - 'end_time': '{} 06:00:00'.format(event['end']['date']), + 'start_time': '{} 00:00:00'.format(event['start']['date']), + 'end_time': '{} 00:00:00'.format(event['end']['date']), 'location': event['location'], 'description': event['description'] }) From 2b14d407c09ee31727d699f1063d37d256bd3ade Mon Sep 17 00:00:00 2001 From: markferry <mark@markferry.net> Date: Sun, 8 Jan 2017 22:59:26 +0000 Subject: [PATCH 117/189] onkyo: fix selecting sources with only one name (#5221) --- homeassistant/components/media_player/onkyo.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/onkyo.py b/homeassistant/components/media_player/onkyo.py index 28f8dd1bf6b..fa06f938b58 100644 --- a/homeassistant/components/media_player/onkyo.py +++ b/homeassistant/components/media_player/onkyo.py @@ -111,13 +111,21 @@ class OnkyoDevice(MediaPlayerDevice): current_source_raw = self.command('input-selector query') if not (volume_raw and mute_raw and current_source_raw): return - for source in current_source_raw[1]: + + # eiscp can return string or tuple. Make everything tuples. + if isinstance(current_source_raw[1], str): + current_source_tuples = \ + (current_source_raw[0], (current_source_raw[1],)) + else: + current_source_tuples = current_source_raw + + for source in current_source_tuples[1]: if source in self._source_mapping: self._current_source = self._source_mapping[source] break else: self._current_source = '_'.join( - [i for i in current_source_raw[1]]) + [i for i in current_source_tuples[1]]) self._muted = bool(mute_raw[1] == 'on') self._volume = int(volume_raw[1], 16) / 80.0 From a3971d7ad163f20e087b5e50cf6e210840b1e6cf Mon Sep 17 00:00:00 2001 From: "Craig J. Ward" <ward.craig.j@gmail.com> Date: Sun, 8 Jan 2017 17:33:35 -0600 Subject: [PATCH 118/189] Insteon local (#5088) * platform set-up begin components * lights seem to be getting set up properly, not sure why they aren't being added... * typo * Dependencies line * toggle working * toggle working * added the switch to insteon_local First commit hope to test tonight or in the morning * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * Update insteon_local.py * move dependency declaration before import? * Move dependencies in Switch * Update insteon_local.py * wait for response * switched the while to an if switched the while 'cmd2' not in resp: to an if 'cmd2' not in resp: this seems to have the updater working * Switched the while sleep loop to an if switched the wile cmd2 not ins resp to be if cmd2 not in resp seems to be working. * Update insteon_local.py * import statement Updated the import statement to import the instance of the insteon_local component not the hub Instance. * updated import and the device assignment update the import to import the instance of the insteon_local component not the hub. * more changes to support the import change * more changes to support the import change * change to hass.data and add loop logic * && * Update insteon_local.py * Update insteon_local.py * logic fixes and throttle * reduce polling time * brightness support * import util * hound fixes * requirements file * more hound fixes * newline * newline weirdness * lint fixes * more lint fixes * switch state * Update insteon_local.py * log cmd2 for debugging * assume success * remove check for none * fix comments * fix comments again * fix comments, add fixed version of lib, add support for timeout, add support for port, handle invalid login and connection problems * fix logging exception * fix hounceci-bot errors * fix hounceci-bot errors * requirements fix * unique-id changes * make dimmer off use saved ramp rate * configurator working for lights * configurator working for switches? * configurator working for switches? * include model names and fix lint errors * lint fix * fix exception order * lint fixes * fix lint errors * update to use insteon local 0.38 * fix device id * move status check to library * move status check to library * add SKU to setup * lint fixes * requirements * linting --- .coveragerc | 3 + .../www_static/images/config_insteon.png | Bin 0 -> 30851 bytes homeassistant/components/insteon_local.py | 74 +++++++ .../components/light/insteon_local.py | 191 ++++++++++++++++++ .../components/switch/insteon_local.py | 176 ++++++++++++++++ requirements_all.txt | 3 + 6 files changed, 447 insertions(+) create mode 100644 homeassistant/components/frontend/www_static/images/config_insteon.png create mode 100644 homeassistant/components/insteon_local.py create mode 100644 homeassistant/components/light/insteon_local.py create mode 100644 homeassistant/components/switch/insteon_local.py diff --git a/.coveragerc b/.coveragerc index 4957221dd94..f3c7d950965 100644 --- a/.coveragerc +++ b/.coveragerc @@ -37,6 +37,9 @@ omit = homeassistant/components/insteon_hub.py homeassistant/components/*/insteon_hub.py + homeassistant/components/insteon_local.py + homeassistant/components/*/insteon_local.py + homeassistant/components/ios.py homeassistant/components/*/ios.py diff --git a/homeassistant/components/frontend/www_static/images/config_insteon.png b/homeassistant/components/frontend/www_static/images/config_insteon.png new file mode 100644 index 0000000000000000000000000000000000000000..0039cf3d160f844e2ba2d5e2230d35997574cf3f GIT binary patch literal 30851 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 GXaWG$@{J7u literal 0 HcmV?d00001 diff --git a/homeassistant/components/insteon_local.py b/homeassistant/components/insteon_local.py new file mode 100644 index 00000000000..7b35b45293c --- /dev/null +++ b/homeassistant/components/insteon_local.py @@ -0,0 +1,74 @@ +""" +Local Support for Insteon. + +Based on the insteonlocal library +https://github.com/phareous/insteonlocal + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/insteon_local/ +""" +import logging +import voluptuous as vol +import requests +from homeassistant.const import (CONF_PASSWORD, CONF_USERNAME, CONF_HOST, + CONF_PORT, CONF_TIMEOUT) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['insteonlocal==0.39'] + +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'insteon_local' + +DEFAULT_PORT = 25105 + +DEFAULT_TIMEOUT = 10 + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + vol.Required(CONF_HOST): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Required(CONF_USERNAME): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int + }) +}, extra=vol.ALLOW_EXTRA) + + +def setup(hass, config): + """Setup Insteon Hub component. + + This will automatically import associated lights. + """ + from insteonlocal.Hub import Hub + + conf = config[DOMAIN] + username = conf.get(CONF_USERNAME) + password = conf.get(CONF_PASSWORD) + host = conf.get(CONF_HOST) + port = conf.get(CONF_PORT) + timeout = conf.get(CONF_TIMEOUT) + + try: + insteonhub = Hub(host, username, password, port, timeout, _LOGGER) + # check for successful connection + insteonhub.get_buffer_status() + except requests.exceptions.ConnectTimeout: + _LOGGER.error("Error on insteon_local." + "Could not connect. Check config", exc_info=True) + return False + except requests.exceptions.ConnectionError: + _LOGGER.error("Error on insteon_local. Could not connect." + "Check config", exc_info=True) + return False + except requests.exceptions.RequestException: + if insteonhub.http_code == 401: + _LOGGER.error("Bad user/pass for insteon_local hub") + return False + else: + _LOGGER.error("Error on insteon_local hub check", exc_info=True) + return False + + hass.data['insteon_local'] = insteonhub + + return True diff --git a/homeassistant/components/light/insteon_local.py b/homeassistant/components/light/insteon_local.py new file mode 100644 index 00000000000..9c40ec9c4f7 --- /dev/null +++ b/homeassistant/components/light/insteon_local.py @@ -0,0 +1,191 @@ +""" +Support for Insteon dimmers via local hub control. + +Based on the insteonlocal library +https://github.com/phareous/insteonlocal + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/light.insteon_local/ + +-- +Example platform config +-- + +insteon_local: + host: YOUR HUB IP + username: YOUR HUB USERNAME + password: YOUR HUB PASSWORD + timeout: 10 + port: 25105 + +""" +import json +import logging +import os +from datetime import timedelta +from homeassistant.components.light import (ATTR_BRIGHTNESS, + SUPPORT_BRIGHTNESS, Light) +from homeassistant.loader import get_component +import homeassistant.util as util + +INSTEON_LOCAL_LIGHTS_CONF = 'insteon_local_lights.conf' + +DEPENDENCIES = ['insteon_local'] + +SUPPORT_INSTEON_LOCAL = SUPPORT_BRIGHTNESS + +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) +MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) + +DOMAIN = "light" + +_LOGGER = logging.getLogger(__name__) +_CONFIGURING = {} + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Insteon local light platform.""" + insteonhub = hass.data['insteon_local'] + + conf_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) + if len(conf_lights): + for device_id in conf_lights: + setup_light(device_id, conf_lights[device_id], insteonhub, hass, + add_devices) + + linked = insteonhub.get_linked() + + for device_id in linked: + if (linked[device_id]['cat_type'] == 'dimmer' and + device_id not in conf_lights): + request_configuration(device_id, + insteonhub, + linked[device_id]['model_name'] + ' ' + + linked[device_id]['sku'], hass, add_devices) + + +def request_configuration(device_id, insteonhub, model, hass, + add_devices_callback): + """Request configuration steps from the user.""" + configurator = get_component('configurator') + + # We got an error if this method is called while we are configuring + if device_id in _CONFIGURING: + configurator.notify_errors( + _CONFIGURING[device_id], 'Failed to register, please try again.') + + return + + def insteon_light_config_callback(data): + """The actions to do when our configuration callback is called.""" + setup_light(device_id, data.get('name'), insteonhub, hass, + add_devices_callback) + + _CONFIGURING[device_id] = configurator.request_config( + hass, 'Insteon ' + model + ' addr: ' + device_id, + insteon_light_config_callback, + description=('Enter a name for ' + model + ' addr: ' + device_id), + entity_picture='/static/images/config_insteon.png', + submit_caption='Confirm', + fields=[{'id': 'name', 'name': 'Name', 'type': ''}] + ) + + +def setup_light(device_id, name, insteonhub, hass, add_devices_callback): + """Setup light.""" + if device_id in _CONFIGURING: + request_id = _CONFIGURING.pop(device_id) + configurator = get_component('configurator') + configurator.request_done(request_id) + _LOGGER.info('Device configuration done!') + + conf_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) + if device_id not in conf_lights: + conf_lights[device_id] = name + + if not config_from_file( + hass.config.path(INSTEON_LOCAL_LIGHTS_CONF), + conf_lights): + _LOGGER.error('failed to save config file') + + device = insteonhub.dimmer(device_id) + add_devices_callback([InsteonLocalDimmerDevice(device, name)]) + + +def config_from_file(filename, config=None): + """Small configuration file management function.""" + if config: + # We're writing configuration + try: + with open(filename, 'w') as fdesc: + fdesc.write(json.dumps(config)) + except IOError as error: + _LOGGER.error('Saving config file failed: %s', error) + return False + return True + else: + # We're reading config + if os.path.isfile(filename): + try: + with open(filename, 'r') as fdesc: + return json.loads(fdesc.read()) + except IOError as error: + _LOGGER.error('Reading config file failed: %s', error) + # This won't work yet + return False + else: + return {} + + +class InsteonLocalDimmerDevice(Light): + """An abstract Class for an Insteon node.""" + + def __init__(self, node, name): + """Initialize the device.""" + self.node = node + self.node.deviceName = name + self._value = 0 + + @property + def name(self): + """Return the the name of the node.""" + return self.node.deviceName + + @property + def unique_id(self): + """Return the ID of this insteon node.""" + return 'insteon_local_' + self.node.device_id + + @property + def brightness(self): + """Return the brightness of this light between 0..255.""" + return self._value + + @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) + def update(self): + """Update state of the light.""" + resp = self.node.status(0) + if 'cmd2' in resp: + self._value = int(resp['cmd2'], 16) + + @property + def is_on(self): + """Return the boolean response if the node is on.""" + return self._value != 0 + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_INSTEON_LOCAL + + def turn_on(self, **kwargs): + """Turn device on.""" + brightness = 100 + if ATTR_BRIGHTNESS in kwargs: + brightness = int(kwargs[ATTR_BRIGHTNESS]) / 255 * 100 + + self.node.on(brightness) + + def turn_off(self, **kwargs): + """Turn device off.""" + self.node.off() diff --git a/homeassistant/components/switch/insteon_local.py b/homeassistant/components/switch/insteon_local.py new file mode 100644 index 00000000000..cc6a732bb7f --- /dev/null +++ b/homeassistant/components/switch/insteon_local.py @@ -0,0 +1,176 @@ +""" +Support for Insteon switch devices via local hub support. + +Based on the insteonlocal library +https://github.com/phareous/insteonlocal + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/switch.insteon_local/ + +-- +Example platform config +-- + +insteon_local: + host: YOUR HUB IP + username: YOUR HUB USERNAME + password: YOUR HUB PASSWORD + timeout: 10 + port: 25105 +""" +import json +import logging +import os +from datetime import timedelta +from homeassistant.components.switch import SwitchDevice +from homeassistant.loader import get_component +import homeassistant.util as util + +INSTEON_LOCAL_SWITCH_CONF = 'insteon_local_switch.conf' + +DEPENDENCIES = ['insteon_local'] + +_LOGGER = logging.getLogger(__name__) + +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) +MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) + +DOMAIN = "switch" + +_LOGGER = logging.getLogger(__name__) +_CONFIGURING = {} + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Insteon local switch platform.""" + insteonhub = hass.data['insteon_local'] + + conf_switches = config_from_file(hass.config.path( + INSTEON_LOCAL_SWITCH_CONF)) + if len(conf_switches): + for device_id in conf_switches: + setup_switch(device_id, conf_switches[device_id], insteonhub, + hass, add_devices) + + linked = insteonhub.get_inked() + + for device_id in linked: + if linked[device_id]['cat_type'] == 'switch'\ + and device_id not in conf_switches: + request_configuration(device_id, insteonhub, + linked[device_id]['model_name'] + ' ' + + linked[device_id]['sku'], hass, add_devices) + + +def request_configuration(device_id, insteonhub, model, hass, + add_devices_callback): + """Request configuration steps from the user.""" + configurator = get_component('configurator') + + # We got an error if this method is called while we are configuring + if device_id in _CONFIGURING: + configurator.notify_errors( + _CONFIGURING[device_id], 'Failed to register, please try again.') + + return + + def insteon_switch_config_callback(data): + """The actions to do when our configuration callback is called.""" + setup_switch(device_id, data.get('name'), insteonhub, hass, + add_devices_callback) + + _CONFIGURING[device_id] = configurator.request_config( + hass, 'Insteon Switch ' + model + ' addr: ' + device_id, + insteon_switch_config_callback, + description=('Enter a name for ' + model + ' addr: ' + device_id), + entity_picture='/static/images/config_insteon.png', + submit_caption='Confirm', + fields=[{'id': 'name', 'name': 'Name', 'type': ''}] + ) + + +def setup_switch(device_id, name, insteonhub, hass, add_devices_callback): + """Setup switch.""" + if device_id in _CONFIGURING: + request_id = _CONFIGURING.pop(device_id) + configurator = get_component('configurator') + configurator.request_done(request_id) + _LOGGER.info('Device configuration done!') + + conf_switch = config_from_file(hass.config.path(INSTEON_LOCAL_SWITCH_CONF)) + if device_id not in conf_switch: + conf_switch[device_id] = name + + if not config_from_file( + hass.config.path(INSTEON_LOCAL_SWITCH_CONF), conf_switch): + _LOGGER.error('failed to save config file') + + device = insteonhub.switch(device_id) + add_devices_callback([InsteonLocalSwitchDevice(device, name)]) + + +def config_from_file(filename, config=None): + """Small configuration file management function.""" + if config: + # We're writing configuration + try: + with open(filename, 'w') as fdesc: + fdesc.write(json.dumps(config)) + except IOError as error: + _LOGGER.error('Saving config file failed: %s', error) + return False + return True + else: + # We're reading config + if os.path.isfile(filename): + try: + with open(filename, 'r') as fdesc: + return json.loads(fdesc.read()) + except IOError as error: + _LOGGER.error('Reading config file failed: %s', error) + # This won't work yet + return False + else: + return {} + + +class InsteonLocalSwitchDevice(SwitchDevice): + """An abstract Class for an Insteon node.""" + + def __init__(self, node, name): + """Initialize the device.""" + self.node = node + self.node.deviceName = name + self._state = False + + @property + def name(self): + """Return the the name of the node.""" + return self.node.deviceName + + @property + def unique_id(self): + """Return the ID of this insteon node.""" + return 'insteon_local_' + self.node.device_id + + @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) + def update(self): + """Get the updated status of the switch.""" + resp = self.node.status(0) + if 'cmd2' in resp: + self._state = int(resp['cmd2'], 16) > 0 + + @property + def is_on(self): + """Return the boolean response if the node is on.""" + return self._state + + def turn_on(self, **kwargs): + """Turn device on.""" + self.node.on() + self._state = True + + def turn_off(self, **kwargs): + """Turn device off.""" + self.node.off() + self._state = False diff --git a/requirements_all.txt b/requirements_all.txt index e17c6b2c8a8..a2412504bdb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -271,6 +271,9 @@ influxdb==3.0.0 # homeassistant.components.insteon_hub insteon_hub==0.4.5 +# homeassistant.components.insteon_local +insteonlocal==0.39 + # homeassistant.components.media_player.kodi jsonrpc-async==0.1 From 469472914b029b3392fc22cf3e8edebe42d6342a Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Sun, 8 Jan 2017 19:09:30 -0500 Subject: [PATCH 119/189] Add SUPPORT_PLAY flag (#5181) * Add SUPPORT_PLAY flag * Add SUPPPORT_PLAY to existing media players * Leave usage of new flag to device devs --- homeassistant/components/media_player/__init__.py | 6 ++++++ homeassistant/components/media_player/aquostv.py | 4 ++-- homeassistant/components/media_player/braviatv.py | 4 ++-- homeassistant/components/media_player/cast.py | 4 ++-- homeassistant/components/media_player/cmus.py | 4 ++-- homeassistant/components/media_player/demo.py | 10 ++++++---- homeassistant/components/media_player/denon.py | 4 ++-- homeassistant/components/media_player/denonavr.py | 4 ++-- homeassistant/components/media_player/directv.py | 5 +++-- homeassistant/components/media_player/dunehd.py | 5 +++-- homeassistant/components/media_player/emby.py | 4 ++-- homeassistant/components/media_player/firetv.py | 5 +++-- homeassistant/components/media_player/gpmdp.py | 6 +++--- homeassistant/components/media_player/itunes.py | 4 ++-- homeassistant/components/media_player/kodi.py | 4 ++-- homeassistant/components/media_player/lg_netcast.py | 5 +++-- homeassistant/components/media_player/mpchc.py | 7 ++++--- homeassistant/components/media_player/mpd.py | 4 ++-- homeassistant/components/media_player/onkyo.py | 4 ++-- .../components/media_player/panasonic_viera.py | 4 ++-- homeassistant/components/media_player/pandora.py | 4 ++-- homeassistant/components/media_player/philips_js.py | 4 ++-- homeassistant/components/media_player/pioneer.py | 6 ++++-- homeassistant/components/media_player/plex.py | 4 ++-- homeassistant/components/media_player/roku.py | 4 ++-- homeassistant/components/media_player/russound_rnet.py | 4 ++-- homeassistant/components/media_player/samsungtv.py | 4 ++-- homeassistant/components/media_player/snapcast.py | 4 ++-- homeassistant/components/media_player/sonos.py | 5 +++-- homeassistant/components/media_player/soundtouch.py | 5 +++-- homeassistant/components/media_player/squeezebox.py | 5 +++-- homeassistant/components/media_player/vlc.py | 4 ++-- homeassistant/components/media_player/webostv.py | 4 ++-- homeassistant/components/media_player/yamaha.py | 6 +++--- tests/components/media_player/test_soundtouch.py | 2 +- 35 files changed, 90 insertions(+), 72 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index e29e950a7f9..f5948e1eecd 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -101,6 +101,7 @@ SUPPORT_VOLUME_STEP = 1024 SUPPORT_SELECT_SOURCE = 2048 SUPPORT_STOP = 4096 SUPPORT_CLEAR_PLAYLIST = 8192 +SUPPORT_PLAY = 16384 # Service call validation schemas MEDIA_PLAYER_SCHEMA = vol.Schema({ @@ -675,6 +676,11 @@ class MediaPlayerDevice(Entity): None, self.clear_playlist) # No need to overwrite these. + @property + def support_play(self): + """Boolean if play is supported.""" + return bool(self.supported_media_commands & SUPPORT_PLAY) + @property def support_pause(self): """Boolean if pause is supported.""" diff --git a/homeassistant/components/media_player/aquostv.py b/homeassistant/components/media_player/aquostv.py index 5dc6635f8cc..0654e393780 100644 --- a/homeassistant/components/media_player/aquostv.py +++ b/homeassistant/components/media_player/aquostv.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_SELECT_SOURCE, - SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, + SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_PLAY, SUPPORT_VOLUME_SET, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( @@ -35,7 +35,7 @@ DEFAULT_RETRIES = 2 SUPPORT_SHARPTV = SUPPORT_TURN_OFF | \ SUPPORT_NEXT_TRACK | SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | \ SUPPORT_SELECT_SOURCE | SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP | \ - SUPPORT_VOLUME_SET + SUPPORT_VOLUME_SET | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/braviatv.py b/homeassistant/components/media_player/braviatv.py index 004682b402e..20eb4fc7cca 100644 --- a/homeassistant/components/media_player/braviatv.py +++ b/homeassistant/components/media_player/braviatv.py @@ -14,7 +14,7 @@ import voluptuous as vol from homeassistant.loader import get_component from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_ON, - SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, + SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_PLAY, SUPPORT_VOLUME_SET, SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON) @@ -41,7 +41,7 @@ SUPPORT_BRAVIA = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_SET | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/cast.py b/homeassistant/components/media_player/cast.py index 7e96e0dbed6..faa204e675e 100644 --- a/homeassistant/components/media_player/cast.py +++ b/homeassistant/components/media_player/cast.py @@ -13,7 +13,7 @@ from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_STOP, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_STOP, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN) @@ -31,7 +31,7 @@ DEFAULT_PORT = 8009 SUPPORT_CAST = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_PLAY_MEDIA | SUPPORT_STOP + SUPPORT_NEXT_TRACK | SUPPORT_PLAY_MEDIA | SUPPORT_STOP | SUPPORT_PLAY KNOWN_HOSTS = [] diff --git a/homeassistant/components/media_player/cmus.py b/homeassistant/components/media_player/cmus.py index 16f3360a2ad..ac6885e3450 100644 --- a/homeassistant/components/media_player/cmus.py +++ b/homeassistant/components/media_player/cmus.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_PLAYLIST, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, - SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, + SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_PLAY, SUPPORT_VOLUME_SET, SUPPORT_PLAY_MEDIA, SUPPORT_SEEK, PLATFORM_SCHEMA, MediaPlayerDevice) from homeassistant.const import ( @@ -28,7 +28,7 @@ DEFAULT_PORT = 3000 SUPPORT_CMUS = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_TURN_OFF | \ SUPPORT_TURN_ON | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_PLAY_MEDIA | SUPPORT_SEEK + SUPPORT_PLAY_MEDIA | SUPPORT_SEEK | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Inclusive(CONF_HOST, 'remote'): cv.string, diff --git a/homeassistant/components/media_player/demo.py b/homeassistant/components/media_player/demo.py index 226ddfe4769..4e9867b49e9 100644 --- a/homeassistant/components/media_player/demo.py +++ b/homeassistant/components/media_player/demo.py @@ -8,7 +8,8 @@ from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_SELECT_SOURCE, SUPPORT_CLEAR_PLAYLIST, MediaPlayerDevice) + SUPPORT_SELECT_SOURCE, SUPPORT_CLEAR_PLAYLIST, SUPPORT_PLAY, + MediaPlayerDevice) from homeassistant.const import STATE_OFF, STATE_PAUSED, STATE_PLAYING import homeassistant.util.dt as dt_util @@ -30,14 +31,15 @@ YOUTUBE_COVER_URL_FORMAT = 'https://img.youtube.com/vi/{}/hqdefault.jpg' YOUTUBE_PLAYER_SUPPORT = \ SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | SUPPORT_PLAY MUSIC_PLAYER_SUPPORT = \ SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_CLEAR_PLAYLIST + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_CLEAR_PLAYLIST | SUPPORT_PLAY NETFLIX_PLAYER_SUPPORT = \ - SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY class AbstractDemoPlayer(MediaPlayerDevice): diff --git a/homeassistant/components/media_player/denon.py b/homeassistant/components/media_player/denon.py index badbae162a2..1feee79635d 100755 --- a/homeassistant/components/media_player/denon.py +++ b/homeassistant/components/media_player/denon.py @@ -13,7 +13,7 @@ from homeassistant.components.media_player import ( PLATFORM_SCHEMA, SUPPORT_NEXT_TRACK, SUPPORT_SELECT_SOURCE, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_STOP, MediaPlayerDevice) + SUPPORT_STOP, SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN) import homeassistant.helpers.config_validation as cv @@ -26,7 +26,7 @@ SUPPORT_DENON = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE \ SUPPORT_MEDIA_MODES = SUPPORT_PAUSE | SUPPORT_STOP | \ - SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK + SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/denonavr.py b/homeassistant/components/media_player/denonavr.py index edae45e564d..50b16afc811 100644 --- a/homeassistant/components/media_player/denonavr.py +++ b/homeassistant/components/media_player/denonavr.py @@ -13,7 +13,7 @@ from homeassistant.components.media_player import ( SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_SELECT_SOURCE, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_CHANNEL, MediaPlayerDevice, PLATFORM_SCHEMA, SUPPORT_TURN_ON, - MEDIA_TYPE_MUSIC, SUPPORT_VOLUME_SET) + MEDIA_TYPE_MUSIC, SUPPORT_VOLUME_SET, SUPPORT_PLAY) from homeassistant.const import ( CONF_HOST, STATE_OFF, STATE_PLAYING, STATE_PAUSED, CONF_NAME, STATE_ON) @@ -30,7 +30,7 @@ SUPPORT_DENON = SUPPORT_VOLUME_STEP | SUPPORT_VOLUME_MUTE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ SUPPORT_SELECT_SOURCE | SUPPORT_PLAY_MEDIA | \ SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET + SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/directv.py b/homeassistant/components/media_player/directv.py index 397014992ea..e63301db4d9 100644 --- a/homeassistant/components/media_player/directv.py +++ b/homeassistant/components/media_player/directv.py @@ -9,7 +9,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_STOP, PLATFORM_SCHEMA, - SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, MediaPlayerDevice) + SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_PLAY, + MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_PLAYING, CONF_PORT) import homeassistant.helpers.config_validation as cv @@ -21,7 +22,7 @@ DEFAULT_PORT = 8080 SUPPORT_DTV = SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ SUPPORT_PLAY_MEDIA | SUPPORT_STOP | SUPPORT_NEXT_TRACK | \ - SUPPORT_PREVIOUS_TRACK + SUPPORT_PREVIOUS_TRACK | SUPPORT_PLAY KNOWN_HOSTS = [] diff --git a/homeassistant/components/media_player/dunehd.py b/homeassistant/components/media_player/dunehd.py index d0851a2e088..9deab4bcdff 100644 --- a/homeassistant/components/media_player/dunehd.py +++ b/homeassistant/components/media_player/dunehd.py @@ -10,7 +10,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( SUPPORT_PAUSE, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_SELECT_SOURCE, PLATFORM_SCHEMA, - MediaPlayerDevice) + SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_PAUSED, STATE_ON, STATE_PLAYING) @@ -28,7 +28,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ DUNEHD_PLAYER_SUPPORT = \ SUPPORT_PAUSE | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ - SUPPORT_SELECT_SOURCE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK + SUPPORT_SELECT_SOURCE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ + SUPPORT_PLAY # pylint: disable=unused-argument diff --git a/homeassistant/components/media_player/emby.py b/homeassistant/components/media_player/emby.py index 3fae52dd052..4aac93c42d9 100644 --- a/homeassistant/components/media_player/emby.py +++ b/homeassistant/components/media_player/emby.py @@ -14,7 +14,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_SEEK, SUPPORT_STOP, SUPPORT_PREVIOUS_TRACK, MediaPlayerDevice, - PLATFORM_SCHEMA) + SUPPORT_PLAY, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, CONF_API_KEY, CONF_PORT, CONF_SSL, DEVICE_DEFAULT_NAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN) @@ -34,7 +34,7 @@ DEFAULT_PORT = 8096 _LOGGER = logging.getLogger(__name__) SUPPORT_EMBY = SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_STOP | SUPPORT_SEEK + SUPPORT_STOP | SUPPORT_SEEK | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOST, default='localhost'): cv.string, diff --git a/homeassistant/components/media_player/firetv.py b/homeassistant/components/media_player/firetv.py index c8cdc9e7422..1b0a9b02b63 100644 --- a/homeassistant/components/media_player/firetv.py +++ b/homeassistant/components/media_player/firetv.py @@ -11,7 +11,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, PLATFORM_SCHEMA, - SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_SET, MediaPlayerDevice) + SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_SET, SUPPORT_PLAY, + MediaPlayerDevice) from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_STANDBY, STATE_UNKNOWN, CONF_HOST, CONF_PORT, CONF_NAME, CONF_DEVICE, CONF_DEVICES) @@ -21,7 +22,7 @@ _LOGGER = logging.getLogger(__name__) SUPPORT_FIRETV = SUPPORT_PAUSE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET + SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_SET | SUPPORT_PLAY DEFAULT_DEVICE = 'default' DEFAULT_HOST = 'localhost' diff --git a/homeassistant/components/media_player/gpmdp.py b/homeassistant/components/media_player/gpmdp.py index f81c63e71a1..c98b32137c7 100644 --- a/homeassistant/components/media_player/gpmdp.py +++ b/homeassistant/components/media_player/gpmdp.py @@ -14,8 +14,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, - SUPPORT_PAUSE, SUPPORT_VOLUME_SET, SUPPORT_SEEK, MediaPlayerDevice, - PLATFORM_SCHEMA) + SUPPORT_PAUSE, SUPPORT_VOLUME_SET, SUPPORT_SEEK, SUPPORT_PLAY, + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( STATE_PLAYING, STATE_PAUSED, STATE_OFF, CONF_HOST, CONF_PORT, CONF_NAME) from homeassistant.loader import get_component @@ -33,7 +33,7 @@ DEFAULT_PORT = 5672 GPMDP_CONFIG_FILE = 'gpmpd.conf' SUPPORT_GPMDP = SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_SEEK | SUPPORT_VOLUME_SET + SUPPORT_SEEK | SUPPORT_VOLUME_SET | SUPPORT_PLAY PLAYBACK_DICT = {'0': STATE_PAUSED, # Stopped '1': STATE_PAUSED, diff --git a/homeassistant/components/media_player/itunes.py b/homeassistant/components/media_player/itunes.py index 7b869e14267..4dc41c7e085 100644 --- a/homeassistant/components/media_player/itunes.py +++ b/homeassistant/components/media_player/itunes.py @@ -13,7 +13,7 @@ from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, MEDIA_TYPE_PLAYLIST, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, PLATFORM_SCHEMA, - MediaPlayerDevice) + SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_ON, STATE_PAUSED, STATE_PLAYING, CONF_NAME, CONF_HOST, CONF_PORT, CONF_SSL) @@ -29,7 +29,7 @@ DOMAIN = 'itunes' SUPPORT_ITUNES = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_SEEK | \ - SUPPORT_PLAY_MEDIA + SUPPORT_PLAY_MEDIA | SUPPORT_PLAY SUPPORT_AIRPLAY = SUPPORT_VOLUME_SET | SUPPORT_TURN_ON | SUPPORT_TURN_OFF diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index abab433eb38..54b95deee47 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -14,7 +14,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_PLAY_MEDIA, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_STOP, - SUPPORT_TURN_OFF, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_TURN_OFF, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, CONF_HOST, CONF_NAME, CONF_PORT, CONF_USERNAME, CONF_PASSWORD) @@ -35,7 +35,7 @@ TURN_OFF_ACTION = [None, 'quit', 'hibernate', 'suspend', 'reboot', 'shutdown'] SUPPORT_KODI = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_SEEK | \ - SUPPORT_PLAY_MEDIA | SUPPORT_STOP + SUPPORT_PLAY_MEDIA | SUPPORT_STOP | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/lg_netcast.py b/homeassistant/components/media_player/lg_netcast.py index 1f15153dbe8..ab6cfa701ca 100644 --- a/homeassistant/components/media_player/lg_netcast.py +++ b/homeassistant/components/media_player/lg_netcast.py @@ -14,7 +14,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, PLATFORM_SCHEMA, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, - SUPPORT_SELECT_SOURCE, MEDIA_TYPE_CHANNEL, MediaPlayerDevice) + SUPPORT_SELECT_SOURCE, SUPPORT_PLAY, MEDIA_TYPE_CHANNEL, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, CONF_ACCESS_TOKEN, STATE_OFF, STATE_PLAYING, STATE_PAUSED, STATE_UNKNOWN) @@ -32,7 +32,8 @@ MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) SUPPORT_LGTV = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF | \ + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, diff --git a/homeassistant/components/media_player/mpchc.py b/homeassistant/components/media_player/mpchc.py index 0cbd548f23f..e51d91aa95c 100644 --- a/homeassistant/components/media_player/mpchc.py +++ b/homeassistant/components/media_player/mpchc.py @@ -12,8 +12,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_VOLUME_MUTE, SUPPORT_PAUSE, SUPPORT_STOP, SUPPORT_NEXT_TRACK, - SUPPORT_PREVIOUS_TRACK, SUPPORT_VOLUME_STEP, MediaPlayerDevice, - PLATFORM_SCHEMA) + SUPPORT_PREVIOUS_TRACK, SUPPORT_VOLUME_STEP, SUPPORT_PLAY, + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( STATE_OFF, STATE_IDLE, STATE_PAUSED, STATE_PLAYING, CONF_NAME, CONF_HOST, CONF_PORT) @@ -25,7 +25,8 @@ DEFAULT_NAME = 'MPC-HC' DEFAULT_PORT = 13579 SUPPORT_MPCHC = SUPPORT_VOLUME_MUTE | SUPPORT_PAUSE | SUPPORT_STOP | \ - SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_STEP + SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_VOLUME_STEP | \ + SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/mpd.py b/homeassistant/components/media_player/mpd.py index acfd0e9307c..015ba2fd0ac 100644 --- a/homeassistant/components/media_player/mpd.py +++ b/homeassistant/components/media_player/mpd.py @@ -12,7 +12,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, PLATFORM_SCHEMA, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, - SUPPORT_VOLUME_SET, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_PLAYLIST, + SUPPORT_VOLUME_SET, SUPPORT_PLAY_MEDIA, SUPPORT_PLAY, MEDIA_TYPE_PLAYLIST, MediaPlayerDevice) from homeassistant.const import ( STATE_OFF, STATE_PAUSED, STATE_PLAYING, CONF_PORT, CONF_PASSWORD, @@ -30,7 +30,7 @@ DEFAULT_PORT = 6600 SUPPORT_MPD = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_TURN_OFF | \ SUPPORT_TURN_ON | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_PLAY_MEDIA + SUPPORT_PLAY_MEDIA | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/onkyo.py b/homeassistant/components/media_player/onkyo.py index fa06f938b58..3db9413490f 100644 --- a/homeassistant/components/media_player/onkyo.py +++ b/homeassistant/components/media_player/onkyo.py @@ -10,7 +10,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_SELECT_SOURCE, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import (STATE_OFF, STATE_ON, CONF_HOST, CONF_NAME) import homeassistant.helpers.config_validation as cv @@ -24,7 +24,7 @@ CONF_SOURCES = 'sources' DEFAULT_NAME = 'Onkyo Receiver' SUPPORT_ONKYO = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE | SUPPORT_PLAY KNOWN_HOSTS = [] # type: List[str] DEFAULT_SOURCES = {'tv': 'TV', 'bd': 'Bluray', 'game': 'Game', 'aux1': 'Aux1', diff --git a/homeassistant/components/media_player/panasonic_viera.py b/homeassistant/components/media_player/panasonic_viera.py index 4585d251d9f..09f4845effe 100644 --- a/homeassistant/components/media_player/panasonic_viera.py +++ b/homeassistant/components/media_player/panasonic_viera.py @@ -10,7 +10,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, - SUPPORT_TURN_ON, SUPPORT_TURN_OFF, + SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_PLAY, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_VOLUME_STEP, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( @@ -30,7 +30,7 @@ DEFAULT_PORT = 55000 SUPPORT_VIERATV = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_TURN_OFF + SUPPORT_TURN_OFF | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/pandora.py b/homeassistant/components/media_player/pandora.py index 3d42e4a11e1..0d554093be2 100644 --- a/homeassistant/components/media_player/pandora.py +++ b/homeassistant/components/media_player/pandora.py @@ -15,7 +15,7 @@ import shutil from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, MEDIA_TYPE_MUSIC, - SUPPORT_TURN_OFF, SUPPORT_TURN_ON, + SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_PLAY, SUPPORT_SELECT_SOURCE, SERVICE_MEDIA_NEXT_TRACK, SERVICE_MEDIA_PLAY_PAUSE, SERVICE_MEDIA_PLAY, SERVICE_VOLUME_UP, SERVICE_VOLUME_DOWN, MediaPlayerDevice) @@ -31,7 +31,7 @@ _LOGGER = logging.getLogger(__name__) PANDORA_SUPPORT = \ SUPPORT_PAUSE | \ SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_NEXT_TRACK | \ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY CMD_MAP = {SERVICE_MEDIA_NEXT_TRACK: 'n', SERVICE_MEDIA_PLAY_PAUSE: 'p', diff --git a/homeassistant/components/media_player/philips_js.py b/homeassistant/components/media_player/philips_js.py index b7665b199a4..22f257f31dc 100644 --- a/homeassistant/components/media_player/philips_js.py +++ b/homeassistant/components/media_player/philips_js.py @@ -13,7 +13,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( PLATFORM_SCHEMA, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, - SUPPORT_VOLUME_STEP, MediaPlayerDevice) + SUPPORT_VOLUME_STEP, SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN) from homeassistant.util import Throttle @@ -28,7 +28,7 @@ SUPPORT_PHILIPS_JS = SUPPORT_TURN_OFF | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_SELECT_SOURCE SUPPORT_PHILIPS_JS_TV = SUPPORT_PHILIPS_JS | SUPPORT_NEXT_TRACK | \ - SUPPORT_PREVIOUS_TRACK + SUPPORT_PREVIOUS_TRACK | SUPPORT_PLAY DEFAULT_DEVICE = 'default' DEFAULT_HOST = '127.0.0.1' diff --git a/homeassistant/components/media_player/pioneer.py b/homeassistant/components/media_player/pioneer.py index 14e4c753765..dec8bd12bb2 100644 --- a/homeassistant/components/media_player/pioneer.py +++ b/homeassistant/components/media_player/pioneer.py @@ -11,7 +11,8 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_PAUSE, SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA, - SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET) + SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, + SUPPORT_PLAY) from homeassistant.const import ( CONF_HOST, STATE_OFF, STATE_ON, STATE_UNKNOWN, CONF_NAME, CONF_PORT, CONF_TIMEOUT) @@ -24,7 +25,8 @@ DEFAULT_PORT = 23 # telnet default. Some Pioneer AVRs use 8102 DEFAULT_TIMEOUT = None SUPPORT_PIONEER = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | \ + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY MAX_VOLUME = 185 MAX_SOURCE_NUMBERS = 60 diff --git a/homeassistant/components/media_player/plex.py b/homeassistant/components/media_player/plex.py index 5aaee6a341e..409a480443a 100644 --- a/homeassistant/components/media_player/plex.py +++ b/homeassistant/components/media_player/plex.py @@ -14,7 +14,7 @@ import homeassistant.util as util from homeassistant.components.media_player import ( MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_PAUSE, SUPPORT_STOP, SUPPORT_VOLUME_SET, - MediaPlayerDevice) + SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( DEVICE_DEFAULT_NAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN) @@ -32,7 +32,7 @@ _CONFIGURING = {} _LOGGER = logging.getLogger(__name__) SUPPORT_PLEX = SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_STOP | SUPPORT_VOLUME_SET + SUPPORT_STOP | SUPPORT_VOLUME_SET | SUPPORT_PLAY def config_from_file(filename, config=None): diff --git a/homeassistant/components/media_player/roku.py b/homeassistant/components/media_player/roku.py index dfeb6196750..5a4e993aee5 100644 --- a/homeassistant/components/media_player/roku.py +++ b/homeassistant/components/media_player/roku.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( MEDIA_TYPE_VIDEO, SUPPORT_NEXT_TRACK, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_SELECT_SOURCE, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, STATE_IDLE, STATE_PLAYING, STATE_UNKNOWN, STATE_HOME) import homeassistant.helpers.config_validation as cv @@ -27,7 +27,7 @@ _LOGGER = logging.getLogger(__name__) SUPPORT_ROKU = SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK |\ SUPPORT_PLAY_MEDIA | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE |\ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/russound_rnet.py b/homeassistant/components/media_player/russound_rnet.py index 3128aebe04f..b8f79c45cec 100644 --- a/homeassistant/components/media_player/russound_rnet.py +++ b/homeassistant/components/media_player/russound_rnet.py @@ -10,7 +10,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_SELECT_SOURCE, SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, CONF_PORT, STATE_OFF, STATE_ON, CONF_NAME) import homeassistant.helpers.config_validation as cv @@ -25,7 +25,7 @@ CONF_ZONES = 'zones' CONF_SOURCES = 'sources' SUPPORT_RUSSOUND = SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_SET | \ - SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE | SUPPORT_PLAY ZONE_SCHEMA = vol.Schema({ vol.Required(CONF_NAME): cv.string, diff --git a/homeassistant/components/media_player/samsungtv.py b/homeassistant/components/media_player/samsungtv.py index 85e32947fb0..d2d3d2e25a6 100644 --- a/homeassistant/components/media_player/samsungtv.py +++ b/homeassistant/components/media_player/samsungtv.py @@ -12,7 +12,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, - MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN, CONF_PORT) import homeassistant.helpers.config_validation as cv @@ -31,7 +31,7 @@ KNOWN_DEVICES_KEY = 'samsungtv_known_devices' SUPPORT_SAMSUNGTV = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | \ - SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF + SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/snapcast.py b/homeassistant/components/media_player/snapcast.py index 37e9c4d3109..98dad3486a2 100644 --- a/homeassistant/components/media_player/snapcast.py +++ b/homeassistant/components/media_player/snapcast.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_SELECT_SOURCE, - PLATFORM_SCHEMA, MediaPlayerDevice) + SUPPORT_PLAY, PLATFORM_SCHEMA, MediaPlayerDevice) from homeassistant.const import ( STATE_OFF, STATE_IDLE, STATE_PLAYING, STATE_UNKNOWN, CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv @@ -23,7 +23,7 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'snapcast' SUPPORT_SNAPCAST = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ diff --git a/homeassistant/components/media_player/sonos.py b/homeassistant/components/media_player/sonos.py index 621fc03a7c3..7e9a553fd97 100644 --- a/homeassistant/components/media_player/sonos.py +++ b/homeassistant/components/media_player/sonos.py @@ -15,7 +15,8 @@ from homeassistant.components.media_player import ( ATTR_MEDIA_ENQUEUE, DOMAIN, MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_CLEAR_PLAYLIST, - SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA, SUPPORT_STOP) + SUPPORT_SELECT_SOURCE, MediaPlayerDevice, PLATFORM_SCHEMA, SUPPORT_STOP, + SUPPORT_PLAY) from homeassistant.const import ( STATE_IDLE, STATE_PAUSED, STATE_PLAYING, STATE_OFF, ATTR_ENTITY_ID, CONF_HOSTS) @@ -39,7 +40,7 @@ _REQUESTS_LOGGER.setLevel(logging.ERROR) SUPPORT_SONOS = SUPPORT_STOP | SUPPORT_PAUSE | SUPPORT_VOLUME_SET |\ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK |\ SUPPORT_PLAY_MEDIA | SUPPORT_SEEK | SUPPORT_CLEAR_PLAYLIST |\ - SUPPORT_SELECT_SOURCE + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY SERVICE_GROUP_PLAYERS = 'sonos_group_players' SERVICE_UNJOIN = 'sonos_unjoin' diff --git a/homeassistant/components/media_player/soundtouch.py b/homeassistant/components/media_player/soundtouch.py index c33422f871e..22191a0ee17 100644 --- a/homeassistant/components/media_player/soundtouch.py +++ b/homeassistant/components/media_player/soundtouch.py @@ -8,7 +8,8 @@ import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, - SUPPORT_VOLUME_SET, SUPPORT_TURN_ON, MediaPlayerDevice, PLATFORM_SCHEMA) + SUPPORT_VOLUME_SET, SUPPORT_TURN_ON, SUPPORT_PLAY, MediaPlayerDevice, + PLATFORM_SCHEMA) from homeassistant.config import load_yaml_config_file from homeassistant.const import (CONF_HOST, CONF_NAME, STATE_OFF, CONF_PORT, STATE_PAUSED, STATE_PLAYING, @@ -58,7 +59,7 @@ DEVICES = [] SUPPORT_SOUNDTOUCH = SUPPORT_PAUSE | SUPPORT_VOLUME_STEP | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | \ SUPPORT_NEXT_TRACK | SUPPORT_TURN_OFF | \ - SUPPORT_VOLUME_SET | SUPPORT_TURN_ON + SUPPORT_VOLUME_SET | SUPPORT_TURN_ON | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/squeezebox.py b/homeassistant/components/media_player/squeezebox.py index 08d498053ce..c338c6dffd8 100644 --- a/homeassistant/components/media_player/squeezebox.py +++ b/homeassistant/components/media_player/squeezebox.py @@ -17,7 +17,7 @@ from homeassistant.components.media_player import ( ATTR_MEDIA_ENQUEUE, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, PLATFORM_SCHEMA, SUPPORT_PREVIOUS_TRACK, SUPPORT_SEEK, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, - SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, MediaPlayerDevice) + SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_PASSWORD, CONF_USERNAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING, STATE_UNKNOWN, CONF_PORT) @@ -33,7 +33,8 @@ KNOWN_DEVICES = [] SUPPORT_SQUEEZEBOX = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ - SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA + SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | \ + SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index da6e9a696b9..3398e7093cc 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -10,7 +10,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_PAUSE, SUPPORT_PLAY_MEDIA, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, - MediaPlayerDevice, PLATFORM_SCHEMA, MEDIA_TYPE_MUSIC) + SUPPORT_PLAY, MediaPlayerDevice, PLATFORM_SCHEMA, MEDIA_TYPE_MUSIC) from homeassistant.const import (CONF_NAME, STATE_IDLE, STATE_PAUSED, STATE_PLAYING) import homeassistant.helpers.config_validation as cv @@ -22,7 +22,7 @@ _LOGGER = logging.getLogger(__name__) SUPPORT_VLC = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_PLAY_MEDIA + SUPPORT_PLAY_MEDIA | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME): cv.string, diff --git a/homeassistant/components/media_player/webostv.py b/homeassistant/components/media_player/webostv.py index a2f49cc3f21..fbd3bb14e74 100644 --- a/homeassistant/components/media_player/webostv.py +++ b/homeassistant/components/media_player/webostv.py @@ -12,7 +12,7 @@ import voluptuous as vol import homeassistant.util as util from homeassistant.components.media_player import ( - SUPPORT_TURN_ON, SUPPORT_TURN_OFF, + SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_PLAY, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_SELECT_SOURCE, SUPPORT_PLAY_MEDIA, MEDIA_TYPE_CHANNEL, @@ -40,7 +40,7 @@ DEFAULT_NAME = 'LG webOS Smart TV' SUPPORT_WEBOSTV = SUPPORT_TURN_OFF | \ SUPPORT_NEXT_TRACK | SUPPORT_PAUSE | SUPPORT_PREVIOUS_TRACK | \ SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP | \ - SUPPORT_SELECT_SOURCE | SUPPORT_PLAY_MEDIA + SUPPORT_SELECT_SOURCE | SUPPORT_PLAY_MEDIA | SUPPORT_PLAY MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(seconds=1) diff --git a/homeassistant/components/media_player/yamaha.py b/homeassistant/components/media_player/yamaha.py index 05f60cf06d8..2596e7a4ca9 100644 --- a/homeassistant/components/media_player/yamaha.py +++ b/homeassistant/components/media_player/yamaha.py @@ -11,7 +11,7 @@ import voluptuous as vol from homeassistant.components.media_player import ( SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_SELECT_SOURCE, SUPPORT_PLAY_MEDIA, SUPPORT_PAUSE, SUPPORT_STOP, - SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, + SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_PLAY, MEDIA_TYPE_MUSIC, MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_NAME, CONF_HOST, STATE_OFF, STATE_ON, @@ -23,7 +23,7 @@ REQUIREMENTS = ['rxv==0.4.0'] _LOGGER = logging.getLogger(__name__) SUPPORT_YAMAHA = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ - SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE | SUPPORT_PLAY CONF_SOURCE_NAMES = 'source_names' CONF_SOURCE_IGNORE = 'source_ignore' @@ -184,7 +184,7 @@ class YamahaDevice(MediaPlayerDevice): supported_commands = SUPPORT_YAMAHA supports = self._receiver.get_playback_support() - mapping = {'play': SUPPORT_PLAY_MEDIA, + mapping = {'play': (SUPPORT_PLAY | SUPPORT_PLAY_MEDIA), 'pause': SUPPORT_PAUSE, 'stop': SUPPORT_STOP, 'skip_f': SUPPORT_NEXT_TRACK, diff --git a/tests/components/media_player/test_soundtouch.py b/tests/components/media_player/test_soundtouch.py index 16f1065767a..69d80e30f59 100644 --- a/tests/components/media_player/test_soundtouch.py +++ b/tests/components/media_player/test_soundtouch.py @@ -318,7 +318,7 @@ class TestSoundtouchMediaPlayer(unittest.TestCase): default_component(), mock.MagicMock()) self.assertEqual(mocked_sountouch_device.call_count, 1) - self.assertEqual(soundtouch.DEVICES[0].supported_media_commands, 1469) + self.assertEqual(soundtouch.DEVICES[0].supported_media_commands, 17853) @mock.patch('libsoundtouch.device.SoundTouchDevice.power_off') @mock.patch('libsoundtouch.device.SoundTouchDevice.volume') From 5983dc232f093c1351dcce4bbb70630484fa4609 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus.schoutsen@mycase.com> Date: Mon, 9 Jan 2017 01:14:13 +0100 Subject: [PATCH 120/189] Update frontend --- homeassistant/components/frontend/version.py | 18 +++++++++--------- .../components/frontend/www_static/core.js | 8 ++++---- .../components/frontend/www_static/core.js.gz | Bin 32904 -> 32917 bytes .../frontend/www_static/frontend.html | 4 ++-- .../frontend/www_static/frontend.html.gz | Bin 131102 -> 131138 bytes .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-dev-event.html | 2 +- .../panels/ha-panel-dev-event.html.gz | Bin 2656 -> 2719 bytes .../www_static/panels/ha-panel-dev-info.html | 2 +- .../panels/ha-panel-dev-info.html.gz | Bin 1343 -> 1341 bytes .../panels/ha-panel-dev-service.html | 2 +- .../panels/ha-panel-dev-service.html.gz | Bin 17796 -> 17837 bytes .../www_static/panels/ha-panel-dev-state.html | 2 +- .../panels/ha-panel-dev-state.html.gz | Bin 2811 -> 2880 bytes .../panels/ha-panel-dev-template.html | 2 +- .../panels/ha-panel-dev-template.html.gz | Bin 7309 -> 7366 bytes .../www_static/panels/ha-panel-history.html | 2 +- .../panels/ha-panel-history.html.gz | Bin 6844 -> 6791 bytes .../www_static/panels/ha-panel-logbook.html | 2 +- .../panels/ha-panel-logbook.html.gz | Bin 7322 -> 7322 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2323 -> 2323 bytes 22 files changed, 24 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index ba7937662a1..3cae814daff 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,18 +1,18 @@ """DO NOT MODIFY. Auto-generated by script/fingerprint_frontend.""" FINGERPRINTS = { - "core.js": "ad1ebcd0614c98a390d982087a7ca75c", - "frontend.html": "d6132d3aaac78e1a91efe7bc130b6f45", + "core.js": "22d39af274e1d824ca1302e10971f2d8", + "frontend.html": "5aef64bf1b94cc197ac45f87e26f57b5", "mdi.html": "48fcee544a61b668451faf2b7295df70", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", - "panels/ha-panel-dev-event.html": "c2d5ec676be98d4474d19f94d0262c1e", - "panels/ha-panel-dev-info.html": "a9c07bf281fe9791fb15827ec1286825", - "panels/ha-panel-dev-service.html": "ac74f7ce66fd7136d25c914ea12f4351", - "panels/ha-panel-dev-state.html": "65e5f791cc467561719bf591f1386054", - "panels/ha-panel-dev-template.html": "7d744ab7f7c08b6d6ad42069989de400", - "panels/ha-panel-history.html": "8f7b538b7bedc83149112aea9c11b77a", + "panels/ha-panel-dev-event.html": "f19840b9a6a46f57cb064b384e1353f5", + "panels/ha-panel-dev-info.html": "3765a371478cc66d677cf6dcc35267c6", + "panels/ha-panel-dev-service.html": "e32bcd3afdf485417a3e20b4fc760776", + "panels/ha-panel-dev-state.html": "8257d99a38358a150eafdb23fa6727e0", + "panels/ha-panel-dev-template.html": "cbb251acabd5e7431058ed507b70522b", + "panels/ha-panel-history.html": "7baeb4bd7d9ce0def4f95eab6f10812e", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", - "panels/ha-panel-logbook.html": "1a9017aaeaf45453cae0a1a8c56992ad", + "panels/ha-panel-logbook.html": "93de4cee3a2352a6813b5c218421d534", "panels/ha-panel-map.html": "3b0ca63286cbe80f27bd36dbc2434e89", "websocket_test.html": "575de64b431fe11c3785bf96d7813450" } diff --git a/homeassistant/components/frontend/www_static/core.js b/homeassistant/components/frontend/www_static/core.js index 6cab0b713f3..e3134a1ea79 100644 --- a/homeassistant/components/frontend/www_static/core.js +++ b/homeassistant/components/frontend/www_static/core.js @@ -1,4 +1,4 @@ -!(function(){"use strict";function t(t){return t&&t.__esModule?t.default:t}function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}function n(t,e){var n=e.authToken,r=e.host;return xe({authToken:n,host:r,isValidating:!0,isInvalid:!1,errorMessage:""})}function r(){return Ve.getInitialState()}function i(t,e){var n=e.errorMessage;return t.withMutations((function(t){return t.set("isValidating",!1).set("isInvalid",!0).set("errorMessage",n)}))}function o(t,e){var n=e.authToken,r=e.host;return Fe({authToken:n,host:r})}function u(){return Ge.getInitialState()}function a(t,e){var n=e.rememberAuth;return n}function s(t){return t.withMutations((function(t){t.set("isStreaming",!0).set("hasError",!1)}))}function c(t){return t.withMutations((function(t){t.set("isStreaming",!1).set("hasError",!0)}))}function f(){return Xe.getInitialState()}function h(t){return{type:"auth",api_password:t}}function l(){return{type:"get_states"}}function p(){return{type:"get_config"}}function _(){return{type:"get_services"}}function d(){return{type:"get_panels"}}function v(t,e,n){var r={type:"call_service",domain:t,service:e};return n&&(r.service_data=n),r}function y(t){var e={type:"subscribe_events"};return t&&(e.event_type=t),e}function m(t){return{type:"unsubscribe_events",subscription:t}}function g(){return{type:"ping"}}function S(t,e){return{type:"result",success:!1,error:{code:t,message:e}}}function b(t){return t.result}function E(t,e){var n=new tn(t,e);return n.connect()}function I(t,e,n,r){void 0===r&&(r=null);var i=t.evaluate(Mo.authInfo),o=i.host+"/api/"+n;return new Promise(function(t,n){var u=new XMLHttpRequest;u.open(e,o,!0),u.setRequestHeader("X-HA-access",i.authToken),u.onload=function(){var e;try{e="application/json"===u.getResponseHeader("content-type")?JSON.parse(u.responseText):u.responseText}catch(t){e=u.responseText}u.status>199&&u.status<300?t(e):n(e)},u.onerror=function(){return n({})},r?(u.setRequestHeader("Content-Type","application/json;charset=UTF-8"),u.send(JSON.stringify(r))):u.send()})}function O(t,e){var n=e.model,r=e.result,i=e.params,o=n.entity;if(!r)return t;var u=i.replace?sn({}):t.get(o),a=Array.isArray(r)?r:[r],s=n.fromJSON||sn;return t.set(o,u.withMutations((function(t){for(var e=0;e<a.length;e++){var n=s(a[e]);t.set(n.id,n)}})))}function w(t,e){var n=e.model,r=e.params;return t.removeIn([n.entity,r.id])}function T(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function A(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map((function(t){return e[t]}));if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}function D(t){var e={};return e.incrementData=function(e,n,r){void 0===r&&(r={}),C(e,t,r,n)},e.replaceData=function(e,n,r){void 0===r&&(r={}),C(e,t,ln({},r,{replace:!0}),n)},e.removeData=function(e,n){L(e,t,{id:n})},t.fetch&&(e.fetch=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_FETCH_START,{model:t,params:n,method:"fetch"}),t.fetch(e,n).then(C.bind(null,e,t,n),z.bind(null,e,t,n))}),e.fetchAll=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_FETCH_START,{model:t,params:n,method:"fetchAll"}),t.fetchAll(e,n).then(C.bind(null,e,t,ln({},n,{replace:!0})),z.bind(null,e,t,n))},t.save&&(e.save=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_SAVE_START,{params:n}),t.save(e,n).then(R.bind(null,e,t,n),M.bind(null,e,t,n))}),t.delete&&(e.delete=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_DELETE_START,{params:n}),t.delete(e,n).then(L.bind(null,e,t,n),j.bind(null,e,t,n))}),e}function C(t,e,n,r){return t.dispatch(un.API_FETCH_SUCCESS,{model:e,params:n,result:r}),r}function z(t,e,n,r){return t.dispatch(un.API_FETCH_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function R(t,e,n,r){return t.dispatch(un.API_SAVE_SUCCESS,{model:e,params:n,result:r}),r}function M(t,e,n,r){return t.dispatch(un.API_SAVE_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function L(t,e,n,r){return t.dispatch(un.API_DELETE_SUCCESS,{model:e,params:n,result:r}),r}function j(t,e,n,r){return t.dispatch(un.API_DELETE_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function N(t){t.registerStores({restApiCache:cn})}function k(t){return[["restApiCache",t.entity],function(t){return!!t}]}function P(t){return[["restApiCache",t.entity],function(t){return t||pn({})}]}function U(t){return function(e){return["restApiCache",t.entity,e]}}function H(t){return new Date(t)}function x(t,e){var n=e.message;return t.set(t.size,n)}function V(){return kn.getInitialState()}function q(t,e){t.dispatch(Ln.NOTIFICATION_CREATED,{message:e})}function F(t){t.registerStores({notifications:kn})}function G(t,e){if("lock"===t)return!0;if("garage_door"===t)return!0;var n=e.get(t);return!!n&&n.services.has("turn_on")}function K(t,e){return!!t&&("group"===t.domain?"on"===t.state||"off"===t.state:G(t.domain,e))}function B(t,e){return[Qn(t),function(t){return!!t&&t.services.has(e)}]}function Y(t){return[Rn.byId(t),Xn,K]}function J(t,e){var n=e.component;return t.push(n)}function W(t,e){var n=e.components;return yr(n)}function X(){return mr.getInitialState()}function Q(t,e){var n=e.latitude,r=e.longitude,i=e.location_name,o=e.unit_system,u=e.time_zone,a=e.config_dir,s=e.version;return Sr({latitude:n,longitude:r,location_name:i,unit_system:o,time_zone:u,config_dir:a,serverVersion:s})}function Z(){return br.getInitialState()}function $(t,e){t.dispatch(dr.SERVER_CONFIG_LOADED,e)}function tt(t){on(t,"GET","config").then((function(e){return $(t,e)}))}function et(t,e){t.dispatch(dr.COMPONENT_LOADED,{component:e})}function nt(t){return[["serverComponent"],function(e){return e.contains(t)}]}function rt(t){t.registerStores({serverComponent:mr,serverConfig:br})}function it(t,e){var n=e.pane;return n}function ot(){return Lr.getInitialState()}function ut(t,e){var n=e.panels;return Nr(n)}function at(){return kr.getInitialState()}function st(t,e){var n=e.show;return!!n}function ct(){return Ur.getInitialState()}function ft(t,e){t.dispatch(Rr.SHOW_SIDEBAR,{show:e})}function ht(t,e){t.dispatch(Rr.NAVIGATE,{pane:e})}function lt(t,e){t.dispatch(Rr.PANELS_LOADED,{panels:e})}function pt(t,e){var n=e.entityId;return n}function _t(){return Yr.getInitialState()}function dt(t,e){t.dispatch(Kr.SELECT_ENTITY,{entityId:e})}function vt(t){t.dispatch(Kr.SELECT_ENTITY,{entityId:null})}function yt(t){return!t||(new Date).getTime()-t>6e4}function mt(t,e){var n=e.date;return n.toISOString()}function gt(){return Qr.getInitialState()}function St(t,e){var n=e.date,r=e.stateHistory;return 0===r.length?t.set(n,$r({})):t.withMutations((function(t){r.forEach((function(e){return t.setIn([n,e[0].entity_id],$r(e.map(In.fromJSON)))}))}))}function bt(){return ti.getInitialState()}function Et(t,e){var n=e.stateHistory;return t.withMutations((function(t){n.forEach((function(e){return t.set(e[0].entity_id,ii(e.map(In.fromJSON)))}))}))}function It(){return oi.getInitialState()}function Ot(t,e){var n=e.stateHistory,r=(new Date).getTime();return t.withMutations((function(t){n.forEach((function(e){return t.set(e[0].entity_id,r)})),history.length>1&&t.set(si,r)}))}function wt(){return ci.getInitialState()}function Tt(t,e){t.dispatch(Wr.ENTITY_HISTORY_DATE_SELECTED,{date:e})}function At(t,e){void 0===e&&(e=null),t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_START,{});var n="history/period";return null!==e&&(n+="?filter_entity_id="+e),on(t,"GET",n).then((function(e){return t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,{stateHistory:e})}),(function(){return t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_ERROR,{})}))}function Dt(t,e){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_START,{date:e}),on(t,"GET","history/period/"+e).then((function(n){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_SUCCESS,{date:e,stateHistory:n})}),(function(){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_ERROR,{})}))}function Ct(t){var e=t.evaluate(li);return Dt(t,e)}function zt(t){t.registerStores({currentEntityHistoryDate:Qr,entityHistory:ti,isLoadingEntityHistory:ni,recentEntityHistory:oi,recentEntityHistoryUpdated:ci})}function Rt(t){t.registerStores({moreInfoEntityId:Yr})}function Mt(t,e){var n=e.model,r=e.result,i=e.params;if(null===t||"entity"!==n.entity||!i.replace)return t;for(var o=0;o<r.length;o++)if(r[o].entity_id===t)return t;return null}function Lt(t,e){t.dispatch(Mi.SELECT_VIEW,{view:e})}function jt(t,e,n,r){void 0===r&&(r=!0),n.attributes.entity_id.forEach((function(n){if(!t.has(n)){var i=e.get(n);i&&!i.attributes.hidden&&(t.set(n,i),"group"===i.domain&&r&&jt(t,e,i,!1))}}))}function Nt(t){t.registerStores({currentView:ji})}function kt(t){return Ji[t.hassId]}function Pt(t,e){var n={pane:t};return"states"===t&&(n.view=e||null),n}function Ut(t,e){return"states"===t&&e?"/"+t+"/"+e:"/"+t}function Ht(t){var e,n;if("/"===window.location.pathname)e=t.evaluate(Vr),n=t.evaluate(Gi.currentView);else{var r=window.location.pathname.substr(1).split("/");e=r[0],n=r[1],t.batch((function(){ht(t,e),n&&Fi.selectView(t,n)}))}history.replaceState(Pt(e,n),Yi,Ut(e,n))}function xt(t,e){var n=e.state,r=n.pane,i=n.view;t.evaluate(zi.hasCurrentEntityId)?(kt(t).ignoreNextDeselectEntity=!0,Ci.deselectEntity(t)):r===t.evaluate(Vr)&&i===t.evaluate(Gi.currentView)||t.batch((function(){ht(t,r),void 0!==i&&Fi.selectView(t,i)}))}function Vt(t){if(Bi){Ht(t);var e={ignoreNextDeselectEntity:!1,popstateChangeListener:xt.bind(null,t),unwatchNavigationObserver:t.observe(Vr,(function(t){t!==history.state.pane&&history.pushState(Pt(t,history.state.view),Yi,Ut(t,history.state.view))})),unwatchViewObserver:t.observe(Gi.currentView,(function(t){t!==history.state.view&&history.pushState(Pt(history.state.pane,t),Yi,Ut(history.state.pane,t))})),unwatchMoreInfoObserver:t.observe(zi.hasCurrentEntityId,(function(t){t?history.pushState(history.state,Yi,window.location.pathname):e.ignoreNextDeselectEntity?e.ignoreNextDeselectEntity=!1:setTimeout((function(){return history.back()}),0)}))};Ji[t.hassId]=e,window.addEventListener("popstate",e.popstateChangeListener)}}function qt(t){if(Bi){var e=kt(t);e&&(e.unwatchNavigationObserver(),e.unwatchViewObserver(),e.unwatchMoreInfoObserver(),window.removeEventListener("popstate",e.popstateChangeListener),Ji[t.hassId]=!1)}}function Ft(t){t.registerStores({currentPanel:Lr,panels:kr,showSidebar:Ur})}function Gt(t){return t.dispatch(en.API_FETCH_ALL_START,{}),on(t,"GET","bootstrap").then((function(e){t.batch((function(){zn.replaceData(t,e.states),tr.replaceData(t,e.services),lr.replaceData(t,e.events),Dr.configLoaded(t,e.config),Xi.panelsLoaded(t,e.panels),t.dispatch(en.API_FETCH_ALL_SUCCESS,{})}))}),(function(e){return t.dispatch(en.API_FETCH_ALL_FAIL,{message:e}),Promise.reject(e)}))}function Kt(t){t.registerStores({isFetchingData:rn})}function Bt(t,e,n){function r(){var c=(new Date).getTime()-a;c<e&&c>0?i=setTimeout(r,e-c):(i=null,n||(s=t.apply(u,o),i||(u=o=null)))}var i,o,u,a,s;null==e&&(e=100);var c=function(){u=this,o=arguments,a=(new Date).getTime();var c=n&&!i;return i||(i=setTimeout(r,e)),c&&(s=t.apply(u,o),u=o=null),s};return c.clear=function(){i&&(clearTimeout(i),i=null)},c}function Yt(t){var e=fo[t.hassId];e&&(e.scheduleHealthCheck.clear(),e.conn.close(),fo[t.hassId]=!1)}function Jt(t,e){void 0===e&&(e={});var n=e.syncOnInitialConnect;void 0===n&&(n=!0),Yt(t);var r=t.evaluate(Mo.authToken),i="https:"===document.location.protocol?"wss://":"ws://";i+=document.location.hostname,document.location.port&&(i+=":"+document.location.port),i+="/api/websocket",E(i,{authToken:r}).then((function(e){var r=Bt((function(){return e.ping()}),so);r(),e.socket.addEventListener("message",r),fo[t.hassId]={conn:e,scheduleHealthCheck:r},co.forEach((function(n){return e.subscribeEvents(ao.bind(null,t),n)})),t.batch((function(){t.dispatch(Ye.STREAM_START),n&&io.fetchAll(t)})),e.addEventListener("disconnected",(function(){t.dispatch(Ye.STREAM_ERROR)})),e.addEventListener("ready",(function(){t.batch((function(){t.dispatch(Ye.STREAM_START),io.fetchAll(t)}))}))}))}function Wt(t){t.registerStores({streamStatus:Xe})}function Xt(t,e,n){void 0===n&&(n={});var r=n.rememberAuth;void 0===r&&(r=!1);var i=n.host;void 0===i&&(i=""),t.dispatch(Ue.VALIDATING_AUTH_TOKEN,{authToken:e,host:i}),io.fetchAll(t).then((function(){t.dispatch(Ue.VALID_AUTH_TOKEN,{authToken:e,host:i,rememberAuth:r}),vo.start(t,{syncOnInitialConnect:!1})}),(function(e){void 0===e&&(e={});var n=e.message;void 0===n&&(n=go),t.dispatch(Ue.INVALID_AUTH_TOKEN,{errorMessage:n})}))}function Qt(t){t.dispatch(Ue.LOG_OUT,{})}function Zt(t){t.registerStores({authAttempt:Ve,authCurrent:Ge,rememberAuth:Be})}function $t(){if(!("localStorage"in window))return{};var t=window.localStorage,e="___test";try{return t.setItem(e,e),t.removeItem(e),t}catch(t){return{}}}function te(){var t=new Uo({debug:!1});return t.hassId=Ho++,t}function ee(t,e,n){Object.keys(n).forEach((function(r){var i=n[r];if("register"in i&&i.register(e),"getters"in i&&Object.defineProperty(t,r+"Getters",{value:i.getters,enumerable:!0}),"actions"in i){var o={};Object.getOwnPropertyNames(i.actions).forEach((function(t){"function"==typeof i.actions[t]&&Object.defineProperty(o,t,{value:i.actions[t].bind(null,e),enumerable:!0})})),Object.defineProperty(t,r+"Actions",{value:o,enumerable:!0})}}))}function ne(t,e){return xo(t.attributes.entity_id.map((function(t){return e.get(t)})).filter((function(t){return!!t})))}function re(t){return on(t,"GET","error_log")}function ie(t,e){var n=e.date;return n.toISOString()}function oe(){return Jo.getInitialState()}function ue(t,e){var n=e.date,r=e.entries;return t.set(n,eu(r.map($o.fromJSON)))}function ae(){return nu.getInitialState()}function se(t,e){var n=e.date;return t.set(n,(new Date).getTime())}function ce(){return ou.getInitialState()}function fe(t,e){t.dispatch(Bo.LOGBOOK_DATE_SELECTED,{date:e})}function he(t,e){t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_START,{date:e}),on(t,"GET","logbook/"+e).then((function(n){return t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,{date:e,entries:n})}),(function(){return t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_ERROR,{})}))}function le(t){return!t||(new Date).getTime()-t>su}function pe(t){t.registerStores({currentLogbookDate:Jo,isLoadingLogbookEntries:Xo,logbookEntries:nu,logbookEntriesUpdated:ou})}function _e(t){return t.set("active",!0)}function de(t){return t.set("active",!1)}function ve(){return Su.getInitialState()}function ye(t){return navigator.serviceWorker.getRegistration().then((function(t){if(!t)throw new Error("No service worker registered.");return t.pushManager.subscribe({userVisibleOnly:!0})})).then((function(e){var n;return n=navigator.userAgent.toLowerCase().indexOf("firefox")>-1?"firefox":"chrome",on(t,"POST","notify.html5",{subscription:e,browser:n}).then((function(){return t.dispatch(yu.PUSH_NOTIFICATIONS_SUBSCRIBE,{})})).then((function(){return!0}))})).catch((function(e){var n;return n=e.message&&e.message.indexOf("gcm_sender_id")!==-1?"Please setup the notify.html5 platform.":"Notification registration failed.",console.error(e),Vn.createNotification(t,n),!1}))}function me(t){return navigator.serviceWorker.getRegistration().then((function(t){if(!t)throw new Error("No service worker registered");return t.pushManager.subscribe({userVisibleOnly:!0})})).then((function(e){return on(t,"DELETE","notify.html5",{subscription:e}).then((function(){return e.unsubscribe()})).then((function(){return t.dispatch(yu.PUSH_NOTIFICATIONS_UNSUBSCRIBE,{})})).then((function(){return!0}))})).catch((function(e){var n="Failed unsubscribing for push notifications.";return console.error(e),Vn.createNotification(t,n),!1}))}function ge(t){t.registerStores({pushNotifications:Su})}function Se(t,e){return on(t,"POST","template",{template:e})}function be(t){return t.set("isListening",!0)}function Ee(t,e){var n=e.interimTranscript,r=e.finalTranscript;return t.withMutations((function(t){return t.set("isListening",!0).set("isTransmitting",!1).set("interimTranscript",n).set("finalTranscript",r)}))}function Ie(t,e){var n=e.finalTranscript;return t.withMutations((function(t){return t.set("isListening",!1).set("isTransmitting",!0).set("interimTranscript","").set("finalTranscript",n)}))}function Oe(){return ku.getInitialState()}function we(){return ku.getInitialState()}function Te(){return ku.getInitialState()}function Ae(t){return Pu[t.hassId]}function De(t){var e=Ae(t);if(e){var n=e.finalTranscript||e.interimTranscript;t.dispatch(Lu.VOICE_TRANSMITTING,{finalTranscript:n}),tr.callService(t,"conversation","process",{text:n}).then((function(){t.dispatch(Lu.VOICE_DONE)}),(function(){t.dispatch(Lu.VOICE_ERROR)}))}}function Ce(t){var e=Ae(t);e&&(e.recognition.stop(),Pu[t.hassId]=!1)}function ze(t){De(t),Ce(t)}function Re(t){var e=ze.bind(null,t);e();var n=new webkitSpeechRecognition;Pu[t.hassId]={recognition:n,interimTranscript:"",finalTranscript:""},n.interimResults=!0,n.onstart=function(){return t.dispatch(Lu.VOICE_START)},n.onerror=function(){return t.dispatch(Lu.VOICE_ERROR)},n.onend=e,n.onresult=function(e){var n=Ae(t);if(n){for(var r="",i="",o=e.resultIndex;o<e.results.length;o++)e.results[o].isFinal?r+=e.results[o][0].transcript:i+=e.results[o][0].transcript;n.interimTranscript=i,n.finalTranscript+=r,t.dispatch(Lu.VOICE_RESULT,{interimTranscript:i,finalTranscript:n.finalTranscript})}},n.start()}function Me(t){t.registerStores({currentVoiceCommand:ku,isVoiceSupported:Mu})}var Le="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},je=e((function(t,e){!(function(n,r){"object"==typeof e&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof e?e.Nuclear=r():n.Nuclear=r()})(Le,(function(){return (function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)})([function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),n(1);var i=n(2),o=r(i),u=n(6),a=r(u),s=n(3),c=r(s),f=n(5),h=n(11),l=n(10),p=n(7),_=r(p);e.default={Reactor:a.default,Store:o.default,Immutable:c.default,isKeyPath:h.isKeyPath,isGetter:l.isGetter,toJS:f.toJS,toImmutable:f.toImmutable,isImmutable:f.isImmutable,createReactMixin:_.default},t.exports=e.default},function(t,e){try{window.console&&console.log||(console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){}})}catch(t){}},function(t,e,n){function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t){return t instanceof c}Object.defineProperty(e,"__esModule",{value:!0});var o=(function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}})();e.isStore=i;var u=n(3),a=n(4),s=n(5),c=(function(){function t(e){r(this,t),this.__handlers=(0,u.Map)({}),e&&(0,a.extend)(this,e),this.initialize()}return o(t,[{key:"initialize",value:function(){}},{key:"getInitialState",value:function(){return(0,u.Map)()}},{key:"handle",value:function(t,e,n){var r=this.__handlers.get(e);return"function"==typeof r?r.call(this,t,n,e):t}},{key:"handleReset",value:function(t){return this.getInitialState()}},{key:"on",value:function(t,e){this.__handlers=this.__handlers.set(t,e)}},{key:"serialize",value:function(t){return(0,s.toJS)(t)}},{key:"deserialize",value:function(t){return(0,s.toImmutable)(t)}}]),t})();e.default=(0,a.toFactory)(c)},function(t,e,n){!(function(e,n){t.exports=n()})(this,(function(){function t(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function e(t){return t.value=!1,t}function n(t){t&&(t.value=!0)}function r(){}function i(t,e){e=e||0;for(var n=Math.max(0,t.length-e),r=new Array(n),i=0;i<n;i++)r[i]=t[i+e];return r}function o(t){return void 0===t.size&&(t.size=t.__iterate(a)),t.size}function u(t,e){if("number"!=typeof e){var n=+e;if(""+n!==e)return NaN;e=n}return e<0?o(t)+e:e}function a(){return!0}function s(t,e,n){return(0===t||void 0!==n&&t<=-n)&&(void 0===e||void 0!==n&&e>=n)}function c(t,e){return h(t,e,0)}function f(t,e){return h(t,e,e)}function h(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function l(t){return v(t)?t:C(t)}function p(t){return y(t)?t:z(t)}function _(t){return m(t)?t:R(t)}function d(t){return v(t)&&!g(t)?t:M(t)}function v(t){return!(!t||!t[dn])}function y(t){return!(!t||!t[vn])}function m(t){return!(!t||!t[yn])}function g(t){return y(t)||m(t)}function S(t){return!(!t||!t[mn])}function b(t){this.next=t}function E(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function I(){return{value:void 0,done:!0}}function O(t){return!!A(t)}function w(t){return t&&"function"==typeof t.next}function T(t){var e=A(t);return e&&e.call(t)}function A(t){var e=t&&(En&&t[En]||t[In]);if("function"==typeof e)return e}function D(t){return t&&"number"==typeof t.length}function C(t){return null===t||void 0===t?U():v(t)?t.toSeq():V(t)}function z(t){return null===t||void 0===t?U().toKeyedSeq():v(t)?y(t)?t.toSeq():t.fromEntrySeq():H(t)}function R(t){return null===t||void 0===t?U():v(t)?y(t)?t.entrySeq():t.toIndexedSeq():x(t)}function M(t){return(null===t||void 0===t?U():v(t)?y(t)?t.entrySeq():t:x(t)).toSetSeq()}function L(t){this._array=t,this.size=t.length}function j(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function N(t){this._iterable=t,this.size=t.length||t.size}function k(t){this._iterator=t,this._iteratorCache=[]}function P(t){return!(!t||!t[wn])}function U(){return Tn||(Tn=new L([]))}function H(t){var e=Array.isArray(t)?new L(t).fromEntrySeq():w(t)?new k(t).fromEntrySeq():O(t)?new N(t).fromEntrySeq():"object"==typeof t?new j(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function x(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function V(t){var e=q(t)||"object"==typeof t&&new j(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return D(t)?new L(t):w(t)?new k(t):O(t)?new N(t):void 0}function F(t,e,n,r){var i=t._cache;if(i){for(var o=i.length-1,u=0;u<=o;u++){var a=i[n?o-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function G(t,e,n,r){var i=t._cache;if(i){var o=i.length-1,u=0;return new b(function(){var t=i[n?o-u:u];return u++>o?I():E(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function K(){throw TypeError("Abstract")}function B(){}function Y(){}function J(){}function W(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function X(t,e){return e?Q(e,t,"",{"":t}):Z(t)}function Q(t,e,n,r){return Array.isArray(e)?t.call(r,n,R(e).map((function(n,r){return Q(t,n,r,e)}))):$(e)?t.call(r,n,z(e).map((function(n,r){return Q(t,n,r,e)}))):e}function Z(t){return Array.isArray(t)?R(t).map(Z).toList():$(t)?z(t).map(Z).toMap():t}function $(t){return t&&(t.constructor===Object||void 0===t.constructor)}function tt(t){return t>>>1&1073741824|3221225471&t}function et(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return tt(n)}return"string"===e?t.length>jn?nt(t):rt(t):"function"==typeof t.hashCode?t.hashCode():it(t)}function nt(t){var e=Pn[t];return void 0===e&&(e=rt(t),kn===Nn&&(kn=0,Pn={}),kn++,Pn[t]=e),e}function rt(t){for(var e=0,n=0;n<t.length;n++)e=31*e+t.charCodeAt(n)|0;return tt(e)}function it(t){var e;if(Rn&&(e=An.get(t),void 0!==e))return e;if(e=t[Ln],void 0!==e)return e;if(!zn){if(e=t.propertyIsEnumerable&&t.propertyIsEnumerable[Ln],void 0!==e)return e;if(e=ot(t),void 0!==e)return e}if(e=++Mn,1073741824&Mn&&(Mn=0),Rn)An.set(t,e);else{if(void 0!==Cn&&Cn(t)===!1)throw new Error("Non-extensible objects are not allowed as keys.");if(zn)Object.defineProperty(t,Ln,{enumerable:!1,configurable:!1,writable:!1,value:e});else if(void 0!==t.propertyIsEnumerable&&t.propertyIsEnumerable===t.constructor.prototype.propertyIsEnumerable)t.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},t.propertyIsEnumerable[Ln]=e;else{if(void 0===t.nodeType)throw new Error("Unable to set a non-enumerable property on object.");t[Ln]=e}}return e}function ot(t){if(t&&t.nodeType>0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ut(t,e){if(!t)throw new Error(e)}function at(t){ut(t!==1/0,"Cannot perform this action with an infinite size.")}function st(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ct(t){this._iter=t,this.size=t.size}function ft(t){this._iter=t,this.size=t.size}function ht(t){this._iter=t,this.size=t.size}function lt(t){var e=Lt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=jt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate((function(t,n){return e(n,t,r)!==!1}),n)},e.__iteratorUncached=function(e,n){if(e===bn){var r=t.__iterator(e,n);return new b(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===Sn?gn:Sn,n)},e}function pt(t,e,n){var r=Lt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,ln);return o===ln?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate((function(t,i,u){return r(e.call(n,t,i,u),i,o)!==!1}),i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(bn,i);return new b(function(){var i=o.next();if(i.done)return i;var u=i.value,a=u[0];return E(r,a,e.call(n,u[1],a,t),i)})},r}function _t(t,e){var n=Lt(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=lt(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=jt,n.__iterate=function(e,n){var r=this;return t.__iterate((function(t,n){return e(t,n,r)}),!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function dt(t,e,n,r){var i=Lt(t);return r&&(i.has=function(r){var i=t.get(r,ln);return i!==ln&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,ln);return o!==ln&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,a=0;return t.__iterate((function(t,o,s){if(e.call(n,t,o,s))return a++,i(t,r?o:a-1,u)}),o),a},i.__iteratorUncached=function(i,o){var u=t.__iterator(bn,o),a=0;return new b(function(){for(;;){var o=u.next();if(o.done)return o;var s=o.value,c=s[0],f=s[1];if(e.call(n,f,c,t))return E(i,r?c:a++,f,o)}})},i}function vt(t,e,n){var r=Pt().asMutable();return t.__iterate((function(i,o){r.update(e.call(n,i,o,t),0,(function(t){return t+1}))})),r.asImmutable()}function yt(t,e,n){var r=y(t),i=(S(t)?Ie():Pt()).asMutable();t.__iterate((function(o,u){i.update(e.call(n,o,u,t),(function(t){return t=t||[],t.push(r?[u,o]:o),t}))}));var o=Mt(t);return i.map((function(e){return Ct(t,o(e))}))}function mt(t,e,n,r){var i=t.size;if(void 0!==e&&(e|=0),void 0!==n&&(n|=0),s(e,n,i))return t;var o=c(e,i),a=f(n,i);if(o!==o||a!==a)return mt(t.toSeq().cacheResult(),e,n,r);var h,l=a-o;l===l&&(h=l<0?0:l);var p=Lt(t);return p.size=0===h?h:t.size&&h||void 0,!r&&P(t)&&h>=0&&(p.get=function(e,n){return e=u(this,e),e>=0&&e<h?t.get(e+o,n):n}),p.__iterateUncached=function(e,n){var i=this;if(0===h)return 0;if(n)return this.cacheResult().__iterate(e,n);var u=0,a=!0,s=0;return t.__iterate((function(t,n){if(!a||!(a=u++<o))return s++,e(t,r?n:s-1,i)!==!1&&s!==h})),s},p.__iteratorUncached=function(e,n){if(0!==h&&n)return this.cacheResult().__iterator(e,n);var i=0!==h&&t.__iterator(e,n),u=0,a=0;return new b(function(){for(;u++<o;)i.next();if(++a>h)return I();var t=i.next();return r||e===Sn?t:e===gn?E(e,a-1,void 0,t):E(e,a-1,t.value[1],t)})},p}function gt(t,e,n){var r=Lt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var u=0;return t.__iterate((function(t,i,a){return e.call(n,t,i,a)&&++u&&r(t,i,o)})),u},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var u=t.__iterator(bn,i),a=!0;return new b(function(){if(!a)return I();var t=u.next();if(t.done)return t;var i=t.value,s=i[0],c=i[1];return e.call(n,c,s,o)?r===bn?t:E(r,s,c,t):(a=!1,I())})},r}function St(t,e,n,r){var i=Lt(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var a=!0,s=0;return t.__iterate((function(t,o,c){if(!a||!(a=e.call(n,t,o,c)))return s++,i(t,r?o:s-1,u)})),s},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var a=t.__iterator(bn,o),s=!0,c=0;return new b(function(){var t,o,f;do{if(t=a.next(),t.done)return r||i===Sn?t:i===gn?E(i,c++,void 0,t):E(i,c++,t.value[1],t);var h=t.value;o=h[0],f=h[1],s&&(s=e.call(n,f,o,u))}while(s);return i===bn?t:E(i,o,f,t)})},i}function bt(t,e){var n=y(t),r=[t].concat(e).map((function(t){return v(t)?n&&(t=p(t)):t=n?H(t):x(Array.isArray(t)?t:[t]),t})).filter((function(t){return 0!==t.size}));if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&y(i)||m(t)&&m(i))return i}var o=new L(r);return n?o=o.toKeyedSeq():m(t)||(o=o.toSetSeq()),o=o.flatten(!0),o.size=r.reduce((function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}}),0),o}function Et(t,e,n){var r=Lt(t);return r.__iterateUncached=function(r,i){function o(t,s){var c=this;t.__iterate((function(t,i){return(!e||s<e)&&v(t)?o(t,s+1):r(t,n?i:u++,c)===!1&&(a=!0),!a}),i)}var u=0,a=!1;return o(t,0),u},r.__iteratorUncached=function(r,i){var o=t.__iterator(r,i),u=[],a=0;return new b(function(){for(;o;){var t=o.next();if(t.done===!1){var s=t.value;if(r===bn&&(s=s[1]),e&&!(u.length<e)||!v(s))return n?t:E(r,a++,s,t);u.push(o),o=s.__iterator(r,i)}else o=u.pop()}return I()})},r}function It(t,e,n){var r=Mt(t);return t.toSeq().map((function(i,o){return r(e.call(n,i,o,t))})).flatten(!0)}function Ot(t,e){var n=Lt(t);return n.size=t.size&&2*t.size-1,n.__iterateUncached=function(n,r){var i=this,o=0;return t.__iterate((function(t,r){return(!o||n(e,o++,i)!==!1)&&n(t,o++,i)!==!1}),r),o},n.__iteratorUncached=function(n,r){var i,o=t.__iterator(Sn,r),u=0;return new b(function(){return(!i||u%2)&&(i=o.next(),i.done)?i:u%2?E(n,u++,e):E(n,u++,i.value,i)})},n}function wt(t,e,n){e||(e=Nt);var r=y(t),i=0,o=t.toSeq().map((function(e,r){return[r,e,i++,n?n(e,r,t):e]})).toArray();return o.sort((function(t,n){return e(t[3],n[3])||t[2]-n[2]})).forEach(r?function(t,e){o[e].length=2}:function(t,e){o[e]=t[1]}),r?z(o):m(t)?R(o):M(o)}function Tt(t,e,n){if(e||(e=Nt),n){var r=t.toSeq().map((function(e,r){return[e,n(e,r,t)]})).reduce((function(t,n){return At(e,t[1],n[1])?n:t}));return r&&r[0]}return t.reduce((function(t,n){return At(e,t,n)?n:t}))}function At(t,e,n){var r=t(n,e);return 0===r&&n!==e&&(void 0===n||null===n||n!==n)||r>0}function Dt(t,e,n){var r=Lt(t);return r.size=new L(n).map((function(t){return t.size})).min(),r.__iterate=function(t,e){for(var n,r=this,i=this.__iterator(Sn,e),o=0;!(n=i.next()).done&&t(n.value,o++,r)!==!1;);return o},r.__iteratorUncached=function(t,r){var i=n.map((function(t){return t=l(t),T(r?t.reverse():t)})),o=0,u=!1; -return new b(function(){var n;return u||(n=i.map((function(t){return t.next()})),u=n.some((function(t){return t.done}))),u?I():E(t,o++,e.apply(null,n.map((function(t){return t.value}))))})},r}function Ct(t,e){return P(t)?e:t.constructor(e)}function zt(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Rt(t){return at(t.size),o(t)}function Mt(t){return y(t)?p:m(t)?_:d}function Lt(t){return Object.create((y(t)?z:m(t)?R:M).prototype)}function jt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):C.prototype.cacheResult.call(this)}function Nt(t,e){return t>e?1:t<e?-1:0}function kt(t){var e=T(t);if(!e){if(!D(t))throw new TypeError("Expected iterable or array-like: "+t);e=T(l(t))}return e}function Pt(t){return null===t||void 0===t?Jt():Ut(t)&&!S(t)?t:Jt().withMutations((function(e){var n=p(t);at(n.size),n.forEach((function(t,n){return e.set(n,t)}))}))}function Ut(t){return!(!t||!t[Un])}function Ht(t,e){this.ownerID=t,this.entries=e}function xt(t,e,n){this.ownerID=t,this.bitmap=e,this.nodes=n}function Vt(t,e,n){this.ownerID=t,this.count=e,this.nodes=n}function qt(t,e,n){this.ownerID=t,this.keyHash=e,this.entries=n}function Ft(t,e,n){this.ownerID=t,this.keyHash=e,this.entry=n}function Gt(t,e,n){this._type=e,this._reverse=n,this._stack=t._root&&Bt(t._root)}function Kt(t,e){return E(t,e[0],e[1])}function Bt(t,e){return{node:t,index:0,__prev:e}}function Yt(t,e,n,r){var i=Object.create(Hn);return i.size=t,i._root=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Jt(){return xn||(xn=Yt(0))}function Wt(t,n,r){var i,o;if(t._root){var u=e(pn),a=e(_n);if(i=Xt(t._root,t.__ownerID,0,void 0,n,r,u,a),!a.value)return t;o=t.size+(u.value?r===ln?-1:1:0)}else{if(r===ln)return t;o=1,i=new Ht(t.__ownerID,[[n,r]])}return t.__ownerID?(t.size=o,t._root=i,t.__hash=void 0,t.__altered=!0,t):i?Yt(o,i):Jt()}function Xt(t,e,r,i,o,u,a,s){return t?t.update(e,r,i,o,u,a,s):u===ln?t:(n(s),n(a),new Ft(e,i,[o,u]))}function Qt(t){return t.constructor===Ft||t.constructor===qt}function Zt(t,e,n,r,i){if(t.keyHash===r)return new qt(e,r,[t.entry,i]);var o,u=(0===n?t.keyHash:t.keyHash>>>n)&hn,a=(0===n?r:r>>>n)&hn,s=u===a?[Zt(t,e,n+cn,r,i)]:(o=new Ft(e,r,i),u<a?[t,o]:[o,t]);return new xt(e,1<<u|1<<a,s)}function $t(t,e,n,i){t||(t=new r);for(var o=new Ft(t,et(n),[n,i]),u=0;u<e.length;u++){var a=e[u];o=o.update(t,0,void 0,a[0],a[1])}return o}function te(t,e,n,r){for(var i=0,o=0,u=new Array(n),a=0,s=1,c=e.length;a<c;a++,s<<=1){var f=e[a];void 0!==f&&a!==r&&(i|=s,u[o++]=f)}return new xt(t,i,u)}function ee(t,e,n,r,i){for(var o=0,u=new Array(fn),a=0;0!==n;a++,n>>>=1)u[a]=1&n?e[o++]:void 0;return u[r]=i,new Vt(t,o+1,u)}function ne(t,e,n){for(var r=[],i=0;i<n.length;i++){var o=n[i],u=p(o);v(o)||(u=u.map((function(t){return X(t)}))),r.push(u)}return ie(t,e,r)}function re(t){return function(e,n,r){return e&&e.mergeDeepWith&&v(n)?e.mergeDeepWith(t,n):t?t(e,n,r):n}}function ie(t,e,n){return n=n.filter((function(t){return 0!==t.size})),0===n.length?t:0!==t.size||t.__ownerID||1!==n.length?t.withMutations((function(t){for(var r=e?function(n,r){t.update(r,ln,(function(t){return t===ln?n:e(t,n,r)}))}:function(e,n){t.set(n,e)},i=0;i<n.length;i++)n[i].forEach(r)})):t.constructor(n[0])}function oe(t,e,n,r){var i=t===ln,o=e.next();if(o.done){var u=i?n:t,a=r(u);return a===u?t:a}ut(i||t&&t.set,"invalid keyPath");var s=o.value,c=i?ln:t.get(s,ln),f=oe(c,e,n,r);return f===c?t:f===ln?t.remove(s):(i?Jt():t).set(s,f)}function ue(t){return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function ae(t,e,n,r){var o=r?t:i(t);return o[e]=n,o}function se(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),u=0,a=0;a<i;a++)a===e?(o[a]=n,u=-1):o[a]=t[a+u];return o}function ce(t,e,n){var r=t.length-1;if(n&&e===r)return t.pop(),t;for(var i=new Array(r),o=0,u=0;u<r;u++)u===e&&(o=1),i[u]=t[u+o];return i}function fe(t){var e=de();if(null===t||void 0===t)return e;if(he(t))return t;var n=_(t),r=n.size;return 0===r?e:(at(r),r>0&&r<fn?_e(0,r,cn,null,new le(n.toArray())):e.withMutations((function(t){t.setSize(r),n.forEach((function(e,n){return t.set(n,e)}))})))}function he(t){return!(!t||!t[Gn])}function le(t,e){this.array=t,this.ownerID=e}function pe(t,e){function n(t,e,n){return 0===e?r(t,n):i(t,e,n)}function r(t,n){var r=n===a?s&&s.array:t&&t.array,i=n>o?0:o-n,c=u-n;return c>fn&&(c=fn),function(){if(i===c)return Yn;var t=e?--c:i++;return r&&r[t]}}function i(t,r,i){var a,s=t&&t.array,c=i>o?0:o-i>>r,f=(u-i>>r)+1;return f>fn&&(f=fn),function(){for(;;){if(a){var t=a();if(t!==Yn)return t;a=null}if(c===f)return Yn;var o=e?--f:c++;a=n(s&&s[o],r-cn,i+(o<<r))}}}var o=t._origin,u=t._capacity,a=Ee(u),s=t._tail;return n(t._root,t._level,0)}function _e(t,e,n,r,i,o,u){var a=Object.create(Kn);return a.size=e-t,a._origin=t,a._capacity=e,a._level=n,a._root=r,a._tail=i,a.__ownerID=o,a.__hash=u,a.__altered=!1,a}function de(){return Bn||(Bn=_e(0,0,cn))}function ve(t,n,r){if(n=u(t,n),n!==n)return t;if(n>=t.size||n<0)return t.withMutations((function(t){n<0?Se(t,n).set(0,r):Se(t,0,n+1).set(n,r)}));n+=t._origin;var i=t._tail,o=t._root,a=e(_n);return n>=Ee(t._capacity)?i=ye(i,t.__ownerID,0,n,r,a):o=ye(o,t.__ownerID,t._level,n,r,a),a.value?t.__ownerID?(t._root=o,t._tail=i,t.__hash=void 0,t.__altered=!0,t):_e(t._origin,t._capacity,t._level,o,i):t}function ye(t,e,r,i,o,u){var a=i>>>r&hn,s=t&&a<t.array.length;if(!s&&void 0===o)return t;var c;if(r>0){var f=t&&t.array[a],h=ye(f,e,r-cn,i,o,u);return h===f?t:(c=me(t,e),c.array[a]=h,c)}return s&&t.array[a]===o?t:(n(u),c=me(t,e),void 0===o&&a===c.array.length-1?c.array.pop():c.array[a]=o,c)}function me(t,e){return e&&t&&e===t.ownerID?t:new le(t?t.array.slice():[],e)}function ge(t,e){if(e>=Ee(t._capacity))return t._tail;if(e<1<<t._level+cn){for(var n=t._root,r=t._level;n&&r>0;)n=n.array[e>>>r&hn],r-=cn;return n}}function Se(t,e,n){void 0!==e&&(e|=0),void 0!==n&&(n|=0);var i=t.__ownerID||new r,o=t._origin,u=t._capacity,a=o+e,s=void 0===n?u:n<0?u+n:o+n;if(a===o&&s===u)return t;if(a>=s)return t.clear();for(var c=t._level,f=t._root,h=0;a+h<0;)f=new le(f&&f.array.length?[void 0,f]:[],i),c+=cn,h+=1<<c;h&&(a+=h,o+=h,s+=h,u+=h);for(var l=Ee(u),p=Ee(s);p>=1<<c+cn;)f=new le(f&&f.array.length?[f]:[],i),c+=cn;var _=t._tail,d=p<l?ge(t,s-1):p>l?new le([],i):_;if(_&&p>l&&a<u&&_.array.length){f=me(f,i);for(var v=f,y=c;y>cn;y-=cn){var m=l>>>y&hn;v=v.array[m]=me(v.array[m],i)}v.array[l>>>cn&hn]=_}if(s<u&&(d=d&&d.removeAfter(i,0,s)),a>=p)a-=p,s-=p,c=cn,f=null,d=d&&d.removeBefore(i,0,a);else if(a>o||p<l){for(h=0;f;){var g=a>>>c&hn;if(g!==p>>>c&hn)break;g&&(h+=(1<<c)*g),c-=cn,f=f.array[g]}f&&a>o&&(f=f.removeBefore(i,c,a-h)),f&&p<l&&(f=f.removeAfter(i,c,p-h)),h&&(a-=h,s-=h)}return t.__ownerID?(t.size=s-a,t._origin=a,t._capacity=s,t._level=c,t._root=f,t._tail=d,t.__hash=void 0,t.__altered=!0,t):_e(a,s,c,f,d)}function be(t,e,n){for(var r=[],i=0,o=0;o<n.length;o++){var u=n[o],a=_(u);a.size>i&&(i=a.size),v(u)||(a=a.map((function(t){return X(t)}))),r.push(a)}return i>t.size&&(t=t.setSize(i)),ie(t,e,r)}function Ee(t){return t<fn?0:t-1>>>cn<<cn}function Ie(t){return null===t||void 0===t?Te():Oe(t)?t:Te().withMutations((function(e){var n=p(t);at(n.size),n.forEach((function(t,n){return e.set(n,t)}))}))}function Oe(t){return Ut(t)&&S(t)}function we(t,e,n,r){var i=Object.create(Ie.prototype);return i.size=t?t.size:0,i._map=t,i._list=e,i.__ownerID=n,i.__hash=r,i}function Te(){return Jn||(Jn=we(Jt(),de()))}function Ae(t,e,n){var r,i,o=t._map,u=t._list,a=o.get(e),s=void 0!==a;if(n===ln){if(!s)return t;u.size>=fn&&u.size>=2*o.size?(i=u.filter((function(t,e){return void 0!==t&&a!==e})),r=i.toKeyedSeq().map((function(t){return t[0]})).flip().toMap(),t.__ownerID&&(r.__ownerID=i.__ownerID=t.__ownerID)):(r=o.remove(e),i=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=o,i=u.set(a,[e,n])}else r=o.set(e,u.size),i=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=i,t.__hash=void 0,t):we(r,i)}function De(t){return null===t||void 0===t?Re():Ce(t)?t:Re().unshiftAll(t)}function Ce(t){return!(!t||!t[Wn])}function ze(t,e,n,r){var i=Object.create(Xn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Re(){return Qn||(Qn=ze(0))}function Me(t){return null===t||void 0===t?ke():Le(t)&&!S(t)?t:ke().withMutations((function(e){var n=d(t);at(n.size),n.forEach((function(t){return e.add(t)}))}))}function Le(t){return!(!t||!t[Zn])}function je(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Ne(t,e){var n=Object.create($n);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ke(){return tr||(tr=Ne(Jt()))}function Pe(t){return null===t||void 0===t?xe():Ue(t)?t:xe().withMutations((function(e){var n=d(t);at(n.size),n.forEach((function(t){return e.add(t)}))}))}function Ue(t){return Le(t)&&S(t)}function He(t,e){var n=Object.create(er);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function xe(){return nr||(nr=He(Te()))}function Ve(t,e){var n,r=function(o){if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var u=Object.keys(t);Ge(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=Pt(o)},i=r.prototype=Object.create(rr);return i.constructor=r,r}function qe(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Fe(t){return t._name||t.constructor.name||"Record"}function Ge(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(t){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){ut(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Be(t,e){if(t===e)return!0;if(!v(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||y(t)!==y(e)||m(t)!==m(e)||S(t)!==S(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!g(t);if(S(t)){var r=t.entries();return e.every((function(t,e){var i=r.next().value;return i&&W(i[1],t)&&(n||W(i[0],e))}))&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var u=!0,a=e.__iterate((function(e,r){if(n?!t.has(e):i?!W(e,t.get(r,ln)):!W(t.get(r,ln),e))return u=!1,!1}));return u&&t.size===a}function Ye(t,e,n){if(!(this instanceof Ye))return new Ye(t,e,n);if(ut(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),e<t&&(n=-n),this._start=t,this._end=e,this._step=n,this.size=Math.max(0,Math.ceil((e-t)/n-1)+1),0===this.size){if(ir)return ir;ir=this}}function Je(t,e){if(!(this instanceof Je))return new Je(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(or)return or;or=this}}function We(t,e){var n=function(n){t.prototype[n]=e[n]};return Object.keys(e).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(n),t}function Xe(t,e){return e}function Qe(t,e){return[e,t]}function Ze(t){return function(){return!t.apply(this,arguments)}}function $e(t){return function(){return-t.apply(this,arguments)}}function tn(t){return"string"==typeof t?JSON.stringify(t):t}function en(){return i(arguments)}function nn(t,e){return t<e?1:t>e?-1:0}function rn(t){if(t.size===1/0)return 0;var e=S(t),n=y(t),r=e?1:0,i=t.__iterate(n?e?function(t,e){r=31*r+un(et(t),et(e))|0}:function(t,e){r=r+un(et(t),et(e))|0}:e?function(t){r=31*r+et(t)|0}:function(t){r=r+et(t)|0});return on(i,r)}function on(t,e){return e=Dn(e,3432918353),e=Dn(e<<15|e>>>-15,461845907),e=Dn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=Dn(e^e>>>16,2246822507),e=Dn(e^e>>>13,3266489909),e=tt(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var an=Array.prototype.slice,sn="delete",cn=5,fn=1<<cn,hn=fn-1,ln={},pn={value:!1},_n={value:!1};t(p,l),t(_,l),t(d,l),l.isIterable=v,l.isKeyed=y,l.isIndexed=m,l.isAssociative=g,l.isOrdered=S,l.Keyed=p,l.Indexed=_,l.Set=d;var dn="@@__IMMUTABLE_ITERABLE__@@",vn="@@__IMMUTABLE_KEYED__@@",yn="@@__IMMUTABLE_INDEXED__@@",mn="@@__IMMUTABLE_ORDERED__@@",gn=0,Sn=1,bn=2,En="function"==typeof Symbol&&Symbol.iterator,In="@@iterator",On=En||In;b.prototype.toString=function(){return"[Iterator]"},b.KEYS=gn,b.VALUES=Sn,b.ENTRIES=bn,b.prototype.inspect=b.prototype.toSource=function(){return this.toString()},b.prototype[On]=function(){return this},t(C,l),C.of=function(){return C(arguments)},C.prototype.toSeq=function(){return this},C.prototype.toString=function(){return this.__toString("Seq {","}")},C.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},C.prototype.__iterate=function(t,e){return F(this,t,e,!0)},C.prototype.__iterator=function(t,e){return G(this,t,e,!0)},t(z,C),z.prototype.toKeyedSeq=function(){return this},t(R,C),R.of=function(){return R(arguments)},R.prototype.toIndexedSeq=function(){return this},R.prototype.toString=function(){return this.__toString("Seq [","]")},R.prototype.__iterate=function(t,e){return F(this,t,e,!1)},R.prototype.__iterator=function(t,e){return G(this,t,e,!1)},t(M,C),M.of=function(){return M(arguments)},M.prototype.toSetSeq=function(){return this},C.isSeq=P,C.Keyed=z,C.Set=M,C.Indexed=R;var wn="@@__IMMUTABLE_SEQ__@@";C.prototype[wn]=!0,t(L,R),L.prototype.get=function(t,e){return this.has(t)?this._array[u(this,t)]:e},L.prototype.__iterate=function(t,e){for(var n=this,r=this._array,i=r.length-1,o=0;o<=i;o++)if(t(r[e?i-o:o],o,n)===!1)return o+1;return o},L.prototype.__iterator=function(t,e){var n=this._array,r=n.length-1,i=0;return new b(function(){return i>r?I():E(t,i,n[e?r-i++:i++])})},t(j,z),j.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},j.prototype.has=function(t){return this._object.hasOwnProperty(t)},j.prototype.__iterate=function(t,e){for(var n=this,r=this._object,i=this._keys,o=i.length-1,u=0;u<=o;u++){var a=i[e?o-u:u];if(t(r[a],a,n)===!1)return u+1}return u},j.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length-1,o=0;return new b(function(){var u=r[e?i-o:o];return o++>i?I():E(t,u,n[u])})},j.prototype[mn]=!0,t(N,R),N.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);var r=this._iterable,i=T(r),o=0;if(w(i))for(var u;!(u=i.next()).done&&t(u.value,o++,n)!==!1;);return o},N.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=T(n);if(!w(r))return new b(I);var i=0;return new b(function(){var e=r.next();return e.done?e:E(t,i++,e.value)})},t(k,R),k.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,i=this._iteratorCache,o=0;o<i.length;)if(t(i[o],o++,n)===!1)return o;for(var u;!(u=r.next()).done;){var a=u.value;if(i[o]=a,t(a,o++,n)===!1)break}return o},k.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterator,r=this._iteratorCache,i=0;return new b(function(){if(i>=r.length){var e=n.next();if(e.done)return e;r[i]=e.value}return E(t,i,r[i++])})};var Tn;t(K,l),t(B,K),t(Y,K),t(J,K),K.Keyed=B,K.Indexed=Y,K.Set=J;var An,Dn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t|=0,e|=0;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Cn=Object.isExtensible,zn=(function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}})(),Rn="function"==typeof WeakMap;Rn&&(An=new WeakMap);var Mn=0,Ln="__immutablehash__";"function"==typeof Symbol&&(Ln=Symbol(Ln));var jn=16,Nn=255,kn=0,Pn={};t(st,z),st.prototype.get=function(t,e){return this._iter.get(t,e)},st.prototype.has=function(t){return this._iter.has(t)},st.prototype.valueSeq=function(){return this._iter.valueSeq()},st.prototype.reverse=function(){var t=this,e=_t(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},st.prototype.map=function(t,e){var n=this,r=pt(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},st.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Rt(this):0,function(i){return t(i,e?--n:n++,r)}),e)},st.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(Sn,e),r=e?Rt(this):0;return new b(function(){var i=n.next();return i.done?i:E(t,e?--r:r++,i.value,i)})},st.prototype[mn]=!0,t(ct,R),ct.prototype.includes=function(t){return this._iter.includes(t)},ct.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate((function(e){return t(e,r++,n)}),e)},ct.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e),r=0;return new b(function(){var e=n.next();return e.done?e:E(t,r++,e.value,e)})},t(ft,M),ft.prototype.has=function(t){return this._iter.includes(t)},ft.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate((function(e){return t(e,e,n)}),e)},ft.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e);return new b(function(){var e=n.next();return e.done?e:E(t,e.value,e.value,e)})},t(ht,z),ht.prototype.entrySeq=function(){return this._iter.toSeq()},ht.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate((function(e){if(e){zt(e);var r=v(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}}),e)},ht.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e);return new b(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){zt(r);var i=v(r);return E(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},ct.prototype.cacheResult=st.prototype.cacheResult=ft.prototype.cacheResult=ht.prototype.cacheResult=jt,t(Pt,B),Pt.prototype.toString=function(){return this.__toString("Map {","}")},Pt.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Pt.prototype.set=function(t,e){return Wt(this,t,e)},Pt.prototype.setIn=function(t,e){return this.updateIn(t,ln,(function(){return e}))},Pt.prototype.remove=function(t){return Wt(this,t,ln)},Pt.prototype.deleteIn=function(t){return this.updateIn(t,(function(){return ln}))},Pt.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},Pt.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=oe(this,kt(t),e,n);return r===ln?void 0:r},Pt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},Pt.prototype.merge=function(){return ne(this,void 0,arguments)},Pt.prototype.mergeWith=function(t){var e=an.call(arguments,1);return ne(this,t,e)},Pt.prototype.mergeIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),(function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]}))},Pt.prototype.mergeDeep=function(){return ne(this,re(void 0),arguments)},Pt.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return ne(this,re(t),e)},Pt.prototype.mergeDeepIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),(function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]}))},Pt.prototype.sort=function(t){return Ie(wt(this,t))},Pt.prototype.sortBy=function(t,e){return Ie(wt(this,e,t))},Pt.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Pt.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new r)},Pt.prototype.asImmutable=function(){return this.__ensureOwner()},Pt.prototype.wasAltered=function(){return this.__altered},Pt.prototype.__iterator=function(t,e){return new Gt(this,t,e)},Pt.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate((function(e){return r++,t(e[1],e[0],n)}),e),r},Pt.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Yt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Pt.isMap=Ut;var Un="@@__IMMUTABLE_MAP__@@",Hn=Pt.prototype;Hn[Un]=!0,Hn[sn]=Hn.remove,Hn.removeIn=Hn.deleteIn,Ht.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o<u;o++)if(W(n,i[o][0]))return i[o][1];return r},Ht.prototype.update=function(t,e,r,o,u,a,s){for(var c=u===ln,f=this.entries,h=0,l=f.length;h<l&&!W(o,f[h][0]);h++);var p=h<l;if(p?f[h][1]===u:c)return this;if(n(s),(c||!p)&&n(a),!c||1!==f.length){if(!p&&!c&&f.length>=Vn)return $t(t,f,o,u);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new Ht(t,d)}},xt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=1<<((0===t?e:e>>>t)&hn),o=this.bitmap;return 0===(o&i)?r:this.nodes[ue(o&i-1)].get(t+cn,e,n,r)},xt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=1<<a,c=this.bitmap,f=0!==(c&s);if(!f&&i===ln)return this;var h=ue(c&s-1),l=this.nodes,p=f?l[h]:void 0,_=Xt(p,t,e+cn,n,r,i,o,u);if(_===p)return this;if(!f&&_&&l.length>=qn)return ee(t,l,c,a,_);if(f&&!_&&2===l.length&&Qt(l[1^h]))return l[1^h];if(f&&_&&1===l.length&&Qt(_))return _;var d=t&&t===this.ownerID,v=f?_?c:c^s:c|s,y=f?_?ae(l,h,_,d):ce(l,h,d):se(l,h,_,d);return d?(this.bitmap=v,this.nodes=y,this):new xt(t,v,y)},Vt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=(0===t?e:e>>>t)&hn,o=this.nodes[i];return o?o.get(t+cn,e,n,r):r},Vt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=i===ln,c=this.nodes,f=c[a];if(s&&!f)return this;var h=Xt(f,t,e+cn,n,r,i,o,u);if(h===f)return this;var l=this.count;if(f){if(!h&&(l--,l<Fn))return te(t,c,l,a)}else l++;var p=t&&t===this.ownerID,_=ae(c,a,h,p);return p?(this.count=l,this.nodes=_,this):new Vt(t,l,_)},qt.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o<u;o++)if(W(n,i[o][0]))return i[o][1];return r},qt.prototype.update=function(t,e,r,o,u,a,s){void 0===r&&(r=et(o));var c=u===ln;if(r!==this.keyHash)return c?this:(n(s),n(a),Zt(this,t,e,r,[o,u]));for(var f=this.entries,h=0,l=f.length;h<l&&!W(o,f[h][0]);h++);var p=h<l;if(p?f[h][1]===u:c)return this;if(n(s),(c||!p)&&n(a),c&&2===l)return new Ft(t,this.keyHash,f[1^h]);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new qt(t,this.keyHash,d)},Ft.prototype.get=function(t,e,n,r){return W(n,this.entry[0])?this.entry[1]:r},Ft.prototype.update=function(t,e,r,i,o,u,a){var s=o===ln,c=W(i,this.entry[0]);return(c?o===this.entry[1]:s)?this:(n(a),s?void n(u):c?t&&t===this.ownerID?(this.entry[1]=o,this):new Ft(t,this.keyHash,[i,o]):(n(u),Zt(this,t,e,et(i),[i,o])))},Ht.prototype.iterate=qt.prototype.iterate=function(t,e){for(var n=this.entries,r=0,i=n.length-1;r<=i;r++)if(t(n[e?i-r:r])===!1)return!1},xt.prototype.iterate=Vt.prototype.iterate=function(t,e){for(var n=this.nodes,r=0,i=n.length-1;r<=i;r++){var o=n[e?i-r:r];if(o&&o.iterate(t,e)===!1)return!1}},Ft.prototype.iterate=function(t,e){return t(this.entry)},t(Gt,b),Gt.prototype.next=function(){for(var t=this,e=this._type,n=this._stack;n;){var r,i=n.node,o=n.index++;if(i.entry){if(0===o)return Kt(e,i.entry)}else if(i.entries){if(r=i.entries.length-1,o<=r)return Kt(e,i.entries[t._reverse?r-o:o])}else if(r=i.nodes.length-1,o<=r){var u=i.nodes[t._reverse?r-o:o];if(u){if(u.entry)return Kt(e,u.entry);n=t._stack=Bt(u,n)}continue}n=t._stack=t._stack.__prev}return I()};var xn,Vn=fn/4,qn=fn/2,Fn=fn/4;t(fe,Y),fe.of=function(){return this(arguments)},fe.prototype.toString=function(){return this.__toString("List [","]")},fe.prototype.get=function(t,e){if(t=u(this,t),t>=0&&t<this.size){t+=this._origin;var n=ge(this,t);return n&&n.array[t&hn]}return e},fe.prototype.set=function(t,e){return ve(this,t,e)},fe.prototype.remove=function(t){return this.has(t)?0===t?this.shift():t===this.size-1?this.pop():this.splice(t,1):this},fe.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=cn,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):de()},fe.prototype.push=function(){var t=arguments,e=this.size;return this.withMutations((function(n){Se(n,0,e+t.length);for(var r=0;r<t.length;r++)n.set(e+r,t[r])}))},fe.prototype.pop=function(){return Se(this,0,-1)},fe.prototype.unshift=function(){var t=arguments;return this.withMutations((function(e){Se(e,-t.length);for(var n=0;n<t.length;n++)e.set(n,t[n])}))},fe.prototype.shift=function(){return Se(this,1)},fe.prototype.merge=function(){return be(this,void 0,arguments)},fe.prototype.mergeWith=function(t){var e=an.call(arguments,1);return be(this,t,e)},fe.prototype.mergeDeep=function(){return be(this,re(void 0),arguments)},fe.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return be(this,re(t),e)},fe.prototype.setSize=function(t){return Se(this,0,t)},fe.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:Se(this,c(t,n),f(e,n))},fe.prototype.__iterator=function(t,e){var n=0,r=pe(this,e);return new b(function(){var e=r();return e===Yn?I():E(t,n++,e)})},fe.prototype.__iterate=function(t,e){for(var n,r=this,i=0,o=pe(this,e);(n=o())!==Yn&&t(n,i++,r)!==!1;);return i},fe.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?_e(this._origin,this._capacity,this._level,this._root,this._tail,t,this.__hash):(this.__ownerID=t,this)},fe.isList=he;var Gn="@@__IMMUTABLE_LIST__@@",Kn=fe.prototype;Kn[Gn]=!0,Kn[sn]=Kn.remove,Kn.setIn=Hn.setIn,Kn.deleteIn=Kn.removeIn=Hn.removeIn,Kn.update=Hn.update,Kn.updateIn=Hn.updateIn,Kn.mergeIn=Hn.mergeIn,Kn.mergeDeepIn=Hn.mergeDeepIn,Kn.withMutations=Hn.withMutations,Kn.asMutable=Hn.asMutable,Kn.asImmutable=Hn.asImmutable,Kn.wasAltered=Hn.wasAltered,le.prototype.removeBefore=function(t,e,n){if(n===e?1<<e:0===this.array.length)return this;var r=n>>>e&hn;if(r>=this.array.length)return new le([],t);var i,o=0===r;if(e>0){var u=this.array[r];if(i=u&&u.removeBefore(t,e-cn,n),i===u&&o)return this}if(o&&!i)return this;var a=me(this,t);if(!o)for(var s=0;s<r;s++)a.array[s]=void 0;return i&&(a.array[r]=i),a},le.prototype.removeAfter=function(t,e,n){if(n===(e?1<<e:0)||0===this.array.length)return this;var r=n-1>>>e&hn;if(r>=this.array.length)return this;var i;if(e>0){var o=this.array[r];if(i=o&&o.removeAfter(t,e-cn,n),i===o&&r===this.array.length-1)return this}var u=me(this,t);return u.array.splice(r+1),i&&(u.array[r]=i),u};var Bn,Yn={};t(Ie,Pt),Ie.of=function(){return this(arguments)},Ie.prototype.toString=function(){return this.__toString("OrderedMap {","}")},Ie.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},Ie.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Te()},Ie.prototype.set=function(t,e){return Ae(this,t,e)},Ie.prototype.remove=function(t){return Ae(this,t,ln)},Ie.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},Ie.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate((function(e){return e&&t(e[1],e[0],n)}),e)},Ie.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},Ie.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?we(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},Ie.isOrderedMap=Oe,Ie.prototype[mn]=!0,Ie.prototype[sn]=Ie.prototype.remove;var Jn;t(De,Y),De.of=function(){return this(arguments)},De.prototype.toString=function(){return this.__toString("Stack [","]")},De.prototype.get=function(t,e){var n=this._head;for(t=u(this,t);n&&t--;)n=n.next;return n?n.value:e},De.prototype.peek=function(){return this._head&&this._head.value},De.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pushAll=function(t){if(t=_(t),0===t.size)return this;at(t.size);var e=this.size,n=this._head;return t.reverse().forEach((function(t){e++,n={value:t,next:n}})),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pop=function(){return this.slice(1)},De.prototype.unshift=function(){return this.push.apply(this,arguments)},De.prototype.unshiftAll=function(t){return this.pushAll(t)},De.prototype.shift=function(){return this.pop.apply(this,arguments)},De.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Re()},De.prototype.slice=function(t,e){if(s(t,e,this.size))return this;var n=c(t,this.size),r=f(e,this.size);if(r!==this.size)return Y.prototype.slice.call(this,t,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):ze(i,o)},De.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?ze(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},De.prototype.__iterate=function(t,e){var n=this;if(e)return this.reverse().__iterate(t);for(var r=0,i=this._head;i&&t(i.value,r++,n)!==!1;)i=i.next;return r},De.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new b(function(){if(r){var e=r.value;return r=r.next,E(t,n++,e)}return I()})},De.isStack=Ce;var Wn="@@__IMMUTABLE_STACK__@@",Xn=De.prototype;Xn[Wn]=!0,Xn.withMutations=Hn.withMutations,Xn.asMutable=Hn.asMutable,Xn.asImmutable=Hn.asImmutable,Xn.wasAltered=Hn.wasAltered;var Qn;t(Me,J),Me.of=function(){return this(arguments)},Me.fromKeys=function(t){return this(p(t).keySeq())},Me.prototype.toString=function(){return this.__toString("Set {","}")},Me.prototype.has=function(t){return this._map.has(t)},Me.prototype.add=function(t){return je(this,this._map.set(t,!0))},Me.prototype.remove=function(t){return je(this,this._map.remove(t))},Me.prototype.clear=function(){return je(this,this._map.clear())},Me.prototype.union=function(){var t=an.call(arguments,0);return t=t.filter((function(t){return 0!==t.size})),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations((function(e){for(var n=0;n<t.length;n++)d(t[n]).forEach((function(t){return e.add(t)}))})):this.constructor(t[0])},Me.prototype.intersect=function(){var t=an.call(arguments,0);if(0===t.length)return this;t=t.map((function(t){return d(t)}));var e=this;return this.withMutations((function(n){e.forEach((function(e){t.every((function(t){return t.includes(e)}))||n.remove(e)}))}))},Me.prototype.subtract=function(){var t=an.call(arguments,0);if(0===t.length)return this;t=t.map((function(t){return d(t)}));var e=this;return this.withMutations((function(n){e.forEach((function(e){t.some((function(t){return t.includes(e)}))&&n.remove(e)}))}))},Me.prototype.merge=function(){return this.union.apply(this,arguments)},Me.prototype.mergeWith=function(t){var e=an.call(arguments,1);return this.union.apply(this,e)},Me.prototype.sort=function(t){return Pe(wt(this,t))},Me.prototype.sortBy=function(t,e){return Pe(wt(this,e,t))},Me.prototype.wasAltered=function(){return this._map.wasAltered()},Me.prototype.__iterate=function(t,e){var n=this;return this._map.__iterate((function(e,r){return t(r,r,n)}),e)},Me.prototype.__iterator=function(t,e){return this._map.map((function(t,e){return e})).__iterator(t,e)},Me.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t);return t?this.__make(e,t):(this.__ownerID=t,this._map=e,this)},Me.isSet=Le;var Zn="@@__IMMUTABLE_SET__@@",$n=Me.prototype;$n[Zn]=!0,$n[sn]=$n.remove,$n.mergeDeep=$n.merge,$n.mergeDeepWith=$n.mergeWith,$n.withMutations=Hn.withMutations,$n.asMutable=Hn.asMutable,$n.asImmutable=Hn.asImmutable,$n.__empty=ke,$n.__make=Ne;var tr;t(Pe,Me),Pe.of=function(){return this(arguments)},Pe.fromKeys=function(t){return this(p(t).keySeq())},Pe.prototype.toString=function(){ -return this.__toString("OrderedSet {","}")},Pe.isOrderedSet=Ue;var er=Pe.prototype;er[mn]=!0,er.__empty=xe,er.__make=He;var nr;t(Ve,B),Ve.prototype.toString=function(){return this.__toString(Fe(this)+" {","}")},Ve.prototype.has=function(t){return this._defaultValues.hasOwnProperty(t)},Ve.prototype.get=function(t,e){if(!this.has(t))return e;var n=this._defaultValues[t];return this._map?this._map.get(t,n):n},Ve.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var t=this.constructor;return t._empty||(t._empty=qe(this,Jt()))},Ve.prototype.set=function(t,e){if(!this.has(t))throw new Error('Cannot set unknown key "'+t+'" on '+Fe(this));var n=this._map&&this._map.set(t,e);return this.__ownerID||n===this._map?this:qe(this,n)},Ve.prototype.remove=function(t){if(!this.has(t))return this;var e=this._map&&this._map.remove(t);return this.__ownerID||e===this._map?this:qe(this,e)},Ve.prototype.wasAltered=function(){return this._map.wasAltered()},Ve.prototype.__iterator=function(t,e){var n=this;return p(this._defaultValues).map((function(t,e){return n.get(e)})).__iterator(t,e)},Ve.prototype.__iterate=function(t,e){var n=this;return p(this._defaultValues).map((function(t,e){return n.get(e)})).__iterate(t,e)},Ve.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map&&this._map.__ensureOwner(t);return t?qe(this,e,t):(this.__ownerID=t,this._map=e,this)};var rr=Ve.prototype;rr[sn]=rr.remove,rr.deleteIn=rr.removeIn=Hn.removeIn,rr.merge=Hn.merge,rr.mergeWith=Hn.mergeWith,rr.mergeIn=Hn.mergeIn,rr.mergeDeep=Hn.mergeDeep,rr.mergeDeepWith=Hn.mergeDeepWith,rr.mergeDeepIn=Hn.mergeDeepIn,rr.setIn=Hn.setIn,rr.update=Hn.update,rr.updateIn=Hn.updateIn,rr.withMutations=Hn.withMutations,rr.asMutable=Hn.asMutable,rr.asImmutable=Hn.asImmutable,t(Ye,R),Ye.prototype.toString=function(){return 0===this.size?"Range []":"Range [ "+this._start+"..."+this._end+(this._step>1?" by "+this._step:"")+" ]"},Ye.prototype.get=function(t,e){return this.has(t)?this._start+u(this,t)*this._step:e},Ye.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e<this.size&&e===Math.floor(e)},Ye.prototype.slice=function(t,e){return s(t,e,this.size)?this:(t=c(t,this.size),e=f(e,this.size),e<=t?new Ye(0,0):new Ye(this.get(t,this._end),this.get(e,this._end),this._step))},Ye.prototype.indexOf=function(t){var e=t-this._start;if(e%this._step===0){var n=e/this._step;if(n>=0&&n<this.size)return n}return-1},Ye.prototype.lastIndexOf=function(t){return this.indexOf(t)},Ye.prototype.__iterate=function(t,e){for(var n=this,r=this.size-1,i=this._step,o=e?this._start+r*i:this._start,u=0;u<=r;u++){if(t(o,u,n)===!1)return u+1;o+=e?-i:i}return u},Ye.prototype.__iterator=function(t,e){var n=this.size-1,r=this._step,i=e?this._start+n*r:this._start,o=0;return new b(function(){var u=i;return i+=e?-r:r,o>n?I():E(t,o++,u)})},Ye.prototype.equals=function(t){return t instanceof Ye?this._start===t._start&&this._end===t._end&&this._step===t._step:Be(this,t)};var ir;t(Je,R),Je.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Je.prototype.get=function(t,e){return this.has(t)?this._value:e},Je.prototype.includes=function(t){return W(this._value,t)},Je.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:new Je(this._value,f(e,n)-c(t,n))},Je.prototype.reverse=function(){return this},Je.prototype.indexOf=function(t){return W(this._value,t)?0:-1},Je.prototype.lastIndexOf=function(t){return W(this._value,t)?this.size:-1},Je.prototype.__iterate=function(t,e){for(var n=this,r=0;r<this.size;r++)if(t(n._value,r,n)===!1)return r+1;return r},Je.prototype.__iterator=function(t,e){var n=this,r=0;return new b(function(){return r<n.size?E(t,r++,n._value):I()})},Je.prototype.equals=function(t){return t instanceof Je?W(this._value,t._value):Be(t)};var or;l.Iterator=b,We(l,{toArray:function(){at(this.size);var t=new Array(this.size||0);return this.valueSeq().__iterate((function(e,n){t[n]=e})),t},toIndexedSeq:function(){return new ct(this)},toJS:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJS?t.toJS():t})).__toJS()},toJSON:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJSON?t.toJSON():t})).__toJS()},toKeyedSeq:function(){return new st(this,!0)},toMap:function(){return Pt(this.toKeyedSeq())},toObject:function(){at(this.size);var t={};return this.__iterate((function(e,n){t[n]=e})),t},toOrderedMap:function(){return Ie(this.toKeyedSeq())},toOrderedSet:function(){return Pe(y(this)?this.valueSeq():this)},toSet:function(){return Me(y(this)?this.valueSeq():this)},toSetSeq:function(){return new ft(this)},toSeq:function(){return m(this)?this.toIndexedSeq():y(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return De(y(this)?this.valueSeq():this)},toList:function(){return fe(y(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(t,e){return 0===this.size?t+e:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+e},concat:function(){var t=an.call(arguments,0);return Ct(this,bt(this,t))},includes:function(t){return this.some((function(e){return W(e,t)}))},entries:function(){return this.__iterator(bn)},every:function(t,e){at(this.size);var n=!0;return this.__iterate((function(r,i,o){if(!t.call(e,r,i,o))return n=!1,!1})),n},filter:function(t,e){return Ct(this,dt(this,t,e,!0))},find:function(t,e,n){var r=this.findEntry(t,e);return r?r[1]:n},findEntry:function(t,e){var n;return this.__iterate((function(r,i,o){if(t.call(e,r,i,o))return n=[i,r],!1})),n},findLastEntry:function(t,e){return this.toSeq().reverse().findEntry(t,e)},forEach:function(t,e){return at(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){at(this.size),t=void 0!==t?""+t:",";var e="",n=!0;return this.__iterate((function(r){n?n=!1:e+=t,e+=null!==r&&void 0!==r?r.toString():""})),e},keys:function(){return this.__iterator(gn)},map:function(t,e){return Ct(this,pt(this,t,e))},reduce:function(t,e,n){at(this.size);var r,i;return arguments.length<2?i=!0:r=e,this.__iterate((function(e,o,u){i?(i=!1,r=e):r=t.call(n,r,e,o,u)})),r},reduceRight:function(t,e,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return Ct(this,_t(this,!0))},slice:function(t,e){return Ct(this,mt(this,t,e,!0))},some:function(t,e){return!this.every(Ze(t),e)},sort:function(t){return Ct(this,wt(this,t))},values:function(){return this.__iterator(Sn)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(t,e){return o(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return vt(this,t,e)},equals:function(t){return Be(this,t)},entrySeq:function(){var t=this;if(t._cache)return new L(t._cache);var e=t.toSeq().map(Qe).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(Ze(t),e)},findLast:function(t,e,n){return this.toKeyedSeq().reverse().find(t,e,n)},first:function(){return this.find(a)},flatMap:function(t,e){return Ct(this,It(this,t,e))},flatten:function(t){return Ct(this,Et(this,t,!0))},fromEntrySeq:function(){return new ht(this)},get:function(t,e){return this.find((function(e,n){return W(n,t)}),void 0,e)},getIn:function(t,e){for(var n,r=this,i=kt(t);!(n=i.next()).done;){var o=n.value;if(r=r&&r.get?r.get(o,ln):ln,r===ln)return e}return r},groupBy:function(t,e){return yt(this,t,e)},has:function(t){return this.get(t,ln)!==ln},hasIn:function(t){return this.getIn(t,ln)!==ln},isSubset:function(t){return t="function"==typeof t.includes?t:l(t),this.every((function(e){return t.includes(e)}))},isSuperset:function(t){return t="function"==typeof t.isSubset?t:l(t),t.isSubset(this)},keySeq:function(){return this.toSeq().map(Xe).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(t){return Tt(this,t)},maxBy:function(t,e){return Tt(this,e,t)},min:function(t){return Tt(this,t?$e(t):nn)},minBy:function(t,e){return Tt(this,e?$e(e):nn,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return Ct(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return Ct(this,St(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(Ze(t),e)},sortBy:function(t,e){return Ct(this,wt(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return Ct(this,this.toSeq().reverse().take(t).reverse())},takeWhile:function(t,e){return Ct(this,gt(this,t,e))},takeUntil:function(t,e){return this.takeWhile(Ze(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=rn(this))}});var ur=l.prototype;ur[dn]=!0,ur[On]=ur.values,ur.__toJS=ur.toArray,ur.__toStringMapper=tn,ur.inspect=ur.toSource=function(){return this.toString()},ur.chain=ur.flatMap,ur.contains=ur.includes,(function(){try{Object.defineProperty(ur,"length",{get:function(){if(!l.noLengthWarning){var t;try{throw new Error}catch(e){t=e.stack}if(t.indexOf("_wrapObject")===-1)return console&&console.warn&&console.warn("iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. "+t),this.size}}})}catch(t){}})(),We(p,{flip:function(){return Ct(this,lt(this))},findKey:function(t,e){var n=this.findEntry(t,e);return n&&n[0]},findLastKey:function(t,e){return this.toSeq().reverse().findKey(t,e)},keyOf:function(t){return this.findKey((function(e){return W(e,t)}))},lastKeyOf:function(t){return this.findLastKey((function(e){return W(e,t)}))},mapEntries:function(t,e){var n=this,r=0;return Ct(this,this.toSeq().map((function(i,o){return t.call(e,[o,i],r++,n)})).fromEntrySeq())},mapKeys:function(t,e){var n=this;return Ct(this,this.toSeq().flip().map((function(r,i){return t.call(e,r,i,n)})).flip())}});var ar=p.prototype;ar[vn]=!0,ar[On]=ur.entries,ar.__toJS=ur.toObject,ar.__toStringMapper=function(t,e){return JSON.stringify(e)+": "+tn(t)},We(_,{toKeyedSeq:function(){return new st(this,!1)},filter:function(t,e){return Ct(this,dt(this,t,e,!1))},findIndex:function(t,e){var n=this.findEntry(t,e);return n?n[0]:-1},indexOf:function(t){var e=this.toKeyedSeq().keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){return this.toSeq().reverse().indexOf(t)},reverse:function(){return Ct(this,_t(this,!1))},slice:function(t,e){return Ct(this,mt(this,t,e,!1))},splice:function(t,e){var n=arguments.length;if(e=Math.max(0|e,0),0===n||2===n&&!e)return this;t=c(t,t<0?this.count():this.size);var r=this.slice(0,t);return Ct(this,1===n?r:r.concat(i(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var n=this.toKeyedSeq().findLastKey(t,e);return void 0===n?-1:n},first:function(){return this.get(0)},flatten:function(t){return Ct(this,Et(this,t,!1))},get:function(t,e){return t=u(this,t),t<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find((function(e,n){return n===t}),void 0,e)},has:function(t){return t=u(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t<this.size:this.indexOf(t)!==-1)},interpose:function(t){return Ct(this,Ot(this,t))},interleave:function(){var t=[this].concat(i(arguments)),e=Dt(this.toSeq(),R.of,t),n=e.flatten(!0);return e.size&&(n.size=e.size*t.length),Ct(this,n)},last:function(){return this.get(-1)},skipWhile:function(t,e){return Ct(this,St(this,t,e,!1))},zip:function(){var t=[this].concat(i(arguments));return Ct(this,Dt(this,en,t))},zipWith:function(t){var e=i(arguments);return e[0]=this,Ct(this,Dt(this,t,e))}}),_.prototype[yn]=!0,_.prototype[mn]=!0,We(d,{get:function(t,e){return this.has(t)?t:e},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),d.prototype.has=ur.includes,We(z,p.prototype),We(R,_.prototype),We(M,d.prototype),We(B,p.prototype),We(Y,_.prototype),We(J,d.prototype);var sr={Iterable:l,Seq:C,Collection:K,Map:Pt,OrderedMap:Ie,List:fe,Stack:De,Set:Me,OrderedSet:Pe,Record:Ve,Range:Ye,Repeat:Je,is:W,fromJS:X};return sr}))},function(t,e){function n(t){return t&&"object"==typeof t&&toString.call(t)}function r(t){return"number"==typeof t&&t>-1&&t%1===0&&t<=Number.MAX_VALUE}var i=Function.prototype.bind;e.isString=function(t){return"string"==typeof t||"[object String]"===n(t)},e.isArray=Array.isArray||function(t){return"[object Array]"===n(t)},"function"!=typeof/./&&"object"!=typeof Int8Array?e.isFunction=function(t){return"function"==typeof t||!1}:e.isFunction=function(t){return"[object Function]"===toString.call(t)},e.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},e.extend=function(t){var e=arguments,n=arguments.length;if(!t||n<2)return t||{};for(var r=1;r<n;r++)for(var i=e[r],o=Object.keys(i),u=o.length,a=0;a<u;a++){var s=o[a];t[s]=i[s]}return t},e.clone=function(t){return e.isObject(t)?e.isArray(t)?t.slice():e.extend({},t):t},e.each=function(t,e,n){var i,o,u=t?t.length:0,a=-1;if(n&&(o=e,e=function(t,e,r){return o.call(n,t,e,r)}),r(u))for(;++a<u&&e(t[a],a,t)!==!1;);else for(i=Object.keys(t),u=i.length;++a<u&&e(t[i[a]],i[a],t)!==!1;);return t},e.partial=function(t){var e=Array.prototype.slice,n=e.call(arguments,1);return function(){return t.apply(this,n.concat(e.call(arguments)))}},e.toFactory=function(t){var e=function(){for(var e=arguments,n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=e[o];return new(i.apply(t,[null].concat(r)))};return e.__proto__=t,e.prototype=t.prototype,e}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return c.default.Iterable.isIterable(t)}function o(t){return i(t)||!(0,f.isObject)(t)}function u(t){return i(t)?t.toJS():t}function a(t){return i(t)?t:c.default.fromJS(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.isImmutable=i,e.isImmutableValue=o,e.toJS=u,e.toImmutable=a;var s=n(3),c=r(s),f=n(4)},function(t,e,n){function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function i(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=(function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}})(),s=n(3),c=i(s),f=n(7),h=i(f),l=n(8),p=r(l),_=n(11),d=n(10),v=n(5),y=n(4),m=n(12),g=(function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];u(this,t);var n=!!e.debug,r=n?m.DEBUG_OPTIONS:m.PROD_OPTIONS,i=new m.ReactorState({debug:n,options:r.merge(e.options||{})});this.prevReactorState=i,this.reactorState=i,this.observerState=new m.ObserverState,this.ReactMixin=(0,h.default)(this),this.__batchDepth=0,this.__isDispatching=!1}return a(t,[{key:"evaluate",value:function(t){var e=p.evaluate(this.reactorState,t),n=e.result,r=e.reactorState;return this.reactorState=r,n}},{key:"evaluateToJS",value:function(t){return(0,v.toJS)(this.evaluate(t))}},{key:"observe",value:function(t,e){var n=this;1===arguments.length&&(e=t,t=[]);var r=p.addObserver(this.observerState,t,e),i=r.observerState,o=r.entry;return this.observerState=i,function(){n.observerState=p.removeObserverByEntry(n.observerState,o)}}},{key:"unobserve",value:function(t,e){if(0===arguments.length)throw new Error("Must call unobserve with a Getter");if(!(0,d.isGetter)(t)&&!(0,_.isKeyPath)(t))throw new Error("Must call unobserve with a Getter");this.observerState=p.removeObserver(this.observerState,t,e)}},{key:"dispatch",value:function(t,e){if(0===this.__batchDepth){if(p.getOption(this.reactorState,"throwOnDispatchInDispatch")&&this.__isDispatching)throw this.__isDispatching=!1,new Error("Dispatch may not be called while a dispatch is in progress");this.__isDispatching=!0}try{this.reactorState=p.dispatch(this.reactorState,t,e)}catch(t){throw this.__isDispatching=!1,t}try{this.__notify()}finally{this.__isDispatching=!1}}},{key:"batch",value:function(t){this.batchStart(),t(),this.batchEnd()}},{key:"registerStore",value:function(t,e){console.warn("Deprecation warning: `registerStore` will no longer be supported in 1.1, use `registerStores` instead"),this.registerStores(o({},t,e))}},{key:"registerStores",value:function(t){this.reactorState=p.registerStores(this.reactorState,t),this.__notify()}},{key:"replaceStores",value:function(t){this.reactorState=p.replaceStores(this.reactorState,t)}},{key:"serialize",value:function(){return p.serialize(this.reactorState)}},{key:"loadState",value:function(t){this.reactorState=p.loadState(this.reactorState,t),this.__notify()}},{key:"reset",value:function(){var t=p.reset(this.reactorState);this.reactorState=t,this.prevReactorState=t,this.observerState=new m.ObserverState}},{key:"__notify",value:function(){var t=this;if(!(this.__batchDepth>0)){var e=this.reactorState.get("dirtyStores");if(0!==e.size){var n=c.default.Set().withMutations((function(n){n.union(t.observerState.get("any")),e.forEach((function(e){var r=t.observerState.getIn(["stores",e]);r&&n.union(r)}))}));n.forEach((function(e){var n=t.observerState.getIn(["observersMap",e]);if(n){var r=n.get("getter"),i=n.get("handler"),o=p.evaluate(t.prevReactorState,r),u=p.evaluate(t.reactorState,r);t.prevReactorState=o.reactorState,t.reactorState=u.reactorState;var a=o.result,s=u.result;c.default.is(a,s)||i.call(null,s)}}));var r=p.resetDirtyStores(this.reactorState);this.prevReactorState=r,this.reactorState=r}}}},{key:"batchStart",value:function(){this.__batchDepth++}},{key:"batchEnd",value:function(){if(this.__batchDepth--,this.__batchDepth<=0){this.__isDispatching=!0;try{this.__notify()}catch(t){throw this.__isDispatching=!1,t}this.__isDispatching=!1}}}]),t})();e.default=(0,y.toFactory)(g),t.exports=e.default},function(t,e,n){function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n={};return(0,o.each)(e,(function(e,r){n[r]=t.evaluate(e)})),n}Object.defineProperty(e,"__esModule",{value:!0});var o=n(4);e.default=function(t){return{getInitialState:function(){return i(t,this.getDataBindings())},componentDidMount:function(){var e=this;this.__unwatchFns=[],(0,o.each)(this.getDataBindings(),(function(n,i){var o=t.observe(n,(function(t){e.setState(r({},i,t))}));e.__unwatchFns.push(o)}))},componentWillUnmount:function(){for(var t=this;this.__unwatchFns.length;)t.__unwatchFns.shift()()}}},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){return new M({result:t,reactorState:e})}function o(t,e){return t.withMutations((function(t){(0,R.each)(e,(function(e,n){t.getIn(["stores",n])&&console.warn("Store already defined for id = "+n);var r=e.getInitialState();if(void 0===r&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store getInitialState() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(r))throw new Error("Store getInitialState() must return an immutable value, did you forget to call toImmutable");t.update("stores",(function(t){return t.set(n,e)})).update("state",(function(t){return t.set(n,r)})).update("dirtyStores",(function(t){return t.add(n)})).update("storeStates",(function(t){return I(t,[n])}))})),E(t)}))}function u(t,e){return t.withMutations((function(t){(0,R.each)(e,(function(e,n){t.update("stores",(function(t){return t.set(n,e)}))}))}))}function a(t,e,n){if(void 0===e&&f(t,"throwOnUndefinedActionType"))throw new Error("`dispatch` cannot be called with an `undefined` action type.");var r=t.get("state"),i=t.get("dirtyStores"),o=r.withMutations((function(r){A.default.dispatchStart(t,e,n),t.get("stores").forEach((function(o,u){var a=r.get(u),s=void 0;try{s=o.handle(a,e,n)}catch(e){throw A.default.dispatchError(t,e.message),e}if(void 0===s&&f(t,"throwOnUndefinedStoreReturnValue")){var c="Store handler must return a value, did you forget a return statement";throw A.default.dispatchError(t,c),new Error(c)}r.set(u,s),a!==s&&(i=i.add(u))})),A.default.dispatchEnd(t,r,i)})),u=t.set("state",o).set("dirtyStores",i).update("storeStates",(function(t){return I(t,i)}));return E(u)}function s(t,e){var n=[],r=(0,D.toImmutable)({}).withMutations((function(r){(0,R.each)(e,(function(e,i){var o=t.getIn(["stores",i]);if(o){var u=o.deserialize(e);void 0!==u&&(r.set(i,u),n.push(i))}}))})),i=w.default.Set(n);return t.update("state",(function(t){return t.merge(r)})).update("dirtyStores",(function(t){return t.union(i)})).update("storeStates",(function(t){return I(t,n)}))}function c(t,e,n){var r=e;(0,z.isKeyPath)(e)&&(e=(0,C.fromKeyPath)(e));var i=t.get("nextId"),o=(0,C.getStoreDeps)(e),u=w.default.Map({id:i,storeDeps:o,getterKey:r,getter:e,handler:n}),a=void 0;return a=0===o.size?t.update("any",(function(t){return t.add(i)})):t.withMutations((function(t){o.forEach((function(e){var n=["stores",e];t.hasIn(n)||t.setIn(n,w.default.Set()),t.updateIn(["stores",e],(function(t){return t.add(i)}))}))})),a=a.set("nextId",i+1).setIn(["observersMap",i],u),{observerState:a,entry:u}}function f(t,e){var n=t.getIn(["options",e]);if(void 0===n)throw new Error("Invalid option: "+e);return n}function h(t,e,n){var r=t.get("observersMap").filter((function(t){var r=t.get("getterKey"),i=!n||t.get("handler")===n;return!!i&&((0,z.isKeyPath)(e)&&(0,z.isKeyPath)(r)?(0,z.isEqual)(e,r):e===r)}));return t.withMutations((function(t){r.forEach((function(e){return l(t,e)}))}))}function l(t,e){return t.withMutations((function(t){var n=e.get("id"),r=e.get("storeDeps");0===r.size?t.update("any",(function(t){return t.remove(n)})):r.forEach((function(e){t.updateIn(["stores",e],(function(t){return t?t.remove(n):t}))})),t.removeIn(["observersMap",n])}))}function p(t){var e=t.get("state");return t.withMutations((function(t){var n=t.get("stores"),r=n.keySeq().toJS();n.forEach((function(n,r){var i=e.get(r),o=n.handleReset(i);if(void 0===o&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store handleReset() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(o))throw new Error("Store reset state must be an immutable value, did you forget to call toImmutable");t.setIn(["state",r],o)})),t.update("storeStates",(function(t){return I(t,r)})),v(t)}))}function _(t,e){var n=t.get("state");if((0,z.isKeyPath)(e))return i(n.getIn(e),t);if(!(0,C.isGetter)(e))throw new Error("evaluate must be passed a keyPath or Getter");if(g(t,e))return i(b(t,e),t);var r=(0,C.getDeps)(e).map((function(e){return _(t,e).result})),o=(0,C.getComputeFn)(e).apply(null,r);return i(o,S(t,e,o))}function d(t){var e={};return t.get("stores").forEach((function(n,r){var i=t.getIn(["state",r]),o=n.serialize(i);void 0!==o&&(e[r]=o)})),e}function v(t){return t.set("dirtyStores",w.default.Set())}function y(t){return t}function m(t,e){var n=y(e);return t.getIn(["cache",n])}function g(t,e){var n=m(t,e);if(!n)return!1;var r=n.get("storeStates");return 0!==r.size&&r.every((function(e,n){return t.getIn(["storeStates",n])===e}))}function S(t,e,n){var r=y(e),i=t.get("dispatchId"),o=(0,C.getStoreDeps)(e),u=(0,D.toImmutable)({}).withMutations((function(e){o.forEach((function(n){var r=t.getIn(["storeStates",n]);e.set(n,r)}))}));return t.setIn(["cache",r],w.default.Map({value:n,storeStates:u,dispatchId:i}))}function b(t,e){var n=y(e);return t.getIn(["cache",n,"value"])}function E(t){return t.update("dispatchId",(function(t){return t+1}))}function I(t,e){return t.withMutations((function(t){e.forEach((function(e){var n=t.has(e)?t.get(e)+1:1;t.set(e,n)}))}))}Object.defineProperty(e,"__esModule",{value:!0}),e.registerStores=o,e.replaceStores=u,e.dispatch=a,e.loadState=s,e.addObserver=c,e.getOption=f,e.removeObserver=h,e.removeObserverByEntry=l,e.reset=p,e.evaluate=_,e.serialize=d,e.resetDirtyStores=v;var O=n(3),w=r(O),T=n(9),A=r(T),D=n(5),C=n(10),z=n(11),R=n(4),M=w.default.Record({result:null,reactorState:null})},function(t,e,n){var r=n(8);e.dispatchStart=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.groupCollapsed("Dispatch: %s",e),console.group("payload"),console.debug(n),console.groupEnd())},e.dispatchError=function(t,e){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.debug("Dispatch error: "+e),console.groupEnd())},e.dispatchEnd=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&((0,r.getOption)(t,"logDirtyStores")&&console.log("Stores updated:",n.toList().toJS()),(0,r.getOption)(t,"logAppState")&&console.debug("Dispatch done, new state: ",e.toJS()),console.groupEnd())}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,l.isArray)(t)&&(0,l.isFunction)(t[t.length-1])}function o(t){return t[t.length-1]}function u(t){return t.slice(0,t.length-1)}function a(t,e){e||(e=h.default.Set());var n=h.default.Set().withMutations((function(e){if(!i(t))throw new Error("getFlattenedDeps must be passed a Getter");u(t).forEach((function(t){if((0,p.isKeyPath)(t))e.add((0,f.List)(t));else{if(!i(t))throw new Error("Invalid getter, each dependency must be a KeyPath or Getter");e.union(a(t))}}))}));return e.union(n)}function s(t){if(!(0,p.isKeyPath)(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,_]}function c(t){if(t.hasOwnProperty("__storeDeps"))return t.__storeDeps;var e=a(t).map((function(t){return t.first()})).filter((function(t){return!!t}));return Object.defineProperty(t,"__storeDeps",{enumerable:!1,configurable:!1,writable:!1,value:e}),e}Object.defineProperty(e,"__esModule",{value:!0});var f=n(3),h=r(f),l=n(4),p=n(11),_=function(t){return t};e.default={isGetter:i,getComputeFn:o,getFlattenedDeps:a,getStoreDeps:c,getDeps:u,fromKeyPath:s},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,s.isArray)(t)&&!(0,s.isFunction)(t[t.length-1])}function o(t,e){var n=a.default.List(t),r=a.default.List(e);return a.default.is(n,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.isKeyPath=i,e.isEqual=o;var u=n(3),a=r(u),s=n(4)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=(0,r.Map)({logDispatches:!1,logAppState:!1,logDirtyStores:!1,throwOnUndefinedActionType:!1,throwOnUndefinedStoreReturnValue:!1,throwOnNonImmutableStore:!1,throwOnDispatchInDispatch:!1});e.PROD_OPTIONS=i;var o=(0,r.Map)({logDispatches:!0,logAppState:!0,logDirtyStores:!0,throwOnUndefinedActionType:!0,throwOnUndefinedStoreReturnValue:!0,throwOnNonImmutableStore:!0,throwOnDispatchInDispatch:!0});e.DEBUG_OPTIONS=o;var u=(0,r.Record)({dispatchId:0,state:(0,r.Map)(),stores:(0,r.Map)(),cache:(0,r.Map)(),storeStates:(0,r.Map)(),dirtyStores:(0,r.Set)(),debug:!1,options:i});e.ReactorState=u;var a=(0,r.Record)({any:(0,r.Set)(),stores:(0,r.Map)({}),observersMap:(0,r.Map)({}),nextId:1});e.ObserverState=a}])}))})),Ne=t(je),ke=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n},Pe=ke,Ue=Pe({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),He=Ne.Store,xe=Ne.toImmutable,Ve=new He({getInitialState:function(){return xe({isValidating:!1,authToken:!1,host:null,isInvalid:!1,errorMessage:""})},initialize:function(){this.on(Ue.VALIDATING_AUTH_TOKEN,n),this.on(Ue.VALID_AUTH_TOKEN,r),this.on(Ue.INVALID_AUTH_TOKEN,i)}}),qe=Ne.Store,Fe=Ne.toImmutable,Ge=new qe({getInitialState:function(){return Fe({authToken:null,host:""})},initialize:function(){this.on(Ue.VALID_AUTH_TOKEN,o),this.on(Ue.LOG_OUT,u)}}),Ke=Ne.Store,Be=new Ke({getInitialState:function(){return!0},initialize:function(){this.on(Ue.VALID_AUTH_TOKEN,a)}}),Ye=Pe({STREAM_START:null,STREAM_STOP:null,STREAM_ERROR:null}),Je=Ne.Store,We=Ne.toImmutable,Xe=new Je({getInitialState:function(){return We({isStreaming:!1,hasError:!1})},initialize:function(){this.on(Ye.STREAM_START,s),this.on(Ye.STREAM_ERROR,c),this.on(Ye.LOG_OUT,f)}}),Qe=1,Ze=2,$e=3,tn=function(t,e){this.url=t,this.options=e||{},this.commandId=1,this.commands={},this.connectionTries=0,this.eventListeners={},this.closeRequested=!1};tn.prototype.addEventListener=function(t,e){var n=this.eventListeners[t];n||(n=this.eventListeners[t]=[]),n.push(e)},tn.prototype.fireEvent=function(t){var e=this;(this.eventListeners[t]||[]).forEach((function(t){return t(e)}))},tn.prototype.connect=function(){var t=this;return new Promise(function(e,n){var r=t.commands;Object.keys(r).forEach((function(t){var e=r[t];e.reject&&e.reject(S($e,"Connection lost"))}));var i=!1;t.connectionTries+=1,t.socket=new WebSocket(t.url),t.socket.addEventListener("open",(function(){t.connectionTries=0})),t.socket.addEventListener("message",(function(o){var u=JSON.parse(o.data);switch(u.type){case"event":t.commands[u.id].eventCallback(u.event);break;case"result":u.success?t.commands[u.id].resolve(u):t.commands[u.id].reject(u.error),delete t.commands[u.id];break;case"pong":break;case"auth_required":t.sendMessage(h(t.options.authToken));break;case"auth_invalid":n(Ze),i=!0;break;case"auth_ok":e(t),t.fireEvent("ready"),t.commandId=1,t.commands={},Object.keys(r).forEach((function(e){var n=r[e];n.eventType&&t.subscribeEvents(n.eventCallback,n.eventType).then((function(t){n.unsubscribe=t}))}))}})),t.socket.addEventListener("close",(function(){if(!i&&!t.closeRequested){0===t.connectionTries?t.fireEvent("disconnected"):n(Qe);var e=1e3*Math.min(t.connectionTries,5);setTimeout((function(){return t.connect()}),e)}}))})},tn.prototype.close=function(){this.closeRequested=!0,this.socket.close()},tn.prototype.getStates=function(){return this.sendMessagePromise(l()).then(b)},tn.prototype.getServices=function(){return this.sendMessagePromise(_()).then(b)},tn.prototype.getPanels=function(){return this.sendMessagePromise(d()).then(b)},tn.prototype.getConfig=function(){return this.sendMessagePromise(p()).then(b)},tn.prototype.callService=function(t,e,n){return this.sendMessagePromise(v(t,e,n))},tn.prototype.subscribeEvents=function(t,e){var n=this;return this.sendMessagePromise(y(e)).then((function(r){var i={eventCallback:t,eventType:e,unsubscribe:function(){return n.sendMessagePromise(m(r.id)).then((function(){delete n.commands[r.id]}))}};return n.commands[r.id]=i,function(){return i.unsubscribe()}}))},tn.prototype.ping=function(){return this.sendMessagePromise(g())},tn.prototype.sendMessage=function(t){this.socket.send(JSON.stringify(t))},tn.prototype.sendMessagePromise=function(t){var e=this;return new Promise(function(n,r){e.commandId+=1;var i=e.commandId;t.id=i,e.commands[i]={resolve:n,reject:r},e.sendMessage(t)})};var en=Pe({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),nn=Ne.Store,rn=new nn({getInitialState:function(){return!0},initialize:function(){this.on(en.API_FETCH_ALL_START,(function(){return!0})),this.on(en.API_FETCH_ALL_SUCCESS,(function(){return!1})),this.on(en.API_FETCH_ALL_FAIL,(function(){return!1})),this.on(en.LOG_OUT,(function(){return!1}))}}),on=I,un=Pe({API_FETCH_SUCCESS:null,API_FETCH_START:null,API_FETCH_FAIL:null,API_SAVE_SUCCESS:null,API_SAVE_START:null,API_SAVE_FAIL:null,API_DELETE_SUCCESS:null,API_DELETE_START:null,API_DELETE_FAIL:null,LOG_OUT:null}),an=Ne.Store,sn=Ne.toImmutable,cn=new an({getInitialState:function(){return sn({})},initialize:function(){var t=this;this.on(un.API_FETCH_SUCCESS,O),this.on(un.API_SAVE_SUCCESS,O),this.on(un.API_DELETE_SUCCESS,w),this.on(un.LOG_OUT,(function(){return t.getInitialState()}))}}),fn=Object.prototype.hasOwnProperty,hn=Object.prototype.propertyIsEnumerable,ln=A()?Object.assign:function(t,e){for(var n,r,i=arguments,o=T(t),u=1;u<arguments.length;u++){n=Object(i[u]);for(var a in n)fn.call(n,a)&&(o[a]=n[a]);if(Object.getOwnPropertySymbols){r=Object.getOwnPropertySymbols(n);for(var s=0;s<r.length;s++)hn.call(n,r[s])&&(o[r[s]]=n[r[s]]); -}}return o},pn=Ne.toImmutable,_n=D,dn=Object.freeze({createApiActions:_n,register:N,createHasDataGetter:k,createEntityMapGetter:P,createByIdGetter:U}),vn=["playing","paused","unknown"],yn=function(t,e){this.serviceActions=t.serviceActions,this.stateObj=e},mn={isOff:{},isIdle:{},isMuted:{},isPaused:{},isPlaying:{},isMusic:{},isTVShow:{},hasMediaControl:{},volumeSliderValue:{},showProgress:{},currentProgress:{},supportsPause:{},supportsVolumeSet:{},supportsVolumeMute:{},supportsPreviousTrack:{},supportsNextTrack:{},supportsTurnOn:{},supportsTurnOff:{},supportsPlayMedia:{},supportsVolumeButtons:{},primaryText:{},secondaryText:{}};mn.isOff.get=function(){return"off"===this.stateObj.state},mn.isIdle.get=function(){return"idle"===this.stateObj.state},mn.isMuted.get=function(){return this.stateObj.attributes.is_volume_muted},mn.isPaused.get=function(){return"paused"===this.stateObj.state},mn.isPlaying.get=function(){return"playing"===this.stateObj.state},mn.isMusic.get=function(){return"music"===this.stateObj.attributes.media_content_type},mn.isTVShow.get=function(){return"tvshow"===this.stateObj.attributes.media_content_type},mn.hasMediaControl.get=function(){return vn.indexOf(this.stateObj.state)!==-1},mn.volumeSliderValue.get=function(){return 100*this.stateObj.attributes.volume_level},mn.showProgress.get=function(){return(this.isPlaying||this.isPaused)&&"media_position"in this.stateObj.attributes&&"media_position_updated_at"in this.stateObj.attributes},mn.currentProgress.get=function(){return this.stateObj.attributes.media_position+(Date.now()-new Date(this.stateObj.attributes.media_position_updated_at))/1e3},mn.supportsPause.get=function(){return 0!==(1&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeSet.get=function(){return 0!==(4&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeMute.get=function(){return 0!==(8&this.stateObj.attributes.supported_media_commands)},mn.supportsPreviousTrack.get=function(){return 0!==(16&this.stateObj.attributes.supported_media_commands)},mn.supportsNextTrack.get=function(){return 0!==(32&this.stateObj.attributes.supported_media_commands)},mn.supportsTurnOn.get=function(){return 0!==(128&this.stateObj.attributes.supported_media_commands)},mn.supportsTurnOff.get=function(){return 0!==(256&this.stateObj.attributes.supported_media_commands)},mn.supportsPlayMedia.get=function(){return 0!==(512&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeButtons.get=function(){return 0!==(1024&this.stateObj.attributes.supported_media_commands)},mn.primaryText.get=function(){return this.stateObj.attributes.media_title||this.stateObj.stateDisplay},mn.secondaryText.get=function(){if(this.isMusic)return this.stateObj.attributes.media_artist;if(this.isTVShow){var t=this.stateObj.attributes.media_series_title;return this.stateObj.attributes.media_season&&(t+=" S"+this.stateObj.attributes.media_season,this.stateObj.attributes.media_episode&&(t+="E"+this.stateObj.attributes.media_episode)),t}return this.stateObj.attributes.app_name?this.stateObj.attributes.app_name:""},yn.prototype.mediaPlayPause=function(){this.callService("media_play_pause")},yn.prototype.nextTrack=function(){this.callService("media_next_track")},yn.prototype.playbackControl=function(){this.callService("media_play_pause")},yn.prototype.previousTrack=function(){this.callService("media_previous_track")},yn.prototype.setVolume=function(t){this.callService("volume_set",{volume_level:t})},yn.prototype.togglePower=function(){this.isOff?this.turnOn():this.turnOff()},yn.prototype.turnOff=function(){this.callService("turn_off")},yn.prototype.turnOn=function(){this.callService("turn_on")},yn.prototype.volumeDown=function(){this.callService("volume_down")},yn.prototype.volumeMute=function(t){if(!this.supportsVolumeMute)throw new Error("Muting volume not supported");this.callService("volume_mute",{is_volume_muted:t})},yn.prototype.volumeUp=function(){this.callService("volume_down")},yn.prototype.callService=function(t,e){var n=e||{};n.entity_id=this.stateObj.entityId,this.serviceActions.callService("media_player",t,n)},Object.defineProperties(yn.prototype,mn);var gn=Ne.Immutable,Sn=Ne.toJS,bn="entity",En=new gn.Record({entityId:null,domain:null,objectId:null,state:null,entityDisplay:null,stateDisplay:null,lastChanged:null,lastChangedAsDate:null,lastUpdated:null,lastUpdatedAsDate:null,attributes:{},isCustomGroup:null},"Entity"),In=(function(t){function e(e,n,r,i,o){void 0===o&&(o={});var u=e.split("."),a=u[0],s=u[1],c=n.replace(/_/g," ");o.unit_of_measurement&&(c+=" "+o.unit_of_measurement),t.call(this,{entityId:e,domain:a,objectId:s,state:n,stateDisplay:c,lastChanged:r,lastUpdated:i,attributes:o,entityDisplay:o.friendly_name||s.replace(/_/g," "),lastChangedAsDate:H(r),lastUpdatedAsDate:H(i),isCustomGroup:"group"===a&&!o.auto})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.entityId},e.prototype.domainModel=function(t){if("media_player"!==this.domain)throw new Error("Domain does not have a model");return new yn(t,this)},e.delete=function(t,e){return on(t,"DELETE","states/"+e.entityId)},e.save=function(t,e){var n=Sn(e),r=n.entityId,i=n.state,o=n.attributes;void 0===o&&(o={});var u={state:i,attributes:o};return on(t,"POST","states/"+r,u)},e.fetch=function(t,e){return on(t,"GET","states/"+e)},e.fetchAll=function(t){return on(t,"GET","states")},e.fromJSON=function(t){var n=t.entity_id,r=t.state,i=t.last_changed,o=t.last_updated,u=t.attributes;return new e(n,r,i,o,u)},Object.defineProperties(e.prototype,n),e})(En);In.entity=bn;var On=_n(In),wn=k(In),Tn=P(In),An=U(In),Dn=[Tn,function(t){return t.filter((function(t){return!t.attributes.hidden}))}],Cn=Object.freeze({hasData:wn,entityMap:Tn,byId:An,visibleEntityMap:Dn}),zn=On,Rn=Cn,Mn=Object.freeze({actions:zn,getters:Rn}),Ln=Pe({NOTIFICATION_CREATED:null}),jn=Ne.Store,Nn=Ne.Immutable,kn=new jn({getInitialState:function(){return new Nn.OrderedMap},initialize:function(){this.on(Ln.NOTIFICATION_CREATED,x),this.on(Ln.LOG_OUT,V)}}),Pn=Object.freeze({createNotification:q}),Un=["notifications"],Hn=[Un,function(t){return t.last()}],xn=Object.freeze({notificationMap:Un,lastNotificationMessage:Hn}),Vn=Pn,qn=xn,Fn=Object.freeze({register:F,actions:Vn,getters:qn}),Gn=Ne.Immutable,Kn=Ne.toImmutable,Bn="service",Yn=new Gn.Record({domain:null,services:[]},"ServiceDomain"),Jn=(function(t){function e(e,n){t.call(this,{domain:e,services:n})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.domain},e.fetchAll=function(){return on("GET","services")},e.fromJSON=function(t){var n=t.domain,r=t.services;return new e(n,Kn(r))},Object.defineProperties(e.prototype,n),e})(Yn);Jn.entity=Bn;var Wn=k(Jn),Xn=P(Jn),Qn=U(Jn),Zn=Object.freeze({hasData:Wn,entityMap:Xn,byDomain:Qn,hasService:B,canToggleEntity:Y}),$n=_n(Jn);$n.serviceRegistered=function(t,e,n){var r=t.evaluateToJS(Qn(e));if(r)r.services[n]={};else{var i;r={domain:e,services:(i={},i[n]={},i)}}$n.incrementData(t,r)},$n.callTurnOn=function(t,e,n){return void 0===n&&(n={}),$n.callService(t,"homeassistant","turn_on",ln({},n,{entity_id:e}))},$n.callTurnOff=function(t,e,n){return void 0===n&&(n={}),$n.callService(t,"homeassistant","turn_off",ln({},n,{entity_id:e}))},$n.callService=function(t,e,n,r){return void 0===r&&(r={}),on(t,"POST","services/"+e+"/"+n,r).then((function(i){"turn_on"===n&&r.entity_id?Vn.createNotification(t,"Turned on "+r.entity_id+"."):"turn_off"===n&&r.entity_id?Vn.createNotification(t,"Turned off "+r.entity_id+"."):Vn.createNotification(t,"Service "+e+"/"+n+" called."),zn.incrementData(t,i)}))};var tr=$n,er=Zn,nr=Object.freeze({actions:tr,getters:er}),rr=Ne.Immutable,ir="event",or=new rr.Record({event:null,listenerCount:0},"Event"),ur=(function(t){function e(e,n){void 0===n&&(n=0),t.call(this,{event:e,listenerCount:n})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.event},e.fetchAll=function(t){return on(t,"GET","events")},e.fromJSON=function(t){var n=t.event,r=t.listener_count;return new e(n,r)},Object.defineProperties(e.prototype,n),e})(or);ur.entity=ir;var ar=_n(ur);ar.fireEvent=function(t,e,n){return void 0===n&&(n={}),on(t,"POST","events/"+e,n).then((function(){Vn.createNotification(t,"Event "+e+" successful fired!")}))};var sr=k(ur),cr=P(ur),fr=U(ur),hr=Object.freeze({hasData:sr,entityMap:cr,byId:fr}),lr=ar,pr=hr,_r=Object.freeze({actions:lr,getters:pr}),dr=Pe({SERVER_CONFIG_LOADED:null,COMPONENT_LOADED:null,LOG_OUT:null}),vr=Ne.Store,yr=Ne.toImmutable,mr=new vr({getInitialState:function(){return yr([])},initialize:function(){this.on(dr.COMPONENT_LOADED,J),this.on(dr.SERVER_CONFIG_LOADED,W),this.on(dr.LOG_OUT,X)}}),gr=Ne.Store,Sr=Ne.toImmutable,br=new gr({getInitialState:function(){return Sr({latitude:null,longitude:null,location_name:"Home",unit_system:"metric",time_zone:"UTC",config_dir:null,serverVersion:"unknown"})},initialize:function(){this.on(dr.SERVER_CONFIG_LOADED,Q),this.on(dr.LOG_OUT,Z)}}),Er=Object.freeze({configLoaded:$,fetchAll:tt,componentLoaded:et}),Ir=[["serverConfig","latitude"],["serverConfig","longitude"],function(t,e){return{latitude:t,longitude:e}}],Or=["serverConfig","location_name"],wr=["serverConfig","config_dir"],Tr=["serverConfig","serverVersion"],Ar=Object.freeze({locationGPS:Ir,locationName:Or,configDir:wr,serverVersion:Tr,isComponentLoaded:nt}),Dr=Er,Cr=Ar,zr=Object.freeze({register:rt,actions:Dr,getters:Cr}),Rr=Pe({NAVIGATE:null,SHOW_SIDEBAR:null,PANELS_LOADED:null,LOG_OUT:null}),Mr=Ne.Store,Lr=new Mr({getInitialState:function(){return"states"},initialize:function(){this.on(Rr.NAVIGATE,it),this.on(Rr.LOG_OUT,ot)}}),jr=Ne.Store,Nr=Ne.toImmutable,kr=new jr({getInitialState:function(){return Nr({})},initialize:function(){this.on(Rr.PANELS_LOADED,ut),this.on(Rr.LOG_OUT,at)}}),Pr=Ne.Store,Ur=new Pr({getInitialState:function(){return!1},initialize:function(){this.on(Rr.SHOW_SIDEBAR,st),this.on(Rr.LOG_OUT,ct)}}),Hr=Object.freeze({showSidebar:ft,navigate:ht,panelsLoaded:lt}),xr=["panels"],Vr=["currentPanel"],qr=[xr,Vr,function(t,e){return t.get(e)||null}],Fr=["showSidebar"],Gr=Object.freeze({panels:xr,activePanelName:Vr,activePanel:qr,showSidebar:Fr}),Kr=Pe({SELECT_ENTITY:null,LOG_OUT:null}),Br=Ne.Store,Yr=new Br({getInitialState:function(){return null},initialize:function(){this.on(Kr.SELECT_ENTITY,pt),this.on(Kr.LOG_OUT,_t)}}),Jr=Object.freeze({selectEntity:dt,deselectEntity:vt}),Wr=Pe({ENTITY_HISTORY_DATE_SELECTED:null,ENTITY_HISTORY_FETCH_START:null,ENTITY_HISTORY_FETCH_ERROR:null,ENTITY_HISTORY_FETCH_SUCCESS:null,RECENT_ENTITY_HISTORY_FETCH_START:null,RECENT_ENTITY_HISTORY_FETCH_ERROR:null,RECENT_ENTITY_HISTORY_FETCH_SUCCESS:null,LOG_OUT:null}),Xr=Ne.Store,Qr=new Xr({getInitialState:function(){var t=new Date;return t.setDate(t.getDate()-1),t.setHours(0,0,0,0),t.toISOString()},initialize:function(){this.on(Wr.ENTITY_HISTORY_DATE_SELECTED,mt),this.on(Wr.LOG_OUT,gt)}}),Zr=Ne.Store,$r=Ne.toImmutable,ti=new Zr({getInitialState:function(){return $r({})},initialize:function(){this.on(Wr.ENTITY_HISTORY_FETCH_SUCCESS,St),this.on(Wr.LOG_OUT,bt)}}),ei=Ne.Store,ni=new ei({getInitialState:function(){return!1},initialize:function(){this.on(Wr.ENTITY_HISTORY_FETCH_START,(function(){return!0})),this.on(Wr.ENTITY_HISTORY_FETCH_SUCCESS,(function(){return!1})),this.on(Wr.ENTITY_HISTORY_FETCH_ERROR,(function(){return!1})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_START,(function(){return!0})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,(function(){return!1})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_ERROR,(function(){return!1})),this.on(Wr.LOG_OUT,(function(){return!1}))}}),ri=Ne.Store,ii=Ne.toImmutable,oi=new ri({getInitialState:function(){return ii({})},initialize:function(){this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,Et),this.on(Wr.LOG_OUT,It)}}),ui=Ne.Store,ai=Ne.toImmutable,si="ALL_ENTRY_FETCH",ci=new ui({getInitialState:function(){return ai({})},initialize:function(){this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,Ot),this.on(Wr.LOG_OUT,wt)}}),fi=Ne.toImmutable,hi=["isLoadingEntityHistory"],li=["currentEntityHistoryDate"],pi=["entityHistory"],_i=[li,pi,function(t,e){return e.get(t)||fi({})}],di=[li,pi,function(t,e){return!!e.get(t)}],vi=["recentEntityHistory"],yi=["recentEntityHistory"],mi=Object.freeze({isLoadingEntityHistory:hi,currentDate:li,entityHistoryMap:pi,entityHistoryForCurrentDate:_i,hasDataForCurrentDate:di,recentEntityHistoryMap:vi,recentEntityHistoryUpdatedMap:yi}),gi=Object.freeze({changeCurrentDate:Tt,fetchRecent:At,fetchDate:Dt,fetchSelectedDate:Ct}),Si=gi,bi=mi,Ei=Object.freeze({register:zt,actions:Si,getters:bi}),Ii=["moreInfoEntityId"],Oi=[Ii,function(t){return null!==t}],wi=[Ii,Rn.entityMap,function(t,e){return e.get(t)||null}],Ti=[Ii,bi.recentEntityHistoryMap,function(t,e){return e.get(t)}],Ai=[Ii,bi.recentEntityHistoryUpdatedMap,function(t,e){return yt(e.get(t))}],Di=Object.freeze({currentEntityId:Ii,hasCurrentEntityId:Oi,currentEntity:wi,currentEntityHistory:Ti,isCurrentEntityHistoryStale:Ai}),Ci=Jr,zi=Di,Ri=Object.freeze({register:Rt,actions:Ci,getters:zi}),Mi=Pe({SELECT_VIEW:null}),Li=Ne.Store,ji=new Li({getInitialState:function(){return null},initialize:function(){this.on(Mi.SELECT_VIEW,(function(t,e){var n=e.view;return n})),this.on(un.API_FETCH_SUCCESS,Mt)}}),Ni=Object.freeze({selectView:Lt}),ki=Ne.Immutable,Pi="group.default_view",Ui=["persistent_notification","configurator"],Hi=["currentView"],xi=[Rn.entityMap,function(t){return t.filter((function(t){return"group"===t.domain&&t.attributes.view&&t.entityId!==Pi}))}],Vi=[Rn.entityMap,Hi,function(t,e){var n;return n=e?t.get(e):t.get(Pi),n?(new ki.Map).withMutations((function(e){jt(e,t,n),t.valueSeq().forEach((function(t,n){Ui.indexOf(t.domain)!==-1&&e.set(n,t)}))})):t.filter((function(t){return!t.attributes.hidden}))}],qi=Object.freeze({currentView:Hi,views:xi,currentViewEntities:Vi}),Fi=Ni,Gi=qi,Ki=Object.freeze({register:Nt,actions:Fi,getters:Gi}),Bi=history.pushState&&!0,Yi="Home Assistant",Ji={},Wi=Object.freeze({startSync:Vt,stopSync:qt}),Xi=Hr,Qi=Gr,Zi=Wi,$i=Object.freeze({register:Ft,actions:Xi,getters:Qi,urlSync:Zi}),to=Object.freeze({fetchAll:Gt}),eo=[Rn.hasData,pr.hasData,er.hasData,function(t,e,n){return t&&e&&n}],no=["isFetchingData"],ro=Object.freeze({isDataLoaded:eo,isFetching:no}),io=to,oo=ro,uo=Object.freeze({register:Kt,actions:io,getters:oo}),ao=function(t,e){switch(e.event_type){case"state_changed":e.data.new_state?zn.incrementData(t,e.data.new_state):zn.removeData(t,e.data.entity_id);break;case"component_loaded":Dr.componentLoaded(t,e.data.component);break;case"service_registered":tr.serviceRegistered(t,e.data.domain,e.data.service)}},so=6e4,co=["state_changed","component_loaded","service_registered"],fo={},ho=Object.freeze({start:Jt}),lo=["streamStatus","isStreaming"],po=["streamStatus","hasError"],_o=Object.freeze({isStreamingEvents:lo,hasStreamingEventsError:po}),vo=ho,yo=_o,mo=Object.freeze({register:Wt,actions:vo,getters:yo}),go="Unexpected error",So=Object.freeze({validate:Xt,logOut:Qt}),bo=["authAttempt","isValidating"],Eo=["authAttempt","isInvalid"],Io=["authAttempt","errorMessage"],Oo=["rememberAuth"],wo=[["authAttempt","authToken"],["authAttempt","host"],function(t,e){return{authToken:t,host:e}}],To=["authCurrent","authToken"],Ao=[To,["authCurrent","host"],function(t,e){return{authToken:t,host:e}}],Do=[bo,["authAttempt","authToken"],["authCurrent","authToken"],function(t,e,n){return t?e:n}],Co=[bo,wo,Ao,function(t,e,n){return t?e:n}],zo=Object.freeze({isValidating:bo,isInvalidAttempt:Eo,attemptErrorMessage:Io,rememberAuth:Oo,attemptAuthInfo:wo,currentAuthToken:To,currentAuthInfo:Ao,authToken:Do,authInfo:Co}),Ro=So,Mo=zo,Lo=Object.freeze({register:Zt,actions:Ro,getters:Mo}),jo=$t(),No={authToken:{getter:[Mo.currentAuthToken,Mo.rememberAuth,function(t,e){return e?t:null}],defaultValue:null},showSidebar:{getter:Qi.showSidebar,defaultValue:!1}},ko={};Object.keys(No).forEach((function(t){t in jo||(jo[t]=No[t].defaultValue),Object.defineProperty(ko,t,{get:function(){try{return JSON.parse(jo[t])}catch(e){return No[t].defaultValue}}})})),ko.startSync=function(t){Object.keys(No).forEach((function(e){var n=No[e],r=n.getter,i=function(t){jo[e]=JSON.stringify(t)};t.observe(r,i),i(t.evaluate(r))}))};var Po=ko,Uo=Ne.Reactor,Ho=0,xo=Ne.toImmutable,Vo={UNIT_TEMP_C:"°C",UNIT_TEMP_F:"°F"},qo={expandGroup:ne,isStaleTime:yt,parseDateTime:H,temperatureUnits:Vo},Fo=Object.freeze({fetchErrorLog:re}),Go=Fo,Ko=Object.freeze({actions:Go}),Bo=Pe({LOGBOOK_DATE_SELECTED:null,LOGBOOK_ENTRIES_FETCH_START:null,LOGBOOK_ENTRIES_FETCH_ERROR:null,LOGBOOK_ENTRIES_FETCH_SUCCESS:null}),Yo=Ne.Store,Jo=new Yo({getInitialState:function(){var t=new Date;return t.setHours(0,0,0,0),t.toISOString()},initialize:function(){this.on(Bo.LOGBOOK_DATE_SELECTED,ie),this.on(Bo.LOG_OUT,oe)}}),Wo=Ne.Store,Xo=new Wo({getInitialState:function(){return!1},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_START,(function(){return!0})),this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,(function(){return!1})),this.on(Bo.LOGBOOK_ENTRIES_FETCH_ERROR,(function(){return!1})),this.on(Bo.LOG_OUT,(function(){return!1}))}}),Qo=Ne.Immutable,Zo=new Qo.Record({when:null,name:null,message:null,domain:null,entityId:null},"LogbookEntry"),$o=(function(t){function e(e,n,r,i,o){t.call(this,{when:e,name:n,message:r,domain:i,entityId:o})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.fromJSON=function(t){var n=t.when,r=t.name,i=t.message,o=t.domain,u=t.entity_id;return new e(H(n),r,i,o,u)},e})(Zo),tu=Ne.Store,eu=Ne.toImmutable,nu=new tu({getInitialState:function(){return eu({})},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,ue),this.on(Bo.LOG_OUT,ae)}}),ru=Ne.Store,iu=Ne.toImmutable,ou=new ru({getInitialState:function(){return iu({})},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,se),this.on(Bo.LOG_OUT,ce)}}),uu=Object.freeze({changeCurrentDate:fe,fetchDate:he}),au=Ne.toImmutable,su=6e4,cu=["currentLogbookDate"],fu=[cu,["logbookEntriesUpdated"],function(t,e){return le(e.get(t))}],hu=[cu,["logbookEntries"],function(t,e){return e.get(t)||au([])}],lu=["isLoadingLogbookEntries"],pu=Object.freeze({currentDate:cu,isCurrentStale:fu,currentEntries:hu,isLoadingEntries:lu}),_u=uu,du=pu,vu=Object.freeze({register:pe,actions:_u,getters:du}),yu=Pe({PUSH_NOTIFICATIONS_SUBSCRIBE:null,PUSH_NOTIFICATIONS_UNSUBSCRIBE:null}),mu=Ne.Store,gu=Ne.toImmutable,Su=new mu({getInitialState:function(){return gu({supported:"PushManager"in window&&("https:"===document.location.protocol||"localhost"===document.location.hostname||"127.0.0.1"===document.location.hostname),active:"Notification"in window&&"granted"===Notification.permission})},initialize:function(){this.on(yu.PUSH_NOTIFICATIONS_SUBSCRIBE,_e),this.on(yu.PUSH_NOTIFICATIONS_UNSUBSCRIBE,de),this.on(yu.LOG_OUT,ve)}}),bu=Object.freeze({subscribePushNotifications:ye,unsubscribePushNotifications:me}),Eu=["pushNotifications","supported"],Iu=["pushNotifications","active"],Ou=Object.freeze({isSupported:Eu,isActive:Iu}),wu=bu,Tu=Ou,Au=Object.freeze({register:ge,actions:wu,getters:Tu}),Du=Object.freeze({render:Se}),Cu=Du,zu=Object.freeze({actions:Cu}),Ru=Ne.Store,Mu=new Ru({getInitialState:function(){return"webkitSpeechRecognition"in window}}),Lu=Pe({VOICE_START:null,VOICE_RESULT:null,VOICE_TRANSMITTING:null,VOICE_DONE:null,VOICE_ERROR:null}),ju=Ne.Store,Nu=Ne.toImmutable,ku=new ju({getInitialState:function(){return Nu({isListening:!1,isTransmitting:!1,interimTranscript:"",finalTranscript:""})},initialize:function(){this.on(Lu.VOICE_START,be),this.on(Lu.VOICE_RESULT,Ee),this.on(Lu.VOICE_TRANSMITTING,Ie),this.on(Lu.VOICE_DONE,Oe),this.on(Lu.VOICE_ERROR,we),this.on(Lu.LOG_OUT,Te)}}),Pu={},Uu=Object.freeze({stop:Ce,finish:ze,listen:Re}),Hu=["isVoiceSupported"],xu=["currentVoiceCommand","isListening"],Vu=["currentVoiceCommand","isTransmitting"],qu=["currentVoiceCommand","interimTranscript"],Fu=["currentVoiceCommand","finalTranscript"],Gu=[qu,Fu,function(t,e){return t.slice(e.length)}],Ku=Object.freeze({isVoiceSupported:Hu,isListening:xu,isTransmitting:Vu,interimTranscript:qu,finalTranscript:Fu,extraInterimTranscript:Gu}),Bu=Uu,Yu=Ku,Ju=Object.freeze({register:Me,actions:Bu,getters:Yu}),Wu=function(){var t=te();Object.defineProperties(this,{demo:{value:!1,enumerable:!0},dev:{value:!1,enumerable:!0},localStoragePreferences:{value:Po,enumerable:!0},reactor:{value:t,enumerable:!0},util:{value:qo,enumerable:!0},callApi:{value:on.bind(null,t)},startLocalStoragePreferencesSync:{value:Po.startSync.bind(Po,t)},startUrlSync:{value:Zi.startSync.bind(null,t)},stopUrlSync:{value:Zi.stopSync.bind(null,t)}}),ee(this,t,{auth:Lo,config:zr,entity:Mn,entityHistory:Ei,errorLog:Ko,event:_r,logbook:vu,moreInfo:Ri,navigation:$i,notification:Fn,pushNotification:Au,restApi:dn,service:nr,stream:mo,sync:uo,template:zu,view:Ki,voice:Ju})},Xu=new Wu;window.validateAuth=function(t,e){Xu.authActions.validate(t,{rememberAuth:e,useStreaming:Xu.localStoragePreferences.useStreaming})},window.removeInitMsg=function(){var t=document.getElementById("ha-init-skeleton");t&&t.parentElement.removeChild(t)},Xu.reactor.batch((function(){Xu.navigationActions.showSidebar(Xu.localStoragePreferences.showSidebar),window.noAuth?window.validateAuth("",!1):Xu.localStoragePreferences.authToken&&window.validateAuth(Xu.localStoragePreferences.authToken,!0)})),setTimeout(Xu.startLocalStoragePreferencesSync,5e3),"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("/service_worker.js")})),window.hass=Xu})(); +!(function(){"use strict";function t(t){return t&&t.__esModule?t.default:t}function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}function n(t,e){var n=e.authToken,r=e.host;return xe({authToken:n,host:r,isValidating:!0,isInvalid:!1,errorMessage:""})}function r(){return Ve.getInitialState()}function i(t,e){var n=e.errorMessage;return t.withMutations((function(t){return t.set("isValidating",!1).set("isInvalid",!0).set("errorMessage",n)}))}function o(t,e){var n=e.authToken,r=e.host;return Fe({authToken:n,host:r})}function u(){return Ge.getInitialState()}function a(t,e){var n=e.rememberAuth;return n}function s(t){return t.withMutations((function(t){t.set("isStreaming",!0).set("hasError",!1)}))}function c(t){return t.withMutations((function(t){t.set("isStreaming",!1).set("hasError",!0)}))}function f(){return Xe.getInitialState()}function h(t){return{type:"auth",api_password:t}}function l(){return{type:"get_states"}}function p(){return{type:"get_config"}}function _(){return{type:"get_services"}}function d(){return{type:"get_panels"}}function v(t,e,n){var r={type:"call_service",domain:t,service:e};return n&&(r.service_data=n),r}function y(t){var e={type:"subscribe_events"};return t&&(e.event_type=t),e}function m(t){return{type:"unsubscribe_events",subscription:t}}function g(){return{type:"ping"}}function S(t,e){return{type:"result",success:!1,error:{code:t,message:e}}}function b(t){return t.result}function E(t,e){var n=new tn(t,e);return n.connect()}function I(t,e,n,r){void 0===r&&(r=null);var i=t.evaluate(Mo.authInfo),o=i.host+"/api/"+n;return new Promise(function(t,n){var u=new XMLHttpRequest;u.open(e,o,!0),u.setRequestHeader("X-HA-access",i.authToken),u.onload=function(){var e;try{e="application/json"===u.getResponseHeader("content-type")?JSON.parse(u.responseText):u.responseText}catch(t){e=u.responseText}u.status>199&&u.status<300?t(e):n(e)},u.onerror=function(){return n({})},r?(u.setRequestHeader("Content-Type","application/json;charset=UTF-8"),u.send(JSON.stringify(r))):u.send()})}function O(t,e){var n=e.model,r=e.result,i=e.params,o=n.entity;if(!r)return t;var u=i.replace?sn({}):t.get(o),a=Array.isArray(r)?r:[r],s=n.fromJSON||sn;return t.set(o,u.withMutations((function(t){for(var e=0;e<a.length;e++){var n=s(a[e]);t.set(n.id,n)}})))}function w(t,e){var n=e.model,r=e.params;return t.removeIn([n.entity,r.id])}function T(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function A(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map((function(t){return e[t]}));if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}function D(t){var e={};return e.incrementData=function(e,n,r){void 0===r&&(r={}),C(e,t,r,n)},e.replaceData=function(e,n,r){void 0===r&&(r={}),C(e,t,ln({},r,{replace:!0}),n)},e.removeData=function(e,n){j(e,t,{id:n})},t.fetch&&(e.fetch=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_FETCH_START,{model:t,params:n,method:"fetch"}),t.fetch(e,n).then(C.bind(null,e,t,n),z.bind(null,e,t,n))}),e.fetchAll=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_FETCH_START,{model:t,params:n,method:"fetchAll"}),t.fetchAll(e,n).then(C.bind(null,e,t,ln({},n,{replace:!0})),z.bind(null,e,t,n))},t.save&&(e.save=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_SAVE_START,{params:n}),t.save(e,n).then(R.bind(null,e,t,n),M.bind(null,e,t,n))}),t.delete&&(e.delete=function(e,n){return void 0===n&&(n={}),e.dispatch(un.API_DELETE_START,{params:n}),t.delete(e,n).then(j.bind(null,e,t,n),L.bind(null,e,t,n))}),e}function C(t,e,n,r){return t.dispatch(un.API_FETCH_SUCCESS,{model:e,params:n,result:r}),r}function z(t,e,n,r){return t.dispatch(un.API_FETCH_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function R(t,e,n,r){return t.dispatch(un.API_SAVE_SUCCESS,{model:e,params:n,result:r}),r}function M(t,e,n,r){return t.dispatch(un.API_SAVE_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function j(t,e,n,r){return t.dispatch(un.API_DELETE_SUCCESS,{model:e,params:n,result:r}),r}function L(t,e,n,r){return t.dispatch(un.API_DELETE_FAIL,{model:e,params:n,reason:r}),Promise.reject(r)}function N(t){t.registerStores({restApiCache:cn})}function k(t){return[["restApiCache",t.entity],function(t){return!!t}]}function P(t){return[["restApiCache",t.entity],function(t){return t||pn({})}]}function U(t){return function(e){return["restApiCache",t.entity,e]}}function H(t){return new Date(t)}function x(t,e){var n=e.message;return t.set(t.size,n)}function V(){return kn.getInitialState()}function q(t,e){t.dispatch(jn.NOTIFICATION_CREATED,{message:e})}function F(t){t.registerStores({notifications:kn})}function G(t,e){if("lock"===t)return!0;if("garage_door"===t)return!0;var n=e.get(t);return!!n&&n.services.has("turn_on")}function K(t,e){return!!t&&("group"===t.domain?"on"===t.state||"off"===t.state:G(t.domain,e))}function B(t,e){return[Qn(t),function(t){return!!t&&t.services.has(e)}]}function Y(t){return[Rn.byId(t),Xn,K]}function J(t,e){var n=e.component;return t.push(n)}function W(t,e){var n=e.components;return yr(n)}function X(){return mr.getInitialState()}function Q(t,e){var n=e.latitude,r=e.longitude,i=e.location_name,o=e.unit_system,u=e.time_zone,a=e.config_dir,s=e.version;return Sr({latitude:n,longitude:r,location_name:i,unit_system:o,time_zone:u,config_dir:a,serverVersion:s})}function Z(){return br.getInitialState()}function $(t,e){t.dispatch(dr.SERVER_CONFIG_LOADED,e)}function tt(t){on(t,"GET","config").then((function(e){return $(t,e)}))}function et(t,e){t.dispatch(dr.COMPONENT_LOADED,{component:e})}function nt(t){return[["serverComponent"],function(e){return e.contains(t)}]}function rt(t){t.registerStores({serverComponent:mr,serverConfig:br})}function it(t,e){var n=e.pane;return n}function ot(){return jr.getInitialState()}function ut(t,e){var n=e.panels;return Nr(n)}function at(){return kr.getInitialState()}function st(t,e){var n=e.show;return!!n}function ct(){return Ur.getInitialState()}function ft(t,e){t.dispatch(Rr.SHOW_SIDEBAR,{show:e})}function ht(t,e){t.dispatch(Rr.NAVIGATE,{pane:e})}function lt(t,e){t.dispatch(Rr.PANELS_LOADED,{panels:e})}function pt(t,e){var n=e.entityId;return n}function _t(){return Yr.getInitialState()}function dt(t,e){t.dispatch(Kr.SELECT_ENTITY,{entityId:e})}function vt(t){t.dispatch(Kr.SELECT_ENTITY,{entityId:null})}function yt(t){return!t||(new Date).getTime()-t>6e4}function mt(t,e){var n=e.date;return n.toISOString()}function gt(){return Qr.getInitialState()}function St(t,e){var n=e.date,r=e.stateHistory;return 0===r.length?t.set(n,$r({})):t.withMutations((function(t){r.forEach((function(e){return t.setIn([n,e[0].entity_id],$r(e.map(In.fromJSON)))}))}))}function bt(){return ti.getInitialState()}function Et(t,e){var n=e.stateHistory;return t.withMutations((function(t){n.forEach((function(e){return t.set(e[0].entity_id,ii(e.map(In.fromJSON)))}))}))}function It(){return oi.getInitialState()}function Ot(t,e){var n=e.stateHistory,r=(new Date).getTime();return t.withMutations((function(t){n.forEach((function(e){return t.set(e[0].entity_id,r)})),history.length>1&&t.set(si,r)}))}function wt(){return ci.getInitialState()}function Tt(t,e){t.dispatch(Wr.ENTITY_HISTORY_DATE_SELECTED,{date:e})}function At(t,e){void 0===e&&(e=null),t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_START,{});var n="history/period";return null!==e&&(n+="?filter_entity_id="+e),on(t,"GET",n).then((function(e){return t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,{stateHistory:e})}),(function(){return t.dispatch(Wr.RECENT_ENTITY_HISTORY_FETCH_ERROR,{})}))}function Dt(t,e){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_START,{date:e}),on(t,"GET","history/period/"+e).then((function(n){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_SUCCESS,{date:e,stateHistory:n})}),(function(){return t.dispatch(Wr.ENTITY_HISTORY_FETCH_ERROR,{})}))}function Ct(t){var e=t.evaluate(li);return Dt(t,e)}function zt(t){t.registerStores({currentEntityHistoryDate:Qr,entityHistory:ti,isLoadingEntityHistory:ni,recentEntityHistory:oi,recentEntityHistoryUpdated:ci})}function Rt(t){t.registerStores({moreInfoEntityId:Yr})}function Mt(t,e){var n=e.model,r=e.result,i=e.params;if(null===t||"entity"!==n.entity||!i.replace)return t;for(var o=0;o<r.length;o++)if(r[o].entity_id===t)return t;return null}function jt(t,e){t.dispatch(Mi.SELECT_VIEW,{view:e})}function Lt(t,e,n,r){void 0===r&&(r=!0),n.attributes.entity_id.forEach((function(n){if(!t.has(n)){var i=e.get(n);i&&!i.attributes.hidden&&(t.set(n,i),"group"===i.domain&&r&&Lt(t,e,i,!1))}}))}function Nt(t){t.registerStores({currentView:Li})}function kt(t){return Ji[t.hassId]}function Pt(t,e){var n={pane:t};return"states"===t&&(n.view=e||null),n}function Ut(t,e){return"states"===t&&e?"/"+t+"/"+e:"/"+t}function Ht(t){var e,n;if("/"===window.location.pathname)e=t.evaluate(Vr),n=t.evaluate(Gi.currentView);else{var r=window.location.pathname.substr(1).split("/");e=r[0],n=r[1],t.batch((function(){ht(t,e),n&&Fi.selectView(t,n)}))}history.replaceState(Pt(e,n),Yi,Ut(e,n))}function xt(t,e){var n=e.state,r=n.pane,i=n.view;t.evaluate(zi.hasCurrentEntityId)?(kt(t).ignoreNextDeselectEntity=!0,Ci.deselectEntity(t)):r===t.evaluate(Vr)&&i===t.evaluate(Gi.currentView)||t.batch((function(){ht(t,r),void 0!==i&&Fi.selectView(t,i)}))}function Vt(t){if(Bi){Ht(t);var e={ignoreNextDeselectEntity:!1,popstateChangeListener:xt.bind(null,t),unwatchNavigationObserver:t.observe(Vr,(function(t){t!==history.state.pane&&history.pushState(Pt(t,history.state.view),Yi,Ut(t,history.state.view))})),unwatchViewObserver:t.observe(Gi.currentView,(function(t){t!==history.state.view&&history.pushState(Pt(history.state.pane,t),Yi,Ut(history.state.pane,t))})),unwatchMoreInfoObserver:t.observe(zi.hasCurrentEntityId,(function(t){t?history.pushState(history.state,Yi,window.location.pathname):e.ignoreNextDeselectEntity?e.ignoreNextDeselectEntity=!1:setTimeout((function(){return history.back()}),0)}))};Ji[t.hassId]=e,window.addEventListener("popstate",e.popstateChangeListener)}}function qt(t){if(Bi){var e=kt(t);e&&(e.unwatchNavigationObserver(),e.unwatchViewObserver(),e.unwatchMoreInfoObserver(),window.removeEventListener("popstate",e.popstateChangeListener),Ji[t.hassId]=!1)}}function Ft(t){t.registerStores({currentPanel:jr,panels:kr,showSidebar:Ur})}function Gt(t){return t.dispatch(en.API_FETCH_ALL_START,{}),on(t,"GET","bootstrap").then((function(e){t.batch((function(){zn.replaceData(t,e.states),tr.replaceData(t,e.services),lr.replaceData(t,e.events),Dr.configLoaded(t,e.config),Xi.panelsLoaded(t,e.panels),t.dispatch(en.API_FETCH_ALL_SUCCESS,{})}))}),(function(e){return t.dispatch(en.API_FETCH_ALL_FAIL,{message:e}),Promise.reject(e)}))}function Kt(t){t.registerStores({isFetchingData:rn})}function Bt(t,e,n){function r(){var c=(new Date).getTime()-a;c<e&&c>0?i=setTimeout(r,e-c):(i=null,n||(s=t.apply(u,o),i||(u=o=null)))}var i,o,u,a,s;null==e&&(e=100);var c=function(){u=this,o=arguments,a=(new Date).getTime();var c=n&&!i;return i||(i=setTimeout(r,e)),c&&(s=t.apply(u,o),u=o=null),s};return c.clear=function(){i&&(clearTimeout(i),i=null)},c}function Yt(t){var e=fo[t.hassId];e&&(e.scheduleHealthCheck.clear(),e.conn.close(),fo[t.hassId]=!1)}function Jt(t,e){void 0===e&&(e={});var n=e.syncOnInitialConnect;void 0===n&&(n=!0),Yt(t);var r=t.evaluate(Mo.authToken),i="https:"===document.location.protocol?"wss://":"ws://";i+=document.location.hostname,document.location.port&&(i+=":"+document.location.port),i+="/api/websocket",E(i,{authToken:r}).then((function(e){var r=Bt((function(){return e.ping()}),so);r(),e.socket.addEventListener("message",r),fo[t.hassId]={conn:e,scheduleHealthCheck:r},co.forEach((function(n){return e.subscribeEvents(ao.bind(null,t),n)})),t.batch((function(){t.dispatch(Ye.STREAM_START),n&&io.fetchAll(t)})),e.addEventListener("disconnected",(function(){t.dispatch(Ye.STREAM_ERROR)})),e.addEventListener("ready",(function(){t.batch((function(){t.dispatch(Ye.STREAM_START),io.fetchAll(t)}))}))}))}function Wt(t){t.registerStores({streamStatus:Xe})}function Xt(t,e,n){void 0===n&&(n={});var r=n.rememberAuth;void 0===r&&(r=!1);var i=n.host;void 0===i&&(i=""),t.dispatch(Ue.VALIDATING_AUTH_TOKEN,{authToken:e,host:i}),io.fetchAll(t).then((function(){t.dispatch(Ue.VALID_AUTH_TOKEN,{authToken:e,host:i,rememberAuth:r}),vo.start(t,{syncOnInitialConnect:!1})}),(function(e){void 0===e&&(e={});var n=e.message;void 0===n&&(n=go),t.dispatch(Ue.INVALID_AUTH_TOKEN,{errorMessage:n})}))}function Qt(t){t.dispatch(Ue.LOG_OUT,{})}function Zt(t){t.registerStores({authAttempt:Ve,authCurrent:Ge,rememberAuth:Be})}function $t(){if(!("localStorage"in window))return{};var t=window.localStorage,e="___test";try{return t.setItem(e,e),t.removeItem(e),t}catch(t){return{}}}function te(){var t=new Uo({debug:!1});return t.hassId=Ho++,t}function ee(t,e,n){Object.keys(n).forEach((function(r){var i=n[r];if("register"in i&&i.register(e),"getters"in i&&Object.defineProperty(t,r+"Getters",{value:i.getters,enumerable:!0}),"actions"in i){var o={};Object.getOwnPropertyNames(i.actions).forEach((function(t){"function"==typeof i.actions[t]&&Object.defineProperty(o,t,{value:i.actions[t].bind(null,e),enumerable:!0})})),Object.defineProperty(t,r+"Actions",{value:o,enumerable:!0})}}))}function ne(t,e){return xo(t.attributes.entity_id.map((function(t){return e.get(t)})).filter((function(t){return!!t})))}function re(t){return on(t,"GET","error_log")}function ie(t,e){var n=e.date;return n.toISOString()}function oe(){return Jo.getInitialState()}function ue(t,e){var n=e.date,r=e.entries;return t.set(n,eu(r.map($o.fromJSON)))}function ae(){return nu.getInitialState()}function se(t,e){var n=e.date;return t.set(n,(new Date).getTime())}function ce(){return ou.getInitialState()}function fe(t,e){t.dispatch(Bo.LOGBOOK_DATE_SELECTED,{date:e})}function he(t,e){t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_START,{date:e}),on(t,"GET","logbook/"+e).then((function(n){return t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,{date:e,entries:n})}),(function(){return t.dispatch(Bo.LOGBOOK_ENTRIES_FETCH_ERROR,{})}))}function le(t){return!t||(new Date).getTime()-t>su}function pe(t){t.registerStores({currentLogbookDate:Jo,isLoadingLogbookEntries:Xo,logbookEntries:nu,logbookEntriesUpdated:ou})}function _e(t){return t.set("active",!0)}function de(t){return t.set("active",!1)}function ve(){return Su.getInitialState()}function ye(t){return navigator.serviceWorker.getRegistration().then((function(t){if(!t)throw new Error("No service worker registered.");return t.pushManager.subscribe({userVisibleOnly:!0})})).then((function(e){var n;return n=navigator.userAgent.toLowerCase().indexOf("firefox")>-1?"firefox":"chrome",on(t,"POST","notify.html5",{subscription:e,browser:n}).then((function(){return t.dispatch(yu.PUSH_NOTIFICATIONS_SUBSCRIBE,{})})).then((function(){return!0}))})).catch((function(e){var n;return n=e.message&&e.message.indexOf("gcm_sender_id")!==-1?"Please setup the notify.html5 platform.":"Notification registration failed.",console.error(e),Vn.createNotification(t,n),!1}))}function me(t){return navigator.serviceWorker.getRegistration().then((function(t){if(!t)throw new Error("No service worker registered");return t.pushManager.subscribe({userVisibleOnly:!0})})).then((function(e){return on(t,"DELETE","notify.html5",{subscription:e}).then((function(){return e.unsubscribe()})).then((function(){return t.dispatch(yu.PUSH_NOTIFICATIONS_UNSUBSCRIBE,{})})).then((function(){return!0}))})).catch((function(e){var n="Failed unsubscribing for push notifications.";return console.error(e),Vn.createNotification(t,n),!1}))}function ge(t){t.registerStores({pushNotifications:Su})}function Se(t,e){return on(t,"POST","template",{template:e})}function be(t){return t.set("isListening",!0)}function Ee(t,e){var n=e.interimTranscript,r=e.finalTranscript;return t.withMutations((function(t){return t.set("isListening",!0).set("isTransmitting",!1).set("interimTranscript",n).set("finalTranscript",r)}))}function Ie(t,e){var n=e.finalTranscript;return t.withMutations((function(t){return t.set("isListening",!1).set("isTransmitting",!0).set("interimTranscript","").set("finalTranscript",n)}))}function Oe(){return ku.getInitialState()}function we(){return ku.getInitialState()}function Te(){return ku.getInitialState()}function Ae(t){return Pu[t.hassId]}function De(t){var e=Ae(t);if(e){var n=e.finalTranscript||e.interimTranscript;t.dispatch(ju.VOICE_TRANSMITTING,{finalTranscript:n}),tr.callService(t,"conversation","process",{text:n}).then((function(){t.dispatch(ju.VOICE_DONE)}),(function(){t.dispatch(ju.VOICE_ERROR)}))}}function Ce(t){var e=Ae(t);e&&(e.recognition.stop(),Pu[t.hassId]=!1)}function ze(t){De(t),Ce(t)}function Re(t){var e=ze.bind(null,t);e();var n=new webkitSpeechRecognition;Pu[t.hassId]={recognition:n,interimTranscript:"",finalTranscript:""},n.interimResults=!0,n.onstart=function(){return t.dispatch(ju.VOICE_START)},n.onerror=function(){return t.dispatch(ju.VOICE_ERROR)},n.onend=e,n.onresult=function(e){var n=Ae(t);if(n){for(var r="",i="",o=e.resultIndex;o<e.results.length;o++)e.results[o].isFinal?r+=e.results[o][0].transcript:i+=e.results[o][0].transcript;n.interimTranscript=i,n.finalTranscript+=r,t.dispatch(ju.VOICE_RESULT,{interimTranscript:i,finalTranscript:n.finalTranscript})}},n.start()}function Me(t){t.registerStores({currentVoiceCommand:ku,isVoiceSupported:Mu})}var je="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Le=e((function(t,e){!(function(n,r){"object"==typeof e&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof e?e.Nuclear=r():n.Nuclear=r()})(je,(function(){return (function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)})([function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),n(1);var i=n(2),o=r(i),u=n(6),a=r(u),s=n(3),c=r(s),f=n(5),h=n(11),l=n(10),p=n(7),_=r(p);e.default={Reactor:a.default,Store:o.default,Immutable:c.default,isKeyPath:h.isKeyPath,isGetter:l.isGetter,toJS:f.toJS,toImmutable:f.toImmutable,isImmutable:f.isImmutable,createReactMixin:_.default},t.exports=e.default},function(t,e){try{window.console&&console.log||(console={log:function(){},debug:function(){},info:function(){},warn:function(){},error:function(){}})}catch(t){}},function(t,e,n){function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t){return t instanceof c}Object.defineProperty(e,"__esModule",{value:!0});var o=(function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}})();e.isStore=i;var u=n(3),a=n(4),s=n(5),c=(function(){function t(e){r(this,t),this.__handlers=(0,u.Map)({}),e&&(0,a.extend)(this,e),this.initialize()}return o(t,[{key:"initialize",value:function(){}},{key:"getInitialState",value:function(){return(0,u.Map)()}},{key:"handle",value:function(t,e,n){var r=this.__handlers.get(e);return"function"==typeof r?r.call(this,t,n,e):t}},{key:"handleReset",value:function(t){return this.getInitialState()}},{key:"on",value:function(t,e){this.__handlers=this.__handlers.set(t,e)}},{key:"serialize",value:function(t){return(0,s.toJS)(t)}},{key:"deserialize",value:function(t){return(0,s.toImmutable)(t)}}]),t})();e.default=(0,a.toFactory)(c)},function(t,e,n){!(function(e,n){t.exports=n()})(this,(function(){function t(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function e(t){return t.value=!1,t}function n(t){t&&(t.value=!0)}function r(){}function i(t,e){e=e||0;for(var n=Math.max(0,t.length-e),r=new Array(n),i=0;i<n;i++)r[i]=t[i+e];return r}function o(t){return void 0===t.size&&(t.size=t.__iterate(a)),t.size}function u(t,e){if("number"!=typeof e){var n=+e;if(""+n!==e)return NaN;e=n}return e<0?o(t)+e:e}function a(){return!0}function s(t,e,n){return(0===t||void 0!==n&&t<=-n)&&(void 0===e||void 0!==n&&e>=n)}function c(t,e){return h(t,e,0)}function f(t,e){return h(t,e,e)}function h(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function l(t){return v(t)?t:C(t)}function p(t){return y(t)?t:z(t)}function _(t){return m(t)?t:R(t)}function d(t){return v(t)&&!g(t)?t:M(t)}function v(t){return!(!t||!t[dn])}function y(t){return!(!t||!t[vn])}function m(t){return!(!t||!t[yn])}function g(t){return y(t)||m(t)}function S(t){return!(!t||!t[mn])}function b(t){this.next=t}function E(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function I(){return{value:void 0,done:!0}}function O(t){return!!A(t)}function w(t){return t&&"function"==typeof t.next}function T(t){var e=A(t);return e&&e.call(t)}function A(t){var e=t&&(En&&t[En]||t[In]);if("function"==typeof e)return e}function D(t){return t&&"number"==typeof t.length}function C(t){return null===t||void 0===t?U():v(t)?t.toSeq():V(t)}function z(t){return null===t||void 0===t?U().toKeyedSeq():v(t)?y(t)?t.toSeq():t.fromEntrySeq():H(t)}function R(t){return null===t||void 0===t?U():v(t)?y(t)?t.entrySeq():t.toIndexedSeq():x(t)}function M(t){return(null===t||void 0===t?U():v(t)?y(t)?t.entrySeq():t:x(t)).toSetSeq()}function j(t){this._array=t,this.size=t.length}function L(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function N(t){this._iterable=t,this.size=t.length||t.size}function k(t){this._iterator=t,this._iteratorCache=[]}function P(t){return!(!t||!t[wn])}function U(){return Tn||(Tn=new j([]))}function H(t){var e=Array.isArray(t)?new j(t).fromEntrySeq():w(t)?new k(t).fromEntrySeq():O(t)?new N(t).fromEntrySeq():"object"==typeof t?new L(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function x(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function V(t){var e=q(t)||"object"==typeof t&&new L(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return D(t)?new j(t):w(t)?new k(t):O(t)?new N(t):void 0}function F(t,e,n,r){var i=t._cache;if(i){for(var o=i.length-1,u=0;u<=o;u++){var a=i[n?o-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function G(t,e,n,r){var i=t._cache;if(i){var o=i.length-1,u=0;return new b(function(){var t=i[n?o-u:u];return u++>o?I():E(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function K(){throw TypeError("Abstract")}function B(){}function Y(){}function J(){}function W(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function X(t,e){return e?Q(e,t,"",{"":t}):Z(t)}function Q(t,e,n,r){return Array.isArray(e)?t.call(r,n,R(e).map((function(n,r){return Q(t,n,r,e)}))):$(e)?t.call(r,n,z(e).map((function(n,r){return Q(t,n,r,e)}))):e}function Z(t){return Array.isArray(t)?R(t).map(Z).toList():$(t)?z(t).map(Z).toMap():t}function $(t){return t&&(t.constructor===Object||void 0===t.constructor)}function tt(t){return t>>>1&1073741824|3221225471&t}function et(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return tt(n)}return"string"===e?t.length>Ln?nt(t):rt(t):"function"==typeof t.hashCode?t.hashCode():it(t)}function nt(t){var e=Pn[t];return void 0===e&&(e=rt(t),kn===Nn&&(kn=0,Pn={}),kn++,Pn[t]=e),e}function rt(t){for(var e=0,n=0;n<t.length;n++)e=31*e+t.charCodeAt(n)|0;return tt(e)}function it(t){var e;if(Rn&&(e=An.get(t),void 0!==e))return e;if(e=t[jn],void 0!==e)return e;if(!zn){if(e=t.propertyIsEnumerable&&t.propertyIsEnumerable[jn],void 0!==e)return e;if(e=ot(t),void 0!==e)return e}if(e=++Mn,1073741824&Mn&&(Mn=0),Rn)An.set(t,e);else{if(void 0!==Cn&&Cn(t)===!1)throw new Error("Non-extensible objects are not allowed as keys.");if(zn)Object.defineProperty(t,jn,{enumerable:!1,configurable:!1,writable:!1,value:e});else if(void 0!==t.propertyIsEnumerable&&t.propertyIsEnumerable===t.constructor.prototype.propertyIsEnumerable)t.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},t.propertyIsEnumerable[jn]=e;else{if(void 0===t.nodeType)throw new Error("Unable to set a non-enumerable property on object.");t[jn]=e}}return e}function ot(t){if(t&&t.nodeType>0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ut(t,e){if(!t)throw new Error(e)}function at(t){ut(t!==1/0,"Cannot perform this action with an infinite size.")}function st(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ct(t){this._iter=t,this.size=t.size}function ft(t){this._iter=t,this.size=t.size}function ht(t){this._iter=t,this.size=t.size}function lt(t){var e=jt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=Lt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate((function(t,n){return e(n,t,r)!==!1}),n)},e.__iteratorUncached=function(e,n){if(e===bn){var r=t.__iterator(e,n);return new b(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===Sn?gn:Sn,n)},e}function pt(t,e,n){var r=jt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,ln);return o===ln?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate((function(t,i,u){return r(e.call(n,t,i,u),i,o)!==!1}),i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(bn,i);return new b(function(){var i=o.next();if(i.done)return i;var u=i.value,a=u[0];return E(r,a,e.call(n,u[1],a,t),i)})},r}function _t(t,e){var n=jt(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=lt(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=Lt,n.__iterate=function(e,n){var r=this;return t.__iterate((function(t,n){return e(t,n,r)}),!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function dt(t,e,n,r){var i=jt(t);return r&&(i.has=function(r){var i=t.get(r,ln);return i!==ln&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,ln);return o!==ln&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,a=0;return t.__iterate((function(t,o,s){if(e.call(n,t,o,s))return a++,i(t,r?o:a-1,u)}),o),a},i.__iteratorUncached=function(i,o){var u=t.__iterator(bn,o),a=0;return new b(function(){for(;;){var o=u.next();if(o.done)return o;var s=o.value,c=s[0],f=s[1];if(e.call(n,f,c,t))return E(i,r?c:a++,f,o)}})},i}function vt(t,e,n){var r=Pt().asMutable();return t.__iterate((function(i,o){r.update(e.call(n,i,o,t),0,(function(t){return t+1}))})),r.asImmutable()}function yt(t,e,n){var r=y(t),i=(S(t)?Ie():Pt()).asMutable();t.__iterate((function(o,u){i.update(e.call(n,o,u,t),(function(t){return t=t||[],t.push(r?[u,o]:o),t}))}));var o=Mt(t);return i.map((function(e){return Ct(t,o(e))}))}function mt(t,e,n,r){var i=t.size;if(void 0!==e&&(e|=0),void 0!==n&&(n|=0),s(e,n,i))return t;var o=c(e,i),a=f(n,i);if(o!==o||a!==a)return mt(t.toSeq().cacheResult(),e,n,r);var h,l=a-o;l===l&&(h=l<0?0:l);var p=jt(t);return p.size=0===h?h:t.size&&h||void 0,!r&&P(t)&&h>=0&&(p.get=function(e,n){return e=u(this,e),e>=0&&e<h?t.get(e+o,n):n}),p.__iterateUncached=function(e,n){var i=this;if(0===h)return 0;if(n)return this.cacheResult().__iterate(e,n);var u=0,a=!0,s=0;return t.__iterate((function(t,n){if(!a||!(a=u++<o))return s++,e(t,r?n:s-1,i)!==!1&&s!==h})),s},p.__iteratorUncached=function(e,n){if(0!==h&&n)return this.cacheResult().__iterator(e,n);var i=0!==h&&t.__iterator(e,n),u=0,a=0;return new b(function(){for(;u++<o;)i.next();if(++a>h)return I();var t=i.next();return r||e===Sn?t:e===gn?E(e,a-1,void 0,t):E(e,a-1,t.value[1],t)})},p}function gt(t,e,n){var r=jt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var u=0;return t.__iterate((function(t,i,a){return e.call(n,t,i,a)&&++u&&r(t,i,o)})),u},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var u=t.__iterator(bn,i),a=!0;return new b(function(){if(!a)return I();var t=u.next();if(t.done)return t;var i=t.value,s=i[0],c=i[1];return e.call(n,c,s,o)?r===bn?t:E(r,s,c,t):(a=!1,I())})},r}function St(t,e,n,r){var i=jt(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var a=!0,s=0;return t.__iterate((function(t,o,c){if(!a||!(a=e.call(n,t,o,c)))return s++,i(t,r?o:s-1,u)})),s},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var a=t.__iterator(bn,o),s=!0,c=0;return new b(function(){var t,o,f;do{if(t=a.next(),t.done)return r||i===Sn?t:i===gn?E(i,c++,void 0,t):E(i,c++,t.value[1],t);var h=t.value;o=h[0],f=h[1],s&&(s=e.call(n,f,o,u))}while(s);return i===bn?t:E(i,o,f,t)})},i}function bt(t,e){var n=y(t),r=[t].concat(e).map((function(t){return v(t)?n&&(t=p(t)):t=n?H(t):x(Array.isArray(t)?t:[t]),t})).filter((function(t){return 0!==t.size}));if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&y(i)||m(t)&&m(i))return i}var o=new j(r);return n?o=o.toKeyedSeq():m(t)||(o=o.toSetSeq()),o=o.flatten(!0),o.size=r.reduce((function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}}),0),o}function Et(t,e,n){var r=jt(t);return r.__iterateUncached=function(r,i){function o(t,s){var c=this;t.__iterate((function(t,i){return(!e||s<e)&&v(t)?o(t,s+1):r(t,n?i:u++,c)===!1&&(a=!0),!a}),i)}var u=0,a=!1;return o(t,0),u},r.__iteratorUncached=function(r,i){var o=t.__iterator(r,i),u=[],a=0;return new b(function(){for(;o;){var t=o.next();if(t.done===!1){var s=t.value;if(r===bn&&(s=s[1]),e&&!(u.length<e)||!v(s))return n?t:E(r,a++,s,t);u.push(o),o=s.__iterator(r,i)}else o=u.pop()}return I()})},r}function It(t,e,n){var r=Mt(t);return t.toSeq().map((function(i,o){return r(e.call(n,i,o,t))})).flatten(!0)}function Ot(t,e){var n=jt(t);return n.size=t.size&&2*t.size-1,n.__iterateUncached=function(n,r){var i=this,o=0;return t.__iterate((function(t,r){return(!o||n(e,o++,i)!==!1)&&n(t,o++,i)!==!1}),r),o},n.__iteratorUncached=function(n,r){var i,o=t.__iterator(Sn,r),u=0;return new b(function(){return(!i||u%2)&&(i=o.next(),i.done)?i:u%2?E(n,u++,e):E(n,u++,i.value,i)})},n}function wt(t,e,n){e||(e=Nt);var r=y(t),i=0,o=t.toSeq().map((function(e,r){return[r,e,i++,n?n(e,r,t):e]})).toArray();return o.sort((function(t,n){return e(t[3],n[3])||t[2]-n[2]})).forEach(r?function(t,e){o[e].length=2}:function(t,e){o[e]=t[1]}),r?z(o):m(t)?R(o):M(o)}function Tt(t,e,n){if(e||(e=Nt),n){var r=t.toSeq().map((function(e,r){return[e,n(e,r,t)]})).reduce((function(t,n){return At(e,t[1],n[1])?n:t}));return r&&r[0]}return t.reduce((function(t,n){return At(e,t,n)?n:t}))}function At(t,e,n){var r=t(n,e);return 0===r&&n!==e&&(void 0===n||null===n||n!==n)||r>0}function Dt(t,e,n){var r=jt(t);return r.size=new j(n).map((function(t){return t.size})).min(),r.__iterate=function(t,e){for(var n,r=this,i=this.__iterator(Sn,e),o=0;!(n=i.next()).done&&t(n.value,o++,r)!==!1;);return o},r.__iteratorUncached=function(t,r){var i=n.map((function(t){return t=l(t),T(r?t.reverse():t)})),o=0,u=!1; +return new b(function(){var n;return u||(n=i.map((function(t){return t.next()})),u=n.some((function(t){return t.done}))),u?I():E(t,o++,e.apply(null,n.map((function(t){return t.value}))))})},r}function Ct(t,e){return P(t)?e:t.constructor(e)}function zt(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Rt(t){return at(t.size),o(t)}function Mt(t){return y(t)?p:m(t)?_:d}function jt(t){return Object.create((y(t)?z:m(t)?R:M).prototype)}function Lt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):C.prototype.cacheResult.call(this)}function Nt(t,e){return t>e?1:t<e?-1:0}function kt(t){var e=T(t);if(!e){if(!D(t))throw new TypeError("Expected iterable or array-like: "+t);e=T(l(t))}return e}function Pt(t){return null===t||void 0===t?Jt():Ut(t)&&!S(t)?t:Jt().withMutations((function(e){var n=p(t);at(n.size),n.forEach((function(t,n){return e.set(n,t)}))}))}function Ut(t){return!(!t||!t[Un])}function Ht(t,e){this.ownerID=t,this.entries=e}function xt(t,e,n){this.ownerID=t,this.bitmap=e,this.nodes=n}function Vt(t,e,n){this.ownerID=t,this.count=e,this.nodes=n}function qt(t,e,n){this.ownerID=t,this.keyHash=e,this.entries=n}function Ft(t,e,n){this.ownerID=t,this.keyHash=e,this.entry=n}function Gt(t,e,n){this._type=e,this._reverse=n,this._stack=t._root&&Bt(t._root)}function Kt(t,e){return E(t,e[0],e[1])}function Bt(t,e){return{node:t,index:0,__prev:e}}function Yt(t,e,n,r){var i=Object.create(Hn);return i.size=t,i._root=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Jt(){return xn||(xn=Yt(0))}function Wt(t,n,r){var i,o;if(t._root){var u=e(pn),a=e(_n);if(i=Xt(t._root,t.__ownerID,0,void 0,n,r,u,a),!a.value)return t;o=t.size+(u.value?r===ln?-1:1:0)}else{if(r===ln)return t;o=1,i=new Ht(t.__ownerID,[[n,r]])}return t.__ownerID?(t.size=o,t._root=i,t.__hash=void 0,t.__altered=!0,t):i?Yt(o,i):Jt()}function Xt(t,e,r,i,o,u,a,s){return t?t.update(e,r,i,o,u,a,s):u===ln?t:(n(s),n(a),new Ft(e,i,[o,u]))}function Qt(t){return t.constructor===Ft||t.constructor===qt}function Zt(t,e,n,r,i){if(t.keyHash===r)return new qt(e,r,[t.entry,i]);var o,u=(0===n?t.keyHash:t.keyHash>>>n)&hn,a=(0===n?r:r>>>n)&hn,s=u===a?[Zt(t,e,n+cn,r,i)]:(o=new Ft(e,r,i),u<a?[t,o]:[o,t]);return new xt(e,1<<u|1<<a,s)}function $t(t,e,n,i){t||(t=new r);for(var o=new Ft(t,et(n),[n,i]),u=0;u<e.length;u++){var a=e[u];o=o.update(t,0,void 0,a[0],a[1])}return o}function te(t,e,n,r){for(var i=0,o=0,u=new Array(n),a=0,s=1,c=e.length;a<c;a++,s<<=1){var f=e[a];void 0!==f&&a!==r&&(i|=s,u[o++]=f)}return new xt(t,i,u)}function ee(t,e,n,r,i){for(var o=0,u=new Array(fn),a=0;0!==n;a++,n>>>=1)u[a]=1&n?e[o++]:void 0;return u[r]=i,new Vt(t,o+1,u)}function ne(t,e,n){for(var r=[],i=0;i<n.length;i++){var o=n[i],u=p(o);v(o)||(u=u.map((function(t){return X(t)}))),r.push(u)}return ie(t,e,r)}function re(t){return function(e,n,r){return e&&e.mergeDeepWith&&v(n)?e.mergeDeepWith(t,n):t?t(e,n,r):n}}function ie(t,e,n){return n=n.filter((function(t){return 0!==t.size})),0===n.length?t:0!==t.size||t.__ownerID||1!==n.length?t.withMutations((function(t){for(var r=e?function(n,r){t.update(r,ln,(function(t){return t===ln?n:e(t,n,r)}))}:function(e,n){t.set(n,e)},i=0;i<n.length;i++)n[i].forEach(r)})):t.constructor(n[0])}function oe(t,e,n,r){var i=t===ln,o=e.next();if(o.done){var u=i?n:t,a=r(u);return a===u?t:a}ut(i||t&&t.set,"invalid keyPath");var s=o.value,c=i?ln:t.get(s,ln),f=oe(c,e,n,r);return f===c?t:f===ln?t.remove(s):(i?Jt():t).set(s,f)}function ue(t){return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function ae(t,e,n,r){var o=r?t:i(t);return o[e]=n,o}function se(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),u=0,a=0;a<i;a++)a===e?(o[a]=n,u=-1):o[a]=t[a+u];return o}function ce(t,e,n){var r=t.length-1;if(n&&e===r)return t.pop(),t;for(var i=new Array(r),o=0,u=0;u<r;u++)u===e&&(o=1),i[u]=t[u+o];return i}function fe(t){var e=de();if(null===t||void 0===t)return e;if(he(t))return t;var n=_(t),r=n.size;return 0===r?e:(at(r),r>0&&r<fn?_e(0,r,cn,null,new le(n.toArray())):e.withMutations((function(t){t.setSize(r),n.forEach((function(e,n){return t.set(n,e)}))})))}function he(t){return!(!t||!t[Gn])}function le(t,e){this.array=t,this.ownerID=e}function pe(t,e){function n(t,e,n){return 0===e?r(t,n):i(t,e,n)}function r(t,n){var r=n===a?s&&s.array:t&&t.array,i=n>o?0:o-n,c=u-n;return c>fn&&(c=fn),function(){if(i===c)return Yn;var t=e?--c:i++;return r&&r[t]}}function i(t,r,i){var a,s=t&&t.array,c=i>o?0:o-i>>r,f=(u-i>>r)+1;return f>fn&&(f=fn),function(){for(;;){if(a){var t=a();if(t!==Yn)return t;a=null}if(c===f)return Yn;var o=e?--f:c++;a=n(s&&s[o],r-cn,i+(o<<r))}}}var o=t._origin,u=t._capacity,a=Ee(u),s=t._tail;return n(t._root,t._level,0)}function _e(t,e,n,r,i,o,u){var a=Object.create(Kn);return a.size=e-t,a._origin=t,a._capacity=e,a._level=n,a._root=r,a._tail=i,a.__ownerID=o,a.__hash=u,a.__altered=!1,a}function de(){return Bn||(Bn=_e(0,0,cn))}function ve(t,n,r){if(n=u(t,n),n!==n)return t;if(n>=t.size||n<0)return t.withMutations((function(t){n<0?Se(t,n).set(0,r):Se(t,0,n+1).set(n,r)}));n+=t._origin;var i=t._tail,o=t._root,a=e(_n);return n>=Ee(t._capacity)?i=ye(i,t.__ownerID,0,n,r,a):o=ye(o,t.__ownerID,t._level,n,r,a),a.value?t.__ownerID?(t._root=o,t._tail=i,t.__hash=void 0,t.__altered=!0,t):_e(t._origin,t._capacity,t._level,o,i):t}function ye(t,e,r,i,o,u){var a=i>>>r&hn,s=t&&a<t.array.length;if(!s&&void 0===o)return t;var c;if(r>0){var f=t&&t.array[a],h=ye(f,e,r-cn,i,o,u);return h===f?t:(c=me(t,e),c.array[a]=h,c)}return s&&t.array[a]===o?t:(n(u),c=me(t,e),void 0===o&&a===c.array.length-1?c.array.pop():c.array[a]=o,c)}function me(t,e){return e&&t&&e===t.ownerID?t:new le(t?t.array.slice():[],e)}function ge(t,e){if(e>=Ee(t._capacity))return t._tail;if(e<1<<t._level+cn){for(var n=t._root,r=t._level;n&&r>0;)n=n.array[e>>>r&hn],r-=cn;return n}}function Se(t,e,n){void 0!==e&&(e|=0),void 0!==n&&(n|=0);var i=t.__ownerID||new r,o=t._origin,u=t._capacity,a=o+e,s=void 0===n?u:n<0?u+n:o+n;if(a===o&&s===u)return t;if(a>=s)return t.clear();for(var c=t._level,f=t._root,h=0;a+h<0;)f=new le(f&&f.array.length?[void 0,f]:[],i),c+=cn,h+=1<<c;h&&(a+=h,o+=h,s+=h,u+=h);for(var l=Ee(u),p=Ee(s);p>=1<<c+cn;)f=new le(f&&f.array.length?[f]:[],i),c+=cn;var _=t._tail,d=p<l?ge(t,s-1):p>l?new le([],i):_;if(_&&p>l&&a<u&&_.array.length){f=me(f,i);for(var v=f,y=c;y>cn;y-=cn){var m=l>>>y&hn;v=v.array[m]=me(v.array[m],i)}v.array[l>>>cn&hn]=_}if(s<u&&(d=d&&d.removeAfter(i,0,s)),a>=p)a-=p,s-=p,c=cn,f=null,d=d&&d.removeBefore(i,0,a);else if(a>o||p<l){for(h=0;f;){var g=a>>>c&hn;if(g!==p>>>c&hn)break;g&&(h+=(1<<c)*g),c-=cn,f=f.array[g]}f&&a>o&&(f=f.removeBefore(i,c,a-h)),f&&p<l&&(f=f.removeAfter(i,c,p-h)),h&&(a-=h,s-=h)}return t.__ownerID?(t.size=s-a,t._origin=a,t._capacity=s,t._level=c,t._root=f,t._tail=d,t.__hash=void 0,t.__altered=!0,t):_e(a,s,c,f,d)}function be(t,e,n){for(var r=[],i=0,o=0;o<n.length;o++){var u=n[o],a=_(u);a.size>i&&(i=a.size),v(u)||(a=a.map((function(t){return X(t)}))),r.push(a)}return i>t.size&&(t=t.setSize(i)),ie(t,e,r)}function Ee(t){return t<fn?0:t-1>>>cn<<cn}function Ie(t){return null===t||void 0===t?Te():Oe(t)?t:Te().withMutations((function(e){var n=p(t);at(n.size),n.forEach((function(t,n){return e.set(n,t)}))}))}function Oe(t){return Ut(t)&&S(t)}function we(t,e,n,r){var i=Object.create(Ie.prototype);return i.size=t?t.size:0,i._map=t,i._list=e,i.__ownerID=n,i.__hash=r,i}function Te(){return Jn||(Jn=we(Jt(),de()))}function Ae(t,e,n){var r,i,o=t._map,u=t._list,a=o.get(e),s=void 0!==a;if(n===ln){if(!s)return t;u.size>=fn&&u.size>=2*o.size?(i=u.filter((function(t,e){return void 0!==t&&a!==e})),r=i.toKeyedSeq().map((function(t){return t[0]})).flip().toMap(),t.__ownerID&&(r.__ownerID=i.__ownerID=t.__ownerID)):(r=o.remove(e),i=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=o,i=u.set(a,[e,n])}else r=o.set(e,u.size),i=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=i,t.__hash=void 0,t):we(r,i)}function De(t){return null===t||void 0===t?Re():Ce(t)?t:Re().unshiftAll(t)}function Ce(t){return!(!t||!t[Wn])}function ze(t,e,n,r){var i=Object.create(Xn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Re(){return Qn||(Qn=ze(0))}function Me(t){return null===t||void 0===t?ke():je(t)&&!S(t)?t:ke().withMutations((function(e){var n=d(t);at(n.size),n.forEach((function(t){return e.add(t)}))}))}function je(t){return!(!t||!t[Zn])}function Le(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Ne(t,e){var n=Object.create($n);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ke(){return tr||(tr=Ne(Jt()))}function Pe(t){return null===t||void 0===t?xe():Ue(t)?t:xe().withMutations((function(e){var n=d(t);at(n.size),n.forEach((function(t){return e.add(t)}))}))}function Ue(t){return je(t)&&S(t)}function He(t,e){var n=Object.create(er);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function xe(){return nr||(nr=He(Te()))}function Ve(t,e){var n,r=function(o){if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var u=Object.keys(t);Ge(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=Pt(o)},i=r.prototype=Object.create(rr);return i.constructor=r,r}function qe(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Fe(t){return t._name||t.constructor.name||"Record"}function Ge(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(t){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){ut(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Be(t,e){if(t===e)return!0;if(!v(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||y(t)!==y(e)||m(t)!==m(e)||S(t)!==S(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!g(t);if(S(t)){var r=t.entries();return e.every((function(t,e){var i=r.next().value;return i&&W(i[1],t)&&(n||W(i[0],e))}))&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var u=!0,a=e.__iterate((function(e,r){if(n?!t.has(e):i?!W(e,t.get(r,ln)):!W(t.get(r,ln),e))return u=!1,!1}));return u&&t.size===a}function Ye(t,e,n){if(!(this instanceof Ye))return new Ye(t,e,n);if(ut(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),e<t&&(n=-n),this._start=t,this._end=e,this._step=n,this.size=Math.max(0,Math.ceil((e-t)/n-1)+1),0===this.size){if(ir)return ir;ir=this}}function Je(t,e){if(!(this instanceof Je))return new Je(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(or)return or;or=this}}function We(t,e){var n=function(n){t.prototype[n]=e[n]};return Object.keys(e).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(n),t}function Xe(t,e){return e}function Qe(t,e){return[e,t]}function Ze(t){return function(){return!t.apply(this,arguments)}}function $e(t){return function(){return-t.apply(this,arguments)}}function tn(t){return"string"==typeof t?JSON.stringify(t):t}function en(){return i(arguments)}function nn(t,e){return t<e?1:t>e?-1:0}function rn(t){if(t.size===1/0)return 0;var e=S(t),n=y(t),r=e?1:0,i=t.__iterate(n?e?function(t,e){r=31*r+un(et(t),et(e))|0}:function(t,e){r=r+un(et(t),et(e))|0}:e?function(t){r=31*r+et(t)|0}:function(t){r=r+et(t)|0});return on(i,r)}function on(t,e){return e=Dn(e,3432918353),e=Dn(e<<15|e>>>-15,461845907),e=Dn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=Dn(e^e>>>16,2246822507),e=Dn(e^e>>>13,3266489909),e=tt(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var an=Array.prototype.slice,sn="delete",cn=5,fn=1<<cn,hn=fn-1,ln={},pn={value:!1},_n={value:!1};t(p,l),t(_,l),t(d,l),l.isIterable=v,l.isKeyed=y,l.isIndexed=m,l.isAssociative=g,l.isOrdered=S,l.Keyed=p,l.Indexed=_,l.Set=d;var dn="@@__IMMUTABLE_ITERABLE__@@",vn="@@__IMMUTABLE_KEYED__@@",yn="@@__IMMUTABLE_INDEXED__@@",mn="@@__IMMUTABLE_ORDERED__@@",gn=0,Sn=1,bn=2,En="function"==typeof Symbol&&Symbol.iterator,In="@@iterator",On=En||In;b.prototype.toString=function(){return"[Iterator]"},b.KEYS=gn,b.VALUES=Sn,b.ENTRIES=bn,b.prototype.inspect=b.prototype.toSource=function(){return this.toString()},b.prototype[On]=function(){return this},t(C,l),C.of=function(){return C(arguments)},C.prototype.toSeq=function(){return this},C.prototype.toString=function(){return this.__toString("Seq {","}")},C.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},C.prototype.__iterate=function(t,e){return F(this,t,e,!0)},C.prototype.__iterator=function(t,e){return G(this,t,e,!0)},t(z,C),z.prototype.toKeyedSeq=function(){return this},t(R,C),R.of=function(){return R(arguments)},R.prototype.toIndexedSeq=function(){return this},R.prototype.toString=function(){return this.__toString("Seq [","]")},R.prototype.__iterate=function(t,e){return F(this,t,e,!1)},R.prototype.__iterator=function(t,e){return G(this,t,e,!1)},t(M,C),M.of=function(){return M(arguments)},M.prototype.toSetSeq=function(){return this},C.isSeq=P,C.Keyed=z,C.Set=M,C.Indexed=R;var wn="@@__IMMUTABLE_SEQ__@@";C.prototype[wn]=!0,t(j,R),j.prototype.get=function(t,e){return this.has(t)?this._array[u(this,t)]:e},j.prototype.__iterate=function(t,e){for(var n=this,r=this._array,i=r.length-1,o=0;o<=i;o++)if(t(r[e?i-o:o],o,n)===!1)return o+1;return o},j.prototype.__iterator=function(t,e){var n=this._array,r=n.length-1,i=0;return new b(function(){return i>r?I():E(t,i,n[e?r-i++:i++])})},t(L,z),L.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},L.prototype.has=function(t){return this._object.hasOwnProperty(t)},L.prototype.__iterate=function(t,e){for(var n=this,r=this._object,i=this._keys,o=i.length-1,u=0;u<=o;u++){var a=i[e?o-u:u];if(t(r[a],a,n)===!1)return u+1}return u},L.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length-1,o=0;return new b(function(){var u=r[e?i-o:o];return o++>i?I():E(t,u,n[u])})},L.prototype[mn]=!0,t(N,R),N.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);var r=this._iterable,i=T(r),o=0;if(w(i))for(var u;!(u=i.next()).done&&t(u.value,o++,n)!==!1;);return o},N.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=T(n);if(!w(r))return new b(I);var i=0;return new b(function(){var e=r.next();return e.done?e:E(t,i++,e.value)})},t(k,R),k.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,i=this._iteratorCache,o=0;o<i.length;)if(t(i[o],o++,n)===!1)return o;for(var u;!(u=r.next()).done;){var a=u.value;if(i[o]=a,t(a,o++,n)===!1)break}return o},k.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterator,r=this._iteratorCache,i=0;return new b(function(){if(i>=r.length){var e=n.next();if(e.done)return e;r[i]=e.value}return E(t,i,r[i++])})};var Tn;t(K,l),t(B,K),t(Y,K),t(J,K),K.Keyed=B,K.Indexed=Y,K.Set=J;var An,Dn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t|=0,e|=0;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Cn=Object.isExtensible,zn=(function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}})(),Rn="function"==typeof WeakMap;Rn&&(An=new WeakMap);var Mn=0,jn="__immutablehash__";"function"==typeof Symbol&&(jn=Symbol(jn));var Ln=16,Nn=255,kn=0,Pn={};t(st,z),st.prototype.get=function(t,e){return this._iter.get(t,e)},st.prototype.has=function(t){return this._iter.has(t)},st.prototype.valueSeq=function(){return this._iter.valueSeq()},st.prototype.reverse=function(){var t=this,e=_t(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},st.prototype.map=function(t,e){var n=this,r=pt(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},st.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Rt(this):0,function(i){return t(i,e?--n:n++,r)}),e)},st.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(Sn,e),r=e?Rt(this):0;return new b(function(){var i=n.next();return i.done?i:E(t,e?--r:r++,i.value,i)})},st.prototype[mn]=!0,t(ct,R),ct.prototype.includes=function(t){return this._iter.includes(t)},ct.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate((function(e){return t(e,r++,n)}),e)},ct.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e),r=0;return new b(function(){var e=n.next();return e.done?e:E(t,r++,e.value,e)})},t(ft,M),ft.prototype.has=function(t){return this._iter.includes(t)},ft.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate((function(e){return t(e,e,n)}),e)},ft.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e);return new b(function(){var e=n.next();return e.done?e:E(t,e.value,e.value,e)})},t(ht,z),ht.prototype.entrySeq=function(){return this._iter.toSeq()},ht.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate((function(e){if(e){zt(e);var r=v(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}}),e)},ht.prototype.__iterator=function(t,e){var n=this._iter.__iterator(Sn,e);return new b(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){zt(r);var i=v(r);return E(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},ct.prototype.cacheResult=st.prototype.cacheResult=ft.prototype.cacheResult=ht.prototype.cacheResult=Lt,t(Pt,B),Pt.prototype.toString=function(){return this.__toString("Map {","}")},Pt.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Pt.prototype.set=function(t,e){return Wt(this,t,e)},Pt.prototype.setIn=function(t,e){return this.updateIn(t,ln,(function(){return e}))},Pt.prototype.remove=function(t){return Wt(this,t,ln)},Pt.prototype.deleteIn=function(t){return this.updateIn(t,(function(){return ln}))},Pt.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},Pt.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=oe(this,kt(t),e,n);return r===ln?void 0:r},Pt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},Pt.prototype.merge=function(){return ne(this,void 0,arguments)},Pt.prototype.mergeWith=function(t){var e=an.call(arguments,1);return ne(this,t,e)},Pt.prototype.mergeIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),(function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]}))},Pt.prototype.mergeDeep=function(){return ne(this,re(void 0),arguments)},Pt.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return ne(this,re(t),e)},Pt.prototype.mergeDeepIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),(function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]}))},Pt.prototype.sort=function(t){return Ie(wt(this,t))},Pt.prototype.sortBy=function(t,e){return Ie(wt(this,e,t))},Pt.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Pt.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new r)},Pt.prototype.asImmutable=function(){return this.__ensureOwner()},Pt.prototype.wasAltered=function(){return this.__altered},Pt.prototype.__iterator=function(t,e){return new Gt(this,t,e)},Pt.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate((function(e){return r++,t(e[1],e[0],n)}),e),r},Pt.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Yt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Pt.isMap=Ut;var Un="@@__IMMUTABLE_MAP__@@",Hn=Pt.prototype;Hn[Un]=!0,Hn[sn]=Hn.remove,Hn.removeIn=Hn.deleteIn,Ht.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o<u;o++)if(W(n,i[o][0]))return i[o][1];return r},Ht.prototype.update=function(t,e,r,o,u,a,s){for(var c=u===ln,f=this.entries,h=0,l=f.length;h<l&&!W(o,f[h][0]);h++);var p=h<l;if(p?f[h][1]===u:c)return this;if(n(s),(c||!p)&&n(a),!c||1!==f.length){if(!p&&!c&&f.length>=Vn)return $t(t,f,o,u);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new Ht(t,d)}},xt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=1<<((0===t?e:e>>>t)&hn),o=this.bitmap;return 0===(o&i)?r:this.nodes[ue(o&i-1)].get(t+cn,e,n,r)},xt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=1<<a,c=this.bitmap,f=0!==(c&s);if(!f&&i===ln)return this;var h=ue(c&s-1),l=this.nodes,p=f?l[h]:void 0,_=Xt(p,t,e+cn,n,r,i,o,u);if(_===p)return this;if(!f&&_&&l.length>=qn)return ee(t,l,c,a,_);if(f&&!_&&2===l.length&&Qt(l[1^h]))return l[1^h];if(f&&_&&1===l.length&&Qt(_))return _;var d=t&&t===this.ownerID,v=f?_?c:c^s:c|s,y=f?_?ae(l,h,_,d):ce(l,h,d):se(l,h,_,d);return d?(this.bitmap=v,this.nodes=y,this):new xt(t,v,y)},Vt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=(0===t?e:e>>>t)&hn,o=this.nodes[i];return o?o.get(t+cn,e,n,r):r},Vt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=i===ln,c=this.nodes,f=c[a];if(s&&!f)return this;var h=Xt(f,t,e+cn,n,r,i,o,u);if(h===f)return this;var l=this.count;if(f){if(!h&&(l--,l<Fn))return te(t,c,l,a)}else l++;var p=t&&t===this.ownerID,_=ae(c,a,h,p);return p?(this.count=l,this.nodes=_,this):new Vt(t,l,_)},qt.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o<u;o++)if(W(n,i[o][0]))return i[o][1];return r},qt.prototype.update=function(t,e,r,o,u,a,s){void 0===r&&(r=et(o));var c=u===ln;if(r!==this.keyHash)return c?this:(n(s),n(a),Zt(this,t,e,r,[o,u]));for(var f=this.entries,h=0,l=f.length;h<l&&!W(o,f[h][0]);h++);var p=h<l;if(p?f[h][1]===u:c)return this;if(n(s),(c||!p)&&n(a),c&&2===l)return new Ft(t,this.keyHash,f[1^h]);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new qt(t,this.keyHash,d)},Ft.prototype.get=function(t,e,n,r){return W(n,this.entry[0])?this.entry[1]:r},Ft.prototype.update=function(t,e,r,i,o,u,a){var s=o===ln,c=W(i,this.entry[0]);return(c?o===this.entry[1]:s)?this:(n(a),s?void n(u):c?t&&t===this.ownerID?(this.entry[1]=o,this):new Ft(t,this.keyHash,[i,o]):(n(u),Zt(this,t,e,et(i),[i,o])))},Ht.prototype.iterate=qt.prototype.iterate=function(t,e){for(var n=this.entries,r=0,i=n.length-1;r<=i;r++)if(t(n[e?i-r:r])===!1)return!1},xt.prototype.iterate=Vt.prototype.iterate=function(t,e){for(var n=this.nodes,r=0,i=n.length-1;r<=i;r++){var o=n[e?i-r:r];if(o&&o.iterate(t,e)===!1)return!1}},Ft.prototype.iterate=function(t,e){return t(this.entry)},t(Gt,b),Gt.prototype.next=function(){for(var t=this,e=this._type,n=this._stack;n;){var r,i=n.node,o=n.index++;if(i.entry){if(0===o)return Kt(e,i.entry)}else if(i.entries){if(r=i.entries.length-1,o<=r)return Kt(e,i.entries[t._reverse?r-o:o])}else if(r=i.nodes.length-1,o<=r){var u=i.nodes[t._reverse?r-o:o];if(u){if(u.entry)return Kt(e,u.entry);n=t._stack=Bt(u,n)}continue}n=t._stack=t._stack.__prev}return I()};var xn,Vn=fn/4,qn=fn/2,Fn=fn/4;t(fe,Y),fe.of=function(){return this(arguments)},fe.prototype.toString=function(){return this.__toString("List [","]")},fe.prototype.get=function(t,e){if(t=u(this,t),t>=0&&t<this.size){t+=this._origin;var n=ge(this,t);return n&&n.array[t&hn]}return e},fe.prototype.set=function(t,e){return ve(this,t,e)},fe.prototype.remove=function(t){return this.has(t)?0===t?this.shift():t===this.size-1?this.pop():this.splice(t,1):this},fe.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=cn,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):de()},fe.prototype.push=function(){var t=arguments,e=this.size;return this.withMutations((function(n){Se(n,0,e+t.length);for(var r=0;r<t.length;r++)n.set(e+r,t[r])}))},fe.prototype.pop=function(){return Se(this,0,-1)},fe.prototype.unshift=function(){var t=arguments;return this.withMutations((function(e){Se(e,-t.length);for(var n=0;n<t.length;n++)e.set(n,t[n])}))},fe.prototype.shift=function(){return Se(this,1)},fe.prototype.merge=function(){return be(this,void 0,arguments)},fe.prototype.mergeWith=function(t){var e=an.call(arguments,1);return be(this,t,e)},fe.prototype.mergeDeep=function(){return be(this,re(void 0),arguments)},fe.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return be(this,re(t),e)},fe.prototype.setSize=function(t){return Se(this,0,t)},fe.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:Se(this,c(t,n),f(e,n))},fe.prototype.__iterator=function(t,e){var n=0,r=pe(this,e);return new b(function(){var e=r();return e===Yn?I():E(t,n++,e)})},fe.prototype.__iterate=function(t,e){for(var n,r=this,i=0,o=pe(this,e);(n=o())!==Yn&&t(n,i++,r)!==!1;);return i},fe.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?_e(this._origin,this._capacity,this._level,this._root,this._tail,t,this.__hash):(this.__ownerID=t,this)},fe.isList=he;var Gn="@@__IMMUTABLE_LIST__@@",Kn=fe.prototype;Kn[Gn]=!0,Kn[sn]=Kn.remove,Kn.setIn=Hn.setIn,Kn.deleteIn=Kn.removeIn=Hn.removeIn,Kn.update=Hn.update,Kn.updateIn=Hn.updateIn,Kn.mergeIn=Hn.mergeIn,Kn.mergeDeepIn=Hn.mergeDeepIn,Kn.withMutations=Hn.withMutations,Kn.asMutable=Hn.asMutable,Kn.asImmutable=Hn.asImmutable,Kn.wasAltered=Hn.wasAltered,le.prototype.removeBefore=function(t,e,n){if(n===e?1<<e:0===this.array.length)return this;var r=n>>>e&hn;if(r>=this.array.length)return new le([],t);var i,o=0===r;if(e>0){var u=this.array[r];if(i=u&&u.removeBefore(t,e-cn,n),i===u&&o)return this}if(o&&!i)return this;var a=me(this,t);if(!o)for(var s=0;s<r;s++)a.array[s]=void 0;return i&&(a.array[r]=i),a},le.prototype.removeAfter=function(t,e,n){if(n===(e?1<<e:0)||0===this.array.length)return this;var r=n-1>>>e&hn;if(r>=this.array.length)return this;var i;if(e>0){var o=this.array[r];if(i=o&&o.removeAfter(t,e-cn,n),i===o&&r===this.array.length-1)return this}var u=me(this,t);return u.array.splice(r+1),i&&(u.array[r]=i),u};var Bn,Yn={};t(Ie,Pt),Ie.of=function(){return this(arguments)},Ie.prototype.toString=function(){return this.__toString("OrderedMap {","}")},Ie.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},Ie.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Te()},Ie.prototype.set=function(t,e){return Ae(this,t,e)},Ie.prototype.remove=function(t){return Ae(this,t,ln)},Ie.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},Ie.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate((function(e){return e&&t(e[1],e[0],n)}),e)},Ie.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},Ie.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?we(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},Ie.isOrderedMap=Oe,Ie.prototype[mn]=!0,Ie.prototype[sn]=Ie.prototype.remove;var Jn;t(De,Y),De.of=function(){return this(arguments)},De.prototype.toString=function(){return this.__toString("Stack [","]")},De.prototype.get=function(t,e){var n=this._head;for(t=u(this,t);n&&t--;)n=n.next;return n?n.value:e},De.prototype.peek=function(){return this._head&&this._head.value},De.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pushAll=function(t){if(t=_(t),0===t.size)return this;at(t.size);var e=this.size,n=this._head;return t.reverse().forEach((function(t){e++,n={value:t,next:n}})),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pop=function(){return this.slice(1)},De.prototype.unshift=function(){return this.push.apply(this,arguments)},De.prototype.unshiftAll=function(t){return this.pushAll(t)},De.prototype.shift=function(){return this.pop.apply(this,arguments)},De.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Re()},De.prototype.slice=function(t,e){if(s(t,e,this.size))return this;var n=c(t,this.size),r=f(e,this.size);if(r!==this.size)return Y.prototype.slice.call(this,t,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):ze(i,o)},De.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?ze(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},De.prototype.__iterate=function(t,e){var n=this;if(e)return this.reverse().__iterate(t);for(var r=0,i=this._head;i&&t(i.value,r++,n)!==!1;)i=i.next;return r},De.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new b(function(){if(r){var e=r.value;return r=r.next,E(t,n++,e)}return I()})},De.isStack=Ce;var Wn="@@__IMMUTABLE_STACK__@@",Xn=De.prototype;Xn[Wn]=!0,Xn.withMutations=Hn.withMutations,Xn.asMutable=Hn.asMutable,Xn.asImmutable=Hn.asImmutable,Xn.wasAltered=Hn.wasAltered;var Qn;t(Me,J),Me.of=function(){return this(arguments)},Me.fromKeys=function(t){return this(p(t).keySeq())},Me.prototype.toString=function(){return this.__toString("Set {","}")},Me.prototype.has=function(t){return this._map.has(t)},Me.prototype.add=function(t){return Le(this,this._map.set(t,!0))},Me.prototype.remove=function(t){return Le(this,this._map.remove(t))},Me.prototype.clear=function(){return Le(this,this._map.clear())},Me.prototype.union=function(){var t=an.call(arguments,0);return t=t.filter((function(t){return 0!==t.size})),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations((function(e){for(var n=0;n<t.length;n++)d(t[n]).forEach((function(t){return e.add(t)}))})):this.constructor(t[0])},Me.prototype.intersect=function(){var t=an.call(arguments,0);if(0===t.length)return this;t=t.map((function(t){return d(t)}));var e=this;return this.withMutations((function(n){e.forEach((function(e){t.every((function(t){return t.includes(e)}))||n.remove(e)}))}))},Me.prototype.subtract=function(){var t=an.call(arguments,0);if(0===t.length)return this;t=t.map((function(t){return d(t)}));var e=this;return this.withMutations((function(n){e.forEach((function(e){t.some((function(t){return t.includes(e)}))&&n.remove(e)}))}))},Me.prototype.merge=function(){return this.union.apply(this,arguments)},Me.prototype.mergeWith=function(t){var e=an.call(arguments,1);return this.union.apply(this,e)},Me.prototype.sort=function(t){return Pe(wt(this,t))},Me.prototype.sortBy=function(t,e){return Pe(wt(this,e,t))},Me.prototype.wasAltered=function(){return this._map.wasAltered()},Me.prototype.__iterate=function(t,e){var n=this;return this._map.__iterate((function(e,r){return t(r,r,n)}),e)},Me.prototype.__iterator=function(t,e){return this._map.map((function(t,e){return e})).__iterator(t,e)},Me.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t);return t?this.__make(e,t):(this.__ownerID=t,this._map=e,this)},Me.isSet=je;var Zn="@@__IMMUTABLE_SET__@@",$n=Me.prototype;$n[Zn]=!0,$n[sn]=$n.remove,$n.mergeDeep=$n.merge,$n.mergeDeepWith=$n.mergeWith,$n.withMutations=Hn.withMutations,$n.asMutable=Hn.asMutable,$n.asImmutable=Hn.asImmutable,$n.__empty=ke,$n.__make=Ne;var tr;t(Pe,Me),Pe.of=function(){return this(arguments)},Pe.fromKeys=function(t){return this(p(t).keySeq())},Pe.prototype.toString=function(){ +return this.__toString("OrderedSet {","}")},Pe.isOrderedSet=Ue;var er=Pe.prototype;er[mn]=!0,er.__empty=xe,er.__make=He;var nr;t(Ve,B),Ve.prototype.toString=function(){return this.__toString(Fe(this)+" {","}")},Ve.prototype.has=function(t){return this._defaultValues.hasOwnProperty(t)},Ve.prototype.get=function(t,e){if(!this.has(t))return e;var n=this._defaultValues[t];return this._map?this._map.get(t,n):n},Ve.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var t=this.constructor;return t._empty||(t._empty=qe(this,Jt()))},Ve.prototype.set=function(t,e){if(!this.has(t))throw new Error('Cannot set unknown key "'+t+'" on '+Fe(this));var n=this._map&&this._map.set(t,e);return this.__ownerID||n===this._map?this:qe(this,n)},Ve.prototype.remove=function(t){if(!this.has(t))return this;var e=this._map&&this._map.remove(t);return this.__ownerID||e===this._map?this:qe(this,e)},Ve.prototype.wasAltered=function(){return this._map.wasAltered()},Ve.prototype.__iterator=function(t,e){var n=this;return p(this._defaultValues).map((function(t,e){return n.get(e)})).__iterator(t,e)},Ve.prototype.__iterate=function(t,e){var n=this;return p(this._defaultValues).map((function(t,e){return n.get(e)})).__iterate(t,e)},Ve.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map&&this._map.__ensureOwner(t);return t?qe(this,e,t):(this.__ownerID=t,this._map=e,this)};var rr=Ve.prototype;rr[sn]=rr.remove,rr.deleteIn=rr.removeIn=Hn.removeIn,rr.merge=Hn.merge,rr.mergeWith=Hn.mergeWith,rr.mergeIn=Hn.mergeIn,rr.mergeDeep=Hn.mergeDeep,rr.mergeDeepWith=Hn.mergeDeepWith,rr.mergeDeepIn=Hn.mergeDeepIn,rr.setIn=Hn.setIn,rr.update=Hn.update,rr.updateIn=Hn.updateIn,rr.withMutations=Hn.withMutations,rr.asMutable=Hn.asMutable,rr.asImmutable=Hn.asImmutable,t(Ye,R),Ye.prototype.toString=function(){return 0===this.size?"Range []":"Range [ "+this._start+"..."+this._end+(this._step>1?" by "+this._step:"")+" ]"},Ye.prototype.get=function(t,e){return this.has(t)?this._start+u(this,t)*this._step:e},Ye.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e<this.size&&e===Math.floor(e)},Ye.prototype.slice=function(t,e){return s(t,e,this.size)?this:(t=c(t,this.size),e=f(e,this.size),e<=t?new Ye(0,0):new Ye(this.get(t,this._end),this.get(e,this._end),this._step))},Ye.prototype.indexOf=function(t){var e=t-this._start;if(e%this._step===0){var n=e/this._step;if(n>=0&&n<this.size)return n}return-1},Ye.prototype.lastIndexOf=function(t){return this.indexOf(t)},Ye.prototype.__iterate=function(t,e){for(var n=this,r=this.size-1,i=this._step,o=e?this._start+r*i:this._start,u=0;u<=r;u++){if(t(o,u,n)===!1)return u+1;o+=e?-i:i}return u},Ye.prototype.__iterator=function(t,e){var n=this.size-1,r=this._step,i=e?this._start+n*r:this._start,o=0;return new b(function(){var u=i;return i+=e?-r:r,o>n?I():E(t,o++,u)})},Ye.prototype.equals=function(t){return t instanceof Ye?this._start===t._start&&this._end===t._end&&this._step===t._step:Be(this,t)};var ir;t(Je,R),Je.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Je.prototype.get=function(t,e){return this.has(t)?this._value:e},Je.prototype.includes=function(t){return W(this._value,t)},Je.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:new Je(this._value,f(e,n)-c(t,n))},Je.prototype.reverse=function(){return this},Je.prototype.indexOf=function(t){return W(this._value,t)?0:-1},Je.prototype.lastIndexOf=function(t){return W(this._value,t)?this.size:-1},Je.prototype.__iterate=function(t,e){for(var n=this,r=0;r<this.size;r++)if(t(n._value,r,n)===!1)return r+1;return r},Je.prototype.__iterator=function(t,e){var n=this,r=0;return new b(function(){return r<n.size?E(t,r++,n._value):I()})},Je.prototype.equals=function(t){return t instanceof Je?W(this._value,t._value):Be(t)};var or;l.Iterator=b,We(l,{toArray:function(){at(this.size);var t=new Array(this.size||0);return this.valueSeq().__iterate((function(e,n){t[n]=e})),t},toIndexedSeq:function(){return new ct(this)},toJS:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJS?t.toJS():t})).__toJS()},toJSON:function(){return this.toSeq().map((function(t){return t&&"function"==typeof t.toJSON?t.toJSON():t})).__toJS()},toKeyedSeq:function(){return new st(this,!0)},toMap:function(){return Pt(this.toKeyedSeq())},toObject:function(){at(this.size);var t={};return this.__iterate((function(e,n){t[n]=e})),t},toOrderedMap:function(){return Ie(this.toKeyedSeq())},toOrderedSet:function(){return Pe(y(this)?this.valueSeq():this)},toSet:function(){return Me(y(this)?this.valueSeq():this)},toSetSeq:function(){return new ft(this)},toSeq:function(){return m(this)?this.toIndexedSeq():y(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return De(y(this)?this.valueSeq():this)},toList:function(){return fe(y(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(t,e){return 0===this.size?t+e:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+e},concat:function(){var t=an.call(arguments,0);return Ct(this,bt(this,t))},includes:function(t){return this.some((function(e){return W(e,t)}))},entries:function(){return this.__iterator(bn)},every:function(t,e){at(this.size);var n=!0;return this.__iterate((function(r,i,o){if(!t.call(e,r,i,o))return n=!1,!1})),n},filter:function(t,e){return Ct(this,dt(this,t,e,!0))},find:function(t,e,n){var r=this.findEntry(t,e);return r?r[1]:n},findEntry:function(t,e){var n;return this.__iterate((function(r,i,o){if(t.call(e,r,i,o))return n=[i,r],!1})),n},findLastEntry:function(t,e){return this.toSeq().reverse().findEntry(t,e)},forEach:function(t,e){return at(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){at(this.size),t=void 0!==t?""+t:",";var e="",n=!0;return this.__iterate((function(r){n?n=!1:e+=t,e+=null!==r&&void 0!==r?r.toString():""})),e},keys:function(){return this.__iterator(gn)},map:function(t,e){return Ct(this,pt(this,t,e))},reduce:function(t,e,n){at(this.size);var r,i;return arguments.length<2?i=!0:r=e,this.__iterate((function(e,o,u){i?(i=!1,r=e):r=t.call(n,r,e,o,u)})),r},reduceRight:function(t,e,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return Ct(this,_t(this,!0))},slice:function(t,e){return Ct(this,mt(this,t,e,!0))},some:function(t,e){return!this.every(Ze(t),e)},sort:function(t){return Ct(this,wt(this,t))},values:function(){return this.__iterator(Sn)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(t,e){return o(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return vt(this,t,e)},equals:function(t){return Be(this,t)},entrySeq:function(){var t=this;if(t._cache)return new j(t._cache);var e=t.toSeq().map(Qe).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(Ze(t),e)},findLast:function(t,e,n){return this.toKeyedSeq().reverse().find(t,e,n)},first:function(){return this.find(a)},flatMap:function(t,e){return Ct(this,It(this,t,e))},flatten:function(t){return Ct(this,Et(this,t,!0))},fromEntrySeq:function(){return new ht(this)},get:function(t,e){return this.find((function(e,n){return W(n,t)}),void 0,e)},getIn:function(t,e){for(var n,r=this,i=kt(t);!(n=i.next()).done;){var o=n.value;if(r=r&&r.get?r.get(o,ln):ln,r===ln)return e}return r},groupBy:function(t,e){return yt(this,t,e)},has:function(t){return this.get(t,ln)!==ln},hasIn:function(t){return this.getIn(t,ln)!==ln},isSubset:function(t){return t="function"==typeof t.includes?t:l(t),this.every((function(e){return t.includes(e)}))},isSuperset:function(t){return t="function"==typeof t.isSubset?t:l(t),t.isSubset(this)},keySeq:function(){return this.toSeq().map(Xe).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(t){return Tt(this,t)},maxBy:function(t,e){return Tt(this,e,t)},min:function(t){return Tt(this,t?$e(t):nn)},minBy:function(t,e){return Tt(this,e?$e(e):nn,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return Ct(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return Ct(this,St(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(Ze(t),e)},sortBy:function(t,e){return Ct(this,wt(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return Ct(this,this.toSeq().reverse().take(t).reverse())},takeWhile:function(t,e){return Ct(this,gt(this,t,e))},takeUntil:function(t,e){return this.takeWhile(Ze(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=rn(this))}});var ur=l.prototype;ur[dn]=!0,ur[On]=ur.values,ur.__toJS=ur.toArray,ur.__toStringMapper=tn,ur.inspect=ur.toSource=function(){return this.toString()},ur.chain=ur.flatMap,ur.contains=ur.includes,(function(){try{Object.defineProperty(ur,"length",{get:function(){if(!l.noLengthWarning){var t;try{throw new Error}catch(e){t=e.stack}if(t.indexOf("_wrapObject")===-1)return console&&console.warn&&console.warn("iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. "+t),this.size}}})}catch(t){}})(),We(p,{flip:function(){return Ct(this,lt(this))},findKey:function(t,e){var n=this.findEntry(t,e);return n&&n[0]},findLastKey:function(t,e){return this.toSeq().reverse().findKey(t,e)},keyOf:function(t){return this.findKey((function(e){return W(e,t)}))},lastKeyOf:function(t){return this.findLastKey((function(e){return W(e,t)}))},mapEntries:function(t,e){var n=this,r=0;return Ct(this,this.toSeq().map((function(i,o){return t.call(e,[o,i],r++,n)})).fromEntrySeq())},mapKeys:function(t,e){var n=this;return Ct(this,this.toSeq().flip().map((function(r,i){return t.call(e,r,i,n)})).flip())}});var ar=p.prototype;ar[vn]=!0,ar[On]=ur.entries,ar.__toJS=ur.toObject,ar.__toStringMapper=function(t,e){return JSON.stringify(e)+": "+tn(t)},We(_,{toKeyedSeq:function(){return new st(this,!1)},filter:function(t,e){return Ct(this,dt(this,t,e,!1))},findIndex:function(t,e){var n=this.findEntry(t,e);return n?n[0]:-1},indexOf:function(t){var e=this.toKeyedSeq().keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){return this.toSeq().reverse().indexOf(t)},reverse:function(){return Ct(this,_t(this,!1))},slice:function(t,e){return Ct(this,mt(this,t,e,!1))},splice:function(t,e){var n=arguments.length;if(e=Math.max(0|e,0),0===n||2===n&&!e)return this;t=c(t,t<0?this.count():this.size);var r=this.slice(0,t);return Ct(this,1===n?r:r.concat(i(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var n=this.toKeyedSeq().findLastKey(t,e);return void 0===n?-1:n},first:function(){return this.get(0)},flatten:function(t){return Ct(this,Et(this,t,!1))},get:function(t,e){return t=u(this,t),t<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find((function(e,n){return n===t}),void 0,e)},has:function(t){return t=u(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t<this.size:this.indexOf(t)!==-1)},interpose:function(t){return Ct(this,Ot(this,t))},interleave:function(){var t=[this].concat(i(arguments)),e=Dt(this.toSeq(),R.of,t),n=e.flatten(!0);return e.size&&(n.size=e.size*t.length),Ct(this,n)},last:function(){return this.get(-1)},skipWhile:function(t,e){return Ct(this,St(this,t,e,!1))},zip:function(){var t=[this].concat(i(arguments));return Ct(this,Dt(this,en,t))},zipWith:function(t){var e=i(arguments);return e[0]=this,Ct(this,Dt(this,t,e))}}),_.prototype[yn]=!0,_.prototype[mn]=!0,We(d,{get:function(t,e){return this.has(t)?t:e},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),d.prototype.has=ur.includes,We(z,p.prototype),We(R,_.prototype),We(M,d.prototype),We(B,p.prototype),We(Y,_.prototype),We(J,d.prototype);var sr={Iterable:l,Seq:C,Collection:K,Map:Pt,OrderedMap:Ie,List:fe,Stack:De,Set:Me,OrderedSet:Pe,Record:Ve,Range:Ye,Repeat:Je,is:W,fromJS:X};return sr}))},function(t,e){function n(t){return t&&"object"==typeof t&&toString.call(t)}function r(t){return"number"==typeof t&&t>-1&&t%1===0&&t<=Number.MAX_VALUE}var i=Function.prototype.bind;e.isString=function(t){return"string"==typeof t||"[object String]"===n(t)},e.isArray=Array.isArray||function(t){return"[object Array]"===n(t)},"function"!=typeof/./&&"object"!=typeof Int8Array?e.isFunction=function(t){return"function"==typeof t||!1}:e.isFunction=function(t){return"[object Function]"===toString.call(t)},e.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},e.extend=function(t){var e=arguments,n=arguments.length;if(!t||n<2)return t||{};for(var r=1;r<n;r++)for(var i=e[r],o=Object.keys(i),u=o.length,a=0;a<u;a++){var s=o[a];t[s]=i[s]}return t},e.clone=function(t){return e.isObject(t)?e.isArray(t)?t.slice():e.extend({},t):t},e.each=function(t,e,n){var i,o,u=t?t.length:0,a=-1;if(n&&(o=e,e=function(t,e,r){return o.call(n,t,e,r)}),r(u))for(;++a<u&&e(t[a],a,t)!==!1;);else for(i=Object.keys(t),u=i.length;++a<u&&e(t[i[a]],i[a],t)!==!1;);return t},e.partial=function(t){var e=Array.prototype.slice,n=e.call(arguments,1);return function(){return t.apply(this,n.concat(e.call(arguments)))}},e.toFactory=function(t){var e=function(){for(var e=arguments,n=arguments.length,r=Array(n),o=0;o<n;o++)r[o]=e[o];return new(i.apply(t,[null].concat(r)))};return e.__proto__=t,e.prototype=t.prototype,e}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return c.default.Iterable.isIterable(t)}function o(t){return i(t)||!(0,f.isObject)(t)}function u(t){return i(t)?t.toJS():t}function a(t){return i(t)?t:c.default.fromJS(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.isImmutable=i,e.isImmutableValue=o,e.toJS=u,e.toImmutable=a;var s=n(3),c=r(s),f=n(4)},function(t,e,n){function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function i(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=(function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}})(),s=n(3),c=i(s),f=n(7),h=i(f),l=n(8),p=r(l),_=n(11),d=n(10),v=n(5),y=n(4),m=n(12),g=(function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];u(this,t);var n=!!e.debug,r=n?m.DEBUG_OPTIONS:m.PROD_OPTIONS,i=new m.ReactorState({debug:n,options:r.merge(e.options||{})});this.prevReactorState=i,this.reactorState=i,this.observerState=new m.ObserverState,this.ReactMixin=(0,h.default)(this),this.__batchDepth=0,this.__isDispatching=!1}return a(t,[{key:"evaluate",value:function(t){var e=p.evaluate(this.reactorState,t),n=e.result,r=e.reactorState;return this.reactorState=r,n}},{key:"evaluateToJS",value:function(t){return(0,v.toJS)(this.evaluate(t))}},{key:"observe",value:function(t,e){var n=this;1===arguments.length&&(e=t,t=[]);var r=p.addObserver(this.observerState,t,e),i=r.observerState,o=r.entry;return this.observerState=i,function(){n.observerState=p.removeObserverByEntry(n.observerState,o)}}},{key:"unobserve",value:function(t,e){if(0===arguments.length)throw new Error("Must call unobserve with a Getter");if(!(0,d.isGetter)(t)&&!(0,_.isKeyPath)(t))throw new Error("Must call unobserve with a Getter");this.observerState=p.removeObserver(this.observerState,t,e)}},{key:"dispatch",value:function(t,e){if(0===this.__batchDepth){if(p.getOption(this.reactorState,"throwOnDispatchInDispatch")&&this.__isDispatching)throw this.__isDispatching=!1,new Error("Dispatch may not be called while a dispatch is in progress");this.__isDispatching=!0}try{this.reactorState=p.dispatch(this.reactorState,t,e)}catch(t){throw this.__isDispatching=!1,t}try{this.__notify()}finally{this.__isDispatching=!1}}},{key:"batch",value:function(t){this.batchStart(),t(),this.batchEnd()}},{key:"registerStore",value:function(t,e){console.warn("Deprecation warning: `registerStore` will no longer be supported in 1.1, use `registerStores` instead"),this.registerStores(o({},t,e))}},{key:"registerStores",value:function(t){this.reactorState=p.registerStores(this.reactorState,t),this.__notify()}},{key:"replaceStores",value:function(t){this.reactorState=p.replaceStores(this.reactorState,t)}},{key:"serialize",value:function(){return p.serialize(this.reactorState)}},{key:"loadState",value:function(t){this.reactorState=p.loadState(this.reactorState,t),this.__notify()}},{key:"reset",value:function(){var t=p.reset(this.reactorState);this.reactorState=t,this.prevReactorState=t,this.observerState=new m.ObserverState}},{key:"__notify",value:function(){var t=this;if(!(this.__batchDepth>0)){var e=this.reactorState.get("dirtyStores");if(0!==e.size){var n=c.default.Set().withMutations((function(n){n.union(t.observerState.get("any")),e.forEach((function(e){var r=t.observerState.getIn(["stores",e]);r&&n.union(r)}))}));n.forEach((function(e){var n=t.observerState.getIn(["observersMap",e]);if(n){var r=n.get("getter"),i=n.get("handler"),o=p.evaluate(t.prevReactorState,r),u=p.evaluate(t.reactorState,r);t.prevReactorState=o.reactorState,t.reactorState=u.reactorState;var a=o.result,s=u.result;c.default.is(a,s)||i.call(null,s)}}));var r=p.resetDirtyStores(this.reactorState);this.prevReactorState=r,this.reactorState=r}}}},{key:"batchStart",value:function(){this.__batchDepth++}},{key:"batchEnd",value:function(){if(this.__batchDepth--,this.__batchDepth<=0){this.__isDispatching=!0;try{this.__notify()}catch(t){throw this.__isDispatching=!1,t}this.__isDispatching=!1}}}]),t})();e.default=(0,y.toFactory)(g),t.exports=e.default},function(t,e,n){function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n={};return(0,o.each)(e,(function(e,r){n[r]=t.evaluate(e)})),n}Object.defineProperty(e,"__esModule",{value:!0});var o=n(4);e.default=function(t){return{getInitialState:function(){return i(t,this.getDataBindings())},componentDidMount:function(){var e=this;this.__unwatchFns=[],(0,o.each)(this.getDataBindings(),(function(n,i){var o=t.observe(n,(function(t){e.setState(r({},i,t))}));e.__unwatchFns.push(o)}))},componentWillUnmount:function(){for(var t=this;this.__unwatchFns.length;)t.__unwatchFns.shift()()}}},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){return new M({result:t,reactorState:e})}function o(t,e){return t.withMutations((function(t){(0,R.each)(e,(function(e,n){t.getIn(["stores",n])&&console.warn("Store already defined for id = "+n);var r=e.getInitialState();if(void 0===r&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store getInitialState() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(r))throw new Error("Store getInitialState() must return an immutable value, did you forget to call toImmutable");t.update("stores",(function(t){return t.set(n,e)})).update("state",(function(t){return t.set(n,r)})).update("dirtyStores",(function(t){return t.add(n)})).update("storeStates",(function(t){return I(t,[n])}))})),E(t)}))}function u(t,e){return t.withMutations((function(t){(0,R.each)(e,(function(e,n){t.update("stores",(function(t){return t.set(n,e)}))}))}))}function a(t,e,n){if(void 0===e&&f(t,"throwOnUndefinedActionType"))throw new Error("`dispatch` cannot be called with an `undefined` action type.");var r=t.get("state"),i=t.get("dirtyStores"),o=r.withMutations((function(r){A.default.dispatchStart(t,e,n),t.get("stores").forEach((function(o,u){var a=r.get(u),s=void 0;try{s=o.handle(a,e,n)}catch(e){throw A.default.dispatchError(t,e.message),e}if(void 0===s&&f(t,"throwOnUndefinedStoreReturnValue")){var c="Store handler must return a value, did you forget a return statement";throw A.default.dispatchError(t,c),new Error(c)}r.set(u,s),a!==s&&(i=i.add(u))})),A.default.dispatchEnd(t,r,i)})),u=t.set("state",o).set("dirtyStores",i).update("storeStates",(function(t){return I(t,i)}));return E(u)}function s(t,e){var n=[],r=(0,D.toImmutable)({}).withMutations((function(r){(0,R.each)(e,(function(e,i){var o=t.getIn(["stores",i]);if(o){var u=o.deserialize(e);void 0!==u&&(r.set(i,u),n.push(i))}}))})),i=w.default.Set(n);return t.update("state",(function(t){return t.merge(r)})).update("dirtyStores",(function(t){return t.union(i)})).update("storeStates",(function(t){return I(t,n)}))}function c(t,e,n){var r=e;(0,z.isKeyPath)(e)&&(e=(0,C.fromKeyPath)(e));var i=t.get("nextId"),o=(0,C.getStoreDeps)(e),u=w.default.Map({id:i,storeDeps:o,getterKey:r,getter:e,handler:n}),a=void 0;return a=0===o.size?t.update("any",(function(t){return t.add(i)})):t.withMutations((function(t){o.forEach((function(e){var n=["stores",e];t.hasIn(n)||t.setIn(n,w.default.Set()),t.updateIn(["stores",e],(function(t){return t.add(i)}))}))})),a=a.set("nextId",i+1).setIn(["observersMap",i],u),{observerState:a,entry:u}}function f(t,e){var n=t.getIn(["options",e]);if(void 0===n)throw new Error("Invalid option: "+e);return n}function h(t,e,n){var r=t.get("observersMap").filter((function(t){var r=t.get("getterKey"),i=!n||t.get("handler")===n;return!!i&&((0,z.isKeyPath)(e)&&(0,z.isKeyPath)(r)?(0,z.isEqual)(e,r):e===r)}));return t.withMutations((function(t){r.forEach((function(e){return l(t,e)}))}))}function l(t,e){return t.withMutations((function(t){var n=e.get("id"),r=e.get("storeDeps");0===r.size?t.update("any",(function(t){return t.remove(n)})):r.forEach((function(e){t.updateIn(["stores",e],(function(t){return t?t.remove(n):t}))})),t.removeIn(["observersMap",n])}))}function p(t){var e=t.get("state");return t.withMutations((function(t){var n=t.get("stores"),r=n.keySeq().toJS();n.forEach((function(n,r){var i=e.get(r),o=n.handleReset(i);if(void 0===o&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store handleReset() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(o))throw new Error("Store reset state must be an immutable value, did you forget to call toImmutable");t.setIn(["state",r],o)})),t.update("storeStates",(function(t){return I(t,r)})),v(t)}))}function _(t,e){var n=t.get("state");if((0,z.isKeyPath)(e))return i(n.getIn(e),t);if(!(0,C.isGetter)(e))throw new Error("evaluate must be passed a keyPath or Getter");if(g(t,e))return i(b(t,e),t);var r=(0,C.getDeps)(e).map((function(e){return _(t,e).result})),o=(0,C.getComputeFn)(e).apply(null,r);return i(o,S(t,e,o))}function d(t){var e={};return t.get("stores").forEach((function(n,r){var i=t.getIn(["state",r]),o=n.serialize(i);void 0!==o&&(e[r]=o)})),e}function v(t){return t.set("dirtyStores",w.default.Set())}function y(t){return t}function m(t,e){var n=y(e);return t.getIn(["cache",n])}function g(t,e){var n=m(t,e);if(!n)return!1;var r=n.get("storeStates");return 0!==r.size&&r.every((function(e,n){return t.getIn(["storeStates",n])===e}))}function S(t,e,n){var r=y(e),i=t.get("dispatchId"),o=(0,C.getStoreDeps)(e),u=(0,D.toImmutable)({}).withMutations((function(e){o.forEach((function(n){var r=t.getIn(["storeStates",n]);e.set(n,r)}))}));return t.setIn(["cache",r],w.default.Map({value:n,storeStates:u,dispatchId:i}))}function b(t,e){var n=y(e);return t.getIn(["cache",n,"value"])}function E(t){return t.update("dispatchId",(function(t){return t+1}))}function I(t,e){return t.withMutations((function(t){e.forEach((function(e){var n=t.has(e)?t.get(e)+1:1;t.set(e,n)}))}))}Object.defineProperty(e,"__esModule",{value:!0}),e.registerStores=o,e.replaceStores=u,e.dispatch=a,e.loadState=s,e.addObserver=c,e.getOption=f,e.removeObserver=h,e.removeObserverByEntry=l,e.reset=p,e.evaluate=_,e.serialize=d,e.resetDirtyStores=v;var O=n(3),w=r(O),T=n(9),A=r(T),D=n(5),C=n(10),z=n(11),R=n(4),M=w.default.Record({result:null,reactorState:null})},function(t,e,n){var r=n(8);e.dispatchStart=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.groupCollapsed("Dispatch: %s",e),console.group("payload"),console.debug(n),console.groupEnd())},e.dispatchError=function(t,e){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.debug("Dispatch error: "+e),console.groupEnd())},e.dispatchEnd=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&((0,r.getOption)(t,"logDirtyStores")&&console.log("Stores updated:",n.toList().toJS()),(0,r.getOption)(t,"logAppState")&&console.debug("Dispatch done, new state: ",e.toJS()),console.groupEnd())}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,l.isArray)(t)&&(0,l.isFunction)(t[t.length-1])}function o(t){return t[t.length-1]}function u(t){return t.slice(0,t.length-1)}function a(t,e){e||(e=h.default.Set());var n=h.default.Set().withMutations((function(e){if(!i(t))throw new Error("getFlattenedDeps must be passed a Getter");u(t).forEach((function(t){if((0,p.isKeyPath)(t))e.add((0,f.List)(t));else{if(!i(t))throw new Error("Invalid getter, each dependency must be a KeyPath or Getter");e.union(a(t))}}))}));return e.union(n)}function s(t){if(!(0,p.isKeyPath)(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,_]}function c(t){if(t.hasOwnProperty("__storeDeps"))return t.__storeDeps;var e=a(t).map((function(t){return t.first()})).filter((function(t){return!!t}));return Object.defineProperty(t,"__storeDeps",{enumerable:!1,configurable:!1,writable:!1,value:e}),e}Object.defineProperty(e,"__esModule",{value:!0});var f=n(3),h=r(f),l=n(4),p=n(11),_=function(t){return t};e.default={isGetter:i,getComputeFn:o,getFlattenedDeps:a,getStoreDeps:c,getDeps:u,fromKeyPath:s},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,s.isArray)(t)&&!(0,s.isFunction)(t[t.length-1])}function o(t,e){var n=a.default.List(t),r=a.default.List(e);return a.default.is(n,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.isKeyPath=i,e.isEqual=o;var u=n(3),a=r(u),s=n(4)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=(0,r.Map)({logDispatches:!1,logAppState:!1,logDirtyStores:!1,throwOnUndefinedActionType:!1,throwOnUndefinedStoreReturnValue:!1,throwOnNonImmutableStore:!1,throwOnDispatchInDispatch:!1});e.PROD_OPTIONS=i;var o=(0,r.Map)({logDispatches:!0,logAppState:!0,logDirtyStores:!0,throwOnUndefinedActionType:!0,throwOnUndefinedStoreReturnValue:!0,throwOnNonImmutableStore:!0,throwOnDispatchInDispatch:!0});e.DEBUG_OPTIONS=o;var u=(0,r.Record)({dispatchId:0,state:(0,r.Map)(),stores:(0,r.Map)(),cache:(0,r.Map)(),storeStates:(0,r.Map)(),dirtyStores:(0,r.Set)(),debug:!1,options:i});e.ReactorState=u;var a=(0,r.Record)({any:(0,r.Set)(),stores:(0,r.Map)({}),observersMap:(0,r.Map)({}),nextId:1});e.ObserverState=a}])}))})),Ne=t(Le),ke=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n},Pe=ke,Ue=Pe({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),He=Ne.Store,xe=Ne.toImmutable,Ve=new He({getInitialState:function(){return xe({isValidating:!1,authToken:!1,host:null,isInvalid:!1,errorMessage:""})},initialize:function(){this.on(Ue.VALIDATING_AUTH_TOKEN,n),this.on(Ue.VALID_AUTH_TOKEN,r),this.on(Ue.INVALID_AUTH_TOKEN,i)}}),qe=Ne.Store,Fe=Ne.toImmutable,Ge=new qe({getInitialState:function(){return Fe({authToken:null,host:""})},initialize:function(){this.on(Ue.VALID_AUTH_TOKEN,o),this.on(Ue.LOG_OUT,u)}}),Ke=Ne.Store,Be=new Ke({getInitialState:function(){return!0},initialize:function(){this.on(Ue.VALID_AUTH_TOKEN,a)}}),Ye=Pe({STREAM_START:null,STREAM_STOP:null,STREAM_ERROR:null}),Je=Ne.Store,We=Ne.toImmutable,Xe=new Je({getInitialState:function(){return We({isStreaming:!1,hasError:!1})},initialize:function(){this.on(Ye.STREAM_START,s),this.on(Ye.STREAM_ERROR,c),this.on(Ye.LOG_OUT,f)}}),Qe=1,Ze=2,$e=3,tn=function(t,e){this.url=t,this.options=e||{},this.commandId=1,this.commands={},this.connectionTries=0,this.eventListeners={},this.closeRequested=!1};tn.prototype.addEventListener=function(t,e){var n=this.eventListeners[t];n||(n=this.eventListeners[t]=[]),n.push(e)},tn.prototype.fireEvent=function(t){var e=this;(this.eventListeners[t]||[]).forEach((function(t){return t(e)}))},tn.prototype.connect=function(){var t=this;return new Promise(function(e,n){var r=t.commands;Object.keys(r).forEach((function(t){var e=r[t];e.reject&&e.reject(S($e,"Connection lost"))}));var i=!1;t.connectionTries+=1,t.socket=new WebSocket(t.url),t.socket.addEventListener("open",(function(){t.connectionTries=0})),t.socket.addEventListener("message",(function(o){var u=JSON.parse(o.data);switch(u.type){case"event":t.commands[u.id].eventCallback(u.event);break;case"result":u.success?t.commands[u.id].resolve(u):t.commands[u.id].reject(u.error),delete t.commands[u.id];break;case"pong":break;case"auth_required":t.sendMessage(h(t.options.authToken));break;case"auth_invalid":n(Ze),i=!0;break;case"auth_ok":e(t),t.fireEvent("ready"),t.commandId=1,t.commands={},Object.keys(r).forEach((function(e){var n=r[e];n.eventType&&t.subscribeEvents(n.eventCallback,n.eventType).then((function(t){n.unsubscribe=t}))}))}})),t.socket.addEventListener("close",(function(){if(!i&&!t.closeRequested){0===t.connectionTries?t.fireEvent("disconnected"):n(Qe);var e=1e3*Math.min(t.connectionTries,5);setTimeout((function(){return t.connect()}),e)}}))})},tn.prototype.close=function(){this.closeRequested=!0,this.socket.close()},tn.prototype.getStates=function(){return this.sendMessagePromise(l()).then(b)},tn.prototype.getServices=function(){return this.sendMessagePromise(_()).then(b)},tn.prototype.getPanels=function(){return this.sendMessagePromise(d()).then(b)},tn.prototype.getConfig=function(){return this.sendMessagePromise(p()).then(b)},tn.prototype.callService=function(t,e,n){return this.sendMessagePromise(v(t,e,n))},tn.prototype.subscribeEvents=function(t,e){var n=this;return this.sendMessagePromise(y(e)).then((function(r){var i={eventCallback:t,eventType:e,unsubscribe:function(){return n.sendMessagePromise(m(r.id)).then((function(){delete n.commands[r.id]}))}};return n.commands[r.id]=i,function(){return i.unsubscribe()}}))},tn.prototype.ping=function(){return this.sendMessagePromise(g())},tn.prototype.sendMessage=function(t){this.socket.send(JSON.stringify(t))},tn.prototype.sendMessagePromise=function(t){var e=this;return new Promise(function(n,r){e.commandId+=1;var i=e.commandId;t.id=i,e.commands[i]={resolve:n,reject:r},e.sendMessage(t)})};var en=Pe({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),nn=Ne.Store,rn=new nn({getInitialState:function(){return!0},initialize:function(){this.on(en.API_FETCH_ALL_START,(function(){return!0})),this.on(en.API_FETCH_ALL_SUCCESS,(function(){return!1})),this.on(en.API_FETCH_ALL_FAIL,(function(){return!1})),this.on(en.LOG_OUT,(function(){return!1}))}}),on=I,un=Pe({API_FETCH_SUCCESS:null,API_FETCH_START:null,API_FETCH_FAIL:null,API_SAVE_SUCCESS:null,API_SAVE_START:null,API_SAVE_FAIL:null,API_DELETE_SUCCESS:null,API_DELETE_START:null,API_DELETE_FAIL:null,LOG_OUT:null}),an=Ne.Store,sn=Ne.toImmutable,cn=new an({getInitialState:function(){return sn({})},initialize:function(){var t=this;this.on(un.API_FETCH_SUCCESS,O),this.on(un.API_SAVE_SUCCESS,O),this.on(un.API_DELETE_SUCCESS,w),this.on(un.LOG_OUT,(function(){return t.getInitialState()}))}}),fn=Object.prototype.hasOwnProperty,hn=Object.prototype.propertyIsEnumerable,ln=A()?Object.assign:function(t,e){for(var n,r,i=arguments,o=T(t),u=1;u<arguments.length;u++){n=Object(i[u]);for(var a in n)fn.call(n,a)&&(o[a]=n[a]);if(Object.getOwnPropertySymbols){r=Object.getOwnPropertySymbols(n);for(var s=0;s<r.length;s++)hn.call(n,r[s])&&(o[r[s]]=n[r[s]]); +}}return o},pn=Ne.toImmutable,_n=D,dn=Object.freeze({createApiActions:_n,register:N,createHasDataGetter:k,createEntityMapGetter:P,createByIdGetter:U}),vn=["playing","paused","unknown"],yn=function(t,e){this.serviceActions=t.serviceActions,this.stateObj=e},mn={isOff:{},isIdle:{},isMuted:{},isPaused:{},isPlaying:{},isMusic:{},isTVShow:{},hasMediaControl:{},volumeSliderValue:{},showProgress:{},currentProgress:{},supportsPause:{},supportsVolumeSet:{},supportsVolumeMute:{},supportsPreviousTrack:{},supportsNextTrack:{},supportsTurnOn:{},supportsTurnOff:{},supportsPlayMedia:{},supportsVolumeButtons:{},supportsPlay:{},primaryText:{},secondaryText:{}};mn.isOff.get=function(){return"off"===this.stateObj.state},mn.isIdle.get=function(){return"idle"===this.stateObj.state},mn.isMuted.get=function(){return this.stateObj.attributes.is_volume_muted},mn.isPaused.get=function(){return"paused"===this.stateObj.state},mn.isPlaying.get=function(){return"playing"===this.stateObj.state},mn.isMusic.get=function(){return"music"===this.stateObj.attributes.media_content_type},mn.isTVShow.get=function(){return"tvshow"===this.stateObj.attributes.media_content_type},mn.hasMediaControl.get=function(){return vn.indexOf(this.stateObj.state)!==-1},mn.volumeSliderValue.get=function(){return 100*this.stateObj.attributes.volume_level},mn.showProgress.get=function(){return(this.isPlaying||this.isPaused)&&"media_position"in this.stateObj.attributes&&"media_position_updated_at"in this.stateObj.attributes},mn.currentProgress.get=function(){return this.stateObj.attributes.media_position+(Date.now()-new Date(this.stateObj.attributes.media_position_updated_at))/1e3},mn.supportsPause.get=function(){return 0!==(1&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeSet.get=function(){return 0!==(4&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeMute.get=function(){return 0!==(8&this.stateObj.attributes.supported_media_commands)},mn.supportsPreviousTrack.get=function(){return 0!==(16&this.stateObj.attributes.supported_media_commands)},mn.supportsNextTrack.get=function(){return 0!==(32&this.stateObj.attributes.supported_media_commands)},mn.supportsTurnOn.get=function(){return 0!==(128&this.stateObj.attributes.supported_media_commands)},mn.supportsTurnOff.get=function(){return 0!==(256&this.stateObj.attributes.supported_media_commands)},mn.supportsPlayMedia.get=function(){return 0!==(512&this.stateObj.attributes.supported_media_commands)},mn.supportsVolumeButtons.get=function(){return 0!==(1024&this.stateObj.attributes.supported_media_commands)},mn.supportsPlay.get=function(){return 0!==(16384&this.stateObj.attributes.supported_media_commands)},mn.primaryText.get=function(){return this.stateObj.attributes.media_title||this.stateObj.stateDisplay},mn.secondaryText.get=function(){if(this.isMusic)return this.stateObj.attributes.media_artist;if(this.isTVShow){var t=this.stateObj.attributes.media_series_title;return this.stateObj.attributes.media_season&&(t+=" S"+this.stateObj.attributes.media_season,this.stateObj.attributes.media_episode&&(t+="E"+this.stateObj.attributes.media_episode)),t}return this.stateObj.attributes.app_name?this.stateObj.attributes.app_name:""},yn.prototype.mediaPlayPause=function(){this.callService("media_play_pause")},yn.prototype.nextTrack=function(){this.callService("media_next_track")},yn.prototype.playbackControl=function(){this.callService("media_play_pause")},yn.prototype.previousTrack=function(){this.callService("media_previous_track")},yn.prototype.setVolume=function(t){this.callService("volume_set",{volume_level:t})},yn.prototype.togglePower=function(){this.isOff?this.turnOn():this.turnOff()},yn.prototype.turnOff=function(){this.callService("turn_off")},yn.prototype.turnOn=function(){this.callService("turn_on")},yn.prototype.volumeDown=function(){this.callService("volume_down")},yn.prototype.volumeMute=function(t){if(!this.supportsVolumeMute)throw new Error("Muting volume not supported");this.callService("volume_mute",{is_volume_muted:t})},yn.prototype.volumeUp=function(){this.callService("volume_down")},yn.prototype.callService=function(t,e){var n=e||{};n.entity_id=this.stateObj.entityId,this.serviceActions.callService("media_player",t,n)},Object.defineProperties(yn.prototype,mn);var gn=Ne.Immutable,Sn=Ne.toJS,bn="entity",En=new gn.Record({entityId:null,domain:null,objectId:null,state:null,entityDisplay:null,stateDisplay:null,lastChanged:null,lastChangedAsDate:null,lastUpdated:null,lastUpdatedAsDate:null,attributes:{},isCustomGroup:null},"Entity"),In=(function(t){function e(e,n,r,i,o){void 0===o&&(o={});var u=e.split("."),a=u[0],s=u[1],c=n.replace(/_/g," ");o.unit_of_measurement&&(c+=" "+o.unit_of_measurement),t.call(this,{entityId:e,domain:a,objectId:s,state:n,stateDisplay:c,lastChanged:r,lastUpdated:i,attributes:o,entityDisplay:o.friendly_name||s.replace(/_/g," "),lastChangedAsDate:H(r),lastUpdatedAsDate:H(i),isCustomGroup:"group"===a&&!o.auto})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.entityId},e.prototype.domainModel=function(t){if("media_player"!==this.domain)throw new Error("Domain does not have a model");return new yn(t,this)},e.delete=function(t,e){return on(t,"DELETE","states/"+e.entityId)},e.save=function(t,e){var n=Sn(e),r=n.entityId,i=n.state,o=n.attributes;void 0===o&&(o={});var u={state:i,attributes:o};return on(t,"POST","states/"+r,u)},e.fetch=function(t,e){return on(t,"GET","states/"+e)},e.fetchAll=function(t){return on(t,"GET","states")},e.fromJSON=function(t){var n=t.entity_id,r=t.state,i=t.last_changed,o=t.last_updated,u=t.attributes;return new e(n,r,i,o,u)},Object.defineProperties(e.prototype,n),e})(En);In.entity=bn;var On=_n(In),wn=k(In),Tn=P(In),An=U(In),Dn=[Tn,function(t){return t.filter((function(t){return!t.attributes.hidden}))}],Cn=Object.freeze({hasData:wn,entityMap:Tn,byId:An,visibleEntityMap:Dn}),zn=On,Rn=Cn,Mn=Object.freeze({actions:zn,getters:Rn}),jn=Pe({NOTIFICATION_CREATED:null}),Ln=Ne.Store,Nn=Ne.Immutable,kn=new Ln({getInitialState:function(){return new Nn.OrderedMap},initialize:function(){this.on(jn.NOTIFICATION_CREATED,x),this.on(jn.LOG_OUT,V)}}),Pn=Object.freeze({createNotification:q}),Un=["notifications"],Hn=[Un,function(t){return t.last()}],xn=Object.freeze({notificationMap:Un,lastNotificationMessage:Hn}),Vn=Pn,qn=xn,Fn=Object.freeze({register:F,actions:Vn,getters:qn}),Gn=Ne.Immutable,Kn=Ne.toImmutable,Bn="service",Yn=new Gn.Record({domain:null,services:[]},"ServiceDomain"),Jn=(function(t){function e(e,n){t.call(this,{domain:e,services:n})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.domain},e.fetchAll=function(){return on("GET","services")},e.fromJSON=function(t){var n=t.domain,r=t.services;return new e(n,Kn(r))},Object.defineProperties(e.prototype,n),e})(Yn);Jn.entity=Bn;var Wn=k(Jn),Xn=P(Jn),Qn=U(Jn),Zn=Object.freeze({hasData:Wn,entityMap:Xn,byDomain:Qn,hasService:B,canToggleEntity:Y}),$n=_n(Jn);$n.serviceRegistered=function(t,e,n){var r=t.evaluateToJS(Qn(e));if(r)r.services[n]={};else{var i;r={domain:e,services:(i={},i[n]={},i)}}$n.incrementData(t,r)},$n.callTurnOn=function(t,e,n){return void 0===n&&(n={}),$n.callService(t,"homeassistant","turn_on",ln({},n,{entity_id:e}))},$n.callTurnOff=function(t,e,n){return void 0===n&&(n={}),$n.callService(t,"homeassistant","turn_off",ln({},n,{entity_id:e}))},$n.callService=function(t,e,n,r){return void 0===r&&(r={}),on(t,"POST","services/"+e+"/"+n,r).then((function(i){"turn_on"===n&&r.entity_id?Vn.createNotification(t,"Turned on "+r.entity_id+"."):"turn_off"===n&&r.entity_id?Vn.createNotification(t,"Turned off "+r.entity_id+"."):Vn.createNotification(t,"Service "+e+"/"+n+" called."),zn.incrementData(t,i)}))};var tr=$n,er=Zn,nr=Object.freeze({actions:tr,getters:er}),rr=Ne.Immutable,ir="event",or=new rr.Record({event:null,listenerCount:0},"Event"),ur=(function(t){function e(e,n){void 0===n&&(n=0),t.call(this,{event:e,listenerCount:n})}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={id:{}};return n.id.get=function(){return this.event},e.fetchAll=function(t){return on(t,"GET","events")},e.fromJSON=function(t){var n=t.event,r=t.listener_count;return new e(n,r)},Object.defineProperties(e.prototype,n),e})(or);ur.entity=ir;var ar=_n(ur);ar.fireEvent=function(t,e,n){return void 0===n&&(n={}),on(t,"POST","events/"+e,n).then((function(){Vn.createNotification(t,"Event "+e+" successful fired!")}))};var sr=k(ur),cr=P(ur),fr=U(ur),hr=Object.freeze({hasData:sr,entityMap:cr,byId:fr}),lr=ar,pr=hr,_r=Object.freeze({actions:lr,getters:pr}),dr=Pe({SERVER_CONFIG_LOADED:null,COMPONENT_LOADED:null,LOG_OUT:null}),vr=Ne.Store,yr=Ne.toImmutable,mr=new vr({getInitialState:function(){return yr([])},initialize:function(){this.on(dr.COMPONENT_LOADED,J),this.on(dr.SERVER_CONFIG_LOADED,W),this.on(dr.LOG_OUT,X)}}),gr=Ne.Store,Sr=Ne.toImmutable,br=new gr({getInitialState:function(){return Sr({latitude:null,longitude:null,location_name:"Home",unit_system:"metric",time_zone:"UTC",config_dir:null,serverVersion:"unknown"})},initialize:function(){this.on(dr.SERVER_CONFIG_LOADED,Q),this.on(dr.LOG_OUT,Z)}}),Er=Object.freeze({configLoaded:$,fetchAll:tt,componentLoaded:et}),Ir=[["serverConfig","latitude"],["serverConfig","longitude"],function(t,e){return{latitude:t,longitude:e}}],Or=["serverConfig","location_name"],wr=["serverConfig","config_dir"],Tr=["serverConfig","serverVersion"],Ar=Object.freeze({locationGPS:Ir,locationName:Or,configDir:wr,serverVersion:Tr,isComponentLoaded:nt}),Dr=Er,Cr=Ar,zr=Object.freeze({register:rt,actions:Dr,getters:Cr}),Rr=Pe({NAVIGATE:null,SHOW_SIDEBAR:null,PANELS_LOADED:null,LOG_OUT:null}),Mr=Ne.Store,jr=new Mr({getInitialState:function(){return"states"},initialize:function(){this.on(Rr.NAVIGATE,it),this.on(Rr.LOG_OUT,ot)}}),Lr=Ne.Store,Nr=Ne.toImmutable,kr=new Lr({getInitialState:function(){return Nr({})},initialize:function(){this.on(Rr.PANELS_LOADED,ut),this.on(Rr.LOG_OUT,at)}}),Pr=Ne.Store,Ur=new Pr({getInitialState:function(){return!1},initialize:function(){this.on(Rr.SHOW_SIDEBAR,st),this.on(Rr.LOG_OUT,ct)}}),Hr=Object.freeze({showSidebar:ft,navigate:ht,panelsLoaded:lt}),xr=["panels"],Vr=["currentPanel"],qr=[xr,Vr,function(t,e){return t.get(e)||null}],Fr=["showSidebar"],Gr=Object.freeze({panels:xr,activePanelName:Vr,activePanel:qr,showSidebar:Fr}),Kr=Pe({SELECT_ENTITY:null,LOG_OUT:null}),Br=Ne.Store,Yr=new Br({getInitialState:function(){return null},initialize:function(){this.on(Kr.SELECT_ENTITY,pt),this.on(Kr.LOG_OUT,_t)}}),Jr=Object.freeze({selectEntity:dt,deselectEntity:vt}),Wr=Pe({ENTITY_HISTORY_DATE_SELECTED:null,ENTITY_HISTORY_FETCH_START:null,ENTITY_HISTORY_FETCH_ERROR:null,ENTITY_HISTORY_FETCH_SUCCESS:null,RECENT_ENTITY_HISTORY_FETCH_START:null,RECENT_ENTITY_HISTORY_FETCH_ERROR:null,RECENT_ENTITY_HISTORY_FETCH_SUCCESS:null,LOG_OUT:null}),Xr=Ne.Store,Qr=new Xr({getInitialState:function(){var t=new Date;return t.setDate(t.getDate()-1),t.setHours(0,0,0,0),t.toISOString()},initialize:function(){this.on(Wr.ENTITY_HISTORY_DATE_SELECTED,mt),this.on(Wr.LOG_OUT,gt)}}),Zr=Ne.Store,$r=Ne.toImmutable,ti=new Zr({getInitialState:function(){return $r({})},initialize:function(){this.on(Wr.ENTITY_HISTORY_FETCH_SUCCESS,St),this.on(Wr.LOG_OUT,bt)}}),ei=Ne.Store,ni=new ei({getInitialState:function(){return!1},initialize:function(){this.on(Wr.ENTITY_HISTORY_FETCH_START,(function(){return!0})),this.on(Wr.ENTITY_HISTORY_FETCH_SUCCESS,(function(){return!1})),this.on(Wr.ENTITY_HISTORY_FETCH_ERROR,(function(){return!1})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_START,(function(){return!0})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,(function(){return!1})),this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_ERROR,(function(){return!1})),this.on(Wr.LOG_OUT,(function(){return!1}))}}),ri=Ne.Store,ii=Ne.toImmutable,oi=new ri({getInitialState:function(){return ii({})},initialize:function(){this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,Et),this.on(Wr.LOG_OUT,It)}}),ui=Ne.Store,ai=Ne.toImmutable,si="ALL_ENTRY_FETCH",ci=new ui({getInitialState:function(){return ai({})},initialize:function(){this.on(Wr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,Ot),this.on(Wr.LOG_OUT,wt)}}),fi=Ne.toImmutable,hi=["isLoadingEntityHistory"],li=["currentEntityHistoryDate"],pi=["entityHistory"],_i=[li,pi,function(t,e){return e.get(t)||fi({})}],di=[li,pi,function(t,e){return!!e.get(t)}],vi=["recentEntityHistory"],yi=["recentEntityHistory"],mi=Object.freeze({isLoadingEntityHistory:hi,currentDate:li,entityHistoryMap:pi,entityHistoryForCurrentDate:_i,hasDataForCurrentDate:di,recentEntityHistoryMap:vi,recentEntityHistoryUpdatedMap:yi}),gi=Object.freeze({changeCurrentDate:Tt,fetchRecent:At,fetchDate:Dt,fetchSelectedDate:Ct}),Si=gi,bi=mi,Ei=Object.freeze({register:zt,actions:Si,getters:bi}),Ii=["moreInfoEntityId"],Oi=[Ii,function(t){return null!==t}],wi=[Ii,Rn.entityMap,function(t,e){return e.get(t)||null}],Ti=[Ii,bi.recentEntityHistoryMap,function(t,e){return e.get(t)}],Ai=[Ii,bi.recentEntityHistoryUpdatedMap,function(t,e){return yt(e.get(t))}],Di=Object.freeze({currentEntityId:Ii,hasCurrentEntityId:Oi,currentEntity:wi,currentEntityHistory:Ti,isCurrentEntityHistoryStale:Ai}),Ci=Jr,zi=Di,Ri=Object.freeze({register:Rt,actions:Ci,getters:zi}),Mi=Pe({SELECT_VIEW:null}),ji=Ne.Store,Li=new ji({getInitialState:function(){return null},initialize:function(){this.on(Mi.SELECT_VIEW,(function(t,e){var n=e.view;return n})),this.on(un.API_FETCH_SUCCESS,Mt)}}),Ni=Object.freeze({selectView:jt}),ki=Ne.Immutable,Pi="group.default_view",Ui=["persistent_notification","configurator"],Hi=["currentView"],xi=[Rn.entityMap,function(t){return t.filter((function(t){return"group"===t.domain&&t.attributes.view&&t.entityId!==Pi}))}],Vi=[Rn.entityMap,Hi,function(t,e){var n;return n=e?t.get(e):t.get(Pi),n?(new ki.Map).withMutations((function(e){Lt(e,t,n),t.valueSeq().forEach((function(t,n){Ui.indexOf(t.domain)!==-1&&e.set(n,t)}))})):t.filter((function(t){return!t.attributes.hidden}))}],qi=Object.freeze({currentView:Hi,views:xi,currentViewEntities:Vi}),Fi=Ni,Gi=qi,Ki=Object.freeze({register:Nt,actions:Fi,getters:Gi}),Bi=history.pushState&&!0,Yi="Home Assistant",Ji={},Wi=Object.freeze({startSync:Vt,stopSync:qt}),Xi=Hr,Qi=Gr,Zi=Wi,$i=Object.freeze({register:Ft,actions:Xi,getters:Qi,urlSync:Zi}),to=Object.freeze({fetchAll:Gt}),eo=[Rn.hasData,pr.hasData,er.hasData,function(t,e,n){return t&&e&&n}],no=["isFetchingData"],ro=Object.freeze({isDataLoaded:eo,isFetching:no}),io=to,oo=ro,uo=Object.freeze({register:Kt,actions:io,getters:oo}),ao=function(t,e){switch(e.event_type){case"state_changed":e.data.new_state?zn.incrementData(t,e.data.new_state):zn.removeData(t,e.data.entity_id);break;case"component_loaded":Dr.componentLoaded(t,e.data.component);break;case"service_registered":tr.serviceRegistered(t,e.data.domain,e.data.service)}},so=6e4,co=["state_changed","component_loaded","service_registered"],fo={},ho=Object.freeze({start:Jt}),lo=["streamStatus","isStreaming"],po=["streamStatus","hasError"],_o=Object.freeze({isStreamingEvents:lo,hasStreamingEventsError:po}),vo=ho,yo=_o,mo=Object.freeze({register:Wt,actions:vo,getters:yo}),go="Unexpected error",So=Object.freeze({validate:Xt,logOut:Qt}),bo=["authAttempt","isValidating"],Eo=["authAttempt","isInvalid"],Io=["authAttempt","errorMessage"],Oo=["rememberAuth"],wo=[["authAttempt","authToken"],["authAttempt","host"],function(t,e){return{authToken:t,host:e}}],To=["authCurrent","authToken"],Ao=[To,["authCurrent","host"],function(t,e){return{authToken:t,host:e}}],Do=[bo,["authAttempt","authToken"],["authCurrent","authToken"],function(t,e,n){return t?e:n}],Co=[bo,wo,Ao,function(t,e,n){return t?e:n}],zo=Object.freeze({isValidating:bo,isInvalidAttempt:Eo,attemptErrorMessage:Io,rememberAuth:Oo,attemptAuthInfo:wo,currentAuthToken:To,currentAuthInfo:Ao,authToken:Do,authInfo:Co}),Ro=So,Mo=zo,jo=Object.freeze({register:Zt,actions:Ro,getters:Mo}),Lo=$t(),No={authToken:{getter:[Mo.currentAuthToken,Mo.rememberAuth,function(t,e){return e?t:null}],defaultValue:null},showSidebar:{getter:Qi.showSidebar,defaultValue:!1}},ko={};Object.keys(No).forEach((function(t){t in Lo||(Lo[t]=No[t].defaultValue),Object.defineProperty(ko,t,{get:function(){try{return JSON.parse(Lo[t])}catch(e){return No[t].defaultValue}}})})),ko.startSync=function(t){Object.keys(No).forEach((function(e){var n=No[e],r=n.getter,i=function(t){Lo[e]=JSON.stringify(t)};t.observe(r,i),i(t.evaluate(r))}))};var Po=ko,Uo=Ne.Reactor,Ho=0,xo=Ne.toImmutable,Vo={UNIT_TEMP_C:"°C",UNIT_TEMP_F:"°F"},qo={expandGroup:ne,isStaleTime:yt,parseDateTime:H,temperatureUnits:Vo},Fo=Object.freeze({fetchErrorLog:re}),Go=Fo,Ko=Object.freeze({actions:Go}),Bo=Pe({LOGBOOK_DATE_SELECTED:null,LOGBOOK_ENTRIES_FETCH_START:null,LOGBOOK_ENTRIES_FETCH_ERROR:null,LOGBOOK_ENTRIES_FETCH_SUCCESS:null}),Yo=Ne.Store,Jo=new Yo({getInitialState:function(){var t=new Date;return t.setHours(0,0,0,0),t.toISOString()},initialize:function(){this.on(Bo.LOGBOOK_DATE_SELECTED,ie),this.on(Bo.LOG_OUT,oe)}}),Wo=Ne.Store,Xo=new Wo({getInitialState:function(){return!1},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_START,(function(){return!0})),this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,(function(){return!1})),this.on(Bo.LOGBOOK_ENTRIES_FETCH_ERROR,(function(){return!1})),this.on(Bo.LOG_OUT,(function(){return!1}))}}),Qo=Ne.Immutable,Zo=new Qo.Record({when:null,name:null,message:null,domain:null,entityId:null},"LogbookEntry"),$o=(function(t){function e(e,n,r,i,o){t.call(this,{when:e,name:n,message:r,domain:i,entityId:o})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.fromJSON=function(t){var n=t.when,r=t.name,i=t.message,o=t.domain,u=t.entity_id;return new e(H(n),r,i,o,u)},e})(Zo),tu=Ne.Store,eu=Ne.toImmutable,nu=new tu({getInitialState:function(){return eu({})},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,ue),this.on(Bo.LOG_OUT,ae)}}),ru=Ne.Store,iu=Ne.toImmutable,ou=new ru({getInitialState:function(){return iu({})},initialize:function(){this.on(Bo.LOGBOOK_ENTRIES_FETCH_SUCCESS,se),this.on(Bo.LOG_OUT,ce)}}),uu=Object.freeze({changeCurrentDate:fe,fetchDate:he}),au=Ne.toImmutable,su=6e4,cu=["currentLogbookDate"],fu=[cu,["logbookEntriesUpdated"],function(t,e){return le(e.get(t))}],hu=[cu,["logbookEntries"],function(t,e){return e.get(t)||au([])}],lu=["isLoadingLogbookEntries"],pu=Object.freeze({currentDate:cu,isCurrentStale:fu,currentEntries:hu,isLoadingEntries:lu}),_u=uu,du=pu,vu=Object.freeze({register:pe,actions:_u,getters:du}),yu=Pe({PUSH_NOTIFICATIONS_SUBSCRIBE:null,PUSH_NOTIFICATIONS_UNSUBSCRIBE:null}),mu=Ne.Store,gu=Ne.toImmutable,Su=new mu({getInitialState:function(){return gu({supported:"PushManager"in window&&("https:"===document.location.protocol||"localhost"===document.location.hostname||"127.0.0.1"===document.location.hostname),active:"Notification"in window&&"granted"===Notification.permission})},initialize:function(){this.on(yu.PUSH_NOTIFICATIONS_SUBSCRIBE,_e),this.on(yu.PUSH_NOTIFICATIONS_UNSUBSCRIBE,de),this.on(yu.LOG_OUT,ve)}}),bu=Object.freeze({subscribePushNotifications:ye,unsubscribePushNotifications:me}),Eu=["pushNotifications","supported"],Iu=["pushNotifications","active"],Ou=Object.freeze({isSupported:Eu,isActive:Iu}),wu=bu,Tu=Ou,Au=Object.freeze({register:ge,actions:wu,getters:Tu}),Du=Object.freeze({render:Se}),Cu=Du,zu=Object.freeze({actions:Cu}),Ru=Ne.Store,Mu=new Ru({getInitialState:function(){return"webkitSpeechRecognition"in window}}),ju=Pe({VOICE_START:null,VOICE_RESULT:null,VOICE_TRANSMITTING:null,VOICE_DONE:null,VOICE_ERROR:null}),Lu=Ne.Store,Nu=Ne.toImmutable,ku=new Lu({getInitialState:function(){return Nu({isListening:!1,isTransmitting:!1,interimTranscript:"",finalTranscript:""})},initialize:function(){this.on(ju.VOICE_START,be),this.on(ju.VOICE_RESULT,Ee),this.on(ju.VOICE_TRANSMITTING,Ie),this.on(ju.VOICE_DONE,Oe),this.on(ju.VOICE_ERROR,we),this.on(ju.LOG_OUT,Te)}}),Pu={},Uu=Object.freeze({stop:Ce,finish:ze,listen:Re}),Hu=["isVoiceSupported"],xu=["currentVoiceCommand","isListening"],Vu=["currentVoiceCommand","isTransmitting"],qu=["currentVoiceCommand","interimTranscript"],Fu=["currentVoiceCommand","finalTranscript"],Gu=[qu,Fu,function(t,e){return t.slice(e.length)}],Ku=Object.freeze({isVoiceSupported:Hu,isListening:xu,isTransmitting:Vu,interimTranscript:qu,finalTranscript:Fu,extraInterimTranscript:Gu}),Bu=Uu,Yu=Ku,Ju=Object.freeze({register:Me,actions:Bu,getters:Yu}),Wu=function(){var t=te();Object.defineProperties(this,{demo:{value:!1,enumerable:!0},dev:{value:!1,enumerable:!0},localStoragePreferences:{value:Po,enumerable:!0},reactor:{value:t,enumerable:!0},util:{value:qo,enumerable:!0},callApi:{value:on.bind(null,t)},startLocalStoragePreferencesSync:{value:Po.startSync.bind(Po,t)},startUrlSync:{value:Zi.startSync.bind(null,t)},stopUrlSync:{value:Zi.stopSync.bind(null,t)}}),ee(this,t,{auth:jo,config:zr,entity:Mn,entityHistory:Ei,errorLog:Ko,event:_r,logbook:vu,moreInfo:Ri,navigation:$i,notification:Fn,pushNotification:Au,restApi:dn,service:nr,stream:mo,sync:uo,template:zu,view:Ki,voice:Ju})},Xu=new Wu;window.validateAuth=function(t,e){Xu.authActions.validate(t,{rememberAuth:e,useStreaming:Xu.localStoragePreferences.useStreaming})},window.removeInitMsg=function(){var t=document.getElementById("ha-init-skeleton");t&&t.parentElement.removeChild(t)},Xu.reactor.batch((function(){Xu.navigationActions.showSidebar(Xu.localStoragePreferences.showSidebar),window.noAuth?window.validateAuth("",!1):Xu.localStoragePreferences.authToken&&window.validateAuth(Xu.localStoragePreferences.authToken,!0)})),setTimeout(Xu.startLocalStoragePreferencesSync,5e3),"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("/service_worker.js")})),window.hass=Xu})(); diff --git a/homeassistant/components/frontend/www_static/core.js.gz b/homeassistant/components/frontend/www_static/core.js.gz index 9e646886d34696758747d5460f4c0f52bbe25abc..6ecd5e7276260042ba914b2d92d39590db5a742d 100644 GIT binary patch delta 26327 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 S%Aec+8PlKNpWu3qkpTebLXhMD delta 26314 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 diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 545d1f50fc7..6811287dabe 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -1,5 +1,5 @@ <html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(){function e(){document.body.removeAttribute("unresolved")}window.WebComponents?addEventListener("WebComponentsReady",e):"interactive"===document.readyState||"complete"===document.readyState?e():addEventListener("DOMContentLoaded",e)}(),window.Polymer={Settings:function(){var e=window.Polymer||{};if(!e.noUrlSettings)for(var t,r=location.search.slice(1).split("&"),i=0;i<r.length&&(t=r[i]);i++)t=t.split("="),t[0]&&(e[t[0]]=t[1]||!0);return e.wantShadow="shadow"===e.dom,e.hasShadow=Boolean(Element.prototype.createShadowRoot),e.nativeShadow=e.hasShadow&&!window.ShadowDOMPolyfill,e.useShadow=e.wantShadow&&e.hasShadow,e.hasNativeImports=Boolean("import"in document.createElement("link")),e.useNativeImports=e.hasNativeImports,e.useNativeCustomElements=!window.CustomElements||window.CustomElements.useNative,e.useNativeShadow=e.useShadow&&e.nativeShadow,e.usePolyfillProto=!e.useNativeCustomElements&&!Object.__proto__,e.hasNativeCSSProperties=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS.supports&&CSS.supports("box-shadow","0 0 0 var(--foo)"),e.useNativeCSSProperties=e.hasNativeCSSProperties&&e.lazyRegister&&e.useNativeCSSProperties,e.isIE=navigator.userAgent.match("Trident"),e}()},function(){var e=window.Polymer;window.Polymer=function(e){"function"==typeof e&&(e=e.prototype),e||(e={});var r=t(e);e=r.prototype;var i={prototype:e};return e.extends&&(i.extends=e.extends),Polymer.telemetry._registrate(e),document.registerElement(e.is,i),r};var t=function(e){var t=Polymer.Base;return e.extends&&(t=Polymer.Base._getExtendedPrototype(e.extends)),e=Polymer.Base.chainObject(e,t),e.registerCallback(),e.constructor};if(e)for(var r in e)Polymer[r]=e[r];Polymer.Class=t}(),Polymer.telemetry={registrations:[],_regLog:function(e){console.log("["+e.is+"]: registered")},_registrate:function(e){this.registrations.push(e),Polymer.log&&this._regLog(e)},dumpRegistrations:function(){this.registrations.forEach(this._regLog)}},Object.defineProperty(window,"currentImport",{enumerable:!0,configurable:!0,get:function(){return(document._currentScript||document.currentScript||{}).ownerDocument}}),Polymer.RenderStatus={_ready:!1,_callbacks:[],whenReady:function(e){this._ready?e():this._callbacks.push(e)},_makeReady:function(){this._ready=!0;for(var e=0;e<this._callbacks.length;e++)this._callbacks[e]();this._callbacks=[]},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.RenderStatus._makeReady()})},_afterNextRenderQueue:[],_waitingNextRender:!1,afterNextRender:function(e,t,r){this._watchNextRender(),this._afterNextRenderQueue.push([e,t,r])},hasRendered:function(){return this._ready},_watchNextRender:function(){if(!this._waitingNextRender){this._waitingNextRender=!0;var e=function(){Polymer.RenderStatus._flushNextRender()};this._ready?requestAnimationFrame(e):this.whenReady(e)}},_flushNextRender:function(){var e=this;setTimeout(function(){e._flushRenderCallbacks(e._afterNextRenderQueue),e._afterNextRenderQueue=[],e._waitingNextRender=!1})},_flushRenderCallbacks:function(e){for(var t,r=0;r<e.length;r++)t=e[r],t[1].apply(t[0],t[2]||Polymer.nar)}},window.HTMLImports?HTMLImports.whenReady(function(){Polymer.RenderStatus._catchFirstRender()}):Polymer.RenderStatus._catchFirstRender(),Polymer.ImportStatus=Polymer.RenderStatus,Polymer.ImportStatus.whenLoaded=Polymer.ImportStatus.whenReady,function(){"use strict";var e=Polymer.Settings;Polymer.Base={__isPolymerInstance__:!0,_addFeature:function(e){this.extend(this,e)},registerCallback:function(){"max"===e.lazyRegister?this.beforeRegister&&this.beforeRegister():(this._desugarBehaviors(),this._doBehavior("beforeRegister")),this._registerFeatures(),e.lazyRegister||this.ensureRegisterFinished()},createdCallback:function(){this.__hasRegisterFinished||this._ensureRegisterFinished(this.__proto__),Polymer.telemetry.instanceCount++,this.root=this,this._doBehavior("created"),this._initFeatures()},ensureRegisterFinished:function(){this._ensureRegisterFinished(this)},_ensureRegisterFinished:function(t){t.__hasRegisterFinished===t.is&&t.is||("max"===e.lazyRegister&&(t._desugarBehaviors(),t._doBehaviorOnly("beforeRegister")),t.__hasRegisterFinished=t.is,t._finishRegisterFeatures&&t._finishRegisterFeatures(),t._doBehavior("registered"),e.usePolyfillProto&&t!==this&&t.extend(this,t))},attachedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.isAttached=!0,e._doBehavior("attached")})},detachedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.isAttached=!1,e._doBehavior("detached")})},attributeChangedCallback:function(e,t,r){this._attributeChangedImpl(e),this._doBehavior("attributeChanged",[e,t,r])},_attributeChangedImpl:function(e){this._setAttributeToProperty(this,e)},extend:function(e,t){if(e&&t)for(var r,i=Object.getOwnPropertyNames(t),o=0;o<i.length&&(r=i[o]);o++)this.copyOwnProperty(r,t,e);return e||t},mixin:function(e,t){for(var r in t)e[r]=t[r];return e},copyOwnProperty:function(e,t,r){var i=Object.getOwnPropertyDescriptor(t,e);i&&Object.defineProperty(r,e,i)},_logger:function(e,t){switch(1===t.length&&Array.isArray(t[0])&&(t=t[0]),e){case"log":case"warn":case"error":console[e].apply(console,t)}},_log:function(){var e=Array.prototype.slice.call(arguments,0);this._logger("log",e)},_warn:function(){var e=Array.prototype.slice.call(arguments,0);this._logger("warn",e)},_error:function(){var e=Array.prototype.slice.call(arguments,0);this._logger("error",e)},_logf:function(){return this._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0))}},Polymer.Base._logPrefix=function(){var e=window.chrome&&!/edge/i.test(navigator.userAgent)||/firefox/i.test(navigator.userAgent);return e?["%c[%s::%s]:","font-weight: bold; background-color:#EEEE00;"]:["[%s::%s]:"]}(),Polymer.Base.chainObject=function(e,t){return e&&t&&e!==t&&(Object.__proto__||(e=Polymer.Base.extend(Object.create(t),e)),e.__proto__=t),e},Polymer.Base=Polymer.Base.chainObject(Polymer.Base,HTMLElement.prototype),window.CustomElements?Polymer.instanceof=CustomElements.instanceof:Polymer.instanceof=function(e,t){return e instanceof t},Polymer.isInstance=function(e){return Boolean(e&&e.__isPolymerInstance__)},Polymer.telemetry.instanceCount=0}(),function(){function e(){if(s)for(var e,t=document._currentScript||document.currentScript,r=t&&t.ownerDocument||document,i=r.querySelectorAll("dom-module"),o=i.length-1;o>=0&&(e=i[o]);o--){if(e.__upgraded__)return;CustomElements.upgrade(e)}}var t={},r={},i=function(e){return t[e]||r[e.toLowerCase()]},o=function(){return document.createElement("dom-module")};o.prototype=Object.create(HTMLElement.prototype),Polymer.Base.extend(o.prototype,{constructor:o,createdCallback:function(){this.register()},register:function(e){e=e||this.id||this.getAttribute("name")||this.getAttribute("is"),e&&(this.id=e,t[e]=this,r[e.toLowerCase()]=this)},import:function(t,r){if(t){var o=i(t);return o||(e(),o=i(t)),o&&r&&(o=o.querySelector(r)),o}}});var s=window.CustomElements&&!CustomElements.useNative;document.registerElement("dom-module",o)}(),Polymer.Base._addFeature({_prepIs:function(){if(!this.is){var e=(document._currentScript||document.currentScript).parentNode;if("dom-module"===e.localName){var t=e.id||e.getAttribute("name")||e.getAttribute("is");this.is=t}}this.is&&(this.is=this.is.toLowerCase())}}),Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){this.behaviors.length&&(this.behaviors=this._desugarSomeBehaviors(this.behaviors))},_desugarSomeBehaviors:function(e){var t=[];e=this._flattenBehaviorsList(e);for(var r=e.length-1;r>=0;r--){var i=e[r];t.indexOf(i)===-1&&(this._mixinBehavior(i),t.unshift(i))}return t},_flattenBehaviorsList:function(e){for(var t=[],r=0;r<e.length;r++){var i=e[r];i instanceof Array?t=t.concat(this._flattenBehaviorsList(i)):i?t.push(i):this._warn(this._logf("_flattenBehaviorsList","behavior is null, check for missing or 404 import"))}return t},_mixinBehavior:function(e){for(var t,r=Object.getOwnPropertyNames(e),i=0;i<r.length&&(t=r[i]);i++)Polymer.Base._behaviorProperties[t]||this.hasOwnProperty(t)||this.copyOwnProperty(t,e,this)},_prepBehaviors:function(){this._prepFlattenedBehaviors(this.behaviors)},_prepFlattenedBehaviors:function(e){for(var t=0,r=e.length;t<r;t++)this._prepBehavior(e[t]);this._prepBehavior(this)},_doBehavior:function(e,t){for(var r=0;r<this.behaviors.length;r++)this._invokeBehavior(this.behaviors[r],e,t);this._invokeBehavior(this,e,t)},_doBehaviorOnly:function(e,t){for(var r=0;r<this.behaviors.length;r++)this._invokeBehavior(this.behaviors[r],e,t)},_invokeBehavior:function(e,t,r){var i=e[t];i&&i.apply(this,r||Polymer.nar)},_marshalBehaviors:function(){for(var e=0;e<this.behaviors.length;e++)this._marshalBehavior(this.behaviors[e]);this._marshalBehavior(this)}}),Polymer.Base._behaviorProperties={hostAttributes:!0,beforeRegister:!0,registered:!0,properties:!0,observers:!0,listeners:!0,created:!0,attached:!0,detached:!0,attributeChanged:!0,ready:!0},Polymer.Base._addFeature({_getExtendedPrototype:function(e){return this._getExtendedNativePrototype(e)},_nativePrototypes:{},_getExtendedNativePrototype:function(e){var t=this._nativePrototypes[e];if(!t){var r=this.getNativePrototype(e);t=this.extend(Object.create(r),Polymer.Base),this._nativePrototypes[e]=t}return t},getNativePrototype:function(e){return Object.getPrototypeOf(document.createElement(e))}}),Polymer.Base._addFeature({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this.is]:[this.is];var e=function(){return this._factory(arguments)};this.hasOwnProperty("extends")&&(e.extends=this.extends),Object.defineProperty(this,"constructor",{value:e,writable:!0,configurable:!0}),e.prototype=this},_factory:function(e){var t=document.createElement.apply(document,this._factoryArgs);return this.factoryImpl&&this.factoryImpl.apply(t,e),t}}),Polymer.nob=Object.create(null),Polymer.Base._addFeature({properties:{},getPropertyInfo:function(e){var t=this._getPropertyInfo(e,this.properties);if(!t)for(var r=0;r<this.behaviors.length;r++)if(t=this._getPropertyInfo(e,this.behaviors[r].properties))return t;return t||Polymer.nob},_getPropertyInfo:function(e,t){var r=t&&t[e];return"function"==typeof r&&(r=t[e]={type:r}),r&&(r.defined=!0),r},_prepPropertyInfo:function(){this._propertyInfo={};for(var e=0;e<this.behaviors.length;e++)this._addPropertyInfo(this._propertyInfo,this.behaviors[e].properties);this._addPropertyInfo(this._propertyInfo,this.properties),this._addPropertyInfo(this._propertyInfo,this._propertyEffects)},_addPropertyInfo:function(e,t){if(t){var r,i;for(var o in t)r=e[o],i=t[o],("_"!==o[0]||i.readOnly)&&(e[o]?(r.type||(r.type=i.type),r.readOnly||(r.readOnly=i.readOnly)):e[o]={type:"function"==typeof i?i:i.type,readOnly:i.readOnly,attribute:Polymer.CaseMap.camelToDashCase(o)})}}}),Polymer.CaseMap={_caseMap:{},_rx:{dashToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(e){return this._caseMap[e]||(this._caseMap[e]=e.indexOf("-")<0?e:e.replace(this._rx.dashToCamel,function(e){return e[1].toUpperCase()}))},camelToDashCase:function(e){return this._caseMap[e]||(this._caseMap[e]=e.replace(this._rx.camelToDash,"-$1").toLowerCase())}},Polymer.Base._addFeature({_addHostAttributes:function(e){this._aggregatedAttributes||(this._aggregatedAttributes={}),e&&this.mixin(this._aggregatedAttributes,e)},_marshalHostAttributes:function(){this._aggregatedAttributes&&this._applyAttributes(this,this._aggregatedAttributes)},_applyAttributes:function(e,t){for(var r in t)if(!this.hasAttribute(r)&&"class"!==r){var i=t[r];this.serializeValueToAttribute(i,r,this)}},_marshalAttributes:function(){this._takeAttributesToModel(this)},_takeAttributesToModel:function(e){if(this.hasAttributes())for(var t in this._propertyInfo){var r=this._propertyInfo[t];this.hasAttribute(r.attribute)&&this._setAttributeToProperty(e,r.attribute,t,r)}},_setAttributeToProperty:function(e,t,r,i){if(!this._serializing&&(r=r||Polymer.CaseMap.dashToCamelCase(t),i=i||this._propertyInfo&&this._propertyInfo[r],i&&!i.readOnly)){var o=this.getAttribute(t);e[r]=this.deserialize(o,i.type)}},_serializing:!1,reflectPropertyToAttribute:function(e,t,r){this._serializing=!0,r=void 0===r?this[e]:r,this.serializeValueToAttribute(r,t||Polymer.CaseMap.camelToDashCase(e)),this._serializing=!1},serializeValueToAttribute:function(e,t,r){var i=this.serialize(e);r=r||this,void 0===i?r.removeAttribute(t):r.setAttribute(t,i)},deserialize:function(e,t){switch(t){case Number:e=Number(e);break;case Boolean:e=null!=e;break;case Object:try{e=JSON.parse(e)}catch(e){}break;case Array:try{e=JSON.parse(e)}catch(t){e=null,console.warn("Polymer::Attributes: couldn`t decode Array as JSON")}break;case Date:e=new Date(e);break;case String:}return e},serialize:function(e){switch(typeof e){case"boolean":return e?"":void 0;case"object":if(e instanceof Date)return e.toString();if(e)try{return JSON.stringify(e)}catch(e){return""}default:return null!=e?e:void 0}}}),Polymer.version="1.7.1",Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes(e.hostAttributes)},_marshalBehavior:function(e){},_initFeatures:function(){this._marshalHostAttributes(),this._marshalBehaviors()}})</script><script>Polymer.Base._addFeature({_prepTemplate:function(){void 0===this._template&&(this._template=Polymer.DomModule.import(this.is,"template")),this._template&&this._template.hasAttribute("is")&&this._warn(this._logf("_prepTemplate","top-level Polymer template must not be a type-extension, found",this._template,"Move inside simple <template>.")),this._template&&!this._template.content&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(this._template)},_stampTemplate:function(){this._template&&(this.root=this.instanceTemplate(this._template))},instanceTemplate:function(e){var t=document.importNode(e._content||e.content,!0);return t}}),function(){var e=Polymer.Base.attachedCallback;Polymer.Base._addFeature({_hostStack:[],ready:function(){},_registerHost:function(e){this.dataHost=e=e||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1],e&&e._clients&&e._clients.push(this),this._clients=null,this._clientsReadied=!1},_beginHosting:function(){Polymer.Base._hostStack.push(this),this._clients||(this._clients=[])},_endHosting:function(){Polymer.Base._hostStack.pop()},_tryReady:function(){this._readied=!1,this._canReady()&&this._ready()},_canReady:function(){return!this.dataHost||this.dataHost._clientsReadied},_ready:function(){this._beforeClientsReady(),this._template&&(this._setupRoot(),this._readyClients()),this._clientsReadied=!0,this._clients=null,this._afterClientsReady(),this._readySelf()},_readyClients:function(){this._beginDistribute();var e=this._clients;if(e)for(var t,o=0,i=e.length;o<i&&(t=e[o]);o++)t._ready();this._finishDistribute()},_readySelf:function(){this._doBehavior("ready"),this._readied=!0,this._attachedPending&&(this._attachedPending=!1,this.attachedCallback())},_beforeClientsReady:function(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallback:function(){this._readied?(this._beforeAttached(),e.call(this)):this._attachedPending=!0}})}(),Polymer.ArraySplice=function(){function e(e,t,o){return{index:e,removed:t,addedCount:o}}function t(){}var o=0,i=1,n=2,s=3;return t.prototype={calcEditDistances:function(e,t,o,i,n,s){for(var r=s-n+1,d=o-t+1,a=new Array(r),l=0;l<r;l++)a[l]=new Array(d),a[l][0]=l;for(var h=0;h<d;h++)a[0][h]=h;for(l=1;l<r;l++)for(h=1;h<d;h++)if(this.equals(e[t+h-1],i[n+l-1]))a[l][h]=a[l-1][h-1];else{var u=a[l-1][h]+1,c=a[l][h-1]+1;a[l][h]=u<c?u:c}return a},spliceOperationsFromEditDistances:function(e){for(var t=e.length-1,r=e[0].length-1,d=e[t][r],a=[];t>0||r>0;)if(0!=t)if(0!=r){var l,h=e[t-1][r-1],u=e[t-1][r],c=e[t][r-1];l=u<c?u<h?u:h:c<h?c:h,l==h?(h==d?a.push(o):(a.push(i),d=h),t--,r--):l==u?(a.push(s),t--,d=u):(a.push(n),r--,d=c)}else a.push(s),t--;else a.push(n),r--;return a.reverse(),a},calcSplices:function(t,r,d,a,l,h){var u=0,c=0,_=Math.min(d-r,h-l);if(0==r&&0==l&&(u=this.sharedPrefix(t,a,_)),d==t.length&&h==a.length&&(c=this.sharedSuffix(t,a,_-u)),r+=u,l+=u,d-=c,h-=c,d-r==0&&h-l==0)return[];if(r==d){for(var f=e(r,[],0);l<h;)f.removed.push(a[l++]);return[f]}if(l==h)return[e(r,[],d-r)];var m=this.spliceOperationsFromEditDistances(this.calcEditDistances(t,r,d,a,l,h));f=void 0;for(var p=[],v=r,g=l,b=0;b<m.length;b++)switch(m[b]){case o:f&&(p.push(f),f=void 0),v++,g++;break;case i:f||(f=e(v,[],0)),f.addedCount++,v++,f.removed.push(a[g]),g++;break;case n:f||(f=e(v,[],0)),f.addedCount++,v++;break;case s:f||(f=e(v,[],0)),f.removed.push(a[g]),g++}return f&&p.push(f),p},sharedPrefix:function(e,t,o){for(var i=0;i<o;i++)if(!this.equals(e[i],t[i]))return i;return o},sharedSuffix:function(e,t,o){for(var i=e.length,n=t.length,s=0;s<o&&this.equals(e[--i],t[--n]);)s++;return s},calculateSplices:function(e,t){return this.calcSplices(e,0,e.length,t,0,t.length)},equals:function(e,t){return e===t}},new t}(),Polymer.domInnerHTML=function(){function e(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";case" ":return" "}}function t(t){return t.replace(r,e)}function o(t){return t.replace(d,e)}function i(e){for(var t={},o=0;o<e.length;o++)t[e[o]]=!0;return t}function n(e,i,n){switch(e.nodeType){case Node.ELEMENT_NODE:for(var r,d=e.localName,h="<"+d,u=e.attributes,c=0;r=u[c];c++)h+=" "+r.name+'="'+t(r.value)+'"';return h+=">",a[d]?h:h+s(e,n)+"</"+d+">";case Node.TEXT_NODE:var _=e.data;return i&&l[i.localName]?_:o(_);case Node.COMMENT_NODE:return"\x3c!--"+e.data+"--\x3e";default:throw console.error(e),new Error("not implemented")}}function s(e,t){e instanceof HTMLTemplateElement&&(e=e.content);for(var o,i="",s=Polymer.dom(e).childNodes,r=0,d=s.length;r<d&&(o=s[r]);r++)i+=n(o,e,t);return i}var r=/[&\u00A0"]/g,d=/[&\u00A0<>]/g,a=i(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),l=i(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]);return{getInnerHTML:s}}(),function(){"use strict";var e=Element.prototype.insertBefore,t=Element.prototype.appendChild,o=Element.prototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(e){for(var t=[],o=0,i=e.firstChild;i;i=i.nextSibling)t[o++]=i;return t},arrayCopyChildren:function(e){for(var t=[],o=0,i=e.firstElementChild;i;i=i.nextElementSibling)t[o++]=i;return t},arrayCopy:function(e){for(var t=e.length,o=new Array(t),i=0;i<t;i++)o[i]=e[i];return o}},Polymer.TreeApi.Logical={hasParentNode:function(e){return Boolean(e.__dom&&e.__dom.parentNode)},hasChildNodes:function(e){return Boolean(e.__dom&&void 0!==e.__dom.childNodes)},getChildNodes:function(e){return this.hasChildNodes(e)?this._getChildNodes(e):e.childNodes},_getChildNodes:function(e){if(!e.__dom.childNodes){e.__dom.childNodes=[];for(var t=e.__dom.firstChild;t;t=t.__dom.nextSibling)e.__dom.childNodes.push(t)}return e.__dom.childNodes},getParentNode:function(e){return e.__dom&&void 0!==e.__dom.parentNode?e.__dom.parentNode:e.parentNode},getFirstChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild?e.__dom.firstChild:e.firstChild},getLastChild:function(e){return e.__dom&&void 0!==e.__dom.lastChild?e.__dom.lastChild:e.lastChild},getNextSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?e.__dom.nextSibling:e.nextSibling},getPreviousSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?e.__dom.previousSibling:e.previousSibling},getFirstElementChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild?this._getFirstElementChild(e):e.firstElementChild},_getFirstElementChild:function(e){for(var t=e.__dom.firstChild;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getLastElementChild:function(e){return e.__dom&&void 0!==e.__dom.lastChild?this._getLastElementChild(e):e.lastElementChild},_getLastElementChild:function(e){for(var t=e.__dom.lastChild;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},getNextElementSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?this._getNextElementSibling(e):e.nextElementSibling},_getNextElementSibling:function(e){for(var t=e.__dom.nextSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getPreviousElementSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?this._getPreviousElementSibling(e):e.previousElementSibling},_getPreviousElementSibling:function(e){for(var t=e.__dom.previousSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},saveChildNodes:function(e){if(!this.hasChildNodes(e)){e.__dom=e.__dom||{},e.__dom.firstChild=e.firstChild,e.__dom.lastChild=e.lastChild,e.__dom.childNodes=[];for(var t=e.firstChild;t;t=t.nextSibling)t.__dom=t.__dom||{},t.__dom.parentNode=e,e.__dom.childNodes.push(t),t.__dom.nextSibling=t.nextSibling,t.__dom.previousSibling=t.previousSibling}},recordInsertBefore:function(e,t,o){if(t.__dom.childNodes=null,e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(var i=e.firstChild;i;i=i.nextSibling)this._linkNode(i,t,o);else this._linkNode(e,t,o)},_linkNode:function(e,t,o){e.__dom=e.__dom||{},t.__dom=t.__dom||{},o&&(o.__dom=o.__dom||{}),e.__dom.previousSibling=o?o.__dom.previousSibling:t.__dom.lastChild,e.__dom.previousSibling&&(e.__dom.previousSibling.__dom.nextSibling=e),e.__dom.nextSibling=o||null,e.__dom.nextSibling&&(e.__dom.nextSibling.__dom.previousSibling=e),e.__dom.parentNode=t,o?o===t.__dom.firstChild&&(t.__dom.firstChild=e):(t.__dom.lastChild=e,t.__dom.firstChild||(t.__dom.firstChild=e)),t.__dom.childNodes=null},recordRemoveChild:function(e,t){e.__dom=e.__dom||{},t.__dom=t.__dom||{},e===t.__dom.firstChild&&(t.__dom.firstChild=e.__dom.nextSibling),e===t.__dom.lastChild&&(t.__dom.lastChild=e.__dom.previousSibling);var o=e.__dom.previousSibling,i=e.__dom.nextSibling;o&&(o.__dom.nextSibling=i),i&&(i.__dom.previousSibling=o),e.__dom.parentNode=e.__dom.previousSibling=e.__dom.nextSibling=void 0,t.__dom.childNodes=null}},Polymer.TreeApi.Composed={getChildNodes:function(e){return Polymer.TreeApi.arrayCopyChildNodes(e)},getParentNode:function(e){return e.parentNode},clearChildNodes:function(e){e.textContent=""},insertBefore:function(t,o,i){return e.call(t,o,i||null)},appendChild:function(e,o){return t.call(e,o)},removeChild:function(e,t){return o.call(e,t)}}}(),Polymer.DomApi=function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=function(e){this.node=i?o.wrap(e):e},i=e.hasShadow&&!e.nativeShadow;o.wrap=window.wrap?window.wrap:function(e){return e},o.prototype={flush:function(){Polymer.dom.flush()},deepContains:function(e){if(this.node.contains(e))return!0;for(var t=e,o=e.ownerDocument;t&&t!==o&&t!==this.node;)t=Polymer.dom(t).parentNode||t.host;return t===this.node},queryDistributedElements:function(e){for(var t,i=this.getEffectiveChildNodes(),n=[],s=0,r=i.length;s<r&&(t=i[s]);s++)t.nodeType===Node.ELEMENT_NODE&&o.matchesSelector.call(t,e)&&n.push(t);return n},getEffectiveChildNodes:function(){for(var e,t=[],o=this.childNodes,i=0,r=o.length;i<r&&(e=o[i]);i++)if(e.localName===n)for(var d=s(e).getDistributedNodes(),a=0;a<d.length;a++)t.push(d[a]);else t.push(e);return t},observeNodes:function(e){if(e)return this.observer||(this.observer=this.node.localName===n?new o.DistributedNodesObserver(this):new o.EffectiveNodesObserver(this)),this.observer.addListener(e)},unobserveNodes:function(e){this.observer&&this.observer.removeListener(e)},notifyObserver:function(){this.observer&&this.observer.notify()},_query:function(e,o,i){o=o||this.node;var n=[];return this._queryElements(t.Logical.getChildNodes(o),e,i,n),n},_queryElements:function(e,t,o,i){for(var n,s=0,r=e.length;s<r&&(n=e[s]);s++)if(n.nodeType===Node.ELEMENT_NODE&&this._queryElement(n,t,o,i))return!0},_queryElement:function(e,o,i,n){var s=o(e);return s&&n.push(e),i&&i(s)?s:void this._queryElements(t.Logical.getChildNodes(e),o,i,n)}};var n=o.CONTENT="content",s=o.factory=function(e){return e=e||document,e.__domApi||(e.__domApi=new o.ctor(e)),e.__domApi};o.hasApi=function(e){return Boolean(e.__domApi)},o.ctor=o,Polymer.dom=function(e,t){return e instanceof Event?Polymer.EventApi.factory(e):o.factory(e,t)};var r=Element.prototype;return o.matchesSelector=r.matches||r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector,o}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.DomApi,o=t.factory,i=Polymer.TreeApi,n=Polymer.domInnerHTML.getInnerHTML,s=t.CONTENT;if(!e.useShadow){var r=Element.prototype.cloneNode,d=Document.prototype.importNode;Polymer.Base.extend(t.prototype,{_lazyDistribute:function(e){e.shadyRoot&&e.shadyRoot._distributionClean&&(e.shadyRoot._distributionClean=!1,Polymer.dom.addDebouncer(e.debounce("_distribute",e._distributeContent)))},appendChild:function(e){return this.insertBefore(e)},insertBefore:function(e,n){if(n&&i.Logical.getParentNode(n)!==this.node)throw Error("The ref_node to be inserted before is not a child of this node");if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var r=i.Logical.getParentNode(e);r?(t.hasApi(r)&&o(r).notifyObserver(),this._removeNode(e)):this._removeOwnerShadyRoot(e)}if(!this._addNode(e,n)){n&&(n=n.localName===s?this._firstComposedNode(n):n);var d=this.node._isShadyRoot?this.node.host:this.node;n?i.Composed.insertBefore(d,e,n):i.Composed.appendChild(d,e)}return this.notifyObserver(),e},_addNode:function(e,t){var o=this.getOwnerRoot();if(o){var n=this._maybeAddInsertionPoint(e,this.node);o._invalidInsertionPoints||(o._invalidInsertionPoints=n),this._addNodeToHost(o.host,e)}i.Logical.hasChildNodes(this.node)&&i.Logical.recordInsertBefore(e,this.node,t);var s=this._maybeDistribute(e)||this.node.shadyRoot;if(s)if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(;e.firstChild;)i.Composed.removeChild(e,e.firstChild);else{var r=i.Composed.getParentNode(e);r&&i.Composed.removeChild(r,e)}return s},removeChild:function(e){if(i.Logical.getParentNode(e)!==this.node)throw Error("The node to be removed is not a child of this node: "+e);if(!this._removeNode(e)){var t=this.node._isShadyRoot?this.node.host:this.node,o=i.Composed.getParentNode(e);t===o&&i.Composed.removeChild(t,e)}return this.notifyObserver(),e},_removeNode:function(e){var t,n=i.Logical.hasParentNode(e)&&i.Logical.getParentNode(e),s=this._ownerShadyRootForNode(e);return n&&(t=o(e)._maybeDistributeParent(),i.Logical.recordRemoveChild(e,n),s&&this._removeDistributedChildren(s,e)&&(s._invalidInsertionPoints=!0,this._lazyDistribute(s.host))),this._removeOwnerShadyRoot(e),s&&this._removeNodeFromHost(s.host,e),t},replaceChild:function(e,t){return this.insertBefore(e,t),this.removeChild(t),e},_hasCachedOwnerRoot:function(e){return Boolean(void 0!==e._ownerShadyRoot)},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node)},_ownerShadyRootForNode:function(e){if(e){var t=e._ownerShadyRoot;if(void 0===t){if(e._isShadyRoot)t=e;else{var o=i.Logical.getParentNode(e);t=o?o._isShadyRoot?o:this._ownerShadyRootForNode(o):null}(t||document.documentElement.contains(e))&&(e._ownerShadyRoot=t)}return t}},_maybeDistribute:function(e){var t=e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&!e.__noContent&&o(e).querySelector(s),n=t&&i.Logical.getParentNode(t).nodeType!==Node.DOCUMENT_FRAGMENT_NODE,r=t||e.localName===s;if(r){var d=this.getOwnerRoot();d&&this._lazyDistribute(d.host)}var a=this._nodeNeedsDistribution(this.node);return a&&this._lazyDistribute(this.node),a||r&&!n},_maybeAddInsertionPoint:function(e,t){var n;if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE||e.__noContent)e.localName===s&&(i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(e),n=!0);else for(var r,d,a,l=o(e).querySelectorAll(s),h=0;h<l.length&&(r=l[h]);h++)d=i.Logical.getParentNode(r),d===e&&(d=t),a=this._maybeAddInsertionPoint(r,d),n=n||a;return n},_updateInsertionPoints:function(e){for(var t,n=e.shadyRoot._insertionPoints=o(e.shadyRoot).querySelectorAll(s),r=0;r<n.length;r++)t=n[r],i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(i.Logical.getParentNode(t))},_nodeNeedsDistribution:function(e){return e&&e.shadyRoot&&t.hasInsertionPoint(e.shadyRoot)},_addNodeToHost:function(e,t){e._elementAdd&&e._elementAdd(t)},_removeNodeFromHost:function(e,t){e._elementRemove&&e._elementRemove(t)},_removeDistributedChildren:function(e,t){for(var n,s=e._insertionPoints,r=0;r<s.length;r++){var d=s[r];if(this._contains(t,d))for(var a=o(d).getDistributedNodes(),l=0;l<a.length;l++){n=!0;var h=a[l],u=i.Composed.getParentNode(h);u&&i.Composed.removeChild(u,h)}}return n},_contains:function(e,t){for(;t;){if(t==e)return!0;t=i.Logical.getParentNode(t)}},_removeOwnerShadyRoot:function(e){if(this._hasCachedOwnerRoot(e))for(var t,o=i.Logical.getChildNodes(e),n=0,s=o.length;n<s&&(t=o[n]);n++)this._removeOwnerShadyRoot(t);e._ownerShadyRoot=void 0},_firstComposedNode:function(e){for(var t,i,n=o(e).getDistributedNodes(),s=0,r=n.length;s<r&&(t=n[s]);s++)if(i=o(t).getDestinationInsertionPoints(),i[i.length-1]===e)return t},querySelector:function(e){var o=this._query(function(o){return t.matchesSelector.call(o,e)},this.node,function(e){return Boolean(e)})[0];return o||null},querySelectorAll:function(e){return this._query(function(o){return t.matchesSelector.call(o,e)},this.node)},getDestinationInsertionPoints:function(){return this.node._destinationInsertionPoints||[]},getDistributedNodes:function(){return this.node._distributedNodes||[]},_clear:function(){for(;this.childNodes.length;)this.removeChild(this.childNodes[0])},setAttribute:function(e,t){this.node.setAttribute(e,t),this._maybeDistributeParent()},removeAttribute:function(e){this.node.removeAttribute(e),this._maybeDistributeParent()},_maybeDistributeParent:function(){if(this._nodeNeedsDistribution(this.parentNode))return this._lazyDistribute(this.parentNode),!0},cloneNode:function(e){var t=r.call(this.node,!1);if(e)for(var i,n=this.childNodes,s=o(t),d=0;d<n.length;d++)i=o(n[d]).cloneNode(!0),s.appendChild(i);return t},importNode:function(e,t){var n=this.node instanceof Document?this.node:this.node.ownerDocument,s=d.call(n,e,!1);if(t)for(var r,a=i.Logical.getChildNodes(e),l=o(s),h=0;h<a.length;h++)r=o(n).importNode(a[h],!0),l.appendChild(r);return s},_getComposedInnerHTML:function(){return n(this.node,!0)}}),Object.defineProperties(t.prototype,{activeElement:{get:function(){var e=document.activeElement;if(!e)return null;var t=!!this.node._isShadyRoot;if(this.node!==document){if(!t)return null;if(this.node.host===e||!this.node.host.contains(e))return null}for(var i=o(e).getOwnerRoot();i&&i!==this.node;)e=i.host,i=o(e).getOwnerRoot();return this.node===document?i?null:e:i===this.node?e:null},configurable:!0},childNodes:{get:function(){var e=i.Logical.getChildNodes(this.node);return Array.isArray(e)?e:i.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){return i.Logical.hasChildNodes(this.node)?Array.prototype.filter.call(this.childNodes,function(e){return e.nodeType===Node.ELEMENT_NODE}):i.arrayCopyChildren(this.node)},configurable:!0},parentNode:{get:function(){return i.Logical.getParentNode(this.node)},configurable:!0},firstChild:{get:function(){return i.Logical.getFirstChild(this.node)},configurable:!0},lastChild:{get:function(){return i.Logical.getLastChild(this.node)},configurable:!0},nextSibling:{get:function(){return i.Logical.getNextSibling(this.node)},configurable:!0},previousSibling:{get:function(){return i.Logical.getPreviousSibling(this.node)},configurable:!0},firstElementChild:{get:function(){return i.Logical.getFirstElementChild(this.node)},configurable:!0},lastElementChild:{get:function(){return i.Logical.getLastElementChild(this.node)},configurable:!0},nextElementSibling:{get:function(){return i.Logical.getNextElementSibling(this.node)},configurable:!0},previousElementSibling:{get:function(){return i.Logical.getPreviousElementSibling(this.node)},configurable:!0},textContent:{get:function(){var e=this.node.nodeType;if(e===Node.TEXT_NODE||e===Node.COMMENT_NODE)return this.node.textContent;for(var t,o=[],i=0,n=this.childNodes;t=n[i];i++)t.nodeType!==Node.COMMENT_NODE&&o.push(t.textContent);return o.join("")},set:function(e){var t=this.node.nodeType;t===Node.TEXT_NODE||t===Node.COMMENT_NODE?this.node.textContent=e:(this._clear(),e&&this.appendChild(document.createTextNode(e)))},configurable:!0},innerHTML:{get:function(){var e=this.node.nodeType;return e===Node.TEXT_NODE||e===Node.COMMENT_NODE?null:n(this.node)},set:function(e){var t=this.node.nodeType;if(t!==Node.TEXT_NODE||t!==Node.COMMENT_NODE){this._clear();var o=document.createElement("div");o.innerHTML=e;for(var n=i.arrayCopyChildNodes(o),s=0;s<n.length;s++)this.appendChild(n[s])}},configurable:!0}}),t.hasInsertionPoint=function(e){return Boolean(e&&e._insertionPoints.length)}}}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=Polymer.DomApi;if(e.useShadow){Polymer.Base.extend(o.prototype,{querySelectorAll:function(e){return t.arrayCopy(this.node.querySelectorAll(e))},getOwnerRoot:function(){for(var e=this.node;e;){if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host)return e;e=e.parentNode}},importNode:function(e,t){var o=this.node instanceof Document?this.node:this.node.ownerDocument;return o.importNode(e,t)},getDestinationInsertionPoints:function(){var e=this.node.getDestinationInsertionPoints&&this.node.getDestinationInsertionPoints();return e?t.arrayCopy(e):[]},getDistributedNodes:function(){var e=this.node.getDistributedNodes&&this.node.getDistributedNodes();return e?t.arrayCopy(e):[]}}),Object.defineProperties(o.prototype,{activeElement:{get:function(){var e=o.wrap(this.node),t=e.activeElement;return e.contains(t)?t:null},configurable:!0},childNodes:{get:function(){return t.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){return t.arrayCopyChildren(this.node)},configurable:!0},textContent:{get:function(){return this.node.textContent},set:function(e){return this.node.textContent=e},configurable:!0},innerHTML:{get:function(){return this.node.innerHTML},set:function(e){return this.node.innerHTML=e},configurable:!0}});var i=function(e){for(var t=0;t<e.length;t++)n(e[t])},n=function(e){o.prototype[e]=function(){return this.node[e].apply(this.node,arguments)}};i(["cloneNode","appendChild","insertBefore","removeChild","replaceChild","setAttribute","removeAttribute","querySelector"]);var s=function(e){for(var t=0;t<e.length;t++)r(e[t])},r=function(e){Object.defineProperty(o.prototype,e,{get:function(){return this.node[e]},configurable:!0})};s(["parentNode","firstChild","lastChild","nextSibling","previousSibling","firstElementChild","lastElementChild","nextElementSibling","previousElementSibling"])}}(),Polymer.Base.extend(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebouncer:null,flush:function(){for(this._flushGuard=0,this._prepareFlush();this._debouncers.length&&this._flushGuard<this._FLUSH_MAX;){for(;this._debouncers.length;)this._debouncers.shift().complete();this._finishDebouncer&&this._finishDebouncer.complete(),this._prepareFlush(),this._flushGuard++}this._flushGuard>=this._FLUSH_MAX&&console.warn("Polymer.dom.flush aborted. Flush may not be complete.")},_prepareFlush:function(){this._needsTakeRecords&&CustomElements.takeRecords();for(var e=0;e<this._staticFlushList.length;e++)this._staticFlushList[e]()},addStaticFlush:function(e){this._staticFlushList.push(e)},removeStaticFlush:function(e){var t=this._staticFlushList.indexOf(e);t>=0&&this._staticFlushList.splice(t,1)},addDebouncer:function(e){this._debouncers.push(e),this._finishDebouncer=Polymer.Debounce(this._finishDebouncer,this._finishFlush)},_finishFlush:function(){Polymer.dom._debouncers=[]}}),Polymer.EventApi=function(){"use strict";var e=Polymer.DomApi.ctor,t=Polymer.Settings;e.Event=function(e){this.event=e},t.useShadow?e.Event.prototype={get rootTarget(){return this.event.path[0]},get localTarget(){return this.event.target},get path(){var e=this.event.path;return Array.isArray(e)||(e=Array.prototype.slice.call(e)),e}}:e.Event.prototype={get rootTarget(){return this.event.target},get localTarget(){for(var e=this.event.currentTarget,t=e&&Polymer.dom(e).getOwnerRoot(),o=this.path,i=0;i<o.length;i++)if(Polymer.dom(o[i]).getOwnerRoot()===t)return o[i]},get path(){if(!this.event._path){for(var e=[],t=this.rootTarget;t;){e.push(t);var o=Polymer.dom(t).getDestinationInsertionPoints();if(o.length){for(var i=0;i<o.length-1;i++)e.push(o[i]);t=o[o.length-1]}else t=Polymer.dom(t).parentNode||t.host}e.push(window),this.event._path=e}return this.event._path}};var o=function(t){return t.__eventApi||(t.__eventApi=new e.Event(t)),t.__eventApi};return{factory:o}}(),function(){"use strict";var e=Polymer.DomApi.ctor,t=Polymer.Settings.useShadow;Object.defineProperty(e.prototype,"classList",{get:function(){return this._classList||(this._classList=new e.ClassList(this)),this._classList},configurable:!0}),e.ClassList=function(e){this.domApi=e,this.node=e.node},e.ClassList.prototype={add:function(){this.node.classList.add.apply(this.node.classList,arguments),this._distributeParent()},remove:function(){this.node.classList.remove.apply(this.node.classList,arguments),this._distributeParent()},toggle:function(){this.node.classList.toggle.apply(this.node.classList,arguments),this._distributeParent()},_distributeParent:function(){t||this.domApi._maybeDistributeParent()},contains:function(){return this.node.classList.contains.apply(this.node.classList,arguments)}}}(),function(){"use strict";var e=Polymer.DomApi.ctor,t=Polymer.Settings;if(e.EffectiveNodesObserver=function(e){this.domApi=e,this.node=this.domApi.node,this._listeners=[]},e.EffectiveNodesObserver.prototype={addListener:function(e){this._isSetup||(this._setup(),this._isSetup=!0);var t={fn:e,_nodes:[]};return this._listeners.push(t),this._scheduleNotify(),t},removeListener:function(e){var t=this._listeners.indexOf(e);t>=0&&(this._listeners.splice(t,1),e._nodes=[]),this._hasListeners()||(this._cleanup(),this._isSetup=!1)},_setup:function(){this._observeContentElements(this.domApi.childNodes)},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes)},_hasListeners:function(){return Boolean(this._listeners.length)},_scheduleNotify:function(){this._debouncer&&this._debouncer.stop(),this._debouncer=Polymer.Debounce(this._debouncer,this._notify),this._debouncer.context=this,Polymer.dom.addDebouncer(this._debouncer)},notify:function(){this._hasListeners()&&this._scheduleNotify()},_notify:function(){this._beforeCallListeners(),this._callListeners()},_beforeCallListeners:function(){this._updateContentElements()},_updateContentElements:function(){this._observeContentElements(this.domApi.childNodes)},_observeContentElements:function(e){for(var t,o=0;o<e.length&&(t=e[o]);o++)this._isContent(t)&&(t.__observeNodesMap=t.__observeNodesMap||new WeakMap,t.__observeNodesMap.has(this)||t.__observeNodesMap.set(this,this._observeContent(t)))},_observeContent:function(e){var t=this,o=Polymer.dom(e).observeNodes(function(){t._scheduleNotify()});return o._avoidChangeCalculation=!0,o},_unobserveContentElements:function(e){for(var t,o,i=0;i<e.length&&(t=e[i]);i++)this._isContent(t)&&(o=t.__observeNodesMap.get(this),o&&(Polymer.dom(t).unobserveNodes(o),t.__observeNodesMap.delete(this)))},_isContent:function(e){return"content"===e.localName},_callListeners:function(){for(var e,t=this._listeners,o=this._getEffectiveNodes(),i=0;i<t.length&&(e=t[i]);i++){var n=this._generateListenerInfo(e,o);(n||e._alwaysNotify)&&this._callListener(e,n)}},_getEffectiveNodes:function(){return this.domApi.getEffectiveChildNodes()},_generateListenerInfo:function(e,t){if(e._avoidChangeCalculation)return!0;for(var o,i=e._nodes,n={target:this.node,addedNodes:[],removedNodes:[]},s=Polymer.ArraySplice.calculateSplices(t,i),r=0;r<s.length&&(o=s[r]);r++)for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)n.removedNodes.push(d);for(r=0,o;r<s.length&&(o=s[r]);r++)for(a=o.index;a<o.index+o.addedCount;a++)n.addedNodes.push(t[a]);return e._nodes=t,n.addedNodes.length||n.removedNodes.length?n:void 0},_callListener:function(e,t){return e.fn.call(this.node,t)},enableShadowAttributeTracking:function(){}},t.useShadow){var o=e.EffectiveNodesObserver.prototype._setup,i=e.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.extend(e.EffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=this;this._mutationHandler=function(t){t&&t.length&&e._scheduleNotify()},this._observer=new MutationObserver(this._mutationHandler),this._boundFlush=function(){e._flush()},Polymer.dom.addStaticFlush(this._boundFlush),this._observer.observe(this.node,{childList:!0})}o.call(this)},_cleanup:function(){this._observer.disconnect(),this._observer=null,this._mutationHandler=null,Polymer.dom.removeStaticFlush(this._boundFlush),i.call(this)},_flush:function(){this._observer&&this._mutationHandler(this._observer.takeRecords())},enableShadowAttributeTracking:function(){if(this._observer){this._makeContentListenersAlwaysNotify(),this._observer.disconnect(),this._observer.observe(this.node,{childList:!0,attributes:!0,subtree:!0});var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).observer&&Polymer.dom(t).observer.enableShadowAttributeTracking()}},_makeContentListenersAlwaysNotify:function(){for(var e,t=0;t<this._listeners.length;t++)e=this._listeners[t],e._alwaysNotify=e._isContentListener}})}}(),function(){"use strict";var e=Polymer.DomApi.ctor,t=Polymer.Settings;e.DistributedNodesObserver=function(t){e.EffectiveNodesObserver.call(this,t)},e.DistributedNodesObserver.prototype=Object.create(e.EffectiveNodesObserver.prototype),Polymer.Base.extend(e.DistributedNodesObserver.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListeners:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedNodes()}}),t.useShadow&&Polymer.Base.extend(e.DistributedNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=this.domApi.getOwnerRoot(),t=e&&e.host;if(t){var o=this;this._observer=Polymer.dom(t).observeNodes(function(){o._scheduleNotify()}),this._observer._isContentListener=!0,this._hasAttrSelect()&&Polymer.dom(t).observer.enableShadowAttributeTracking()}}},_hasAttrSelect:function(){var e=this.node.getAttribute("select");return e&&e.match(/[[.]+/)},_cleanup:function(){var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).unobserveNodes(this._observer),this._observer=null}})}(),function(){function e(e,t){t._distributedNodes.push(e);var o=e._destinationInsertionPoints;o?o.push(t):e._destinationInsertionPoints=[t]}function t(e){var t=e._distributedNodes;if(t)for(var o=0;o<t.length;o++){var i=t[o]._destinationInsertionPoints;i&&i.splice(i.indexOf(e)+1,i.length)}}function o(e,t){var o=u.Logical.getParentNode(e);o&&o.shadyRoot&&h.hasInsertionPoint(o.shadyRoot)&&o.shadyRoot._distributionClean&&(o.shadyRoot._distributionClean=!1,t.shadyRoot._dirtyRoots.push(o))}function i(e,t){var o=t._destinationInsertionPoints;return o&&o[o.length-1]===e}function n(e){return"content"==e.localName}function s(e){for(;e&&r(e);)e=e.domHost;return e}function r(e){for(var t,o=u.Logical.getChildNodes(e),i=0;i<o.length;i++)if(t=o[i],t.localName&&"content"===t.localName)return e.domHost}function d(e){for(var t,o=0;o<e._insertionPoints.length;o++)t=e._insertionPoints[o],h.hasApi(t)&&Polymer.dom(t).notifyObserver()}function a(e){h.hasApi(e)&&Polymer.dom(e).notifyObserver()}function l(e){if(c&&e)for(var t=0;t<e.length;t++)CustomElements.upgrade(e[t])}var h=Polymer.DomApi,u=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this._useContent=this._useContent||Boolean(this._template)},_setupShady:function(){this.shadyRoot=null,this.__domApi||(this.__domApi=null),this.__dom||(this.__dom=null),this._ownerShadyRoot||(this._ownerShadyRoot=void 0)},_poolContent:function(){this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(this)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._distributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=!0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._notes||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logical.saveChildNodes(this.shadyRoot);for(var t,o=0;o<e.length;o++)t=e[o],u.Logical.saveChildNodes(t),u.Logical.saveChildNodes(t.parentNode);this.shadyRoot.host=this},get domHost(){var e=Polymer.dom(this).getOwnerRoot();return e&&e.host},distributeContent:function(e){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoints=this.shadyRoot._invalidInsertionPoints||e;var t=s(this);Polymer.dom(this)._lazyDistribute(t)}},_distributeContent:function(){this._useContent&&!this.shadyRoot._distributionClean&&(this.shadyRoot._invalidInsertionPoints&&(Polymer.dom(this)._updateInsertionPoints(this),this.shadyRoot._invalidInsertionPoints=!1),this._beginDistribute(),this._distributeDirtyRoots(),this._finishDistribute())},_beginDistribute:function(){this._useContent&&h.hasInsertionPoint(this.shadyRoot)&&(this._resetDistribution(),this._distributePool(this.shadyRoot,this._collectPool())); },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]},_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributionClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyRoot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this._updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild(this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDistributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.call(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o=0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInsertionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0;d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t=u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply(e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInsertionPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s=0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=void 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a],t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this));for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++)t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[],o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r))for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)}else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed.getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length&&(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed.getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.addedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a<o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)},_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return!0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\()?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:function(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElements.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolContent:function(){},_beginDistribute:function(){},distributeContent:function(){},_distributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:function(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root=this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleContent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,this._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddleContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.MutationObserver(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._twiddle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.context=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundComplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.finish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.callback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupDebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerActive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebouncer:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:function(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createElement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),this._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),this._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._marshalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script><script>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n=e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("strip-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Node.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\\\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?:,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[|{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.exec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=Boolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h=h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,event:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r.push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t="",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnotation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent=this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent",parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotations:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&(t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this._parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r.bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotations:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextSibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._parseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s.nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textContent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim()&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n,r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(var t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firstChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.name,s.value)}var i=e.getAttribute("name");return i&&t.setAttribute("select","[slot='"+i+"']"),e.parentNode.replaceChild(t,e),t},_parseTemplate:function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAnnotations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polymer.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:function(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.events.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:function(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length-1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribute"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"property"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r.length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.findAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.nextSibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace(a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s&&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="style"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);return n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.createHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href=t,n(e,i)}function s(e){return e.body.__urlResolver||(e.body.__urlResolver=e.createElement("a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:["action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolveCss:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.indexOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".")!==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:function(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice(e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t)&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function(){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._prepElement(t)},this._template._content&&this._template._content._notes?this._notes=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotations(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.prepElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings[r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseMethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.templateContent){this._processAnnotations(n.templateContent._notes);var l=n.templateContent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name:u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.concat(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length&&(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u=0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.signature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.templateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:function(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAnnotatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:function(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(),this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){for(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._configureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTemplateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_configureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorage__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t=0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._findAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&&this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.length;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}},_marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotatedNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name,r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0]],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventHandler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._listen(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundListeners=new WeakMap);var o=i.get(n);o||(o={},Polymer.Settings.isIE&&n==window||i.set(n,o));var a=this._boundListenerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListeners;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))};return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function(e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:function(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){for(var t,n=P?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t,S,!0):document.removeEventListener(t,S,!0)}function t(t){E.mouse.mouseIgnoreJob||e(!0);var n=function(){e(),E.mouse.target=null,E.mouse.mouseIgnoreJob=null};E.mouse.target=Polymer.dom(t).rootTarget,E.mouse.mouseIgnoreJob=Polymer.Debounce(E.mouse.mouseIgnoreJob,n,d)}function n(e){var t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.buttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),Boolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("click"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBoundingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s<=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0;s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn=t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("mouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),document.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polymer.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGestures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_=2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function(){try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}(),g=!1;!function(){try{var e=Object.defineProperty({},"passive",{get:function(){g=!0}});window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(e){}}();var P=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),S=function(e){var t=e.sourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type)){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===E.mouse.target)return;e.preventDefault(),e.stopPropagation()}},E={mouse:{target:null,mouseIgnoreJob:null},touch:{x:0,y:0,id:-1,scrollDecided:!1}};document.addEventListener("touchend",t,!!g&&{passive:!0});var C={gestures:{},recognizers:[],deepTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shadowRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarget:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var t,n=e.type,r=a(e.currentTarget),s=r[c];if(s){var i=s[n];if(i){if(!e[h]&&(e[h]={},"touch"===n.slice(0,5))){var o=e.changedTouches[0];if("touchstart"===n&&1===e.touches.length&&(E.touch.id=o.identifier),E.touch.id!==o.identifier)return;l||"touchstart"!==n&&"touchmove"!==n||C.handleTouchAction(e)}if(t=e[h],!t.skip){for(var u,f=C.recognizers,p=0;p<f.length;p++)u=f[p],i[u.name]&&!t[u.name]&&u.flow&&u.flow.start.indexOf(e.type)>-1&&u.reset&&u.reset();for(p=0,u;p<f.length;p++)u=f[p],i[u.name]&&!t[u.name]&&(t[u.name]=!0,u[n](e))}}}},handleTouchAction:function(e){var t=e.changedTouches[0],n=e.type;if("touchstart"===n)E.touch.x=t.clientX,E.touch.y=t.clientY,E.touch.scrollDecided=!1;else if("touchmove"===n){if(E.touch.scrollDecided)return;E.touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(E.touch.x-t.clientX),a=Math.abs(E.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y"===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u=0;u<s.length;u++)l=s[u],P&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_count:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1,h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAction(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&&(h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recognizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},findRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=this.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)return t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t},fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable:!0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault&&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t.info&&(t.info.prevent=!0)},resetMouseCanceller:function(){E.mouse.mouseIgnoreJob&&E.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedown","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function(){o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire("up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:function(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:function(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:function(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,prevent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchAction:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this.moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:function(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info.x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(this.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.clientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"end":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=function(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.info.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOriginalTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s)&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),this.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.info.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fire:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info.moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t.clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mousedown","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:function(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this.info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e)},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.changedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},forward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY-this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&(this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,preventer:t}))}});var b={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addFeature({_setupGestures:function(){this.__polymerGestures=null},_listen:function(e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e,t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirection:function(e,t){t=t||this,C.setTouchAction(t,b[e]||"auto")}}),Polymer.Gestures=C}(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return Polymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1==arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this,1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""):Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:function(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChildNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveChildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})},getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n=[],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textContent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(this).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:function(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes:function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Polymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return this.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NODE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void 0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useCache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null),r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:function(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){var n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:function(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e)){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.indexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.style.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||this,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.Base.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s,l=this,c=function(e){return e.target.__firedLoad=!0,e.target.removeEventListener("load",c),e.target.removeEventListener("error",h),t.call(l,e)},h=function(e){return e.target.__firedError=!0,e.target.removeEventListener("load",c),e.target.removeEventListener("error",h),n.call(l,e)};return t&&a.addEventListener("load",c),n&&a.addEventListener("error",h),o?(o.__firedLoad&&o.dispatchEvent(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s.href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s)),a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e)&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDescendant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.Settings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.importHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElements.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this,e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Polymer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=void 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t,{value:n},{bubbles:!1,cancelable:!1,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE})},_propertySetter:function(e,t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"object"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChanged(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r=r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.length;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:function(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__[t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._propertyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[]),n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i={kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBindings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort(this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects:function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify:4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return this.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo&&e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.set=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e.substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i),a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index:t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e.path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s,i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e],r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:function(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];this._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer.Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attribute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationEffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectPropertyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notifyChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)},_observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined"))},_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polymer.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||this._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__setProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect","compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:function(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind._marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValue(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s=[],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.name;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polymer.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAncestor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.Base._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addPropertyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:function(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_prepBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:function(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect(t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed)),n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDashCase(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase(t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" cannot be reflected to attribute "+r+' because "-" is not a valid starting attribute name. Use a lowercase first letter for the property instead.')):this._addPropertyEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffects(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s=r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.model,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect(e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e)for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addComplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Error("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args.length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{method:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.method,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})},_addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_addAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._addAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.name[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.name+' because "-" is not a valid attribute starting character')):this._addPropertyEffect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.propertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,event:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputationEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComputationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.args[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dynamicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnotatedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedComputation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n.kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.match(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPropertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){var r=t[2].replace(/\\,/g,",").split(",");return this._parseArgs(r,n)}return n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e){var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:function(e){var t=e.trim().replace(/,/g,",").replace(/\\(.)/g,"$1"),n={name:t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n.value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}return n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep(t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2)))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),this._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:function(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationValue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty(r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n),r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}return"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),("textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_executeStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__static__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}}),function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_setupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig=null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes:function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:function(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProperty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||(this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure:function(){this._configureAnnotationReferences(),this._configureInstanceProperties(),this._aboveConfig=this.mixin({},this._config); for(var e={},t=0;t<this.behaviors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this._configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._config=e,this._clients&&this._clients.length&&this._distributeConfig(this._config)},_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e&&this.hasOwnProperty(t)&&(this._configValue(t,this[t]),delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];if(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._config)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)for(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("annotation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c="attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._configValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=this._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serialize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:function(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveConfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0===this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Polymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t.detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueHandler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_flushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r={},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r.path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t&&(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_getPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for(var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}return e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathParts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];if(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)==l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:null}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r.indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.setItem(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getPathParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.Collection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Collection.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".")),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a&&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_annotationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annotationEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s=this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s._notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this,t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},unlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoundPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e.isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&this._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root(t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{path:t,value:n},{bubbles:!1,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE})},_EVENT_CHANGED:"-changed",notifySplices:function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices(e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".length",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySplice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed:s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=Array.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.length&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},splice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t):Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice.apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n.path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&this._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e,this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:function(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_complexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComputationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({resolveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.getAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.baseURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)},_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.rules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this.CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.substring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r=e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expandUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.lastIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.indexOf(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MEDIA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.keyframesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.VAR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rules;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e},_expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,function(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify:function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!this._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify(i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r=" "+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r,e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e=this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomPropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this._rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.mixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE:7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:"@"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABLES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[rel=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this.parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},forActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssRules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRules},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTypes.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForStyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTypes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedia(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===this.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o=e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a,t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this.applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nextSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},createScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.setAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePlaceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" "),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=document.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cssFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++)r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polymer.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n)),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssText||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeApi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++)if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this.cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INCLUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNode.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import&&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"===t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)return this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("css-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++)switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVariableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"","","");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a===-1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).trim();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)|(animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETED:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolveCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.CssParse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Polymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transformDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer.dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:function(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.classList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.classList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttribute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},elementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeShadow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent(e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0,p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):this.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:function(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a=this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0),s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHostScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transformRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e.selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleCss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)},_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim(),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"),e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCompoundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}return i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s})),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.indexOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?this._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&&(e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transformSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transformHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];return s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.parsedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule(e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selector=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e.match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.trim(),s)},_slottedToContent:function(e){return e.replace(E,p+"> $1")},SCOPE_NAME:"style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match",E=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExtends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boolean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r=this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for(var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._extendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,function(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:function(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.split(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:function(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.parent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToParent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector.replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector,t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAndAddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extends=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,STRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e=e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]}function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty(e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.slice(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n=t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0)}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n)&&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r(h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f)):e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u),u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n,r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__currentElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a],l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.join("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.MIXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separator:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e,this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t&&(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:function(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":root"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.cssText=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._findApplications(e)},_getInitialValueForProperty:function(e){return this._measureElement||(this._measureElement=document.createElement("meta"),this._measureElement.style.all="initial",document.head.appendChild(this._measureElement)),window.getComputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransformRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y),y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Polymer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=Polymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Settings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle&&"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(this,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulateStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuild=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow"===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o.useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o.useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if(r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFromModule(this.is);var l=this._template&&this._template.parentNode;if(!this._template||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){var c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)&&(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulateStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAttr))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._scopeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if(e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("class",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.length&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeElementClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s(t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Polymer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32),r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.StyleUtil,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer.Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calcHostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e.index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes.MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split(" ").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleScopeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.propertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.propertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectProperties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSIGN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].trim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCssText)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,"").replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(var n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:function(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e[t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.indexOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){var o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o&&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVariableAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for(var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.lastIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{var o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForProperty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.slice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.propertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForProperties(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx.ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTransform){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.keyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.length;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDataFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles(r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.parsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties(n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"===e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo||self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.is,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexOf(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.indexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t.transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformComplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o&&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})}}},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forActiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o){var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i.collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function(e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0,-1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elementKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyProperties(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText||(s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})},_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i.useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRuleTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e.transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e.transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSelector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:function(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h=0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector=c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute(r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this.XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transformStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCount--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShadow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyCss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.textContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._scopeStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._customStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0===n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleProperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[];for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customStyleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache=function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function(e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if(r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s.keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsStrictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length},_objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._objectsEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties,t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_properties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(document.documentElement),addStyle:function(e){this._styles.push(e),this._properties=null},get _styleProperties(){return this._properties||(e.decorateStyles(this._styles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRootPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.customStyle),e.reify(this._properties)),this._properties},hasStyleProperties:function(){return Boolean(this._properties)},_needsStyleProperties:function(){},_computeStyleProperties:function(){return this._styleProperties},updateStyles:function(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._styleCache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__importElement||r,r._apply(); -n&&e.updateNativeStyleProperties(document.documentElement,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.serializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(this._styles,this):null)},customStyle:null,getComputedStyleValue:function(e){return i||this._styleProperties||this._computeStyleProperties(),!i&&this._styleProperties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_setupStyleProperties:function(){this.customStyle={},this._styleCache=null,this._styleProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._customStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySelector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeStyle.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSelector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__stylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.host))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=this._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCache||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styles,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),this._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStyleProperties,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,this.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(this.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStyleProperties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeStyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootPropertiesForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styles,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStyleProperties:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=this._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperties=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.style);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scopeCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"===n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementClass(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.call(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr||(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:"")),t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeStyleProperties(this,this.customStyle):(this.isAttached?this._needsStyleProperties()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropertiesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles())},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._query(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.updateStyles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehavior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverEffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marshalInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleTransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is:"custom-style",extends:"style",_template:null,properties:{include:String},ready:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__cssBuild=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!==this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedElement;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties(),s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=new MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childList:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){var t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedBuild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forEachRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transform([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpdateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCustomProperties:function(){var e=this.__appliedElement;this._computeStyleProperties();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssText(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",templatize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotations(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffects(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.listen=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropertyOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._constructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._content._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&this.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hideTemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextContent__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.dom.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function(){Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(var n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstancePropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._content;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=function(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Polymer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=this._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parentPropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=Object.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareModelNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function",effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kind:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDashCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forwardParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){return a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return function(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.dataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Object.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySetter);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardInstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHost,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentProps&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:function(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in this._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(this._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getRootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting(),this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._notes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnotatedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),this._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s._createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scopeElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElementClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templatized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPrefix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)if(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.parentNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collections=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this),this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.prototype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new WeakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==typeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pmap[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).map(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slice(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this._removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.store[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},getItems:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_applySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKeys=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?null:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instances.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._instanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[this.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:function(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.initialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){this.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requestRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boundRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFrameTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(this._render)},_observeChanged:function(){this._observePaths=this.observe&&this.observe.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):this.items?this._error(this._logf("dom-repeat","expected array for `items`, found",this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._render);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSplices),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwardItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._observePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounceTemplate(this._render))}},render:function(){this._needFullRefresh=!0,this._debounceTemplate(this._render),this._flushTemplates()},_render:function(){this._needFullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterFn?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),this._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._instances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._limit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=this;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlaceholder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?this._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];void 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i++)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){for(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_detachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChild(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlaceholder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_insertPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.collection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t){var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instances[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNode;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgradeInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:function(e){for(var t=0;t<this._instances.length;t++)this._instances[t].isPlaceholder||this._instances[t]._showHideChildren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sortFn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.indexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.length+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToInstIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.selected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selected"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.length||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelected:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selected==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._selectedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected."+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&this.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","items."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extends:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_queueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[Polymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(this._ensureInstance)},render:function(){this._flushTemplates()},_render:function(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showHideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._instance&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),this._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNode;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstance:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)for(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r++)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChildren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance._notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._readied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,this._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertChildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefore(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<this._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfigure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=this._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:function(){this._importsReady&&this.render()},detached:function(){this._removeChildren()},render:function(){this._ensureReady(),this._children||(this._template=this,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepConfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatures.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),this._insertChildren(),this.fire("dom-change")}})</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>Polymer.PaperSpinnerBehavior={listeners:{animationend:"__reset",webkitAnimationEnd:"__reset"},properties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__activeChanged"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDown:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?"active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setAriaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){e===this.getPropertyInfo("alt").value?this.alt=this.getAttribute("aria-label")||e:(this.__setAriaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e){var t="aria-hidden";e?this.setAttribute(t,"true"):this.removeAttribute(t)},__reset:function(){this.active=!1,this.__coolingDown=!1}}</script><dom-module id="paper-spinner-styles" assetpath="../bower_components/paper-spinner/"><template><style>:host{display:inline-block;position:relative;width:28px;height:28px;--paper-spinner-container-rotation-duration:1568ms;--paper-spinner-expand-contract-duration:1333ms;--paper-spinner-full-cycle-duration:5332ms;--paper-spinner-cooldown-duration:400ms}#spinnerContainer{width:100%;height:100%;direction:ltr}#spinnerContainer.active{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite;animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;white-space:nowrap;border-color:var(--paper-spinner-color,--google-blue-500)}.layer-1{border-color:var(--paper-spinner-layer-1-color,--google-blue-500)}.layer-2{border-color:var(--paper-spinner-layer-2-color,--google-red-500)}.layer-3{border-color:var(--paper-spinner-layer-3-color,--google-yellow-500)}.layer-4{border-color:var(--paper-spinner-layer-4-color,--google-green-500)}.active .spinner-layer{-webkit-animation-name:fill-unfill-rotate;-webkit-animation-duration:var(--paper-spinner-full-cycle-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-name:fill-unfill-rotate;animation-duration:var(--paper-spinner-full-cycle-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite;opacity:1}.active .spinner-layer.layer-1{-webkit-animation-name:fill-unfill-rotate,layer-1-fade-in-out;animation-name:fill-unfill-rotate,layer-1-fade-in-out}.active .spinner-layer.layer-2{-webkit-animation-name:fill-unfill-rotate,layer-2-fade-in-out;animation-name:fill-unfill-rotate,layer-2-fade-in-out}.active .spinner-layer.layer-3{-webkit-animation-name:fill-unfill-rotate,layer-3-fade-in-out;animation-name:fill-unfill-rotate,layer-3-fade-in-out}.active .spinner-layer.layer-4{-webkit-animation-name:fill-unfill-rotate,layer-4-fade-in-out;animation-name:fill-unfill-rotate,layer-4-fade-in-out}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@-webkit-keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}@keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.spinner-layer::after{left:45%;width:10%;border-top-style:solid}.circle-clipper::after,.spinner-layer::after{content:'';box-sizing:border-box;position:absolute;top:0;border-width:var(--paper-spinner-stroke-width,3px);border-color:inherit;border-radius:50%}.circle-clipper::after{bottom:0;width:200%;border-style:solid;border-bottom-color:transparent!important}.circle-clipper.left::after{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right::after{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper::after,.active .gap-patch::after{-webkit-animation-duration:var(--paper-spinner-expand-contract-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-duration:var(--paper-spinner-expand-contract-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite}.active .circle-clipper.left::after{-webkit-animation-name:left-spin;animation-name:left-spin}.active .circle-clipper.right::after{-webkit-animation-name:right-spin;animation-name:right-spin}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1);animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}</style></template></dom-module><dom-module id="paper-spinner" assetpath="../bower_components/paper-spinner/"><template strip-whitespace=""><style include="paper-spinner-styles"></style><div id="spinnerContainer" class-name="[[__computeContainerClasses(active, __coolingDown)]]"><div class="spinner-layer layer-1"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-2"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-3"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-4"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div></div></template><script>Polymer({is:"paper-spinner",behaviors:[Polymer.PaperSpinnerBehavior]})</script></dom-module><style>@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Black.ttf) format("truetype");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}</style><style is="custom-style">:root{--paper-font-common-base:{font-family:Roboto,Noto,sans-serif;-webkit-font-smoothing:antialiased};--paper-font-common-code:{font-family:'Roboto Mono',Consolas,Menlo,monospace;-webkit-font-smoothing:antialiased};--paper-font-common-expensive-kerning:{text-rendering:optimizeLegibility};--paper-font-common-nowrap:{white-space:nowrap;overflow:hidden;text-overflow:ellipsis};--paper-font-display4:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:112px;font-weight:300;letter-spacing:-.044em;line-height:120px};--paper-font-display3:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:56px;font-weight:400;letter-spacing:-.026em;line-height:60px};--paper-font-display2:{@apply(--paper-font-common-base);font-size:45px;font-weight:400;letter-spacing:-.018em;line-height:48px};--paper-font-display1:{@apply(--paper-font-common-base);font-size:34px;font-weight:400;letter-spacing:-.01em;line-height:40px};--paper-font-headline:{@apply(--paper-font-common-base);font-size:24px;font-weight:400;letter-spacing:-.012em;line-height:32px};--paper-font-title:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:20px;font-weight:500;line-height:28px};--paper-font-subhead:{@apply(--paper-font-common-base);font-size:16px;font-weight:400;line-height:24px};--paper-font-body2:{@apply(--paper-font-common-base);font-size:14px;font-weight:500;line-height:24px};--paper-font-body1:{@apply(--paper-font-common-base);font-size:14px;font-weight:400;line-height:20px};--paper-font-caption:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:12px;font-weight:400;letter-spacing:0.011em;line-height:20px};--paper-font-menu:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:13px;font-weight:500;line-height:24px};--paper-font-button:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:14px;font-weight:500;letter-spacing:0.018em;line-height:24px;text-transform:uppercase};--paper-font-code2:{@apply(--paper-font-common-code);font-size:14px;font-weight:700;line-height:20px};--paper-font-code1:{@apply(--paper-font-common-code);font-size:14px;font-weight:500;line-height:20px};}</style><dom-module id="iron-flex" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal,.layout.vertical{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.inline{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex}.layout.horizontal{-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}.layout.vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.layout.wrap{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.flex{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-auto{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.flex-none{-ms-flex:none;-webkit-flex:none;flex:none}</style></template></dom-module><dom-module id="iron-flex-reverse" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal-reverse,.layout.vertical-reverse{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.horizontal-reverse{-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.layout.vertical-reverse{-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.layout.wrap-reverse{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}</style></template></dom-module><dom-module id="iron-flex-alignment" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.start{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.end{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end}.layout.baseline{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline}.layout.start-justified{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.layout.end-justified{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.layout.around-justified{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around}.layout.justified{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.self-start{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start}.self-center{-ms-align-self:center;-webkit-align-self:center;align-self:center}.self-end{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end}.self-stretch{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch}.self-baseline{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline}; .layout.start-aligned{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start}.layout.end-aligned{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end}.layout.center-aligned{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center}.layout.between-aligned{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between}.layout.around-aligned{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around}</style></template></dom-module><dom-module id="iron-flex-factors" assetpath="../bower_components/iron-flex-layout/"><template><style>.flex,.flex-1{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-2{-ms-flex:2;-webkit-flex:2;flex:2}.flex-3{-ms-flex:3;-webkit-flex:3;flex:3}.flex-4{-ms-flex:4;-webkit-flex:4;flex:4}.flex-5{-ms-flex:5;-webkit-flex:5;flex:5}.flex-6{-ms-flex:6;-webkit-flex:6;flex:6}.flex-7{-ms-flex:7;-webkit-flex:7;flex:7}.flex-8{-ms-flex:8;-webkit-flex:8;flex:8}.flex-9{-ms-flex:9;-webkit-flex:9;flex:9}.flex-10{-ms-flex:10;-webkit-flex:10;flex:10}.flex-11{-ms-flex:11;-webkit-flex:11;flex:11}.flex-12{-ms-flex:12;-webkit-flex:12;flex:12}</style></template></dom-module><dom-module id="iron-positioning" assetpath="../bower_components/iron-flex-layout/"><template><style>.block{display:block}[hidden]{display:none!important}.invisible{visibility:hidden!important}.relative{position:relative}.fit{position:absolute;top:0;right:0;bottom:0;left:0}body.fullbleed{margin:0;height:100vh}.scroll{-webkit-overflow-scrolling:touch;overflow:auto}.fixed-bottom,.fixed-left,.fixed-right,.fixed-top{position:fixed}.fixed-top{top:0;left:0;right:0}.fixed-right{top:0;right:0;bottom:0}.fixed-bottom{right:0;bottom:0;left:0}.fixed-left{top:0;bottom:0;left:0}</style></template></dom-module><script>!function(n){"use strict";function t(n,t){for(var e=[],r=0,u=n.length;r<u;r++)e.push(n[r].substr(0,t));return e}function e(n){return function(t,e,r){var u=r[n].indexOf(e.charAt(0).toUpperCase()+e.substr(1).toLowerCase());~u&&(t.month=u)}}function r(n,t){for(n=String(n),t=t||2;n.length<t;)n="0"+n;return n}var u={},o=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a=/\d\d?/,i=/\d{3}/,s=/\d{4}/,m=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,d=function(){},f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"],h=t(c,3),l=t(f,3);u.i18n={dayNamesShort:l,dayNames:f,monthNamesShort:h,monthNames:c,amPm:["am","pm"],DoFn:function(n){return n+["th","st","nd","rd"][n%10>3?0:(n-n%10!==10)*n%10]}};var M={D:function(n){return n.getDate()},DD:function(n){return r(n.getDate())},Do:function(n,t){return t.DoFn(n.getDate())},d:function(n){return n.getDay()},dd:function(n){return r(n.getDay())},ddd:function(n,t){return t.dayNamesShort[n.getDay()]},dddd:function(n,t){return t.dayNames[n.getDay()]},M:function(n){return n.getMonth()+1},MM:function(n){return r(n.getMonth()+1)},MMM:function(n,t){return t.monthNamesShort[n.getMonth()]},MMMM:function(n,t){return t.monthNames[n.getMonth()]},YY:function(n){return String(n.getFullYear()).substr(2)},YYYY:function(n){return n.getFullYear()},h:function(n){return n.getHours()%12||12},hh:function(n){return r(n.getHours()%12||12)},H:function(n){return n.getHours()},HH:function(n){return r(n.getHours())},m:function(n){return n.getMinutes()},mm:function(n){return r(n.getMinutes())},s:function(n){return n.getSeconds()},ss:function(n){return r(n.getSeconds())},S:function(n){return Math.round(n.getMilliseconds()/100)},SS:function(n){return r(Math.round(n.getMilliseconds()/10),2)},SSS:function(n){return r(n.getMilliseconds(),3)},a:function(n,t){return n.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(n,t){return n.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(n){var t=n.getTimezoneOffset();return(t>0?"-":"+")+r(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},g={D:[a,function(n,t){n.day=t}],Do:[new RegExp(a.source+m.source),function(n,t){n.day=parseInt(t,10)}],M:[a,function(n,t){n.month=t-1}],YY:[a,function(n,t){var e=new Date,r=+(""+e.getFullYear()).substr(0,2);n.year=""+(t>68?r-1:r)+t}],h:[a,function(n,t){n.hour=t}],m:[a,function(n,t){n.minute=t}],s:[a,function(n,t){n.second=t}],YYYY:[s,function(n,t){n.year=t}],S:[/\d/,function(n,t){n.millisecond=100*t}],SS:[/\d{2}/,function(n,t){n.millisecond=10*t}],SSS:[i,function(n,t){n.millisecond=t}],d:[a,d],ddd:[m,d],MMM:[m,e("monthNamesShort")],MMMM:[m,e("monthNames")],a:[m,function(n,t,e){var r=t.toLowerCase();r===e.amPm[0]?n.isPm=!1:r===e.amPm[1]&&(n.isPm=!0)}],ZZ:[/[\+\-]\d\d:?\d\d/,function(n,t){var e,r=(t+"").match(/([\+\-]|\d\d)/gi);r&&(e=+(60*r[1])+parseInt(r[2],10),n.timezoneOffset="+"===r[0]?e:-e)}]};g.dd=g.d,g.dddd=g.ddd,g.DD=g.D,g.mm=g.m,g.hh=g.H=g.HH=g.h,g.MM=g.M,g.ss=g.s,g.A=g.a,u.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},u.format=function(n,t,e){var r=e||u.i18n;if("number"==typeof n&&(n=new Date(n)),"[object Date]"!==Object.prototype.toString.call(n)||isNaN(n.getTime()))throw new Error("Invalid Date in fecha.format");return t=u.masks[t]||t||u.masks.default,t.replace(o,function(t){return t in M?M[t](n,r):t.slice(1,t.length-1)})},u.parse=function(n,t,e){var r=e||u.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=u.masks[t]||t,n.length>1e3)return!1;var a=!0,i={};if(t.replace(o,function(t){if(g[t]){var e=g[t],u=n.search(e[0]);~u?n.replace(e[0],function(t){return e[1](i,t,r),n=n.substr(u+t.length),t}):a=!1}return g[t]?"":t.slice(1,t.length-1)}),!a)return!1;var s=new Date;i.isPm===!0&&null!=i.hour&&12!==+i.hour?i.hour=+i.hour+12:i.isPm===!1&&12===+i.hour&&(i.hour=0);var m;return null!=i.timezoneOffset?(i.minute=+(i.minute||0)-+i.timezoneOffset,m=new Date(Date.UTC(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0))):m=new Date(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0),m},"undefined"!=typeof module&&module.exports?module.exports=u:"function"==typeof define&&define.amd?define(function(){return u}):n.fecha=u}(this)</script><script>function toLocaleStringSupportsOptions(){try{(new Date).toLocaleString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleDateStringSupportsOptions(){try{(new Date).toLocaleDateString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleTimeStringSupportsOptions(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}window.hassUtil=window.hassUtil||{},window.hassUtil.DEFAULT_ICON="mdi:bookmark",window.hassUtil.OFF_STATES=["off","closed","unlocked"],window.hassUtil.DOMAINS_WITH_CARD=["climate","cover","configurator","input_select","input_slider","media_player","scene","script","weblink"],window.hassUtil.DOMAINS_WITH_MORE_INFO=["light","group","sun","climate","configurator","cover","script","media_player","camera","updater","alarm_control_panel","lock","automation"],window.hassUtil.DOMAINS_WITH_NO_HISTORY=["camera","configurator","scene"],window.hassUtil.HIDE_MORE_INFO=["input_select","scene","script","input_slider"],window.hassUtil.LANGUAGE=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage,window.hassUtil.attributeClassNames=function(e,t){return e?t.map(function(t){return t in e.attributes?"has-"+t:""}).join(" "):""},window.hassUtil.canToggle=function(e,t){return e.reactor.evaluate(e.serviceGetters.canToggleEntity(t))},window.hassUtil.dynamicContentUpdater=function(e,t,i){var n,a=Polymer.dom(e);a.lastChild&&a.lastChild.tagName===t?n=a.lastChild:(a.lastChild&&a.removeChild(a.lastChild),n=document.createElement(t)),Object.keys(i).forEach(function(e){n[e]=i[e]}),null===n.parentNode&&a.appendChild(n)},window.fecha.masks.haDateTime=window.fecha.masks.shortTime+" "+window.fecha.masks.mediumDate,toLocaleStringSupportsOptions()?window.hassUtil.formatDateTime=function(e){return e.toLocaleString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatDateTime=function(e){return window.fecha.format(e,"haDateTime")},toLocaleDateStringSupportsOptions()?window.hassUtil.formatDate=function(e){return e.toLocaleDateString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric"})}:window.hassUtil.formatDate=function(e){return window.fecha.format(e,"mediumDate")},toLocaleTimeStringSupportsOptions()?window.hassUtil.formatTime=function(e){return e.toLocaleTimeString(window.hassUtil.LANGUAGE,{hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatTime=function(e){return window.fecha.format(e,"shortTime")},window.hassUtil.relativeTime=function(e){var t,i=Math.abs(new Date-e)/1e3,n=new Date>e?"%s ago":"in %s",a=window.hassUtil.relativeTime.tests;for(t=0;t<a.length;t+=2){if(i<a[t])return i=Math.floor(i),n.replace("%s",1===i?"1 "+a[t+1]:i+" "+a[t+1]+"s");i/=a[t]}return i=Math.floor(i),n.replace("%s",1===i?"1 week":i+" weeks")},window.hassUtil.relativeTime.tests=[60,"second",60,"minute",24,"hour",7,"day"],window.hassUtil.stateCardType=function(e,t){return"unavailable"===t.state?"display":window.hassUtil.DOMAINS_WITH_CARD.indexOf(t.domain)!==-1?t.domain:window.hassUtil.canToggle(e,t.entityId)&&"hidden"!==t.attributes.control?"toggle":"display"},window.hassUtil.stateMoreInfoType=function(e){return window.hassUtil.DOMAINS_WITH_MORE_INFO.indexOf(e.domain)!==-1?e.domain:window.hassUtil.HIDE_MORE_INFO.indexOf(e.domain)!==-1?"hidden":"default"},window.hassUtil.domainIcon=function(e,t){switch(e){case"alarm_control_panel":return t&&"disarmed"===t?"mdi:bell-outline":"mdi:bell";case"automation":return"mdi:playlist-play";case"binary_sensor":return t&&"off"===t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle";case"camera":return"mdi:video";case"climate":return"mdi:nest-thermostat";case"configurator":return"mdi:settings";case"conversation":return"mdi:text-to-speech";case"cover":return t&&"open"===t?"mdi:window-open":"mdi:window-closed";case"device_tracker":return"mdi:account";case"fan":return"mdi:fan";case"group":return"mdi:google-circles-communities";case"homeassistant":return"mdi:home";case"input_boolean":return"mdi:drawing";case"input_select":return"mdi:format-list-bulleted";case"input_slider":return"mdi:ray-vertex";case"light":return"mdi:lightbulb";case"lock":return t&&"unlocked"===t?"mdi:lock-open":"mdi:lock";case"media_player":return t&&"off"!==t&&"idle"!==t?"mdi:cast-connected":"mdi:cast";case"notify":return"mdi:comment-alert";case"proximity":return"mdi:apple-safari";case"remote":return"mdi:remote";case"scene":return"mdi:google-pages";case"script":return"mdi:file-document";case"sensor":return"mdi:eye";case"simple_alarm":return"mdi:bell";case"sun":return"mdi:white-balance-sunny";case"switch":return"mdi:flash";case"updater":return"mdi:cloud-upload";case"weblink":return"mdi:open-in-new";default:return console.warn("Unable to find icon for domain "+e+" ("+t+")"),window.hassUtil.DEFAULT_ICON}},window.hassUtil.binarySensorIcon=function(e){var t=e.state&&"off"===e.state;switch(e.attributes.sensor_class){case"connectivity":return t?"mdi:server-network-off":"mdi:server-network";case"light":return t?"mdi:brightness-5":"mdi:brightness-7";case"moisture":return t?"mdi:water-off":"mdi:water";case"motion":return t?"mdi:walk":"mdi:run";case"occupancy":return t?"mdi:home":"mdi:home-outline";case"opening":return t?"mdi:crop-square":"mdi:exit-to-app";case"sound":return t?"mdi:music-note-off":"mdi:music-note";case"vibration":return t?"mdi:crop-portrait":"mdi:vibrate";case"gas":case"power":case"safety":case"smoke":return t?"mdi:verified":"mdi:alert";default:return t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle"}},window.hassUtil.stateIcon=function(e){var t;if(!e)return window.hassUtil.DEFAULT_ICON;if(e.attributes.icon)return e.attributes.icon;if(t=e.attributes.unit_of_measurement,t&&"sensor"===e.domain){if("°C"===t||"°F"===t)return"mdi:thermometer";if("Mice"===t)return"mdi:mouse-variant"}else if("binary_sensor"===e.domain)return window.hassUtil.binarySensorIcon(e);return window.hassUtil.domainIcon(e.domain,e.state)}</script><script>window.hassBehavior={attached:function(){var e=this.hass;if(!e)throw new Error("No hass property found on "+this.nodeName);this.nuclearUnwatchFns=Object.keys(this.properties).reduce(function(t,r){var n;if(!("bindNuclear"in this.properties[r]))return t;if(n=this.properties[r].bindNuclear(e),!n)throw new Error("Undefined getter specified for key "+r+" on "+this.nodeName);return this[r]=e.reactor.evaluate(n),t.concat(e.reactor.observe(n,function(e){this[r]=e}.bind(this)))}.bind(this),[])},detached:function(){for(;this.nuclearUnwatchFns.length;)this.nuclearUnwatchFns.shift()()}}</script><style is="custom-style">:root{--primary-text-color:var(--light-theme-text-color);--primary-background-color:var(--light-theme-background-color);--secondary-text-color:var(--light-theme-secondary-color);--disabled-text-color:var(--light-theme-disabled-color);--divider-color:var(--light-theme-divider-color);--error-color:var(--paper-deep-orange-a700);--primary-color:var(--paper-indigo-500);--light-primary-color:var(--paper-indigo-100);--dark-primary-color:var(--paper-indigo-700);--accent-color:var(--paper-pink-a200);--light-accent-color:var(--paper-pink-a100);--dark-accent-color:var(--paper-pink-a400);--light-theme-background-color:#ffffff;--light-theme-base-color:#000000;--light-theme-text-color:var(--paper-grey-900);--light-theme-secondary-color:#737373;--light-theme-disabled-color:#9b9b9b;--light-theme-divider-color:#dbdbdb;--dark-theme-background-color:var(--paper-grey-900);--dark-theme-base-color:#ffffff;--dark-theme-text-color:#ffffff;--dark-theme-secondary-color:#bcbcbc;--dark-theme-disabled-color:#646464;--dark-theme-divider-color:#3c3c3c;--text-primary-color:var(--dark-theme-text-color);--default-primary-color:var(--primary-color)}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><script>Polymer.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,reflectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,value:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueChanged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIronCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this.required||this.checked},_requiredChanged:function(){this.required?this.setAttribute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChanged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.IronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronCheckedElementBehaviorImpl]</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><script>Polymer.IronButtonStateImpl={properties:{pressed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedChanged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boolean,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly:!0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttribute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}},listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_detectKeyboardFocus(focused)","_activeChanged(active, ariaActiveAttribute)"],keyBindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler","space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function(){this.toggles?this._userActivate(!this.active):this.active=!1},_detectKeyboardFocus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userActivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downHandler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceivedFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._setPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(t.preventDefault(),t.stopImmediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){this.async(function(){this.click()},1)},_pressedChanged:function(e){this._changedButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttribute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this.setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(this.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:function(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButtonState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},Polymer.IronButtonState=[Polymer.IronA11yKeysBehavior,Polymer.IronButtonStateImpl]</script><dom-module id="paper-ripple" assetpath="../bower_components/paper-ripple/"><template><style>:host{display:block;position:absolute;border-radius:inherit;overflow:hidden;top:0;left:0;right:0;bottom:0;pointer-events:none}:host([animating]){-webkit-transform:translate(0,0);transform:translate3d(0,0,0)}#background,#waves,.wave,.wave-container{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}#background,.wave{opacity:0}#waves,.wave{overflow:hidden}.wave,.wave-container{border-radius:50%}:host(.circle) #background,:host(.circle) #waves{border-radius:50%}:host(.circle) .wave-container{overflow:hidden}</style><div id="background"></div><div id="waves"></div></template></dom-module><script>!function(){function t(t){this.element=t,this.width=this.boundingRect.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this.height)}function i(t){this.element=t,this.color=window.getComputedStyle(t).color,this.wave=document.createElement("div"),this.waveContainer=document.createElement("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("wave"),this.waveContainer.classList.add("wave-container"),Polymer.dom(this.waveContainer).appendChild(this.wave),this.resetInteractionState()}var e={distance:function(t,i,e,n){var s=t-e,o=i-n;return Math.sqrt(s*s+o*o)},now:window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now};t.prototype={get boundingRect(){return this.element.getBoundingClientRect()},furthestCornerDistanceFrom:function(t,i){var n=e.distance(t,i,0,0),s=e.distance(t,i,this.width,0),o=e.distance(t,i,0,this.height),a=e.distance(t,i,this.width,this.height);return Math.max(n,s,o,a)}},i.MAX_RADIUS=300,i.prototype={get recenters(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var t;return this.mouseDownStart?(t=e.now()-this.mouseDownStart,this.mouseUpStart&&(t-=this.mouseUpElapsed),t):0},get mouseUpElapsed(){return this.mouseUpStart?e.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){return this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpElapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+this.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacity},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radius(){var t=this.containerMetrics.width*this.containerMetrics.width,e=this.containerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(t+e),i.MAX_RADIUS)+5,s=1.1-.2*(n/i.MAX_RADIUS),o=this.mouseInteractionSeconds/s,a=n*(1-Math.pow(80,-o));return Math.abs(a)},get opacity(){return this.mouseUpStart?Math.max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity):this.initialOpacity},get outerOpacity(){var t=.3*this.mouseUpElapsedSeconds,i=this.opacity;return Math.max(0,Math.min(t,i))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isRestingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStart?this.isOpacityFullyDecayed:this.isRestingAtMaxRadius},get translationFraction(){return Math.min(1,this.radius/this.containerMetrics.size*2/Math.sqrt(2))},get xNow(){return this.xEnd?this.xStart+this.translationFraction*(this.xEnd-this.xStart):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFraction*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownStart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this.mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,this.yEnd=0,this.slideDistance=0,this.containerMetrics=new t(this.element)},draw:function(){var t,i,e;this.wave.style.opacity=this.opacity,t=this.radius/(this.containerMetrics.size/2),i=this.xNow-this.containerMetrics.width/2,e=this.yNow-this.containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate("+i+"px, "+e+"px)",this.waveContainer.style.transform="translate3d("+i+"px, "+e+"px, 0)",this.wave.style.webkitTransform="scale("+t+","+t+")",this.wave.style.transform="scale3d("+t+","+t+",1)"},downAction:function(t){var i=this.containerMetrics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.mouseDownStart=e.now(),this.center?(this.xStart=i,this.yStart=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=t?t.detail.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this.yStart=t?t.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics.height/2),this.recenters&&(this.xEnd=i,this.yEnd=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMetrics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.style.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.waveContainer.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+"px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveContainer.style.height=this.containerMetrics.size+"px"},upAction:function(t){this.isMouseDown&&(this.mouseUpStart=e.now())},remove:function(){Polymer.dom(this.waveContainer.parentNode).removeChild(this.waveContainer)}},Polymer({is:"paper-ripple",behaviors:[Polymer.IronA11yKeysBehavior],properties:{initialOpacity:{type:Number,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boolean,value:!1},center:{type:Boolean,value:!1},ripples:{type:Array,value:function(){return[]}},animating:{type:Boolean,readOnly:!0,reflectToAttribute:!0,value:!1},holdDown:{type:Boolean,value:!1,observer:"_holdDownChanged"},noink:{type:Boolean,value:!1},_animating:{type:Boolean},_boundAnimate:{type:Function,value:function(){return this.animate.bind(this)}}},get target(){return this.keyEventTarget},keyBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown","space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?this.keyEventTarget=Polymer.dom(this).getOwnerRoot().host:this.keyEventTarget=this.parentNode;var t=this.keyEventTarget;this.listen(t,"up","uiUpAction"),this.listen(t,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTarget,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"),this.keyEventTarget=null},get shouldKeepAnimating(){for(var t=0;t<this.ripples.length;++t)if(!this.ripples[t].isAnimationComplete)return!0;return!1},simulatedRipple:function(){this.downAction(null),this.async(function(){this.upAction()},1)},uiDownAction:function(t){this.noink||this.downAction(t)},downAction:function(t){if(!(this.holdDown&&this.ripples.length>0)){var i=this.addRipple();i.downAction(t),this._animating||(this._animating=!0,this.animate())}},uiUpAction:function(t){this.noink||this.upAction(t)},upAction:function(t){this.holdDown||(this.ripples.forEach(function(i){i.upAction(t)}),this._animating=!0,this.animate())},onAnimationComplete:function(){this._animating=!1,this.$.background.style.backgroundColor=null,this.fire("transitionend")},addRipple:function(){var t=new i(this);return Polymer.dom(this.$.waves).appendChild(t.waveContainer),this.$.background.style.backgroundColor=t.color,this.ripples.push(t),this._setAnimating(!0),t},removeRipple:function(t){var i=this.ripples.indexOf(t);i<0||(this.ripples.splice(i,1),t.remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(this._animating){var t,i;for(t=0;t<this.ripples.length;++t)i=this.ripples[t],i.draw(),this.$.background.style.opacity=i.outerOpacity,i.isOpacityFullyDecayed&&!i.isRestingAtMaxRadius&&this.removeRipple(i);this.shouldKeepAnimating||0!==this.ripples.length?window.requestAnimationFrame(this._boundAnimate):this.onAnimationComplete()}},_onEnterKeydown:function(){this.uiDownAction(),this.async(this.uiUpAction,1)},_onSpaceKeydown:function(){this.uiDownAction()},_onSpaceKeyup:function(){this.uiUpAction()},_holdDownChanged:function(t,i){void 0!==i&&(t?this.downAction():this.upAction())}})}()</script><script>Polymer.PaperRippleBehavior={properties:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object}},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandler:function(e){Polymer.IronButtonStateImpl._downHandler.call(this,e),this.pressed&&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._ripple=this._createRipple(),this._ripple.noink=this.noink;var i=this._rippleContainer||this.root;if(i&&Polymer.dom(i).appendChild(this._ripple),e){var n=Polymer.dom(this._rippleContainer||this),t=Polymer.dom(e).rootTarget;n.deepContains(t)&&this._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),this._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:function(){return document.createElement("paper-ripple")},_noinkChanged:function(e){this.hasRipple()&&(this._ripple.noink=e)}}</script><script>Polymer.PaperInkyFocusBehaviorImpl={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_focusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple.holdDown=e)},_createRipple:function(){var e=Polymer.PaperRippleBehavior._createRipple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle"),e}},Polymer.PaperInkyFocusBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperInkyFocusBehaviorImpl]</script><script>Polymer.PaperCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedElementBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_buttonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.PaperCheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElementBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script><dom-module id="paper-checkbox" assetpath="../bower_components/paper-checkbox/"><template strip-whitespace=""><style>:host{display:inline-block;white-space:nowrap;cursor:pointer;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calculated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#checkboxContainer{display:inline-block;position:relative;width:var(--calculated-paper-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vertical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--paper-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-checkbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[checked]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color 140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #checkmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:checkmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-webkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--paper-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbox-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;height:70%;border-style:solid;border-top:none;border-left:none;border-right-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-checkmark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-sizing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:50% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px);white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,var(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkboxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-label-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spacing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #checkbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(--paper-checkbox-error-color,var(--error-color))}</style><div id="checkboxContainer"><div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"><div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div></div></div><div id="checkboxLabel"><content></content></div></template><script>Polymer({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComputedStyleValue("--calculated-paper-checkbox-ink-size").trim();if("-1px"===e){var t=parseFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size").trim()),a=Math.floor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",this.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+="checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxContainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script></dom-module><script>Polymer.PaperButtonBehaviorImpl={properties:{elevation:{type:Number,reflectToAttribute:!0,readOnly:!0}},observers:["_calculateElevation(focused, disabled, active, pressed, receivedFocusFromKeyboard)","_computeKeyboardClass(receivedFocusFromKeyboard)"],hostAttributes:{role:"button",tabindex:"0",animated:!0},_calculateElevation:function(){var e=1;this.disabled?e=0:this.active||this.pressed?e=4:this.receivedFocusFromKeyboard&&(e=3),this._setElevation(e)},_computeKeyboardClass:function(e){this.toggleClass("keyboard-focus",e)},_spaceKeyDownHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyDownHandler.call(this,e),this.hasRipple()&&this.getRipple().ripples.length<1&&this._ripple.uiDownAction()},_spaceKeyUpHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyUpHandler.call(this,e),this.hasRipple()&&this._ripple.uiUpAction()}},Polymer.PaperButtonBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperButtonBehaviorImpl]</script><style is="custom-style">:root{--shadow-transition:{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)};--shadow-none:{box-shadow:none};--shadow-elevation-2dp:{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)};--shadow-elevation-3dp:{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12),0 3px 3px -2px rgba(0,0,0,.4)};--shadow-elevation-4dp:{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4)};--shadow-elevation-6dp:{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4)};--shadow-elevation-8dp:{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)};--shadow-elevation-12dp:{box-shadow:0 12px 16px 1px rgba(0,0,0,.14),0 4px 22px 3px rgba(0,0,0,.12),0 6px 7px -4px rgba(0,0,0,.4)};--shadow-elevation-16dp:{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.4)};--shadow-elevation-24dp:{box-shadow:0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12),0 11px 15px -7px rgba(0,0,0,.4)};}</style><dom-module id="paper-material-shared-styles" assetpath="../bower_components/paper-material/"><template><style>:host{display:block;position:relative}:host([elevation="1"]){@apply(--shadow-elevation-2dp)}:host([elevation="2"]){@apply(--shadow-elevation-4dp)}:host([elevation="3"]){@apply(--shadow-elevation-6dp)}:host([elevation="4"]){@apply(--shadow-elevation-8dp)}:host([elevation="5"]){@apply(--shadow-elevation-16dp)}</style></template></dom-module><dom-module id="paper-button" assetpath="../bower_components/paper-button/"><template strip-whitespace=""><style include="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:host([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-button-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;cursor:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@apply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</style><content></content></template><script>Polymer({is:"paper-button",behaviors:[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribute:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){this.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._setElevation(0)}})</script></dom-module><dom-module id="paper-input-container" assetpath="../bower_components/paper-input/"><template><style>:host{display:block;padding:8px 0;@apply(--paper-input-container)}:host([inline]){display:inline-block}:host([disabled]){pointer-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidden]){display:none!important}.floated-label-placeholder{@apply(--paper-font-caption)}.underline{height:2px;position:relative}.focused-line{@apply(--layout-fit);border-bottom:2px solid var(--paper-input-container-focus-color,--primary-color);-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:scale3d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.underline.is-invalid .focused-line{border-color:var(--paper-input-container-invalid-color,--error-color);-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.unfocused-line{@apply(--layout-fit);border-bottom:1px solid var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px dashed;border-color:var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline-disabled)}.label-and-input-container{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-width:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);position:relative}.input-content ::content .paper-input-label,.input-content ::content label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transform-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper-transition-easing)}.input-content.label-is-floating ::content .paper-input-label,.input-content.label-is-floating ::content label{-webkit-transform:translateY(-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-is-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;transform-origin:right top}.input-content.label-is-highlighted ::content .paper-input-label,.input-content.label-is-highlighted ::content label{color:var(--paper-input-container-focus-color,--primary-color);@apply(--paper-input-container-label-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--error-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-content.label-is-hidden ::content label{visibility:hidden}.input-content ::content .paper-input-input,.input-content ::content input,.input-content ::content iron-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appearance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead);@apply(--paper-input-container-input)}.input-content ::content input::-webkit-inner-spin-button,.input-content ::content input::-webkit-outer-spin-button{@apply(--paper-input-container-input-webkit-spinner)}::content [prefix]{@apply(--paper-font-subhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffix]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-flex-none)}.input-content ::content input{min-width:0}.input-content ::content textarea{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on-content.is-highlighted ::content *{color:var(--paper-input-container-focus-color,--primary-color)}</style><template is="dom-if" if="[[!noLabelFloat]]"><div class="floated-label-placeholder" aria-hidden="true"> </div></template><div class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,invalid,_inputHasContent)]]"><content select="[prefix]" id="prefix"></content><div class="label-and-input-container" id="labelAndInputContainer"><content select=":not([add-on]):not([prefix]):not([suffix])"></content></div><content select="[suffix]"></content></div><div class$="[[_computeUnderlineClass(focused,invalid)]]"><div class="unfocused-line"></div><div class="focused-line"></div></div><div class$="[[_computeAddOnContentClass(focused,invalid)]]"><content id="addOnContent" select="[add-on]"></content></div></template></dom-module><script>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidChanged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Function,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Function,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Function,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:Function,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"addon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForValue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputElement(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElementValue(){return this._inputElement[this._propertyForValue]||this._inputElement.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)},attached:function(){this.attrForValue?this._inputElement.addEventListener(this._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this._onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inputElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){this._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(this._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFocus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),this._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._handleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValueAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementValue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.invalid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.validate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}this._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputElement.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invalid:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddOnContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e}})</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-error" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--error-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:absolute;left:0;right:0}:host([invalid]){visibility:visible};</style><content></content></template></dom-module><script>Polymer({is:"paper-input-error",behaviors:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAttribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</script><dom-module id="iron-a11y-announcer" assetpath="../bower_components/iron-a11y-announcer/"><template><style>:host{display:inline-block;position:fixed;clip:rect(0,0,0,0)}</style><div aria-live$="[[mode]]">[[_text]]</div></template><script>!function(){"use strict";Polymer.IronA11yAnnouncer=Polymer({is:"iron-a11y-announcer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""}},created:function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=this),document.body.addEventListener("iron-announce",this._onIronAnnounce.bind(this))},announce:function(n){this._text="",this.async(function(){this._text=n},100)},_onIronAnnounce:function(n){n.detail&&n.detail.text&&this.announce(n.detail.text)}}),Polymer.IronA11yAnnouncer.instance=null,Polymer.IronA11yAnnouncer.requestAvailability=function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=document.createElement("iron-a11y-announcer")),document.body.appendChild(Polymer.IronA11yAnnouncer.instance)}}()</script></dom-module><script>Polymer({is:"iron-input",extends:"input",behaviors:[Polymer.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,observer:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patternAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._origDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefoxIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDispatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.disabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});try{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t},_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._origDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.type){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.value},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.bindValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){this.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preventInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity();e||(this._announceInvalidCharacter("Invalid string of characters not entered."),this.value=this._previousValidInput)}this.bindValue=this.value,this._previousValidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20==e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyCode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)},_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlreadyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.test(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))return!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.required&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBehavior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-validate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text:e})}})</script><dom-module id="login-form" assetpath="layouts/"><template><style is="custom-style" include="iron-flex iron-positioning"></style><style>:host{white-space:nowrap}#passwordDecorator{display:block;margin-bottom:16px}paper-checkbox{margin-right:8px}paper-button{margin-left:72px}.interact{height:125px}#validatebox{margin-top:16px;text-align:center}.validatemessage{margin-top:10px}</style><div class="layout vertical center center-center fit"><img src="/static/icons/favicon-192x192.png" height="192"> <a href="#" id="hideKeyboardOnFocus"></a><div class="interact"><div id="loginform" hidden$="[[showLoading]]"><paper-input-container id="passwordDecorator" invalid="[[isInvalid]]"><label>Password</label><input is="iron-input" type="password" id="passwordInput"><paper-input-error invalid="[[isInvalid]]">[[errorMessage]]</paper-input-error></paper-input-container><div class="layout horizontal center"><paper-checkbox for="" id="rememberLogin">Remember</paper-checkbox><paper-button id="loginButton">Log In</paper-button></div></div><div id="validatebox" hidden$="[[!showLoading]]"><paper-spinner active="true"></paper-spinner><br><div class="validatemessage">Loading data</div></div></div></div></template></dom-module><script>Polymer({is:"login-form",behaviors:[window.hassBehavior],properties:{hass:{type:Object},errorMessage:{type:String,bindNuclear:function(e){return e.authGetters.attemptErrorMessage}},isInvalid:{type:Boolean,bindNuclear:function(e){return e.authGetters.isInvalidAttempt}},isValidating:{type:Boolean,observer:"isValidatingChanged",bindNuclear:function(e){return e.authGetters.isValidating}},loadingResources:{type:Boolean,value:!1},forceShowLoading:{type:Boolean,value:!1},showLoading:{type:Boolean,computed:"computeShowSpinner(forceShowLoading, isValidating)"}},listeners:{keydown:"passwordKeyDown","loginButton.tap":"validatePassword"},observers:["validatingChanged(isValidating, isInvalid)"],attached:function(){window.removeInitMsg()},computeShowSpinner:function(e,i){return e||i},validatingChanged:function(e,i){e||i||(this.$.passwordInput.value="")},isValidatingChanged:function(e){e||this.async(function(){this.$.passwordInput.focus()}.bind(this),10)},passwordKeyDown:function(e){13===e.keyCode?(this.validatePassword(),e.preventDefault()):this.isInvalid&&(this.isInvalid=!1)},validatePassword:function(){this.$.hideKeyboardOnFocus.focus(),window.validateAuth(this.$.passwordInput.value,this.$.rememberLogin.checked)}})</script><script>Polymer({is:"iron-media-query",properties:{queryMatches:{type:Boolean,value:!1,readOnly:!0,notify:!0},query:{type:String,observer:"queryChanged"},full:{type:Boolean,value:!1},_boundMQHandler:{value:function(){return this.queryHandler.bind(this)}},_mq:{value:null}},attached:function(){this.style.display="none",this.queryChanged()},detached:function(){this._remove()},_add:function(){this._mq&&this._mq.addListener(this._boundMQHandler)},_remove:function(){this._mq&&this._mq.removeListener(this._boundMQHandler),this._mq=null},queryChanged:function(){this._remove();var e=this.query;e&&(this.full||"("===e[0]||(e="("+e+")"),this._mq=window.matchMedia(e),this._add(),this.queryHandler(this._mq))},queryHandler:function(e){this._setQueryMatches(e.matches)}})</script><script>Polymer.IronSelection=function(e){this.selection=[],this.selectCallback=e},Polymer.IronSelection.prototype={get:function(){return this.multi?this.selection.slice():this.selection[0]},clear:function(e){this.selection.slice().forEach(function(t){(!e||e.indexOf(t)<0)&&this.setItemSelected(t,!1)},this)},isSelected:function(e){return this.selection.indexOf(e)>=0},setItemSelected:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this.selection.push(e);else{var i=this.selection.indexOf(e);i>=0&&this.selection.splice(i,1)}this.selectCallback&&this.selectCallback(e,t)}},select:function(e){this.multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this.setItemSelected(e,!0))},toggle:function(e){this.setItemSelected(e,!this.isSelected(e))}}</script><script>Polymer.IronSelectableBehavior={properties:{attrForSelected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{type:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer:"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"iron-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type:String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){return[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1}}}},observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)","_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=this._filterItem.bind(this),this._selection=new Polymer.IronSelection(this._applySelection.bind(this))},attached:function(){this._observer=this._observeItems(this),this._updateItems(),this._shouldUpdateSelection||this._updateSelected(),this._addListener(this.activateEvent)},detached:function(){this._observer&&Polymer.dom(this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)},indexOf:function(e){return this.items.indexOf(e)},select:function(e){this.selected=e},selectPrevious:function(){var e=this.items.length,t=(Number(this._valueToIndex(this.selected))-1+e)%e;this.selected=this._indexToValue(t)},selectNext:function(){var e=(Number(this._valueToIndex(this.selected))+1)%this.items.length;this.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._indexToValue(e))},forceSynchronousItemUpdate:function(){this._updateItems()},get _shouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this._shouldUpdateSelection&&this._updateSelected()},_addListener:function(e){this.listen(this,e,"_activateHandler")},_removeListener:function(e){this.unlisten(this,e,"_activateHandler")},_activateEventChanged:function(e,t){this._removeListener(t),this._addListener(e)},_updateItems:function(){var e=Polymer.dom(this).queryDistributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._bindFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this._shouldUpdateSelection&&(this.selected=this._indexToValue(this.indexOf(this.selectedItem)))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSelected:function(e){this._selection.select(this._valueToItem(this.selected)),this.fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.selected=this.fallbackSelection)},_filterItem:function(e){return!this._excludedLocalNames[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Number(e);for(var t,i=0;t=this.items[i];i++)if(this._valueForItem(t)==e)return i},_indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e];return t?this._valueForItem(t):void 0},_valueForItem:function(e){var t=e[Polymer.CaseMap.dashToCamelCase(this.attrForSelected)];return void 0!=t?t:e.getAttribute(this.attrForSelected)},_applySelection:function(e,t){this.selectedClass&&this.toggleClass(this.selectedClass,t,e),this.selectedAttribute&&this.toggleAttribute(this.selectedAttribute,t,e),this._selectionChange(),this.fire("iron-"+(t?"select":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this._selection.get())},_observeItems:function(e){return Polymer.dom(e).observeNodes(function(e){this._updateItems(),this._shouldUpdateSelection&&this._updateSelected(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHandler:function(e){for(var t=e.target,i=this.items;t&&t!=this;){var s=i.indexOf(t);if(s>=0){var n=this._indexToValue(s);return void this._itemActivate(n,t)}t=t.parentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,item:t},{cancelable:!0}).defaultPrevented||this.select(e)}}</script><script>Polymer.IronMultiSelectableBehaviorImpl={properties:{multi:{type:Boolean,value:!1,observer:"multiChanged"},selectedValues:{type:Array,notify:!0},selectedItems:{type:Array,readOnly:!0,notify:!0}},observers:["_updateSelected(selectedValues.splices)"],select:function(e){this.multi?this.selectedValues?this._toggleSelected(e):this.selectedValues=[e]:this.selected=e},multiChanged:function(e){this._selection.multi=e},get _shouldUpdateSelection(){return null!=this.selected||null!=this.selectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this.multi?this._shouldUpdateSelection&&(this.selectedValues=this.selectedItems.map(function(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){return null!=e},this)):Polymer.IronSelectableBehavior._updateAttrForSelected.apply(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedValues):this._selectSelected(this.selected)},_selectMulti:function(e){if(e){var t=this._valuesToItems(e);this._selection.clear(t);for(var l=0;l<t.length;l++)this._selection.setItemSelected(t[l],!0);if(this.fallbackSelection&&this.items.length&&!this._selection.get().length){var s=this._valueToItem(this.fallbackSelection);s&&(this.selectedValues=[this.fallbackSelection])}}else this._selection.clear()},_selectionChange:function(){var e=this._selection.get();this.multi?this._setSelectedItems(e):(this._setSelectedItems([e]),this._setSelectedItem(e))},_toggleSelected:function(e){var t=this.selectedValues.indexOf(e),l=t<0;l?this.push("selectedValues",e):this.splice("selectedValues",t,1)},_valuesToItems:function(e){return null==e?null:e.map(function(e){return this._valueToItem(e)},this)}},Polymer.IronMultiSelectableBehavior=[Polymer.IronSelectableBehavior,Polymer.IronMultiSelectableBehaviorImpl]</script><script>Polymer({is:"iron-selector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script><script>Polymer.IronResizableBehavior={properties:{_parentResizable:{type:Object,observer:"_parentResizableChanged"},_notifyingDescendant:{type:Boolean,value:!1}},listeners:{"iron-request-resize-notifications":"_onIronRequestResizeNotifications"},created:function(){this._interestedResizables=[],this._boundNotifyResize=this.notifyResize.bind(this)},attached:function(){this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancelable:!0}),this._parentResizable||(window.addEventListener("resize",this._boundNotifyResize),this.notifyResize())},detached:function(){this._parentResizable?this._parentResizable.stopResizeNotificationsFor(this):window.removeEventListener("resize",this._boundNotifyResize),this._parentResizable=null},notifyResize:function(){this.isAttached&&(this._interestedResizables.forEach(function(e){this.resizerShouldNotify(e)&&this._notifyDescendant(e)},this),this._fireResize())},assignParentResizable:function(e){this._parentResizable=e},stopResizeNotificationsFor:function(e){var i=this._interestedResizables.indexOf(e);i>-1&&(this._interestedResizables.splice(i,1),this.unlisten(e,"iron-resize","_onDescendantIronResize"))},resizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){return this._notifyingDescendant?void e.stopPropagation():void(Polymer.Settings.useShadow||this._fireResize())},_fireResize:function(){this.fire("iron-resize",null,{node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var i=e.path?e.path[0]:e.target;i!==this&&(this._interestedResizables.indexOf(i)===-1&&(this._interestedResizables.push(i),this.listen(i,"iron-resize","_onDescendantIronResize")),i.assignParentResizable(this),this._notifyDescendant(i),e.stopPropagation())},_parentResizableChanged:function(e){e&&window.removeEventListener("resize",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(this._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)}}</script><dom-module id="paper-drawer-panel" assetpath="../bower_components/paper-drawer-panel/"><template><style>:host{display:block;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}iron-selector>#drawer{position:absolute;top:0;left:0;height:100%;background-color:#fff;-moz-box-sizing:border-box;box-sizing:border-box;@apply(--paper-drawer-panel-drawer-container)}.transition-drawer{transition:-webkit-transform ease-in-out .3s,width ease-in-out .3s,visibility .3s;transition:transform ease-in-out .3s,width ease-in-out .3s,visibility .3s}.left-drawer>#drawer{@apply(--paper-drawer-panel-left-drawer-container)}.right-drawer>#drawer{left:auto;right:0;@apply(--paper-drawer-panel-right-drawer-container)}iron-selector>#main{position:absolute;top:0;right:0;bottom:0;@apply(--paper-drawer-panel-main-container)}.transition>#main{transition:left ease-in-out .3s,padding ease-in-out .3s}.right-drawer>#main{left:0}.right-drawer.transition>#main{transition:right ease-in-out .3s,padding ease-in-out .3s}#main>::content>[main]{height:100%}#drawer>::content>[drawer]{height:100%}#scrim{position:absolute;top:0;right:0;bottom:0;left:0;visibility:hidden;opacity:0;transition:opacity ease-in-out .38s,visibility ease-in-out .38s;background-color:rgba(0,0,0,.3);@apply(--paper-drawer-panel-scrim)}.narrow-layout>#drawer{will-change:transform}.narrow-layout>#drawer.iron-selected{box-shadow:2px 2px 4px rgba(0,0,0,.15)}.right-drawer.narrow-layout>#drawer.iron-selected{box-shadow:-2px 2px 4px rgba(0,0,0,.15)}.narrow-layout>#drawer>::content>[drawer]{border:0}.left-drawer.narrow-layout>#drawer:not(.iron-selected){visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.right-drawer.narrow-layout>#drawer:not(.iron-selected){left:auto;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}.left-drawer.dragging>#drawer:not(.iron-selected),.left-drawer.peeking>#drawer:not(.iron-selected),.right-drawer.dragging>#drawer:not(.iron-selected),.right-drawer.peeking>#drawer:not(.iron-selected){visibility:visible}.narrow-layout>#main{padding:0}.right-drawer.narrow-layout>#main{left:0;right:0}.dragging>#main>#scrim,.narrow-layout>#main:not(.iron-selected)>#scrim{visibility:visible;opacity:var(--paper-drawer-panel-scrim-opacity,1)}.narrow-layout>#main>*{margin:0;min-height:100%;left:0;right:0;-moz-box-sizing:border-box;box-sizing:border-box}iron-selector:not(.narrow-layout) ::content [paper-drawer-toggle]{display:none}</style><iron-media-query id="mq" on-query-matches-changed="_onQueryMatchesChanged" query="[[_computeMediaQuery(forceNarrow, responsiveWidth)]]"></iron-media-query><iron-selector attr-for-selected="id" class$="[[_computeIronSelectorClass(narrow, _transition, dragging, rightDrawer, peeking)]]" activate-event="" selected="[[selected]]"><div id="main" style$="[[_computeMainStyle(narrow, rightDrawer, drawerWidth)]]"><content select="[main]"></content><div id="scrim" on-tap="closeDrawer"></div></div><div id="drawer" style$="[[_computeDrawerStyle(drawerWidth)]]"><content id="drawerContent" select="[drawer]"></content></div></iron-selector></template><script>!function(){"use strict";function e(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&e[i]&&t.push(i);return t.join(" ")}var t=null;Polymer({is:"paper-drawer-panel",behaviors:[Polymer.IronResizableBehavior],properties:{defaultSelected:{type:String,value:"main"},disableEdgeSwipe:{type:Boolean,value:!1},disableSwipe:{type:Boolean,value:!1},dragging:{type:Boolean,value:!1,readOnly:!0,notify:!0},drawerWidth:{type:String,value:"256px"},edgeSwipeSensitivity:{type:Number,value:30},forceNarrow:{type:Boolean,value:!1},hasTransform:{type:Boolean,value:function(){return"transform"in this.style}},hasWillChange:{type:Boolean,value:function(){return"willChange"in this.style}},narrow:{reflectToAttribute:!0,type:Boolean,value:!1,readOnly:!0,notify:!0},peeking:{type:Boolean,value:!1,readOnly:!0,notify:!0},responsiveWidth:{type:String,value:"768px"},rightDrawer:{type:Boolean,value:!1},selected:{reflectToAttribute:!0,notify:!0,type:String,value:null},drawerToggleAttribute:{type:String,value:"paper-drawer-toggle"},drawerFocusSelector:{type:String,value:'a[href]:not([tabindex="-1"]),area[href]:not([tabindex="-1"]),input:not([disabled]):not([tabindex="-1"]),select:not([disabled]):not([tabindex="-1"]),textarea:not([disabled]):not([tabindex="-1"]),button:not([disabled]):not([tabindex="-1"]),iframe:not([tabindex="-1"]),[tabindex]:not([tabindex="-1"]),[contentEditable=true]:not([tabindex="-1"])'},_transition:{type:Boolean,value:!1}},listeners:{tap:"_onTap",track:"_onTrack",down:"_downHandler",up:"_upHandler",transitionend:"_onTransitionEnd"},observers:["_forceNarrowChanged(forceNarrow, defaultSelected)","_toggleFocusListener(selected)"],ready:function(){this._transition=!0,this._boundFocusListener=this._didFocus.bind(this)},togglePanel:function(){this._isMainSelected()?this.openDrawer():this.closeDrawer()},openDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="drawer"}.bind(this))},closeDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="main"}.bind(this))},_onTransitionEnd:function(e){var t=Polymer.dom(e).localTarget;if(t===this&&("left"!==e.propertyName&&"right"!==e.propertyName||this.notifyResize(),"transform"===e.propertyName&&(requestAnimationFrame(function(){this.toggleClass("transition-drawer",!1,this.$.drawer)}.bind(this)),"drawer"===this.selected))){var i=this._getAutoFocusedNode();i&&i.focus()}},_computeIronSelectorClass:function(t,i,r,n,a){return e({dragging:r,"narrow-layout":t,"right-drawer":n,"left-drawer":!n,transition:i,peeking:a})},_computeDrawerStyle:function(e){return"width:"+e+";"},_computeMainStyle:function(e,t,i){var r="";return r+="left:"+(e||t?"0":i)+";",t&&(r+="right:"+(e?"":i)+";"),r},_computeMediaQuery:function(e,t){return e?"":"(max-width: "+t+")"},_computeSwipeOverlayHidden:function(e,t){return!e||t},_onTrack:function(e){if(!t||this===t)switch(e.detail.state){case"start":this._trackStart(e);break;case"track":this._trackX(e);break;case"end":this._trackEnd(e)}},_responsiveChange:function(e){this._setNarrow(e),this.selected=this.narrow?this.defaultSelected:null,this.setScrollDirection(this._swipeAllowed()?"y":"all"),this.fire("paper-responsive-change",{narrow:this.narrow})},_onQueryMatchesChanged:function(e){this._responsiveChange(e.detail.value)},_forceNarrowChanged:function(){this._responsiveChange(this.forceNarrow||this.$.mq.queryMatches)},_swipeAllowed:function(){return this.narrow&&!this.disableSwipe},_isMainSelected:function(){return"main"===this.selected},_startEdgePeek:function(){this.width=this.$.drawer.offsetWidth,this._moveDrawer(this._translateXForDeltaX(this.rightDrawer?-this.edgeSwipeSensitivity:this.edgeSwipeSensitivity)),this._setPeeking(!0)},_stopEdgePeek:function(){this.peeking&&(this._setPeeking(!1),this._moveDrawer(null))},_downHandler:function(e){!this.dragging&&this._isMainSelected()&&this._isEdgeTouch(e)&&!t&&(this._startEdgePeek(),e.preventDefault(),t=this)},_upHandler:function(){this._stopEdgePeek(),t=null},_onTap:function(e){var t=Polymer.dom(e).localTarget,i=t&&this.drawerToggleAttribute&&t.hasAttribute(this.drawerToggleAttribute);i&&this.togglePanel()},_isEdgeTouch:function(e){var t=e.detail.x;return!this.disableEdgeSwipe&&this._swipeAllowed()&&(this.rightDrawer?t>=this.offsetWidth-this.edgeSwipeSensitivity:t<=this.edgeSwipeSensitivity)},_trackStart:function(e){this._swipeAllowed()&&(t=this,this._setDragging(!0),this._isMainSelected()&&this._setDragging(this.peeking||this._isEdgeTouch(e)),this.dragging&&(this.width=this.$.drawer.offsetWidth,this._transition=!1))},_translateXForDeltaX:function(e){var t=this._isMainSelected();return this.rightDrawer?Math.max(0,t?this.width+e:e):Math.min(0,t?e-this.width:e)},_trackX:function(e){if(this.dragging){var t=e.detail.dx;if(this.peeking){if(Math.abs(t)<=this.edgeSwipeSensitivity)return;this._setPeeking(!1)}this._moveDrawer(this._translateXForDeltaX(t))}},_trackEnd:function(e){if(this.dragging){var i=e.detail.dx>0;this._setDragging(!1),this._transition=!0,t=null,this._moveDrawer(null),this.rightDrawer?this[i?"closeDrawer":"openDrawer"]():this[i?"openDrawer":"closeDrawer"]()}},_transformForTranslateX:function(e){return null===e?"":this.hasWillChange?"translateX("+e+"px)":"translate3d("+e+"px, 0, 0)"},_moveDrawer:function(e){this.transform(this._transformForTranslateX(e),this.$.drawer)},_getDrawerContent:function(){return Polymer.dom(this.$.drawerContent).getDistributedNodes()[0]},_getAutoFocusedNode:function(){var e=this._getDrawerContent();return this.drawerFocusSelector?Polymer.dom(e).querySelector(this.drawerFocusSelector)||e:null},_toggleFocusListener:function(e){"drawer"===e?this.addEventListener("focus",this._boundFocusListener,!0):this.removeEventListener("focus",this._boundFocusListener,!0)},_didFocus:function(e){var t=this._getAutoFocusedNode();if(t){var i=Polymer.dom(e).path,r=(i[0],this._getDrawerContent()),n=i.indexOf(r)!==-1;n||(e.stopPropagation(),t.focus())}},_isDrawerClosed:function(e,t){return!e||"drawer"!==t}})}()</script></dom-module><dom-module id="iron-pages" assetpath="../bower_components/iron-pages/"><template><style>:host{display:block}:host>::content>:not(.iron-selected){display:none!important}</style><content></content></template><script>Polymer({is:"iron-pages",behaviors:[Polymer.IronResizableBehavior,Polymer.IronSelectableBehavior],properties:{activateEvent:{type:String,value:null}},observers:["_selectedPageChanged(selected)"],_selectedPageChanged:function(e,a){this.async(this.notifyResize)}})</script></dom-module><dom-module id="iron-icon" assetpath="../bower_components/iron-icon/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;vertical-align:middle;fill:var(--iron-icon-fill-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);width:var(--iron-icon-width,24px);height:var(--iron-icon-height,24px);@apply(--iron-icon)}</style></template><script>Polymer({is:"iron-icon",properties:{icon:{type:String},theme:{type:String},src:{type:String},_meta:{value:Polymer.Base.create("iron-meta",{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(theme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached)"],_DEFAULT_ICONSET:"icons",_iconChanged:function(t){var i=(t||"").split(":");this._iconName=i.pop(),this._iconsetName=i.pop()||this._DEFAULT_ICONSET,this._updateIcon()},_srcChanged:function(t){this._updateIcon()},_usesIconset:function(){return this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img&&this._img.parentNode&&Polymer.dom(this.root).removeChild(this._img),""===this._iconName?this._iconset&&this._iconset.removeIcon(this):this._iconsetName&&this._meta&&(this._iconset=this._meta.byKey(this._iconsetName),this._iconset?(this._iconset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-iconset-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon"))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=document.createElement("img"),this._img.style.width="100%",this._img.style.height="100%",this._img.draggable=!1),this._img.src=this.src,Polymer.dom(this.root).appendChild(this._img))}})</script></dom-module><dom-module id="paper-icon-button" assetpath="../bower_components/paper-icon-button/"><template strip-whitespace=""><style>:host{display:inline-block;position:relative;padding:8px;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;z-index:0;line-height:1;width:40px;height:40px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;box-sizing:border-box!important;@apply(--paper-icon-button)}:host #ink{color:var(--paper-icon-button-ink-color,--primary-text-color);opacity:.6}:host([disabled]){color:var(--paper-icon-button-disabled-text,--disabled-text-color);pointer-events:none;cursor:auto;@apply(--paper-icon-button-disabled)}:host(:hover){@apply(--paper-icon-button-hover)}iron-icon{--iron-icon-width:100%;--iron-icon-height:100%}</style><iron-icon id="icon" src="[[src]]" icon="[[icon]]" alt$="[[alt]]"></iron-icon></template><script>Polymer({is:"paper-icon-button",hostAttributes:{role:"button",tabindex:"0"},behaviors:[Polymer.PaperInkyFocusBehavior],properties:{src:{type:String},icon:{type:String},alt:{type:String,observer:"_altChanged"}},_altChanged:function(t,e){var r=this.getAttribute("aria-label");r&&e!=r||this.setAttribute("aria-label",t)}})</script></dom-module><script>Polymer.IronMenuBehaviorImpl={properties:{focusedItem:{observer:"_focusedItemChanged",readOnly:!0,type:Object},attrForItemTitle:{type:String}},_SEARCH_RESET_TIMEOUT_MS:1e3,hostAttributes:{role:"menu",tabindex:"0"},observers:["_updateMultiselectable(multi)"],listeners:{focus:"_onFocus",keydown:"_onKeydown","iron-items-changed":"_onIronItemsChanged"},keyBindings:{up:"_onUpKey",down:"_onDownKey",esc:"_onEscKey","shift+tab:keydown":"_onShiftTabDown"},attached:function(){this._resetTabindices()},select:function(e){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null);var t=this._valueToItem(e);t&&t.hasAttribute("disabled")||(this._setFocusedItem(t),Polymer.IronMultiSelectableBehaviorImpl.select.apply(this,arguments))},_resetTabindices:function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this.items.forEach(function(t){t.setAttribute("tabindex",t===e?"0":"-1")},this)},_updateMultiselectable:function(e){e?this.setAttribute("aria-multiselectable","true"):this.removeAttribute("aria-multiselectable")},_focusWithKeyboardEvent:function(e){this.cancelDebouncer("_clearSearchText");var t=this._searchText||"",s=e.key&&1==e.key.length?e.key:String.fromCharCode(e.keyCode);t+=s.toLocaleLowerCase();for(var i,o=t.length,n=0;i=this.items[n];n++)if(!i.hasAttribute("disabled")){var r=this.attrForItemTitle||"textContent",a=(i[r]||i.getAttribute(r)||"").trim();if(!(a.length<o)&&a.slice(0,o).toLocaleLowerCase()==t){this._setFocusedItem(i);break}}this._searchText=t,this.debounce("_clearSearchText",this._clearSearchText,this._SEARCH_RESET_TIMEOUT_MS)},_clearSearchText:function(){this._searchText=""},_focusPrevious:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t-s+e)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_focusNext:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t+s)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_applySelection:function(e,t){t?e.setAttribute("aria-selected","true"):e.removeAttribute("aria-selected"),Polymer.IronSelectableBehavior._applySelection.apply(this,arguments)},_focusedItemChanged:function(e,t){t&&t.setAttribute("tabindex","-1"),e&&(e.setAttribute("tabindex","0"),e.focus())},_onIronItemsChanged:function(e){e.detail.addedNodes.length&&this._resetTabindices()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");Polymer.IronMenuBehaviorImpl._shiftTabPressed=!0,this._setFocusedItem(null),this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1},1)},_onFocus:function(e){if(!Polymer.IronMenuBehaviorImpl._shiftTabPressed){var t=Polymer.dom(e).rootTarget;(t===this||"undefined"==typeof t.tabIndex||this.isLightDescendant(t))&&(this._defaultFocusAsync=this.async(function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this._setFocusedItem(null),e?this._setFocusedItem(e):this.items[0]&&this._focusNext()}))}},_onUpKey:function(e){this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onEscKey:function(e){this.focusedItem.blur()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down esc")||this._focusWithKeyboardEvent(e),e.stopPropagation()},_activateHandler:function(e){Polymer.IronSelectableBehavior._activateHandler.call(this,e),e.stopPropagation()}},Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1,Polymer.IronMenuBehavior=[Polymer.IronMultiSelectableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronMenuBehaviorImpl]</script><script>Polymer.IronMenubarBehaviorImpl={hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrevious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusWithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.IronMenubarBehaviorImpl]</script><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg name="paper-tabs" size="24"><svg><defs><g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g><g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-tab" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-justified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{height:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto);height:100%}</style><div class="tab-content"><content></content></div></template><script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.link){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e.click()}}})</script></dom-module><dom-module id="paper-tabs" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout);@apply(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-reverse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:hidden;@apply(--layout-flex-auto);@apply(--paper-tabs-container)}#tabsContent{height:100%;-moz-flex-basis:auto;-ms-flex-basis:auto;flex-basis:auto;@apply(--paper-tabs-content)}#tabsContent.scrollable{position:absolute;white-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor:default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#selectionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:left center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#selectionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style><paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button><div id="tabsContainer" on-track="_scroll" on-down="_down"><div id="tabsContent" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"><div id="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTransitionEnd"></div><content select="*"></content></div></div><paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button></template><script>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenubarBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancelPendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttribute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAttribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:function(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:function(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_computeSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._tabChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:function(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.async(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){var t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onBlurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){this._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand"),e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains("contract")&&e.remove("contract")}})</script></dom-module><dom-module id="app-header-layout" assetpath="../bower_components/app-layout/app-header-layout/"><template><style>:host{display:block;position:relative;z-index:0}:host>::content>app-header{@apply(--layout-fixed-top);z-index:1}:host([has-scrolling-region]){height:100%}:host([has-scrolling-region])>::content>app-header{position:absolute}:host([has-scrolling-region])>#contentContainer{@apply(--layout-fit);overflow-y:auto;-webkit-overflow-scrolling:touch}:host([fullbleed]){@apply(--layout-vertical);@apply(--layout-fit)}:host([fullbleed])>#contentContainer{@apply(--layout-vertical);@apply(--layout-flex)}#contentContainer{position:relative;z-index:0}</style><content id="header" select="app-header"></content><div id="contentContainer"><content></content></div></template><script>Polymer({is:"app-header-layout",behaviors:[Polymer.IronResizableBehavior],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectToAttribute:!0}},listeners:{"iron-resize":"_resizeHandler","app-header-reset-layout":"_resetLayoutHandler"},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Polymer.dom(this.$.header).getDistributedNodes()[0]},resetLayout:function(){this._updateScroller(),this.debounce("_resetLayout",this._updateContentPosition)},_updateContentPosition:function(){var e=this.header;if(this.isAttached&&e){var t=e.offsetHeight;if(this.hasScrollingRegion)e.style.left="",e.style.right="";else{var i=this.getBoundingClientRect(),o=document.documentElement.clientWidth-i.right;e.style.left=i.left+"px",e.style.right=o+"px"}var n=this.$.contentContainer.style;e.fixed&&!e.willCondense()&&this.hasScrollingRegion?(n.marginTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}},_updateScroller:function(){if(this.isAttached){var e=this.header;e&&(e.scrollTarget=this.hasScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement)}},_resizeHandler:function(){this.resetLayout()},_resetLayoutHandler:function(e){this.resetLayout(),e.stopPropagation()}})</script></dom-module><script>Polymer.IronScrollTargetBehavior={properties:{scrollTarget:{type:Object,value:function(){return this._defaultScrollTarget}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveListener:!0,_scrollTargetChanged:function(t,l){this._oldScrollTarget&&(this._toggleScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),l&&("document"===t?this.scrollTarget=this._doc:"string"==typeof t?this.scrollTarget=this.domHost?this.domHost.$[t]:Polymer.dom(this.ownerDocument).querySelector("#"+t):this._isValidScrollTarget()&&(this._boundScrollHandler=this._boundScrollHandler||this._scrollHandler.bind(this),this._oldScrollTarget=t,this._toggleScrollListener(this._shouldHaveListener,t)))},_scrollHandler:function(){},get _defaultScrollTarget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},get _scrollTop(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageYOffset:this.scrollTarget.scrollTop:0},get _scrollLeft(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageXOffset:this.scrollTarget.scrollLeft:0},set _scrollTop(t){this.scrollTarget===this._doc?window.scrollTo(window.pageXOffset,t):this._isValidScrollTarget()&&(this.scrollTarget.scrollTop=t)},set _scrollLeft(t){this.scrollTarget===this._doc?window.scrollTo(t,window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t)},scroll:function(t,l){this.scrollTarget===this._doc?window.scrollTo(t,l):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t,this.scrollTarget.scrollTop=l)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scrollTargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:function(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:function(t,l){if(this._boundScrollHandler){var e=l===this._doc?window:l;t?e.addEventListener("scroll",this._boundScrollHandler):e.removeEventListener("scroll",this._boundScrollHandler)}},toggleScrollListener:function(t){this._shouldHaveListener=t,this._toggleScrollListener(t,this.scrollTarget)}}</script><script>Polymer.AppLayout=Polymer.AppLayout||{},Polymer.AppLayout._scrollEffects=Polymer.AppLayout._scrollEffects||{},Polymer.AppLayout.scrollTimingFunction=function(o,l,e,r){return o/=r,-e*o*(o-2)+l},Polymer.AppLayout.registerEffect=function(o,l){if(null!=Polymer.AppLayout._scrollEffects[o])throw new Error("effect `"+o+"` is already registered.");Polymer.AppLayout._scrollEffects[o]=l},Polymer.AppLayout.scroll=function(o){o=o||{};var l=document.documentElement,e=o.target||l,r="scrollBehavior"in e.style&&e.scroll,t="app-layout-silent-scroll",s=o.top||0,c=o.left||0,i=e===l?window.scrollTo:function(o,l){e.scrollLeft=o,e.scrollTop=l};if("smooth"===o.behavior)if(r)e.scroll(o);else{var n=Polymer.AppLayout.scrollTimingFunction,a=Date.now(),p=e===l?window.pageYOffset:e.scrollTop,u=e===l?window.pageXOffset:e.scrollLeft,y=s-p,f=c-u,m=300,L=function o(){var l=Date.now(),e=l-a;e<m?(i(n(e,u,f,m),n(e,p,y,m)),requestAnimationFrame(o)):i(c,s)}.bind(this);L()}else"silent"===o.behavior?(l.classList.add(t),clearInterval(Polymer.AppLayout._scrollTimer),Polymer.AppLayout._scrollTimer=setTimeout(function(){l.classList.remove(t),Polymer.AppLayout._scrollTimer=null},100),i(c,s)):i(c,s)}</script><script>Polymer.AppScrollEffectsBehavior=[Polymer.IronScrollTargetBehavior,{properties:{effects:{type:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{type:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresholdTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observers:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:function(){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._scrollTop)},detached:function(){this._tearDownEffects()},createEffect:function(t,e){var n=Polymer.AppLayout._scrollEffects[t];if(!n)throw new ReferenceError(this._getUndefinedMsg(t));var f=this._boundEffect(n,e||{});return f.setUp(),f},_effectsChanged:function(t,e,n){this._tearDownEffects(),""!==t&&n&&(t.split(" ").forEach(function(t){var n;""!==t&&((n=Polymer.AppLayout._scrollEffects[t])?this._effects.push(this._boundEffect(n,e[t])):console.warn(this._getUndefinedMsg(t)))},this),this._setUpEffect())},_layoutIfDirty:function(){return this.offsetWidth},_boundEffect:function(t,e){e=e||{};var n=parseFloat(e.startsAt||0),f=parseFloat(e.endsAt||1),s=f-n,r=function(){},o=0===n&&1===f?t.run:function(e,f){t.run.call(this,Math.max(0,(e-n)/s),f)};return{setUp:t.setUp?t.setUp.bind(this,e):r,run:t.run?o.bind(this):r,tearDown:t.tearDown?t.tearDown.bind(this):r}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effectsRunFn=[],this._effects.forEach(function(t){t.setUp()!==!1&&this._effectsRunFn.push(t.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forEach(function(t){t.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffects:function(t,e){this._effectsRunFn&&this._effectsRunFn.forEach(function(n){n(t,e)})},_scrollHandler:function(){if(!this.disabled){var t=this._clampedScrollTop;this._updateScrollState(t),this.threshold>0&&this._setThresholdTriggered(t>=this.threshold)}},_getDOMRef:function(t){console.warn("_getDOMRef","`"+t+"` is undefined")},_getUndefinedMsg:function(t){return"Scroll effect `"+t+"` is undefined. Did you forget to import app-layout/app-scroll-effects/effects/"+t+".html ?"}}]</script><script>Polymer.AppLayout.registerEffect("waterfall",{run:function(){this.shadow=this.isOnScreen()&&this.isContentBelow()}})</script><dom-module id="app-header" assetpath="../bower_components/app-layout/app-header/"><template><style>:host{position:relative;display:block;transition-timing-function:linear;transition-property:-webkit-transform;transition-property:transform}:host::after{position:absolute;right:0;bottom:-5px;left:0;width:100%;height:5px;content:"";transition:opacity .4s;pointer-events:none;opacity:0;box-shadow:inset 0 5px 6px -3px rgba(0,0,0,.4);will-change:opacity;@apply(--app-header-shadow)}:host([shadow])::after{opacity:1}::content [condensed-title],::content [main-title]{-webkit-transform-origin:left top;transform-origin:left top;white-space:nowrap}::content [condensed-title]{opacity:0}#background{@apply(--layout-fit);overflow:hidden}#backgroundFrontLayer,#backgroundRearLayer{@apply(--layout-fit);height:100%;pointer-events:none;background-size:cover}#backgroundFrontLayer{@apply(--app-header-background-front-layer)}#backgroundRearLayer{opacity:0;@apply(--app-header-background-rear-layer)}#contentContainer{position:relative;width:100%;height:100%}:host([disabled]),:host([disabled]) #backgroundFrontLayer,:host([disabled]) #backgroundRearLayer,:host([disabled]) ::content>[sticky],:host([disabled]) ::content>app-toolbar:first-of-type,:host([disabled])::after,:host-context(.app-layout-silent-scroll),:host-context(.app-layout-silent-scroll) #backgroundFrontLayer,:host-context(.app-layout-silent-scroll) #backgroundRearLayer,:host-context(.app-layout-silent-scroll) ::content>[sticky],:host-context(.app-layout-silent-scroll) ::content>app-toolbar:first-of-type,:host-context(.app-layout-silent-scroll)::after{transition:none!important}</style><div id="contentContainer"><content id="content"></content></div></template><script>Polymer({is:"app-header",behaviors:[Polymer.AppScrollEffectsBehavior,Polymer.IronResizableBehavior],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Boolean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAttribute:!0,value:!1}},observers:["resetLayout(isAttached, condenses, fixed)"],listeners:{"iron-resize":"_resizeHandler"},_height:0,_dHeight:0,_stickyElTop:0,_stickyEl:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimestamp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?this._dHeight:this._height+5},_getStickyEl:function(){for(var t,e=Polymer.dom(this.$.content).getDistributedNodes(),i=0;i<e.length;i++)if(e[i].nodeType===Node.ELEMENT_NODE){var s=e[i];if(s.hasAttribute("sticky")){t=s;break}t||(t=s)}return t},resetLayout:function(){this.debounce("_resetLayout",function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._clampedScrollTop,e=0===this._height||0===t,i=this.disabled;this._height=this.offsetHeight,this._stickyEl=this._getStickyEl(),this.disabled=!0,e||this._updateScrollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._stickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._stickyEl.offsetTop:0,this._setUpEffect(),e?this._updateScrollState(t,!0):(this._updateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=i,this.fire("app-header-reset-layout")}})},_updateScrollState:function(t,e){if(0!==this._height){var i=0,s=0,o=this._top,r=(this._lastScrollTop,this._maxHeaderTop),h=t-this._lastScrollTop,n=Math.abs(h),a=t>this._lastScrollTop,l=Date.now();if(this._mayMove()&&(s=this._clamp(this.reveals?o+h:t,0,r)),t>=this._dHeight&&(s=this.condenses&&!this.fixed?Math.max(this._dHeight,s):s,this.style.transitionDuration="0ms"),this.reveals&&!this.disabled&&n<100&&((l-this._initTimestamp>300||this._wasScrollingDown!==a)&&(this._initScrollTop=t,this._initTimestamp=l),t>=r))if(Math.abs(this._initScrollTop-t)>30||n>10){a&&t>=r?s=r:!a&&t>=this._dHeight&&(s=this.condenses&&!this.fixed?this._dHeight:0);var _=h/(l-this._lastTimestamp);this.style.transitionDuration=this._clamp((s-o)/_,0,300)+"ms"}else s=this._top;i=0===this._dHeight?t>0?1:0:s/this._dHeight,e||(this._lastScrollTop=t,this._top=s,this._wasScrollingDown=a,this._lastTimestamp=l),(e||i!==this._progress||o!==s||0===t)&&(this._progress=i,this._runEffects(i,s),this._transformHeader(s))}},_mayMove:function(){return this.condenses||!this.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnScreen:function(){return 0!==this._height&&this._top<this._height},isContentBelow:function(){return 0===this._top?this._clampedScrollTop>0:this._clampedScrollTop-this._maxHeaderTop>=0},_transformHeader:function(t){this.translate3d(0,-t+"px",0),this._stickyEl&&this.translate3d(0,this.condenses&&t>=this._stickyElTop?Math.min(t,this._dHeight)-this._stickyElTop+"px":0,0,this._stickyEl)},_resizeHandler:function(){this.resetLayout()},_clamp:function(t,e,i){return Math.min(i,Math.max(e,t))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=document.createElement("div"),this._bgContainer.id="background",this._bgRear=document.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.appendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFront.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Polymer.dom(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getDOMRef:function(t){switch(t){case"backgroundFrontLayer":return this._ensureBgContainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers(),this._bgRear;case"background":return this._ensureBgContainers(),this._bgContainer;case"mainTitle":return Polymer.dom(this).querySelector("[main-title]");case"condensedTitle":return Polymer.dom(this).querySelector("[condensed-title]")}return null},getScrollState:function(){return{progress:this._progress,top:this._top}}})</script></dom-module><dom-module id="app-toolbar" assetpath="../bower_components/app-layout/app-toolbar/"><template><style>:host{@apply(--layout-horizontal);@apply(--layout-center);position:relative;height:64px;padding:0 16px;pointer-events:none;font-size:var(--app-toolbar-font-size,20px)}::content>*{pointer-events:auto}::content>paper-icon-button{font-size:0}::content>[condensed-title],::content>[main-title]{pointer-events:none;@apply(--layout-flex)}::content>[bottom-item]{position:absolute;right:0;bottom:0;left:0}::content>[top-item]{position:absolute;top:0;right:0;left:0}::content>[spacer]{margin-left:64px}</style><content></content></template><script>Polymer({is:"app-toolbar"})</script></dom-module><dom-module id="ha-menu-button" assetpath="components/"><template><style>.invisible{visibility:hidden}</style><paper-icon-button icon="mdi:menu" class$="[[computeMenuButtonClass(narrow, showMenu)]]" on-tap="toggleMenu"></paper-icon-button></template></dom-module><script>Polymer({is:"ha-menu-button",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1}},computeMenuButtonClass:function(e,n){return!e&&n?"invisible":""},toggleMenu:function(){this.fire("open-menu")}})</script><dom-module id="ha-label-badge" assetpath="/"><template><style>.badge-container{display:inline-block;text-align:center;vertical-align:top;margin-bottom:16px}.label-badge{position:relative;display:block;margin:0 auto;width:2.5em;text-align:center;height:2.5em;line-height:2.5em;font-size:1.5em;border-radius:50%;border:.1em solid var(--ha-label-badge-color,--default-primary-color);color:#4c4c4c;white-space:nowrap;background-color:#fff;background-size:cover;transition:border .3s ease-in-out}.label-badge .value{font-size:90%;overflow:hidden;text-overflow:ellipsis}.label-badge .value.big{font-size:70%}.label-badge .label{position:absolute;bottom:-1em;left:0;right:0;line-height:1em;font-size:.5em}.label-badge .label span{max-width:80%;display:inline-block;background-color:var(--ha-label-badge-color,--default-primary-color);color:#fff;border-radius:1em;padding:4px 8px;font-weight:500;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;transition:background-color .3s ease-in-out}.badge-container .title{margin-top:1em;font-size:.9em;width:5em;font-weight:300;overflow:hidden;text-overflow:ellipsis;line-height:normal}iron-image{border-radius:50%}[hidden]{display:none!important}</style><div class="badge-container"><div class="label-badge" id="badge"><div class$="[[computeClasses(value)]]"><iron-icon icon="[[icon]]" hidden$="[[computeHideIcon(icon, value, image)]]"></iron-icon><span hidden$="[[computeHideValue(value, image)]]">[[value]]</span></div><div class="label" hidden$="[[!label]]"><span>[[label]]</span></div></div><div class="title">[[description]]</div></div></template></dom-module><script>Polymer({is:"ha-label-badge",properties:{value:{type:String,value:null},icon:{type:String,value:null},label:{type:String,value:null},description:{type:String},image:{type:String,value:null,observer:"imageChanged"}},computeClasses:function(e){return e&&e.length>4?"value big":"value"},computeHideIcon:function(e,n,l){return!e||n||l},computeHideValue:function(e,n){return!e||n},imageChanged:function(e){this.$.badge.style.backgroundImage=e?"url("+e+")":""}})</script><dom-module id="ha-demo-badge" assetpath="components/"><template><style>:host{--ha-label-badge-color:#dac90d}</style><ha-label-badge icon="mdi:emoticon" label="Demo" description=""></ha-label-badge></template></dom-module><script>Polymer({is:"ha-demo-badge"})</script><dom-module id="ha-state-label-badge" assetpath="components/entity/"><template><style>:host{cursor:pointer}ha-label-badge{--ha-label-badge-color:rgb(223, 76, 30)}.blue{--ha-label-badge-color:#039be5}.green{--ha-label-badge-color:#0DA035}.grey{--ha-label-badge-color:var(--paper-grey-500)}</style><ha-label-badge class$="[[computeClasses(state)]]" value="[[computeValue(state)]]" icon="[[computeIcon(state)]]" image="[[computeImage(state)]]" label="[[computeLabel(state)]]" description="[[computeDescription(state)]]"></ha-label-badge></template></dom-module><script>Polymer({is:"ha-state-label-badge",properties:{hass:{type:Object},state:{type:Object,observer:"stateChanged"}},listeners:{tap:"badgeTap"},badgeTap:function(e){e.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.state.entityId)},1)},computeClasses:function(e){switch(e.domain){case"binary_sensor":case"updater":return"blue";default:return""}},computeValue:function(e){switch(e.domain){case"binary_sensor":case"device_tracker":case"updater":case"sun":case"alarm_control_panel":return null;case"sensor":default:return"unknown"===e.state?"-":e.state}},computeIcon:function(e){if("unavailable"===e.state)return null;switch(e.domain){case"alarm_control_panel":return"pending"===e.state?"mdi:clock-fast":"armed_away"===e.state?"mdi:nature":"armed_home"===e.state?"mdi:home-variant":"triggered"===e.state?"mdi:alert-circle":window.hassUtil.domainIcon(e.domain,e.state);case"binary_sensor":case"device_tracker":case"updater":return window.hassUtil.stateIcon(e);case"sun":return"above_horizon"===e.state?window.hassUtil.domainIcon(e.domain):"mdi:brightness-3";default:return null}},computeImage:function(e){return e.attributes.entity_picture||null},computeLabel:function(e){if("unavailable"===e.state)return"unavai";switch(e.domain){case"device_tracker":return"not_home"===e.state?"Away":e.state;case"alarm_control_panel":return"pending"===e.state?"pend":"armed_away"===e.state||"armed_home"===e.state?"armed":"triggered"===e.state?"trig":"disarm";default:return e.attributes.unit_of_measurement||null}},computeDescription:function(e){return e.entityDisplay},stateChanged:function(){this.updateStyles()}})</script><dom-module id="ha-badges-card" assetpath="cards/"><template><template is="dom-repeat" items="[[states]]"><ha-state-label-badge hass="[[hass]]" state="[[item]]"></ha-state-label-badge></template></template></dom-module><script>Polymer({is:"ha-badges-card",properties:{hass:{type:Object},states:{type:Array}}})</script><dom-module id="paper-material" assetpath="../bower_components/paper-material/"><template><style include="paper-material-shared-styles"></style><style>:host([animated]){@apply(--shadow-transition)}</style><content></content></template></dom-module><script>Polymer({is:"paper-material",properties:{elevation:{type:Number,reflectToAttribute:!0,value:1},animated:{type:Boolean,reflectToAttribute:!0,value:!1}}})</script><dom-module id="ha-camera-card" assetpath="cards/"><template><style include="paper-material">:host{display:block;position:relative;font-size:0;border-radius:2px;cursor:pointer;min-height:48px;line-height:0}.camera-feed{width:100%;height:auto;border-radius:2px}.caption{@apply(--paper-font-common-nowrap);position:absolute;left:0;right:0;bottom:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:rgba(0,0,0,.3);padding:16px;font-size:16px;font-weight:500;line-height:16px;color:#fff}</style><img src="[[cameraFeedSrc]]" class="camera-feed" hidden$="[[!imageLoaded]]" on-load="imageLoadSuccess" on-error="imageLoadFail" alt="[[stateObj.entityDisplay]]"><div class="caption">[[stateObj.entityDisplay]]<template is="dom-if" if="[[!imageLoaded]]">(Error loading image)</template></div></template></dom-module><script>Polymer({is:"ha-camera-card",UPDATE_INTERVAL:1e4,properties:{hass:{type:Object},stateObj:{type:Object,observer:"updateCameraFeedSrc"},cameraFeedSrc:{type:String},imageLoaded:{type:Boolean,value:!0},elevation:{type:Number,value:1,reflectToAttribute:!0}},listeners:{tap:"cardTapped"},attached:function(){this.timer=setInterval(function(){this.updateCameraFeedSrc(this.stateObj)}.bind(this),this.UPDATE_INTERVAL)},detached:function(){clearInterval(this.timer)},cardTapped:function(){this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)}.bind(this),1)},updateCameraFeedSrc:function(e){const t=e.attributes,a=(new Date).getTime();this.cameraFeedSrc=t.entity_picture+"&time="+a},imageLoadSuccess:function(){this.imageLoaded=!0},imageLoadFail:function(){this.imageLoaded=!1}})</script><dom-module id="ha-card" assetpath="/"><template><style include="paper-material">:host{display:block;border-radius:2px;transition:all .3s ease-out;background-color:#fff}.header{@apply(--paper-font-headline);@apply(--paper-font-common-expensive-kerning);opacity:var(--dark-primary-opacity);padding:24px 16px 16px;text-transform:capitalize}</style><template is="dom-if" if="[[header]]"><div class="header">[[header]]</div></template><slot></slot></template></dom-module><script>Polymer({is:"ha-card",properties:{header:{type:String},elevation:{type:Number,value:1,reflectToAttribute:!0}}})</script><dom-module id="paper-toggle-button" assetpath="../bower_components/paper-toggle-button/"><template strip-whitespace=""><style>:host{display:inline-block;@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-common-base)}:host([disabled]){pointer-events:none}:host(:focus){outline:0}.toggle-bar{position:absolute;height:100%;width:100%;border-radius:8px;pointer-events:none;opacity:.4;transition:background-color linear .08s;background-color:var(--paper-toggle-button-unchecked-bar-color,#000);@apply(--paper-toggle-button-unchecked-bar)}.toggle-button{position:absolute;top:-3px;left:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 5px 0 rgba(0,0,0,.6);transition:-webkit-transform linear .08s,background-color linear .08s;transition:transform linear .08s,background-color linear .08s;will-change:transform;background-color:var(--paper-toggle-button-unchecked-button-color,--paper-grey-50);@apply(--paper-toggle-button-unchecked-button)}.toggle-button.dragging{-webkit-transition:none;transition:none}:host([checked]:not([disabled])) .toggle-bar{opacity:.5;background-color:var(--paper-toggle-button-checked-bar-color,--primary-color);@apply(--paper-toggle-button-checked-bar)}:host([disabled]) .toggle-bar{background-color:#000;opacity:.12}:host([checked]) .toggle-button{-webkit-transform:translate(16px,0);transform:translate(16px,0)}:host([checked]:not([disabled])) .toggle-button{background-color:var(--paper-toggle-button-checked-button-color,--primary-color);@apply(--paper-toggle-button-checked-button)}:host([disabled]) .toggle-button{background-color:#bdbdbd;opacity:1}.toggle-ink{position:absolute;top:-14px;left:-14px;right:auto;bottom:auto;width:48px;height:48px;opacity:.5;pointer-events:none;color:var(--paper-toggle-button-unchecked-ink-color,--primary-text-color)}:host([checked]) .toggle-ink{color:var(--paper-toggle-button-checked-ink-color,--primary-color)}.toggle-container{display:inline-block;position:relative;width:36px;height:14px;margin:4px 1px}.toggle-label{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-toggle-button-label-spacing,8px);pointer-events:none;color:var(--paper-toggle-button-label-color,--primary-text-color)}:host([invalid]) .toggle-bar{background-color:var(--paper-toggle-button-invalid-bar-color,--error-color)}:host([invalid]) .toggle-button{background-color:var(--paper-toggle-button-invalid-button-color,--error-color)}:host([invalid]) .toggle-ink{color:var(--paper-toggle-button-invalid-ink-color,--error-color)}</style><div class="toggle-container"><div id="toggleBar" class="toggle-bar"></div><div id="toggleButton" class="toggle-button"></div></div><div class="toggle-label"><content></content></div></template><script>Polymer({is:"paper-toggle-button",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"button","aria-pressed":"false",tabindex:0},properties:{},listeners:{track:"_ontrack"},attached:function(){Polymer.RenderStatus.afterNextRender(this,function(){this.setScrollDirection("y")})},_ontrack:function(t){var e=t.detail;"start"===e.state?this._trackStart(e):"track"===e.state?this._trackMove(e):"end"===e.state&&this._trackEnd(e)},_trackStart:function(t){this._width=this.$.toggleBar.offsetWidth/2,this._trackChecked=this.checked,this.$.toggleButton.classList.add("dragging")},_trackMove:function(t){var e=t.dx;this._x=Math.min(this._width,Math.max(0,this._trackChecked?this._width+e:e)),this.translate3d(this._x+"px",0,0,this.$.toggleButton),this._userActivate(this._x>this._width/2)},_trackEnd:function(t){this.$.toggleButton.classList.remove("dragging"),this.transform("",this.$.toggleButton)},_createRipple:function(){this._rippleContainer=this.$.toggleButton;var t=Polymer.PaperRippleBehavior._createRipple();return t.id="ink",t.setAttribute("recenters",""),t.classList.add("circle","toggle-ink"),t}})</script></dom-module><dom-module id="ha-entity-toggle" assetpath="components/entity/"><template><style>:host{white-space:nowrap}paper-icon-button{color:var(--primary-text-color);transition:color .5s}paper-icon-button[state-active]{color:var(--default-primary-color)}paper-toggle-button{cursor:pointer;--paper-toggle-button-label-spacing:0;padding:9px 0}</style><template is="dom-if" if="[[stateObj.attributes.assumed_state]]"><paper-icon-button icon="mdi:flash-off" on-tap="turnOff" state-active$="[[!isOn]]"></paper-icon-button><paper-icon-button icon="mdi:flash" on-tap="turnOn" state-active$="[[isOn]]"></paper-icon-button></template><template is="dom-if" if="[[!stateObj.attributes.assumed_state]]"><paper-toggle-button class="self-center" checked="[[toggleChecked]]" on-change="toggleChanged"></paper-toggle-button></template></template></dom-module><script>Polymer({is:"ha-entity-toggle",properties:{hass:{type:Object},stateObj:{type:Object},toggleChecked:{type:Boolean,value:!1},isOn:{type:Boolean,computed:"computeIsOn(stateObj)",observer:"isOnChanged"}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation()},ready:function(){this.forceStateChange()},toggleChanged:function(t){var e=t.target.checked;e&&!this.isOn?this.callService(!0):!e&&this.isOn&&this.callService(!1)},isOnChanged:function(t){this.toggleChecked=t},forceStateChange:function(){this.toggleChecked===this.isOn&&(this.toggleChecked=!this.toggleChecked),this.toggleChecked=this.isOn},turnOn:function(){this.callService(!0)},turnOff:function(){this.callService(!1)},computeIsOn:function(t){return t&&window.hassUtil.OFF_STATES.indexOf(t.state)===-1},callService:function(t){var e,i,n;"lock"===this.stateObj.domain?(e="lock",i=t?"lock":"unlock"):"garage_door"===this.stateObj.domain?(e="garage_door",i=t?"open":"close"):(e="homeassistant",i=t?"turn_on":"turn_off"),n=this.stateObj,this.hass.serviceActions.callService(e,i,{entity_id:this.stateObj.entityId}).then(function(){setTimeout(function(){this.stateObj===n&&this.forceStateChange()}.bind(this),2e3)}.bind(this))}})</script><dom-module id="ha-state-icon" assetpath="/"><template><iron-icon icon="[[computeIcon(stateObj)]]"></iron-icon></template></dom-module><script>Polymer({is:"ha-state-icon",properties:{stateObj:{type:Object}},computeIcon:function(t){return window.hassUtil.stateIcon(t)}})</script><dom-module id="state-badge" assetpath="components/entity/"><template><style>:host{position:relative;display:inline-block;width:40px;color:#44739E;border-radius:50%;height:40px;text-align:center;background-size:cover;line-height:40px}ha-state-icon{transition:color .3s ease-in-out}ha-state-icon[data-domain=binary_sensor][data-state=on],ha-state-icon[data-domain=light][data-state=on],ha-state-icon[data-domain=sun][data-state=above_horizon],ha-state-icon[data-domain=switch][data-state=on]{color:#FDD835}ha-state-icon[data-state=unavailable]{color:var(--disabled-text-color)}</style><ha-state-icon id="icon" state-obj="[[stateObj]]" data-domain$="[[stateObj.domain]]" data-state$="[[stateObj.state]]"></ha-state-icon></template></dom-module><script>Polymer({is:"state-badge",properties:{stateObj:{type:Object,observer:"updateIconColor"}},updateIconColor:function(t){return t.attributes.entity_picture?(this.style.backgroundImage="url("+t.attributes.entity_picture+")",void(this.$.icon.style.display="none")):(this.style.backgroundImage="",this.$.icon.style.display="inline",void("light"===t.domain&&"on"===t.state&&t.attributes.rgb_color&&t.attributes.rgb_color.reduce(function(t,e){return t+e},0)<730?this.$.icon.style.color="rgb("+t.attributes.rgb_color.join(",")+")":this.$.icon.style.color=null))}})</script><script>Polymer({is:"ha-relative-time",properties:{datetime:{type:String,observer:"datetimeChanged"},datetimeObj:{type:Object,observer:"datetimeObjChanged"},parsedDateTime:{type:Object}},created:function(){this.updateRelative=this.updateRelative.bind(this)},attached:function(){this.updateInterval=setInterval(this.updateRelative,6e4)},detached:function(){clearInterval(this.updateInterval)},datetimeChanged:function(e){this.parsedDateTime=e?new Date(e):null,this.updateRelative()},datetimeObjChanged:function(e){this.parsedDateTime=e,this.updateRelative()},updateRelative:function(){var e=Polymer.dom(this);e.innerHTML=this.parsedDateTime?window.hassUtil.relativeTime(this.parsedDateTime):"never"}})</script><dom-module id="state-info" assetpath="components/entity/"><template><style>:host{@apply(--paper-font-body1);min-width:150px;white-space:nowrap}state-badge{float:left}.info{margin-left:56px}.name{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);line-height:40px}.name[in-dialog]{line-height:20px}.time-ago{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div><state-badge state-obj="[[stateObj]]"></state-badge><div class="info"><div class="name" in-dialog$="[[inDialog]]">[[stateObj.entityDisplay]]</div><template is="dom-if" if="[[inDialog]]"><div class="time-ago"><ha-relative-time datetime-obj="[[stateObj.lastChangedAsDate]]"></ha-relative-time></div></template></div></div></template></dom-module><script>Polymer({is:"state-info",properties:{detailed:{type:Boolean,value:!1},stateObj:{type:Object},inDialog:{type:Boolean}}})</script><dom-module id="state-card-climate" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{@apply(--paper-font-body1);line-height:1.5}.state{margin-left:16px;text-align:right}.target{color:var(--primary-text-color)}.current{color:var(--secondary-text-color)}.operation-mode{font-weight:700;text-transform:capitalize}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="target"><span class="operation-mode">[[stateObj.attributes.operation_mode]] </span><span>[[computeTargetTemperature(stateObj)]]</span></div><div class="current"><span>Currently: </span><span>[[stateObj.attributes.current_temperature]]</span> <span></span> <span>[[stateObj.attributes.unit_of_measurement]]</span></div></div></div></template></dom-module><script>Polymer({is:"state-card-climate",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeTargetTemperature:function(t){var e="";return t.attributes.target_temp_low&&t.attributes.target_temp_high?e=t.attributes.target_temp_low+" - "+t.attributes.target_temp_high+" "+t.attributes.unit_of_measurement:t.attributes.temperature&&(e=t.attributes.temperature+" "+t.attributes.unit_of_measurement),e}})</script><dom-module id="state-card-configurator" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button hidden$="[[inDialog]]">[[stateObj.state]]</paper-button></div><template is="dom-if" if="[[stateObj.attributes.description_image]]"><img hidden="" src="[[stateObj.attributes.description_image]]"></template></template></dom-module><script>Polymer({is:"state-card-configurator",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-cover" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{text-align:right;white-space:nowrap;width:127px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><paper-icon-button icon="mdi:arrow-up" on-tap="onOpenTap" disabled="[[computeIsFullyOpen(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTap"></paper-icon-button><paper-icon-button icon="mdi:arrow-down" on-tap="onCloseTap" disabled="[[computeIsFullyClosed(stateObj)]]"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"state-card-cover",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeIsFullyOpen:function(t){return void 0!==t.attributes.current_position?100===t.attributes.current_position:"open"===t.state},computeIsFullyClosed:function(t){return void 0!==t.attributes.current_position?0===t.attributes.current_position:"closed"===t.state},onOpenTap:function(){this.hass.serviceActions.callService("cover","open_cover",{entity_id:this.stateObj.entityId})},onCloseTap:function(){this.hass.serviceActions.callService("cover","close_cover",{entity_id:this.stateObj.entityId})},onStopTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="state-card-display" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.state{@apply(--paper-font-body1);color:var(--primary-text-color);margin-left:16px;text-align:right;line-height:40px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state">[[stateObj.stateDisplay]]</div></div></template></dom-module><script>Polymer({is:"state-card-display",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><dom-module id="paper-input-char-counter" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-input" assetpath="../bower_components/paper-input/"><template><style>:host{display:block}:host([focused]){outline:0}:host([hidden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}label{pointer-events:none}</style><paper-input-container no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><content select="[prefix]"></content><label hidden$="[[!label]]" aria-hidden="true" for="input">[[label]]</label><input is="iron-input" id="input" aria-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" disabled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" required$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" autocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onChange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"><content select="[suffix]"></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error aria-live="assertive">[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBehavior]})</script><script>Polymer.IronFitBehavior={properties:{sizingTarget:{type:Object,value:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type:Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAlign:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{type:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){var t;return t=this.fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().width},get _fitHeight(){var t;return t=this.fitInto===window?this.fitInto.innerHeight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().top},get _defaultPositionTarget(){var t=Polymer.dom(this).parentNode;return t&&t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(t=t.host),t},get _localeHorizontalAlign(){if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this.horizontalAlign)return"right"}return this.horizontalAlign},attached:function(){this._isRTL="rtl"==window.getComputedStyle(this).direction,this.positionTarget=this.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"===window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(this)):this.fit())},fit:function(){this.position(),this.constrain(),this.center()},_discoverInfo:function(){if(!this._fitInfo){var t=window.getComputedStyle(this),i=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:this.style.top||"",left:this.style.left||"",position:this.style.position||""},sizerInlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizingTarget.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},positionedBy:{vertically:"auto"!==t.top?"top":"auto"!==t.bottom?"bottom":null,horizontally:"auto"!==t.left?"left":"auto"!==t.right?"right":null},sizedBy:{height:"none"!==i.maxHeight,width:"none"!==i.maxWidth,minWidth:parseInt(i.minWidth,10)||0,minHeight:parseInt(i.minHeight,10)||0},margin:{top:parseInt(t.marginTop,10)||0,right:parseInt(t.marginRight,10)||0,bottom:parseInt(t.marginBottom,10)||0,left:parseInt(t.marginLeft,10)||0}},this.verticalOffset&&(this._fitInfo.margin.top=this._fitInfo.margin.bottom=this.verticalOffset,this._fitInfo.inlineStyle.marginTop=this.style.marginTop||"",this._fitInfo.inlineStyle.marginBottom=this.style.marginBottom||"",this.style.marginTop=this.style.marginBottom=this.verticalOffset+"px"),this.horizontalOffset&&(this._fitInfo.margin.left=this._fitInfo.margin.right=this.horizontalOffset,this._fitInfo.inlineStyle.marginLeft=this.style.marginLeft||"",this._fitInfo.inlineStyle.marginRight=this.style.marginRight||"",this.style.marginLeft=this.style.marginRight=this.horizontalOffset+"px")}},resetFit:function(){var t=this._fitInfo||{};for(var i in t.sizerInlineStyle)this.sizingTarget.style[i]=t.sizerInlineStyle[i];for(var i in t.inlineStyle)this.style[i]=t.inlineStyle[i];this._fitInfo=null},refit:function(){var t=this.sizingTarget.scrollLeft,i=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrollLeft=t,this.sizingTarget.scrollTop=i},position:function(){if(this.horizontalAlign||this.verticalAlign){this._discoverInfo(),this.style.position="fixed",this.sizingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0px";var t=this.getBoundingClientRect(),i=this.__getNormalizedRect(this.positionTarget),e=this.__getNormalizedRect(this.fitInto),n=this._fitInfo.margin,o={width:t.width+n.left+n.right,height:t.height+n.top+n.bottom},h=this.__getPosition(this._localeHorizontalAlign,this.verticalAlign,o,i,e),s=h.left+n.left,l=h.top+n.top,r=Math.min(e.right-n.right,s+t.width),a=Math.min(e.bottom-n.bottom,l+t.height),g=this._fitInfo.sizedBy.minWidth,f=this._fitInfo.sizedBy.minHeight;s<n.left&&(s=n.left,r-s<g&&(s=r-g)),l<n.top&&(l=n.top,a-l<f&&(l=a-f)),this.sizingTarget.style.maxWidth=r-s+"px",this.sizingTarget.style.maxHeight=a-l+"px",this.style.left=s-t.left+"px",this.style.top=l-t.top+"px"}},constrain:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo;t.positionedBy.vertically||(this.style.position="fixed",this.style.top="0px"),t.positionedBy.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingTarget.style.boxSizing="border-box";var i=this.getBoundingClientRect();t.sizedBy.height||this.__sizeDimension(i,t.positionedBy.vertically,"top","bottom","Height"),t.sizedBy.width||this.__sizeDimension(i,t.positionedBy.horizontally,"left","right","Width")}},_sizeDimension:function(t,i,e,n,o){this.__sizeDimension(t,i,e,n,o)},__sizeDimension:function(t,i,e,n,o){var h=this._fitInfo,s=this.__getNormalizedRect(this.fitInto),l="Width"===o?s.width:s.height,r=i===n,a=r?l-t[n]:t[e],g=h.margin[r?e:n],f="offset"+o,p=this[f]-this.sizingTarget[f];this.sizingTarget.style["max"+o]=l-g-a-p+"px"},center:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo.positionedBy;if(!t.vertically||!t.horizontally){this.style.position="fixed",t.vertically||(this.style.top="0px"),t.horizontally||(this.style.left="0px");var i=this.getBoundingClientRect(),e=this.__getNormalizedRect(this.fitInto);if(!t.vertically){var n=e.top-i.top+(e.height-i.height)/2;this.style.top=n+"px"}if(!t.horizontally){var o=e.left-i.left+(e.width-i.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(t){return t===document.documentElement||t===window?{top:0,left:0,width:window.innerWidth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight}:t.getBoundingClientRect()},__getCroppedArea:function(t,i,e){var n=Math.min(0,t.top)+Math.min(0,e.bottom-(t.top+i.height)),o=Math.min(0,t.left)+Math.min(0,e.right-(t.left+i.width));return Math.abs(n)*i.width+Math.abs(o)*i.height},__getPosition:function(t,i,e,n,o){var h=[{verticalAlign:"top",horizontalAlign:"left",top:n.top,left:n.left},{verticalAlign:"top",horizontalAlign:"right",top:n.top,left:n.right-e.width},{verticalAlign:"bottom",horizontalAlign:"left",top:n.bottom-e.height,left:n.left},{verticalAlign:"bottom",horizontalAlign:"right",top:n.bottom-e.height,left:n.right-e.width}];if(this.noOverlap){for(var s=0,l=h.length;s<l;s++){var r={};for(var a in h[s])r[a]=h[s][a];h.push(r)}h[0].top=h[1].top+=n.height,h[2].top=h[3].top-=n.height,h[4].left=h[6].left+=n.width,h[5].left=h[7].left-=n.width}i="auto"===i?null:i,t="auto"===t?null:t;for(var g,s=0;s<h.length;s++){var f=h[s];if(!this.dynamicAlign&&!this.noOverlap&&f.verticalAlign===i&&f.horizontalAlign===t){g=f;break}var p=!(i&&f.verticalAlign!==i||t&&f.horizontalAlign!==t);if(this.dynamicAlign||p){g=g||f,f.croppedArea=this.__getCroppedArea(f,e,o);var d=f.croppedArea-g.croppedArea;if((d<0||0===d&&p)&&(g=f),0===g.croppedArea&&p)break}}return g}}</script><dom-module id="iron-overlay-backdrop" assetpath="/"><template><style>:host{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--iron-overlay-backdrop-background-color,#000);opacity:0;transition:opacity .2s;pointer-events:none;@apply(--iron-overlay-backdrop)}:host(.opened){opacity:var(--iron-overlay-backdrop-opacity,.6);pointer-events:auto;@apply(--iron-overlay-backdrop-opened)}</style><content></content></template></dom-module><script>!function(){"use strict";Polymer({is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,type:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTransitionend"},created:function(){this.__openedRaf=null},attached:function(){this.opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this.parentNode&&Polymer.dom(document.body).appendChild(this)},open:function(){this.opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||this.parentNode!==document.body||Polymer.dom(this.parentNode).removeChild(this)},_onTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:function(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t.transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__openedRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),this.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(function(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}})}()</script><script>Polymer.IronOverlayManagerClass=function(){this._overlays=[],this._minimumZ=101,this._backdropElement=null,Polymer.Gestures.add(document,"tap",this._onCaptureClick.bind(this)),document.addEventListener("focus",this._onCaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureKeyDown.bind(this),!0)},Polymer.IronOverlayManagerClass.prototype={constructor:Polymer.IronOverlayManagerClass,get backdropElement(){return this._backdropElement||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._backdropElement},get deepActiveElement(){for(var e=document.activeElement||document.body;e.root&&Polymer.dom(e.root).activeElement;)e=Polymer.dom(e.root).activeElement;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e];if(t){var r=this._overlays.length-1,a=this._overlays[r];if(a&&this._shouldBeBehindOverlay(t,a)&&r--,!(e>=r)){var n=Math.max(this.currentOverlayZ(),this._minimumZ);for(this._getZ(t)<=n&&this._applyOverlayZ(t,n);e<r;)this._overlays[e]=this._overlays[e+1],e++;this._overlays[r]=t}}},addOrRemoveOverlay:function(e){e.opened?this.addOverlay(e):this.removeOverlay(e)},addOverlay:function(e){var t=this._overlays.indexOf(e);if(t>=0)return this._bringOverlayAtIndexToFront(t),void this.trackBackdrop();var r=this._overlays.length,a=this._overlays[r-1],n=Math.max(this._getZ(a),this._minimumZ),o=this._getZ(e);if(a&&this._shouldBeBehindOverlay(e,a)){this._applyOverlayZ(a,n),r--;var i=this._overlays[r-1];n=Math.max(this._getZ(i),this._minimumZ)}o<=n&&this._applyOverlayZ(e,n),this._overlays.splice(r,0,e),this.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);t!==-1&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:function(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:function(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.currentOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithBackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._getZ(e)-1,this.backdropElement.opened=!!e)},getBackdrops:function(){for(var e=[],t=0;t<this._overlays.length;t++)this._overlays[t].withBackdrop&&e.push(this._overlays[t]);return e},backdropZ:function(){return this._getZ(this._overlayWithBackdrop())-1},_overlayWithBackdrop:function(){for(var e=0;e<this._overlays.length;e++)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e){var t=this._minimumZ;if(e){var r=Number(e.style.zIndex||window.getComputedStyle(e).zIndex);r===r&&(t=r)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyOverlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for(var t=0;t<e.length;t++)if(e[t]._manager===this)return e[t]},_onCaptureClick:function(e){var t=this.currentOverlay();t&&this._overlayInPath(Polymer.dom(e).path)!==t&&t._onCaptureClick(e)},_onCaptureFocus:function(e){var t=this.currentOverlay();t&&t._onCaptureFocus(e)},_onCaptureKeyDown:function(e){var t=this.currentOverlay();t&&(Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"esc")?t._onCaptureEsc(e):Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"tab")&&t._onCaptureTab(e))},_shouldBeBehindOverlay:function(e,t){return!e.alwaysOnTop&&t.alwaysOnTop}},Polymer.IronOverlayManager=new Polymer.IronOverlayManagerClass</script><script>!function(){"use strict";var e=Element.prototype,t=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;Polymer.IronFocusablesHelper={getTabbableNodes:function(e){var t=[],r=this._collectTabbableNodes(e,t);return r?this._sortByTabIndex(t):t},isFocusable:function(e){return t.call(e,"input, select, textarea, button, object")?t.call(e,":not([disabled])"):t.call(e,"a[href], area[href], iframe, [tabindex], [contentEditable]")},isTabbable:function(e){return this.isFocusable(e)&&t.call(e,':not([tabindex="-1"])')&&this._isVisible(e)},_normalizedTabIndex:function(e){if(this.isFocusable(e)){var t=e.getAttribute("tabindex")||0;return Number(t)}return-1},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!this._isVisible(e))return!1;var r=e,a=this._normalizedTabIndex(r),i=a>0;a>=0&&t.push(r);var n;n="content"===r.localName?Polymer.dom(r).getDistributedNodes():Polymer.dom(r.root||r).children;for(var o=0;o<n.length;o++){var s=this._collectTabbableNodes(n[o],t);i=i||s}return i},_isVisible:function(e){var t=e.style;return"hidden"!==t.visibility&&"none"!==t.display&&(t=window.getComputedStyle(e),"hidden"!==t.visibility&&"none"!==t.display)},_sortByTabIndex:function(e){var t=e.length;if(t<2)return e;var r=Math.ceil(t/2),a=this._sortByTabIndex(e.slice(0,r)),i=this._sortByTabIndex(e.slice(r));return this._mergeSortByTabIndex(a,i)},_mergeSortByTabIndex:function(e,t){for(var r=[];e.length>0&&t.length>0;)this._hasLowerTabOrder(e[0],t[0])?r.push(t.shift()):r.push(e.shift());return r.concat(e,t)},_hasLowerTabOrder:function(e,t){var r=Math.max(e.tabIndex,0),a=Math.max(t.tabIndex,0);return 0===r||0===a?a>r:r>a}}}()</script><script>!function(){"use strict";Polymer.IronOverlayBehaviorImpl={properties:{opened:{observer:"_openedChanged",type:Boolean,value:!1,notify:!0},canceled:{observer:"_canceledChanged",readOnly:!0,type:Boolean,value:!1},withBackdrop:{observer:"_withBackdropChanged",type:Boolean},noAutoFocus:{type:Boolean,value:!1},noCancelOnEscKey:{type:Boolean,value:!1},noCancelOnOutsideClick:{type:Boolean,value:!1},closingReason:{type:Object},restoreFocusOnClose:{type:Boolean,value:!1},alwaysOnTop:{type:Boolean},_manager:{type:Object,value:Polymer.IronOverlayManager},_focusedChild:{type:Object}},listeners:{"iron-resize":"_onIronResize"},get backdropElement(){return this._manager.backdropElement},get _focusNode(){return this._focusedChild||Polymer.dom(this).querySelector("[autofocus]")||this},get _focusableNodes(){return Polymer.IronFocusablesHelper.getTabbableNodes(this)},ready:function(){this.__isAnimating=!1,this.__shouldRemoveTabIndex=!1,this.__firstFocusableNode=this.__lastFocusableNode=null,this.__raf=null,this.__restoreFocusNode=null,this._ensureSetup()},attached:function(){this.opened&&this._openedChanged(this.opened),this._observer=Polymer.dom(this).observeNodes(this._onNodesChange)},detached:function(){Polymer.dom(this).unobserveNodes(this._observer),this._observer=null,this.__raf&&(window.cancelAnimationFrame(this.__raf),this.__raf=null),this._manager.removeOverlay(this)},toggle:function(){this._setCanceled(!1),this.opened=!this.opened},open:function(){this._setCanceled(!1),this.opened=!0},close:function(){this._setCanceled(!1),this.opened=!1},cancel:function(e){var t=this.fire("iron-overlay-canceled",e,{cancelable:!0});t.defaultPrevented||(this._setCanceled(!0),this.opened=!1)},invalidateTabbables:function(){this.__firstFocusableNode=this.__lastFocusableNode=null},_ensureSetup:function(){this._overlaySetup||(this._overlaySetup=!0,this.style.outline="none",this.style.display="none")},_openedChanged:function(e){e?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidden","true"),this.isAttached&&(this.__isAnimating=!0,this.__onNextAnimationFrame(this.__openedChanged))},_canceledChanged:function(){this.closingReason=this.closingReason||{},this.closingReason.canceled=this.canceled},_withBackdropChanged:function(){this.withBackdrop&&!this.hasAttribute("tabindex")?(this.setAttribute("tabindex","-1"),this.__shouldRemoveTabIndex=!0):this.__shouldRemoveTabIndex&&(this.removeAttribute("tabindex"),this.__shouldRemoveTabIndex=!1),this.opened&&this.isAttached&&this._manager.trackBackdrop()},_prepareRenderOpened:function(){this.__restoreFocusNode=this._manager.deepActiveElement,this._preparePositioning(),this.refit(),this._finishPositioning(),this.noAutoFocus&&document.activeElement===this._focusNode&&(this._focusNode.blur(),this.__restoreFocusNode.focus())},_renderOpened:function(){this._finishRenderOpened()},_renderClosed:function(){this._finishRenderClosed()},_finishRenderOpened:function(){this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-opened")},_finishRenderClosed:function(){this.style.display="none",this.style.zIndex="",this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-closed",this.closingReason)},_preparePositioning:function(){this.style.transition=this.style.webkitTransition="none",this.style.transform=this.style.webkitTransform="none",this.style.display=""},_finishPositioning:function(){this.style.display="none",this.scrollTop=this.scrollTop,this.style.transition=this.style.webkitTransition="",this.style.transform=this.style.webkitTransform="",this.style.display="",this.scrollTop=this.scrollTop},_applyFocus:function(){if(this.opened)this.noAutoFocus||this._focusNode.focus();else{this._focusNode.blur(),this._focusedChild=null,this.restoreFocusOnClose&&this.__restoreFocusNode&&this.__restoreFocusNode.focus(),this.__restoreFocusNode=null;var e=this._manager.currentOverlay();e&&this!==e&&e._applyFocus()}},_onCaptureClick:function(e){this.noCancelOnOutsideClick||this.cancel(e)},_onCaptureFocus:function(e){if(this.withBackdrop){var t=Polymer.dom(e).path;t.indexOf(this)===-1?(e.stopPropagation(),this._applyFocus()):this._focusedChild=t[0]}},_onCaptureEsc:function(e){this.noCancelOnEscKey||this.cancel(e)},_onCaptureTab:function(e){if(this.withBackdrop){this.__ensureFirstLastFocusables();var t=e.shiftKey,i=t?this.__firstFocusableNode:this.__lastFocusableNode,s=t?this.__lastFocusableNode:this.__firstFocusableNode,o=!1;if(i===s)o=!0;else{var n=this._manager.deepActiveElement;o=n===i||n===this}o&&(e.preventDefault(),this._focusedChild=s,this._applyFocus())}},_onIronResize:function(){this.opened&&!this.__isAnimating&&this.__onNextAnimationFrame(this.refit)},_onNodesChange:function(){this.opened&&!this.__isAnimating&&(this.invalidateTabbables(),this.notifyResize())},__ensureFirstLastFocusables:function(){if(!this.__firstFocusableNode||!this.__lastFocusableNode){var e=this._focusableNodes;this.__firstFocusableNode=e[0],this.__lastFocusableNode=e[e.length-1]}},__openedChanged:function(){this.opened?(this._prepareRenderOpened(),this._manager.addOverlay(this),this._applyFocus(),this._renderOpened()):(this._manager.removeOverlay(this),this._applyFocus(),this._renderClosed())},__onNextAnimationFrame:function(e){this.__raf&&window.cancelAnimationFrame(this.__raf);var t=this;this.__raf=window.requestAnimationFrame(function(){t.__raf=null,e.call(t)})}},Polymer.IronOverlayBehavior=[Polymer.IronFitBehavior,Polymer.IronResizableBehavior,Polymer.IronOverlayBehaviorImpl]}()</script><script>Polymer.NeonAnimatableBehavior={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnimationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:String}},_entryAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exitAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:function(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t){if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this.animationConfig.value)return void this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Array.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._getAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClone||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimationConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script><script>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name);if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.cancel&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.complete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnimation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._active||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),delete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(this)}},cancelAnimation:function(){for(var n in this._animations)this._animations[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script><script>Polymer.NeonAnimationBehavior={properties:{animationTiming:{type:Object,value:function(){return{duration:500,easing:"cubic-bezier(0.4, 0, 0.2, 1)",fill:"both"}}}},isNeonAnimation:!0,timingFromConfig:function(i){if(i.timing)for(var n in i.timing)this.animationTiming[n]=i.timing[n];return this.animationTiming},setPrefixedProperty:function(i,n,r){for(var t,o={transform:["webkitTransform"],transformOrigin:["mozTransformOrigin","webkitTransformOrigin"]},e=o[n],m=0;t=e[m];m++)i.style[t]=r;i.style[n]=r},complete:function(){}}</script><script>!function(a,b){var c={},d={},e={},f=null;!function(t,e){function i(t){if("number"==typeof t)return t;var e={};for(var i in t)e[i]=t[i];return e}function n(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=E}function r(){return t.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function o(e,i,r){var o=new n;return i&&(o.fill="both",o.duration="auto"),"number"!=typeof e||isNaN(e)?void 0!==e&&Object.getOwnPropertyNames(e).forEach(function(i){if("auto"!=e[i]){if(("number"==typeof o[i]||"duration"==i)&&("number"!=typeof e[i]||isNaN(e[i])))return;if("fill"==i&&w.indexOf(e[i])==-1)return;if("direction"==i&&T.indexOf(e[i])==-1)return;if("playbackRate"==i&&1!==e[i]&&t.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;o[i]=e[i]}}):o.duration=e,o}function a(t){return"number"==typeof t&&(t=isNaN(t)?{duration:0}:{duration:t}),t}function s(e,i){return e=t.numericTimingToObject(e),o(e,i)}function u(t,e,i,n){return t<0||t>1||i<0||i>1?E:function(r){function o(t,e,i){return 3*t*(1-i)*(1-i)*i+3*e*(1-i)*i*i+i*i*i}if(r<=0){var a=0;return t>0?a=e/t:!e&&i>0&&(a=n/i),a*r}if(r>=1){var s=0;return i<1?s=(n-1)/(i-1):1==i&&t<1&&(s=(e-1)/(t-1)),1+s*(r-1)}for(var u=0,c=1;u<c;){var f=(u+c)/2,l=o(t,i,f);if(Math.abs(r-l)<1e-5)return o(e,n,f);l<r?u=f:c=f}return o(e,n,f)}}function c(t,e){return function(i){if(i>=1)return 1;var n=1/t;return i+=e*n,i-i%n}}function f(t){R||(R=document.createElement("div").style),R.animationTimingFunction="",R.animationTimingFunction=t;var e=R.animationTimingFunction;if(""==e&&r())throw new TypeError(t+" is not a valid value for easing");return e}function l(t){if("linear"==t)return E;var e=O.exec(t);if(e)return u.apply(this,e.slice(1).map(Number));var i=k.exec(t);if(i)return c(Number(i[1]),{start:x,middle:A,end:P}[i[2]]);var n=j[t];return n?n:E}function h(t){return Math.abs(m(t)/t.playbackRate)}function m(t){return 0===t.duration||0===t.iterations?0:t.duration*t.iterations}function d(t,e,i){if(null==e)return S;var n=i.delay+t+i.endDelay;return e<Math.min(i.delay,n)?C:e>=Math.min(i.delay+t,n)?D:F}function p(t,e,i,n,r){switch(n){case C:return"backwards"==e||"both"==e?0:null;case F:return i-r;case D:return"forwards"==e||"both"==e?t:null;case S:return null}}function _(t,e,i,n,r){var o=r;return 0===t?e!==C&&(o+=i):o+=n/t,o}function g(t,e,i,n,r,o){var a=t===1/0?e%1:t%1;return 0!==a||i!==D||0===n||0===r&&0!==o||(a=1),a}function b(t,e,i,n){return t===D&&e===1/0?1/0:1===i?Math.floor(n)-1:Math.floor(n)}function v(t,e,i){var n=t;if("normal"!==t&&"reverse"!==t){var r=e;"alternate-reverse"===t&&(r+=1),n="normal",r!==1/0&&r%2!==0&&(n="reverse")}return"normal"===n?i:1-i}function y(t,e,i){var n=d(t,e,i),r=p(t,i.fill,e,n,i.delay);if(null===r)return null;var o=_(i.duration,n,i.iterations,r,i.iterationStart),a=g(o,i.iterationStart,n,i.iterations,r,i.duration),s=b(n,i.iterations,a,o),u=v(i.direction,s,a);return i._easingFunction(u)}var w="backwards|forwards|both|none".split("|"),T="reverse|alternate|alternate-reverse".split("|"),E=function(t){return t};n.prototype={_setMember:function(e,i){this["_"+e]=i,this._effect&&(this._effect._timingInput[e]=i,this._effect._timing=t.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=t.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(t){this._setMember("delay",t)},get delay(){return this._delay},set endDelay(t){this._setMember("endDelay",t)},get endDelay(){return this._endDelay},set fill(t){this._setMember("fill",t)},get fill(){return this._fill},set iterationStart(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",t)},get iterationStart(){return this._iterationStart},set duration(t){if("auto"!=t&&(isNaN(t)||t<0)&&r())throw new TypeError("duration must be non-negative or auto, received: "+t);this._setMember("duration",t)},get duration(){return this._duration},set direction(t){this._setMember("direction",t)},get direction(){return this._direction},set easing(t){this._easingFunction=l(f(t)),this._setMember("easing",t)},get easing(){return this._easing},set iterations(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterations must be non-negative, received: "+t);this._setMember("iterations",t)},get iterations(){return this._iterations}};var x=1,A=.5,P=0,j={ease:u(.25,.1,.25,1),"ease-in":u(.42,0,1,1),"ease-out":u(0,0,.58,1),"ease-in-out":u(.42,0,.58,1),"step-start":c(1,x),"step-middle":c(1,A),"step-end":c(1,P)},R=null,N="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",O=new RegExp("cubic-bezier\\("+N+","+N+","+N+","+N+"\\)"),k=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,S=0,C=1,D=2,F=3;t.cloneTimingInput=i,t.makeTiming=o,t.numericTimingToObject=a,t.normalizeTimingInput=s,t.calculateActiveDuration=h,t.calculateIterationProgress=y,t.calculatePhase=d,t.normalizeEasing=f,t.parseEasingFunction=l}(c,f),function(t,e){function i(t,e){return t in f?f[t][e]||e:e}function n(t){return"display"===t||0===t.lastIndexOf("animation",0)||0===t.lastIndexOf("transition",0)}function r(t,e,r){if(!n(t)){var o=s[t];if(o){u.style[t]=e;for(var a in o){var c=o[a],f=u.style[c];r[c]=i(c,f)}}else r[t]=i(t,e)}}function o(t){var e=[];for(var i in t)if(!(i in["easing","offset","composite"])){var n=t[i];Array.isArray(n)||(n=[n]);for(var r,o=n.length,a=0;a<o;a++)r={},"offset"in t?r.offset=t.offset:1==o?r.offset=1:r.offset=a/(o-1),"easing"in t&&(r.easing=t.easing),"composite"in t&&(r.composite=t.composite),r[i]=n[a],e.push(r)}return e.sort(function(t,e){return t.offset-e.offset}),e}function a(e){function i(){var t=n.length;null==n[t-1].offset&&(n[t-1].offset=1),t>1&&null==n[0].offset&&(n[0].offset=0);for(var e=0,i=n[0].offset,r=1;r<t;r++){var o=n[r].offset;if(null!=o){for(var a=1;a<r-e;a++)n[e+a].offset=i+(o-i)*a/(r-e);e=r,i=o}}}if(null==e)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||(e=o(e));for(var n=e.map(function(e){var i={};for(var n in e){var o=e[n];if("offset"==n){if(null!=o){if(o=Number(o),!isFinite(o))throw new TypeError("Keyframe offsets must be numbers.");if(o<0||o>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==n){if("add"==o||"accumulate"==o)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=o)throw new TypeError("Invalid composite mode "+o+".")}else o="easing"==n?t.normalizeEasing(o):""+o;r(n,o,i)}return void 0==i.offset&&(i.offset=null),void 0==i.easing&&(i.easing="linear"),i}),a=!0,s=-(1/0),u=0;u<n.length;u++){var c=n[u].offset;if(null!=c){if(c<s)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");s=c}else a=!1}return n=n.filter(function(t){return t.offset>=0&&t.offset<=1}),a||i(),n}var s={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},u=document.createElementNS("http://www.w3.org/1999/xhtml","div"),c={thin:"1px",medium:"3px",thick:"5px"},f={borderBottomWidth:c,borderLeftWidth:c,borderRightWidth:c,borderTopWidth:c,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:c,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};t.convertToArrayForm=o,t.normalizeKeyframes=a}(c,f),function(t){var e={};t.isDeprecated=function(t,i,n,r){var o=r?"are":"is",a=new Date,s=new Date(i);return s.setMonth(s.getMonth()+3),!(a<s&&(t in e||console.warn("Web Animations: "+t+" "+o+" deprecated and will stop working on "+s.toDateString()+". "+n),e[t]=!0,1))},t.deprecated=function(e,i,n,r){var o=r?"are":"is";if(t.isDeprecated(e,i,n,r))throw new Error(e+" "+o+" no longer supported. "+n)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(t){void 0===a[t]&&(b=!0)})),!b)return}!function(t,e,i){function n(t){for(var e={},i=0;i<t.length;i++)for(var n in t[i])if("offset"!=n&&"easing"!=n&&"composite"!=n){var r={offset:t[i].offset,easing:t[i].easing,value:t[i][n]};e[n]=e[n]||[],e[n].push(r)}for(var o in e){var a=e[o];if(0!=a[0].offset||1!=a[a.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return e}function r(i){var n=[];for(var r in i)for(var o=i[r],a=0;a<o.length-1;a++){var s=a,u=a+1,c=o[s].offset,f=o[u].offset,l=c,h=f;0==a&&(l=-(1/0),0==f&&(u=s)),a==o.length-2&&(h=1/0,1==c&&(s=u)),n.push({applyFrom:l,applyTo:h,startOffset:o[s].offset,endOffset:o[u].offset,easingFunction:t.parseEasingFunction(o[s].easing),property:r,interpolation:e.propertyInterpolation(r,o[s].value,o[u].value)})}return n.sort(function(t,e){return t.startOffset-e.startOffset}),n}e.convertEffectInput=function(i){var o=t.normalizeKeyframes(i),a=n(o),s=r(a);return function(t,i){if(null!=i)s.filter(function(t){return i>=t.applyFrom&&i<t.applyTo}).forEach(function(n){var r=i-n.startOffset,o=n.endOffset-n.startOffset,a=0==o?0:n.easingFunction(r/o);e.apply(t,n.property,n.interpolation(a))});else for(var n in a)"offset"!=n&&"easing"!=n&&"composite"!=n&&e.clear(t,n)}}}(c,d,f),function(t,e,i){function n(t){return t.replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function r(t,e,i){s[i]=s[i]||[],s[i].push([t,e])}function o(t,e,i){for(var o=0;o<i.length;o++){var a=i[o];r(t,e,n(a))}}function a(i,r,o){var a=i;/-/.test(i)&&!t.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(a=n(i)),"initial"!=r&&"initial"!=o||("initial"==r&&(r=u[a]),"initial"==o&&(o=u[a]));for(var c=r==o?[]:s[a],f=0;c&&f<c.length;f++){var l=c[f][0](r),h=c[f][0](o);if(void 0!==l&&void 0!==h){var m=c[f][1](l,h);if(m){var d=e.Interpolation.apply(null,m);return function(t){return 0==t?r:1==t?o:d(t)}}}}return e.Interpolation(!1,!0,function(t){return t?o:r})}var s={};e.addPropertiesHandler=o;var u={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};e.propertyInterpolation=a}(c,d,f),function(t,e,i){function n(e){var i=t.calculateActiveDuration(e),n=function(n){return t.calculateIterationProgress(i,n,e)};return n._totalDuration=e.delay+i+e.endDelay,n}e.KeyframeEffect=function(i,r,o,a){var s,u=n(t.normalizeTimingInput(o)),c=e.convertEffectInput(r),f=function(){c(i,s)};return f._update=function(t){return s=u(t),null!==s},f._clear=function(){c(i,null)},f._hasSameTarget=function(t){return i===t},f._target=i,f._totalDuration=u._totalDuration,f._id=a,f},e.NullEffect=function(t){var e=function(){t&&(t(),t=null)};return e._update=function(){return null},e._totalDuration=0,e._hasSameTarget=function(){return!1},e}}(c,d,f),function(t,e){t.apply=function(e,i,n){e.style[t.propertyName(i)]=n},t.clear=function(e,i){e.style[t.propertyName(i)]=""}}(d,f),function(t){window.Element.prototype.animate=function(e,i){var n="";return i&&i.id&&(n=i.id),t.timeline._play(t.KeyframeEffect(this,e,i,n))}}(d),function(t,e){function i(t,e,n){if("number"==typeof t&&"number"==typeof e)return t*(1-n)+e*n;if("boolean"==typeof t&&"boolean"==typeof e)return n<.5?t:e;if(t.length==e.length){for(var r=[],o=0;o<t.length;o++)r.push(i(t[o],e[o],n));return r}throw"Mismatched interpolation arguments "+t+":"+e}t.Interpolation=function(t,e,n){return function(r){return n(i(t,e,r))}}}(d,f),function(t,e,i){t.sequenceNumber=0;var n=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};e.Animation=function(e){this.id="",e&&e._id&&(this.id=e._id),this._sequenceNumber=t.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=e,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},e.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,e.timeline._animations.push(this))},_tickCurrentTime:function(t,e){t!=this._currentTime&&(this._currentTime=t,this._isFinished&&!e&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(t){t=+t,isNaN(t)||(e.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-t/this._playbackRate),this._currentTimePending=!1,this._currentTime!=t&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(t,!0),e.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(t){t=+t,isNaN(t)||this._paused||this._idle||(this._startTime=t,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),e.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(t){if(t!=this._playbackRate){var i=this.currentTime;this._playbackRate=t,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)),null!=i&&(this.currentTime=i)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,e.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),e.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(t,e){"function"==typeof e&&"finish"==t&&this._finishHandlers.push(e)},removeEventListener:function(t,e){if("finish"==t){var i=this._finishHandlers.indexOf(e);i>=0&&this._finishHandlers.splice(i,1)}},_fireEvents:function(t){if(this._isFinished){if(!this._finishedFlag){var e=new n(this,this._currentTime,t),i=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){i.forEach(function(t){t.call(e.target,e)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(t,e){this._idle||this._paused||(null==this._startTime?e&&(this.startTime=t-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((t-this._startTime)*this.playbackRate)),e&&(this._currentTimePending=!1,this._fireEvents(t))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var t=this._effect._target;return t._activeAnimations||(t._activeAnimations=[]),t._activeAnimations},_markTarget:function(){var t=this._targetAnimations();t.indexOf(this)===-1&&t.push(this)},_unmarkTarget:function(){var t=this._targetAnimations(),e=t.indexOf(this);e!==-1&&t.splice(e,1)}}}(c,d,f),function(t,e,i){function n(t){var e=c;c=[],t<_.currentTime&&(t=_.currentTime),_._animations.sort(r),_._animations=s(t,!0,_._animations)[0],e.forEach(function(e){e[1](t)}),a(),l=void 0}function r(t,e){return t._sequenceNumber-e._sequenceNumber}function o(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function a(){d.forEach(function(t){t()}),d.length=0}function s(t,i,n){p=!0,m=!1;var r=e.timeline;r.currentTime=t,h=!1;var o=[],a=[],s=[],u=[];return n.forEach(function(e){e._tick(t,i),e._inEffect?(a.push(e._effect),e._markTarget()):(o.push(e._effect),e._unmarkTarget()),e._needsTick&&(h=!0);var n=e._inEffect||e._needsTick;e._inTimeline=n,n?s.push(e):u.push(e)}),d.push.apply(d,o),d.push.apply(d,a),h&&requestAnimationFrame(function(){}),p=!1,[s,u]}var u=window.requestAnimationFrame,c=[],f=0;window.requestAnimationFrame=function(t){var e=f++;return 0==c.length&&u(n),c.push([e,t]),e},window.cancelAnimationFrame=function(t){c.forEach(function(e){e[0]==t&&(e[1]=function(){})})},o.prototype={_play:function(i){i._timing=t.normalizeTimingInput(i.timing);var n=new e.Animation(i);return n._idle=!1,n._timeline=this,this._animations.push(n),e.restart(),e.applyDirtiedAnimation(n),n}};var l=void 0,h=!1,m=!1;e.restart=function(){return h||(h=!0,requestAnimationFrame(function(){}),m=!0),m},e.applyDirtiedAnimation=function(t){if(!p){t._markTarget();var i=t._targetAnimations();i.sort(r);var n=s(e.timeline.currentTime,!1,i.slice())[1];n.forEach(function(t){var e=_._animations.indexOf(t);e!==-1&&_._animations.splice(e,1)}),a()}};var d=[],p=!1,_=new o;e.timeline=_}(c,d,f),function(t){function e(t,e){var i=t.exec(e);if(i)return i=t.ignoreCase?i[0].toLowerCase():i[0],[i,e.substr(i.length)]}function i(t,e){e=e.replace(/^\s*/,"");var i=t(e);if(i)return[i[0],i[1].replace(/^\s*/,"")]}function n(t,n,r){t=i.bind(null,t);for(var o=[];;){var a=t(r);if(!a)return[o,r];if(o.push(a[0]),r=a[1],a=e(n,r),!a||""==a[1])return[o,r];r=a[1]}}function r(t,e){for(var i=0,n=0;n<e.length&&(!/\s|,/.test(e[n])||0!=i);n++)if("("==e[n])i++;else if(")"==e[n]&&(i--,0==i&&n++,i<=0))break;var r=t(e.substr(0,n));return void 0==r?void 0:[r,e.substr(n)]}function o(t,e){for(var i=t,n=e;i&&n;)i>n?i%=n:n%=i;return i=t*e/(i+n)}function a(t){return function(e){var i=t(e);return i&&(i[0]=void 0),i}}function s(t,e){return function(i){var n=t(i);return n?n:[e,i]}}function u(e,i){for(var n=[],r=0;r<e.length;r++){var o=t.consumeTrimmed(e[r],i);if(!o||""==o[0])return;void 0!==o[0]&&n.push(o[0]),i=o[1]}if(""==i)return n}function c(t,e,i,n,r){for(var a=[],s=[],u=[],c=o(n.length,r.length),f=0;f<c;f++){var l=e(n[f%n.length],r[f%r.length]);if(!l)return;a.push(l[0]),s.push(l[1]),u.push(l[2])}return[a,s,function(e){var n=e.map(function(t,e){return u[e](t)}).join(i);return t?t(n):n}]}function f(t,e,i){for(var n=[],r=[],o=[],a=0,s=0;s<i.length;s++)if("function"==typeof i[s]){var u=i[s](t[a],e[a++]);n.push(u[0]),r.push(u[1]),o.push(u[2])}else!function(t){n.push(!1),r.push(!1),o.push(function(){return i[t]})}(s);return[n,r,function(t){for(var e="",i=0;i<t.length;i++)e+=o[i](t[i]);return e}]}t.consumeToken=e,t.consumeTrimmed=i,t.consumeRepeated=n,t.consumeParenthesised=r,t.ignore=a,t.optional=s,t.consumeList=u,t.mergeNestedRepeated=c.bind(null,null),t.mergeWrappedNestedRepeated=c,t.mergeList=f}(d),function(t){function e(e){function i(e){var i=t.consumeToken(/^inset/i,e);if(i)return n.inset=!0,i;var i=t.consumeLengthOrPercent(e);if(i)return n.lengths.push(i[0]),i;var i=t.consumeColor(e);return i?(n.color=i[0],i):void 0}var n={inset:!1,lengths:[],color:null},r=t.consumeRepeated(i,/^/,e);if(r&&r[0].length)return[n,r[1]]}function i(i){var n=t.consumeRepeated(e,/^,/,i);if(n&&""==n[1])return n[0]}function n(e,i){for(;e.lengths.length<Math.max(e.lengths.length,i.lengths.length);)e.lengths.push({px:0});for(;i.lengths.length<Math.max(e.lengths.length,i.lengths.length);)i.lengths.push({px:0});if(e.inset==i.inset&&!!e.color==!!i.color){for(var n,r=[],o=[[],0],a=[[],0],s=0;s<e.lengths.length;s++){var u=t.mergeDimensions(e.lengths[s],i.lengths[s],2==s);o[0].push(u[0]),a[0].push(u[1]),r.push(u[2])}if(e.color&&i.color){var c=t.mergeColors(e.color,i.color);o[1]=c[0],a[1]=c[1],n=c[2]}return[o,a,function(t){for(var i=e.inset?"inset ":" ",o=0;o<r.length;o++)i+=r[o](t[0][o])+" ";return n&&(i+=n(t[1])),i}]}}function r(e,i,n,r){function o(t){return{inset:t,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var a=[],s=[],u=0;u<n.length||u<r.length;u++){var c=n[u]||o(r[u].inset),f=r[u]||o(n[u].inset);a.push(c),s.push(f)}return t.mergeNestedRepeated(e,i,a,s)}var o=r.bind(null,n,", ");t.addPropertiesHandler(i,o,["box-shadow","text-shadow"])}(d),function(t,e){function i(t){return t.toFixed(3).replace(".000","")}function n(t,e,i){return Math.min(e,Math.max(t,i))}function r(t){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(t))return Number(t)}function o(t,e){return[t,e,i]}function a(t,e){if(0!=t)return u(0,1/0)(t,e)}function s(t,e){return[t,e,function(t){return Math.round(n(1,1/0,t))}]}function u(t,e){return function(r,o){return[r,o,function(r){return i(n(t,e,r))}]}}function c(t,e){return[t,e,Math.round]}t.clamp=n,t.addPropertiesHandler(r,u(0,1/0),["border-image-width","line-height"]),t.addPropertiesHandler(r,u(0,1),["opacity","shape-image-threshold"]),t.addPropertiesHandler(r,a,["flex-grow","flex-shrink"]),t.addPropertiesHandler(r,s,["orphans","widows"]),t.addPropertiesHandler(r,c,["z-index"]),t.parseNumber=r,t.mergeNumbers=o,t.numberToString=i}(d,f),function(t,e){function i(t,e){if("visible"==t||"visible"==e)return[0,1,function(i){return i<=0?t:i>=1?e:"visible"}]}t.addPropertiesHandler(String,i,["visibility"])}(d),function(t,e){function i(t){t=t.trim(),o.fillStyle="#000",o.fillStyle=t;var e=o.fillStyle;if(o.fillStyle="#fff",o.fillStyle=t,e==o.fillStyle){o.fillRect(0,0,1,1);var i=o.getImageData(0,0,1,1).data;o.clearRect(0,0,1,1);var n=i[3]/255;return[i[0]*n,i[1]*n,i[2]*n,n]}}function n(e,i){return[e,i,function(e){function i(t){return Math.max(0,Math.min(255,t))}if(e[3])for(var n=0;n<3;n++)e[n]=Math.round(i(e[n]/e[3]));return e[3]=t.numberToString(t.clamp(0,1,e[3])),"rgba("+e.join(",")+")"}]}var r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");r.width=r.height=1;var o=r.getContext("2d");t.addPropertiesHandler(i,n,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),t.consumeColor=t.consumeParenthesised.bind(null,i),t.mergeColors=n}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(t){return c[t]=null,"U"+t});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(t,i){return e(t,i,!0)}function e(t,e,i){var n,r=[];for(n in t)r.push(n);for(n in e)r.indexOf(n)<0&&r.push(n);return t=r.map(function(e){return t[e]||0}),e=r.map(function(t){return e[t]||0}),[t,e,function(t){var e=t.map(function(e,n){return 1==t.length&&i&&(e=Math.max(e,0)),a.numberToString(e)+r[n]}).join(" + ");return t.length>1?"calc("+e+")":e}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(t){var e=l(t);if(e&&""==e[1])return e[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(t,e){function i(e){return t.consumeLengthOrPercent(e)||t.consumeToken(/^auto/,e)}function n(e){var n=t.consumeList([t.ignore(t.consumeToken.bind(null,/^rect/)),t.ignore(t.consumeToken.bind(null,/^\(/)),t.consumeRepeated.bind(null,i,/^,/),t.ignore(t.consumeToken.bind(null,/^\)/))],e);if(n&&4==n[0].length)return n[0]}function r(e,i){return"auto"==e||"auto"==i?[!0,!1,function(n){var r=n?e:i;if("auto"==r)return"auto";var o=t.mergeDimensions(r,r);return o[2](o[0])}]:t.mergeDimensions(e,i)}function o(t){return"rect("+t+")"}var a=t.mergeWrappedNestedRepeated.bind(null,o,r,", ");t.parseBox=n,t.mergeBoxes=a,t.addPropertiesHandler(n,a,["clip"])}(d,f),function(t,e){function i(t){return function(e){var i=0;return t.map(function(t){return t===f?e[i++]:t})}}function n(t){return t}function r(e){if(e=e.toLowerCase().trim(),"none"==e)return[];for(var i,n=/\s*(\w+)\(([^)]*)\)/g,r=[],o=0;i=n.exec(e);){if(i.index!=o)return;o=i.index+i[0].length;var a=i[1],s=m[a];if(!s)return;var u=i[2].split(","),c=s[0];if(c.length<u.length)return;for(var f=[],d=0;d<c.length;d++){var p,_=u[d],g=c[d];if(p=_?{A:function(e){return"0"==e.trim()?h:t.parseAngle(e)},N:t.parseNumber,T:t.parseLengthOrPercent,L:t.parseLength}[g.toUpperCase()](_):{a:h,n:f[0],t:l}[g],void 0===p)return;f.push(p)}if(r.push({t:a,d:f}),n.lastIndex==e.length)return r}}function o(t){return t.toFixed(6).replace(".000000","")}function a(e,i){if(e.decompositionPair!==i){e.decompositionPair=i;var n=t.makeMatrixDecomposition(e)}if(i.decompositionPair!==e){i.decompositionPair=e;var r=t.makeMatrixDecomposition(i)}return null==n[0]||null==r[0]?[[!1],[!0],function(t){return t?i[0].d:e[0].d}]:(n[0].push(0),r[0].push(1),[n,r,function(e){var i=t.quat(n[0][3],r[0][3],e[5]),a=t.composeMatrix(e[0],e[1],e[2],i,e[4]),s=a.map(o).join(",");return s}])}function s(t){return t.replace(/[xy]/,"")}function u(t){return t.replace(/(x|y|z|3d)?$/,"3d")}function c(e,i){var n=t.makeMatrixDecomposition&&!0,r=!1;if(!e.length||!i.length){e.length||(r=!0,e=i,i=[]);for(var o=0;o<e.length;o++){var c=e[o].t,f=e[o].d,l="scale"==c.substr(0,5)?1:0;i.push({t:c,d:f.map(function(t){if("number"==typeof t)return l;var e={};for(var i in t)e[i]=l;return e})})}}var h=function(t,e){return"perspective"==t&&"perspective"==e||("matrix"==t||"matrix3d"==t)&&("matrix"==e||"matrix3d"==e)},d=[],p=[],_=[];if(e.length!=i.length){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]]}else for(var o=0;o<e.length;o++){var c,b=e[o].t,v=i[o].t,y=e[o].d,w=i[o].d,T=m[b],E=m[v];if(h(b,v)){if(!n)return;var g=a([e[o]],[i[o]]);d.push(g[0]),p.push(g[1]),_.push(["matrix",[g[2]]])}else{if(b==v)c=b;else if(T[2]&&E[2]&&s(b)==s(v))c=s(b),y=T[2](y),w=E[2](w);else{if(!T[1]||!E[1]||u(b)!=u(v)){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]];break}c=u(b),y=T[1](y),w=E[1](w)}for(var x=[],A=[],P=[],j=0;j<y.length;j++){var R="number"==typeof y[j]?t.mergeNumbers:t.mergeDimensions,g=R(y[j],w[j]);x[j]=g[0],A[j]=g[1],P.push(g[2])}d.push(x),p.push(A),_.push([c,P])}}if(r){var N=d;d=p,p=N}return[d,p,function(t){return t.map(function(t,e){var i=t.map(function(t,i){return _[e][1][i](t)}).join(",");return"matrix"==_[e][0]&&16==i.split(",").length&&(_[e][0]="matrix3d"),_[e][0]+"("+i+")"}).join(" ")}]}var f=null,l={px:0},h={deg:0},m={matrix:["NNNNNN",[f,f,0,0,f,f,0,0,0,0,1,0,f,f,0,1],n],matrix3d:["NNNNNNNNNNNNNNNN",n],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",i([f,f,1]),n],scalex:["N",i([f,1,1]),i([f,1])],scaley:["N",i([1,f,1]),i([1,f])],scalez:["N",i([1,1,f])],scale3d:["NNN",n],skew:["Aa",null,n],skewx:["A",null,i([f,h])],skewy:["A",null,i([h,f])],translate:["Tt",i([f,f,l]),n],translatex:["T",i([f,l,l]),i([f,l])],translatey:["T",i([l,f,l]),i([l,f])],translatez:["L",i([l,l,f])],translate3d:["TTL",n]};t.addPropertiesHandler(r,c,["transform"])}(d,f),function(t,e){function i(t,e){e.concat([t]).forEach(function(e){e in document.documentElement.style&&(n[t]=e)})}var n={};i("transform",["webkitTransform","msTransform"]),i("transformOrigin",["webkitTransformOrigin"]),i("perspective",["webkitPerspective"]),i("perspectiveOrigin",["webkitPerspectiveOrigin"]),t.propertyName=function(t){return n[t]||t}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var t;if(window.performance&&performance.now)var t=function(){return performance.now()};else var t=function(){return Date.now()};var e=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="cancel",this.bubbles=!1,this.cancelable=!1, -this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(c),!function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(c,e,f),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e<this.effect.children.length;e++)this.effect.children[e]._animation=t,this._childAnimations[e]._setExternalAnimation(t)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var t=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(i){var n=e.timeline._play(i);this._childAnimations.push(n),n.playbackRate=this.playbackRate,this._paused&&n.pause(),i._animation=this.effect._animation,this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i))}.bind(this))}},_arrangeChildren:function(t,e){null===this.startTime?t.currentTime=this.currentTime-e/this.playbackRate:t.startTime!==this.startTime+e/this.playbackRate&&(t.startTime=this.startTime+e/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(t,e){this._resolveFinishedPromise=function(){t(this)},this._rejectFinishedPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._readyPromise=new Promise(function(t,e){this._resolveReadyPromise=function(){t(this)},this._rejectReadyPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(t){"function"==typeof t?this._animation.onfinish=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.onfinish=t},get oncancel(){return this._animation.oncancel},set oncancel(t){"function"==typeof t?this._animation.oncancel=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.oncancel=t},get currentTime(){this._updatePromises();var t=this._animation.currentTime;return this._updatePromises(),t},set currentTime(t){this._updatePromises(),this._animation.currentTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.currentTime=t-i}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(t){this._updatePromises(),this._animation.startTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.startTime=t+i}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(t){this._updatePromises();var e=this.currentTime;this._animation.playbackRate=t,this._forEachChild(function(e){e.playbackRate=t}),null!==e&&(this.currentTime=e),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),e.awaitStartTime(this),this._forEachChild(function(t){var e=t.currentTime;t.play(),t.currentTime=e}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(t){t.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var t=this.currentTime;this._animation.reverse(),this._forEachChild(function(t){t.reverse()}),null!==t&&(this.currentTime=t),this._updatePromises()},addEventListener:function(t,e){var i=e;"function"==typeof e&&(i=function(t){t.target=this,e.call(this,t)}.bind(this),e._wrapper=i),this._animation.addEventListener(t,i)},removeEventListener:function(t,e){this._animation.removeEventListener(t,e&&e._wrapper||e)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(e){var i=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(t){e.call(this,t,i),this.effect instanceof window.SequenceEffect&&(i+=t.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var n=this.effect._timing,r=this.currentTime;null!==r&&(r=t.calculateIterationProgress(t.calculateActiveDuration(n),r,n)),(null==r||isNaN(r))&&this._removeChildAnimations()}}},window.Animation=e.Animation}(c,e,f),function(t,e,i){function n(e){this._frames=t.normalizeKeyframes(e)}function r(){for(var t=!1;u.length;){var e=u.shift();e._updateChildren(),t=!0}return t}var o=function(t){if(t._animation=void 0,t instanceof window.SequenceEffect||t instanceof window.GroupEffect)for(var e=0;e<t.children.length;e++)o(t.children[e])};e.removeMulti=function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n._parent?(e.indexOf(n._parent)==-1&&e.push(n._parent),n._parent.children.splice(n._parent.children.indexOf(n),1),n._parent=null,o(n)):n._animation&&n._animation.effect==n&&(n._animation.cancel(),n._animation.effect=new KeyframeEffect(null,[]),n._animation._callback&&(n._animation._callback._animation=null),n._animation._rebuildUnderlyingAnimation(),o(n))}for(i=0;i<e.length;i++)e[i]._rebuild()},e.KeyframeEffect=function(e,i,r,o){return this.target=e,this._parent=null,r=t.numericTimingToObject(r),this._timingInput=t.cloneTimingInput(r),this._timing=t.normalizeTimingInput(r),this.timing=t.makeTiming(r,!1,this),this.timing._effect=this,"function"==typeof i?(t.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=i):this._normalizedKeyframes=new n(i),this._keyframes=i,this.activeDuration=t.calculateActiveDuration(this._timing),this._id=o,this},e.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(t){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=t,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var e=new KeyframeEffect(this.target,[],t.cloneTimingInput(this._timingInput),this._id);return e._normalizedKeyframes=this._normalizedKeyframes,e._keyframes=this._keyframes,e},remove:function(){e.removeMulti([this])}};var a=Element.prototype.animate;Element.prototype.animate=function(t,i){var n="";return i&&i.id&&(n=i.id),e.timeline._play(new e.KeyframeEffect(this,t,i,n))};var s=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.newUnderlyingAnimationForKeyframeEffect=function(t){if(t){var e=t.target||s,i=t._keyframes;"function"==typeof i&&(i=[]);var n=t._timingInput;n.id=t._id}else var e=s,i=[],n=0;return a.apply(e,[i,n])},e.bindAnimationForKeyframeEffect=function(t){t.effect&&"function"==typeof t.effect._normalizedKeyframes&&e.bindAnimationForCustomEffect(t)};var u=[];e.awaitStartTime=function(t){null===t.startTime&&t._isGroup&&(0==u.length&&requestAnimationFrame(r),u.push(t))};var c=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){e.timeline._updateAnimationsPromises();var t=c.apply(this,arguments);return r()&&(t=c.apply(this,arguments)),e.timeline._updateAnimationsPromises(),t}}),window.KeyframeEffect=e.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(t){return null!==t.effect&&t.effect.target==this}.bind(this))}}(c,e,f),function(t,e,i){function n(t){t._registered||(t._registered=!0,a.push(t),s||(s=!0,requestAnimationFrame(r)))}function r(t){var e=a;a=[],e.sort(function(t,e){return t._sequenceNumber-e._sequenceNumber}),e=e.filter(function(t){t();var e=t._animation?t._animation.playState:"idle";return"running"!=e&&"pending"!=e&&(t._registered=!1),t._registered}),a.push.apply(a,e),a.length?(s=!0,requestAnimationFrame(r)):s=!1}var o=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);e.bindAnimationForCustomEffect=function(e){var i,r=e.effect.target,a="function"==typeof e.effect.getFrames();i=a?e.effect.getFrames():e.effect._onsample;var s=e.effect.timing,u=null;s=t.normalizeTimingInput(s);var c=function(){var n=c._animation?c._animation.currentTime:null;null!==n&&(n=t.calculateIterationProgress(t.calculateActiveDuration(s),n,s),isNaN(n)&&(n=null)),n!==u&&(a?i(n,r,e.effect):i(n,e.effect,e.effect._animation)),u=n};c._animation=e,c._registered=!1,c._sequenceNumber=o++,e._callback=c,n(c)};var a=[],s=!1;e.Animation.prototype._register=function(){this._callback&&n(this._callback)}}(c,e,f),function(t,e,i){function n(t){return t._timing.delay+t.activeDuration+t._timing.endDelay}function r(e,i,n){this._id=n,this._parent=null,this.children=e||[],this._reparent(this.children),i=t.numericTimingToObject(i),this._timingInput=t.cloneTimingInput(i),this._timing=t.normalizeTimingInput(i,!0),this.timing=t.makeTiming(i,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){r.apply(this,arguments)},window.GroupEffect=function(){r.apply(this,arguments)},r.prototype={_isAncestor:function(t){for(var e=this;null!==e;){if(e==t)return!0;e=e._parent}return!1},_rebuild:function(){for(var t=this;t;)"auto"===t.timing.duration&&(t._timing.duration=t.activeDuration),t=t._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(t){e.removeMulti(t);for(var i=0;i<t.length;i++)t[i]._parent=this},_putChild:function(t,e){for(var i=e?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",n=0;n<t.length;n++)if(this._isAncestor(t[n]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:i};for(var n=0;n<t.length;n++)e?this.children.push(t[n]):this.children.unshift(t[n]);this._reparent(t),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var e=t.cloneTimingInput(this._timingInput),i=[],n=0;n<this.children.length;n++)i.push(this.children[n].clone());return this instanceof GroupEffect?new GroupEffect(i,e):new SequenceEffect(i,e)},remove:function(){e.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t+=n(e)}),Math.max(t,0)}}),window.GroupEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t=Math.max(t,n(e))}),t}}),e.newUnderlyingAnimationForGroup=function(i){var n,r=null,o=function(e){var i=n._wrapper;if(i&&"pending"!=i.playState&&i.effect)return null==e?void i._removeChildAnimations():0==e&&i.playbackRate<0&&(r||(r=t.normalizeTimingInput(i.effect.timing)),e=t.calculateIterationProgress(t.calculateActiveDuration(r),-1,r),isNaN(e)||null==e)?(i._forEachChild(function(t){t.currentTime=-1}),void i._removeChildAnimations()):void 0},a=new KeyframeEffect(null,[],i._timing,i._id);return a.onsample=o,n=e.timeline._play(a)},e.bindAnimationForGroup=function(t){t._animation._wrapper=t,t._isGroup=!0,e.awaitStartTime(t),t._constructChildAnimations(),t._setExternalAnimation(t)},e.groupChildDuration=n}(c,e,f),b.true=a}({},function(){return this}())</script><script>Polymer({is:"opaque-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"1"}],this.timingFromConfig(e)),i.style.opacity="0",this._effect},complete:function(e){e.node.style.opacity=""}})</script><script>!function(){"use strict";var e={pageX:0,pageY:0},t=null,l=[];Polymer.IronDropdownScrollManager={get currentLockingElement(){return this._lockingElements[this._lockingElements.length-1]},elementIsScrollLocked:function(e){var t=this.currentLockingElement;if(void 0===t)return!1;var l;return!!this._hasCachedLockedElement(e)||!this._hasCachedUnlockedElement(e)&&(l=!!t&&t!==e&&!this._composedTreeContains(t,e),l?this._lockedElementCache.push(e):this._unlockedElementCache.push(e),l)},pushScrollLock:function(e){this._lockingElements.indexOf(e)>=0||(0===this._lockingElements.length&&this._lockScrollInteractions(),this._lockingElements.push(e),this._lockedElementCache=[],this._unlockedElementCache=[])},removeScrollLock:function(e){var t=this._lockingElements.indexOf(e);t!==-1&&(this._lockingElements.splice(t,1),this._lockedElementCache=[],this._unlockedElementCache=[],0===this._lockingElements.length&&this._unlockScrollInteractions())},_lockingElements:[],_lockedElementCache:null,_unlockedElementCache:null,_hasCachedLockedElement:function(e){return this._lockedElementCache.indexOf(e)>-1},_hasCachedUnlockedElement:function(e){return this._unlockedElementCache.indexOf(e)>-1},_composedTreeContains:function(e,t){var l,n,o,r;if(e.contains(t))return!0;for(l=Polymer.dom(e).querySelectorAll("content"),o=0;o<l.length;++o)for(n=Polymer.dom(l[o]).getDistributedNodes(),r=0;r<n.length;++r)if(this._composedTreeContains(n[r],t))return!0;return!1},_scrollInteractionHandler:function(t){if(t.cancelable&&this._shouldPreventScrolling(t)&&t.preventDefault(),t.targetTouches){var l=t.targetTouches[0];e.pageX=l.pageX,e.pageY=l.pageY}},_lockScrollInteractions:function(){this._boundScrollHandler=this._boundScrollHandler||this._scrollInteractionHandler.bind(this),document.addEventListener("wheel",this._boundScrollHandler,!0),document.addEventListener("mousewheel",this._boundScrollHandler,!0),document.addEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.addEventListener("touchstart",this._boundScrollHandler,!0),document.addEventListener("touchmove",this._boundScrollHandler,!0)},_unlockScrollInteractions:function(){document.removeEventListener("wheel",this._boundScrollHandler,!0),document.removeEventListener("mousewheel",this._boundScrollHandler,!0),document.removeEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.removeEventListener("touchstart",this._boundScrollHandler,!0),document.removeEventListener("touchmove",this._boundScrollHandler,!0)},_shouldPreventScrolling:function(e){var n=Polymer.dom(e).rootTarget;if("touchmove"!==e.type&&t!==n&&(t=n,l=this._getScrollableNodes(Polymer.dom(e).path)),!l.length)return!0;if("touchstart"===e.type)return!1;var o=this._getScrollInfo(e);return!this._getScrollingNode(l,o.deltaX,o.deltaY)},_getScrollableNodes:function(e){for(var t=[],l=e.indexOf(this.currentLockingElement),n=0;n<=l;n++)if(e[n].nodeType===Node.ELEMENT_NODE){var o=e[n],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t},_getScrollingNode:function(e,t,l){if(t||l)for(var n=Math.abs(l)>=Math.abs(t),o=0;o<e.length;o++){var r=e[o],c=!1;if(c=n?l<0?r.scrollTop>0:r.scrollTop<r.scrollHeight-r.clientHeight:t<0?r.scrollLeft>0:r.scrollLeft<r.scrollWidth-r.clientWidth)return r}},_getScrollInfo:function(t){var l={deltaX:t.deltaX,deltaY:t.deltaY};if("deltaX"in t);else if("wheelDeltaX"in t)l.deltaX=-t.wheelDeltaX,l.deltaY=-t.wheelDeltaY;else if("axis"in t)l.deltaX=1===t.axis?t.detail:0,l.deltaY=2===t.axis?t.detail:0;else if(t.targetTouches){var n=t.targetTouches[0];l.deltaX=e.pageX-n.pageX,l.deltaY=e.pageY-n.pageY}return l}}}()</script><dom-module id="iron-dropdown" assetpath="../bower_components/iron-dropdown/"><template><style>:host{position:fixed}#contentWrapper ::content>*{overflow:auto}#contentWrapper.animating ::content>*{overflow:hidden}</style><div id="contentWrapper"><content id="content" select=".dropdown-content"></content></div></template><script>!function(){"use strict";Polymer({is:"iron-dropdown",behaviors:[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.IronOverlayBehavior,Polymer.NeonAnimationRunnerBehavior],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1},_boundOnCaptureScroll:{type:Function,value:function(){return this._onCaptureScroll.bind(this)}}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},get _focusTarget(){return this.focusTarget||this.containedElement},ready:function(){this._scrollTop=0,this._scrollLeft=0,this._refitOnScrollRAF=null},attached:function(){this.sizingTarget&&this.sizingTarget!==this||(this.sizingTarget=this.containedElement||this)},detached:function(){this.cancelAnimation(),document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)},_openedChanged:function(){this.opened&&this.disabled?this.cancel():(this.cancelAnimation(),this._updateAnimationConfig(),this._saveScrollPosition(),this.opened?(document.addEventListener("scroll",this._boundOnCaptureScroll),!this.allowOutsideScroll&&Polymer.IronDropdownScrollManager.pushScrollLock(this)):(document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments))},_renderOpened:function(){!this.noAnimations&&this.animationConfig.open?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("open")):Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this,arguments)},_renderClosed:function(){!this.noAnimations&&this.animationConfig.close?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("close")):Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this,arguments)},_onNeonAnimationFinish:function(){this.$.contentWrapper.classList.remove("animating"),this.opened?this._finishRenderOpened():this._finishRenderClosed()},_onCaptureScroll:function(){this.allowOutsideScroll?(this._refitOnScrollRAF&&window.cancelAnimationFrame(this._refitOnScrollRAF),this._refitOnScrollRAF=window.requestAnimationFrame(this.refit.bind(this))):this._restoreScrollPosition()},_saveScrollPosition:function(){document.scrollingElement?(this._scrollTop=document.scrollingElement.scrollTop,this._scrollLeft=document.scrollingElement.scrollLeft):(this._scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this._scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},_restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this._scrollTop,document.scrollingElement.scrollLeft=this._scrollLeft):(document.documentElement.scrollTop=this._scrollTop,document.documentElement.scrollLeft=this._scrollLeft,document.body.scrollTop=this._scrollTop,document.body.scrollLeft=this._scrollLeft)},_updateAnimationConfig:function(){for(var o=this.containedElement,t=[].concat(this.openAnimationConfig||[]).concat(this.closeAnimationConfig||[]),n=0;n<t.length;n++)t[n].node=o;this.animationConfig={open:this.openAnimationConfig,close:this.closeAnimationConfig}},_updateOverlayPosition:function(){this.isAttached&&this.notifyResize()},_applyFocus:function(){var o=this.focusTarget||this.containedElement;o&&this.opened&&!this.noAutoFocus?o.focus():Polymer.IronOverlayBehaviorImpl._applyFocus.apply(this,arguments)}})}()</script></dom-module><script>Polymer({is:"fade-in-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(i){var e=i.node;return this._effect=new KeyframeEffect(e,[{opacity:"0"},{opacity:"1"}],this.timingFromConfig(i)),this._effect}})</script><script>Polymer({is:"fade-out-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"0"}],this.timingFromConfig(e)),this._effect}})</script><script>Polymer({is:"paper-menu-grow-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;return this._effect=new KeyframeEffect(i,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-grow-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;t.top;return this.setPrefixedProperty(i,"transformOrigin","0 0"),this._effect=new KeyframeEffect(i,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}})</script><dom-module id="paper-menu-button" assetpath="../bower_components/paper-menu-button/"><template><style>:host{display:inline-block;position:relative;padding:8px;outline:0;@apply(--paper-menu-button)}:host([disabled]){cursor:auto;color:var(--disabled-text-color);@apply(--paper-menu-button-disabled)}iron-dropdown{@apply(--paper-menu-button-dropdown)}.dropdown-content{@apply(--shadow-elevation-2dp);position:relative;border-radius:2px;background-color:var(--paper-menu-button-dropdown-background,--primary-background-color);@apply(--paper-menu-button-content)}:host([vertical-align=top]) .dropdown-content{margin-bottom:20px;margin-top:-10px;top:10px}:host([vertical-align=bottom]) .dropdown-content{bottom:10px;margin-bottom:-10px;margin-top:20px}#trigger{cursor:pointer}</style><div id="trigger" on-tap="toggle"><content select=".dropdown-trigger"></content></div><iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"><div class="dropdown-content"><content id="content" select=".dropdown-content"></content></div></iron-dropdown></template><script>!function(){"use strict";var e={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},n=Polymer({is:"paper-menu-button",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronControlState],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:e.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},toggle:function(){this.opened?this.close():this.open()},open:function(){this.disabled||this.$.dropdown.open()},close:function(){this.$.dropdown.close()},_onIronSelect:function(e){this.ignoreSelect||this.close()},_onIronActivate:function(e){this.closeOnActivate&&this.close()},_openedChanged:function(e,n){e?(this._dropdownContent=this.contentElement,this.fire("paper-dropdown-open")):null!=n&&this.fire("paper-dropdown-close")},_disabledChanged:function(e){Polymer.IronControlState._disabledChanged.apply(this,arguments),e&&this.opened&&this.close()},__onIronOverlayCanceled:function(e){var n=e.detail,t=(Polymer.dom(n).rootTarget,this.$.trigger),o=Polymer.dom(n).path;o.indexOf(t)>-1&&e.preventDefault()}});Object.keys(e).forEach(function(t){n[t]=e[t]}),Polymer.PaperMenuButton=n}()</script></dom-module><iron-iconset-svg name="paper-dropdown-menu" size="24"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-dropdown-menu-shared-styles" assetpath="../bower_components/paper-dropdown-menu/"><template><style>:host{display:inline-block;position:relative;text-align:left;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--paper-input-container-input:{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;cursor:pointer};@apply(--paper-dropdown-menu)}:host([disabled]){@apply(--paper-dropdown-menu-disabled)}:host([noink]) paper-ripple{display:none}:host([no-label-float]) paper-ripple{top:8px}paper-ripple{top:12px;left:0;bottom:8px;right:0;@apply(--paper-dropdown-menu-ripple)}paper-menu-button{display:block;padding:0;@apply(--paper-dropdown-menu-button)}paper-input{@apply(--paper-dropdown-menu-input)}iron-icon{color:var(--disabled-text-color);@apply(--paper-dropdown-menu-icon)}</style></template></dom-module><dom-module id="paper-dropdown-menu" assetpath="../bower_components/paper-dropdown-menu/"><template><style include="paper-dropdown-menu-shared-styles"></style><span role="button"></span><paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate="" allow-outside-scroll="[[allowOutsideScroll]]"><div class="dropdown-trigger"><paper-ripple></paper-ripple><paper-input type="text" invalid="[[invalid]]" readonly="" disabled="[[disabled]]" value="[[selectedItemLabel]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"><iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix=""></iron-icon></paper-input></div><content id="content" select=".dropdown-content"></content></paper-menu-button></template><script>!function(){"use strict";Polymer({is:"paper-dropdown-menu",behaviors:[Polymer.IronButtonState,Polymer.IronControlState,Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0,readOnly:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},dynamicAlign:{type:Boolean}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var e=this.contentElement;e&&e.selectedItem&&this._setSelectedItem(e.selectedItem)},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},open:function(){this.$.menuButton.open()},close:function(){this.$.menuButton.close()},_onIronSelect:function(e){this._setSelectedItem(e.detail.item)},_onIronDeselect:function(e){this._setSelectedItem(null)},_onTap:function(e){Polymer.Gestures.findOriginalTarget(e)===this&&this.open()},_selectedItemChanged:function(e){var t="";t=e?e.label||e.getAttribute("label")||e.textContent.trim():"",this._setValue(t),this._setSelectedItemLabel(t)},_computeMenuVerticalOffset:function(e){return e?-4:8},_getValidity:function(e){return this.disabled||!this.required||this.required&&!!this.value},_openedChanged:function(){var e=this.opened?"true":"false",t=this.contentElement;t&&t.setAttribute("aria-expanded",e)}})}()</script></dom-module><dom-module id="paper-menu-shared-styles" assetpath="../bower_components/paper-menu/"><template><style>.selectable-content>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-item)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-color,--disabled-text-color)}.selectable-content>::content>:focus{position:relative;outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus:after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-opacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}.selectable-content>::content>[colored]:focus:after{opacity:.26}</style></template></dom-module><dom-module id="paper-menu" assetpath="../bower_components/paper-menu/"><template><style include="paper-menu-shared-styles"></style><style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-color,--primary-background-color);color:var(--paper-menu-color,--primary-text-color);@apply(--paper-menu)}</style><div class="selectable-content"><content></content></div></template><script>!function(){Polymer({is:"paper-menu",behaviors:[Polymer.IronMenuBehavior]})}()</script></dom-module><script>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"}},Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperItemBehaviorImpl]</script><dom-module id="paper-item-shared-styles" assetpath="../bower_components/paper-item/"><template><style>.paper-item,:host{display:block;position:relative;min-height:var(--paper-item-min-height,48px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline:0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden]){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-weight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper-item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabled-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){position:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,:host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opacity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused-before)}</style></template></dom-module><dom-module id="paper-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item)}</style><content></content></template><script>Polymer({is:"paper-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="state-card-input_select" assetpath="state-summary/"><template><style>:host{display:block}state-badge{float:left;margin-top:10px}paper-dropdown-menu{display:block;margin-left:53px}</style><state-badge state-obj="[[stateObj]]"></state-badge><paper-dropdown-menu on-tap="stopPropagation" selected-item-label="{{selectedOption}}" label="[[stateObj.entityDisplay]]"><paper-menu class="dropdown-content" selected="[[computeSelected(stateObj)]]"><template is="dom-repeat" items="[[stateObj.attributes.options]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></template></dom-module><script>Polymer({is:"state-card-input_select",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object},selectedOption:{type:String,observer:"selectedOptionChanged"}},computeSelected:function(t){return t.attributes.options.indexOf(t.state)},selectedOptionChanged:function(t){""!==t&&t!==this.stateObj.state&&this.hass.serviceActions.callService("input_select","select_option",{option:t,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><script>Polymer.IronRangeBehavior={properties:{value:{type:Number,value:0,notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0},max:{type:Number,value:100,notify:!0},step:{type:Number,value:1,notify:!0},ratio:{type:Number,value:0,readOnly:!0,notify:!0}},observers:["_update(value, min, max, step)"],_calcRatio:function(t){return(this._clampValue(t)-this.min)/(this.max-this.min)},_clampValue:function(t){return Math.min(this.max,Math.max(this.min,this._calcStep(t)))},_calcStep:function(t){if(t=parseFloat(t),!this.step)return t;var e=Math.round((t-this.min)/this.step);return this.step<1?e/(1/this.step)+this.min:e*this.step+this.min},_validateValue:function(){var t=this._clampValue(this.value);return this.value=this.oldValue=isNaN(t)?this.oldValue:t,this.value!==t},_update:function(){this._validateValue(),this._setRatio(100*this._calcRatio(this.value))}}</script><dom-module id="paper-progress" assetpath="../bower_components/paper-progress/"><template><style>:host{display:block;width:200px;position:relative;overflow:hidden}:host([hidden]){display:none!important}#progressContainer{@apply(--paper-progress-container);position:relative}#progressContainer,.indeterminate::after{height:var(--paper-progress-height,4px)}#primaryProgress,#secondaryProgress,.indeterminate::after{@apply(--layout-fit)}#progressContainer,.indeterminate::after{background:var(--paper-progress-container-color,--google-grey-300)}:host(.transiting) #primaryProgress,:host(.transiting) #secondaryProgress{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:var(--paper-progress-transition-duration,.08s);transition-duration:var(--paper-progress-transition-duration,.08s);-webkit-transition-timing-function:var(--paper-progress-transition-timing-function,ease);transition-timing-function:var(--paper-progress-transition-timing-function,ease);-webkit-transition-delay:var(--paper-progress-transition-delay,0s);transition-delay:var(--paper-progress-transition-delay,0s)}#primaryProgress,#secondaryProgress{@apply(--layout-fit);-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0);will-change:transform}#primaryProgress{background:var(--paper-progress-active-color,--google-green-500)}#secondaryProgress{background:var(--paper-progress-secondary-color,--google-green-100)}:host([disabled]) #primaryProgress{background:var(--paper-progress-disabled-active-color,--google-grey-500)}:host([disabled]) #secondaryProgress{background:var(--paper-progress-disabled-secondary-color,--google-grey-300)}:host(:not([disabled])) #primaryProgress.indeterminate{-webkit-transform-origin:right center;transform-origin:right center;-webkit-animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}:host(:not([disabled])) #primaryProgress.indeterminate::after{content:"";-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}@-webkit-keyframes indeterminate-bar{0%{-webkit-transform:scaleX(1) translateX(-100%)}50%{-webkit-transform:scaleX(1) translateX(0)}75%{-webkit-transform:scaleX(1) translateX(0);-webkit-animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{-webkit-transform:scaleX(0) translateX(0)}}@-webkit-keyframes indeterminate-splitter{0%{-webkit-transform:scaleX(.75) translateX(-125%)}30%{-webkit-transform:scaleX(.75) translateX(-125%);-webkit-animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{-webkit-transform:scaleX(.75) translateX(125%)}100%{-webkit-transform:scaleX(.75) translateX(125%)}}@keyframes indeterminate-bar{0%{transform:scaleX(1) translateX(-100%)}50%{transform:scaleX(1) translateX(0)}75%{transform:scaleX(1) translateX(0);animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{transform:scaleX(0) translateX(0)}}@keyframes indeterminate-splitter{0%{transform:scaleX(.75) translateX(-125%)}30%{transform:scaleX(.75) translateX(-125%);animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{transform:scaleX(.75) translateX(125%)}100%{transform:scaleX(.75) translateX(125%)}}</style><div id="progressContainer"><div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div><div id="primaryProgress"></div></div></template></dom-module><script>Polymer({is:"paper-progress",behaviors:[Polymer.IronRangeBehavior],properties:{secondaryProgress:{type:Number,value:0},secondaryRatio:{type:Number,value:0,readOnly:!0},indeterminate:{type:Boolean,value:!1,observer:"_toggleIndeterminate"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"_disabledChanged"}},observers:["_progressChanged(secondaryProgress, value, min, max)"],hostAttributes:{role:"progressbar"},_toggleIndeterminate:function(e){this.toggleClass("indeterminate",e,this.$.primaryProgress)},_transformProgress:function(e,r){var s="scaleX("+r/100+")";e.style.transform=e.style.webkitTransform=s},_mainRatioChanged:function(e){this._transformProgress(this.$.primaryProgress,e)},_progressChanged:function(e,r,s,t){e=this._clampValue(e),r=this._clampValue(r);var a=100*this._calcRatio(e),i=100*this._calcRatio(r);this._setSecondaryRatio(a),this._transformProgress(this.$.secondaryProgress,a),this._transformProgress(this.$.primaryProgress,i),this.secondaryProgress=e,this.setAttribute("aria-valuenow",r),this.setAttribute("aria-valuemin",s),this.setAttribute("aria-valuemax",t)},_disabledChanged:function(e){this.setAttribute("aria-disabled",e?"true":"false")},_hideSecondaryProgress:function(e){return 0===e}})</script><dom-module id="paper-slider" assetpath="../bower_components/paper-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-slider-height,2px));margin-left:calc(15px + var(--paper-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-slider-height,2px)/ 2);height:var(--paper-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-slider-height,2px)/ 2);width:calc(30px + var(--paper-slider-height,2px));height:calc(30px + var(--paper-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-slider-knob-color,--google-blue-700);border:2px solid var(--paper-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="state-card-input_slider" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-slider{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-slider min="[[min]]" max="[[max]]" value="{{value}}" step="[[step]]" pin="" on-change="selectedValueChanged" on-tap="stopPropagation"></paper-slider></div></template></dom-module><script>Polymer({is:"state-card-input_slider",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object,observer:"stateObjectChanged"},min:{type:Number},max:{type:Number},step:{type:Number},value:{type:Number}},stateObjectChanged:function(t){this.value=Number(t.state),this.min=Number(t.attributes.min),this.max=Number(t.attributes.max),this.step=Number(t.attributes.step)},selectedValueChanged:function(){this.value!==Number(this.stateObj.state)&&this.hass.serviceActions.callService("input_slider","select_value",{value:this.value,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><dom-module id="state-card-media_player" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);margin-left:16px;text-align:right}.main-text{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);text-transform:capitalize}.main-text[take-height]{line-height:40px}.secondary-text{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="main-text" take-height$="[[!secondaryText]]">[[computePrimaryText(stateObj, isPlaying)]]</div><div class="secondary-text">[[secondaryText]]</div></div></div></template></dom-module><script>Polymer({PLAYING_STATES:["playing","paused"],is:"state-card-media_player",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"},secondaryText:{type:String,computed:"computeSecondaryText(stateObj)"}},computeIsPlaying:function(t){return this.PLAYING_STATES.indexOf(t.state)!==-1},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}})</script><dom-module id="state-card-scene" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button on-tap="activateScene">ACTIVATE</paper-button></div></template></dom-module><script>Polymer({is:"state-card-scene",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},activateScene:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-script" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><template is="dom-if" if="[[stateObj.attributes.can_cancel]]"><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></template><template is="dom-if" if="[[!stateObj.attributes.can_cancel]]"><paper-button on-tap="fireScript">ACTIVATE</paper-button></template></div></template></dom-module><script>Polymer({is:"state-card-script",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},fireScript:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-toggle" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></div></template></dom-module><script>Polymer({is:"state-card-toggle",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-weblink" assetpath="state-summary/"><template><style>:host{display:block}.name{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);color:var(--primary-color);text-transform:capitalize;line-height:40px;margin-left:16px}</style><state-badge state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-badge><a href$="[[stateObj.state]]" target="_blank" class="name" id="link">[[stateObj.entityDisplay]]</a></template></dom-module><script>Polymer({is:"state-card-weblink",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation(),t.target!==this.$.link&&window.open(this.stateObj.state,"_blank")}})</script><script>Polymer({is:"state-card-content",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},observers:["inputChanged(hass, inDialog, stateObj)"],inputChanged:function(t,e,s){s&&window.hassUtil.dynamicContentUpdater(this,"STATE-CARD-"+window.hassUtil.stateCardType(this.hass,s).toUpperCase(),{hass:t,stateObj:s,inDialog:e})}})</script><dom-module id="ha-entities-card" assetpath="cards/"><template><style is="custom-style" include="iron-flex"></style><style>.states{padding-bottom:16px}.state{padding:4px 16px;cursor:pointer}.header{@apply(--paper-font-headline);line-height:40px;color:var(--primary-text-color);padding:20px 16px 12px}.header .name{@apply(--paper-font-common-nowrap)}ha-entity-toggle{margin-left:16px}.header-more-info{cursor:pointer}</style><ha-card><div class$="[[computeTitleClass(groupEntity)]]" on-tap="entityTapped"><div class="flex name">[[computeTitle(states, groupEntity)]]</div><template is="dom-if" if="[[showGroupToggle(groupEntity, states)]]"><ha-entity-toggle hass="[[hass]]" state-obj="[[groupEntity]]"></ha-entity-toggle></template></div><div class="states"><template is="dom-repeat" items="[[states]]"><div class="state" on-tap="entityTapped"><state-card-content hass="[[hass]]" class="state-card" state-obj="[[item]]"></state-card-content></div></template></div></ha-card></template></dom-module><script>Polymer({is:"ha-entities-card",properties:{hass:{type:Object},states:{type:Array},groupEntity:{type:Object}},computeTitle:function(t,e){return e?e.entityDisplay:t[0].domain.replace(/_/g," ")},computeTitleClass:function(t){var e="header horizontal layout center ";return t&&(e+="header-more-info"),e},entityTapped:function(t){var e;t.target.classList.contains("paper-toggle-button")||t.target.classList.contains("paper-icon-button")||!t.model&&!this.groupEntity||(t.stopPropagation(),e=t.model?t.model.item.entityId:this.groupEntity.entityId,this.async(function(){this.hass.moreInfoActions.selectEntity(e)}.bind(this),1))},showGroupToggle:function(t,e){var n;return!(!t||!e||"hidden"===t.attributes.control||"on"!==t.state&&"off"!==t.state)&&(n=e.reduce(function(t,e){return t+window.hassUtil.canToggle(this.hass,e.entityId)},0),n>1)}})</script><dom-module id="ha-introduction-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}a{color:var(--dark-primary-color)}ul{margin:8px;padding-left:16px}li{margin-bottom:8px}.content{padding:0 16px 16px}.install{display:block;line-height:1.5em;margin-top:8px;margin-bottom:16px}</style><ha-card header="Welcome Home!"><div class="content"><template is="dom-if" if="[[hass.demo]]">To install Home Assistant, run:<br><code class="install">pip3 install homeassistant<br>hass --open-ui</code></template>Here are some resources to get started.<ul><template is="dom-if" if="[[hass.demo]]"><li><a href="https://home-assistant.io/getting-started/">Home Assistant website</a></li><li><a href="https://home-assistant.io/getting-started/">Installation instructions</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting/">Troubleshooting your installation</a></li></template><li><a href="https://home-assistant.io/getting-started/configuration/" target="_blank">Configuring Home Assistant</a></li><li><a href="https://home-assistant.io/components/" target="_blank">Available components</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting-configuration/" target="_blank">Troubleshooting your configuration</a></li><li><a href="https://home-assistant.io/help/" target="_blank">Ask community for help</a></li></ul><template is="dom-if" if="[[showHideInstruction]]">To remove this card, edit your config in <code>configuration.yaml</code> and disable the <code>introduction</code> component.</template></div></ha-card></template></dom-module><script>Polymer({is:"ha-introduction-card",properties:{hass:{type:Object},showHideInstruction:{type:Boolean,value:!0}}})</script><dom-module id="ha-media_player-card" assetpath="cards/"><template><style include="paper-material iron-flex iron-flex-alignment iron-positioning">:host{display:block;position:relative;font-size:0;border-radius:2px;overflow:hidden}.banner{position:relative;background-color:#fff;border-top-left-radius:2px;border-top-right-radius:2px}.banner:before{display:block;content:"";width:100%;padding-top:56%;transition:padding-top .8s}.banner.no-cover{background-position:center center;background-image:url(/static/images/card_media_player_bg.png);background-repeat:no-repeat;background-color:var(--primary-color)}.banner.content-type-music:before{padding-top:100%}.banner.no-cover:before{padding-top:88px}.banner>.cover{position:absolute;top:0;left:0;right:0;bottom:0;border-top-left-radius:2px;border-top-right-radius:2px;background-position:center center;background-size:cover;transition:opacity .8s;opacity:1}.banner.is-off>.cover{opacity:0}.banner>.caption{@apply(--paper-font-caption);position:absolute;left:0;right:0;bottom:0;background-color:rgba(0,0,0,var(--dark-secondary-opacity));padding:8px 16px;font-size:14px;font-weight:500;color:#fff;transition:background-color .5s}.banner.is-off>.caption{background-color:initial}.banner>.caption .title{@apply(--paper-font-common-nowrap);font-size:1.2em;margin:8px 0 4px}.progress{width:100%;--paper-progress-active-color:var(--accent-color);--paper-progress-container-color:#FFF}.controls{position:relative;@apply(--paper-font-body1);padding:8px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:#fff}.controls paper-icon-button{width:44px;height:44px}paper-icon-button{opacity:var(--dark-primary-opacity)}paper-icon-button[disabled]{opacity:var(--dark-disabled-opacity)}paper-icon-button.primary{width:56px!important;height:56px!important;background-color:var(--primary-color);color:#fff;border-radius:50%;padding:8px;transition:background-color .5s}paper-icon-button.primary[disabled]{background-color:rgba(0,0,0,var(--dark-disabled-opacity))}[invisible]{visibility:hidden!important}</style><div class$="[[computeBannerClasses(playerObj)]]"><div class="cover" id="cover"></div><div class="caption">[[stateObj.entityDisplay]]<div class="title">[[playerObj.primaryText]]</div>[[playerObj.secondaryText]]<br></div></div><paper-progress max="[[stateObj.attributes.media_duration]]" value="[[playbackPosition]]" hidden$="[[computeHideProgress(playerObj)]]" class="progress"></paper-progress><div class="controls layout horizontal justified"><paper-icon-button icon="mdi:power" on-tap="handleTogglePower" invisible$="[[computeHidePowerButton(playerObj)]]" class="self-center secondary"></paper-icon-button><div><paper-icon-button icon="mdi:skip-previous" invisible$="[[!playerObj.supportsPreviousTrack]]" disabled="[[playerObj.isOff]]" on-tap="handlePrevious"></paper-icon-button><paper-icon-button class="primary" icon="[[computePlaybackControlIcon(playerObj)]]" invisible="[[!computePlaybackControlIcon(playerObj)]]" disabled="[[playerObj.isOff]]" on-tap="handlePlaybackControl"></paper-icon-button><paper-icon-button icon="mdi:skip-next" invisible$="[[!playerObj.supportsNextTrack]]" disabled="[[playerObj.isOff]]" on-tap="handleNext"></paper-icon-button></div><paper-icon-button icon="mdi:dots-vertical" on-tap="handleOpenMoreInfo" class="self-center secondary"></paper-icon-button></div></template></dom-module><script>Polymer({is:"ha-media_player-card",properties:{hass:{type:Object},stateObj:{type:Object},playerObj:{type:Object,computed:"computePlayerObj(stateObj)",observer:"playerObjChanged"},playbackControlIcon:{type:String,computed:"computePlaybackControlIcon(playerObj)"},playbackPosition:{type:Number},elevation:{type:Number,value:1,reflectToAttribute:!0}},created:function(){this.updatePlaybackPosition=this.updatePlaybackPosition.bind(this)},playerObjChanged:function(t){var e=t.stateObj.attributes.entity_picture;e?this.$.cover.style.backgroundImage="url("+e+")":this.$.cover.style.backgroundImage="",t.isPlaying?(this._positionTracking||(this._positionTracking=setInterval(this.updatePlaybackPosition,1e3)),this.updatePlaybackPosition()):this._positionTracking&&(clearInterval(this._positionTracking),this._positionTracking=null,this.playbackPosition=0)},updatePlaybackPosition:function(){this.playbackPosition=this.playerObj.currentProgress},computeBannerClasses:function(t){var e="banner";return t.isOff||t.isIdle?e+=" is-off no-cover":t.stateObj.attributes.entity_picture?"music"===t.stateObj.attributes.media_content_type&&(e+=" content-type-music"):e+=" no-cover",e},computeHideProgress:function(t){return!t.showProgress},computeHidePowerButton:function(t){return t.isOff?!t.supportsTurnOn:!t.supportsTurnOff},computePlayerObj:function(t){return t.domainModel(this.hass)},computePlaybackControlIcon:function(t){return t.isPlaying?t.supportsPause?"mdi:pause":"mdi:stop":t.isPaused||t.isOff||t.isIdle?"mdi:play":""},handleNext:function(t){t.stopPropagation(),this.playerObj.nextTrack()},handleOpenMoreInfo:function(t){t.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)},1)},handlePlaybackControl:function(t){t.stopPropagation(),this.playerObj.mediaPlayPause()},handlePrevious:function(t){t.stopPropagation(),this.playerObj.previousTrack()},handleTogglePower:function(t){t.stopPropagation(),this.playerObj.togglePower()}})</script><dom-module id="ha-persistent_notification-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}.content{padding:0 16px 16px}paper-button{margin:8px;font-weight:500}</style><ha-card header="[[computeTitle(stateObj)]]"><div id="pnContent" class="content"></div><paper-button on-tap="dismissTap">DISMISS</paper-button></ha-card></template></dom-module><script>Polymer({is:"ha-persistent_notification-card",properties:{hass:{type:Object},stateObj:{type:Object},scriptLoaded:{type:Boolean,value:!1}},observers:["computeContent(stateObj, scriptLoaded)"],computeTitle:function(t){return t.attributes.title||t.entityDisplay},loadScript:function(){var t=function(){this.scriptLoaded=!0}.bind(this),e=function(){console.error("Micromarkdown was not loaded.")};this.importHref("/static/micromarkdown-js.html",t,e)},computeContent:function(t,e){var i="",n="";e&&(i=this.$.pnContent,n=window.micromarkdown.parse(t.state),i.innerHTML=n)},ready:function(){this.loadScript()},dismissTap:function(t){t.preventDefault(),this.hass.entityActions.delete(this.stateObj)}})</script><script>Polymer({is:"ha-card-chooser",properties:{cardData:{type:Object,observer:"cardDataChanged"}},cardDataChanged:function(a){a&&window.hassUtil.dynamicContentUpdater(this,"HA-"+a.cardType.toUpperCase()+"-CARD",a)}})</script><dom-module id="ha-cards" assetpath="components/"><template><style is="custom-style" include="iron-flex iron-flex-factors"></style><style>:host{display:block;padding-top:8px;padding-right:8px}.badges{font-size:85%;text-align:center}.column{max-width:500px;overflow-x:hidden}.zone-card{margin-left:8px;margin-bottom:8px}@media (max-width:500px){:host{padding-right:0}.zone-card{margin-left:0}}@media (max-width:599px){.column{max-width:600px}}</style><div class="main"><template is="dom-if" if="[[cards.badges]]"><div class="badges"><template is="dom-if" if="[[cards.demo]]"><ha-demo-badge></ha-demo-badge></template><ha-badges-card states="[[cards.badges]]" hass="[[hass]]"></ha-badges-card></div></template><div class="horizontal layout center-justified"><template is="dom-repeat" items="[[cards.columns]]" as="column"><div class="column flex-1"><template is="dom-repeat" items="[[column]]" as="card"><div class="zone-card"><ha-card-chooser card-data="[[card]]" hass="[[hass]]"></ha-card-chooser></div></template></div></template></div></div></template></dom-module><script>!function(){"use strict";function t(t){return t in o?o[t]:30}function e(t){return"group"===t.domain?t.attributes.order:t.entityDisplay.toLowerCase()}var n={camera:4,media_player:3,persistent_notification:0},o={configurator:-20,persistent_notification:-15,group:-10,a:-1,updater:0,sun:1,device_tracker:2,alarm_control_panel:3,sensor:5,binary_sensor:6};Polymer({is:"ha-cards",properties:{hass:{type:Object},showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},panelVisible:{type:Boolean},viewVisible:{type:Boolean},cards:{type:Object}},observers:["updateCards(columns, states, showIntroduction, panelVisible, viewVisible)"],updateCards:function(t,e,n,o,r){o&&r&&this.debounce("updateCards",function(){this.panelVisible&&this.viewVisible&&(this.cards=this.computeCards(t,e,n))}.bind(this))},computeCards:function(o,r,s){function i(t){return t.filter(function(t){return!(t.entityId in h)})}function a(t){var e=0;for(p=e;p<y.length;p++){if(y[p]<5){e=p;break}y[p]<y[e]&&(e=p)}return y[e]+=t,e}function u(t,e,o){var r,s,i,u;0!==e.length&&(r=[],s=[],i=0,e.forEach(function(t){t.domain in n?(r.push(t),i+=n[t.domain]):(s.push(t),i++)}),i+=s.length>1,u=a(i),s.length>0&&f.columns[u].push({hass:d,cardType:"entities",states:s,groupEntity:o||!1}),r.forEach(function(t){f.columns[u].push({hass:d,cardType:t.domain,stateObj:t})}))}var c,p,d=this.hass,l=r.groupBy(function(t){return t.domain}),h={},f={demo:!1,badges:[],columns:[]},y=[];for(p=0;p<o;p++)f.columns.push([]),y.push(0);return s&&f.columns[a(5)].push({hass:d,cardType:"introduction",showHideInstruction:r.size>0&&!d.demo}),c=this.hass.util.expandGroup,l.keySeq().sortBy(function(e){return t(e)}).forEach(function(n){var o;return"a"===n?void(f.demo=!0):(o=t(n),void(o>=0&&o<10?f.badges.push.apply(f.badges,i(l.get(n)).sortBy(e).toArray()):"group"===n?l.get(n).sortBy(e).forEach(function(t){var e=c(t,r);e.forEach(function(t){h[t.entityId]=!0}),u(t.entityId,e.toArray(),t)}):u(n,i(l.get(n)).sortBy(e).toArray())))}),f.columns=f.columns.filter(function(t){return t.length>0}),f}})}()</script><dom-module id="partial-cards" assetpath="layouts/"><template><style include="iron-flex iron-positioning ha-style">:host{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-header-layout{background-color:#E5E5E5}paper-tabs{margin-left:12px;--paper-tabs-selection-bar-color:#FFF;text-transform:uppercase}</style><app-header-layout has-scrolling-region="" id="layout"><app-header effects="waterfall" condenses="" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">[[computeTitle(views, locationName)]]</div><paper-icon-button icon="mdi:microphone" hidden$="[[!canListen]]" on-tap="handleListenClick"></paper-icon-button></app-toolbar><div sticky="" hidden$="[[!views.length]]"><paper-tabs scrollable="" selected="[[currentView]]" attr-for-selected="data-entity" on-iron-select="handleViewSelected"><paper-tab data-entity="" on-tap="scrollToTop">[[locationName]]</paper-tab><template is="dom-repeat" items="[[views]]"><paper-tab data-entity$="[[item.entityId]]" on-tap="scrollToTop"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></paper-tab></template></paper-tabs></div></app-header><iron-pages attr-for-selected="data-view" selected="[[currentView]]" selected-attribute="view-visible"><ha-cards data-view="" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards><template is="dom-repeat" items="[[views]]"><ha-cards data-view$="[[item.entityId]]" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards></template></iron-pages></app-header-layout></template></dom-module><script>Polymer({is:"partial-cards",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1,observer:"handleWindowChange"},panelVisible:{type:Boolean,value:!1},_columns:{type:Number,value:1},canListen:{type:Boolean,bindNuclear:function(e){return[e.voiceGetters.isVoiceSupported,e.configGetters.isComponentLoaded("conversation"),function(e,t){return e&&t}]}},introductionLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("introduction")}},locationName:{type:String,bindNuclear:function(e){return e.configGetters.locationName}},currentView:{type:String,bindNuclear:function(e){return[e.viewGetters.currentView,function(e){return e||""}]}},views:{type:Array,bindNuclear:function(e){return[e.viewGetters.views,function(e){return e.valueSeq().sortBy(function(e){return e.attributes.order}).toArray()}]}},states:{type:Object,bindNuclear:function(e){return e.viewGetters.currentViewEntities}}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this.mqls=[300,600,900,1200].map(function(e){var t=window.matchMedia("(min-width: "+e+"px)");return t.addListener(this.handleWindowChange),t}.bind(this))},detached:function(){this.mqls.forEach(function(e){e.removeListener(this.handleWindowChange)})},handleWindowChange:function(){var e=this.mqls.reduce(function(e,t){return e+t.matches},0);this._columns=Math.max(1,e-(!this.narrow&&this.showMenu))},scrollToTop:function(){var e=0,t=this.$.layout.header.scrollTarget,n=function(e,t,n,i){return e/=i,-n*e*(e-2)+t},i=Math.random(),o=200,r=Date.now(),a=t.scrollTop,s=e-a;this._currentAnimationId=i,function c(){var u=Date.now(),l=u-r;l>o?t.scrollTop=e:this._currentAnimationId===i&&(t.scrollTop=n(l,a,s,o),requestAnimationFrame(c.bind(this)))}.call(this)},handleListenClick:function(){this.hass.voiceActions.listen()},handleViewSelected:function(e){var t=e.detail.item.getAttribute("data-entity")||null,n=this.currentView||null;t!==n&&this.async(function(){this.hass.viewActions.selectView(t)}.bind(this),0)},computeTitle:function(e,t){return e.length>0?"Home Assistant":t},computeShowIntroduction:function(e,t,n){return""===e&&(t||0===n.size)}})</script><style is="custom-style">html{font-size:14px;--dark-primary-color:#0288D1;--default-primary-color:#03A9F4;--primary-color:#03A9F4;--light-primary-color:#B3E5FC;--text-primary-color:#ffffff;--accent-color:#FF9800;--primary-background-color:#ffffff;--primary-text-color:#212121;--secondary-text-color:#727272;--disabled-text-color:#bdbdbd;--divider-color:#B6B6B6;--paper-toggle-button-checked-ink-color:#039be5;--paper-toggle-button-checked-button-color:#039be5;--paper-toggle-button-checked-bar-color:#039be5;--paper-slider-knob-color:var(--primary-color);--paper-slider-knob-start-color:var(--primary-color);--paper-slider-pin-color:var(--primary-color);--paper-slider-active-color:var(--primary-color);--paper-slider-secondary-color:var(--light-primary-color);--paper-slider-container-color:var(--divider-color);--google-red-500:#db4437;--google-blue-500:#4285f4;--google-green-500:#0f9d58;--google-yellow-500:#f4b400;--paper-grey-50:#fafafa;--paper-green-400:#66bb6a;--paper-blue-400:#42a5f5;--paper-orange-400:#ffa726;--dark-divider-opacity:0.12;--dark-disabled-opacity:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider-opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light-primary-opacity:1.0}</style><dom-module id="ha-style" assetpath="resources/"><template><style>:host{@apply(--paper-font-body1)}app-header,app-toolbar{background-color:var(--primary-color);font-weight:400;color:#fff}app-toolbar ha-menu-button+[main-title]{margin-left:24px}h1{@apply(--paper-font-title)}</style></template></dom-module><dom-module id="partial-panel-resolver" assetpath="layouts/"><template><style include="iron-flex ha-style">[hidden]{display:none!important}.placeholder{height:100%}.layout{height:calc(100% - 64px)}</style><div hidden$="[[resolved]]" class="placeholder"><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button></app-toolbar><div class="layout horizontal center-center"><template is="dom-if" if="[[!errorLoading]]"><paper-spinner active=""></paper-spinner></template><template is="dom-if" if="[[errorLoading]]">Error loading panel :(</template></div></div><span id="panel" hidden$="[[!resolved]]"></span></template></dom-module><script>Polymer({is:"partial-panel-resolver",behaviors:[window.hassBehavior],properties:{hass:{type:Object,observer:"updateAttributes"},narrow:{type:Boolean,value:!1,observer:"updateAttributes"},showMenu:{type:Boolean,value:!1,observer:"updateAttributes"},resolved:{type:Boolean,value:!1},errorLoading:{type:Boolean,value:!1},panel:{type:Object,bindNuclear:function(e){return e.navigationGetters.activePanel},observer:"panelChanged"}},panelChanged:function(e){return e?(this.resolved=!1,this.errorLoading=!1,void this.importHref(e.get("url"),function(){window.hassUtil.dynamicContentUpdater(this.$.panel,"ha-panel-"+e.get("component_name"),{hass:this.hass,narrow:this.narrow,showMenu:this.showMenu,panel:e.toJS()}),this.resolved=!0}.bind(this),function(){this.errorLoading=!0}.bind(this),!0)):void(this.$.panel.lastChild&&this.$.panel.removeChild(this.$.panel.lastChild))},updateAttributes:function(){var e=Polymer.dom(this.$.panel).lastChild;e&&(e.hass=this.hass,e.narrow=this.narrow,e.showMenu=this.showMenu)}})</script><dom-module id="paper-toast" assetpath="../bower_components/paper-toast/"><template><style>:host{display:block;position:fixed;background-color:var(--paper-toast-background-color,#323232);color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding:16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px);@apply(--paper-font-common-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-width:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}</style><span id="label">{{text}}</span><content></content></template><script>!function(){var e=null;Polymer({is:"paper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Object,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,value:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,value:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0},noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionEnd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `opened` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.duration!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.requestAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:function(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._finishRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==this._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.opened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}),this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e===this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClosed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:function(e){this.positionTarget=e}})}()</script></dom-module><dom-module id="notification-manager" assetpath="managers/"><template><style>paper-toast{z-index:1}</style><paper-toast id="toast" text="{{text}}" no-cancel-on-outside-click="[[neg]]"></paper-toast><paper-toast id="connToast" duration="0" text="Connection lost. Reconnecting…" opened="[[!isStreaming]]"></paper-toast></template></dom-module><script>Polymer({is:"notification-manager",behaviors:[window.hassBehavior],properties:{hass:{type:Object},isStreaming:{type:Boolean,bindNuclear:function(t){return t.streamGetters.isStreamingEvents}},neg:{type:Boolean,value:!1},text:{type:String,bindNuclear:function(t){return t.notificationGetters.lastNotificationMessage},observer:"showNotification"},toastClass:{type:String,value:""}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this._mediaq=window.matchMedia("(max-width: 599px)"),this._mediaq.addListener(this.handleWindowChange)},attached:function(){this.handleWindowChange(this._mediaq)},detached:function(){this._mediaq.removeListener(this.handleWindowChange)},handleWindowChange:function(t){this.$.toast.classList.toggle("fit-bottom",t.matches),this.$.connToast.classList.toggle("fit-bottom",t.matches)},showNotification:function(t){t&&this.$.toast.show()}})</script><script>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.closingReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialog-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirmed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBehaviorImpl]</script><dom-module id="paper-dialog-shared-styles" assetpath="../bower_components/paper-dialog-behavior/"><template><style>:host{display:block;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-background-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--paper-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::content>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:host>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bottom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;padding:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-color);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style></template></dom-module><dom-module id="paper-dialog" assetpath="../bower_components/paper-dialog/"><template><style include="paper-dialog-shared-styles"></style><content></content></template></dom-module><script>!function(){Polymer({is:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRunnerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}})}()</script><dom-module id="paper-dialog-scrollable" assetpath="../bower_components/paper-dialog-scrollable/"><template><style>:host{display:block;@apply(--layout-relative)}:host(.is-scrolled:not(:first-child))::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--divider-color)}:host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--divider-color)}.scrollable{padding:0 24px;@apply(--layout-scroll);@apply(--paper-dialog-scrollable)}.fit{@apply(--layout-fit)}</style><div id="scrollable" class="scrollable"><content></content></div></template></dom-module><script>Polymer({is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},listeners:{"scrollable.scroll":"_scroll"},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget()},attached:function(){this.classList.add("no-padding"),this._ensureTarget(),requestAnimationFrame(this._scroll.bind(this))},_scroll:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight<this.scrollTarget.scrollHeight),this.toggleClass("scrolled-to-bottom",this.scrollTarget.scrollTop+this.scrollTarget.offsetHeight>=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||Polymer.dom(this).parentNode,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(Polymer.PaperDialogBehaviorImpl)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})</script><script>!function(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded:{type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,value:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary()},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.message),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(null),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i))},_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bind(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&&this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFromUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNotify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMacro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback%% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbackMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this),this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript:function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handleError.bind(this);var t=document.querySelector("script")||document.body;t.parentNode.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.script=null},handleError:function(r){this.error=new Error("Library failed to load"),this.notifyAll(),this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.slice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete window[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:function(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}}}()</script><script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent:String}})</script><script>Polymer({is:"google-legacy-loader",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://www.google.com/jsapi?callback=%%callback%%"},notifyEvent:{type:String,value:"api-load"}},get api(){return google}})</script><style>div.charts-tooltip{z-index:200!important}</style><script>Polymer({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){function t(t,e,n,i){var d=e.replace(/_/g," ");a.addRow([t,d,n,i])}var e,a,n,i,d,l=Polymer.dom(this),o=this.data;if(this.isAttached){for(;l.node.lastChild;)l.node.removeChild(l.node.lastChild);o&&0!==o.length&&(e=new window.google.visualization.Timeline(this),a=new window.google.visualization.DataTable,a.addColumn({type:"string",id:"Entity"}),a.addColumn({type:"string",id:"State"}),a.addColumn({type:"date",id:"Start"}),a.addColumn({type:"date",id:"End"}),n=new Date(o.reduce(function(t,e){return Math.min(t,e[0].lastChangedAsDate)},new Date)),i=new Date(n),i.setDate(i.getDate()+1),i>new Date&&(i=new Date),d=0,o.forEach(function(e){var a,n,l=null,o=null;0!==e.length&&(a=e[0].entityDisplay,e.forEach(function(e){null!==l&&e.state!==l?(n=e.lastChangedAsDate,t(a,l,o,n),l=e.state,o=n):null===l&&(l=e.state,o=e.lastChangedAsDate)}),t(a,l,o,i),d++)}),e.draw(a,{height:55+42*d,timeline:{showRowLabels:o.length>1},hAxis:{format:"H:mm"}}))}}})</script><script>!function(){"use strict";function t(t,e){var a,r=[];for(a=t;a<e;a++)r.push(a);return r}function e(t){var e=parseFloat(t);return!isNaN(e)&&isFinite(e)?e:null}Polymer({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"},chartEngine:{type:Object}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){var a,r,n,i,u,o=this.unit,s=this.data;this.isAttached&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(this)),0!==s.length&&(a={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",vAxes:{0:{title:o}},hAxis:{format:"H:mm"},chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}},this.isSingleDevice&&(a.legend.position="none",a.vAxes[0].title=null,a.chartArea.left=40,a.chartArea.height="80%",a.chartArea.top=5,a.enableInteractivity=!1),r=new Date(Math.min.apply(null,s.map(function(t){return t[0].lastChangedAsDate}))),n=new Date(r),n.setDate(n.getDate()+1),n>new Date&&(n=new Date),i=s.map(function(t){function a(t,e){r&&e&&c.push([t[0]].concat(r.slice(1).map(function(t,a){return e[a]?t:null}))),c.push(t),r=t}var r,i,u,o,s=t[t.length-1],l=s.domain,d=s.entityDisplay,c=[],h=new window.google.visualization.DataTable;return h.addColumn({type:"datetime",id:"Time"}),"thermostat"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):"climate"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):(h.addColumn("number",d),o="sensor"!==l&&[!0],t.forEach(function(t){var r=e(t.state);a([t.lastChangedAsDate,r],o)})),a([n].concat(r.slice(1)),!1),h.addRows(c),h}),u=1===i.length?i[0]:i.slice(1).reduce(function(e,a){return window.google.visualization.data.join(e,a,"full",[[0,0]],t(1,e.getNumberOfColumns()),t(1,a.getNumberOfColumns()))},i[0]),this.chartEngine.draw(u,a)))}})}()</script><dom-module id="state-history-charts" assetpath="components/"><template><style>:host{display:block}.loading-container{text-align:center;padding:8px}.loading{height:0;overflow:hidden}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><div hidden$="[[!isLoading]]" class="loading-container"><paper-spinner active="" alt="Updating history data"></paper-spinner></div><div class$="[[computeContentClasses(isLoading)]]"><template is="dom-if" if="[[computeIsEmpty(stateHistory)]]">No state history found.</template><state-history-chart-timeline data="[[groupedStateHistory.timeline]]" is-single-device="[[isSingleDevice]]"></state-history-chart-timeline><template is="dom-repeat" items="[[groupedStateHistory.line]]"><state-history-chart-line unit="[[item.unit]]" data="[[item.data]]" is-single-device="[[isSingleDevice]]"></state-history-chart-line></template></div></template></dom-module><script>Polymer({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){var i,o={},n=[];return t||!e?{line:[],timeline:[]}:(e.forEach(function(t){var e,i;t&&0!==t.size&&(e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=!!e&&e.attributes.unit_of_measurement,i?i in o?o[i].push(t.toArray()):o[i]=[t.toArray()]:n.push(t.toArray()))}),n=n.length>0&&n,i=Object.keys(o).map(function(t){return{unit:t,data:o[t]}}),{line:i,timeline:n})},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){this.apiLoaded=!0}.bind(this)})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size}})</script><dom-module id="more-info-automation" assetpath="more-infos/"><template><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px}</style><p>Last triggered:<ha-relative-time datetime="[[stateObj.attributes.last_triggered]]"></ha-relative-time></p><paper-button on-tap="handleTriggerTapped">TRIGGER</paper-button></template></dom-module><script>Polymer({is:"more-info-automation",properties:{hass:{type:Object},stateObj:{type:Object}},handleTriggerTapped:function(){this.hass.serviceActions.callService("automation","trigger",{entity_id:this.stateObj.entityId})}})</script><dom-module id="paper-range-slider" assetpath="../bower_components/paper-range-slider/"><template><style>:host{--paper-range-slider-width:200px;@apply(--layout);@apply(--layout-justified);@apply(--layout-center);--paper-range-slider-lower-color:var(--paper-grey-400);--paper-range-slider-active-color:var(--primary-color);--paper-range-slider-higher-color:var(--paper-grey-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-pin-start-color:var(--paper-grey-400);--paper-range-slider-knob-start-color:transparent;--paper-range-slider-knob-start-border-color:var(--paper-grey-400)}#sliderOuterDiv_0{display:inline-block;width:var(--paper-range-slider-width)}#sliderOuterDiv_1{position:relative;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sliderKnobMinMax{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.divSpanWidth{position:absolute;width:100%;display:block;top:0}#sliderMax{--paper-single-range-slider-bar-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-active-color:var(--paper-range-slider-active-color);--paper-single-range-slider-secondary-color:var(--paper-range-slider-higher-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}#sliderMin{--paper-single-range-slider-active-color:var(--paper-range-slider-lower-color);--paper-single-range-slider-secondary-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}</style><div id="sliderOuterDiv_0" style=""><div id="sliderOuterDiv_1"><div id="backDiv" class="divSpanWidth" on-down="_backDivDown" on-tap="_backDivTap" on-up="_backDivUp" on-track="_backDivOnTrack" on-transitionend="_backDivTransEnd"><div id="backDivInner_0" style="line-height:200%"><br></div></div><div id="sliderKnobMin" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMinOnTrack"></div><div id="sliderKnobMax" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMaxOnTrack"></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMax" disabled$="[[disabled]]" on-down="_sliderMaxDown" on-up="_sliderMaxUp" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMax]]" secondary-progress="[[max]]" style="width:100%"></paper-single-range-slider></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMin" disabled$="[[disabled]]" on-down="_sliderMinDown" on-up="_sliderMinUp" noink="" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMin]]" style="width:100%"></paper-single-range-slider></div><div id="backDivInner_1" style="line-height:100%"><br></div></div></div></template><script>Polymer({is:"paper-range-slider",behaviors:[Polymer.IronRangeBehavior],properties:{sliderWidth:{type:String,value:"",notify:!0,reflectToAttribute:!0},style:{type:String,value:"",notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0,reflectToAttribute:!0},max:{type:Number,value:100,notify:!0,reflectToAttribute:!0},valueMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueMax:{type:Number,value:100,notify:!0,reflectToAttribute:!0},step:{type:Number,value:1,notify:!0,reflectToAttribute:!0},valueDiffMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueDiffMax:{type:Number,value:0,notify:!0,reflectToAttribute:!0},alwaysShowPin:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},snaps:{type:Boolean,value:!1,notify:!0},disabled:{type:Boolean,value:!1,notify:!0},singleSlider:{type:Boolean,value:!1,notify:!0},transDuration:{type:Number,value:250},tapValueExtend:{type:Boolean,value:!0,notify:!0},tapValueReduce:{type:Boolean,value:!1,notify:!0},tapValueMove:{type:Boolean,value:!1,notify:!0}},ready:function(){function i(i){return void 0!=i&&null!=i}i(this._nInitTries)||(this._nInitTries=0);var t=this.$$("#sliderMax").$$("#sliderContainer");if(i(t)&&(t=t.offsetWidth>0),i(t)&&(t=this.$$("#sliderMin").$$("#sliderContainer")),i(t)&&(t=t.offsetWidth>0),i(t))this._renderedReady();else{if(this._nInitTries<1e3){var e=this;setTimeout(function(){e.ready()},10)}else console.error("could not properly initialize the underlying paper-single-range-slider elements ...");this._nInitTries++}},_renderedReady:function(){this.init(),this._setPadding();var i=this;this.$$("#sliderMin").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.$.sliderMin._expandKnob(),i.$.sliderMax._expandKnob()}),this.$$("#sliderMax").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue))}),this.$$("#sliderMin").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.alwaysShowPin&&i.$.sliderMin._expandKnob()}),this.$$("#sliderMax").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue)),i.alwaysShowPin&&i.$.sliderMax._expandKnob()})},_setPadding:function(){var i=document.createElement("div");i.setAttribute("style","position:absolute; top:0px; opacity:0;"),i.innerHTML="invisibleText",document.body.insertBefore(i,document.body.children[0]);var t=i.offsetHeight/2;this.style.paddingTop=t+"px",this.style.paddingBottom=t+"px",i.parentNode.removeChild(i)},_setValueDiff:function(){this._valueDiffMax=Math.max(this.valueDiffMax,0),this._valueDiffMin=Math.max(this.valueDiffMin,0)},_getValuesMinMax:function(i,t){var e=null!=i&&i>=this.min&&i<=this.max,s=null!=t&&t>=this.min&&t<=this.max;if(!e&&!s)return[this.valueMin,this.valueMax];var n=e?i:this.valueMin,a=s?t:this.valueMax;n=Math.min(Math.max(n,this.min),this.max),a=Math.min(Math.max(a,this.min),this.max);var l=a-n;return e?l<this._valueDiffMin?(a=Math.min(this.max,n+this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(n=a-this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(a=n+this._valueDiffMax):l<this._valueDiffMin?(n=Math.max(this.min,a-this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(a=n+this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(n=a-this._valueDiffMax),[n,a]},_setValueMin:function(i){i=Math.max(i,this.min),this.$$("#sliderMin").value=i,this.valueMin=i},_setValueMax:function(i){i=Math.min(i,this.max),this.$$("#sliderMax").value=i,this.valueMax=i},_setValueMinMax:function(i){this._setValueMin(i[0]),this._setValueMax(i[1]),this._updateSliderKnobMinMax(),this.updateValues()},_setValues:function(i,t){null!=i&&(i<this.min||i>this.max)&&(i=null),null!=t&&(t<this.min||t>this.max)&&(t=null),null!=i&&null!=t&&(i=Math.min(i,t)),this._setValueMinMax(this._getValuesMinMax(i,t))},_updateSliderKnobMinMax:function(){var i=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,t=i*(this.valueMin-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMin").offsetWidth,e=i*(this.valueMax-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMax").offsetWidth;this.$$("#sliderKnobMin").style.left=t+"px",this.$$("#sliderKnobMax").style.left=e+"px"},_backDivOnTrack:function(i){switch(i.stopPropagation(),i.detail.state){case"start":this._backDivTrackStart(i);break;case"track":this._backDivTrackDuring(i);break;case"end":this._backDivTrackEnd()}},_backDivTrackStart:function(i){},_backDivTrackDuring:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._x1_Max=this._x0_Max+i.detail.dx;var e=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));t>=this.min&&e<=this.max&&this._setValuesWithCurrentDiff(t,e,!1)},_setValuesWithCurrentDiff:function(i,t,e){var s=this._valueDiffMin,n=this._valueDiffMax;this._valueDiffMin=this.valueMax-this.valueMin,this._valueDiffMax=this.valueMax-this.valueMin,e?this.setValues(i,t):this._setValues(i,t),this._valueDiffMin=s,this._valueDiffMax=n},_backDivTrackEnd:function(){},_sliderKnobMinOnTrack:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._setValues(t,null)},_sliderKnobMaxOnTrack:function(i){this._x1_Max=this._x0_Max+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));this._setValues(null,t)},_sliderMinDown:function(){this.$$("#sliderMax")._expandKnob()},_sliderMaxDown:function(i){this.singleSlider?this._setValues(null,this._getEventValue(i)):this.$$("#sliderMin")._expandKnob()},_sliderMinUp:function(){this.alwaysShowPin?this.$$("#sliderMin")._expandKnob():this.$$("#sliderMax")._resetKnob()},_sliderMaxUp:function(){this.alwaysShowPin?this.$$("#sliderMax")._expandKnob():(this.$$("#sliderMin")._resetKnob(),this.singleSlider&&this.$$("#sliderMax")._resetKnob())},_getEventValue:function(i){var t=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,e=this.$$("#sliderMax").$$("#sliderContainer").getBoundingClientRect(),s=(i.detail.x-e.left)/t,n=this.min+s*(this.max-this.min);return n},_backDivTap:function(i){this._setValueNow=function(i,t){this.tapValueMove?this._setValuesWithCurrentDiff(i,t,!0):this.setValues(i,t)};var t=this._getEventValue(i);if(t>this.valueMin&&t<this.valueMax){if(this.tapValueReduce){var e=t<this.valueMin+(this.valueMax-this.valueMin)/2;e?this._setValueNow(t,null):this._setValueNow(null,t)}}else(this.tapValueExtend||this.tapValueMove)&&(t<this.valueMin&&this._setValueNow(t,null),t>this.valueMax&&this._setValueNow(null,t))},_backDivDown:function(i){this._sliderMinDown(),this._sliderMaxDown(),this._xWidth=this.$$("#sliderMin").$$("#sliderBar").offsetWidth,this._x0_Min=this.$$("#sliderMin").ratio*this._xWidth,this._x0_Max=this.$$("#sliderMax").ratio*this._xWidth},_backDivUp:function(){this._sliderMinUp(),this._sliderMaxUp()},_backDivTransEnd:function(i){},_getRatioPos:function(i,t){return Math.max(i.min,Math.min(i.max,(i.max-i.min)*t+i.min))},init:function(){this.setSingleSlider(this.singleSlider),this.setDisabled(this.disabled),this.alwaysShowPin&&(this.pin=!0),this.$$("#sliderMin").pin=this.pin,this.$$("#sliderMax").pin=this.pin,this.$$("#sliderMin").snaps=this.snaps,this.$$("#sliderMax").snaps=this.snaps,""!=this.sliderWidth&&(this.customStyle["--paper-range-slider-width"]=this.sliderWidth,this.updateStyles()),this.$$("#sliderMin").$$("#sliderBar").$$("#progressContainer").style.background="transparent",this._prevUpdateValues=[this.min,this.max],this._setValueDiff(),this._setValueMinMax(this._getValuesMinMax(this.valueMin,this.valueMax)),this.alwaysShowPin&&(this.$$("#sliderMin")._expandKnob(),this.$$("#sliderMax")._expandKnob())},setValues:function(i,t){this.$$("#sliderMin")._setTransiting(!0),this.$$("#sliderMax")._setTransiting(!0),this._setValues(i,t);var e=this;setTimeout(function(){e.$.sliderMin._setTransiting(!1),e.$.sliderMax._setTransiting(!1)},e.transDuration)},updateValues:function(){this._prevUpdateValues[0]==this.valueMin&&this._prevUpdateValues[1]==this.valueMax||(this._prevUpdateValues=[this.valueMin,this.valueMax],this.async(function(){this.fire("updateValues")}))},setMin:function(i){this.max<i&&(this.max=i),this.min=i,this._prevUpdateValues=[this.min,this.max],this.valueMin<this.min?this._setValues(this.min,null):this._updateSliderKnobMinMax()},setMax:function(i){this.min>i&&(this.min=i),this.max=i,this._prevUpdateValues=[this.min,this.max],this.valueMax>this.max?this._setValues(null,this.max):this._updateSliderKnobMinMax()},setStep:function(i){this.step=i},setValueDiffMin:function(i){this._valueDiffMin=i},setValueDiffMax:function(i){this._valueDiffMax=i},setTapValueExtend:function(i){this.tapValueExtend=i},setTapValueReduce:function(i){this.tapValueReduce=i},setTapValueMove:function(i){this.tapValueMove=i},setDisabled:function(i){this.disabled=i;var t=i?"none":"auto";this.$$("#sliderMax").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderMin").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderOuterDiv_1").style.pointerEvents=t,this.$$("#sliderKnobMin").style.pointerEvents=t,this.$$("#sliderKnobMax").style.pointerEvents=t},setSingleSlider:function(i){this.singleSlider=i,i?(this.$$("#backDiv").style.display="none",this.$$("#sliderMax").style.pointerEvents="auto",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="none",this.$$("#sliderKnobMin").style.pointerEvents="none",this.$$("#sliderKnobMax").style.pointerEvents="none"):(this.$$("#backDiv").style.display="block",this.$$("#sliderMax").style.pointerEvents="none",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="",this.$$("#sliderKnobMin").style.pointerEvents="auto",this.$$("#sliderKnobMax").style.pointerEvents="auto"),this.$$("#sliderMax").$$("#sliderContainer").style.pointerEvents=this.singleSlider?"auto":"none",this.$$("#sliderMin").$$("#sliderContainer").style.pointerEvents="none"}})</script></dom-module><dom-module id="paper-single-range-slider" assetpath="../bower_components/paper-range-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-single-range-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-single-range-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-single-range-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-single-range-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:calc(15px + var(--paper-single-range-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-single-range-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-single-range-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-single-range-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-single-range-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-single-range-slider-height,2px)/ 2);height:var(--paper-single-range-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-single-range-slider-knob-color,--google-blue-700);border:2px solid var(--paper-single-range-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-single-range-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-single-range-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-single-range-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-single-range-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="more-info-climate" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>:host{color:var(--primary-text-color);--paper-input-container-input:{text-transform:capitalize};}.container-aux_heat,.container-away_mode,.container-fan_list,.container-humidity,.container-operation_list,.container-swing_list,.container-temperature{display:none}.has-aux_heat .container-aux_heat,.has-away_mode .container-away_mode,.has-fan_list .container-fan_list,.has-humidity .container-humidity,.has-operation_list .container-operation_list,.has-swing_list .container-swing_list,.has-temperature .container-temperature{display:block}.container-fan_list iron-icon,.container-operation_list iron-icon,.container-swing_list iron-icon{margin:22px 16px 0 0}paper-dropdown-menu{width:100%}paper-slider{width:100%}.auto paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-blue-400)}.heat paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-green-400)}.cool paper-slider{--paper-slider-active-color:var(--paper-green-400);--paper-slider-secondary-color:var(--paper-blue-400)}.humidity{--paper-slider-active-color:var(--paper-blue-400);--paper-slider-secondary-color:var(--paper-blue-400)}paper-range-slider{--paper-range-slider-lower-color:var(--paper-orange-400);--paper-range-slider-active-color:var(--paper-green-400);--paper-range-slider-higher-color:var(--paper-blue-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-width:100%}.single-row{padding:8px 0}.capitalize{text-transform:capitalize}</style><div class$="[[computeClassNames(stateObj)]]"><div class="container-temperature"><div class$="single-row, [[stateObj.attributes.operation_mode]]"><div hidden$="[[computeTargetTempHidden(stateObj)]]">Target Temperature</div><paper-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" secondary-progress="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value="[[stateObj.attributes.temperature]]" hidden$="[[computeHideTempSlider(stateObj)]]" on-change="targetTemperatureSliderChanged"></paper-slider><paper-range-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value-min="[[stateObj.attributes.target_temp_low]]" value-max="[[stateObj.attributes.target_temp_high]]" value-diff-min="2" hidden$="[[computeHideTempRangeSlider(stateObj)]]" on-change="targetTemperatureRangeSliderChanged"></paper-range-slider></div></div><div class="container-humidity"><div class="single-row"><div>Target Humidity</div><paper-slider class="humidity" min="[[stateObj.attributes.min_humidity]]" max="[[stateObj.attributes.max_humidity]]" secondary-progress="[[stateObj.attributes.max_humidity]]" step="1" pin="" value="[[stateObj.attributes.humidity]]" on-change="targetHumiditySliderChanged"></paper-slider></div></div><div class="container-operation_list"><div class="controls"><paper-dropdown-menu label-float="" label="Operation"><paper-menu class="dropdown-content" selected="{{operationIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.operation_list]]"><paper-item class="capitalize">[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div></div><div class="container-fan_list"><paper-dropdown-menu label-float="" label="Fan Mode"><paper-menu class="dropdown-content" selected="{{fanIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.fan_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-swing_list"><paper-dropdown-menu label-float="" label="Swing Mode"><paper-menu class="dropdown-content" selected="{{swingIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.swing_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-away_mode"><div class="center horizontal layout single-row"><div class="flex">Away Mode</div><paper-toggle-button checked="[[awayToggleChecked]]" on-change="awayToggleChanged"></paper-toggle-button></div></div><div class="container-aux_heat"><div class="center horizontal layout single-row"><div class="flex">Aux Heat</div><paper-toggle-button checked="[[auxToggleChecked]]" on-change="auxToggleChanged"></paper-toggle-button></div></div></div></template></dom-module><script>Polymer({is:"more-info-climate",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},operationIndex:{type:Number,value:-1,observer:"handleOperationmodeChanged"},fanIndex:{type:Number,value:-1,observer:"handleFanmodeChanged"},swingIndex:{type:Number,value:-1,observer:"handleSwingmodeChanged"},awayToggleChecked:{type:Boolean},auxToggleChecked:{type:Boolean}},stateObjChanged:function(e){this.targetTemperatureSliderValue=e.attributes.temperature,this.awayToggleChecked="on"===e.attributes.away_mode,this.auxheatToggleChecked="on"===e.attributes.aux_heat,e.attributes.fan_list?this.fanIndex=e.attributes.fan_list.indexOf(e.attributes.fan_mode):this.fanIndex=-1,e.attributes.operation_list?this.operationIndex=e.attributes.operation_list.indexOf(e.attributes.operation_mode):this.operationIndex=-1,e.attributes.swing_list?this.swingIndex=e.attributes.swing_list.indexOf(e.attributes.swing_mode):this.swingIndex=-1,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeTargetTempHidden:function(e){return!e.attributes.temperature&&!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempRangeSlider:function(e){return!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempSlider:function(e){return!e.attributes.temperature},computeClassNames:function(e){return"more-info-climate "+window.hassUtil.attributeClassNames(e,["away_mode","aux_heat","temperature","humidity","operation_list","fan_list","swing_list"])},targetTemperatureSliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.temperature&&this.callServiceHelper("set_temperature",{temperature:t})},targetTemperatureRangeSliderChanged:function(e){var t=e.currentTarget.valueMin,a=e.currentTarget.valueMax;t===this.stateObj.attributes.target_temp_low&&a===this.stateObj.attributes.target_temp_high||this.callServiceHelper("set_temperature",{target_temp_low:t,target_temp_high:a})},targetHumiditySliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.humidity&&this.callServiceHelper("set_humidity",{humidity:t})},awayToggleChanged:function(e){var t="on"===this.stateObj.attributes.away_mode,a=e.target.checked;t!==a&&this.callServiceHelper("set_away_mode",{away_mode:a})},auxToggleChanged:function(e){var t="on"===this.stateObj.attributes.aux_heat,a=e.target.checked;t!==a&&this.callServiceHelper("set_aux_heat",{aux_heat:a})},handleFanmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.fan_list[e],t!==this.stateObj.attributes.fan_mode&&this.callServiceHelper("set_fan_mode",{fan_mode:t}))},handleOperationmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.operation_list[e],t!==this.stateObj.attributes.operation_mode&&this.callServiceHelper("set_operation_mode",{operation_mode:t}))},handleSwingmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.swing_list[e],t!==this.stateObj.attributes.swing_mode&&this.callServiceHelper("set_swing_mode",{swing_mode:t}))},callServiceHelper:function(e,t){t.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("climate",e,t).then(function(){this.stateObjChanged(this.stateObj)}.bind(this))}})</script><dom-module id="more-info-cover" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.current_position,.current_tilt_position{max-height:0;overflow:hidden}.has-current_position .current_position,.has-current_tilt_position .current_tilt_position{max-height:90px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="current_position"><div>Position</div><paper-slider min="0" max="100" value="{{coverPositionSliderValue}}" step="1" pin="" on-change="coverPositionSliderChanged"></paper-slider></div><div class="current_tilt_position"><div>Tilt position</div><paper-icon-button icon="mdi:arrow-top-right" on-tap="onOpenTiltTap" title="Open tilt" disabled="[[computeIsFullyOpenTilt(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTiltTap" title="Stop tilt"></paper-icon-button><paper-icon-button icon="mdi:arrow-bottom-left" on-tap="onCloseTiltTap" title="Close tilt" disabled="[[computeIsFullyClosedTilt(stateObj)]]"></paper-icon-button><paper-slider min="0" max="100" value="{{coverTiltPositionSliderValue}}" step="1" pin="" on-change="coverTiltPositionSliderChanged"></paper-slider></div></div></template></dom-module><script>Polymer({is:"more-info-cover",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},coverPositionSliderValue:{type:Number},coverTiltPositionSliderValue:{type:Number}},stateObjChanged:function(t){this.coverPositionSliderValue=t.attributes.current_position,this.coverTiltPositionSliderValue=t.attributes.current_tilt_position},computeClassNames:function(t){return window.hassUtil.attributeClassNames(t,["current_position","current_tilt_position"])},coverPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_position",{entity_id:this.stateObj.entityId,position:t.target.value})},coverTiltPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_tilt_position",{entity_id:this.stateObj.entityId,tilt_position:t.target.value})},computeIsFullyOpenTilt:function(t){return 100===t.attributes.current_tilt_position},computeIsFullyClosedTilt:function(t){return 0===t.attributes.current_tilt_position},onOpenTiltTap:function(){this.hass.serviceActions.callService("cover","open_cover_tilt",{entity_id:this.stateObj.entityId})},onCloseTiltTap:function(){this.hass.serviceActions.callService("cover","close_cover_tilt",{entity_id:this.stateObj.entityId})},onStopTiltTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="more-info-default" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.data-entry .value{max-width:200px}</style><div class="layout vertical"><template is="dom-repeat" items="[[computeDisplayAttributes(stateObj)]]" as="attribute"><div class="data-entry layout justified horizontal"><div class="key">[[formatAttribute(attribute)]]</div><div class="value">[[getAttributeValue(stateObj, attribute)]]</div></div></template></div></template></dom-module><script>!function(){"use strict";var e=["entity_picture","friendly_name","icon","unit_of_measurement","emulated_hue","emulated_hue_name","haaska_hidden","haaska_name","homebridge_hidden","homebridge_name"];Polymer({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return e.indexOf(t)===-1}):[]},formatAttribute:function(e){return e.replace(/_/g," ")},getAttributeValue:function(e,t){var r=e.attributes[t];return Array.isArray(r)?r.join(", "):r}})}()</script><dom-module id="more-info-group" assetpath="more-infos/"><template><style>.child-card{margin-bottom:8px}.child-card:last-child{margin-bottom:0}</style><div id="groupedControlDetails"></div><template is="dom-repeat" items="[[states]]" as="state"><div class="child-card"><state-card-content state-obj="[[state]]" hass="[[hass]]"></state-card-content></div></template></template></dom-module><script>Polymer({is:"more-info-group",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object},states:{type:Array,bindNuclear:function(t){return[t.moreInfoGetters.currentEntity,t.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}}},observers:["statesChanged(stateObj, states)"],statesChanged:function(t,e){var s,i,a,n,r=!1;if(e&&e.length>0)for(s=e[0],r=s.set("entityId",t.entityId).set("attributes",Object.assign({},s.attributes)),i=0;i<e.length;i++)a=e[i],a&&a.domain&&r.domain!==a.domain&&(r=!1);r?window.hassUtil.dynamicContentUpdater(this.$.groupedControlDetails,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(r).toUpperCase(),{stateObj:r,hass:this.hass}):(n=Polymer.dom(this.$.groupedControlDetails),n.lastChild&&n.removeChild(n.lastChild))}})</script><dom-module id="more-info-sun" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><template is="dom-repeat" items="[[computeOrder(risingDate, settingDate)]]"><div class="data-entry layout justified horizontal"><div class="key"><span>[[itemCaption(item)]]</span><ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time></div><div class="value">[[itemValue(item)]]</div></div></template><div class="data-entry layout justified horizontal"><div class="key">Elevation</div><div class="value">[[stateObj.attributes.elevation]]</div></div></template></dom-module><script>Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return new Date(t.attributes.next_rising)},computeSetting:function(t){return new Date(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return window.hassUtil.formatTime(this.itemDate(t))}})</script><dom-module id="more-info-configurator" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>p{margin:8px 0}p>img{max-width:100%}p.center{text-align:center}p.error{color:#C62828}p.submit{text-align:center;height:41px}paper-spinner{width:14px;height:14px;margin-right:20px}</style><div class="layout vertical"><template is="dom-if" if="[[isConfigurable]]"><p hidden$="[[!stateObj.attributes.description]]">[[stateObj.attributes.description]] <a hidden$="[[!stateObj.attributes.link_url]]" href="[[stateObj.attributes.link_url]]" target="_blank">[[stateObj.attributes.link_name]]</a></p><p class="error" hidden$="[[!stateObj.attributes.errors]]">[[stateObj.attributes.errors]]</p><p class="center" hidden$="[[!stateObj.attributes.description_image]]"><img src="[[stateObj.attributes.description_image]]"></p><template is="dom-repeat" items="[[stateObj.attributes.fields]]"><paper-input-container id="paper-input-fields-{{item.id}}"><label>[[item.name]]</label><input is="iron-input" type="[[item.type]]" id="[[item.id]]" on-change="fieldChanged"></paper-input-container></template><p class="submit"><paper-button raised="" disabled="[[isConfiguring]]" on-tap="submitClicked"><paper-spinner active="[[isConfiguring]]" hidden="[[!isConfiguring]]" alt="Configuring"></paper-spinner>[[submitCaption]]</paper-button></p></template></div></template></dom-module><script>Polymer({is:"more-info-configurator",behaviors:[window.hassBehavior],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:function(i){return i.streamGetters.isStreamingEvents}},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"},fieldInput:{type:Object,value:{}}},computeIsConfigurable:function(i){return"configure"===i.state},computeSubmitCaption:function(i){return i.attributes.submit_caption||"Set configuration"},fieldChanged:function(i){var t=i.target;this.fieldInput[t.id]=t.value},submitClicked:function(){var i={configure_id:this.stateObj.attributes.configure_id,fields:this.fieldInput};this.isConfiguring=!0,this.hass.serviceActions.callService("configurator","configure",i).then(function(){this.isConfiguring=!1,this.isStreaming||this.hass.syncActions.fetchAll()}.bind(this),function(){this.isConfiguring=!1}.bind(this))}})</script><dom-module id="more-info-script" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><div class="layout vertical"><div class="data-entry layout justified horizontal"><div class="key">Last Action</div><div class="value">[[stateObj.attributes.last_action]]</div></div></div></template></dom-module><script>Polymer({is:"more-info-script",properties:{stateObj:{type:Object}}})</script><dom-module id="ha-labeled-slider" assetpath="components/"><template><style>:host{display:block;padding-bottom:16px}.title{margin-bottom:16px;opacity:var(--dark-primary-opacity)}iron-icon{float:left;margin-top:4px;opacity:var(--dark-secondary-opacity)}.slider-container{margin-left:24px}</style><div class="title">[[caption]]</div><iron-icon icon="[[icon]]"></iron-icon><div class="slider-container"><paper-slider min="[[min]]" max="[[max]]" value="{{value}}"></paper-slider></div></template></dom-module><script>Polymer({is:"ha-labeled-slider",properties:{caption:{type:String},icon:{type:String},min:{type:Number},max:{type:Number},value:{type:Number,notify:!0}}})</script><dom-module id="ha-color-picker" assetpath="components/"><template><style>canvas{cursor:crosshair}</style><canvas width="[[width]]" height="[[height]]"></canvas></template></dom-module><script>Polymer({is:"ha-color-picker",properties:{color:{type:Object},width:{type:Number},height:{type:Number}},listeners:{mousedown:"onMouseDown",mouseup:"onMouseUp",touchstart:"onTouchStart",touchend:"onTouchEnd"},onMouseDown:function(t){this.onMouseMove(t),this.addEventListener("mousemove",this.onMouseMove)},onMouseUp:function(){this.removeEventListener("mousemove",this.onMouseMove)},onTouchStart:function(t){this.onTouchMove(t),this.addEventListener("touchmove",this.onTouchMove)},onTouchEnd:function(){this.removeEventListener("touchmove",this.onTouchMove)},onTouchMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t.touches[0]),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},onMouseMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},processColorSelect:function(t){var o=this.canvas.getBoundingClientRect();t.clientX<o.left||t.clientX>=o.left+o.width||t.clientY<o.top||t.clientY>=o.top+o.height||this.onColorSelect(t.clientX-o.left,t.clientY-o.top)},onColorSelect:function(t,o){var e=this.context.getImageData(t,o,1,1).data;this.setColor({r:e[0],g:e[1],b:e[2]})},setColor:function(t){this.color=t,this.fire("colorselected",{rgb:this.color})},ready:function(){this.setColor=this.setColor.bind(this),this.mouseMoveIsThrottled=!0,this.canvas=this.children[0],this.context=this.canvas.getContext("2d"),this.drawGradient()},drawGradient:function(){var t,o,e,i,s;this.width&&this.height||(t=getComputedStyle(this)),o=this.width||parseInt(t.width,10),e=this.height||parseInt(t.height,10),i=this.context.createLinearGradient(0,0,o,0),i.addColorStop(0,"rgb(255,0,0)"),i.addColorStop(.16,"rgb(255,0,255)"),i.addColorStop(.32,"rgb(0,0,255)"),i.addColorStop(.48,"rgb(0,255,255)"),i.addColorStop(.64,"rgb(0,255,0)"),i.addColorStop(.8,"rgb(255,255,0)"),i.addColorStop(1,"rgb(255,0,0)"),this.context.fillStyle=i,this.context.fillRect(0,0,o,e),s=this.context.createLinearGradient(0,0,0,e),s.addColorStop(0,"rgba(255,255,255,1)"),s.addColorStop(.5,"rgba(255,255,255,0)"),s.addColorStop(.5,"rgba(0,0,0,0)"),s.addColorStop(1,"rgba(0,0,0,1)"),this.context.fillStyle=s,this.context.fillRect(0,0,o,e)}})</script><dom-module id="more-info-light" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.effect_list{padding-bottom:16px}.brightness,.color_temp,.effect_list,.white_value{max-height:0;overflow:hidden;transition:max-height .5s ease-in}ha-color-picker{display:block;width:250px;max-height:0;overflow:hidden;transition:max-height .2s ease-in}.has-brightness .brightness,.has-color_temp .color_temp,.has-effect_list .effect_list,.has-white_value .white_value{max-height:84px}.has-rgb_color ha-color-picker{max-height:200px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="effect_list"><paper-dropdown-menu label-float="" label="Effect"><paper-menu class="dropdown-content" selected="{{effectIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.effect_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="brightness"><ha-labeled-slider caption="Brightness" icon="mdi:brightness-5" max="255" value="{{brightnessSliderValue}}" on-change="brightnessSliderChanged"></ha-labeled-slider></div><div class="color_temp"><ha-labeled-slider caption="Color Temperature" icon="mdi:thermometer" min="154" max="500" value="{{ctSliderValue}}" on-change="ctSliderChanged"></ha-labeled-slider></div><div class="white_value"><ha-labeled-slider caption="White Value" icon="mdi:file-word-box" max="255" value="{{wvSliderValue}}" on-change="wvSliderChanged"></ha-labeled-slider></div><ha-color-picker on-colorselected="colorPicked" height="200" width="250"></ha-color-picker></div></template></dom-module><script>Polymer({is:"more-info-light",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},effectIndex:{type:Number,value:-1,observer:"effectChanged"},brightnessSliderValue:{type:Number,value:0},ctSliderValue:{type:Number,value:0},wvSliderValue:{type:Number,value:0}},stateObjChanged:function(t){t&&"on"===t.state?(this.brightnessSliderValue=t.attributes.brightness,this.ctSliderValue=t.attributes.color_temp,this.wvSliderValue=t.attributes.white_value,t.attributes.effect_list?this.effectIndex=t.attributes.effect_list.indexOf(t.attributes.effect):this.effectIndex=-1):this.brightnessSliderValue=0,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(t){var e=window.hassUtil.attributeClassNames(t,["rgb_color","color_temp","white_value","effect_list"]),i=1;return t&&t.attributes.supported_features&i&&(e+=" has-brightness"),e},effectChanged:function(t){var e;""!==t&&t!==-1&&(e=this.stateObj.attributes.effect_list[t],e!==this.stateObj.attributes.effect&&this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,effect:e}))},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?this.hass.serviceActions.callTurnOff(this.stateObj.entityId):this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},ctSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,color_temp:e})},wvSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,white_value:e})},serviceChangeColor:function(t,e,i){t.serviceActions.callService("light","turn_on",{entity_id:e,rgb_color:[i.r,i.g,i.b]})},colorPicked:function(t){return this.skipColorPicked?void(this.colorChanged=!0):(this.color=t.detail.rgb,this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.colorChanged=!1,this.skipColorPicked=!0,void(this.colorDebounce=setTimeout(function(){this.colorChanged&&this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.skipColorPicked=!1}.bind(this),500)))}})</script><dom-module id="more-info-media_player" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.media-state{text-transform:capitalize}paper-icon-button[highlight]{color:var(--accent-color)}.volume{margin-bottom:8px;max-height:0;overflow:hidden;transition:max-height .5s ease-in}.has-volume_level .volume{max-height:40px}iron-icon.source-input{padding:7px;margin-top:15px}paper-dropdown-menu.source-input{margin-left:10px}[hidden]{display:none!important}</style><div class$="[[computeClassNames(stateObj)]]"><div class="layout horizontal"><div class="flex"><paper-icon-button icon="mdi:power" highlight$="[[isOff]]" on-tap="handleTogglePower" hidden$="[[computeHidePowerButton(isOff, supportsTurnOn, supportsTurnOff)]]"></paper-icon-button></div><div><template is="dom-if" if="[[computeShowPlaybackControls(isOff, hasMediaControl)]]"><paper-icon-button icon="mdi:skip-previous" on-tap="handlePrevious" hidden$="[[!supportsPreviousTrack]]"></paper-icon-button><paper-icon-button icon="[[computePlaybackControlIcon(stateObj)]]" on-tap="handlePlaybackControl" highlight=""></paper-icon-button><paper-icon-button icon="mdi:skip-next" on-tap="handleNext" hidden$="[[!supportsNextTrack]]"></paper-icon-button></template></div></div><div class="volume_buttons center horizontal layout" hidden$="[[computeHideVolumeButtons(isOff, supportsVolumeButtons)]]"><paper-icon-button on-tap="handleVolumeTap" icon="mdi:volume-off"></paper-icon-button><paper-icon-button id="volumeDown" disabled$="[[isMuted]]" on-mousedown="handleVolumeDown" on-touchstart="handleVolumeDown" icon="mdi:volume-medium"></paper-icon-button><paper-icon-button id="volumeUp" disabled$="[[isMuted]]" on-mousedown="handleVolumeUp" on-touchstart="handleVolumeUp" icon="mdi:volume-high"></paper-icon-button></div><div class="volume center horizontal layout" hidden$="[[!supportsVolumeSet]]"><paper-icon-button on-tap="handleVolumeTap" hidden$="[[supportsVolumeButtons]]" icon="[[computeMuteVolumeIcon(isMuted)]]"></paper-icon-button><paper-slider disabled$="[[isMuted]]" min="0" max="100" value="[[volumeSliderValue]]" on-change="volumeSliderChanged" class="flex"></paper-slider></div><div class="controls layout horizontal justified" hidden$="[[computeHideSelectSource(isOff, supportsSelectSource)]]"><iron-icon class="source-input" icon="mdi:login-variant"></iron-icon><paper-dropdown-menu class="source-input" label-float="" label="Source"><paper-menu class="dropdown-content" selected="{{sourceIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.source_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div hidden$="[[computeHideTTS(ttsLoaded, supportsPlayMedia)]]" class="layout horizontal end"><paper-input label="Text to speak" class="flex" value="{{ttsMessage}}"></paper-input><paper-icon-button icon="mdi:send" on-tap="sendTTS"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"more-info-media_player",behaviors:[window.hassBehavior],properties:{ttsLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("tts")}},hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},source:{type:String,value:""},sourceIndex:{type:Number,value:0,observer:"handleSourceChanged"},volumeSliderValue:{type:Number,value:0},ttsMessage:{type:String,value:""},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1},supportsPlayMedia:{type:Boolean,value:!1},supportsVolumeButtons:{type:Boolean,value:!1},supportsSelectSource:{type:Boolean,value:!1},hasMediaControl:{type:Boolean,value:!1}},HAS_MEDIA_STATES:["playing","paused","unknown"],stateObjChanged:function(e){e&&(this.isOff="off"===e.state,this.isPlaying="playing"===e.state,this.hasMediaControl=this.HAS_MEDIA_STATES.indexOf(e.state)!==-1,this.volumeSliderValue=100*e.attributes.volume_level,this.isMuted=e.attributes.is_volume_muted,this.source=e.attributes.source,this.supportsPause=0!==(1&e.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&e.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&e.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&e.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&e.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&e.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&e.attributes.supported_media_commands),this.supportsPlayMedia=0!==(512&e.attributes.supported_media_commands),this.supportsVolumeButtons=0!==(1024&e.attributes.supported_media_commands),this.supportsSelectSource=0!==(2048&e.attributes.supported_media_commands),void 0!==e.attributes.source_list&&(this.sourceIndex=e.attributes.source_list.indexOf(this.source))),this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(e){return window.hassUtil.attributeClassNames(e,["volume_level"])},computeIsOff:function(e){return"off"===e.state},computeMuteVolumeIcon:function(e){return e?"mdi:volume-off":"mdi:volume-high"},computeHideVolumeButtons:function(e,t){return!t||e},computeShowPlaybackControls:function(e,t){return!e&&t},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"mdi:pause":"mdi:stop":"mdi:play"},computeHidePowerButton:function(e,t,s){return e?!t:!s},computeHideSelectSource:function(e,t){return e||!t},computeSelectedSource:function(e){return e.attributes.source_list.indexOf(e.attributes.source)},computeHideTTS:function(e,t){return!e||!t},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleSourceChanged:function(e){var t;!this.stateObj||void 0===this.stateObj.attributes.source_list||e<0||e>=this.stateObj.attributes.source_list.length||(t=this.stateObj.attributes.source_list[e],t!==this.stateObj.attributes.source&&this.callService("select_source",{source:t}))},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},handleVolumeUp:function(){var e=this.$.volumeUp;this.handleVolumeWorker("volume_up",e,!0)},handleVolumeDown:function(){var e=this.$.volumeDown;this.handleVolumeWorker("volume_down",e,!0)},handleVolumeWorker:function(e,t,s){(s||void 0!==t&&t.pointerDown)&&(this.callService(e),this.async(function(){this.handleVolumeWorker(e,t,!1)}.bind(this),500))},volumeSliderChanged:function(e){var t=parseFloat(e.target.value),s=t>0?t/100:0;this.callService("volume_set",{volume_level:s})},sendTTS:function(){var e,t,s=this.hass.reactor.evaluate(this.hass.serviceGetters.entityMap).get("tts").get("services").keySeq().toArray();for(t=0;t<s.length;t++)if(s[t].indexOf("_say")!==-1){e=s[t];break}e&&(this.hass.serviceActions.callService("tts",e,{entity_id:this.stateObj.entityId,message:this.ttsMessage}),this.ttsMessage="",document.activeElement.blur())},callService:function(e,t){var s=t||{};s.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("media_player",e,s)}})</script><dom-module id="more-info-camera" assetpath="more-infos/"><template><style>:host{max-width:640px}.camera-image{width:100%}</style><img class="camera-image" src="[[computeCameraImageUrl(hass, stateObj)]]" on-load="imageLoaded" alt="[[stateObj.entityDisplay]]"></template></dom-module><script>Polymer({is:"more-info-camera",properties:{hass:{type:Object},stateObj:{type:Object}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(e,t){return e.demo?"/demo/webcam.jpg":t?"/api/camera_proxy_stream/"+t.entityId+"?token="+t.attributes.access_token:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}})</script><dom-module id="more-info-updater" assetpath="more-infos/"><template><style>.link{color:#03A9F4}</style><div><a class="link" href="https://home-assistant.io/getting-started/updating/" target="_blank">Update Instructions</a></div></template></dom-module><script>Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},computeReleaseNotes:function(t){return t.attributes.release_notes||"https://home-assistant.io/getting-started/updating/"}})</script><dom-module id="more-info-alarm_control_panel" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><div class="layout horizontal"><paper-input label="code" value="{{enteredCode}}" pattern="[[codeFormat]]" type="password" hidden$="[[!codeInputVisible]]" disabled="[[!codeInputEnabled]]"></paper-input></div><div class="layout horizontal"><paper-button on-tap="handleDisarmTap" hidden$="[[!disarmButtonVisible]]" disabled="[[!codeValid]]">Disarm</paper-button><paper-button on-tap="handleHomeTap" hidden$="[[!armHomeButtonVisible]]" disabled="[[!codeValid]]">Arm Home</paper-button><paper-button on-tap="handleAwayTap" hidden$="[[!armAwayButtonVisible]]" disabled="[[!codeValid]]">Arm Away</paper-button></div></template></dom-module><script>Polymer({is:"more-info-alarm_control_panel",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""},disarmButtonVisible:{type:Boolean,value:!1},armHomeButtonVisible:{type:Boolean,value:!1},armAwayButtonVisible:{type:Boolean,value:!1},codeInputVisible:{type:Boolean,value:!1},codeInputEnabled:{type:Boolean,value:!1},codeFormat:{type:String,value:""},codeValid:{type:Boolean,computed:"validateCode(enteredCode, codeFormat)"}},validateCode:function(e,t){var a=new RegExp(t);return null===t||a.test(e)},stateObjChanged:function(e){e&&(this.codeFormat=e.attributes.code_format,this.codeInputVisible=null!==this.codeFormat,this.codeInputEnabled="armed_home"===e.state||"armed_away"===e.state||"disarmed"===e.state||"pending"===e.state||"triggered"===e.state,this.disarmButtonVisible="armed_home"===e.state||"armed_away"===e.state||"pending"===e.state||"triggered"===e.state,this.armHomeButtonVisible="disarmed"===e.state,this.armAwayButtonVisible="disarmed"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},handleDisarmTap:function(){this.callService("alarm_disarm",{code:this.enteredCode})},handleHomeTap:function(){this.callService("alarm_arm_home",{code:this.enteredCode})},handleAwayTap:function(){this.callService("alarm_arm_away",{code:this.enteredCode})},callService:function(e,t){var a=t||{};a.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("alarm_control_panel",e,a).then(function(){this.enteredCode=""}.bind(this))}})</script><dom-module id="more-info-lock" assetpath="more-infos/"><template><style>paper-input{display:inline-block}</style><div hidden$="[[!stateObj.attributes.code_format]]"><paper-input label="code" value="{{enteredCode}}" pattern="[[stateObj.attributes.code_format]]" type="password"></paper-input><paper-button on-tap="handleUnlockTap" hidden$="[[!isLocked]]">Unlock</paper-button><paper-button on-tap="handleLockTap" hidden$="[[isLocked]]">Lock</paper-button></div></template></dom-module><script>Polymer({is:"more-info-lock",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""}},handleUnlockTap:function(){this.callService("unlock",{code:this.enteredCode})},handleLockTap:function(){this.callService("lock",{code:this.enteredCode})},stateObjChanged:function(e){e&&(this.isLocked="locked"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},callService:function(e,t){var i=t||{};i.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("lock",e,i)}})</script><script>Polymer({is:"more-info-content",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"}},created:function(){this.style.display="block"},stateObjChanged:function(t){t&&window.hassUtil.dynamicContentUpdater(this,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(t).toUpperCase(),{hass:this.hass,stateObj:t})}})</script><dom-module id="more-info-dialog" assetpath="dialogs/"><template><style>paper-dialog{font-size:14px;width:365px}paper-dialog[data-domain=camera]{width:auto}state-history-charts{position:relative;z-index:1;max-width:365px}state-card-content{margin-bottom:24px;font-size:14px}@media all and (max-width:450px),all and (max-height:500px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}" data-domain$="[[stateObj.domain]]"><h2><state-card-content state-obj="[[stateObj]]" hass="[[hass]]" in-dialog=""></state-card-content></h2><template is="dom-if" if="[[showHistoryComponent]]"><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingHistoryData]]"></state-history-charts></template><paper-dialog-scrollable id="scrollable"><more-info-content state-obj="[[stateObj]]" hass="[[hass]]"></more-info-content></paper-dialog-scrollable></paper-dialog></template></dom-module><script>Polymer({is:"more-info-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object,bindNuclear:function(t){return t.moreInfoGetters.currentEntity},observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:function(t){return[t.moreInfoGetters.currentEntityHistory,function(t){return!!t&&[t]}]}},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(delayedDialogOpen, isLoadingEntityHistoryData)"},isLoadingEntityHistoryData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},hasHistoryComponent:{type:Boolean,bindNuclear:function(t){return t.configGetters.isComponentLoaded("history")},observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:function(t){return t.moreInfoGetters.isCurrentEntityHistoryStale},observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1,computed:"computeShowHistoryComponent(hasHistoryComponent, stateObj)"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},delayedDialogOpen:{type:Boolean,value:!1}},ready:function(){this.$.scrollable.dialogElement=this.$.dialog},computeIsLoadingHistoryData:function(t,e){return!t||e},computeShowHistoryComponent:function(t,e){return this.hasHistoryComponent&&e&&window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(e.domain)===-1},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&this.hass.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){return t?void this.async(function(){this.fetchHistoryData(),this.dialogOpen=!0}.bind(this),10):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){t?this.async(function(){this.delayedDialogOpen=!0}.bind(this),10):!t&&this.stateObj&&(this.async(function(){this.hass.moreInfoActions.deselectEntity()}.bind(this),10),this.delayedDialogOpen=!1)}})</script><dom-module id="ha-voice-command-dialog" assetpath="dialogs/"><template><style>iron-icon{margin-right:8px}.content{width:300px;min-height:80px;font-size:18px}.icon{float:left}.text{margin-left:48px;margin-right:24px}.interimTranscript{color:#a9a9a9}@media all and (max-width:450px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}"><div class="content"><div class="icon"><iron-icon icon="mdi:text-to-speech" hidden$="[[isTransmitting]]"></iron-icon><paper-spinner active$="[[isTransmitting]]" hidden$="[[!isTransmitting]]"></paper-spinner></div><div class="text"><span>{{finalTranscript}}</span> <span class="interimTranscript">[[interimTranscript]]</span> …</div></div></paper-dialog></template></dom-module><script>Polymer({is:"ha-voice-command-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},finalTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.finalTranscript}},interimTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.extraInterimTranscript}},isTransmitting:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isTransmitting}},isListening:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isListening}},showListenInterface:{type:Boolean,computed:"computeShowListenInterface(isListening, isTransmitting)",observer:"showListenInterfaceChanged"}},computeShowListenInterface:function(e,n){return e||n},dialogOpenChanged:function(e){!e&&this.isListening&&this.hass.voiceActions.stop()},showListenInterfaceChanged:function(e){!e&&this.dialogOpen?this.dialogOpen=!1:e&&(this.dialogOpen=!0)}})</script><dom-module id="paper-icon-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item);@apply(--paper-icon-item)}.content-icon{@apply(--layout-horizontal);@apply(--layout-center);width:var(--paper-item-icon-width,56px);@apply(--paper-item-icon)}</style><div id="contentIcon" class="content-icon"><content select="[item-icon]"></content></div><content></content></template><script>Polymer({is:"paper-icon-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="ha-sidebar" assetpath="components/"><template><style include="iron-flex iron-flex-alignment iron-positioning">:host{--sidebar-text:{opacity:var(--dark-primary-opacity);font-weight:500;font-size:14px};display:block;overflow:auto;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-toolbar{font-weight:400;opacity:var(--dark-primary-opacity);border-bottom:1px solid #e0e0e0}paper-menu{padding-bottom:0}paper-icon-item{--paper-icon-item:{cursor:pointer};--paper-item-icon:{color:#000;opacity:var(--dark-secondary-opacity)};--paper-item-selected:{color:var(--default-primary-color);background-color:#e8e8e8;opacity:1};}paper-icon-item.iron-selected{--paper-item-icon:{color:var(--default-primary-color);opacity:1};}paper-icon-item .item-text{@apply(--sidebar-text)}paper-icon-item.iron-selected .item-text{opacity:1}paper-icon-item.logout{margin-top:16px}.divider{height:1px;background-color:#000;margin:4px 0;opacity:var(--dark-divider-opacity)}.setting{@apply(--sidebar-text)}.subheader{@apply(--sidebar-text);padding:16px}.dev-tools{padding:0 8px;opacity:var(--dark-secondary-opacity)}</style><app-toolbar><div main-title="">Home Assistant</div><paper-icon-button icon="mdi:chevron-left" hidden$="[[narrow]]" on-tap="toggleMenu"></paper-icon-button></app-toolbar><paper-menu attr-for-selected="data-panel" selected="[[selected]]" on-iron-select="menuSelect"><paper-icon-item on-tap="menuClicked" data-panel="states"><iron-icon item-icon="" icon="mdi:apps"></iron-icon><span class="item-text">States</span></paper-icon-item><template is="dom-repeat" items="[[computePanels(panels)]]"><paper-icon-item on-tap="menuClicked" data-panel$="[[item.url_path]]"><iron-icon item-icon="" icon="[[item.icon]]"></iron-icon><span class="item-text">[[item.title]]</span></paper-icon-item></template><paper-icon-item on-tap="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="mdi:exit-to-app"></iron-icon><span class="item-text">Log Out</span></paper-icon-item></paper-menu><div><template is="dom-if" if="[[supportPush]]"><div class="divider"></div><paper-item class="horizontal layout justified"><div class="setting">Push Notifications</div><paper-toggle-button on-change="handlePushChange" checked="{{pushToggleChecked}}"></paper-toggle-button></paper-item></template><div class="divider"></div><div class="subheader">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="mdi:remote" data-panel="dev-service" alt="Services" title="Services" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:code-tags" data-panel="dev-state" alt="States" title="States" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:radio-tower" data-panel="dev-event" alt="Events" title="Events" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:file-xml" data-panel="dev-template" alt="Templates" title="Templates" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:information-outline" data-panel="dev-info" alt="Info" title="Info" on-tap="menuClicked"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"ha-sidebar",behaviors:[window.hassBehavior],properties:{hass:{type:Object},menuShown:{type:Boolean},menuSelected:{type:String},narrow:{type:Boolean},selected:{type:String,bindNuclear:function(t){return t.navigationGetters.activePanelName}},panels:{type:Array,bindNuclear:function(t){return[t.navigationGetters.panels,function(t){return t.toJS()}]}},supportPush:{type:Boolean,value:!1,bindNuclear:function(t){return t.pushNotificationGetters.isSupported}},pushToggleChecked:{type:Boolean,bindNuclear:function(t){return t.pushNotificationGetters.isActive}}},created:function(){this._boundUpdateStyles=this.updateStyles.bind(this)},computePanels:function(t){var e={map:1,logbook:2,history:3},n=[];return Object.keys(t).forEach(function(e){t[e].title&&n.push(t[e])}),n.sort(function(t,n){var i=t.component_name in e,o=n.component_name in e;return i&&o?e[t.component_name]-e[n.component_name]:i?-1:o?1:t.title>n.title?1:t.title<n.title?-1:0}),n},menuSelect:function(){this.debounce("updateStyles",this._boundUpdateStyles,1)},menuClicked:function(t){for(var e=t.target,n=5,i=e.getAttribute("data-panel");n&&!i;)e=e.parentElement,i=e.getAttribute("data-panel"),n--;n&&this.selectPanel(i)},toggleMenu:function(){this.fire("close-menu")},selectPanel:function(t){if(t!==this.selected){if("logout"===t)return void this.handleLogOut();this.hass.navigationActions.navigate.apply(null,t.split("/")),this.debounce("updateStyles",this._boundUpdateStyles,1)}},handlePushChange:function(t){t.target.checked?this.hass.pushNotificationActions.subscribePushNotifications().then(function(t){this.pushToggleChecked=t}.bind(this)):this.hass.pushNotificationActions.unsubscribePushNotifications().then(function(t){this.pushToggleChecked=!t}.bind(this))},handleLogOut:function(){this.hass.authActions.logOut()}})</script><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager hass="[[hass]]"></notification-manager><more-info-dialog hass="[[hass]]"></more-info-dialog><ha-voice-command-dialog hass="[[hass]]"></ha-voice-command-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer="" narrow="[[narrow]]" hass="[[hass]]"></ha-sidebar><iron-pages main="" attr-for-selected="id" fallback-selection="panel-resolver" selected="[[activePanel]]" selected-attribute="panel-visible"><partial-cards id="states" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-cards><partial-panel-resolver id="panel-resolver" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-panel-resolver></iron-pages></paper-drawer-panel></template></dom-module><script>Polymer({is:"home-assistant-main",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!0},activePanel:{type:String,bindNuclear:function(e){return e.navigationGetters.activePanelName},observer:"activePanelChanged"},showSidebar:{type:Boolean,value:!1,bindNuclear:function(e){return e.navigationGetters.showSidebar}}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():this.hass.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&this.hass.navigationActions.showSidebar(!1)},activePanelChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){window.removeInitMsg(),this.hass.startUrlSync()},computeForceNarrow:function(e,n){return e||!n},detached:function(){this.hass.stopUrlSync()}})</script></div><dom-module id="home-assistant"><template><template is="dom-if" if="[[loaded]]"><home-assistant-main hass="[[hass]]"></home-assistant-main></template><template is="dom-if" if="[[!loaded]]"><login-form hass="[[hass]]" force-show-loading="[[computeForceShowLoading(dataLoaded, iconsLoaded)]]"></login-form></template></template></dom-module><script>Polymer({is:"home-assistant",hostAttributes:{icons:null},behaviors:[window.hassBehavior],properties:{hass:{type:Object,value:window.hass},icons:{type:String},dataLoaded:{type:Boolean,bindNuclear:function(o){return o.syncGetters.isDataLoaded}},iconsLoaded:{type:Boolean,value:!1},loaded:{type:Boolean,computed:"computeLoaded(dataLoaded, iconsLoaded)"}},computeLoaded:function(o,t){return o&&t},computeForceShowLoading:function(o,t){return o&&!t},loadIcons:function(){var o=function(){this.iconsLoaded=!0}.bind(this);this.importHref("/static/mdi-"+this.icons+".html",o,function(){this.importHref("/static/mdi.html",o,o)})},ready:function(){this.loadIcons()}})</script></body></html> \ No newline at end of file +n&&e.updateNativeStyleProperties(document.documentElement,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.serializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(this._styles,this):null)},customStyle:null,getComputedStyleValue:function(e){return i||this._styleProperties||this._computeStyleProperties(),!i&&this._styleProperties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_setupStyleProperties:function(){this.customStyle={},this._styleCache=null,this._styleProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._customStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySelector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeStyle.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSelector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__stylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.host))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=this._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCache||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styles,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),this._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStyleProperties,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,this.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(this.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStyleProperties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeStyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootPropertiesForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styles,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStyleProperties:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=this._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperties=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.style);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scopeCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"===n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementClass(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.call(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr||(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:"")),t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeStyleProperties(this,this.customStyle):(this.isAttached?this._needsStyleProperties()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropertiesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles())},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._query(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.updateStyles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehavior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverEffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marshalInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleTransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is:"custom-style",extends:"style",_template:null,properties:{include:String},ready:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__cssBuild=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!==this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedElement;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties(),s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=new MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childList:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){var t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedBuild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forEachRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transform([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpdateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCustomProperties:function(){var e=this.__appliedElement;this._computeStyleProperties();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssText(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",templatize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotations(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffects(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.listen=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropertyOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._constructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._content._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&this.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hideTemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextContent__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.dom.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function(){Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(var n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstancePropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._content;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=function(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Polymer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=this._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parentPropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=Object.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareModelNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function",effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kind:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDashCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forwardParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){return a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return function(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.dataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Object.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySetter);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardInstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHost,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentProps&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:function(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in this._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(this._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getRootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting(),this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._notes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnotatedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),this._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s._createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scopeElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElementClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templatized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPrefix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)if(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.parentNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collections=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this),this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.prototype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new WeakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==typeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pmap[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).map(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slice(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this._removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.store[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},getItems:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_applySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKeys=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?null:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instances.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._instanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[this.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:function(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.initialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){this.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requestRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boundRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFrameTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(this._render)},_observeChanged:function(){this._observePaths=this.observe&&this.observe.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):this.items?this._error(this._logf("dom-repeat","expected array for `items`, found",this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._render);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSplices),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwardItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._observePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounceTemplate(this._render))}},render:function(){this._needFullRefresh=!0,this._debounceTemplate(this._render),this._flushTemplates()},_render:function(){this._needFullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterFn?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),this._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._instances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._limit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=this;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlaceholder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?this._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];void 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i++)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){for(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_detachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChild(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlaceholder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_insertPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.collection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t){var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instances[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNode;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgradeInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:function(e){for(var t=0;t<this._instances.length;t++)this._instances[t].isPlaceholder||this._instances[t]._showHideChildren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sortFn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.indexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.length+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToInstIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.selected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selected"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.length||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelected:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selected==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._selectedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected."+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&this.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","items."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extends:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_queueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[Polymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(this._ensureInstance)},render:function(){this._flushTemplates()},_render:function(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showHideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._instance&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),this._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNode;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstance:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)for(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r++)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChildren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance._notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._readied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,this._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertChildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefore(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<this._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfigure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=this._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:function(){this._importsReady&&this.render()},detached:function(){this._removeChildren()},render:function(){this._ensureReady(),this._children||(this._template=this,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepConfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatures.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),this._insertChildren(),this.fire("dom-change")}})</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>Polymer.PaperSpinnerBehavior={listeners:{animationend:"__reset",webkitAnimationEnd:"__reset"},properties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__activeChanged"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDown:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?"active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setAriaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){e===this.getPropertyInfo("alt").value?this.alt=this.getAttribute("aria-label")||e:(this.__setAriaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e){var t="aria-hidden";e?this.setAttribute(t,"true"):this.removeAttribute(t)},__reset:function(){this.active=!1,this.__coolingDown=!1}}</script><dom-module id="paper-spinner-styles" assetpath="../bower_components/paper-spinner/"><template><style>:host{display:inline-block;position:relative;width:28px;height:28px;--paper-spinner-container-rotation-duration:1568ms;--paper-spinner-expand-contract-duration:1333ms;--paper-spinner-full-cycle-duration:5332ms;--paper-spinner-cooldown-duration:400ms}#spinnerContainer{width:100%;height:100%;direction:ltr}#spinnerContainer.active{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite;animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;white-space:nowrap;border-color:var(--paper-spinner-color,--google-blue-500)}.layer-1{border-color:var(--paper-spinner-layer-1-color,--google-blue-500)}.layer-2{border-color:var(--paper-spinner-layer-2-color,--google-red-500)}.layer-3{border-color:var(--paper-spinner-layer-3-color,--google-yellow-500)}.layer-4{border-color:var(--paper-spinner-layer-4-color,--google-green-500)}.active .spinner-layer{-webkit-animation-name:fill-unfill-rotate;-webkit-animation-duration:var(--paper-spinner-full-cycle-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-name:fill-unfill-rotate;animation-duration:var(--paper-spinner-full-cycle-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite;opacity:1}.active .spinner-layer.layer-1{-webkit-animation-name:fill-unfill-rotate,layer-1-fade-in-out;animation-name:fill-unfill-rotate,layer-1-fade-in-out}.active .spinner-layer.layer-2{-webkit-animation-name:fill-unfill-rotate,layer-2-fade-in-out;animation-name:fill-unfill-rotate,layer-2-fade-in-out}.active .spinner-layer.layer-3{-webkit-animation-name:fill-unfill-rotate,layer-3-fade-in-out;animation-name:fill-unfill-rotate,layer-3-fade-in-out}.active .spinner-layer.layer-4{-webkit-animation-name:fill-unfill-rotate,layer-4-fade-in-out;animation-name:fill-unfill-rotate,layer-4-fade-in-out}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@-webkit-keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}@keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.spinner-layer::after{left:45%;width:10%;border-top-style:solid}.circle-clipper::after,.spinner-layer::after{content:'';box-sizing:border-box;position:absolute;top:0;border-width:var(--paper-spinner-stroke-width,3px);border-color:inherit;border-radius:50%}.circle-clipper::after{bottom:0;width:200%;border-style:solid;border-bottom-color:transparent!important}.circle-clipper.left::after{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right::after{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper::after,.active .gap-patch::after{-webkit-animation-duration:var(--paper-spinner-expand-contract-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-duration:var(--paper-spinner-expand-contract-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite}.active .circle-clipper.left::after{-webkit-animation-name:left-spin;animation-name:left-spin}.active .circle-clipper.right::after{-webkit-animation-name:right-spin;animation-name:right-spin}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1);animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}</style></template></dom-module><dom-module id="paper-spinner" assetpath="../bower_components/paper-spinner/"><template strip-whitespace=""><style include="paper-spinner-styles"></style><div id="spinnerContainer" class-name="[[__computeContainerClasses(active, __coolingDown)]]"><div class="spinner-layer layer-1"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-2"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-3"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-4"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div></div></template><script>Polymer({is:"paper-spinner",behaviors:[Polymer.PaperSpinnerBehavior]})</script></dom-module><style>@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Black.ttf) format("truetype");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}</style><style is="custom-style">:root{--paper-font-common-base:{font-family:Roboto,Noto,sans-serif;-webkit-font-smoothing:antialiased};--paper-font-common-code:{font-family:'Roboto Mono',Consolas,Menlo,monospace;-webkit-font-smoothing:antialiased};--paper-font-common-expensive-kerning:{text-rendering:optimizeLegibility};--paper-font-common-nowrap:{white-space:nowrap;overflow:hidden;text-overflow:ellipsis};--paper-font-display4:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:112px;font-weight:300;letter-spacing:-.044em;line-height:120px};--paper-font-display3:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:56px;font-weight:400;letter-spacing:-.026em;line-height:60px};--paper-font-display2:{@apply(--paper-font-common-base);font-size:45px;font-weight:400;letter-spacing:-.018em;line-height:48px};--paper-font-display1:{@apply(--paper-font-common-base);font-size:34px;font-weight:400;letter-spacing:-.01em;line-height:40px};--paper-font-headline:{@apply(--paper-font-common-base);font-size:24px;font-weight:400;letter-spacing:-.012em;line-height:32px};--paper-font-title:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:20px;font-weight:500;line-height:28px};--paper-font-subhead:{@apply(--paper-font-common-base);font-size:16px;font-weight:400;line-height:24px};--paper-font-body2:{@apply(--paper-font-common-base);font-size:14px;font-weight:500;line-height:24px};--paper-font-body1:{@apply(--paper-font-common-base);font-size:14px;font-weight:400;line-height:20px};--paper-font-caption:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:12px;font-weight:400;letter-spacing:0.011em;line-height:20px};--paper-font-menu:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:13px;font-weight:500;line-height:24px};--paper-font-button:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:14px;font-weight:500;letter-spacing:0.018em;line-height:24px;text-transform:uppercase};--paper-font-code2:{@apply(--paper-font-common-code);font-size:14px;font-weight:700;line-height:20px};--paper-font-code1:{@apply(--paper-font-common-code);font-size:14px;font-weight:500;line-height:20px};}</style><dom-module id="iron-flex" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal,.layout.vertical{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.inline{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex}.layout.horizontal{-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}.layout.vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.layout.wrap{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.flex{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-auto{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.flex-none{-ms-flex:none;-webkit-flex:none;flex:none}</style></template></dom-module><dom-module id="iron-flex-reverse" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal-reverse,.layout.vertical-reverse{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.horizontal-reverse{-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.layout.vertical-reverse{-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.layout.wrap-reverse{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}</style></template></dom-module><dom-module id="iron-flex-alignment" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.start{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.end{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end}.layout.baseline{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline}.layout.start-justified{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.layout.end-justified{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.layout.around-justified{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around}.layout.justified{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.self-start{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start}.self-center{-ms-align-self:center;-webkit-align-self:center;align-self:center}.self-end{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end}.self-stretch{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch}.self-baseline{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline}; .layout.start-aligned{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start}.layout.end-aligned{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end}.layout.center-aligned{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center}.layout.between-aligned{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between}.layout.around-aligned{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around}</style></template></dom-module><dom-module id="iron-flex-factors" assetpath="../bower_components/iron-flex-layout/"><template><style>.flex,.flex-1{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-2{-ms-flex:2;-webkit-flex:2;flex:2}.flex-3{-ms-flex:3;-webkit-flex:3;flex:3}.flex-4{-ms-flex:4;-webkit-flex:4;flex:4}.flex-5{-ms-flex:5;-webkit-flex:5;flex:5}.flex-6{-ms-flex:6;-webkit-flex:6;flex:6}.flex-7{-ms-flex:7;-webkit-flex:7;flex:7}.flex-8{-ms-flex:8;-webkit-flex:8;flex:8}.flex-9{-ms-flex:9;-webkit-flex:9;flex:9}.flex-10{-ms-flex:10;-webkit-flex:10;flex:10}.flex-11{-ms-flex:11;-webkit-flex:11;flex:11}.flex-12{-ms-flex:12;-webkit-flex:12;flex:12}</style></template></dom-module><dom-module id="iron-positioning" assetpath="../bower_components/iron-flex-layout/"><template><style>.block{display:block}[hidden]{display:none!important}.invisible{visibility:hidden!important}.relative{position:relative}.fit{position:absolute;top:0;right:0;bottom:0;left:0}body.fullbleed{margin:0;height:100vh}.scroll{-webkit-overflow-scrolling:touch;overflow:auto}.fixed-bottom,.fixed-left,.fixed-right,.fixed-top{position:fixed}.fixed-top{top:0;left:0;right:0}.fixed-right{top:0;right:0;bottom:0}.fixed-bottom{right:0;bottom:0;left:0}.fixed-left{top:0;bottom:0;left:0}</style></template></dom-module><script>!function(n){"use strict";function t(n,t){for(var e=[],r=0,u=n.length;r<u;r++)e.push(n[r].substr(0,t));return e}function e(n){return function(t,e,r){var u=r[n].indexOf(e.charAt(0).toUpperCase()+e.substr(1).toLowerCase());~u&&(t.month=u)}}function r(n,t){for(n=String(n),t=t||2;n.length<t;)n="0"+n;return n}var u={},o=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a=/\d\d?/,i=/\d{3}/,s=/\d{4}/,m=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,d=function(){},f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"],h=t(c,3),l=t(f,3);u.i18n={dayNamesShort:l,dayNames:f,monthNamesShort:h,monthNames:c,amPm:["am","pm"],DoFn:function(n){return n+["th","st","nd","rd"][n%10>3?0:(n-n%10!==10)*n%10]}};var M={D:function(n){return n.getDate()},DD:function(n){return r(n.getDate())},Do:function(n,t){return t.DoFn(n.getDate())},d:function(n){return n.getDay()},dd:function(n){return r(n.getDay())},ddd:function(n,t){return t.dayNamesShort[n.getDay()]},dddd:function(n,t){return t.dayNames[n.getDay()]},M:function(n){return n.getMonth()+1},MM:function(n){return r(n.getMonth()+1)},MMM:function(n,t){return t.monthNamesShort[n.getMonth()]},MMMM:function(n,t){return t.monthNames[n.getMonth()]},YY:function(n){return String(n.getFullYear()).substr(2)},YYYY:function(n){return n.getFullYear()},h:function(n){return n.getHours()%12||12},hh:function(n){return r(n.getHours()%12||12)},H:function(n){return n.getHours()},HH:function(n){return r(n.getHours())},m:function(n){return n.getMinutes()},mm:function(n){return r(n.getMinutes())},s:function(n){return n.getSeconds()},ss:function(n){return r(n.getSeconds())},S:function(n){return Math.round(n.getMilliseconds()/100)},SS:function(n){return r(Math.round(n.getMilliseconds()/10),2)},SSS:function(n){return r(n.getMilliseconds(),3)},a:function(n,t){return n.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(n,t){return n.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(n){var t=n.getTimezoneOffset();return(t>0?"-":"+")+r(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},g={D:[a,function(n,t){n.day=t}],Do:[new RegExp(a.source+m.source),function(n,t){n.day=parseInt(t,10)}],M:[a,function(n,t){n.month=t-1}],YY:[a,function(n,t){var e=new Date,r=+(""+e.getFullYear()).substr(0,2);n.year=""+(t>68?r-1:r)+t}],h:[a,function(n,t){n.hour=t}],m:[a,function(n,t){n.minute=t}],s:[a,function(n,t){n.second=t}],YYYY:[s,function(n,t){n.year=t}],S:[/\d/,function(n,t){n.millisecond=100*t}],SS:[/\d{2}/,function(n,t){n.millisecond=10*t}],SSS:[i,function(n,t){n.millisecond=t}],d:[a,d],ddd:[m,d],MMM:[m,e("monthNamesShort")],MMMM:[m,e("monthNames")],a:[m,function(n,t,e){var r=t.toLowerCase();r===e.amPm[0]?n.isPm=!1:r===e.amPm[1]&&(n.isPm=!0)}],ZZ:[/[\+\-]\d\d:?\d\d/,function(n,t){var e,r=(t+"").match(/([\+\-]|\d\d)/gi);r&&(e=+(60*r[1])+parseInt(r[2],10),n.timezoneOffset="+"===r[0]?e:-e)}]};g.dd=g.d,g.dddd=g.ddd,g.DD=g.D,g.mm=g.m,g.hh=g.H=g.HH=g.h,g.MM=g.M,g.ss=g.s,g.A=g.a,u.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},u.format=function(n,t,e){var r=e||u.i18n;if("number"==typeof n&&(n=new Date(n)),"[object Date]"!==Object.prototype.toString.call(n)||isNaN(n.getTime()))throw new Error("Invalid Date in fecha.format");return t=u.masks[t]||t||u.masks.default,t.replace(o,function(t){return t in M?M[t](n,r):t.slice(1,t.length-1)})},u.parse=function(n,t,e){var r=e||u.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=u.masks[t]||t,n.length>1e3)return!1;var a=!0,i={};if(t.replace(o,function(t){if(g[t]){var e=g[t],u=n.search(e[0]);~u?n.replace(e[0],function(t){return e[1](i,t,r),n=n.substr(u+t.length),t}):a=!1}return g[t]?"":t.slice(1,t.length-1)}),!a)return!1;var s=new Date;i.isPm===!0&&null!=i.hour&&12!==+i.hour?i.hour=+i.hour+12:i.isPm===!1&&12===+i.hour&&(i.hour=0);var m;return null!=i.timezoneOffset?(i.minute=+(i.minute||0)-+i.timezoneOffset,m=new Date(Date.UTC(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0))):m=new Date(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0),m},"undefined"!=typeof module&&module.exports?module.exports=u:"function"==typeof define&&define.amd?define(function(){return u}):n.fecha=u}(this)</script><script>function toLocaleStringSupportsOptions(){try{(new Date).toLocaleString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleDateStringSupportsOptions(){try{(new Date).toLocaleDateString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleTimeStringSupportsOptions(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}window.hassUtil=window.hassUtil||{},window.hassUtil.DEFAULT_ICON="mdi:bookmark",window.hassUtil.OFF_STATES=["off","closed","unlocked"],window.hassUtil.DOMAINS_WITH_CARD=["climate","cover","configurator","input_select","input_slider","media_player","scene","script","weblink"],window.hassUtil.DOMAINS_WITH_MORE_INFO=["light","group","sun","climate","configurator","cover","script","media_player","camera","updater","alarm_control_panel","lock","automation"],window.hassUtil.DOMAINS_WITH_NO_HISTORY=["camera","configurator","scene"],window.hassUtil.HIDE_MORE_INFO=["input_select","scene","script","input_slider"],window.hassUtil.LANGUAGE=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage,window.hassUtil.attributeClassNames=function(e,t){return e?t.map(function(t){return t in e.attributes?"has-"+t:""}).join(" "):""},window.hassUtil.canToggle=function(e,t){return e.reactor.evaluate(e.serviceGetters.canToggleEntity(t))},window.hassUtil.dynamicContentUpdater=function(e,t,i){var n,a=Polymer.dom(e);a.lastChild&&a.lastChild.tagName===t?n=a.lastChild:(a.lastChild&&a.removeChild(a.lastChild),n=document.createElement(t)),Object.keys(i).forEach(function(e){n[e]=i[e]}),null===n.parentNode&&a.appendChild(n)},window.fecha.masks.haDateTime=window.fecha.masks.shortTime+" "+window.fecha.masks.mediumDate,toLocaleStringSupportsOptions()?window.hassUtil.formatDateTime=function(e){return e.toLocaleString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatDateTime=function(e){return window.fecha.format(e,"haDateTime")},toLocaleDateStringSupportsOptions()?window.hassUtil.formatDate=function(e){return e.toLocaleDateString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric"})}:window.hassUtil.formatDate=function(e){return window.fecha.format(e,"mediumDate")},toLocaleTimeStringSupportsOptions()?window.hassUtil.formatTime=function(e){return e.toLocaleTimeString(window.hassUtil.LANGUAGE,{hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatTime=function(e){return window.fecha.format(e,"shortTime")},window.hassUtil.relativeTime=function(e){var t,i=Math.abs(new Date-e)/1e3,n=new Date>e?"%s ago":"in %s",a=window.hassUtil.relativeTime.tests;for(t=0;t<a.length;t+=2){if(i<a[t])return i=Math.floor(i),n.replace("%s",1===i?"1 "+a[t+1]:i+" "+a[t+1]+"s");i/=a[t]}return i=Math.floor(i),n.replace("%s",1===i?"1 week":i+" weeks")},window.hassUtil.relativeTime.tests=[60,"second",60,"minute",24,"hour",7,"day"],window.hassUtil.stateCardType=function(e,t){return"unavailable"===t.state?"display":window.hassUtil.DOMAINS_WITH_CARD.indexOf(t.domain)!==-1?t.domain:window.hassUtil.canToggle(e,t.entityId)&&"hidden"!==t.attributes.control?"toggle":"display"},window.hassUtil.stateMoreInfoType=function(e){return window.hassUtil.DOMAINS_WITH_MORE_INFO.indexOf(e.domain)!==-1?e.domain:window.hassUtil.HIDE_MORE_INFO.indexOf(e.domain)!==-1?"hidden":"default"},window.hassUtil.domainIcon=function(e,t){switch(e){case"alarm_control_panel":return t&&"disarmed"===t?"mdi:bell-outline":"mdi:bell";case"automation":return"mdi:playlist-play";case"binary_sensor":return t&&"off"===t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle";case"camera":return"mdi:video";case"climate":return"mdi:nest-thermostat";case"configurator":return"mdi:settings";case"conversation":return"mdi:text-to-speech";case"cover":return t&&"open"===t?"mdi:window-open":"mdi:window-closed";case"device_tracker":return"mdi:account";case"fan":return"mdi:fan";case"group":return"mdi:google-circles-communities";case"homeassistant":return"mdi:home";case"input_boolean":return"mdi:drawing";case"input_select":return"mdi:format-list-bulleted";case"input_slider":return"mdi:ray-vertex";case"light":return"mdi:lightbulb";case"lock":return t&&"unlocked"===t?"mdi:lock-open":"mdi:lock";case"media_player":return t&&"off"!==t&&"idle"!==t?"mdi:cast-connected":"mdi:cast";case"notify":return"mdi:comment-alert";case"proximity":return"mdi:apple-safari";case"remote":return"mdi:remote";case"scene":return"mdi:google-pages";case"script":return"mdi:file-document";case"sensor":return"mdi:eye";case"simple_alarm":return"mdi:bell";case"sun":return"mdi:white-balance-sunny";case"switch":return"mdi:flash";case"updater":return"mdi:cloud-upload";case"weblink":return"mdi:open-in-new";default:return console.warn("Unable to find icon for domain "+e+" ("+t+")"),window.hassUtil.DEFAULT_ICON}},window.hassUtil.binarySensorIcon=function(e){var t=e.state&&"off"===e.state;switch(e.attributes.sensor_class){case"connectivity":return t?"mdi:server-network-off":"mdi:server-network";case"light":return t?"mdi:brightness-5":"mdi:brightness-7";case"moisture":return t?"mdi:water-off":"mdi:water";case"motion":return t?"mdi:walk":"mdi:run";case"occupancy":return t?"mdi:home":"mdi:home-outline";case"opening":return t?"mdi:crop-square":"mdi:exit-to-app";case"sound":return t?"mdi:music-note-off":"mdi:music-note";case"vibration":return t?"mdi:crop-portrait":"mdi:vibrate";case"gas":case"power":case"safety":case"smoke":return t?"mdi:verified":"mdi:alert";default:return t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle"}},window.hassUtil.stateIcon=function(e){var t;if(!e)return window.hassUtil.DEFAULT_ICON;if(e.attributes.icon)return e.attributes.icon;if(t=e.attributes.unit_of_measurement,t&&"sensor"===e.domain){if("°C"===t||"°F"===t)return"mdi:thermometer";if("Mice"===t)return"mdi:mouse-variant"}else if("binary_sensor"===e.domain)return window.hassUtil.binarySensorIcon(e);return window.hassUtil.domainIcon(e.domain,e.state)}</script><script>window.hassBehavior={attached:function(){var e=this.hass;if(!e)throw new Error("No hass property found on "+this.nodeName);this.nuclearUnwatchFns=Object.keys(this.properties).reduce(function(t,r){var n;if(!("bindNuclear"in this.properties[r]))return t;if(n=this.properties[r].bindNuclear(e),!n)throw new Error("Undefined getter specified for key "+r+" on "+this.nodeName);return this[r]=e.reactor.evaluate(n),t.concat(e.reactor.observe(n,function(e){this[r]=e}.bind(this)))}.bind(this),[])},detached:function(){for(;this.nuclearUnwatchFns.length;)this.nuclearUnwatchFns.shift()()}}</script><style is="custom-style">:root{--primary-text-color:var(--light-theme-text-color);--primary-background-color:var(--light-theme-background-color);--secondary-text-color:var(--light-theme-secondary-color);--disabled-text-color:var(--light-theme-disabled-color);--divider-color:var(--light-theme-divider-color);--error-color:var(--paper-deep-orange-a700);--primary-color:var(--paper-indigo-500);--light-primary-color:var(--paper-indigo-100);--dark-primary-color:var(--paper-indigo-700);--accent-color:var(--paper-pink-a200);--light-accent-color:var(--paper-pink-a100);--dark-accent-color:var(--paper-pink-a400);--light-theme-background-color:#ffffff;--light-theme-base-color:#000000;--light-theme-text-color:var(--paper-grey-900);--light-theme-secondary-color:#737373;--light-theme-disabled-color:#9b9b9b;--light-theme-divider-color:#dbdbdb;--dark-theme-background-color:var(--paper-grey-900);--dark-theme-base-color:#ffffff;--dark-theme-text-color:#ffffff;--dark-theme-secondary-color:#bcbcbc;--dark-theme-disabled-color:#646464;--dark-theme-divider-color:#3c3c3c;--text-primary-color:var(--dark-theme-text-color);--default-primary-color:var(--primary-color)}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><script>Polymer.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,reflectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,value:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueChanged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIronCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this.required||this.checked},_requiredChanged:function(){this.required?this.setAttribute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChanged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.IronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronCheckedElementBehaviorImpl]</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><script>Polymer.IronButtonStateImpl={properties:{pressed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedChanged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boolean,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly:!0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttribute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}},listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_detectKeyboardFocus(focused)","_activeChanged(active, ariaActiveAttribute)"],keyBindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler","space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function(){this.toggles?this._userActivate(!this.active):this.active=!1},_detectKeyboardFocus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userActivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downHandler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceivedFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._setPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(t.preventDefault(),t.stopImmediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){this.async(function(){this.click()},1)},_pressedChanged:function(e){this._changedButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttribute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this.setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(this.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:function(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButtonState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},Polymer.IronButtonState=[Polymer.IronA11yKeysBehavior,Polymer.IronButtonStateImpl]</script><dom-module id="paper-ripple" assetpath="../bower_components/paper-ripple/"><template><style>:host{display:block;position:absolute;border-radius:inherit;overflow:hidden;top:0;left:0;right:0;bottom:0;pointer-events:none}:host([animating]){-webkit-transform:translate(0,0);transform:translate3d(0,0,0)}#background,#waves,.wave,.wave-container{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}#background,.wave{opacity:0}#waves,.wave{overflow:hidden}.wave,.wave-container{border-radius:50%}:host(.circle) #background,:host(.circle) #waves{border-radius:50%}:host(.circle) .wave-container{overflow:hidden}</style><div id="background"></div><div id="waves"></div></template></dom-module><script>!function(){function t(t){this.element=t,this.width=this.boundingRect.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this.height)}function i(t){this.element=t,this.color=window.getComputedStyle(t).color,this.wave=document.createElement("div"),this.waveContainer=document.createElement("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("wave"),this.waveContainer.classList.add("wave-container"),Polymer.dom(this.waveContainer).appendChild(this.wave),this.resetInteractionState()}var e={distance:function(t,i,e,n){var s=t-e,o=i-n;return Math.sqrt(s*s+o*o)},now:window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now};t.prototype={get boundingRect(){return this.element.getBoundingClientRect()},furthestCornerDistanceFrom:function(t,i){var n=e.distance(t,i,0,0),s=e.distance(t,i,this.width,0),o=e.distance(t,i,0,this.height),a=e.distance(t,i,this.width,this.height);return Math.max(n,s,o,a)}},i.MAX_RADIUS=300,i.prototype={get recenters(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var t;return this.mouseDownStart?(t=e.now()-this.mouseDownStart,this.mouseUpStart&&(t-=this.mouseUpElapsed),t):0},get mouseUpElapsed(){return this.mouseUpStart?e.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){return this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpElapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+this.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacity},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radius(){var t=this.containerMetrics.width*this.containerMetrics.width,e=this.containerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(t+e),i.MAX_RADIUS)+5,s=1.1-.2*(n/i.MAX_RADIUS),o=this.mouseInteractionSeconds/s,a=n*(1-Math.pow(80,-o));return Math.abs(a)},get opacity(){return this.mouseUpStart?Math.max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity):this.initialOpacity},get outerOpacity(){var t=.3*this.mouseUpElapsedSeconds,i=this.opacity;return Math.max(0,Math.min(t,i))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isRestingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStart?this.isOpacityFullyDecayed:this.isRestingAtMaxRadius},get translationFraction(){return Math.min(1,this.radius/this.containerMetrics.size*2/Math.sqrt(2))},get xNow(){return this.xEnd?this.xStart+this.translationFraction*(this.xEnd-this.xStart):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFraction*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownStart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this.mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,this.yEnd=0,this.slideDistance=0,this.containerMetrics=new t(this.element)},draw:function(){var t,i,e;this.wave.style.opacity=this.opacity,t=this.radius/(this.containerMetrics.size/2),i=this.xNow-this.containerMetrics.width/2,e=this.yNow-this.containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate("+i+"px, "+e+"px)",this.waveContainer.style.transform="translate3d("+i+"px, "+e+"px, 0)",this.wave.style.webkitTransform="scale("+t+","+t+")",this.wave.style.transform="scale3d("+t+","+t+",1)"},downAction:function(t){var i=this.containerMetrics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.mouseDownStart=e.now(),this.center?(this.xStart=i,this.yStart=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=t?t.detail.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this.yStart=t?t.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics.height/2),this.recenters&&(this.xEnd=i,this.yEnd=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMetrics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.style.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.waveContainer.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+"px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveContainer.style.height=this.containerMetrics.size+"px"},upAction:function(t){this.isMouseDown&&(this.mouseUpStart=e.now())},remove:function(){Polymer.dom(this.waveContainer.parentNode).removeChild(this.waveContainer)}},Polymer({is:"paper-ripple",behaviors:[Polymer.IronA11yKeysBehavior],properties:{initialOpacity:{type:Number,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boolean,value:!1},center:{type:Boolean,value:!1},ripples:{type:Array,value:function(){return[]}},animating:{type:Boolean,readOnly:!0,reflectToAttribute:!0,value:!1},holdDown:{type:Boolean,value:!1,observer:"_holdDownChanged"},noink:{type:Boolean,value:!1},_animating:{type:Boolean},_boundAnimate:{type:Function,value:function(){return this.animate.bind(this)}}},get target(){return this.keyEventTarget},keyBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown","space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?this.keyEventTarget=Polymer.dom(this).getOwnerRoot().host:this.keyEventTarget=this.parentNode;var t=this.keyEventTarget;this.listen(t,"up","uiUpAction"),this.listen(t,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTarget,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"),this.keyEventTarget=null},get shouldKeepAnimating(){for(var t=0;t<this.ripples.length;++t)if(!this.ripples[t].isAnimationComplete)return!0;return!1},simulatedRipple:function(){this.downAction(null),this.async(function(){this.upAction()},1)},uiDownAction:function(t){this.noink||this.downAction(t)},downAction:function(t){if(!(this.holdDown&&this.ripples.length>0)){var i=this.addRipple();i.downAction(t),this._animating||(this._animating=!0,this.animate())}},uiUpAction:function(t){this.noink||this.upAction(t)},upAction:function(t){this.holdDown||(this.ripples.forEach(function(i){i.upAction(t)}),this._animating=!0,this.animate())},onAnimationComplete:function(){this._animating=!1,this.$.background.style.backgroundColor=null,this.fire("transitionend")},addRipple:function(){var t=new i(this);return Polymer.dom(this.$.waves).appendChild(t.waveContainer),this.$.background.style.backgroundColor=t.color,this.ripples.push(t),this._setAnimating(!0),t},removeRipple:function(t){var i=this.ripples.indexOf(t);i<0||(this.ripples.splice(i,1),t.remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(this._animating){var t,i;for(t=0;t<this.ripples.length;++t)i=this.ripples[t],i.draw(),this.$.background.style.opacity=i.outerOpacity,i.isOpacityFullyDecayed&&!i.isRestingAtMaxRadius&&this.removeRipple(i);this.shouldKeepAnimating||0!==this.ripples.length?window.requestAnimationFrame(this._boundAnimate):this.onAnimationComplete()}},_onEnterKeydown:function(){this.uiDownAction(),this.async(this.uiUpAction,1)},_onSpaceKeydown:function(){this.uiDownAction()},_onSpaceKeyup:function(){this.uiUpAction()},_holdDownChanged:function(t,i){void 0!==i&&(t?this.downAction():this.upAction())}})}()</script><script>Polymer.PaperRippleBehavior={properties:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object}},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandler:function(e){Polymer.IronButtonStateImpl._downHandler.call(this,e),this.pressed&&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._ripple=this._createRipple(),this._ripple.noink=this.noink;var i=this._rippleContainer||this.root;if(i&&Polymer.dom(i).appendChild(this._ripple),e){var n=Polymer.dom(this._rippleContainer||this),t=Polymer.dom(e).rootTarget;n.deepContains(t)&&this._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),this._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:function(){return document.createElement("paper-ripple")},_noinkChanged:function(e){this.hasRipple()&&(this._ripple.noink=e)}}</script><script>Polymer.PaperInkyFocusBehaviorImpl={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_focusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple.holdDown=e)},_createRipple:function(){var e=Polymer.PaperRippleBehavior._createRipple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle"),e}},Polymer.PaperInkyFocusBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperInkyFocusBehaviorImpl]</script><script>Polymer.PaperCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedElementBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_buttonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.PaperCheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElementBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script><dom-module id="paper-checkbox" assetpath="../bower_components/paper-checkbox/"><template strip-whitespace=""><style>:host{display:inline-block;white-space:nowrap;cursor:pointer;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calculated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#checkboxContainer{display:inline-block;position:relative;width:var(--calculated-paper-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vertical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--paper-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-checkbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[checked]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color 140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #checkmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:checkmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-webkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--paper-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbox-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;height:70%;border-style:solid;border-top:none;border-left:none;border-right-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-checkmark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-sizing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:50% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px);white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,var(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkboxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-label-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spacing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #checkbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(--paper-checkbox-error-color,var(--error-color))}</style><div id="checkboxContainer"><div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"><div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div></div></div><div id="checkboxLabel"><content></content></div></template><script>Polymer({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComputedStyleValue("--calculated-paper-checkbox-ink-size").trim();if("-1px"===e){var t=parseFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size").trim()),a=Math.floor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",this.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+="checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxContainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script></dom-module><script>Polymer.PaperButtonBehaviorImpl={properties:{elevation:{type:Number,reflectToAttribute:!0,readOnly:!0}},observers:["_calculateElevation(focused, disabled, active, pressed, receivedFocusFromKeyboard)","_computeKeyboardClass(receivedFocusFromKeyboard)"],hostAttributes:{role:"button",tabindex:"0",animated:!0},_calculateElevation:function(){var e=1;this.disabled?e=0:this.active||this.pressed?e=4:this.receivedFocusFromKeyboard&&(e=3),this._setElevation(e)},_computeKeyboardClass:function(e){this.toggleClass("keyboard-focus",e)},_spaceKeyDownHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyDownHandler.call(this,e),this.hasRipple()&&this.getRipple().ripples.length<1&&this._ripple.uiDownAction()},_spaceKeyUpHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyUpHandler.call(this,e),this.hasRipple()&&this._ripple.uiUpAction()}},Polymer.PaperButtonBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperButtonBehaviorImpl]</script><style is="custom-style">:root{--shadow-transition:{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)};--shadow-none:{box-shadow:none};--shadow-elevation-2dp:{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)};--shadow-elevation-3dp:{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12),0 3px 3px -2px rgba(0,0,0,.4)};--shadow-elevation-4dp:{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4)};--shadow-elevation-6dp:{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4)};--shadow-elevation-8dp:{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)};--shadow-elevation-12dp:{box-shadow:0 12px 16px 1px rgba(0,0,0,.14),0 4px 22px 3px rgba(0,0,0,.12),0 6px 7px -4px rgba(0,0,0,.4)};--shadow-elevation-16dp:{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.4)};--shadow-elevation-24dp:{box-shadow:0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12),0 11px 15px -7px rgba(0,0,0,.4)};}</style><dom-module id="paper-material-shared-styles" assetpath="../bower_components/paper-material/"><template><style>:host{display:block;position:relative}:host([elevation="1"]){@apply(--shadow-elevation-2dp)}:host([elevation="2"]){@apply(--shadow-elevation-4dp)}:host([elevation="3"]){@apply(--shadow-elevation-6dp)}:host([elevation="4"]){@apply(--shadow-elevation-8dp)}:host([elevation="5"]){@apply(--shadow-elevation-16dp)}</style></template></dom-module><dom-module id="paper-button" assetpath="../bower_components/paper-button/"><template strip-whitespace=""><style include="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:host([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-button-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;cursor:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@apply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</style><content></content></template><script>Polymer({is:"paper-button",behaviors:[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribute:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){this.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._setElevation(0)}})</script></dom-module><dom-module id="paper-input-container" assetpath="../bower_components/paper-input/"><template><style>:host{display:block;padding:8px 0;@apply(--paper-input-container)}:host([inline]){display:inline-block}:host([disabled]){pointer-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidden]){display:none!important}.floated-label-placeholder{@apply(--paper-font-caption)}.underline{height:2px;position:relative}.focused-line{@apply(--layout-fit);border-bottom:2px solid var(--paper-input-container-focus-color,--primary-color);-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:scale3d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.underline.is-invalid .focused-line{border-color:var(--paper-input-container-invalid-color,--error-color);-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.unfocused-line{@apply(--layout-fit);border-bottom:1px solid var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px dashed;border-color:var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline-disabled)}.label-and-input-container{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-width:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);position:relative}.input-content ::content .paper-input-label,.input-content ::content label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transform-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper-transition-easing)}.input-content.label-is-floating ::content .paper-input-label,.input-content.label-is-floating ::content label{-webkit-transform:translateY(-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-is-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;transform-origin:right top}.input-content.label-is-highlighted ::content .paper-input-label,.input-content.label-is-highlighted ::content label{color:var(--paper-input-container-focus-color,--primary-color);@apply(--paper-input-container-label-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--error-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-content.label-is-hidden ::content label{visibility:hidden}.input-content ::content .paper-input-input,.input-content ::content input,.input-content ::content iron-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appearance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead);@apply(--paper-input-container-input)}.input-content ::content input::-webkit-inner-spin-button,.input-content ::content input::-webkit-outer-spin-button{@apply(--paper-input-container-input-webkit-spinner)}::content [prefix]{@apply(--paper-font-subhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffix]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-flex-none)}.input-content ::content input{min-width:0}.input-content ::content textarea{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on-content.is-highlighted ::content *{color:var(--paper-input-container-focus-color,--primary-color)}</style><template is="dom-if" if="[[!noLabelFloat]]"><div class="floated-label-placeholder" aria-hidden="true"> </div></template><div class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,invalid,_inputHasContent)]]"><content select="[prefix]" id="prefix"></content><div class="label-and-input-container" id="labelAndInputContainer"><content select=":not([add-on]):not([prefix]):not([suffix])"></content></div><content select="[suffix]"></content></div><div class$="[[_computeUnderlineClass(focused,invalid)]]"><div class="unfocused-line"></div><div class="focused-line"></div></div><div class$="[[_computeAddOnContentClass(focused,invalid)]]"><content id="addOnContent" select="[add-on]"></content></div></template></dom-module><script>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidChanged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Function,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Function,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Function,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:Function,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"addon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForValue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputElement(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElementValue(){return this._inputElement[this._propertyForValue]||this._inputElement.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)},attached:function(){this.attrForValue?this._inputElement.addEventListener(this._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this._onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inputElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){this._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(this._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFocus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),this._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._handleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValueAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementValue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.invalid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.validate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}this._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputElement.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invalid:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddOnContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e}})</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-error" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--error-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:absolute;left:0;right:0}:host([invalid]){visibility:visible};</style><content></content></template></dom-module><script>Polymer({is:"paper-input-error",behaviors:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAttribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</script><dom-module id="iron-a11y-announcer" assetpath="../bower_components/iron-a11y-announcer/"><template><style>:host{display:inline-block;position:fixed;clip:rect(0,0,0,0)}</style><div aria-live$="[[mode]]">[[_text]]</div></template><script>!function(){"use strict";Polymer.IronA11yAnnouncer=Polymer({is:"iron-a11y-announcer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""}},created:function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=this),document.body.addEventListener("iron-announce",this._onIronAnnounce.bind(this))},announce:function(n){this._text="",this.async(function(){this._text=n},100)},_onIronAnnounce:function(n){n.detail&&n.detail.text&&this.announce(n.detail.text)}}),Polymer.IronA11yAnnouncer.instance=null,Polymer.IronA11yAnnouncer.requestAvailability=function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=document.createElement("iron-a11y-announcer")),document.body.appendChild(Polymer.IronA11yAnnouncer.instance)}}()</script></dom-module><script>Polymer({is:"iron-input",extends:"input",behaviors:[Polymer.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,observer:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patternAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._origDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefoxIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDispatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.disabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});try{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t},_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._origDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.type){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.value},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.bindValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){this.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preventInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity();e||(this._announceInvalidCharacter("Invalid string of characters not entered."),this.value=this._previousValidInput)}this.bindValue=this.value,this._previousValidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20==e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyCode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)},_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlreadyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.test(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))return!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.required&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBehavior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-validate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text:e})}})</script><dom-module id="login-form" assetpath="layouts/"><template><style is="custom-style" include="iron-flex iron-positioning"></style><style>:host{white-space:nowrap}#passwordDecorator{display:block;margin-bottom:16px}paper-checkbox{margin-right:8px}paper-button{margin-left:72px}.interact{height:125px}#validatebox{margin-top:16px;text-align:center}.validatemessage{margin-top:10px}</style><div class="layout vertical center center-center fit"><img src="/static/icons/favicon-192x192.png" height="192"> <a href="#" id="hideKeyboardOnFocus"></a><div class="interact"><div id="loginform" hidden$="[[showLoading]]"><paper-input-container id="passwordDecorator" invalid="[[isInvalid]]"><label>Password</label><input is="iron-input" type="password" id="passwordInput"><paper-input-error invalid="[[isInvalid]]">[[errorMessage]]</paper-input-error></paper-input-container><div class="layout horizontal center"><paper-checkbox for="" id="rememberLogin">Remember</paper-checkbox><paper-button id="loginButton">Log In</paper-button></div></div><div id="validatebox" hidden$="[[!showLoading]]"><paper-spinner active="true"></paper-spinner><br><div class="validatemessage">Loading data</div></div></div></div></template></dom-module><script>Polymer({is:"login-form",behaviors:[window.hassBehavior],properties:{hass:{type:Object},errorMessage:{type:String,bindNuclear:function(e){return e.authGetters.attemptErrorMessage}},isInvalid:{type:Boolean,bindNuclear:function(e){return e.authGetters.isInvalidAttempt}},isValidating:{type:Boolean,observer:"isValidatingChanged",bindNuclear:function(e){return e.authGetters.isValidating}},loadingResources:{type:Boolean,value:!1},forceShowLoading:{type:Boolean,value:!1},showLoading:{type:Boolean,computed:"computeShowSpinner(forceShowLoading, isValidating)"}},listeners:{keydown:"passwordKeyDown","loginButton.tap":"validatePassword"},observers:["validatingChanged(isValidating, isInvalid)"],attached:function(){window.removeInitMsg()},computeShowSpinner:function(e,i){return e||i},validatingChanged:function(e,i){e||i||(this.$.passwordInput.value="")},isValidatingChanged:function(e){e||this.async(function(){this.$.passwordInput.focus()}.bind(this),10)},passwordKeyDown:function(e){13===e.keyCode?(this.validatePassword(),e.preventDefault()):this.isInvalid&&(this.isInvalid=!1)},validatePassword:function(){this.$.hideKeyboardOnFocus.focus(),window.validateAuth(this.$.passwordInput.value,this.$.rememberLogin.checked)}})</script><script>Polymer({is:"iron-media-query",properties:{queryMatches:{type:Boolean,value:!1,readOnly:!0,notify:!0},query:{type:String,observer:"queryChanged"},full:{type:Boolean,value:!1},_boundMQHandler:{value:function(){return this.queryHandler.bind(this)}},_mq:{value:null}},attached:function(){this.style.display="none",this.queryChanged()},detached:function(){this._remove()},_add:function(){this._mq&&this._mq.addListener(this._boundMQHandler)},_remove:function(){this._mq&&this._mq.removeListener(this._boundMQHandler),this._mq=null},queryChanged:function(){this._remove();var e=this.query;e&&(this.full||"("===e[0]||(e="("+e+")"),this._mq=window.matchMedia(e),this._add(),this.queryHandler(this._mq))},queryHandler:function(e){this._setQueryMatches(e.matches)}})</script><script>Polymer.IronSelection=function(e){this.selection=[],this.selectCallback=e},Polymer.IronSelection.prototype={get:function(){return this.multi?this.selection.slice():this.selection[0]},clear:function(e){this.selection.slice().forEach(function(t){(!e||e.indexOf(t)<0)&&this.setItemSelected(t,!1)},this)},isSelected:function(e){return this.selection.indexOf(e)>=0},setItemSelected:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this.selection.push(e);else{var i=this.selection.indexOf(e);i>=0&&this.selection.splice(i,1)}this.selectCallback&&this.selectCallback(e,t)}},select:function(e){this.multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this.setItemSelected(e,!0))},toggle:function(e){this.setItemSelected(e,!this.isSelected(e))}}</script><script>Polymer.IronSelectableBehavior={properties:{attrForSelected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{type:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer:"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"iron-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type:String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){return[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1}}}},observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)","_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=this._filterItem.bind(this),this._selection=new Polymer.IronSelection(this._applySelection.bind(this))},attached:function(){this._observer=this._observeItems(this),this._updateItems(),this._shouldUpdateSelection||this._updateSelected(),this._addListener(this.activateEvent)},detached:function(){this._observer&&Polymer.dom(this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)},indexOf:function(e){return this.items.indexOf(e)},select:function(e){this.selected=e},selectPrevious:function(){var e=this.items.length,t=(Number(this._valueToIndex(this.selected))-1+e)%e;this.selected=this._indexToValue(t)},selectNext:function(){var e=(Number(this._valueToIndex(this.selected))+1)%this.items.length;this.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._indexToValue(e))},forceSynchronousItemUpdate:function(){this._updateItems()},get _shouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this._shouldUpdateSelection&&this._updateSelected()},_addListener:function(e){this.listen(this,e,"_activateHandler")},_removeListener:function(e){this.unlisten(this,e,"_activateHandler")},_activateEventChanged:function(e,t){this._removeListener(t),this._addListener(e)},_updateItems:function(){var e=Polymer.dom(this).queryDistributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._bindFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this._shouldUpdateSelection&&(this.selected=this._indexToValue(this.indexOf(this.selectedItem)))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSelected:function(e){this._selection.select(this._valueToItem(this.selected)),this.fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.selected=this.fallbackSelection)},_filterItem:function(e){return!this._excludedLocalNames[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Number(e);for(var t,i=0;t=this.items[i];i++)if(this._valueForItem(t)==e)return i},_indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e];return t?this._valueForItem(t):void 0},_valueForItem:function(e){var t=e[Polymer.CaseMap.dashToCamelCase(this.attrForSelected)];return void 0!=t?t:e.getAttribute(this.attrForSelected)},_applySelection:function(e,t){this.selectedClass&&this.toggleClass(this.selectedClass,t,e),this.selectedAttribute&&this.toggleAttribute(this.selectedAttribute,t,e),this._selectionChange(),this.fire("iron-"+(t?"select":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this._selection.get())},_observeItems:function(e){return Polymer.dom(e).observeNodes(function(e){this._updateItems(),this._shouldUpdateSelection&&this._updateSelected(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHandler:function(e){for(var t=e.target,i=this.items;t&&t!=this;){var s=i.indexOf(t);if(s>=0){var n=this._indexToValue(s);return void this._itemActivate(n,t)}t=t.parentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,item:t},{cancelable:!0}).defaultPrevented||this.select(e)}}</script><script>Polymer.IronMultiSelectableBehaviorImpl={properties:{multi:{type:Boolean,value:!1,observer:"multiChanged"},selectedValues:{type:Array,notify:!0},selectedItems:{type:Array,readOnly:!0,notify:!0}},observers:["_updateSelected(selectedValues.splices)"],select:function(e){this.multi?this.selectedValues?this._toggleSelected(e):this.selectedValues=[e]:this.selected=e},multiChanged:function(e){this._selection.multi=e},get _shouldUpdateSelection(){return null!=this.selected||null!=this.selectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this.multi?this._shouldUpdateSelection&&(this.selectedValues=this.selectedItems.map(function(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){return null!=e},this)):Polymer.IronSelectableBehavior._updateAttrForSelected.apply(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedValues):this._selectSelected(this.selected)},_selectMulti:function(e){if(e){var t=this._valuesToItems(e);this._selection.clear(t);for(var l=0;l<t.length;l++)this._selection.setItemSelected(t[l],!0);if(this.fallbackSelection&&this.items.length&&!this._selection.get().length){var s=this._valueToItem(this.fallbackSelection);s&&(this.selectedValues=[this.fallbackSelection])}}else this._selection.clear()},_selectionChange:function(){var e=this._selection.get();this.multi?this._setSelectedItems(e):(this._setSelectedItems([e]),this._setSelectedItem(e))},_toggleSelected:function(e){var t=this.selectedValues.indexOf(e),l=t<0;l?this.push("selectedValues",e):this.splice("selectedValues",t,1)},_valuesToItems:function(e){return null==e?null:e.map(function(e){return this._valueToItem(e)},this)}},Polymer.IronMultiSelectableBehavior=[Polymer.IronSelectableBehavior,Polymer.IronMultiSelectableBehaviorImpl]</script><script>Polymer({is:"iron-selector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script><script>Polymer.IronResizableBehavior={properties:{_parentResizable:{type:Object,observer:"_parentResizableChanged"},_notifyingDescendant:{type:Boolean,value:!1}},listeners:{"iron-request-resize-notifications":"_onIronRequestResizeNotifications"},created:function(){this._interestedResizables=[],this._boundNotifyResize=this.notifyResize.bind(this)},attached:function(){this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancelable:!0}),this._parentResizable||(window.addEventListener("resize",this._boundNotifyResize),this.notifyResize())},detached:function(){this._parentResizable?this._parentResizable.stopResizeNotificationsFor(this):window.removeEventListener("resize",this._boundNotifyResize),this._parentResizable=null},notifyResize:function(){this.isAttached&&(this._interestedResizables.forEach(function(e){this.resizerShouldNotify(e)&&this._notifyDescendant(e)},this),this._fireResize())},assignParentResizable:function(e){this._parentResizable=e},stopResizeNotificationsFor:function(e){var i=this._interestedResizables.indexOf(e);i>-1&&(this._interestedResizables.splice(i,1),this.unlisten(e,"iron-resize","_onDescendantIronResize"))},resizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){return this._notifyingDescendant?void e.stopPropagation():void(Polymer.Settings.useShadow||this._fireResize())},_fireResize:function(){this.fire("iron-resize",null,{node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var i=e.path?e.path[0]:e.target;i!==this&&(this._interestedResizables.indexOf(i)===-1&&(this._interestedResizables.push(i),this.listen(i,"iron-resize","_onDescendantIronResize")),i.assignParentResizable(this),this._notifyDescendant(i),e.stopPropagation())},_parentResizableChanged:function(e){e&&window.removeEventListener("resize",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(this._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)}}</script><dom-module id="paper-drawer-panel" assetpath="../bower_components/paper-drawer-panel/"><template><style>:host{display:block;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}iron-selector>#drawer{position:absolute;top:0;left:0;height:100%;background-color:#fff;-moz-box-sizing:border-box;box-sizing:border-box;@apply(--paper-drawer-panel-drawer-container)}.transition-drawer{transition:-webkit-transform ease-in-out .3s,width ease-in-out .3s,visibility .3s;transition:transform ease-in-out .3s,width ease-in-out .3s,visibility .3s}.left-drawer>#drawer{@apply(--paper-drawer-panel-left-drawer-container)}.right-drawer>#drawer{left:auto;right:0;@apply(--paper-drawer-panel-right-drawer-container)}iron-selector>#main{position:absolute;top:0;right:0;bottom:0;@apply(--paper-drawer-panel-main-container)}.transition>#main{transition:left ease-in-out .3s,padding ease-in-out .3s}.right-drawer>#main{left:0}.right-drawer.transition>#main{transition:right ease-in-out .3s,padding ease-in-out .3s}#main>::content>[main]{height:100%}#drawer>::content>[drawer]{height:100%}#scrim{position:absolute;top:0;right:0;bottom:0;left:0;visibility:hidden;opacity:0;transition:opacity ease-in-out .38s,visibility ease-in-out .38s;background-color:rgba(0,0,0,.3);@apply(--paper-drawer-panel-scrim)}.narrow-layout>#drawer{will-change:transform}.narrow-layout>#drawer.iron-selected{box-shadow:2px 2px 4px rgba(0,0,0,.15)}.right-drawer.narrow-layout>#drawer.iron-selected{box-shadow:-2px 2px 4px rgba(0,0,0,.15)}.narrow-layout>#drawer>::content>[drawer]{border:0}.left-drawer.narrow-layout>#drawer:not(.iron-selected){visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.right-drawer.narrow-layout>#drawer:not(.iron-selected){left:auto;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}.left-drawer.dragging>#drawer:not(.iron-selected),.left-drawer.peeking>#drawer:not(.iron-selected),.right-drawer.dragging>#drawer:not(.iron-selected),.right-drawer.peeking>#drawer:not(.iron-selected){visibility:visible}.narrow-layout>#main{padding:0}.right-drawer.narrow-layout>#main{left:0;right:0}.dragging>#main>#scrim,.narrow-layout>#main:not(.iron-selected)>#scrim{visibility:visible;opacity:var(--paper-drawer-panel-scrim-opacity,1)}.narrow-layout>#main>*{margin:0;min-height:100%;left:0;right:0;-moz-box-sizing:border-box;box-sizing:border-box}iron-selector:not(.narrow-layout) ::content [paper-drawer-toggle]{display:none}</style><iron-media-query id="mq" on-query-matches-changed="_onQueryMatchesChanged" query="[[_computeMediaQuery(forceNarrow, responsiveWidth)]]"></iron-media-query><iron-selector attr-for-selected="id" class$="[[_computeIronSelectorClass(narrow, _transition, dragging, rightDrawer, peeking)]]" activate-event="" selected="[[selected]]"><div id="main" style$="[[_computeMainStyle(narrow, rightDrawer, drawerWidth)]]"><content select="[main]"></content><div id="scrim" on-tap="closeDrawer"></div></div><div id="drawer" style$="[[_computeDrawerStyle(drawerWidth)]]"><content id="drawerContent" select="[drawer]"></content></div></iron-selector></template><script>!function(){"use strict";function e(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&e[i]&&t.push(i);return t.join(" ")}var t=null;Polymer({is:"paper-drawer-panel",behaviors:[Polymer.IronResizableBehavior],properties:{defaultSelected:{type:String,value:"main"},disableEdgeSwipe:{type:Boolean,value:!1},disableSwipe:{type:Boolean,value:!1},dragging:{type:Boolean,value:!1,readOnly:!0,notify:!0},drawerWidth:{type:String,value:"256px"},edgeSwipeSensitivity:{type:Number,value:30},forceNarrow:{type:Boolean,value:!1},hasTransform:{type:Boolean,value:function(){return"transform"in this.style}},hasWillChange:{type:Boolean,value:function(){return"willChange"in this.style}},narrow:{reflectToAttribute:!0,type:Boolean,value:!1,readOnly:!0,notify:!0},peeking:{type:Boolean,value:!1,readOnly:!0,notify:!0},responsiveWidth:{type:String,value:"768px"},rightDrawer:{type:Boolean,value:!1},selected:{reflectToAttribute:!0,notify:!0,type:String,value:null},drawerToggleAttribute:{type:String,value:"paper-drawer-toggle"},drawerFocusSelector:{type:String,value:'a[href]:not([tabindex="-1"]),area[href]:not([tabindex="-1"]),input:not([disabled]):not([tabindex="-1"]),select:not([disabled]):not([tabindex="-1"]),textarea:not([disabled]):not([tabindex="-1"]),button:not([disabled]):not([tabindex="-1"]),iframe:not([tabindex="-1"]),[tabindex]:not([tabindex="-1"]),[contentEditable=true]:not([tabindex="-1"])'},_transition:{type:Boolean,value:!1}},listeners:{tap:"_onTap",track:"_onTrack",down:"_downHandler",up:"_upHandler",transitionend:"_onTransitionEnd"},observers:["_forceNarrowChanged(forceNarrow, defaultSelected)","_toggleFocusListener(selected)"],ready:function(){this._transition=!0,this._boundFocusListener=this._didFocus.bind(this)},togglePanel:function(){this._isMainSelected()?this.openDrawer():this.closeDrawer()},openDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="drawer"}.bind(this))},closeDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="main"}.bind(this))},_onTransitionEnd:function(e){var t=Polymer.dom(e).localTarget;if(t===this&&("left"!==e.propertyName&&"right"!==e.propertyName||this.notifyResize(),"transform"===e.propertyName&&(requestAnimationFrame(function(){this.toggleClass("transition-drawer",!1,this.$.drawer)}.bind(this)),"drawer"===this.selected))){var i=this._getAutoFocusedNode();i&&i.focus()}},_computeIronSelectorClass:function(t,i,r,n,a){return e({dragging:r,"narrow-layout":t,"right-drawer":n,"left-drawer":!n,transition:i,peeking:a})},_computeDrawerStyle:function(e){return"width:"+e+";"},_computeMainStyle:function(e,t,i){var r="";return r+="left:"+(e||t?"0":i)+";",t&&(r+="right:"+(e?"":i)+";"),r},_computeMediaQuery:function(e,t){return e?"":"(max-width: "+t+")"},_computeSwipeOverlayHidden:function(e,t){return!e||t},_onTrack:function(e){if(!t||this===t)switch(e.detail.state){case"start":this._trackStart(e);break;case"track":this._trackX(e);break;case"end":this._trackEnd(e)}},_responsiveChange:function(e){this._setNarrow(e),this.selected=this.narrow?this.defaultSelected:null,this.setScrollDirection(this._swipeAllowed()?"y":"all"),this.fire("paper-responsive-change",{narrow:this.narrow})},_onQueryMatchesChanged:function(e){this._responsiveChange(e.detail.value)},_forceNarrowChanged:function(){this._responsiveChange(this.forceNarrow||this.$.mq.queryMatches)},_swipeAllowed:function(){return this.narrow&&!this.disableSwipe},_isMainSelected:function(){return"main"===this.selected},_startEdgePeek:function(){this.width=this.$.drawer.offsetWidth,this._moveDrawer(this._translateXForDeltaX(this.rightDrawer?-this.edgeSwipeSensitivity:this.edgeSwipeSensitivity)),this._setPeeking(!0)},_stopEdgePeek:function(){this.peeking&&(this._setPeeking(!1),this._moveDrawer(null))},_downHandler:function(e){!this.dragging&&this._isMainSelected()&&this._isEdgeTouch(e)&&!t&&(this._startEdgePeek(),e.preventDefault(),t=this)},_upHandler:function(){this._stopEdgePeek(),t=null},_onTap:function(e){var t=Polymer.dom(e).localTarget,i=t&&this.drawerToggleAttribute&&t.hasAttribute(this.drawerToggleAttribute);i&&this.togglePanel()},_isEdgeTouch:function(e){var t=e.detail.x;return!this.disableEdgeSwipe&&this._swipeAllowed()&&(this.rightDrawer?t>=this.offsetWidth-this.edgeSwipeSensitivity:t<=this.edgeSwipeSensitivity)},_trackStart:function(e){this._swipeAllowed()&&(t=this,this._setDragging(!0),this._isMainSelected()&&this._setDragging(this.peeking||this._isEdgeTouch(e)),this.dragging&&(this.width=this.$.drawer.offsetWidth,this._transition=!1))},_translateXForDeltaX:function(e){var t=this._isMainSelected();return this.rightDrawer?Math.max(0,t?this.width+e:e):Math.min(0,t?e-this.width:e)},_trackX:function(e){if(this.dragging){var t=e.detail.dx;if(this.peeking){if(Math.abs(t)<=this.edgeSwipeSensitivity)return;this._setPeeking(!1)}this._moveDrawer(this._translateXForDeltaX(t))}},_trackEnd:function(e){if(this.dragging){var i=e.detail.dx>0;this._setDragging(!1),this._transition=!0,t=null,this._moveDrawer(null),this.rightDrawer?this[i?"closeDrawer":"openDrawer"]():this[i?"openDrawer":"closeDrawer"]()}},_transformForTranslateX:function(e){return null===e?"":this.hasWillChange?"translateX("+e+"px)":"translate3d("+e+"px, 0, 0)"},_moveDrawer:function(e){this.transform(this._transformForTranslateX(e),this.$.drawer)},_getDrawerContent:function(){return Polymer.dom(this.$.drawerContent).getDistributedNodes()[0]},_getAutoFocusedNode:function(){var e=this._getDrawerContent();return this.drawerFocusSelector?Polymer.dom(e).querySelector(this.drawerFocusSelector)||e:null},_toggleFocusListener:function(e){"drawer"===e?this.addEventListener("focus",this._boundFocusListener,!0):this.removeEventListener("focus",this._boundFocusListener,!0)},_didFocus:function(e){var t=this._getAutoFocusedNode();if(t){var i=Polymer.dom(e).path,r=(i[0],this._getDrawerContent()),n=i.indexOf(r)!==-1;n||(e.stopPropagation(),t.focus())}},_isDrawerClosed:function(e,t){return!e||"drawer"!==t}})}()</script></dom-module><dom-module id="iron-pages" assetpath="../bower_components/iron-pages/"><template><style>:host{display:block}:host>::content>:not(.iron-selected){display:none!important}</style><content></content></template><script>Polymer({is:"iron-pages",behaviors:[Polymer.IronResizableBehavior,Polymer.IronSelectableBehavior],properties:{activateEvent:{type:String,value:null}},observers:["_selectedPageChanged(selected)"],_selectedPageChanged:function(e,a){this.async(this.notifyResize)}})</script></dom-module><dom-module id="iron-icon" assetpath="../bower_components/iron-icon/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;vertical-align:middle;fill:var(--iron-icon-fill-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);width:var(--iron-icon-width,24px);height:var(--iron-icon-height,24px);@apply(--iron-icon)}</style></template><script>Polymer({is:"iron-icon",properties:{icon:{type:String},theme:{type:String},src:{type:String},_meta:{value:Polymer.Base.create("iron-meta",{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(theme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached)"],_DEFAULT_ICONSET:"icons",_iconChanged:function(t){var i=(t||"").split(":");this._iconName=i.pop(),this._iconsetName=i.pop()||this._DEFAULT_ICONSET,this._updateIcon()},_srcChanged:function(t){this._updateIcon()},_usesIconset:function(){return this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img&&this._img.parentNode&&Polymer.dom(this.root).removeChild(this._img),""===this._iconName?this._iconset&&this._iconset.removeIcon(this):this._iconsetName&&this._meta&&(this._iconset=this._meta.byKey(this._iconsetName),this._iconset?(this._iconset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-iconset-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon"))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=document.createElement("img"),this._img.style.width="100%",this._img.style.height="100%",this._img.draggable=!1),this._img.src=this.src,Polymer.dom(this.root).appendChild(this._img))}})</script></dom-module><dom-module id="paper-icon-button" assetpath="../bower_components/paper-icon-button/"><template strip-whitespace=""><style>:host{display:inline-block;position:relative;padding:8px;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;z-index:0;line-height:1;width:40px;height:40px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;box-sizing:border-box!important;@apply(--paper-icon-button)}:host #ink{color:var(--paper-icon-button-ink-color,--primary-text-color);opacity:.6}:host([disabled]){color:var(--paper-icon-button-disabled-text,--disabled-text-color);pointer-events:none;cursor:auto;@apply(--paper-icon-button-disabled)}:host(:hover){@apply(--paper-icon-button-hover)}iron-icon{--iron-icon-width:100%;--iron-icon-height:100%}</style><iron-icon id="icon" src="[[src]]" icon="[[icon]]" alt$="[[alt]]"></iron-icon></template><script>Polymer({is:"paper-icon-button",hostAttributes:{role:"button",tabindex:"0"},behaviors:[Polymer.PaperInkyFocusBehavior],properties:{src:{type:String},icon:{type:String},alt:{type:String,observer:"_altChanged"}},_altChanged:function(t,e){var r=this.getAttribute("aria-label");r&&e!=r||this.setAttribute("aria-label",t)}})</script></dom-module><script>Polymer.IronMenuBehaviorImpl={properties:{focusedItem:{observer:"_focusedItemChanged",readOnly:!0,type:Object},attrForItemTitle:{type:String}},_SEARCH_RESET_TIMEOUT_MS:1e3,hostAttributes:{role:"menu",tabindex:"0"},observers:["_updateMultiselectable(multi)"],listeners:{focus:"_onFocus",keydown:"_onKeydown","iron-items-changed":"_onIronItemsChanged"},keyBindings:{up:"_onUpKey",down:"_onDownKey",esc:"_onEscKey","shift+tab:keydown":"_onShiftTabDown"},attached:function(){this._resetTabindices()},select:function(e){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null);var t=this._valueToItem(e);t&&t.hasAttribute("disabled")||(this._setFocusedItem(t),Polymer.IronMultiSelectableBehaviorImpl.select.apply(this,arguments))},_resetTabindices:function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this.items.forEach(function(t){t.setAttribute("tabindex",t===e?"0":"-1")},this)},_updateMultiselectable:function(e){e?this.setAttribute("aria-multiselectable","true"):this.removeAttribute("aria-multiselectable")},_focusWithKeyboardEvent:function(e){this.cancelDebouncer("_clearSearchText");var t=this._searchText||"",s=e.key&&1==e.key.length?e.key:String.fromCharCode(e.keyCode);t+=s.toLocaleLowerCase();for(var i,o=t.length,n=0;i=this.items[n];n++)if(!i.hasAttribute("disabled")){var r=this.attrForItemTitle||"textContent",a=(i[r]||i.getAttribute(r)||"").trim();if(!(a.length<o)&&a.slice(0,o).toLocaleLowerCase()==t){this._setFocusedItem(i);break}}this._searchText=t,this.debounce("_clearSearchText",this._clearSearchText,this._SEARCH_RESET_TIMEOUT_MS)},_clearSearchText:function(){this._searchText=""},_focusPrevious:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t-s+e)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_focusNext:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t+s)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_applySelection:function(e,t){t?e.setAttribute("aria-selected","true"):e.removeAttribute("aria-selected"),Polymer.IronSelectableBehavior._applySelection.apply(this,arguments)},_focusedItemChanged:function(e,t){t&&t.setAttribute("tabindex","-1"),e&&(e.setAttribute("tabindex","0"),e.focus())},_onIronItemsChanged:function(e){e.detail.addedNodes.length&&this._resetTabindices()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");Polymer.IronMenuBehaviorImpl._shiftTabPressed=!0,this._setFocusedItem(null),this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1},1)},_onFocus:function(e){if(!Polymer.IronMenuBehaviorImpl._shiftTabPressed){var t=Polymer.dom(e).rootTarget;(t===this||"undefined"==typeof t.tabIndex||this.isLightDescendant(t))&&(this._defaultFocusAsync=this.async(function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this._setFocusedItem(null),e?this._setFocusedItem(e):this.items[0]&&this._focusNext()}))}},_onUpKey:function(e){this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onEscKey:function(e){this.focusedItem.blur()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down esc")||this._focusWithKeyboardEvent(e),e.stopPropagation()},_activateHandler:function(e){Polymer.IronSelectableBehavior._activateHandler.call(this,e),e.stopPropagation()}},Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1,Polymer.IronMenuBehavior=[Polymer.IronMultiSelectableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronMenuBehaviorImpl]</script><script>Polymer.IronMenubarBehaviorImpl={hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrevious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusWithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.IronMenubarBehaviorImpl]</script><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg name="paper-tabs" size="24"><svg><defs><g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g><g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-tab" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-justified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{height:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto);height:100%}</style><div class="tab-content"><content></content></div></template><script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.link){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e.click()}}})</script></dom-module><dom-module id="paper-tabs" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout);@apply(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-reverse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:hidden;@apply(--layout-flex-auto);@apply(--paper-tabs-container)}#tabsContent{height:100%;-moz-flex-basis:auto;-ms-flex-basis:auto;flex-basis:auto;@apply(--paper-tabs-content)}#tabsContent.scrollable{position:absolute;white-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor:default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#selectionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:left center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#selectionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style><paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button><div id="tabsContainer" on-track="_scroll" on-down="_down"><div id="tabsContent" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"><div id="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTransitionEnd"></div><content select="*"></content></div></div><paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button></template><script>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenubarBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancelPendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttribute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAttribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:function(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:function(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_computeSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._tabChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:function(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.async(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){var t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onBlurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){this._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand"),e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains("contract")&&e.remove("contract")}})</script></dom-module><dom-module id="app-header-layout" assetpath="../bower_components/app-layout/app-header-layout/"><template><style>:host{display:block;position:relative;z-index:0}:host>::content>app-header{@apply(--layout-fixed-top);z-index:1}:host([has-scrolling-region]){height:100%}:host([has-scrolling-region])>::content>app-header{position:absolute}:host([has-scrolling-region])>#contentContainer{@apply(--layout-fit);overflow-y:auto;-webkit-overflow-scrolling:touch}:host([fullbleed]){@apply(--layout-vertical);@apply(--layout-fit)}:host([fullbleed])>#contentContainer{@apply(--layout-vertical);@apply(--layout-flex)}#contentContainer{position:relative;z-index:0}</style><content id="header" select="app-header"></content><div id="contentContainer"><content></content></div></template><script>Polymer({is:"app-header-layout",behaviors:[Polymer.IronResizableBehavior],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectToAttribute:!0}},listeners:{"iron-resize":"_resizeHandler","app-header-reset-layout":"_resetLayoutHandler"},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Polymer.dom(this.$.header).getDistributedNodes()[0]},resetLayout:function(){this._updateScroller(),this.debounce("_resetLayout",this._updateContentPosition)},_updateContentPosition:function(){var e=this.header;if(this.isAttached&&e){var t=e.offsetHeight;if(this.hasScrollingRegion)e.style.left="",e.style.right="";else{var i=this.getBoundingClientRect(),o=document.documentElement.clientWidth-i.right;e.style.left=i.left+"px",e.style.right=o+"px"}var n=this.$.contentContainer.style;e.fixed&&!e.willCondense()&&this.hasScrollingRegion?(n.marginTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}},_updateScroller:function(){if(this.isAttached){var e=this.header;e&&(e.scrollTarget=this.hasScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement)}},_resizeHandler:function(){this.resetLayout()},_resetLayoutHandler:function(e){this.resetLayout(),e.stopPropagation()}})</script></dom-module><script>Polymer.IronScrollTargetBehavior={properties:{scrollTarget:{type:Object,value:function(){return this._defaultScrollTarget}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveListener:!0,_scrollTargetChanged:function(t,l){this._oldScrollTarget&&(this._toggleScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),l&&("document"===t?this.scrollTarget=this._doc:"string"==typeof t?this.scrollTarget=this.domHost?this.domHost.$[t]:Polymer.dom(this.ownerDocument).querySelector("#"+t):this._isValidScrollTarget()&&(this._boundScrollHandler=this._boundScrollHandler||this._scrollHandler.bind(this),this._oldScrollTarget=t,this._toggleScrollListener(this._shouldHaveListener,t)))},_scrollHandler:function(){},get _defaultScrollTarget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},get _scrollTop(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageYOffset:this.scrollTarget.scrollTop:0},get _scrollLeft(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageXOffset:this.scrollTarget.scrollLeft:0},set _scrollTop(t){this.scrollTarget===this._doc?window.scrollTo(window.pageXOffset,t):this._isValidScrollTarget()&&(this.scrollTarget.scrollTop=t)},set _scrollLeft(t){this.scrollTarget===this._doc?window.scrollTo(t,window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t)},scroll:function(t,l){this.scrollTarget===this._doc?window.scrollTo(t,l):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t,this.scrollTarget.scrollTop=l)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scrollTargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:function(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:function(t,l){if(this._boundScrollHandler){var e=l===this._doc?window:l;t?e.addEventListener("scroll",this._boundScrollHandler):e.removeEventListener("scroll",this._boundScrollHandler)}},toggleScrollListener:function(t){this._shouldHaveListener=t,this._toggleScrollListener(t,this.scrollTarget)}}</script><script>Polymer.AppLayout=Polymer.AppLayout||{},Polymer.AppLayout._scrollEffects=Polymer.AppLayout._scrollEffects||{},Polymer.AppLayout.scrollTimingFunction=function(o,l,e,r){return o/=r,-e*o*(o-2)+l},Polymer.AppLayout.registerEffect=function(o,l){if(null!=Polymer.AppLayout._scrollEffects[o])throw new Error("effect `"+o+"` is already registered.");Polymer.AppLayout._scrollEffects[o]=l},Polymer.AppLayout.scroll=function(o){o=o||{};var l=document.documentElement,e=o.target||l,r="scrollBehavior"in e.style&&e.scroll,t="app-layout-silent-scroll",s=o.top||0,c=o.left||0,i=e===l?window.scrollTo:function(o,l){e.scrollLeft=o,e.scrollTop=l};if("smooth"===o.behavior)if(r)e.scroll(o);else{var n=Polymer.AppLayout.scrollTimingFunction,a=Date.now(),p=e===l?window.pageYOffset:e.scrollTop,u=e===l?window.pageXOffset:e.scrollLeft,y=s-p,f=c-u,m=300,L=function o(){var l=Date.now(),e=l-a;e<m?(i(n(e,u,f,m),n(e,p,y,m)),requestAnimationFrame(o)):i(c,s)}.bind(this);L()}else"silent"===o.behavior?(l.classList.add(t),clearInterval(Polymer.AppLayout._scrollTimer),Polymer.AppLayout._scrollTimer=setTimeout(function(){l.classList.remove(t),Polymer.AppLayout._scrollTimer=null},100),i(c,s)):i(c,s)}</script><script>Polymer.AppScrollEffectsBehavior=[Polymer.IronScrollTargetBehavior,{properties:{effects:{type:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{type:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresholdTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observers:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:function(){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._scrollTop)},detached:function(){this._tearDownEffects()},createEffect:function(t,e){var n=Polymer.AppLayout._scrollEffects[t];if(!n)throw new ReferenceError(this._getUndefinedMsg(t));var f=this._boundEffect(n,e||{});return f.setUp(),f},_effectsChanged:function(t,e,n){this._tearDownEffects(),""!==t&&n&&(t.split(" ").forEach(function(t){var n;""!==t&&((n=Polymer.AppLayout._scrollEffects[t])?this._effects.push(this._boundEffect(n,e[t])):console.warn(this._getUndefinedMsg(t)))},this),this._setUpEffect())},_layoutIfDirty:function(){return this.offsetWidth},_boundEffect:function(t,e){e=e||{};var n=parseFloat(e.startsAt||0),f=parseFloat(e.endsAt||1),s=f-n,r=function(){},o=0===n&&1===f?t.run:function(e,f){t.run.call(this,Math.max(0,(e-n)/s),f)};return{setUp:t.setUp?t.setUp.bind(this,e):r,run:t.run?o.bind(this):r,tearDown:t.tearDown?t.tearDown.bind(this):r}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effectsRunFn=[],this._effects.forEach(function(t){t.setUp()!==!1&&this._effectsRunFn.push(t.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forEach(function(t){t.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffects:function(t,e){this._effectsRunFn&&this._effectsRunFn.forEach(function(n){n(t,e)})},_scrollHandler:function(){if(!this.disabled){var t=this._clampedScrollTop;this._updateScrollState(t),this.threshold>0&&this._setThresholdTriggered(t>=this.threshold)}},_getDOMRef:function(t){console.warn("_getDOMRef","`"+t+"` is undefined")},_getUndefinedMsg:function(t){return"Scroll effect `"+t+"` is undefined. Did you forget to import app-layout/app-scroll-effects/effects/"+t+".html ?"}}]</script><script>Polymer.AppLayout.registerEffect("waterfall",{run:function(){this.shadow=this.isOnScreen()&&this.isContentBelow()}})</script><dom-module id="app-header" assetpath="../bower_components/app-layout/app-header/"><template><style>:host{position:relative;display:block;transition-timing-function:linear;transition-property:-webkit-transform;transition-property:transform}:host::after{position:absolute;right:0;bottom:-5px;left:0;width:100%;height:5px;content:"";transition:opacity .4s;pointer-events:none;opacity:0;box-shadow:inset 0 5px 6px -3px rgba(0,0,0,.4);will-change:opacity;@apply(--app-header-shadow)}:host([shadow])::after{opacity:1}::content [condensed-title],::content [main-title]{-webkit-transform-origin:left top;transform-origin:left top;white-space:nowrap}::content [condensed-title]{opacity:0}#background{@apply(--layout-fit);overflow:hidden}#backgroundFrontLayer,#backgroundRearLayer{@apply(--layout-fit);height:100%;pointer-events:none;background-size:cover}#backgroundFrontLayer{@apply(--app-header-background-front-layer)}#backgroundRearLayer{opacity:0;@apply(--app-header-background-rear-layer)}#contentContainer{position:relative;width:100%;height:100%}:host([disabled]),:host([disabled]) #backgroundFrontLayer,:host([disabled]) #backgroundRearLayer,:host([disabled]) ::content>[sticky],:host([disabled]) ::content>app-toolbar:first-of-type,:host([disabled])::after,:host-context(.app-layout-silent-scroll),:host-context(.app-layout-silent-scroll) #backgroundFrontLayer,:host-context(.app-layout-silent-scroll) #backgroundRearLayer,:host-context(.app-layout-silent-scroll) ::content>[sticky],:host-context(.app-layout-silent-scroll) ::content>app-toolbar:first-of-type,:host-context(.app-layout-silent-scroll)::after{transition:none!important}</style><div id="contentContainer"><content id="content"></content></div></template><script>Polymer({is:"app-header",behaviors:[Polymer.AppScrollEffectsBehavior,Polymer.IronResizableBehavior],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Boolean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAttribute:!0,value:!1}},observers:["resetLayout(isAttached, condenses, fixed)"],listeners:{"iron-resize":"_resizeHandler"},_height:0,_dHeight:0,_stickyElTop:0,_stickyEl:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimestamp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?this._dHeight:this._height+5},_getStickyEl:function(){for(var t,e=Polymer.dom(this.$.content).getDistributedNodes(),i=0;i<e.length;i++)if(e[i].nodeType===Node.ELEMENT_NODE){var s=e[i];if(s.hasAttribute("sticky")){t=s;break}t||(t=s)}return t},resetLayout:function(){this.debounce("_resetLayout",function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._clampedScrollTop,e=0===this._height||0===t,i=this.disabled;this._height=this.offsetHeight,this._stickyEl=this._getStickyEl(),this.disabled=!0,e||this._updateScrollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._stickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._stickyEl.offsetTop:0,this._setUpEffect(),e?this._updateScrollState(t,!0):(this._updateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=i,this.fire("app-header-reset-layout")}})},_updateScrollState:function(t,e){if(0!==this._height){var i=0,s=0,o=this._top,r=(this._lastScrollTop,this._maxHeaderTop),h=t-this._lastScrollTop,n=Math.abs(h),a=t>this._lastScrollTop,l=Date.now();if(this._mayMove()&&(s=this._clamp(this.reveals?o+h:t,0,r)),t>=this._dHeight&&(s=this.condenses&&!this.fixed?Math.max(this._dHeight,s):s,this.style.transitionDuration="0ms"),this.reveals&&!this.disabled&&n<100&&((l-this._initTimestamp>300||this._wasScrollingDown!==a)&&(this._initScrollTop=t,this._initTimestamp=l),t>=r))if(Math.abs(this._initScrollTop-t)>30||n>10){a&&t>=r?s=r:!a&&t>=this._dHeight&&(s=this.condenses&&!this.fixed?this._dHeight:0);var _=h/(l-this._lastTimestamp);this.style.transitionDuration=this._clamp((s-o)/_,0,300)+"ms"}else s=this._top;i=0===this._dHeight?t>0?1:0:s/this._dHeight,e||(this._lastScrollTop=t,this._top=s,this._wasScrollingDown=a,this._lastTimestamp=l),(e||i!==this._progress||o!==s||0===t)&&(this._progress=i,this._runEffects(i,s),this._transformHeader(s))}},_mayMove:function(){return this.condenses||!this.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnScreen:function(){return 0!==this._height&&this._top<this._height},isContentBelow:function(){return 0===this._top?this._clampedScrollTop>0:this._clampedScrollTop-this._maxHeaderTop>=0},_transformHeader:function(t){this.translate3d(0,-t+"px",0),this._stickyEl&&this.translate3d(0,this.condenses&&t>=this._stickyElTop?Math.min(t,this._dHeight)-this._stickyElTop+"px":0,0,this._stickyEl)},_resizeHandler:function(){this.resetLayout()},_clamp:function(t,e,i){return Math.min(i,Math.max(e,t))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=document.createElement("div"),this._bgContainer.id="background",this._bgRear=document.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.appendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFront.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Polymer.dom(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getDOMRef:function(t){switch(t){case"backgroundFrontLayer":return this._ensureBgContainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers(),this._bgRear;case"background":return this._ensureBgContainers(),this._bgContainer;case"mainTitle":return Polymer.dom(this).querySelector("[main-title]");case"condensedTitle":return Polymer.dom(this).querySelector("[condensed-title]")}return null},getScrollState:function(){return{progress:this._progress,top:this._top}}})</script></dom-module><dom-module id="app-toolbar" assetpath="../bower_components/app-layout/app-toolbar/"><template><style>:host{@apply(--layout-horizontal);@apply(--layout-center);position:relative;height:64px;padding:0 16px;pointer-events:none;font-size:var(--app-toolbar-font-size,20px)}::content>*{pointer-events:auto}::content>paper-icon-button{font-size:0}::content>[condensed-title],::content>[main-title]{pointer-events:none;@apply(--layout-flex)}::content>[bottom-item]{position:absolute;right:0;bottom:0;left:0}::content>[top-item]{position:absolute;top:0;right:0;left:0}::content>[spacer]{margin-left:64px}</style><content></content></template><script>Polymer({is:"app-toolbar"})</script></dom-module><dom-module id="ha-menu-button" assetpath="components/"><template><style>.invisible{visibility:hidden}</style><paper-icon-button icon="mdi:menu" class$="[[computeMenuButtonClass(narrow, showMenu)]]" on-tap="toggleMenu"></paper-icon-button></template></dom-module><script>Polymer({is:"ha-menu-button",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1}},computeMenuButtonClass:function(e,n){return!e&&n?"invisible":""},toggleMenu:function(){this.fire("open-menu")}})</script><dom-module id="ha-label-badge" assetpath="/"><template><style>.badge-container{display:inline-block;text-align:center;vertical-align:top;margin-bottom:16px}.label-badge{position:relative;display:block;margin:0 auto;width:2.5em;text-align:center;height:2.5em;line-height:2.5em;font-size:1.5em;border-radius:50%;border:.1em solid var(--ha-label-badge-color,--default-primary-color);color:#4c4c4c;white-space:nowrap;background-color:#fff;background-size:cover;transition:border .3s ease-in-out}.label-badge .value{font-size:90%;overflow:hidden;text-overflow:ellipsis}.label-badge .value.big{font-size:70%}.label-badge .label{position:absolute;bottom:-1em;left:0;right:0;line-height:1em;font-size:.5em}.label-badge .label span{max-width:80%;display:inline-block;background-color:var(--ha-label-badge-color,--default-primary-color);color:#fff;border-radius:1em;padding:4px 8px;font-weight:500;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;transition:background-color .3s ease-in-out}.badge-container .title{margin-top:1em;font-size:.9em;width:5em;font-weight:300;overflow:hidden;text-overflow:ellipsis;line-height:normal}iron-image{border-radius:50%}[hidden]{display:none!important}</style><div class="badge-container"><div class="label-badge" id="badge"><div class$="[[computeClasses(value)]]"><iron-icon icon="[[icon]]" hidden$="[[computeHideIcon(icon, value, image)]]"></iron-icon><span hidden$="[[computeHideValue(value, image)]]">[[value]]</span></div><div class="label" hidden$="[[!label]]"><span>[[label]]</span></div></div><div class="title">[[description]]</div></div></template></dom-module><script>Polymer({is:"ha-label-badge",properties:{value:{type:String,value:null},icon:{type:String,value:null},label:{type:String,value:null},description:{type:String},image:{type:String,value:null,observer:"imageChanged"}},computeClasses:function(e){return e&&e.length>4?"value big":"value"},computeHideIcon:function(e,n,l){return!e||n||l},computeHideValue:function(e,n){return!e||n},imageChanged:function(e){this.$.badge.style.backgroundImage=e?"url("+e+")":""}})</script><dom-module id="ha-demo-badge" assetpath="components/"><template><style>:host{--ha-label-badge-color:#dac90d}</style><ha-label-badge icon="mdi:emoticon" label="Demo" description=""></ha-label-badge></template></dom-module><script>Polymer({is:"ha-demo-badge"})</script><dom-module id="ha-state-label-badge" assetpath="components/entity/"><template><style>:host{cursor:pointer}ha-label-badge{--ha-label-badge-color:rgb(223, 76, 30)}.blue{--ha-label-badge-color:#039be5}.green{--ha-label-badge-color:#0DA035}.grey{--ha-label-badge-color:var(--paper-grey-500)}</style><ha-label-badge class$="[[computeClasses(state)]]" value="[[computeValue(state)]]" icon="[[computeIcon(state)]]" image="[[computeImage(state)]]" label="[[computeLabel(state)]]" description="[[computeDescription(state)]]"></ha-label-badge></template></dom-module><script>Polymer({is:"ha-state-label-badge",properties:{hass:{type:Object},state:{type:Object,observer:"stateChanged"}},listeners:{tap:"badgeTap"},badgeTap:function(e){e.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.state.entityId)},1)},computeClasses:function(e){switch(e.domain){case"binary_sensor":case"updater":return"blue";default:return""}},computeValue:function(e){switch(e.domain){case"binary_sensor":case"device_tracker":case"updater":case"sun":case"alarm_control_panel":return null;case"sensor":default:return"unknown"===e.state?"-":e.state}},computeIcon:function(e){if("unavailable"===e.state)return null;switch(e.domain){case"alarm_control_panel":return"pending"===e.state?"mdi:clock-fast":"armed_away"===e.state?"mdi:nature":"armed_home"===e.state?"mdi:home-variant":"triggered"===e.state?"mdi:alert-circle":window.hassUtil.domainIcon(e.domain,e.state);case"binary_sensor":case"device_tracker":case"updater":return window.hassUtil.stateIcon(e);case"sun":return"above_horizon"===e.state?window.hassUtil.domainIcon(e.domain):"mdi:brightness-3";default:return null}},computeImage:function(e){return e.attributes.entity_picture||null},computeLabel:function(e){if("unavailable"===e.state)return"unavai";switch(e.domain){case"device_tracker":return"not_home"===e.state?"Away":e.state;case"alarm_control_panel":return"pending"===e.state?"pend":"armed_away"===e.state||"armed_home"===e.state?"armed":"triggered"===e.state?"trig":"disarm";default:return e.attributes.unit_of_measurement||null}},computeDescription:function(e){return e.entityDisplay},stateChanged:function(){this.updateStyles()}})</script><dom-module id="ha-badges-card" assetpath="cards/"><template><template is="dom-repeat" items="[[states]]"><ha-state-label-badge hass="[[hass]]" state="[[item]]"></ha-state-label-badge></template></template></dom-module><script>Polymer({is:"ha-badges-card",properties:{hass:{type:Object},states:{type:Array}}})</script><dom-module id="paper-material" assetpath="../bower_components/paper-material/"><template><style include="paper-material-shared-styles"></style><style>:host([animated]){@apply(--shadow-transition)}</style><content></content></template></dom-module><script>Polymer({is:"paper-material",properties:{elevation:{type:Number,reflectToAttribute:!0,value:1},animated:{type:Boolean,reflectToAttribute:!0,value:!1}}})</script><dom-module id="ha-camera-card" assetpath="cards/"><template><style include="paper-material">:host{display:block;position:relative;font-size:0;border-radius:2px;cursor:pointer;min-height:48px;line-height:0}.camera-feed{width:100%;height:auto;border-radius:2px}.caption{@apply(--paper-font-common-nowrap);position:absolute;left:0;right:0;bottom:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:rgba(0,0,0,.3);padding:16px;font-size:16px;font-weight:500;line-height:16px;color:#fff}</style><img src="[[cameraFeedSrc]]" class="camera-feed" hidden$="[[!imageLoaded]]" on-load="imageLoadSuccess" on-error="imageLoadFail" alt="[[stateObj.entityDisplay]]"><div class="caption">[[stateObj.entityDisplay]]<template is="dom-if" if="[[!imageLoaded]]">(Error loading image)</template></div></template></dom-module><script>Polymer({is:"ha-camera-card",UPDATE_INTERVAL:1e4,properties:{hass:{type:Object},stateObj:{type:Object,observer:"updateCameraFeedSrc"},cameraFeedSrc:{type:String},imageLoaded:{type:Boolean,value:!0},elevation:{type:Number,value:1,reflectToAttribute:!0}},listeners:{tap:"cardTapped"},attached:function(){this.timer=setInterval(function(){this.updateCameraFeedSrc(this.stateObj)}.bind(this),this.UPDATE_INTERVAL)},detached:function(){clearInterval(this.timer)},cardTapped:function(){this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)}.bind(this),1)},updateCameraFeedSrc:function(e){const t=e.attributes,a=(new Date).getTime();this.cameraFeedSrc=t.entity_picture+"&time="+a},imageLoadSuccess:function(){this.imageLoaded=!0},imageLoadFail:function(){this.imageLoaded=!1}})</script><dom-module id="ha-card" assetpath="/"><template><style include="paper-material">:host{display:block;border-radius:2px;transition:all .3s ease-out;background-color:#fff}.header{@apply(--paper-font-headline);@apply(--paper-font-common-expensive-kerning);opacity:var(--dark-primary-opacity);padding:24px 16px 16px;text-transform:capitalize}</style><template is="dom-if" if="[[header]]"><div class="header">[[header]]</div></template><slot></slot></template></dom-module><script>Polymer({is:"ha-card",properties:{header:{type:String},elevation:{type:Number,value:1,reflectToAttribute:!0}}})</script><dom-module id="paper-toggle-button" assetpath="../bower_components/paper-toggle-button/"><template strip-whitespace=""><style>:host{display:inline-block;@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-common-base)}:host([disabled]){pointer-events:none}:host(:focus){outline:0}.toggle-bar{position:absolute;height:100%;width:100%;border-radius:8px;pointer-events:none;opacity:.4;transition:background-color linear .08s;background-color:var(--paper-toggle-button-unchecked-bar-color,#000);@apply(--paper-toggle-button-unchecked-bar)}.toggle-button{position:absolute;top:-3px;left:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 5px 0 rgba(0,0,0,.6);transition:-webkit-transform linear .08s,background-color linear .08s;transition:transform linear .08s,background-color linear .08s;will-change:transform;background-color:var(--paper-toggle-button-unchecked-button-color,--paper-grey-50);@apply(--paper-toggle-button-unchecked-button)}.toggle-button.dragging{-webkit-transition:none;transition:none}:host([checked]:not([disabled])) .toggle-bar{opacity:.5;background-color:var(--paper-toggle-button-checked-bar-color,--primary-color);@apply(--paper-toggle-button-checked-bar)}:host([disabled]) .toggle-bar{background-color:#000;opacity:.12}:host([checked]) .toggle-button{-webkit-transform:translate(16px,0);transform:translate(16px,0)}:host([checked]:not([disabled])) .toggle-button{background-color:var(--paper-toggle-button-checked-button-color,--primary-color);@apply(--paper-toggle-button-checked-button)}:host([disabled]) .toggle-button{background-color:#bdbdbd;opacity:1}.toggle-ink{position:absolute;top:-14px;left:-14px;right:auto;bottom:auto;width:48px;height:48px;opacity:.5;pointer-events:none;color:var(--paper-toggle-button-unchecked-ink-color,--primary-text-color)}:host([checked]) .toggle-ink{color:var(--paper-toggle-button-checked-ink-color,--primary-color)}.toggle-container{display:inline-block;position:relative;width:36px;height:14px;margin:4px 1px}.toggle-label{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-toggle-button-label-spacing,8px);pointer-events:none;color:var(--paper-toggle-button-label-color,--primary-text-color)}:host([invalid]) .toggle-bar{background-color:var(--paper-toggle-button-invalid-bar-color,--error-color)}:host([invalid]) .toggle-button{background-color:var(--paper-toggle-button-invalid-button-color,--error-color)}:host([invalid]) .toggle-ink{color:var(--paper-toggle-button-invalid-ink-color,--error-color)}</style><div class="toggle-container"><div id="toggleBar" class="toggle-bar"></div><div id="toggleButton" class="toggle-button"></div></div><div class="toggle-label"><content></content></div></template><script>Polymer({is:"paper-toggle-button",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"button","aria-pressed":"false",tabindex:0},properties:{},listeners:{track:"_ontrack"},attached:function(){Polymer.RenderStatus.afterNextRender(this,function(){this.setScrollDirection("y")})},_ontrack:function(t){var e=t.detail;"start"===e.state?this._trackStart(e):"track"===e.state?this._trackMove(e):"end"===e.state&&this._trackEnd(e)},_trackStart:function(t){this._width=this.$.toggleBar.offsetWidth/2,this._trackChecked=this.checked,this.$.toggleButton.classList.add("dragging")},_trackMove:function(t){var e=t.dx;this._x=Math.min(this._width,Math.max(0,this._trackChecked?this._width+e:e)),this.translate3d(this._x+"px",0,0,this.$.toggleButton),this._userActivate(this._x>this._width/2)},_trackEnd:function(t){this.$.toggleButton.classList.remove("dragging"),this.transform("",this.$.toggleButton)},_createRipple:function(){this._rippleContainer=this.$.toggleButton;var t=Polymer.PaperRippleBehavior._createRipple();return t.id="ink",t.setAttribute("recenters",""),t.classList.add("circle","toggle-ink"),t}})</script></dom-module><dom-module id="ha-entity-toggle" assetpath="components/entity/"><template><style>:host{white-space:nowrap}paper-icon-button{color:var(--primary-text-color);transition:color .5s}paper-icon-button[state-active]{color:var(--default-primary-color)}paper-toggle-button{cursor:pointer;--paper-toggle-button-label-spacing:0;padding:13px 5px;margin:-4px -5px}</style><template is="dom-if" if="[[stateObj.attributes.assumed_state]]"><paper-icon-button icon="mdi:flash-off" on-tap="turnOff" state-active$="[[!isOn]]"></paper-icon-button><paper-icon-button icon="mdi:flash" on-tap="turnOn" state-active$="[[isOn]]"></paper-icon-button></template><template is="dom-if" if="[[!stateObj.attributes.assumed_state]]"><paper-toggle-button class="self-center" checked="[[toggleChecked]]" on-change="toggleChanged"></paper-toggle-button></template></template></dom-module><script>Polymer({is:"ha-entity-toggle",properties:{hass:{type:Object},stateObj:{type:Object},toggleChecked:{type:Boolean,value:!1},isOn:{type:Boolean,computed:"computeIsOn(stateObj)",observer:"isOnChanged"}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation()},ready:function(){this.forceStateChange()},toggleChanged:function(t){var e=t.target.checked;e&&!this.isOn?this.callService(!0):!e&&this.isOn&&this.callService(!1)},isOnChanged:function(t){this.toggleChecked=t},forceStateChange:function(){this.toggleChecked===this.isOn&&(this.toggleChecked=!this.toggleChecked),this.toggleChecked=this.isOn},turnOn:function(){this.callService(!0)},turnOff:function(){this.callService(!1)},computeIsOn:function(t){return t&&window.hassUtil.OFF_STATES.indexOf(t.state)===-1},callService:function(t){var e,i,n;"lock"===this.stateObj.domain?(e="lock",i=t?"lock":"unlock"):"garage_door"===this.stateObj.domain?(e="garage_door",i=t?"open":"close"):(e="homeassistant",i=t?"turn_on":"turn_off"),n=this.stateObj,this.hass.serviceActions.callService(e,i,{entity_id:this.stateObj.entityId}).then(function(){setTimeout(function(){this.stateObj===n&&this.forceStateChange()}.bind(this),2e3)}.bind(this))}})</script><dom-module id="ha-state-icon" assetpath="/"><template><iron-icon icon="[[computeIcon(stateObj)]]"></iron-icon></template></dom-module><script>Polymer({is:"ha-state-icon",properties:{stateObj:{type:Object}},computeIcon:function(t){return window.hassUtil.stateIcon(t)}})</script><dom-module id="state-badge" assetpath="components/entity/"><template><style>:host{position:relative;display:inline-block;width:40px;color:#44739E;border-radius:50%;height:40px;text-align:center;background-size:cover;line-height:40px}ha-state-icon{transition:color .3s ease-in-out}ha-state-icon[data-domain=binary_sensor][data-state=on],ha-state-icon[data-domain=light][data-state=on],ha-state-icon[data-domain=sun][data-state=above_horizon],ha-state-icon[data-domain=switch][data-state=on]{color:#FDD835}ha-state-icon[data-state=unavailable]{color:var(--disabled-text-color)}</style><ha-state-icon id="icon" state-obj="[[stateObj]]" data-domain$="[[stateObj.domain]]" data-state$="[[stateObj.state]]"></ha-state-icon></template></dom-module><script>Polymer({is:"state-badge",properties:{stateObj:{type:Object,observer:"updateIconColor"}},updateIconColor:function(t){return t.attributes.entity_picture?(this.style.backgroundImage="url("+t.attributes.entity_picture+")",void(this.$.icon.style.display="none")):(this.style.backgroundImage="",this.$.icon.style.display="inline",void("light"===t.domain&&"on"===t.state&&t.attributes.rgb_color&&t.attributes.rgb_color.reduce(function(t,e){return t+e},0)<730?this.$.icon.style.color="rgb("+t.attributes.rgb_color.join(",")+")":this.$.icon.style.color=null))}})</script><script>Polymer({is:"ha-relative-time",properties:{datetime:{type:String,observer:"datetimeChanged"},datetimeObj:{type:Object,observer:"datetimeObjChanged"},parsedDateTime:{type:Object}},created:function(){this.updateRelative=this.updateRelative.bind(this)},attached:function(){this.updateInterval=setInterval(this.updateRelative,6e4)},detached:function(){clearInterval(this.updateInterval)},datetimeChanged:function(e){this.parsedDateTime=e?new Date(e):null,this.updateRelative()},datetimeObjChanged:function(e){this.parsedDateTime=e,this.updateRelative()},updateRelative:function(){var e=Polymer.dom(this);e.innerHTML=this.parsedDateTime?window.hassUtil.relativeTime(this.parsedDateTime):"never"}})</script><dom-module id="state-info" assetpath="components/entity/"><template><style>:host{@apply(--paper-font-body1);min-width:150px;white-space:nowrap}state-badge{float:left}.info{margin-left:56px}.name{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);line-height:40px}.name[in-dialog]{line-height:20px}.time-ago{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div><state-badge state-obj="[[stateObj]]"></state-badge><div class="info"><div class="name" in-dialog$="[[inDialog]]">[[stateObj.entityDisplay]]</div><template is="dom-if" if="[[inDialog]]"><div class="time-ago"><ha-relative-time datetime-obj="[[stateObj.lastChangedAsDate]]"></ha-relative-time></div></template></div></div></template></dom-module><script>Polymer({is:"state-info",properties:{detailed:{type:Boolean,value:!1},stateObj:{type:Object},inDialog:{type:Boolean}}})</script><dom-module id="state-card-climate" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{@apply(--paper-font-body1);line-height:1.5}.state{margin-left:16px;text-align:right}.target{color:var(--primary-text-color)}.current{color:var(--secondary-text-color)}.operation-mode{font-weight:700;text-transform:capitalize}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="target"><span class="operation-mode">[[stateObj.attributes.operation_mode]] </span><span>[[computeTargetTemperature(stateObj)]]</span></div><div class="current"><span>Currently: </span><span>[[stateObj.attributes.current_temperature]]</span> <span></span> <span>[[stateObj.attributes.unit_of_measurement]]</span></div></div></div></template></dom-module><script>Polymer({is:"state-card-climate",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeTargetTemperature:function(t){var e="";return t.attributes.target_temp_low&&t.attributes.target_temp_high?e=t.attributes.target_temp_low+" - "+t.attributes.target_temp_high+" "+t.attributes.unit_of_measurement:t.attributes.temperature&&(e=t.attributes.temperature+" "+t.attributes.unit_of_measurement),e}})</script><dom-module id="state-card-configurator" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button hidden$="[[inDialog]]">[[stateObj.state]]</paper-button></div><template is="dom-if" if="[[stateObj.attributes.description_image]]"><img hidden="" src="[[stateObj.attributes.description_image]]"></template></template></dom-module><script>Polymer({is:"state-card-configurator",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-cover" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{text-align:right;white-space:nowrap;width:127px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><paper-icon-button icon="mdi:arrow-up" on-tap="onOpenTap" disabled="[[computeIsFullyOpen(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTap"></paper-icon-button><paper-icon-button icon="mdi:arrow-down" on-tap="onCloseTap" disabled="[[computeIsFullyClosed(stateObj)]]"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"state-card-cover",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeIsFullyOpen:function(t){return void 0!==t.attributes.current_position?100===t.attributes.current_position:"open"===t.state},computeIsFullyClosed:function(t){return void 0!==t.attributes.current_position?0===t.attributes.current_position:"closed"===t.state},onOpenTap:function(){this.hass.serviceActions.callService("cover","open_cover",{entity_id:this.stateObj.entityId})},onCloseTap:function(){this.hass.serviceActions.callService("cover","close_cover",{entity_id:this.stateObj.entityId})},onStopTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="state-card-display" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.state{@apply(--paper-font-body1);color:var(--primary-text-color);margin-left:16px;text-align:right;line-height:40px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state">[[stateObj.stateDisplay]]</div></div></template></dom-module><script>Polymer({is:"state-card-display",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><dom-module id="paper-input-char-counter" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-input" assetpath="../bower_components/paper-input/"><template><style>:host{display:block}:host([focused]){outline:0}:host([hidden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}label{pointer-events:none}</style><paper-input-container no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><content select="[prefix]"></content><label hidden$="[[!label]]" aria-hidden="true" for="input">[[label]]</label><input is="iron-input" id="input" aria-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" disabled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" required$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" autocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onChange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"><content select="[suffix]"></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error aria-live="assertive">[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBehavior]})</script><script>Polymer.IronFitBehavior={properties:{sizingTarget:{type:Object,value:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type:Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAlign:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{type:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){var t;return t=this.fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().width},get _fitHeight(){var t;return t=this.fitInto===window?this.fitInto.innerHeight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().top},get _defaultPositionTarget(){var t=Polymer.dom(this).parentNode;return t&&t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(t=t.host),t},get _localeHorizontalAlign(){if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this.horizontalAlign)return"right"}return this.horizontalAlign},attached:function(){this._isRTL="rtl"==window.getComputedStyle(this).direction,this.positionTarget=this.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"===window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(this)):this.fit())},fit:function(){this.position(),this.constrain(),this.center()},_discoverInfo:function(){if(!this._fitInfo){var t=window.getComputedStyle(this),i=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:this.style.top||"",left:this.style.left||"",position:this.style.position||""},sizerInlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizingTarget.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},positionedBy:{vertically:"auto"!==t.top?"top":"auto"!==t.bottom?"bottom":null,horizontally:"auto"!==t.left?"left":"auto"!==t.right?"right":null},sizedBy:{height:"none"!==i.maxHeight,width:"none"!==i.maxWidth,minWidth:parseInt(i.minWidth,10)||0,minHeight:parseInt(i.minHeight,10)||0},margin:{top:parseInt(t.marginTop,10)||0,right:parseInt(t.marginRight,10)||0,bottom:parseInt(t.marginBottom,10)||0,left:parseInt(t.marginLeft,10)||0}},this.verticalOffset&&(this._fitInfo.margin.top=this._fitInfo.margin.bottom=this.verticalOffset,this._fitInfo.inlineStyle.marginTop=this.style.marginTop||"",this._fitInfo.inlineStyle.marginBottom=this.style.marginBottom||"",this.style.marginTop=this.style.marginBottom=this.verticalOffset+"px"),this.horizontalOffset&&(this._fitInfo.margin.left=this._fitInfo.margin.right=this.horizontalOffset,this._fitInfo.inlineStyle.marginLeft=this.style.marginLeft||"",this._fitInfo.inlineStyle.marginRight=this.style.marginRight||"",this.style.marginLeft=this.style.marginRight=this.horizontalOffset+"px")}},resetFit:function(){var t=this._fitInfo||{};for(var i in t.sizerInlineStyle)this.sizingTarget.style[i]=t.sizerInlineStyle[i];for(var i in t.inlineStyle)this.style[i]=t.inlineStyle[i];this._fitInfo=null},refit:function(){var t=this.sizingTarget.scrollLeft,i=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrollLeft=t,this.sizingTarget.scrollTop=i},position:function(){if(this.horizontalAlign||this.verticalAlign){this._discoverInfo(),this.style.position="fixed",this.sizingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0px";var t=this.getBoundingClientRect(),i=this.__getNormalizedRect(this.positionTarget),e=this.__getNormalizedRect(this.fitInto),n=this._fitInfo.margin,o={width:t.width+n.left+n.right,height:t.height+n.top+n.bottom},h=this.__getPosition(this._localeHorizontalAlign,this.verticalAlign,o,i,e),s=h.left+n.left,l=h.top+n.top,r=Math.min(e.right-n.right,s+t.width),a=Math.min(e.bottom-n.bottom,l+t.height),g=this._fitInfo.sizedBy.minWidth,f=this._fitInfo.sizedBy.minHeight;s<n.left&&(s=n.left,r-s<g&&(s=r-g)),l<n.top&&(l=n.top,a-l<f&&(l=a-f)),this.sizingTarget.style.maxWidth=r-s+"px",this.sizingTarget.style.maxHeight=a-l+"px",this.style.left=s-t.left+"px",this.style.top=l-t.top+"px"}},constrain:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo;t.positionedBy.vertically||(this.style.position="fixed",this.style.top="0px"),t.positionedBy.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingTarget.style.boxSizing="border-box";var i=this.getBoundingClientRect();t.sizedBy.height||this.__sizeDimension(i,t.positionedBy.vertically,"top","bottom","Height"),t.sizedBy.width||this.__sizeDimension(i,t.positionedBy.horizontally,"left","right","Width")}},_sizeDimension:function(t,i,e,n,o){this.__sizeDimension(t,i,e,n,o)},__sizeDimension:function(t,i,e,n,o){var h=this._fitInfo,s=this.__getNormalizedRect(this.fitInto),l="Width"===o?s.width:s.height,r=i===n,a=r?l-t[n]:t[e],g=h.margin[r?e:n],f="offset"+o,p=this[f]-this.sizingTarget[f];this.sizingTarget.style["max"+o]=l-g-a-p+"px"},center:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo.positionedBy;if(!t.vertically||!t.horizontally){this.style.position="fixed",t.vertically||(this.style.top="0px"),t.horizontally||(this.style.left="0px");var i=this.getBoundingClientRect(),e=this.__getNormalizedRect(this.fitInto);if(!t.vertically){var n=e.top-i.top+(e.height-i.height)/2;this.style.top=n+"px"}if(!t.horizontally){var o=e.left-i.left+(e.width-i.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(t){return t===document.documentElement||t===window?{top:0,left:0,width:window.innerWidth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight}:t.getBoundingClientRect()},__getCroppedArea:function(t,i,e){var n=Math.min(0,t.top)+Math.min(0,e.bottom-(t.top+i.height)),o=Math.min(0,t.left)+Math.min(0,e.right-(t.left+i.width));return Math.abs(n)*i.width+Math.abs(o)*i.height},__getPosition:function(t,i,e,n,o){var h=[{verticalAlign:"top",horizontalAlign:"left",top:n.top,left:n.left},{verticalAlign:"top",horizontalAlign:"right",top:n.top,left:n.right-e.width},{verticalAlign:"bottom",horizontalAlign:"left",top:n.bottom-e.height,left:n.left},{verticalAlign:"bottom",horizontalAlign:"right",top:n.bottom-e.height,left:n.right-e.width}];if(this.noOverlap){for(var s=0,l=h.length;s<l;s++){var r={};for(var a in h[s])r[a]=h[s][a];h.push(r)}h[0].top=h[1].top+=n.height,h[2].top=h[3].top-=n.height,h[4].left=h[6].left+=n.width,h[5].left=h[7].left-=n.width}i="auto"===i?null:i,t="auto"===t?null:t;for(var g,s=0;s<h.length;s++){var f=h[s];if(!this.dynamicAlign&&!this.noOverlap&&f.verticalAlign===i&&f.horizontalAlign===t){g=f;break}var p=!(i&&f.verticalAlign!==i||t&&f.horizontalAlign!==t);if(this.dynamicAlign||p){g=g||f,f.croppedArea=this.__getCroppedArea(f,e,o);var d=f.croppedArea-g.croppedArea;if((d<0||0===d&&p)&&(g=f),0===g.croppedArea&&p)break}}return g}}</script><dom-module id="iron-overlay-backdrop" assetpath="/"><template><style>:host{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--iron-overlay-backdrop-background-color,#000);opacity:0;transition:opacity .2s;pointer-events:none;@apply(--iron-overlay-backdrop)}:host(.opened){opacity:var(--iron-overlay-backdrop-opacity,.6);pointer-events:auto;@apply(--iron-overlay-backdrop-opened)}</style><content></content></template></dom-module><script>!function(){"use strict";Polymer({is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,type:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTransitionend"},created:function(){this.__openedRaf=null},attached:function(){this.opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this.parentNode&&Polymer.dom(document.body).appendChild(this)},open:function(){this.opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||this.parentNode!==document.body||Polymer.dom(this.parentNode).removeChild(this)},_onTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:function(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t.transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__openedRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),this.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(function(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}})}()</script><script>Polymer.IronOverlayManagerClass=function(){this._overlays=[],this._minimumZ=101,this._backdropElement=null,Polymer.Gestures.add(document,"tap",this._onCaptureClick.bind(this)),document.addEventListener("focus",this._onCaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureKeyDown.bind(this),!0)},Polymer.IronOverlayManagerClass.prototype={constructor:Polymer.IronOverlayManagerClass,get backdropElement(){return this._backdropElement||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._backdropElement},get deepActiveElement(){for(var e=document.activeElement||document.body;e.root&&Polymer.dom(e.root).activeElement;)e=Polymer.dom(e.root).activeElement;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e];if(t){var r=this._overlays.length-1,a=this._overlays[r];if(a&&this._shouldBeBehindOverlay(t,a)&&r--,!(e>=r)){var n=Math.max(this.currentOverlayZ(),this._minimumZ);for(this._getZ(t)<=n&&this._applyOverlayZ(t,n);e<r;)this._overlays[e]=this._overlays[e+1],e++;this._overlays[r]=t}}},addOrRemoveOverlay:function(e){e.opened?this.addOverlay(e):this.removeOverlay(e)},addOverlay:function(e){var t=this._overlays.indexOf(e);if(t>=0)return this._bringOverlayAtIndexToFront(t),void this.trackBackdrop();var r=this._overlays.length,a=this._overlays[r-1],n=Math.max(this._getZ(a),this._minimumZ),o=this._getZ(e);if(a&&this._shouldBeBehindOverlay(e,a)){this._applyOverlayZ(a,n),r--;var i=this._overlays[r-1];n=Math.max(this._getZ(i),this._minimumZ)}o<=n&&this._applyOverlayZ(e,n),this._overlays.splice(r,0,e),this.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);t!==-1&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:function(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:function(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.currentOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithBackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._getZ(e)-1,this.backdropElement.opened=!!e)},getBackdrops:function(){for(var e=[],t=0;t<this._overlays.length;t++)this._overlays[t].withBackdrop&&e.push(this._overlays[t]);return e},backdropZ:function(){return this._getZ(this._overlayWithBackdrop())-1},_overlayWithBackdrop:function(){for(var e=0;e<this._overlays.length;e++)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e){var t=this._minimumZ;if(e){var r=Number(e.style.zIndex||window.getComputedStyle(e).zIndex);r===r&&(t=r)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyOverlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for(var t=0;t<e.length;t++)if(e[t]._manager===this)return e[t]},_onCaptureClick:function(e){var t=this.currentOverlay();t&&this._overlayInPath(Polymer.dom(e).path)!==t&&t._onCaptureClick(e)},_onCaptureFocus:function(e){var t=this.currentOverlay();t&&t._onCaptureFocus(e)},_onCaptureKeyDown:function(e){var t=this.currentOverlay();t&&(Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"esc")?t._onCaptureEsc(e):Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"tab")&&t._onCaptureTab(e))},_shouldBeBehindOverlay:function(e,t){return!e.alwaysOnTop&&t.alwaysOnTop}},Polymer.IronOverlayManager=new Polymer.IronOverlayManagerClass</script><script>!function(){"use strict";var e=Element.prototype,t=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;Polymer.IronFocusablesHelper={getTabbableNodes:function(e){var t=[],r=this._collectTabbableNodes(e,t);return r?this._sortByTabIndex(t):t},isFocusable:function(e){return t.call(e,"input, select, textarea, button, object")?t.call(e,":not([disabled])"):t.call(e,"a[href], area[href], iframe, [tabindex], [contentEditable]")},isTabbable:function(e){return this.isFocusable(e)&&t.call(e,':not([tabindex="-1"])')&&this._isVisible(e)},_normalizedTabIndex:function(e){if(this.isFocusable(e)){var t=e.getAttribute("tabindex")||0;return Number(t)}return-1},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!this._isVisible(e))return!1;var r=e,a=this._normalizedTabIndex(r),i=a>0;a>=0&&t.push(r);var n;n="content"===r.localName?Polymer.dom(r).getDistributedNodes():Polymer.dom(r.root||r).children;for(var o=0;o<n.length;o++){var s=this._collectTabbableNodes(n[o],t);i=i||s}return i},_isVisible:function(e){var t=e.style;return"hidden"!==t.visibility&&"none"!==t.display&&(t=window.getComputedStyle(e),"hidden"!==t.visibility&&"none"!==t.display)},_sortByTabIndex:function(e){var t=e.length;if(t<2)return e;var r=Math.ceil(t/2),a=this._sortByTabIndex(e.slice(0,r)),i=this._sortByTabIndex(e.slice(r));return this._mergeSortByTabIndex(a,i)},_mergeSortByTabIndex:function(e,t){for(var r=[];e.length>0&&t.length>0;)this._hasLowerTabOrder(e[0],t[0])?r.push(t.shift()):r.push(e.shift());return r.concat(e,t)},_hasLowerTabOrder:function(e,t){var r=Math.max(e.tabIndex,0),a=Math.max(t.tabIndex,0);return 0===r||0===a?a>r:r>a}}}()</script><script>!function(){"use strict";Polymer.IronOverlayBehaviorImpl={properties:{opened:{observer:"_openedChanged",type:Boolean,value:!1,notify:!0},canceled:{observer:"_canceledChanged",readOnly:!0,type:Boolean,value:!1},withBackdrop:{observer:"_withBackdropChanged",type:Boolean},noAutoFocus:{type:Boolean,value:!1},noCancelOnEscKey:{type:Boolean,value:!1},noCancelOnOutsideClick:{type:Boolean,value:!1},closingReason:{type:Object},restoreFocusOnClose:{type:Boolean,value:!1},alwaysOnTop:{type:Boolean},_manager:{type:Object,value:Polymer.IronOverlayManager},_focusedChild:{type:Object}},listeners:{"iron-resize":"_onIronResize"},get backdropElement(){return this._manager.backdropElement},get _focusNode(){return this._focusedChild||Polymer.dom(this).querySelector("[autofocus]")||this},get _focusableNodes(){return Polymer.IronFocusablesHelper.getTabbableNodes(this)},ready:function(){this.__isAnimating=!1,this.__shouldRemoveTabIndex=!1,this.__firstFocusableNode=this.__lastFocusableNode=null,this.__raf=null,this.__restoreFocusNode=null,this._ensureSetup()},attached:function(){this.opened&&this._openedChanged(this.opened),this._observer=Polymer.dom(this).observeNodes(this._onNodesChange)},detached:function(){Polymer.dom(this).unobserveNodes(this._observer),this._observer=null,this.__raf&&(window.cancelAnimationFrame(this.__raf),this.__raf=null),this._manager.removeOverlay(this)},toggle:function(){this._setCanceled(!1),this.opened=!this.opened},open:function(){this._setCanceled(!1),this.opened=!0},close:function(){this._setCanceled(!1),this.opened=!1},cancel:function(e){var t=this.fire("iron-overlay-canceled",e,{cancelable:!0});t.defaultPrevented||(this._setCanceled(!0),this.opened=!1)},invalidateTabbables:function(){this.__firstFocusableNode=this.__lastFocusableNode=null},_ensureSetup:function(){this._overlaySetup||(this._overlaySetup=!0,this.style.outline="none",this.style.display="none")},_openedChanged:function(e){e?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidden","true"),this.isAttached&&(this.__isAnimating=!0,this.__onNextAnimationFrame(this.__openedChanged))},_canceledChanged:function(){this.closingReason=this.closingReason||{},this.closingReason.canceled=this.canceled},_withBackdropChanged:function(){this.withBackdrop&&!this.hasAttribute("tabindex")?(this.setAttribute("tabindex","-1"),this.__shouldRemoveTabIndex=!0):this.__shouldRemoveTabIndex&&(this.removeAttribute("tabindex"),this.__shouldRemoveTabIndex=!1),this.opened&&this.isAttached&&this._manager.trackBackdrop()},_prepareRenderOpened:function(){this.__restoreFocusNode=this._manager.deepActiveElement,this._preparePositioning(),this.refit(),this._finishPositioning(),this.noAutoFocus&&document.activeElement===this._focusNode&&(this._focusNode.blur(),this.__restoreFocusNode.focus())},_renderOpened:function(){this._finishRenderOpened()},_renderClosed:function(){this._finishRenderClosed()},_finishRenderOpened:function(){this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-opened")},_finishRenderClosed:function(){this.style.display="none",this.style.zIndex="",this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-closed",this.closingReason)},_preparePositioning:function(){this.style.transition=this.style.webkitTransition="none",this.style.transform=this.style.webkitTransform="none",this.style.display=""},_finishPositioning:function(){this.style.display="none",this.scrollTop=this.scrollTop,this.style.transition=this.style.webkitTransition="",this.style.transform=this.style.webkitTransform="",this.style.display="",this.scrollTop=this.scrollTop},_applyFocus:function(){if(this.opened)this.noAutoFocus||this._focusNode.focus();else{this._focusNode.blur(),this._focusedChild=null,this.restoreFocusOnClose&&this.__restoreFocusNode&&this.__restoreFocusNode.focus(),this.__restoreFocusNode=null;var e=this._manager.currentOverlay();e&&this!==e&&e._applyFocus()}},_onCaptureClick:function(e){this.noCancelOnOutsideClick||this.cancel(e)},_onCaptureFocus:function(e){if(this.withBackdrop){var t=Polymer.dom(e).path;t.indexOf(this)===-1?(e.stopPropagation(),this._applyFocus()):this._focusedChild=t[0]}},_onCaptureEsc:function(e){this.noCancelOnEscKey||this.cancel(e)},_onCaptureTab:function(e){if(this.withBackdrop){this.__ensureFirstLastFocusables();var t=e.shiftKey,i=t?this.__firstFocusableNode:this.__lastFocusableNode,s=t?this.__lastFocusableNode:this.__firstFocusableNode,o=!1;if(i===s)o=!0;else{var n=this._manager.deepActiveElement;o=n===i||n===this}o&&(e.preventDefault(),this._focusedChild=s,this._applyFocus())}},_onIronResize:function(){this.opened&&!this.__isAnimating&&this.__onNextAnimationFrame(this.refit)},_onNodesChange:function(){this.opened&&!this.__isAnimating&&(this.invalidateTabbables(),this.notifyResize())},__ensureFirstLastFocusables:function(){if(!this.__firstFocusableNode||!this.__lastFocusableNode){var e=this._focusableNodes;this.__firstFocusableNode=e[0],this.__lastFocusableNode=e[e.length-1]}},__openedChanged:function(){this.opened?(this._prepareRenderOpened(),this._manager.addOverlay(this),this._applyFocus(),this._renderOpened()):(this._manager.removeOverlay(this),this._applyFocus(),this._renderClosed())},__onNextAnimationFrame:function(e){this.__raf&&window.cancelAnimationFrame(this.__raf);var t=this;this.__raf=window.requestAnimationFrame(function(){t.__raf=null,e.call(t)})}},Polymer.IronOverlayBehavior=[Polymer.IronFitBehavior,Polymer.IronResizableBehavior,Polymer.IronOverlayBehaviorImpl]}()</script><script>Polymer.NeonAnimatableBehavior={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnimationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:String}},_entryAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exitAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:function(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t){if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this.animationConfig.value)return void this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Array.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._getAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClone||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimationConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script><script>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name);if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.cancel&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.complete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnimation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._active||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),delete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(this)}},cancelAnimation:function(){for(var n in this._animations)this._animations[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script><script>Polymer.NeonAnimationBehavior={properties:{animationTiming:{type:Object,value:function(){return{duration:500,easing:"cubic-bezier(0.4, 0, 0.2, 1)",fill:"both"}}}},isNeonAnimation:!0,timingFromConfig:function(i){if(i.timing)for(var n in i.timing)this.animationTiming[n]=i.timing[n];return this.animationTiming},setPrefixedProperty:function(i,n,r){for(var t,o={transform:["webkitTransform"],transformOrigin:["mozTransformOrigin","webkitTransformOrigin"]},e=o[n],m=0;t=e[m];m++)i.style[t]=r;i.style[n]=r},complete:function(){}}</script><script>!function(a,b){var c={},d={},e={},f=null;!function(t,e){function i(t){if("number"==typeof t)return t;var e={};for(var i in t)e[i]=t[i];return e}function n(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=E}function r(){return t.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function o(e,i,r){var o=new n;return i&&(o.fill="both",o.duration="auto"),"number"!=typeof e||isNaN(e)?void 0!==e&&Object.getOwnPropertyNames(e).forEach(function(i){if("auto"!=e[i]){if(("number"==typeof o[i]||"duration"==i)&&("number"!=typeof e[i]||isNaN(e[i])))return;if("fill"==i&&w.indexOf(e[i])==-1)return;if("direction"==i&&T.indexOf(e[i])==-1)return;if("playbackRate"==i&&1!==e[i]&&t.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;o[i]=e[i]}}):o.duration=e,o}function a(t){return"number"==typeof t&&(t=isNaN(t)?{duration:0}:{duration:t}),t}function s(e,i){return e=t.numericTimingToObject(e),o(e,i)}function u(t,e,i,n){return t<0||t>1||i<0||i>1?E:function(r){function o(t,e,i){return 3*t*(1-i)*(1-i)*i+3*e*(1-i)*i*i+i*i*i}if(r<=0){var a=0;return t>0?a=e/t:!e&&i>0&&(a=n/i),a*r}if(r>=1){var s=0;return i<1?s=(n-1)/(i-1):1==i&&t<1&&(s=(e-1)/(t-1)),1+s*(r-1)}for(var u=0,c=1;u<c;){var f=(u+c)/2,l=o(t,i,f);if(Math.abs(r-l)<1e-5)return o(e,n,f);l<r?u=f:c=f}return o(e,n,f)}}function c(t,e){return function(i){if(i>=1)return 1;var n=1/t;return i+=e*n,i-i%n}}function f(t){R||(R=document.createElement("div").style),R.animationTimingFunction="",R.animationTimingFunction=t;var e=R.animationTimingFunction;if(""==e&&r())throw new TypeError(t+" is not a valid value for easing");return e}function l(t){if("linear"==t)return E;var e=O.exec(t);if(e)return u.apply(this,e.slice(1).map(Number));var i=k.exec(t);if(i)return c(Number(i[1]),{start:x,middle:A,end:P}[i[2]]);var n=j[t];return n?n:E}function h(t){return Math.abs(m(t)/t.playbackRate)}function m(t){return 0===t.duration||0===t.iterations?0:t.duration*t.iterations}function d(t,e,i){if(null==e)return S;var n=i.delay+t+i.endDelay;return e<Math.min(i.delay,n)?C:e>=Math.min(i.delay+t,n)?D:F}function p(t,e,i,n,r){switch(n){case C:return"backwards"==e||"both"==e?0:null;case F:return i-r;case D:return"forwards"==e||"both"==e?t:null;case S:return null}}function _(t,e,i,n,r){var o=r;return 0===t?e!==C&&(o+=i):o+=n/t,o}function g(t,e,i,n,r,o){var a=t===1/0?e%1:t%1;return 0!==a||i!==D||0===n||0===r&&0!==o||(a=1),a}function b(t,e,i,n){return t===D&&e===1/0?1/0:1===i?Math.floor(n)-1:Math.floor(n)}function v(t,e,i){var n=t;if("normal"!==t&&"reverse"!==t){var r=e;"alternate-reverse"===t&&(r+=1),n="normal",r!==1/0&&r%2!==0&&(n="reverse")}return"normal"===n?i:1-i}function y(t,e,i){var n=d(t,e,i),r=p(t,i.fill,e,n,i.delay);if(null===r)return null;var o=_(i.duration,n,i.iterations,r,i.iterationStart),a=g(o,i.iterationStart,n,i.iterations,r,i.duration),s=b(n,i.iterations,a,o),u=v(i.direction,s,a);return i._easingFunction(u)}var w="backwards|forwards|both|none".split("|"),T="reverse|alternate|alternate-reverse".split("|"),E=function(t){return t};n.prototype={_setMember:function(e,i){this["_"+e]=i,this._effect&&(this._effect._timingInput[e]=i,this._effect._timing=t.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=t.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(t){this._setMember("delay",t)},get delay(){return this._delay},set endDelay(t){this._setMember("endDelay",t)},get endDelay(){return this._endDelay},set fill(t){this._setMember("fill",t)},get fill(){return this._fill},set iterationStart(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",t)},get iterationStart(){return this._iterationStart},set duration(t){if("auto"!=t&&(isNaN(t)||t<0)&&r())throw new TypeError("duration must be non-negative or auto, received: "+t);this._setMember("duration",t)},get duration(){return this._duration},set direction(t){this._setMember("direction",t)},get direction(){return this._direction},set easing(t){this._easingFunction=l(f(t)),this._setMember("easing",t)},get easing(){return this._easing},set iterations(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterations must be non-negative, received: "+t);this._setMember("iterations",t)},get iterations(){return this._iterations}};var x=1,A=.5,P=0,j={ease:u(.25,.1,.25,1),"ease-in":u(.42,0,1,1),"ease-out":u(0,0,.58,1),"ease-in-out":u(.42,0,.58,1),"step-start":c(1,x),"step-middle":c(1,A),"step-end":c(1,P)},R=null,N="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",O=new RegExp("cubic-bezier\\("+N+","+N+","+N+","+N+"\\)"),k=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,S=0,C=1,D=2,F=3;t.cloneTimingInput=i,t.makeTiming=o,t.numericTimingToObject=a,t.normalizeTimingInput=s,t.calculateActiveDuration=h,t.calculateIterationProgress=y,t.calculatePhase=d,t.normalizeEasing=f,t.parseEasingFunction=l}(c,f),function(t,e){function i(t,e){return t in f?f[t][e]||e:e}function n(t){return"display"===t||0===t.lastIndexOf("animation",0)||0===t.lastIndexOf("transition",0)}function r(t,e,r){if(!n(t)){var o=s[t];if(o){u.style[t]=e;for(var a in o){var c=o[a],f=u.style[c];r[c]=i(c,f)}}else r[t]=i(t,e)}}function o(t){var e=[];for(var i in t)if(!(i in["easing","offset","composite"])){var n=t[i];Array.isArray(n)||(n=[n]);for(var r,o=n.length,a=0;a<o;a++)r={},"offset"in t?r.offset=t.offset:1==o?r.offset=1:r.offset=a/(o-1),"easing"in t&&(r.easing=t.easing),"composite"in t&&(r.composite=t.composite),r[i]=n[a],e.push(r)}return e.sort(function(t,e){return t.offset-e.offset}),e}function a(e){function i(){var t=n.length;null==n[t-1].offset&&(n[t-1].offset=1),t>1&&null==n[0].offset&&(n[0].offset=0);for(var e=0,i=n[0].offset,r=1;r<t;r++){var o=n[r].offset;if(null!=o){for(var a=1;a<r-e;a++)n[e+a].offset=i+(o-i)*a/(r-e);e=r,i=o}}}if(null==e)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||(e=o(e));for(var n=e.map(function(e){var i={};for(var n in e){var o=e[n];if("offset"==n){if(null!=o){if(o=Number(o),!isFinite(o))throw new TypeError("Keyframe offsets must be numbers.");if(o<0||o>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==n){if("add"==o||"accumulate"==o)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=o)throw new TypeError("Invalid composite mode "+o+".")}else o="easing"==n?t.normalizeEasing(o):""+o;r(n,o,i)}return void 0==i.offset&&(i.offset=null),void 0==i.easing&&(i.easing="linear"),i}),a=!0,s=-(1/0),u=0;u<n.length;u++){var c=n[u].offset;if(null!=c){if(c<s)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");s=c}else a=!1}return n=n.filter(function(t){return t.offset>=0&&t.offset<=1}),a||i(),n}var s={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},u=document.createElementNS("http://www.w3.org/1999/xhtml","div"),c={thin:"1px",medium:"3px",thick:"5px"},f={borderBottomWidth:c,borderLeftWidth:c,borderRightWidth:c,borderTopWidth:c,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:c,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};t.convertToArrayForm=o,t.normalizeKeyframes=a}(c,f),function(t){var e={};t.isDeprecated=function(t,i,n,r){var o=r?"are":"is",a=new Date,s=new Date(i);return s.setMonth(s.getMonth()+3),!(a<s&&(t in e||console.warn("Web Animations: "+t+" "+o+" deprecated and will stop working on "+s.toDateString()+". "+n),e[t]=!0,1))},t.deprecated=function(e,i,n,r){var o=r?"are":"is";if(t.isDeprecated(e,i,n,r))throw new Error(e+" "+o+" no longer supported. "+n)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(t){void 0===a[t]&&(b=!0)})),!b)return}!function(t,e,i){function n(t){for(var e={},i=0;i<t.length;i++)for(var n in t[i])if("offset"!=n&&"easing"!=n&&"composite"!=n){var r={offset:t[i].offset,easing:t[i].easing,value:t[i][n]};e[n]=e[n]||[],e[n].push(r)}for(var o in e){var a=e[o];if(0!=a[0].offset||1!=a[a.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return e}function r(i){var n=[];for(var r in i)for(var o=i[r],a=0;a<o.length-1;a++){var s=a,u=a+1,c=o[s].offset,f=o[u].offset,l=c,h=f;0==a&&(l=-(1/0),0==f&&(u=s)),a==o.length-2&&(h=1/0,1==c&&(s=u)),n.push({applyFrom:l,applyTo:h,startOffset:o[s].offset,endOffset:o[u].offset,easingFunction:t.parseEasingFunction(o[s].easing),property:r,interpolation:e.propertyInterpolation(r,o[s].value,o[u].value)})}return n.sort(function(t,e){return t.startOffset-e.startOffset}),n}e.convertEffectInput=function(i){var o=t.normalizeKeyframes(i),a=n(o),s=r(a);return function(t,i){if(null!=i)s.filter(function(t){return i>=t.applyFrom&&i<t.applyTo}).forEach(function(n){var r=i-n.startOffset,o=n.endOffset-n.startOffset,a=0==o?0:n.easingFunction(r/o);e.apply(t,n.property,n.interpolation(a))});else for(var n in a)"offset"!=n&&"easing"!=n&&"composite"!=n&&e.clear(t,n)}}}(c,d,f),function(t,e,i){function n(t){return t.replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function r(t,e,i){s[i]=s[i]||[],s[i].push([t,e])}function o(t,e,i){for(var o=0;o<i.length;o++){var a=i[o];r(t,e,n(a))}}function a(i,r,o){var a=i;/-/.test(i)&&!t.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(a=n(i)),"initial"!=r&&"initial"!=o||("initial"==r&&(r=u[a]),"initial"==o&&(o=u[a]));for(var c=r==o?[]:s[a],f=0;c&&f<c.length;f++){var l=c[f][0](r),h=c[f][0](o);if(void 0!==l&&void 0!==h){var m=c[f][1](l,h);if(m){var d=e.Interpolation.apply(null,m);return function(t){return 0==t?r:1==t?o:d(t)}}}}return e.Interpolation(!1,!0,function(t){return t?o:r})}var s={};e.addPropertiesHandler=o;var u={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};e.propertyInterpolation=a}(c,d,f),function(t,e,i){function n(e){var i=t.calculateActiveDuration(e),n=function(n){return t.calculateIterationProgress(i,n,e)};return n._totalDuration=e.delay+i+e.endDelay,n}e.KeyframeEffect=function(i,r,o,a){var s,u=n(t.normalizeTimingInput(o)),c=e.convertEffectInput(r),f=function(){c(i,s)};return f._update=function(t){return s=u(t),null!==s},f._clear=function(){c(i,null)},f._hasSameTarget=function(t){return i===t},f._target=i,f._totalDuration=u._totalDuration,f._id=a,f},e.NullEffect=function(t){var e=function(){t&&(t(),t=null)};return e._update=function(){return null},e._totalDuration=0,e._hasSameTarget=function(){return!1},e}}(c,d,f),function(t,e){t.apply=function(e,i,n){e.style[t.propertyName(i)]=n},t.clear=function(e,i){e.style[t.propertyName(i)]=""}}(d,f),function(t){window.Element.prototype.animate=function(e,i){var n="";return i&&i.id&&(n=i.id),t.timeline._play(t.KeyframeEffect(this,e,i,n))}}(d),function(t,e){function i(t,e,n){if("number"==typeof t&&"number"==typeof e)return t*(1-n)+e*n;if("boolean"==typeof t&&"boolean"==typeof e)return n<.5?t:e;if(t.length==e.length){for(var r=[],o=0;o<t.length;o++)r.push(i(t[o],e[o],n));return r}throw"Mismatched interpolation arguments "+t+":"+e}t.Interpolation=function(t,e,n){return function(r){return n(i(t,e,r))}}}(d,f),function(t,e,i){t.sequenceNumber=0;var n=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};e.Animation=function(e){this.id="",e&&e._id&&(this.id=e._id),this._sequenceNumber=t.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=e,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},e.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,e.timeline._animations.push(this))},_tickCurrentTime:function(t,e){t!=this._currentTime&&(this._currentTime=t,this._isFinished&&!e&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(t){t=+t,isNaN(t)||(e.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-t/this._playbackRate),this._currentTimePending=!1,this._currentTime!=t&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(t,!0),e.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(t){t=+t,isNaN(t)||this._paused||this._idle||(this._startTime=t,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),e.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(t){if(t!=this._playbackRate){var i=this.currentTime;this._playbackRate=t,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)),null!=i&&(this.currentTime=i)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,e.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),e.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(t,e){"function"==typeof e&&"finish"==t&&this._finishHandlers.push(e)},removeEventListener:function(t,e){if("finish"==t){var i=this._finishHandlers.indexOf(e);i>=0&&this._finishHandlers.splice(i,1)}},_fireEvents:function(t){if(this._isFinished){if(!this._finishedFlag){var e=new n(this,this._currentTime,t),i=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){i.forEach(function(t){t.call(e.target,e)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(t,e){this._idle||this._paused||(null==this._startTime?e&&(this.startTime=t-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((t-this._startTime)*this.playbackRate)),e&&(this._currentTimePending=!1,this._fireEvents(t))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var t=this._effect._target;return t._activeAnimations||(t._activeAnimations=[]),t._activeAnimations},_markTarget:function(){var t=this._targetAnimations();t.indexOf(this)===-1&&t.push(this)},_unmarkTarget:function(){var t=this._targetAnimations(),e=t.indexOf(this);e!==-1&&t.splice(e,1)}}}(c,d,f),function(t,e,i){function n(t){var e=c;c=[],t<_.currentTime&&(t=_.currentTime),_._animations.sort(r),_._animations=s(t,!0,_._animations)[0],e.forEach(function(e){e[1](t)}),a(),l=void 0}function r(t,e){return t._sequenceNumber-e._sequenceNumber}function o(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function a(){d.forEach(function(t){t()}),d.length=0}function s(t,i,n){p=!0,m=!1;var r=e.timeline;r.currentTime=t,h=!1;var o=[],a=[],s=[],u=[];return n.forEach(function(e){e._tick(t,i),e._inEffect?(a.push(e._effect),e._markTarget()):(o.push(e._effect),e._unmarkTarget()),e._needsTick&&(h=!0);var n=e._inEffect||e._needsTick;e._inTimeline=n,n?s.push(e):u.push(e)}),d.push.apply(d,o),d.push.apply(d,a),h&&requestAnimationFrame(function(){}),p=!1,[s,u]}var u=window.requestAnimationFrame,c=[],f=0;window.requestAnimationFrame=function(t){var e=f++;return 0==c.length&&u(n),c.push([e,t]),e},window.cancelAnimationFrame=function(t){c.forEach(function(e){e[0]==t&&(e[1]=function(){})})},o.prototype={_play:function(i){i._timing=t.normalizeTimingInput(i.timing);var n=new e.Animation(i);return n._idle=!1,n._timeline=this,this._animations.push(n),e.restart(),e.applyDirtiedAnimation(n),n}};var l=void 0,h=!1,m=!1;e.restart=function(){return h||(h=!0,requestAnimationFrame(function(){}),m=!0),m},e.applyDirtiedAnimation=function(t){if(!p){t._markTarget();var i=t._targetAnimations();i.sort(r);var n=s(e.timeline.currentTime,!1,i.slice())[1];n.forEach(function(t){var e=_._animations.indexOf(t);e!==-1&&_._animations.splice(e,1)}),a()}};var d=[],p=!1,_=new o;e.timeline=_}(c,d,f),function(t){function e(t,e){var i=t.exec(e);if(i)return i=t.ignoreCase?i[0].toLowerCase():i[0],[i,e.substr(i.length)]}function i(t,e){e=e.replace(/^\s*/,"");var i=t(e);if(i)return[i[0],i[1].replace(/^\s*/,"")]}function n(t,n,r){t=i.bind(null,t);for(var o=[];;){var a=t(r);if(!a)return[o,r];if(o.push(a[0]),r=a[1],a=e(n,r),!a||""==a[1])return[o,r];r=a[1]}}function r(t,e){for(var i=0,n=0;n<e.length&&(!/\s|,/.test(e[n])||0!=i);n++)if("("==e[n])i++;else if(")"==e[n]&&(i--,0==i&&n++,i<=0))break;var r=t(e.substr(0,n));return void 0==r?void 0:[r,e.substr(n)]}function o(t,e){for(var i=t,n=e;i&&n;)i>n?i%=n:n%=i;return i=t*e/(i+n)}function a(t){return function(e){var i=t(e);return i&&(i[0]=void 0),i}}function s(t,e){return function(i){var n=t(i);return n?n:[e,i]}}function u(e,i){for(var n=[],r=0;r<e.length;r++){var o=t.consumeTrimmed(e[r],i);if(!o||""==o[0])return;void 0!==o[0]&&n.push(o[0]),i=o[1]}if(""==i)return n}function c(t,e,i,n,r){for(var a=[],s=[],u=[],c=o(n.length,r.length),f=0;f<c;f++){var l=e(n[f%n.length],r[f%r.length]);if(!l)return;a.push(l[0]),s.push(l[1]),u.push(l[2])}return[a,s,function(e){var n=e.map(function(t,e){return u[e](t)}).join(i);return t?t(n):n}]}function f(t,e,i){for(var n=[],r=[],o=[],a=0,s=0;s<i.length;s++)if("function"==typeof i[s]){var u=i[s](t[a],e[a++]);n.push(u[0]),r.push(u[1]),o.push(u[2])}else!function(t){n.push(!1),r.push(!1),o.push(function(){return i[t]})}(s);return[n,r,function(t){for(var e="",i=0;i<t.length;i++)e+=o[i](t[i]);return e}]}t.consumeToken=e,t.consumeTrimmed=i,t.consumeRepeated=n,t.consumeParenthesised=r,t.ignore=a,t.optional=s,t.consumeList=u,t.mergeNestedRepeated=c.bind(null,null),t.mergeWrappedNestedRepeated=c,t.mergeList=f}(d),function(t){function e(e){function i(e){var i=t.consumeToken(/^inset/i,e);if(i)return n.inset=!0,i;var i=t.consumeLengthOrPercent(e);if(i)return n.lengths.push(i[0]),i;var i=t.consumeColor(e);return i?(n.color=i[0],i):void 0}var n={inset:!1,lengths:[],color:null},r=t.consumeRepeated(i,/^/,e);if(r&&r[0].length)return[n,r[1]]}function i(i){var n=t.consumeRepeated(e,/^,/,i);if(n&&""==n[1])return n[0]}function n(e,i){for(;e.lengths.length<Math.max(e.lengths.length,i.lengths.length);)e.lengths.push({px:0});for(;i.lengths.length<Math.max(e.lengths.length,i.lengths.length);)i.lengths.push({px:0});if(e.inset==i.inset&&!!e.color==!!i.color){for(var n,r=[],o=[[],0],a=[[],0],s=0;s<e.lengths.length;s++){var u=t.mergeDimensions(e.lengths[s],i.lengths[s],2==s);o[0].push(u[0]),a[0].push(u[1]),r.push(u[2])}if(e.color&&i.color){var c=t.mergeColors(e.color,i.color);o[1]=c[0],a[1]=c[1],n=c[2]}return[o,a,function(t){for(var i=e.inset?"inset ":" ",o=0;o<r.length;o++)i+=r[o](t[0][o])+" ";return n&&(i+=n(t[1])),i}]}}function r(e,i,n,r){function o(t){return{inset:t,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var a=[],s=[],u=0;u<n.length||u<r.length;u++){var c=n[u]||o(r[u].inset),f=r[u]||o(n[u].inset);a.push(c),s.push(f)}return t.mergeNestedRepeated(e,i,a,s)}var o=r.bind(null,n,", ");t.addPropertiesHandler(i,o,["box-shadow","text-shadow"])}(d),function(t,e){function i(t){return t.toFixed(3).replace(".000","")}function n(t,e,i){return Math.min(e,Math.max(t,i))}function r(t){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(t))return Number(t)}function o(t,e){return[t,e,i]}function a(t,e){if(0!=t)return u(0,1/0)(t,e)}function s(t,e){return[t,e,function(t){return Math.round(n(1,1/0,t))}]}function u(t,e){return function(r,o){return[r,o,function(r){return i(n(t,e,r))}]}}function c(t,e){return[t,e,Math.round]}t.clamp=n,t.addPropertiesHandler(r,u(0,1/0),["border-image-width","line-height"]),t.addPropertiesHandler(r,u(0,1),["opacity","shape-image-threshold"]),t.addPropertiesHandler(r,a,["flex-grow","flex-shrink"]),t.addPropertiesHandler(r,s,["orphans","widows"]),t.addPropertiesHandler(r,c,["z-index"]),t.parseNumber=r,t.mergeNumbers=o,t.numberToString=i}(d,f),function(t,e){function i(t,e){if("visible"==t||"visible"==e)return[0,1,function(i){return i<=0?t:i>=1?e:"visible"}]}t.addPropertiesHandler(String,i,["visibility"])}(d),function(t,e){function i(t){t=t.trim(),o.fillStyle="#000",o.fillStyle=t;var e=o.fillStyle;if(o.fillStyle="#fff",o.fillStyle=t,e==o.fillStyle){o.fillRect(0,0,1,1);var i=o.getImageData(0,0,1,1).data;o.clearRect(0,0,1,1);var n=i[3]/255;return[i[0]*n,i[1]*n,i[2]*n,n]}}function n(e,i){return[e,i,function(e){function i(t){return Math.max(0,Math.min(255,t))}if(e[3])for(var n=0;n<3;n++)e[n]=Math.round(i(e[n]/e[3]));return e[3]=t.numberToString(t.clamp(0,1,e[3])),"rgba("+e.join(",")+")"}]}var r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");r.width=r.height=1;var o=r.getContext("2d");t.addPropertiesHandler(i,n,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),t.consumeColor=t.consumeParenthesised.bind(null,i),t.mergeColors=n}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(t){return c[t]=null,"U"+t});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(t,i){return e(t,i,!0)}function e(t,e,i){var n,r=[];for(n in t)r.push(n);for(n in e)r.indexOf(n)<0&&r.push(n);return t=r.map(function(e){return t[e]||0}),e=r.map(function(t){return e[t]||0}),[t,e,function(t){var e=t.map(function(e,n){return 1==t.length&&i&&(e=Math.max(e,0)),a.numberToString(e)+r[n]}).join(" + ");return t.length>1?"calc("+e+")":e}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(t){var e=l(t);if(e&&""==e[1])return e[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(t,e){function i(e){return t.consumeLengthOrPercent(e)||t.consumeToken(/^auto/,e)}function n(e){var n=t.consumeList([t.ignore(t.consumeToken.bind(null,/^rect/)),t.ignore(t.consumeToken.bind(null,/^\(/)),t.consumeRepeated.bind(null,i,/^,/),t.ignore(t.consumeToken.bind(null,/^\)/))],e);if(n&&4==n[0].length)return n[0]}function r(e,i){return"auto"==e||"auto"==i?[!0,!1,function(n){var r=n?e:i;if("auto"==r)return"auto";var o=t.mergeDimensions(r,r);return o[2](o[0])}]:t.mergeDimensions(e,i)}function o(t){return"rect("+t+")"}var a=t.mergeWrappedNestedRepeated.bind(null,o,r,", ");t.parseBox=n,t.mergeBoxes=a,t.addPropertiesHandler(n,a,["clip"])}(d,f),function(t,e){function i(t){return function(e){var i=0;return t.map(function(t){return t===f?e[i++]:t})}}function n(t){return t}function r(e){if(e=e.toLowerCase().trim(),"none"==e)return[];for(var i,n=/\s*(\w+)\(([^)]*)\)/g,r=[],o=0;i=n.exec(e);){if(i.index!=o)return;o=i.index+i[0].length;var a=i[1],s=m[a];if(!s)return;var u=i[2].split(","),c=s[0];if(c.length<u.length)return;for(var f=[],d=0;d<c.length;d++){var p,_=u[d],g=c[d];if(p=_?{A:function(e){return"0"==e.trim()?h:t.parseAngle(e)},N:t.parseNumber,T:t.parseLengthOrPercent,L:t.parseLength}[g.toUpperCase()](_):{a:h,n:f[0],t:l}[g],void 0===p)return;f.push(p)}if(r.push({t:a,d:f}),n.lastIndex==e.length)return r}}function o(t){return t.toFixed(6).replace(".000000","")}function a(e,i){if(e.decompositionPair!==i){e.decompositionPair=i;var n=t.makeMatrixDecomposition(e)}if(i.decompositionPair!==e){i.decompositionPair=e;var r=t.makeMatrixDecomposition(i)}return null==n[0]||null==r[0]?[[!1],[!0],function(t){return t?i[0].d:e[0].d}]:(n[0].push(0),r[0].push(1),[n,r,function(e){var i=t.quat(n[0][3],r[0][3],e[5]),a=t.composeMatrix(e[0],e[1],e[2],i,e[4]),s=a.map(o).join(",");return s}])}function s(t){return t.replace(/[xy]/,"")}function u(t){return t.replace(/(x|y|z|3d)?$/,"3d")}function c(e,i){var n=t.makeMatrixDecomposition&&!0,r=!1;if(!e.length||!i.length){e.length||(r=!0,e=i,i=[]);for(var o=0;o<e.length;o++){var c=e[o].t,f=e[o].d,l="scale"==c.substr(0,5)?1:0;i.push({t:c,d:f.map(function(t){if("number"==typeof t)return l;var e={};for(var i in t)e[i]=l;return e})})}}var h=function(t,e){return"perspective"==t&&"perspective"==e||("matrix"==t||"matrix3d"==t)&&("matrix"==e||"matrix3d"==e)},d=[],p=[],_=[];if(e.length!=i.length){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]]}else for(var o=0;o<e.length;o++){var c,b=e[o].t,v=i[o].t,y=e[o].d,w=i[o].d,T=m[b],E=m[v];if(h(b,v)){if(!n)return;var g=a([e[o]],[i[o]]);d.push(g[0]),p.push(g[1]),_.push(["matrix",[g[2]]])}else{if(b==v)c=b;else if(T[2]&&E[2]&&s(b)==s(v))c=s(b),y=T[2](y),w=E[2](w);else{if(!T[1]||!E[1]||u(b)!=u(v)){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]];break}c=u(b),y=T[1](y),w=E[1](w)}for(var x=[],A=[],P=[],j=0;j<y.length;j++){var R="number"==typeof y[j]?t.mergeNumbers:t.mergeDimensions,g=R(y[j],w[j]);x[j]=g[0],A[j]=g[1],P.push(g[2])}d.push(x),p.push(A),_.push([c,P])}}if(r){var N=d;d=p,p=N}return[d,p,function(t){return t.map(function(t,e){var i=t.map(function(t,i){return _[e][1][i](t)}).join(",");return"matrix"==_[e][0]&&16==i.split(",").length&&(_[e][0]="matrix3d"),_[e][0]+"("+i+")"}).join(" ")}]}var f=null,l={px:0},h={deg:0},m={matrix:["NNNNNN",[f,f,0,0,f,f,0,0,0,0,1,0,f,f,0,1],n],matrix3d:["NNNNNNNNNNNNNNNN",n],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",i([f,f,1]),n],scalex:["N",i([f,1,1]),i([f,1])],scaley:["N",i([1,f,1]),i([1,f])],scalez:["N",i([1,1,f])],scale3d:["NNN",n],skew:["Aa",null,n],skewx:["A",null,i([f,h])],skewy:["A",null,i([h,f])],translate:["Tt",i([f,f,l]),n],translatex:["T",i([f,l,l]),i([f,l])],translatey:["T",i([l,f,l]),i([l,f])],translatez:["L",i([l,l,f])],translate3d:["TTL",n]};t.addPropertiesHandler(r,c,["transform"])}(d,f),function(t,e){function i(t,e){e.concat([t]).forEach(function(e){e in document.documentElement.style&&(n[t]=e)})}var n={};i("transform",["webkitTransform","msTransform"]),i("transformOrigin",["webkitTransformOrigin"]),i("perspective",["webkitPerspective"]),i("perspectiveOrigin",["webkitPerspectiveOrigin"]),t.propertyName=function(t){return n[t]||t}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var t;if(window.performance&&performance.now)var t=function(){return performance.now()};else var t=function(){return Date.now()};var e=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="cancel",this.bubbles=!1,this.cancelable=!1, +this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(c),!function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(c,e,f),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e<this.effect.children.length;e++)this.effect.children[e]._animation=t,this._childAnimations[e]._setExternalAnimation(t)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var t=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(i){var n=e.timeline._play(i);this._childAnimations.push(n),n.playbackRate=this.playbackRate,this._paused&&n.pause(),i._animation=this.effect._animation,this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i))}.bind(this))}},_arrangeChildren:function(t,e){null===this.startTime?t.currentTime=this.currentTime-e/this.playbackRate:t.startTime!==this.startTime+e/this.playbackRate&&(t.startTime=this.startTime+e/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(t,e){this._resolveFinishedPromise=function(){t(this)},this._rejectFinishedPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._readyPromise=new Promise(function(t,e){this._resolveReadyPromise=function(){t(this)},this._rejectReadyPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(t){"function"==typeof t?this._animation.onfinish=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.onfinish=t},get oncancel(){return this._animation.oncancel},set oncancel(t){"function"==typeof t?this._animation.oncancel=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.oncancel=t},get currentTime(){this._updatePromises();var t=this._animation.currentTime;return this._updatePromises(),t},set currentTime(t){this._updatePromises(),this._animation.currentTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.currentTime=t-i}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(t){this._updatePromises(),this._animation.startTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.startTime=t+i}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(t){this._updatePromises();var e=this.currentTime;this._animation.playbackRate=t,this._forEachChild(function(e){e.playbackRate=t}),null!==e&&(this.currentTime=e),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),e.awaitStartTime(this),this._forEachChild(function(t){var e=t.currentTime;t.play(),t.currentTime=e}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(t){t.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var t=this.currentTime;this._animation.reverse(),this._forEachChild(function(t){t.reverse()}),null!==t&&(this.currentTime=t),this._updatePromises()},addEventListener:function(t,e){var i=e;"function"==typeof e&&(i=function(t){t.target=this,e.call(this,t)}.bind(this),e._wrapper=i),this._animation.addEventListener(t,i)},removeEventListener:function(t,e){this._animation.removeEventListener(t,e&&e._wrapper||e)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(e){var i=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(t){e.call(this,t,i),this.effect instanceof window.SequenceEffect&&(i+=t.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var n=this.effect._timing,r=this.currentTime;null!==r&&(r=t.calculateIterationProgress(t.calculateActiveDuration(n),r,n)),(null==r||isNaN(r))&&this._removeChildAnimations()}}},window.Animation=e.Animation}(c,e,f),function(t,e,i){function n(e){this._frames=t.normalizeKeyframes(e)}function r(){for(var t=!1;u.length;){var e=u.shift();e._updateChildren(),t=!0}return t}var o=function(t){if(t._animation=void 0,t instanceof window.SequenceEffect||t instanceof window.GroupEffect)for(var e=0;e<t.children.length;e++)o(t.children[e])};e.removeMulti=function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n._parent?(e.indexOf(n._parent)==-1&&e.push(n._parent),n._parent.children.splice(n._parent.children.indexOf(n),1),n._parent=null,o(n)):n._animation&&n._animation.effect==n&&(n._animation.cancel(),n._animation.effect=new KeyframeEffect(null,[]),n._animation._callback&&(n._animation._callback._animation=null),n._animation._rebuildUnderlyingAnimation(),o(n))}for(i=0;i<e.length;i++)e[i]._rebuild()},e.KeyframeEffect=function(e,i,r,o){return this.target=e,this._parent=null,r=t.numericTimingToObject(r),this._timingInput=t.cloneTimingInput(r),this._timing=t.normalizeTimingInput(r),this.timing=t.makeTiming(r,!1,this),this.timing._effect=this,"function"==typeof i?(t.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=i):this._normalizedKeyframes=new n(i),this._keyframes=i,this.activeDuration=t.calculateActiveDuration(this._timing),this._id=o,this},e.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(t){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=t,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var e=new KeyframeEffect(this.target,[],t.cloneTimingInput(this._timingInput),this._id);return e._normalizedKeyframes=this._normalizedKeyframes,e._keyframes=this._keyframes,e},remove:function(){e.removeMulti([this])}};var a=Element.prototype.animate;Element.prototype.animate=function(t,i){var n="";return i&&i.id&&(n=i.id),e.timeline._play(new e.KeyframeEffect(this,t,i,n))};var s=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.newUnderlyingAnimationForKeyframeEffect=function(t){if(t){var e=t.target||s,i=t._keyframes;"function"==typeof i&&(i=[]);var n=t._timingInput;n.id=t._id}else var e=s,i=[],n=0;return a.apply(e,[i,n])},e.bindAnimationForKeyframeEffect=function(t){t.effect&&"function"==typeof t.effect._normalizedKeyframes&&e.bindAnimationForCustomEffect(t)};var u=[];e.awaitStartTime=function(t){null===t.startTime&&t._isGroup&&(0==u.length&&requestAnimationFrame(r),u.push(t))};var c=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){e.timeline._updateAnimationsPromises();var t=c.apply(this,arguments);return r()&&(t=c.apply(this,arguments)),e.timeline._updateAnimationsPromises(),t}}),window.KeyframeEffect=e.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(t){return null!==t.effect&&t.effect.target==this}.bind(this))}}(c,e,f),function(t,e,i){function n(t){t._registered||(t._registered=!0,a.push(t),s||(s=!0,requestAnimationFrame(r)))}function r(t){var e=a;a=[],e.sort(function(t,e){return t._sequenceNumber-e._sequenceNumber}),e=e.filter(function(t){t();var e=t._animation?t._animation.playState:"idle";return"running"!=e&&"pending"!=e&&(t._registered=!1),t._registered}),a.push.apply(a,e),a.length?(s=!0,requestAnimationFrame(r)):s=!1}var o=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);e.bindAnimationForCustomEffect=function(e){var i,r=e.effect.target,a="function"==typeof e.effect.getFrames();i=a?e.effect.getFrames():e.effect._onsample;var s=e.effect.timing,u=null;s=t.normalizeTimingInput(s);var c=function(){var n=c._animation?c._animation.currentTime:null;null!==n&&(n=t.calculateIterationProgress(t.calculateActiveDuration(s),n,s),isNaN(n)&&(n=null)),n!==u&&(a?i(n,r,e.effect):i(n,e.effect,e.effect._animation)),u=n};c._animation=e,c._registered=!1,c._sequenceNumber=o++,e._callback=c,n(c)};var a=[],s=!1;e.Animation.prototype._register=function(){this._callback&&n(this._callback)}}(c,e,f),function(t,e,i){function n(t){return t._timing.delay+t.activeDuration+t._timing.endDelay}function r(e,i,n){this._id=n,this._parent=null,this.children=e||[],this._reparent(this.children),i=t.numericTimingToObject(i),this._timingInput=t.cloneTimingInput(i),this._timing=t.normalizeTimingInput(i,!0),this.timing=t.makeTiming(i,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){r.apply(this,arguments)},window.GroupEffect=function(){r.apply(this,arguments)},r.prototype={_isAncestor:function(t){for(var e=this;null!==e;){if(e==t)return!0;e=e._parent}return!1},_rebuild:function(){for(var t=this;t;)"auto"===t.timing.duration&&(t._timing.duration=t.activeDuration),t=t._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(t){e.removeMulti(t);for(var i=0;i<t.length;i++)t[i]._parent=this},_putChild:function(t,e){for(var i=e?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",n=0;n<t.length;n++)if(this._isAncestor(t[n]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:i};for(var n=0;n<t.length;n++)e?this.children.push(t[n]):this.children.unshift(t[n]);this._reparent(t),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var e=t.cloneTimingInput(this._timingInput),i=[],n=0;n<this.children.length;n++)i.push(this.children[n].clone());return this instanceof GroupEffect?new GroupEffect(i,e):new SequenceEffect(i,e)},remove:function(){e.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t+=n(e)}),Math.max(t,0)}}),window.GroupEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t=Math.max(t,n(e))}),t}}),e.newUnderlyingAnimationForGroup=function(i){var n,r=null,o=function(e){var i=n._wrapper;if(i&&"pending"!=i.playState&&i.effect)return null==e?void i._removeChildAnimations():0==e&&i.playbackRate<0&&(r||(r=t.normalizeTimingInput(i.effect.timing)),e=t.calculateIterationProgress(t.calculateActiveDuration(r),-1,r),isNaN(e)||null==e)?(i._forEachChild(function(t){t.currentTime=-1}),void i._removeChildAnimations()):void 0},a=new KeyframeEffect(null,[],i._timing,i._id);return a.onsample=o,n=e.timeline._play(a)},e.bindAnimationForGroup=function(t){t._animation._wrapper=t,t._isGroup=!0,e.awaitStartTime(t),t._constructChildAnimations(),t._setExternalAnimation(t)},e.groupChildDuration=n}(c,e,f),b.true=a}({},function(){return this}())</script><script>Polymer({is:"opaque-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"1"}],this.timingFromConfig(e)),i.style.opacity="0",this._effect},complete:function(e){e.node.style.opacity=""}})</script><script>!function(){"use strict";var e={pageX:0,pageY:0},t=null,l=[];Polymer.IronDropdownScrollManager={get currentLockingElement(){return this._lockingElements[this._lockingElements.length-1]},elementIsScrollLocked:function(e){var t=this.currentLockingElement;if(void 0===t)return!1;var l;return!!this._hasCachedLockedElement(e)||!this._hasCachedUnlockedElement(e)&&(l=!!t&&t!==e&&!this._composedTreeContains(t,e),l?this._lockedElementCache.push(e):this._unlockedElementCache.push(e),l)},pushScrollLock:function(e){this._lockingElements.indexOf(e)>=0||(0===this._lockingElements.length&&this._lockScrollInteractions(),this._lockingElements.push(e),this._lockedElementCache=[],this._unlockedElementCache=[])},removeScrollLock:function(e){var t=this._lockingElements.indexOf(e);t!==-1&&(this._lockingElements.splice(t,1),this._lockedElementCache=[],this._unlockedElementCache=[],0===this._lockingElements.length&&this._unlockScrollInteractions())},_lockingElements:[],_lockedElementCache:null,_unlockedElementCache:null,_hasCachedLockedElement:function(e){return this._lockedElementCache.indexOf(e)>-1},_hasCachedUnlockedElement:function(e){return this._unlockedElementCache.indexOf(e)>-1},_composedTreeContains:function(e,t){var l,n,o,r;if(e.contains(t))return!0;for(l=Polymer.dom(e).querySelectorAll("content"),o=0;o<l.length;++o)for(n=Polymer.dom(l[o]).getDistributedNodes(),r=0;r<n.length;++r)if(this._composedTreeContains(n[r],t))return!0;return!1},_scrollInteractionHandler:function(t){if(t.cancelable&&this._shouldPreventScrolling(t)&&t.preventDefault(),t.targetTouches){var l=t.targetTouches[0];e.pageX=l.pageX,e.pageY=l.pageY}},_lockScrollInteractions:function(){this._boundScrollHandler=this._boundScrollHandler||this._scrollInteractionHandler.bind(this),document.addEventListener("wheel",this._boundScrollHandler,!0),document.addEventListener("mousewheel",this._boundScrollHandler,!0),document.addEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.addEventListener("touchstart",this._boundScrollHandler,!0),document.addEventListener("touchmove",this._boundScrollHandler,!0)},_unlockScrollInteractions:function(){document.removeEventListener("wheel",this._boundScrollHandler,!0),document.removeEventListener("mousewheel",this._boundScrollHandler,!0),document.removeEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.removeEventListener("touchstart",this._boundScrollHandler,!0),document.removeEventListener("touchmove",this._boundScrollHandler,!0)},_shouldPreventScrolling:function(e){var n=Polymer.dom(e).rootTarget;if("touchmove"!==e.type&&t!==n&&(t=n,l=this._getScrollableNodes(Polymer.dom(e).path)),!l.length)return!0;if("touchstart"===e.type)return!1;var o=this._getScrollInfo(e);return!this._getScrollingNode(l,o.deltaX,o.deltaY)},_getScrollableNodes:function(e){for(var t=[],l=e.indexOf(this.currentLockingElement),n=0;n<=l;n++)if(e[n].nodeType===Node.ELEMENT_NODE){var o=e[n],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t},_getScrollingNode:function(e,t,l){if(t||l)for(var n=Math.abs(l)>=Math.abs(t),o=0;o<e.length;o++){var r=e[o],c=!1;if(c=n?l<0?r.scrollTop>0:r.scrollTop<r.scrollHeight-r.clientHeight:t<0?r.scrollLeft>0:r.scrollLeft<r.scrollWidth-r.clientWidth)return r}},_getScrollInfo:function(t){var l={deltaX:t.deltaX,deltaY:t.deltaY};if("deltaX"in t);else if("wheelDeltaX"in t)l.deltaX=-t.wheelDeltaX,l.deltaY=-t.wheelDeltaY;else if("axis"in t)l.deltaX=1===t.axis?t.detail:0,l.deltaY=2===t.axis?t.detail:0;else if(t.targetTouches){var n=t.targetTouches[0];l.deltaX=e.pageX-n.pageX,l.deltaY=e.pageY-n.pageY}return l}}}()</script><dom-module id="iron-dropdown" assetpath="../bower_components/iron-dropdown/"><template><style>:host{position:fixed}#contentWrapper ::content>*{overflow:auto}#contentWrapper.animating ::content>*{overflow:hidden}</style><div id="contentWrapper"><content id="content" select=".dropdown-content"></content></div></template><script>!function(){"use strict";Polymer({is:"iron-dropdown",behaviors:[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.IronOverlayBehavior,Polymer.NeonAnimationRunnerBehavior],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1},_boundOnCaptureScroll:{type:Function,value:function(){return this._onCaptureScroll.bind(this)}}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},get _focusTarget(){return this.focusTarget||this.containedElement},ready:function(){this._scrollTop=0,this._scrollLeft=0,this._refitOnScrollRAF=null},attached:function(){this.sizingTarget&&this.sizingTarget!==this||(this.sizingTarget=this.containedElement||this)},detached:function(){this.cancelAnimation(),document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)},_openedChanged:function(){this.opened&&this.disabled?this.cancel():(this.cancelAnimation(),this._updateAnimationConfig(),this._saveScrollPosition(),this.opened?(document.addEventListener("scroll",this._boundOnCaptureScroll),!this.allowOutsideScroll&&Polymer.IronDropdownScrollManager.pushScrollLock(this)):(document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments))},_renderOpened:function(){!this.noAnimations&&this.animationConfig.open?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("open")):Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this,arguments)},_renderClosed:function(){!this.noAnimations&&this.animationConfig.close?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("close")):Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this,arguments)},_onNeonAnimationFinish:function(){this.$.contentWrapper.classList.remove("animating"),this.opened?this._finishRenderOpened():this._finishRenderClosed()},_onCaptureScroll:function(){this.allowOutsideScroll?(this._refitOnScrollRAF&&window.cancelAnimationFrame(this._refitOnScrollRAF),this._refitOnScrollRAF=window.requestAnimationFrame(this.refit.bind(this))):this._restoreScrollPosition()},_saveScrollPosition:function(){document.scrollingElement?(this._scrollTop=document.scrollingElement.scrollTop,this._scrollLeft=document.scrollingElement.scrollLeft):(this._scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this._scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},_restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this._scrollTop,document.scrollingElement.scrollLeft=this._scrollLeft):(document.documentElement.scrollTop=this._scrollTop,document.documentElement.scrollLeft=this._scrollLeft,document.body.scrollTop=this._scrollTop,document.body.scrollLeft=this._scrollLeft)},_updateAnimationConfig:function(){for(var o=this.containedElement,t=[].concat(this.openAnimationConfig||[]).concat(this.closeAnimationConfig||[]),n=0;n<t.length;n++)t[n].node=o;this.animationConfig={open:this.openAnimationConfig,close:this.closeAnimationConfig}},_updateOverlayPosition:function(){this.isAttached&&this.notifyResize()},_applyFocus:function(){var o=this.focusTarget||this.containedElement;o&&this.opened&&!this.noAutoFocus?o.focus():Polymer.IronOverlayBehaviorImpl._applyFocus.apply(this,arguments)}})}()</script></dom-module><script>Polymer({is:"fade-in-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(i){var e=i.node;return this._effect=new KeyframeEffect(e,[{opacity:"0"},{opacity:"1"}],this.timingFromConfig(i)),this._effect}})</script><script>Polymer({is:"fade-out-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"0"}],this.timingFromConfig(e)),this._effect}})</script><script>Polymer({is:"paper-menu-grow-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;return this._effect=new KeyframeEffect(i,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-grow-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;t.top;return this.setPrefixedProperty(i,"transformOrigin","0 0"),this._effect=new KeyframeEffect(i,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}})</script><dom-module id="paper-menu-button" assetpath="../bower_components/paper-menu-button/"><template><style>:host{display:inline-block;position:relative;padding:8px;outline:0;@apply(--paper-menu-button)}:host([disabled]){cursor:auto;color:var(--disabled-text-color);@apply(--paper-menu-button-disabled)}iron-dropdown{@apply(--paper-menu-button-dropdown)}.dropdown-content{@apply(--shadow-elevation-2dp);position:relative;border-radius:2px;background-color:var(--paper-menu-button-dropdown-background,--primary-background-color);@apply(--paper-menu-button-content)}:host([vertical-align=top]) .dropdown-content{margin-bottom:20px;margin-top:-10px;top:10px}:host([vertical-align=bottom]) .dropdown-content{bottom:10px;margin-bottom:-10px;margin-top:20px}#trigger{cursor:pointer}</style><div id="trigger" on-tap="toggle"><content select=".dropdown-trigger"></content></div><iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"><div class="dropdown-content"><content id="content" select=".dropdown-content"></content></div></iron-dropdown></template><script>!function(){"use strict";var e={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},n=Polymer({is:"paper-menu-button",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronControlState],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:e.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},toggle:function(){this.opened?this.close():this.open()},open:function(){this.disabled||this.$.dropdown.open()},close:function(){this.$.dropdown.close()},_onIronSelect:function(e){this.ignoreSelect||this.close()},_onIronActivate:function(e){this.closeOnActivate&&this.close()},_openedChanged:function(e,n){e?(this._dropdownContent=this.contentElement,this.fire("paper-dropdown-open")):null!=n&&this.fire("paper-dropdown-close")},_disabledChanged:function(e){Polymer.IronControlState._disabledChanged.apply(this,arguments),e&&this.opened&&this.close()},__onIronOverlayCanceled:function(e){var n=e.detail,t=(Polymer.dom(n).rootTarget,this.$.trigger),o=Polymer.dom(n).path;o.indexOf(t)>-1&&e.preventDefault()}});Object.keys(e).forEach(function(t){n[t]=e[t]}),Polymer.PaperMenuButton=n}()</script></dom-module><iron-iconset-svg name="paper-dropdown-menu" size="24"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-dropdown-menu-shared-styles" assetpath="../bower_components/paper-dropdown-menu/"><template><style>:host{display:inline-block;position:relative;text-align:left;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--paper-input-container-input:{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;cursor:pointer};@apply(--paper-dropdown-menu)}:host([disabled]){@apply(--paper-dropdown-menu-disabled)}:host([noink]) paper-ripple{display:none}:host([no-label-float]) paper-ripple{top:8px}paper-ripple{top:12px;left:0;bottom:8px;right:0;@apply(--paper-dropdown-menu-ripple)}paper-menu-button{display:block;padding:0;@apply(--paper-dropdown-menu-button)}paper-input{@apply(--paper-dropdown-menu-input)}iron-icon{color:var(--disabled-text-color);@apply(--paper-dropdown-menu-icon)}</style></template></dom-module><dom-module id="paper-dropdown-menu" assetpath="../bower_components/paper-dropdown-menu/"><template><style include="paper-dropdown-menu-shared-styles"></style><span role="button"></span><paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate="" allow-outside-scroll="[[allowOutsideScroll]]"><div class="dropdown-trigger"><paper-ripple></paper-ripple><paper-input type="text" invalid="[[invalid]]" readonly="" disabled="[[disabled]]" value="[[selectedItemLabel]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"><iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix=""></iron-icon></paper-input></div><content id="content" select=".dropdown-content"></content></paper-menu-button></template><script>!function(){"use strict";Polymer({is:"paper-dropdown-menu",behaviors:[Polymer.IronButtonState,Polymer.IronControlState,Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0,readOnly:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},dynamicAlign:{type:Boolean}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var e=this.contentElement;e&&e.selectedItem&&this._setSelectedItem(e.selectedItem)},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},open:function(){this.$.menuButton.open()},close:function(){this.$.menuButton.close()},_onIronSelect:function(e){this._setSelectedItem(e.detail.item)},_onIronDeselect:function(e){this._setSelectedItem(null)},_onTap:function(e){Polymer.Gestures.findOriginalTarget(e)===this&&this.open()},_selectedItemChanged:function(e){var t="";t=e?e.label||e.getAttribute("label")||e.textContent.trim():"",this._setValue(t),this._setSelectedItemLabel(t)},_computeMenuVerticalOffset:function(e){return e?-4:8},_getValidity:function(e){return this.disabled||!this.required||this.required&&!!this.value},_openedChanged:function(){var e=this.opened?"true":"false",t=this.contentElement;t&&t.setAttribute("aria-expanded",e)}})}()</script></dom-module><dom-module id="paper-menu-shared-styles" assetpath="../bower_components/paper-menu/"><template><style>.selectable-content>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-item)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-color,--disabled-text-color)}.selectable-content>::content>:focus{position:relative;outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus:after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-opacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}.selectable-content>::content>[colored]:focus:after{opacity:.26}</style></template></dom-module><dom-module id="paper-menu" assetpath="../bower_components/paper-menu/"><template><style include="paper-menu-shared-styles"></style><style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-color,--primary-background-color);color:var(--paper-menu-color,--primary-text-color);@apply(--paper-menu)}</style><div class="selectable-content"><content></content></div></template><script>!function(){Polymer({is:"paper-menu",behaviors:[Polymer.IronMenuBehavior]})}()</script></dom-module><script>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"}},Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperItemBehaviorImpl]</script><dom-module id="paper-item-shared-styles" assetpath="../bower_components/paper-item/"><template><style>.paper-item,:host{display:block;position:relative;min-height:var(--paper-item-min-height,48px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline:0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden]){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-weight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper-item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabled-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){position:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,:host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opacity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused-before)}</style></template></dom-module><dom-module id="paper-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item)}</style><content></content></template><script>Polymer({is:"paper-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="state-card-input_select" assetpath="state-summary/"><template><style>:host{display:block}state-badge{float:left;margin-top:10px}paper-dropdown-menu{display:block;margin-left:53px}</style><state-badge state-obj="[[stateObj]]"></state-badge><paper-dropdown-menu on-tap="stopPropagation" selected-item-label="{{selectedOption}}" label="[[stateObj.entityDisplay]]"><paper-menu class="dropdown-content" selected="[[computeSelected(stateObj)]]"><template is="dom-repeat" items="[[stateObj.attributes.options]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></template></dom-module><script>Polymer({is:"state-card-input_select",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object},selectedOption:{type:String,observer:"selectedOptionChanged"}},computeSelected:function(t){return t.attributes.options.indexOf(t.state)},selectedOptionChanged:function(t){""!==t&&t!==this.stateObj.state&&this.hass.serviceActions.callService("input_select","select_option",{option:t,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><script>Polymer.IronRangeBehavior={properties:{value:{type:Number,value:0,notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0},max:{type:Number,value:100,notify:!0},step:{type:Number,value:1,notify:!0},ratio:{type:Number,value:0,readOnly:!0,notify:!0}},observers:["_update(value, min, max, step)"],_calcRatio:function(t){return(this._clampValue(t)-this.min)/(this.max-this.min)},_clampValue:function(t){return Math.min(this.max,Math.max(this.min,this._calcStep(t)))},_calcStep:function(t){if(t=parseFloat(t),!this.step)return t;var e=Math.round((t-this.min)/this.step);return this.step<1?e/(1/this.step)+this.min:e*this.step+this.min},_validateValue:function(){var t=this._clampValue(this.value);return this.value=this.oldValue=isNaN(t)?this.oldValue:t,this.value!==t},_update:function(){this._validateValue(),this._setRatio(100*this._calcRatio(this.value))}}</script><dom-module id="paper-progress" assetpath="../bower_components/paper-progress/"><template><style>:host{display:block;width:200px;position:relative;overflow:hidden}:host([hidden]){display:none!important}#progressContainer{@apply(--paper-progress-container);position:relative}#progressContainer,.indeterminate::after{height:var(--paper-progress-height,4px)}#primaryProgress,#secondaryProgress,.indeterminate::after{@apply(--layout-fit)}#progressContainer,.indeterminate::after{background:var(--paper-progress-container-color,--google-grey-300)}:host(.transiting) #primaryProgress,:host(.transiting) #secondaryProgress{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:var(--paper-progress-transition-duration,.08s);transition-duration:var(--paper-progress-transition-duration,.08s);-webkit-transition-timing-function:var(--paper-progress-transition-timing-function,ease);transition-timing-function:var(--paper-progress-transition-timing-function,ease);-webkit-transition-delay:var(--paper-progress-transition-delay,0s);transition-delay:var(--paper-progress-transition-delay,0s)}#primaryProgress,#secondaryProgress{@apply(--layout-fit);-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0);will-change:transform}#primaryProgress{background:var(--paper-progress-active-color,--google-green-500)}#secondaryProgress{background:var(--paper-progress-secondary-color,--google-green-100)}:host([disabled]) #primaryProgress{background:var(--paper-progress-disabled-active-color,--google-grey-500)}:host([disabled]) #secondaryProgress{background:var(--paper-progress-disabled-secondary-color,--google-grey-300)}:host(:not([disabled])) #primaryProgress.indeterminate{-webkit-transform-origin:right center;transform-origin:right center;-webkit-animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}:host(:not([disabled])) #primaryProgress.indeterminate::after{content:"";-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}@-webkit-keyframes indeterminate-bar{0%{-webkit-transform:scaleX(1) translateX(-100%)}50%{-webkit-transform:scaleX(1) translateX(0)}75%{-webkit-transform:scaleX(1) translateX(0);-webkit-animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{-webkit-transform:scaleX(0) translateX(0)}}@-webkit-keyframes indeterminate-splitter{0%{-webkit-transform:scaleX(.75) translateX(-125%)}30%{-webkit-transform:scaleX(.75) translateX(-125%);-webkit-animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{-webkit-transform:scaleX(.75) translateX(125%)}100%{-webkit-transform:scaleX(.75) translateX(125%)}}@keyframes indeterminate-bar{0%{transform:scaleX(1) translateX(-100%)}50%{transform:scaleX(1) translateX(0)}75%{transform:scaleX(1) translateX(0);animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{transform:scaleX(0) translateX(0)}}@keyframes indeterminate-splitter{0%{transform:scaleX(.75) translateX(-125%)}30%{transform:scaleX(.75) translateX(-125%);animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{transform:scaleX(.75) translateX(125%)}100%{transform:scaleX(.75) translateX(125%)}}</style><div id="progressContainer"><div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div><div id="primaryProgress"></div></div></template></dom-module><script>Polymer({is:"paper-progress",behaviors:[Polymer.IronRangeBehavior],properties:{secondaryProgress:{type:Number,value:0},secondaryRatio:{type:Number,value:0,readOnly:!0},indeterminate:{type:Boolean,value:!1,observer:"_toggleIndeterminate"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"_disabledChanged"}},observers:["_progressChanged(secondaryProgress, value, min, max)"],hostAttributes:{role:"progressbar"},_toggleIndeterminate:function(e){this.toggleClass("indeterminate",e,this.$.primaryProgress)},_transformProgress:function(e,r){var s="scaleX("+r/100+")";e.style.transform=e.style.webkitTransform=s},_mainRatioChanged:function(e){this._transformProgress(this.$.primaryProgress,e)},_progressChanged:function(e,r,s,t){e=this._clampValue(e),r=this._clampValue(r);var a=100*this._calcRatio(e),i=100*this._calcRatio(r);this._setSecondaryRatio(a),this._transformProgress(this.$.secondaryProgress,a),this._transformProgress(this.$.primaryProgress,i),this.secondaryProgress=e,this.setAttribute("aria-valuenow",r),this.setAttribute("aria-valuemin",s),this.setAttribute("aria-valuemax",t)},_disabledChanged:function(e){this.setAttribute("aria-disabled",e?"true":"false")},_hideSecondaryProgress:function(e){return 0===e}})</script><dom-module id="paper-slider" assetpath="../bower_components/paper-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-slider-height,2px));margin-left:calc(15px + var(--paper-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-slider-height,2px)/ 2);height:var(--paper-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-slider-height,2px)/ 2);width:calc(30px + var(--paper-slider-height,2px));height:calc(30px + var(--paper-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-slider-knob-color,--google-blue-700);border:2px solid var(--paper-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="state-card-input_slider" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-slider{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-slider min="[[min]]" max="[[max]]" value="{{value}}" step="[[step]]" pin="" on-change="selectedValueChanged" on-tap="stopPropagation"></paper-slider></div></template></dom-module><script>Polymer({is:"state-card-input_slider",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object,observer:"stateObjectChanged"},min:{type:Number},max:{type:Number},step:{type:Number},value:{type:Number}},stateObjectChanged:function(t){this.value=Number(t.state),this.min=Number(t.attributes.min),this.max=Number(t.attributes.max),this.step=Number(t.attributes.step)},selectedValueChanged:function(){this.value!==Number(this.stateObj.state)&&this.hass.serviceActions.callService("input_slider","select_value",{value:this.value,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><dom-module id="state-card-media_player" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);margin-left:16px;text-align:right}.main-text{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);text-transform:capitalize}.main-text[take-height]{line-height:40px}.secondary-text{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="main-text" take-height$="[[!secondaryText]]">[[computePrimaryText(stateObj, isPlaying)]]</div><div class="secondary-text">[[secondaryText]]</div></div></div></template></dom-module><script>Polymer({PLAYING_STATES:["playing","paused"],is:"state-card-media_player",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"},secondaryText:{type:String,computed:"computeSecondaryText(stateObj)"}},computeIsPlaying:function(t){return this.PLAYING_STATES.indexOf(t.state)!==-1},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}})</script><dom-module id="state-card-scene" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button on-tap="activateScene">ACTIVATE</paper-button></div></template></dom-module><script>Polymer({is:"state-card-scene",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},activateScene:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-script" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><template is="dom-if" if="[[stateObj.attributes.can_cancel]]"><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></template><template is="dom-if" if="[[!stateObj.attributes.can_cancel]]"><paper-button on-tap="fireScript">ACTIVATE</paper-button></template></div></template></dom-module><script>Polymer({is:"state-card-script",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},fireScript:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-toggle" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></div></template></dom-module><script>Polymer({is:"state-card-toggle",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-weblink" assetpath="state-summary/"><template><style>:host{display:block}.name{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);color:var(--primary-color);text-transform:capitalize;line-height:40px;margin-left:16px}</style><state-badge state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-badge><a href$="[[stateObj.state]]" target="_blank" class="name" id="link">[[stateObj.entityDisplay]]</a></template></dom-module><script>Polymer({is:"state-card-weblink",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation(),t.target!==this.$.link&&window.open(this.stateObj.state,"_blank")}})</script><script>Polymer({is:"state-card-content",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},observers:["inputChanged(hass, inDialog, stateObj)"],inputChanged:function(t,e,s){s&&window.hassUtil.dynamicContentUpdater(this,"STATE-CARD-"+window.hassUtil.stateCardType(this.hass,s).toUpperCase(),{hass:t,stateObj:s,inDialog:e})}})</script><dom-module id="ha-entities-card" assetpath="cards/"><template><style is="custom-style" include="iron-flex"></style><style>.states{padding-bottom:16px}.state{padding:4px 16px;cursor:pointer}.header{@apply(--paper-font-headline);line-height:40px;color:var(--primary-text-color);padding:20px 16px 12px}.header .name{@apply(--paper-font-common-nowrap)}ha-entity-toggle{margin-left:16px}.header-more-info{cursor:pointer}</style><ha-card><div class$="[[computeTitleClass(groupEntity)]]" on-tap="entityTapped"><div class="flex name">[[computeTitle(states, groupEntity)]]</div><template is="dom-if" if="[[showGroupToggle(groupEntity, states)]]"><ha-entity-toggle hass="[[hass]]" state-obj="[[groupEntity]]"></ha-entity-toggle></template></div><div class="states"><template is="dom-repeat" items="[[states]]"><div class="state" on-tap="entityTapped"><state-card-content hass="[[hass]]" class="state-card" state-obj="[[item]]"></state-card-content></div></template></div></ha-card></template></dom-module><script>Polymer({is:"ha-entities-card",properties:{hass:{type:Object},states:{type:Array},groupEntity:{type:Object}},computeTitle:function(t,e){return e?e.entityDisplay:t[0].domain.replace(/_/g," ")},computeTitleClass:function(t){var e="header horizontal layout center ";return t&&(e+="header-more-info"),e},entityTapped:function(t){var e;t.target.classList.contains("paper-toggle-button")||t.target.classList.contains("paper-icon-button")||!t.model&&!this.groupEntity||(t.stopPropagation(),e=t.model?t.model.item.entityId:this.groupEntity.entityId,this.async(function(){this.hass.moreInfoActions.selectEntity(e)}.bind(this),1))},showGroupToggle:function(t,e){var n;return!(!t||!e||"hidden"===t.attributes.control||"on"!==t.state&&"off"!==t.state)&&(n=e.reduce(function(t,e){return t+window.hassUtil.canToggle(this.hass,e.entityId)},0),n>1)}})</script><dom-module id="ha-introduction-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}a{color:var(--dark-primary-color)}ul{margin:8px;padding-left:16px}li{margin-bottom:8px}.content{padding:0 16px 16px}.install{display:block;line-height:1.5em;margin-top:8px;margin-bottom:16px}</style><ha-card header="Welcome Home!"><div class="content"><template is="dom-if" if="[[hass.demo]]">To install Home Assistant, run:<br><code class="install">pip3 install homeassistant<br>hass --open-ui</code></template>Here are some resources to get started.<ul><template is="dom-if" if="[[hass.demo]]"><li><a href="https://home-assistant.io/getting-started/">Home Assistant website</a></li><li><a href="https://home-assistant.io/getting-started/">Installation instructions</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting/">Troubleshooting your installation</a></li></template><li><a href="https://home-assistant.io/getting-started/configuration/" target="_blank">Configuring Home Assistant</a></li><li><a href="https://home-assistant.io/components/" target="_blank">Available components</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting-configuration/" target="_blank">Troubleshooting your configuration</a></li><li><a href="https://home-assistant.io/help/" target="_blank">Ask community for help</a></li></ul><template is="dom-if" if="[[showHideInstruction]]">To remove this card, edit your config in <code>configuration.yaml</code> and disable the <code>introduction</code> component.</template></div></ha-card></template></dom-module><script>Polymer({is:"ha-introduction-card",properties:{hass:{type:Object},showHideInstruction:{type:Boolean,value:!0}}})</script><dom-module id="ha-media_player-card" assetpath="cards/"><template><style include="paper-material iron-flex iron-flex-alignment iron-positioning">:host{display:block;position:relative;font-size:0;border-radius:2px;overflow:hidden}.banner{position:relative;background-color:#fff;border-top-left-radius:2px;border-top-right-radius:2px}.banner:before{display:block;content:"";width:100%;padding-top:56%;transition:padding-top .8s}.banner.no-cover{background-position:center center;background-image:url(/static/images/card_media_player_bg.png);background-repeat:no-repeat;background-color:var(--primary-color)}.banner.content-type-music:before{padding-top:100%}.banner.no-cover:before{padding-top:88px}.banner>.cover{position:absolute;top:0;left:0;right:0;bottom:0;border-top-left-radius:2px;border-top-right-radius:2px;background-position:center center;background-size:cover;transition:opacity .8s;opacity:1}.banner.is-off>.cover{opacity:0}.banner>.caption{@apply(--paper-font-caption);position:absolute;left:0;right:0;bottom:0;background-color:rgba(0,0,0,var(--dark-secondary-opacity));padding:8px 16px;font-size:14px;font-weight:500;color:#fff;transition:background-color .5s}.banner.is-off>.caption{background-color:initial}.banner>.caption .title{@apply(--paper-font-common-nowrap);font-size:1.2em;margin:8px 0 4px}.progress{width:100%;--paper-progress-active-color:var(--accent-color);--paper-progress-container-color:#FFF}.controls{position:relative;@apply(--paper-font-body1);padding:8px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:#fff}.controls paper-icon-button{width:44px;height:44px}paper-icon-button{opacity:var(--dark-primary-opacity)}paper-icon-button[disabled]{opacity:var(--dark-disabled-opacity)}paper-icon-button.primary{width:56px!important;height:56px!important;background-color:var(--primary-color);color:#fff;border-radius:50%;padding:8px;transition:background-color .5s}paper-icon-button.primary[disabled]{background-color:rgba(0,0,0,var(--dark-disabled-opacity))}[invisible]{visibility:hidden!important}</style><div class$="[[computeBannerClasses(playerObj)]]"><div class="cover" id="cover"></div><div class="caption">[[stateObj.entityDisplay]]<div class="title">[[playerObj.primaryText]]</div>[[playerObj.secondaryText]]<br></div></div><paper-progress max="[[stateObj.attributes.media_duration]]" value="[[playbackPosition]]" hidden$="[[computeHideProgress(playerObj)]]" class="progress"></paper-progress><div class="controls layout horizontal justified"><paper-icon-button icon="mdi:power" on-tap="handleTogglePower" invisible$="[[computeHidePowerButton(playerObj)]]" class="self-center secondary"></paper-icon-button><div><paper-icon-button icon="mdi:skip-previous" invisible$="[[!playerObj.supportsPreviousTrack]]" disabled="[[playerObj.isOff]]" on-tap="handlePrevious"></paper-icon-button><paper-icon-button class="primary" icon="[[computePlaybackControlIcon(playerObj)]]" invisible$="[[!computePlaybackControlIcon(playerObj)]]" disabled="[[playerObj.isOff]]" on-tap="handlePlaybackControl"></paper-icon-button><paper-icon-button icon="mdi:skip-next" invisible$="[[!playerObj.supportsNextTrack]]" disabled="[[playerObj.isOff]]" on-tap="handleNext"></paper-icon-button></div><paper-icon-button icon="mdi:dots-vertical" on-tap="handleOpenMoreInfo" class="self-center secondary"></paper-icon-button></div></template></dom-module><script>Polymer({is:"ha-media_player-card",properties:{hass:{type:Object},stateObj:{type:Object},playerObj:{type:Object,computed:"computePlayerObj(stateObj)",observer:"playerObjChanged"},playbackControlIcon:{type:String,computed:"computePlaybackControlIcon(playerObj)"},playbackPosition:{type:Number},elevation:{type:Number,value:1,reflectToAttribute:!0}},created:function(){this.updatePlaybackPosition=this.updatePlaybackPosition.bind(this)},playerObjChanged:function(t){var e=t.stateObj.attributes.entity_picture;e?this.$.cover.style.backgroundImage="url("+e+")":this.$.cover.style.backgroundImage="",t.isPlaying?(this._positionTracking||(this._positionTracking=setInterval(this.updatePlaybackPosition,1e3)),this.updatePlaybackPosition()):this._positionTracking&&(clearInterval(this._positionTracking),this._positionTracking=null,this.playbackPosition=0)},updatePlaybackPosition:function(){this.playbackPosition=this.playerObj.currentProgress},computeBannerClasses:function(t){var e="banner";return t.isOff||t.isIdle?e+=" is-off no-cover":t.stateObj.attributes.entity_picture?"music"===t.stateObj.attributes.media_content_type&&(e+=" content-type-music"):e+=" no-cover",e},computeHideProgress:function(t){return!t.showProgress},computeHidePowerButton:function(t){return t.isOff?!t.supportsTurnOn:!t.supportsTurnOff},computePlayerObj:function(t){return t.domainModel(this.hass)},computePlaybackControlIcon:function(t){return t.isPlaying?t.supportsPause?"mdi:pause":"mdi:stop":t.isPaused||t.isOff||t.isIdle?t.supportsPlay?"mdi:play":null:""},handleNext:function(t){t.stopPropagation(),this.playerObj.nextTrack()},handleOpenMoreInfo:function(t){t.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)},1)},handlePlaybackControl:function(t){t.stopPropagation(),this.playerObj.mediaPlayPause()},handlePrevious:function(t){t.stopPropagation(),this.playerObj.previousTrack()},handleTogglePower:function(t){t.stopPropagation(),this.playerObj.togglePower()}})</script><dom-module id="ha-persistent_notification-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}.content{padding:0 16px 16px}paper-button{margin:8px;font-weight:500}</style><ha-card header="[[computeTitle(stateObj)]]"><div id="pnContent" class="content"></div><paper-button on-tap="dismissTap">DISMISS</paper-button></ha-card></template></dom-module><script>Polymer({is:"ha-persistent_notification-card",properties:{hass:{type:Object},stateObj:{type:Object},scriptLoaded:{type:Boolean,value:!1}},observers:["computeContent(stateObj, scriptLoaded)"],computeTitle:function(t){return t.attributes.title||t.entityDisplay},loadScript:function(){var t=function(){this.scriptLoaded=!0}.bind(this),e=function(){console.error("Micromarkdown was not loaded.")};this.importHref("/static/micromarkdown-js.html",t,e)},computeContent:function(t,e){var i="",n="";e&&(i=this.$.pnContent,n=window.micromarkdown.parse(t.state),i.innerHTML=n)},ready:function(){this.loadScript()},dismissTap:function(t){t.preventDefault(),this.hass.entityActions.delete(this.stateObj)}})</script><script>Polymer({is:"ha-card-chooser",properties:{cardData:{type:Object,observer:"cardDataChanged"}},cardDataChanged:function(a){a&&window.hassUtil.dynamicContentUpdater(this,"HA-"+a.cardType.toUpperCase()+"-CARD",a)}})</script><dom-module id="ha-cards" assetpath="components/"><template><style is="custom-style" include="iron-flex iron-flex-factors"></style><style>:host{display:block;padding-top:8px;padding-right:8px}.badges{font-size:85%;text-align:center}.column{max-width:500px;overflow-x:hidden}.zone-card{margin-left:8px;margin-bottom:8px}@media (max-width:500px){:host{padding-right:0}.zone-card{margin-left:0}}@media (max-width:599px){.column{max-width:600px}}</style><div class="main"><template is="dom-if" if="[[cards.badges]]"><div class="badges"><template is="dom-if" if="[[cards.demo]]"><ha-demo-badge></ha-demo-badge></template><ha-badges-card states="[[cards.badges]]" hass="[[hass]]"></ha-badges-card></div></template><div class="horizontal layout center-justified"><template is="dom-repeat" items="[[cards.columns]]" as="column"><div class="column flex-1"><template is="dom-repeat" items="[[column]]" as="card"><div class="zone-card"><ha-card-chooser card-data="[[card]]" hass="[[hass]]"></ha-card-chooser></div></template></div></template></div></div></template></dom-module><script>!function(){"use strict";function t(t){return t in o?o[t]:30}function e(t){return"group"===t.domain?t.attributes.order:t.entityDisplay.toLowerCase()}var n={camera:4,media_player:3,persistent_notification:0},o={configurator:-20,persistent_notification:-15,group:-10,a:-1,updater:0,sun:1,device_tracker:2,alarm_control_panel:3,sensor:5,binary_sensor:6};Polymer({is:"ha-cards",properties:{hass:{type:Object},showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},panelVisible:{type:Boolean},viewVisible:{type:Boolean},cards:{type:Object}},observers:["updateCards(columns, states, showIntroduction, panelVisible, viewVisible)"],updateCards:function(t,e,n,o,r){o&&r&&this.debounce("updateCards",function(){this.panelVisible&&this.viewVisible&&(this.cards=this.computeCards(t,e,n))}.bind(this))},computeCards:function(o,r,s){function i(t){return t.filter(function(t){return!(t.entityId in h)})}function a(t){var e=0;for(p=e;p<y.length;p++){if(y[p]<5){e=p;break}y[p]<y[e]&&(e=p)}return y[e]+=t,e}function u(t,e,o){var r,s,i,u;0!==e.length&&(r=[],s=[],i=0,e.forEach(function(t){t.domain in n?(r.push(t),i+=n[t.domain]):(s.push(t),i++)}),i+=s.length>1,u=a(i),s.length>0&&f.columns[u].push({hass:d,cardType:"entities",states:s,groupEntity:o||!1}),r.forEach(function(t){f.columns[u].push({hass:d,cardType:t.domain,stateObj:t})}))}var c,p,d=this.hass,l=r.groupBy(function(t){return t.domain}),h={},f={demo:!1,badges:[],columns:[]},y=[];for(p=0;p<o;p++)f.columns.push([]),y.push(0);return s&&f.columns[a(5)].push({hass:d,cardType:"introduction",showHideInstruction:r.size>0&&!d.demo}),c=this.hass.util.expandGroup,l.keySeq().sortBy(function(e){return t(e)}).forEach(function(n){var o;return"a"===n?void(f.demo=!0):(o=t(n),void(o>=0&&o<10?f.badges.push.apply(f.badges,i(l.get(n)).sortBy(e).toArray()):"group"===n?l.get(n).sortBy(e).forEach(function(t){var e=c(t,r);e.forEach(function(t){h[t.entityId]=!0}),u(t.entityId,e.toArray(),t)}):u(n,i(l.get(n)).sortBy(e).toArray())))}),f.columns=f.columns.filter(function(t){return t.length>0}),f}})}()</script><dom-module id="partial-cards" assetpath="layouts/"><template><style include="iron-flex iron-positioning ha-style">:host{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-header-layout{background-color:#E5E5E5}paper-tabs{margin-left:12px;--paper-tabs-selection-bar-color:#FFF;text-transform:uppercase}</style><app-header-layout has-scrolling-region="" id="layout"><app-header effects="waterfall" condenses="" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">[[computeTitle(views, locationName)]]</div><paper-icon-button icon="mdi:microphone" hidden$="[[!canListen]]" on-tap="handleListenClick"></paper-icon-button></app-toolbar><div sticky="" hidden$="[[!views.length]]"><paper-tabs scrollable="" selected="[[currentView]]" attr-for-selected="data-entity" on-iron-select="handleViewSelected"><paper-tab data-entity="" on-tap="scrollToTop">[[locationName]]</paper-tab><template is="dom-repeat" items="[[views]]"><paper-tab data-entity$="[[item.entityId]]" on-tap="scrollToTop"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></paper-tab></template></paper-tabs></div></app-header><iron-pages attr-for-selected="data-view" selected="[[currentView]]" selected-attribute="view-visible"><ha-cards data-view="" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards><template is="dom-repeat" items="[[views]]"><ha-cards data-view$="[[item.entityId]]" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards></template></iron-pages></app-header-layout></template></dom-module><script>Polymer({is:"partial-cards",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1,observer:"handleWindowChange"},panelVisible:{type:Boolean,value:!1},_columns:{type:Number,value:1},canListen:{type:Boolean,bindNuclear:function(e){return[e.voiceGetters.isVoiceSupported,e.configGetters.isComponentLoaded("conversation"),function(e,t){return e&&t}]}},introductionLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("introduction")}},locationName:{type:String,bindNuclear:function(e){return e.configGetters.locationName}},currentView:{type:String,bindNuclear:function(e){return[e.viewGetters.currentView,function(e){return e||""}]}},views:{type:Array,bindNuclear:function(e){return[e.viewGetters.views,function(e){return e.valueSeq().sortBy(function(e){return e.attributes.order}).toArray()}]}},states:{type:Object,bindNuclear:function(e){return e.viewGetters.currentViewEntities}}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this.mqls=[300,600,900,1200].map(function(e){var t=window.matchMedia("(min-width: "+e+"px)");return t.addListener(this.handleWindowChange),t}.bind(this))},detached:function(){this.mqls.forEach(function(e){e.removeListener(this.handleWindowChange)})},handleWindowChange:function(){var e=this.mqls.reduce(function(e,t){return e+t.matches},0);this._columns=Math.max(1,e-(!this.narrow&&this.showMenu))},scrollToTop:function(){var e=0,t=this.$.layout.header.scrollTarget,n=function(e,t,n,i){return e/=i,-n*e*(e-2)+t},i=Math.random(),o=200,r=Date.now(),a=t.scrollTop,s=e-a;this._currentAnimationId=i,function c(){var u=Date.now(),l=u-r;l>o?t.scrollTop=e:this._currentAnimationId===i&&(t.scrollTop=n(l,a,s,o),requestAnimationFrame(c.bind(this)))}.call(this)},handleListenClick:function(){this.hass.voiceActions.listen()},handleViewSelected:function(e){var t=e.detail.item.getAttribute("data-entity")||null,n=this.currentView||null;t!==n&&this.async(function(){this.hass.viewActions.selectView(t)}.bind(this),0)},computeTitle:function(e,t){return e.length>0?"Home Assistant":t},computeShowIntroduction:function(e,t,n){return""===e&&(t||0===n.size)}})</script><style is="custom-style">html{font-size:14px;--dark-primary-color:#0288D1;--default-primary-color:#03A9F4;--primary-color:#03A9F4;--light-primary-color:#B3E5FC;--text-primary-color:#ffffff;--accent-color:#FF9800;--primary-background-color:#ffffff;--primary-text-color:#212121;--secondary-text-color:#727272;--disabled-text-color:#bdbdbd;--divider-color:#B6B6B6;--paper-toggle-button-checked-ink-color:#039be5;--paper-toggle-button-checked-button-color:#039be5;--paper-toggle-button-checked-bar-color:#039be5;--paper-slider-knob-color:var(--primary-color);--paper-slider-knob-start-color:var(--primary-color);--paper-slider-pin-color:var(--primary-color);--paper-slider-active-color:var(--primary-color);--paper-slider-secondary-color:var(--light-primary-color);--paper-slider-container-color:var(--divider-color);--google-red-500:#db4437;--google-blue-500:#4285f4;--google-green-500:#0f9d58;--google-yellow-500:#f4b400;--paper-grey-50:#fafafa;--paper-green-400:#66bb6a;--paper-blue-400:#42a5f5;--paper-orange-400:#ffa726;--dark-divider-opacity:0.12;--dark-disabled-opacity:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider-opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light-primary-opacity:1.0}</style><dom-module id="ha-style" assetpath="resources/"><template><style>:host{@apply(--paper-font-body1)}app-header,app-toolbar{background-color:var(--primary-color);font-weight:400;color:#fff}app-toolbar ha-menu-button+[main-title]{margin-left:24px}h1{@apply(--paper-font-title)}</style></template></dom-module><dom-module id="partial-panel-resolver" assetpath="layouts/"><template><style include="iron-flex ha-style">[hidden]{display:none!important}.placeholder{height:100%}.layout{height:calc(100% - 64px)}</style><div hidden$="[[resolved]]" class="placeholder"><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button></app-toolbar><div class="layout horizontal center-center"><template is="dom-if" if="[[!errorLoading]]"><paper-spinner active=""></paper-spinner></template><template is="dom-if" if="[[errorLoading]]">Error loading panel :(</template></div></div><span id="panel" hidden$="[[!resolved]]"></span></template></dom-module><script>Polymer({is:"partial-panel-resolver",behaviors:[window.hassBehavior],properties:{hass:{type:Object,observer:"updateAttributes"},narrow:{type:Boolean,value:!1,observer:"updateAttributes"},showMenu:{type:Boolean,value:!1,observer:"updateAttributes"},resolved:{type:Boolean,value:!1},errorLoading:{type:Boolean,value:!1},panel:{type:Object,bindNuclear:function(e){return e.navigationGetters.activePanel},observer:"panelChanged"}},panelChanged:function(e){return e?(this.resolved=!1,this.errorLoading=!1,void this.importHref(e.get("url"),function(){window.hassUtil.dynamicContentUpdater(this.$.panel,"ha-panel-"+e.get("component_name"),{hass:this.hass,narrow:this.narrow,showMenu:this.showMenu,panel:e.toJS()}),this.resolved=!0}.bind(this),function(){this.errorLoading=!0}.bind(this),!0)):void(this.$.panel.lastChild&&this.$.panel.removeChild(this.$.panel.lastChild))},updateAttributes:function(){var e=Polymer.dom(this.$.panel).lastChild;e&&(e.hass=this.hass,e.narrow=this.narrow,e.showMenu=this.showMenu)}})</script><dom-module id="paper-toast" assetpath="../bower_components/paper-toast/"><template><style>:host{display:block;position:fixed;background-color:var(--paper-toast-background-color,#323232);color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding:16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px);@apply(--paper-font-common-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-width:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}</style><span id="label">{{text}}</span><content></content></template><script>!function(){var e=null;Polymer({is:"paper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Object,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,value:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,value:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0},noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionEnd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `opened` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.duration!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.requestAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:function(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._finishRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==this._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.opened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}),this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e===this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClosed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:function(e){this.positionTarget=e}})}()</script></dom-module><dom-module id="notification-manager" assetpath="managers/"><template><style>paper-toast{z-index:1}</style><paper-toast id="toast" text="{{text}}" no-cancel-on-outside-click="[[neg]]"></paper-toast><paper-toast id="connToast" duration="0" text="Connection lost. Reconnecting…" opened="[[!isStreaming]]"></paper-toast></template></dom-module><script>Polymer({is:"notification-manager",behaviors:[window.hassBehavior],properties:{hass:{type:Object},isStreaming:{type:Boolean,bindNuclear:function(t){return t.streamGetters.isStreamingEvents}},neg:{type:Boolean,value:!1},text:{type:String,bindNuclear:function(t){return t.notificationGetters.lastNotificationMessage},observer:"showNotification"},toastClass:{type:String,value:""}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this._mediaq=window.matchMedia("(max-width: 599px)"),this._mediaq.addListener(this.handleWindowChange)},attached:function(){this.handleWindowChange(this._mediaq)},detached:function(){this._mediaq.removeListener(this.handleWindowChange)},handleWindowChange:function(t){this.$.toast.classList.toggle("fit-bottom",t.matches),this.$.connToast.classList.toggle("fit-bottom",t.matches)},showNotification:function(t){t&&this.$.toast.show()}})</script><script>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.closingReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialog-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirmed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBehaviorImpl]</script><dom-module id="paper-dialog-shared-styles" assetpath="../bower_components/paper-dialog-behavior/"><template><style>:host{display:block;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-background-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--paper-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::content>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:host>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bottom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;padding:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-color);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style></template></dom-module><dom-module id="paper-dialog" assetpath="../bower_components/paper-dialog/"><template><style include="paper-dialog-shared-styles"></style><content></content></template></dom-module><script>!function(){Polymer({is:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRunnerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}})}()</script><dom-module id="paper-dialog-scrollable" assetpath="../bower_components/paper-dialog-scrollable/"><template><style>:host{display:block;@apply(--layout-relative)}:host(.is-scrolled:not(:first-child))::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--divider-color)}:host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--divider-color)}.scrollable{padding:0 24px;@apply(--layout-scroll);@apply(--paper-dialog-scrollable)}.fit{@apply(--layout-fit)}</style><div id="scrollable" class="scrollable"><content></content></div></template></dom-module><script>Polymer({is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},listeners:{"scrollable.scroll":"_scroll"},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget()},attached:function(){this.classList.add("no-padding"),this._ensureTarget(),requestAnimationFrame(this._scroll.bind(this))},_scroll:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight<this.scrollTarget.scrollHeight),this.toggleClass("scrolled-to-bottom",this.scrollTarget.scrollTop+this.scrollTarget.offsetHeight>=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||Polymer.dom(this).parentNode,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(Polymer.PaperDialogBehaviorImpl)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})</script><script>!function(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded:{type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,value:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary()},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.message),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(null),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i))},_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bind(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&&this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFromUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNotify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMacro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback%% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbackMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this),this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript:function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handleError.bind(this);var t=document.querySelector("script")||document.body;t.parentNode.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.script=null},handleError:function(r){this.error=new Error("Library failed to load"),this.notifyAll(),this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.slice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete window[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:function(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}}}()</script><script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent:String}})</script><script>Polymer({is:"google-legacy-loader",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://www.google.com/jsapi?callback=%%callback%%"},notifyEvent:{type:String,value:"api-load"}},get api(){return google}})</script><style>div.charts-tooltip{z-index:200!important}</style><script>Polymer({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){function t(t,e,n,i){var d=e.replace(/_/g," ");a.addRow([t,d,n,i])}var e,a,n,i,d,l=Polymer.dom(this),o=this.data;if(this.isAttached){for(;l.node.lastChild;)l.node.removeChild(l.node.lastChild);o&&0!==o.length&&(e=new window.google.visualization.Timeline(this),a=new window.google.visualization.DataTable,a.addColumn({type:"string",id:"Entity"}),a.addColumn({type:"string",id:"State"}),a.addColumn({type:"date",id:"Start"}),a.addColumn({type:"date",id:"End"}),n=new Date(o.reduce(function(t,e){return Math.min(t,e[0].lastChangedAsDate)},new Date)),i=new Date(n),i.setDate(i.getDate()+1),i>new Date&&(i=new Date),d=0,o.forEach(function(e){var a,n,l=null,o=null;0!==e.length&&(a=e[0].entityDisplay,e.forEach(function(e){null!==l&&e.state!==l?(n=e.lastChangedAsDate,t(a,l,o,n),l=e.state,o=n):null===l&&(l=e.state,o=e.lastChangedAsDate)}),t(a,l,o,i),d++)}),e.draw(a,{height:55+42*d,timeline:{showRowLabels:o.length>1},hAxis:{format:"H:mm"}}))}}})</script><script>!function(){"use strict";function t(t,e){var a,r=[];for(a=t;a<e;a++)r.push(a);return r}function e(t){var e=parseFloat(t);return!isNaN(e)&&isFinite(e)?e:null}Polymer({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"},chartEngine:{type:Object}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){var a,r,n,i,u,o=this.unit,s=this.data;this.isAttached&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(this)),0!==s.length&&(a={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",vAxes:{0:{title:o}},hAxis:{format:"H:mm"},chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}},this.isSingleDevice&&(a.legend.position="none",a.vAxes[0].title=null,a.chartArea.left=40,a.chartArea.height="80%",a.chartArea.top=5,a.enableInteractivity=!1),r=new Date(Math.min.apply(null,s.map(function(t){return t[0].lastChangedAsDate}))),n=new Date(r),n.setDate(n.getDate()+1),n>new Date&&(n=new Date),i=s.map(function(t){function a(t,e){r&&e&&c.push([t[0]].concat(r.slice(1).map(function(t,a){return e[a]?t:null}))),c.push(t),r=t}var r,i,u,o,s=t[t.length-1],l=s.domain,d=s.entityDisplay,c=[],h=new window.google.visualization.DataTable;return h.addColumn({type:"datetime",id:"Time"}),"thermostat"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):"climate"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):(h.addColumn("number",d),o="sensor"!==l&&[!0],t.forEach(function(t){var r=e(t.state);a([t.lastChangedAsDate,r],o)})),a([n].concat(r.slice(1)),!1),h.addRows(c),h}),u=1===i.length?i[0]:i.slice(1).reduce(function(e,a){return window.google.visualization.data.join(e,a,"full",[[0,0]],t(1,e.getNumberOfColumns()),t(1,a.getNumberOfColumns()))},i[0]),this.chartEngine.draw(u,a)))}})}()</script><dom-module id="state-history-charts" assetpath="components/"><template><style>:host{display:block}.loading-container{text-align:center;padding:8px}.loading{height:0;overflow:hidden}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><div hidden$="[[!isLoading]]" class="loading-container"><paper-spinner active="" alt="Updating history data"></paper-spinner></div><div class$="[[computeContentClasses(isLoading)]]"><template is="dom-if" if="[[computeIsEmpty(stateHistory)]]">No state history found.</template><state-history-chart-timeline data="[[groupedStateHistory.timeline]]" is-single-device="[[isSingleDevice]]"></state-history-chart-timeline><template is="dom-repeat" items="[[groupedStateHistory.line]]"><state-history-chart-line unit="[[item.unit]]" data="[[item.data]]" is-single-device="[[isSingleDevice]]"></state-history-chart-line></template></div></template></dom-module><script>Polymer({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){var i,o={},n=[];return t||!e?{line:[],timeline:[]}:(e.forEach(function(t){var e,i;t&&0!==t.size&&(e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=!!e&&e.attributes.unit_of_measurement,i?i in o?o[i].push(t.toArray()):o[i]=[t.toArray()]:n.push(t.toArray()))}),n=n.length>0&&n,i=Object.keys(o).map(function(t){return{unit:t,data:o[t]}}),{line:i,timeline:n})},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){this.apiLoaded=!0}.bind(this)})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size}})</script><dom-module id="more-info-automation" assetpath="more-infos/"><template><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px}</style><p>Last triggered:<ha-relative-time datetime="[[stateObj.attributes.last_triggered]]"></ha-relative-time></p><paper-button on-tap="handleTriggerTapped">TRIGGER</paper-button></template></dom-module><script>Polymer({is:"more-info-automation",properties:{hass:{type:Object},stateObj:{type:Object}},handleTriggerTapped:function(){this.hass.serviceActions.callService("automation","trigger",{entity_id:this.stateObj.entityId})}})</script><dom-module id="paper-range-slider" assetpath="../bower_components/paper-range-slider/"><template><style>:host{--paper-range-slider-width:200px;@apply(--layout);@apply(--layout-justified);@apply(--layout-center);--paper-range-slider-lower-color:var(--paper-grey-400);--paper-range-slider-active-color:var(--primary-color);--paper-range-slider-higher-color:var(--paper-grey-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-pin-start-color:var(--paper-grey-400);--paper-range-slider-knob-start-color:transparent;--paper-range-slider-knob-start-border-color:var(--paper-grey-400)}#sliderOuterDiv_0{display:inline-block;width:var(--paper-range-slider-width)}#sliderOuterDiv_1{position:relative;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sliderKnobMinMax{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.divSpanWidth{position:absolute;width:100%;display:block;top:0}#sliderMax{--paper-single-range-slider-bar-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-active-color:var(--paper-range-slider-active-color);--paper-single-range-slider-secondary-color:var(--paper-range-slider-higher-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}#sliderMin{--paper-single-range-slider-active-color:var(--paper-range-slider-lower-color);--paper-single-range-slider-secondary-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}</style><div id="sliderOuterDiv_0" style=""><div id="sliderOuterDiv_1"><div id="backDiv" class="divSpanWidth" on-down="_backDivDown" on-tap="_backDivTap" on-up="_backDivUp" on-track="_backDivOnTrack" on-transitionend="_backDivTransEnd"><div id="backDivInner_0" style="line-height:200%"><br></div></div><div id="sliderKnobMin" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMinOnTrack"></div><div id="sliderKnobMax" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMaxOnTrack"></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMax" disabled$="[[disabled]]" on-down="_sliderMaxDown" on-up="_sliderMaxUp" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMax]]" secondary-progress="[[max]]" style="width:100%"></paper-single-range-slider></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMin" disabled$="[[disabled]]" on-down="_sliderMinDown" on-up="_sliderMinUp" noink="" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMin]]" style="width:100%"></paper-single-range-slider></div><div id="backDivInner_1" style="line-height:100%"><br></div></div></div></template><script>Polymer({is:"paper-range-slider",behaviors:[Polymer.IronRangeBehavior],properties:{sliderWidth:{type:String,value:"",notify:!0,reflectToAttribute:!0},style:{type:String,value:"",notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0,reflectToAttribute:!0},max:{type:Number,value:100,notify:!0,reflectToAttribute:!0},valueMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueMax:{type:Number,value:100,notify:!0,reflectToAttribute:!0},step:{type:Number,value:1,notify:!0,reflectToAttribute:!0},valueDiffMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueDiffMax:{type:Number,value:0,notify:!0,reflectToAttribute:!0},alwaysShowPin:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},snaps:{type:Boolean,value:!1,notify:!0},disabled:{type:Boolean,value:!1,notify:!0},singleSlider:{type:Boolean,value:!1,notify:!0},transDuration:{type:Number,value:250},tapValueExtend:{type:Boolean,value:!0,notify:!0},tapValueReduce:{type:Boolean,value:!1,notify:!0},tapValueMove:{type:Boolean,value:!1,notify:!0}},ready:function(){function i(i){return void 0!=i&&null!=i}i(this._nInitTries)||(this._nInitTries=0);var t=this.$$("#sliderMax").$$("#sliderContainer");if(i(t)&&(t=t.offsetWidth>0),i(t)&&(t=this.$$("#sliderMin").$$("#sliderContainer")),i(t)&&(t=t.offsetWidth>0),i(t))this._renderedReady();else{if(this._nInitTries<1e3){var e=this;setTimeout(function(){e.ready()},10)}else console.error("could not properly initialize the underlying paper-single-range-slider elements ...");this._nInitTries++}},_renderedReady:function(){this.init(),this._setPadding();var i=this;this.$$("#sliderMin").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.$.sliderMin._expandKnob(),i.$.sliderMax._expandKnob()}),this.$$("#sliderMax").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue))}),this.$$("#sliderMin").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.alwaysShowPin&&i.$.sliderMin._expandKnob()}),this.$$("#sliderMax").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue)),i.alwaysShowPin&&i.$.sliderMax._expandKnob()})},_setPadding:function(){var i=document.createElement("div");i.setAttribute("style","position:absolute; top:0px; opacity:0;"),i.innerHTML="invisibleText",document.body.insertBefore(i,document.body.children[0]);var t=i.offsetHeight/2;this.style.paddingTop=t+"px",this.style.paddingBottom=t+"px",i.parentNode.removeChild(i)},_setValueDiff:function(){this._valueDiffMax=Math.max(this.valueDiffMax,0),this._valueDiffMin=Math.max(this.valueDiffMin,0)},_getValuesMinMax:function(i,t){var e=null!=i&&i>=this.min&&i<=this.max,s=null!=t&&t>=this.min&&t<=this.max;if(!e&&!s)return[this.valueMin,this.valueMax];var n=e?i:this.valueMin,a=s?t:this.valueMax;n=Math.min(Math.max(n,this.min),this.max),a=Math.min(Math.max(a,this.min),this.max);var l=a-n;return e?l<this._valueDiffMin?(a=Math.min(this.max,n+this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(n=a-this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(a=n+this._valueDiffMax):l<this._valueDiffMin?(n=Math.max(this.min,a-this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(a=n+this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(n=a-this._valueDiffMax),[n,a]},_setValueMin:function(i){i=Math.max(i,this.min),this.$$("#sliderMin").value=i,this.valueMin=i},_setValueMax:function(i){i=Math.min(i,this.max),this.$$("#sliderMax").value=i,this.valueMax=i},_setValueMinMax:function(i){this._setValueMin(i[0]),this._setValueMax(i[1]),this._updateSliderKnobMinMax(),this.updateValues()},_setValues:function(i,t){null!=i&&(i<this.min||i>this.max)&&(i=null),null!=t&&(t<this.min||t>this.max)&&(t=null),null!=i&&null!=t&&(i=Math.min(i,t)),this._setValueMinMax(this._getValuesMinMax(i,t))},_updateSliderKnobMinMax:function(){var i=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,t=i*(this.valueMin-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMin").offsetWidth,e=i*(this.valueMax-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMax").offsetWidth;this.$$("#sliderKnobMin").style.left=t+"px",this.$$("#sliderKnobMax").style.left=e+"px"},_backDivOnTrack:function(i){switch(i.stopPropagation(),i.detail.state){case"start":this._backDivTrackStart(i);break;case"track":this._backDivTrackDuring(i);break;case"end":this._backDivTrackEnd()}},_backDivTrackStart:function(i){},_backDivTrackDuring:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._x1_Max=this._x0_Max+i.detail.dx;var e=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));t>=this.min&&e<=this.max&&this._setValuesWithCurrentDiff(t,e,!1)},_setValuesWithCurrentDiff:function(i,t,e){var s=this._valueDiffMin,n=this._valueDiffMax;this._valueDiffMin=this.valueMax-this.valueMin,this._valueDiffMax=this.valueMax-this.valueMin,e?this.setValues(i,t):this._setValues(i,t),this._valueDiffMin=s,this._valueDiffMax=n},_backDivTrackEnd:function(){},_sliderKnobMinOnTrack:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._setValues(t,null)},_sliderKnobMaxOnTrack:function(i){this._x1_Max=this._x0_Max+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));this._setValues(null,t)},_sliderMinDown:function(){this.$$("#sliderMax")._expandKnob()},_sliderMaxDown:function(i){this.singleSlider?this._setValues(null,this._getEventValue(i)):this.$$("#sliderMin")._expandKnob()},_sliderMinUp:function(){this.alwaysShowPin?this.$$("#sliderMin")._expandKnob():this.$$("#sliderMax")._resetKnob()},_sliderMaxUp:function(){this.alwaysShowPin?this.$$("#sliderMax")._expandKnob():(this.$$("#sliderMin")._resetKnob(),this.singleSlider&&this.$$("#sliderMax")._resetKnob())},_getEventValue:function(i){var t=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,e=this.$$("#sliderMax").$$("#sliderContainer").getBoundingClientRect(),s=(i.detail.x-e.left)/t,n=this.min+s*(this.max-this.min);return n},_backDivTap:function(i){this._setValueNow=function(i,t){this.tapValueMove?this._setValuesWithCurrentDiff(i,t,!0):this.setValues(i,t)};var t=this._getEventValue(i);if(t>this.valueMin&&t<this.valueMax){if(this.tapValueReduce){var e=t<this.valueMin+(this.valueMax-this.valueMin)/2;e?this._setValueNow(t,null):this._setValueNow(null,t)}}else(this.tapValueExtend||this.tapValueMove)&&(t<this.valueMin&&this._setValueNow(t,null),t>this.valueMax&&this._setValueNow(null,t))},_backDivDown:function(i){this._sliderMinDown(),this._sliderMaxDown(),this._xWidth=this.$$("#sliderMin").$$("#sliderBar").offsetWidth,this._x0_Min=this.$$("#sliderMin").ratio*this._xWidth,this._x0_Max=this.$$("#sliderMax").ratio*this._xWidth},_backDivUp:function(){this._sliderMinUp(),this._sliderMaxUp()},_backDivTransEnd:function(i){},_getRatioPos:function(i,t){return Math.max(i.min,Math.min(i.max,(i.max-i.min)*t+i.min))},init:function(){this.setSingleSlider(this.singleSlider),this.setDisabled(this.disabled),this.alwaysShowPin&&(this.pin=!0),this.$$("#sliderMin").pin=this.pin,this.$$("#sliderMax").pin=this.pin,this.$$("#sliderMin").snaps=this.snaps,this.$$("#sliderMax").snaps=this.snaps,""!=this.sliderWidth&&(this.customStyle["--paper-range-slider-width"]=this.sliderWidth,this.updateStyles()),this.$$("#sliderMin").$$("#sliderBar").$$("#progressContainer").style.background="transparent",this._prevUpdateValues=[this.min,this.max],this._setValueDiff(),this._setValueMinMax(this._getValuesMinMax(this.valueMin,this.valueMax)),this.alwaysShowPin&&(this.$$("#sliderMin")._expandKnob(),this.$$("#sliderMax")._expandKnob())},setValues:function(i,t){this.$$("#sliderMin")._setTransiting(!0),this.$$("#sliderMax")._setTransiting(!0),this._setValues(i,t);var e=this;setTimeout(function(){e.$.sliderMin._setTransiting(!1),e.$.sliderMax._setTransiting(!1)},e.transDuration)},updateValues:function(){this._prevUpdateValues[0]==this.valueMin&&this._prevUpdateValues[1]==this.valueMax||(this._prevUpdateValues=[this.valueMin,this.valueMax],this.async(function(){this.fire("updateValues")}))},setMin:function(i){this.max<i&&(this.max=i),this.min=i,this._prevUpdateValues=[this.min,this.max],this.valueMin<this.min?this._setValues(this.min,null):this._updateSliderKnobMinMax()},setMax:function(i){this.min>i&&(this.min=i),this.max=i,this._prevUpdateValues=[this.min,this.max],this.valueMax>this.max?this._setValues(null,this.max):this._updateSliderKnobMinMax()},setStep:function(i){this.step=i},setValueDiffMin:function(i){this._valueDiffMin=i},setValueDiffMax:function(i){this._valueDiffMax=i},setTapValueExtend:function(i){this.tapValueExtend=i},setTapValueReduce:function(i){this.tapValueReduce=i},setTapValueMove:function(i){this.tapValueMove=i},setDisabled:function(i){this.disabled=i;var t=i?"none":"auto";this.$$("#sliderMax").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderMin").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderOuterDiv_1").style.pointerEvents=t,this.$$("#sliderKnobMin").style.pointerEvents=t,this.$$("#sliderKnobMax").style.pointerEvents=t},setSingleSlider:function(i){this.singleSlider=i,i?(this.$$("#backDiv").style.display="none",this.$$("#sliderMax").style.pointerEvents="auto",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="none",this.$$("#sliderKnobMin").style.pointerEvents="none",this.$$("#sliderKnobMax").style.pointerEvents="none"):(this.$$("#backDiv").style.display="block",this.$$("#sliderMax").style.pointerEvents="none",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="",this.$$("#sliderKnobMin").style.pointerEvents="auto",this.$$("#sliderKnobMax").style.pointerEvents="auto"),this.$$("#sliderMax").$$("#sliderContainer").style.pointerEvents=this.singleSlider?"auto":"none",this.$$("#sliderMin").$$("#sliderContainer").style.pointerEvents="none"}})</script></dom-module><dom-module id="paper-single-range-slider" assetpath="../bower_components/paper-range-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-single-range-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-single-range-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-single-range-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-single-range-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:calc(15px + var(--paper-single-range-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-single-range-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-single-range-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-single-range-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-single-range-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-single-range-slider-height,2px)/ 2);height:var(--paper-single-range-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-single-range-slider-knob-color,--google-blue-700);border:2px solid var(--paper-single-range-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-single-range-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-single-range-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-single-range-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-single-range-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="more-info-climate" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>:host{color:var(--primary-text-color);--paper-input-container-input:{text-transform:capitalize};}.container-aux_heat,.container-away_mode,.container-fan_list,.container-humidity,.container-operation_list,.container-swing_list,.container-temperature{display:none}.has-aux_heat .container-aux_heat,.has-away_mode .container-away_mode,.has-fan_list .container-fan_list,.has-humidity .container-humidity,.has-operation_list .container-operation_list,.has-swing_list .container-swing_list,.has-temperature .container-temperature{display:block}.container-fan_list iron-icon,.container-operation_list iron-icon,.container-swing_list iron-icon{margin:22px 16px 0 0}paper-dropdown-menu{width:100%}paper-slider{width:100%}.auto paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-blue-400)}.heat paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-green-400)}.cool paper-slider{--paper-slider-active-color:var(--paper-green-400);--paper-slider-secondary-color:var(--paper-blue-400)}.humidity{--paper-slider-active-color:var(--paper-blue-400);--paper-slider-secondary-color:var(--paper-blue-400)}paper-range-slider{--paper-range-slider-lower-color:var(--paper-orange-400);--paper-range-slider-active-color:var(--paper-green-400);--paper-range-slider-higher-color:var(--paper-blue-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-width:100%}.single-row{padding:8px 0}.capitalize{text-transform:capitalize}</style><div class$="[[computeClassNames(stateObj)]]"><div class="container-temperature"><div class$="single-row, [[stateObj.attributes.operation_mode]]"><div hidden$="[[computeTargetTempHidden(stateObj)]]">Target Temperature</div><paper-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" secondary-progress="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value="[[stateObj.attributes.temperature]]" hidden$="[[computeHideTempSlider(stateObj)]]" on-change="targetTemperatureSliderChanged"></paper-slider><paper-range-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value-min="[[stateObj.attributes.target_temp_low]]" value-max="[[stateObj.attributes.target_temp_high]]" value-diff-min="2" hidden$="[[computeHideTempRangeSlider(stateObj)]]" on-change="targetTemperatureRangeSliderChanged"></paper-range-slider></div></div><div class="container-humidity"><div class="single-row"><div>Target Humidity</div><paper-slider class="humidity" min="[[stateObj.attributes.min_humidity]]" max="[[stateObj.attributes.max_humidity]]" secondary-progress="[[stateObj.attributes.max_humidity]]" step="1" pin="" value="[[stateObj.attributes.humidity]]" on-change="targetHumiditySliderChanged"></paper-slider></div></div><div class="container-operation_list"><div class="controls"><paper-dropdown-menu label-float="" label="Operation"><paper-menu class="dropdown-content" selected="{{operationIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.operation_list]]"><paper-item class="capitalize">[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div></div><div class="container-fan_list"><paper-dropdown-menu label-float="" label="Fan Mode"><paper-menu class="dropdown-content" selected="{{fanIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.fan_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-swing_list"><paper-dropdown-menu label-float="" label="Swing Mode"><paper-menu class="dropdown-content" selected="{{swingIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.swing_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-away_mode"><div class="center horizontal layout single-row"><div class="flex">Away Mode</div><paper-toggle-button checked="[[awayToggleChecked]]" on-change="awayToggleChanged"></paper-toggle-button></div></div><div class="container-aux_heat"><div class="center horizontal layout single-row"><div class="flex">Aux Heat</div><paper-toggle-button checked="[[auxToggleChecked]]" on-change="auxToggleChanged"></paper-toggle-button></div></div></div></template></dom-module><script>Polymer({is:"more-info-climate",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},operationIndex:{type:Number,value:-1,observer:"handleOperationmodeChanged"},fanIndex:{type:Number,value:-1,observer:"handleFanmodeChanged"},swingIndex:{type:Number,value:-1,observer:"handleSwingmodeChanged"},awayToggleChecked:{type:Boolean},auxToggleChecked:{type:Boolean}},stateObjChanged:function(e){this.targetTemperatureSliderValue=e.attributes.temperature,this.awayToggleChecked="on"===e.attributes.away_mode,this.auxheatToggleChecked="on"===e.attributes.aux_heat,e.attributes.fan_list?this.fanIndex=e.attributes.fan_list.indexOf(e.attributes.fan_mode):this.fanIndex=-1,e.attributes.operation_list?this.operationIndex=e.attributes.operation_list.indexOf(e.attributes.operation_mode):this.operationIndex=-1,e.attributes.swing_list?this.swingIndex=e.attributes.swing_list.indexOf(e.attributes.swing_mode):this.swingIndex=-1,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeTargetTempHidden:function(e){return!e.attributes.temperature&&!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempRangeSlider:function(e){return!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempSlider:function(e){return!e.attributes.temperature},computeClassNames:function(e){return"more-info-climate "+window.hassUtil.attributeClassNames(e,["away_mode","aux_heat","temperature","humidity","operation_list","fan_list","swing_list"])},targetTemperatureSliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.temperature&&this.callServiceHelper("set_temperature",{temperature:t})},targetTemperatureRangeSliderChanged:function(e){var t=e.currentTarget.valueMin,a=e.currentTarget.valueMax;t===this.stateObj.attributes.target_temp_low&&a===this.stateObj.attributes.target_temp_high||this.callServiceHelper("set_temperature",{target_temp_low:t,target_temp_high:a})},targetHumiditySliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.humidity&&this.callServiceHelper("set_humidity",{humidity:t})},awayToggleChanged:function(e){var t="on"===this.stateObj.attributes.away_mode,a=e.target.checked;t!==a&&this.callServiceHelper("set_away_mode",{away_mode:a})},auxToggleChanged:function(e){var t="on"===this.stateObj.attributes.aux_heat,a=e.target.checked;t!==a&&this.callServiceHelper("set_aux_heat",{aux_heat:a})},handleFanmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.fan_list[e],t!==this.stateObj.attributes.fan_mode&&this.callServiceHelper("set_fan_mode",{fan_mode:t}))},handleOperationmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.operation_list[e],t!==this.stateObj.attributes.operation_mode&&this.callServiceHelper("set_operation_mode",{operation_mode:t}))},handleSwingmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.swing_list[e],t!==this.stateObj.attributes.swing_mode&&this.callServiceHelper("set_swing_mode",{swing_mode:t}))},callServiceHelper:function(e,t){t.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("climate",e,t).then(function(){this.stateObjChanged(this.stateObj)}.bind(this))}})</script><dom-module id="more-info-cover" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.current_position,.current_tilt_position{max-height:0;overflow:hidden}.has-current_position .current_position,.has-current_tilt_position .current_tilt_position{max-height:90px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="current_position"><div>Position</div><paper-slider min="0" max="100" value="{{coverPositionSliderValue}}" step="1" pin="" on-change="coverPositionSliderChanged"></paper-slider></div><div class="current_tilt_position"><div>Tilt position</div><paper-icon-button icon="mdi:arrow-top-right" on-tap="onOpenTiltTap" title="Open tilt" disabled="[[computeIsFullyOpenTilt(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTiltTap" title="Stop tilt"></paper-icon-button><paper-icon-button icon="mdi:arrow-bottom-left" on-tap="onCloseTiltTap" title="Close tilt" disabled="[[computeIsFullyClosedTilt(stateObj)]]"></paper-icon-button><paper-slider min="0" max="100" value="{{coverTiltPositionSliderValue}}" step="1" pin="" on-change="coverTiltPositionSliderChanged"></paper-slider></div></div></template></dom-module><script>Polymer({is:"more-info-cover",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},coverPositionSliderValue:{type:Number},coverTiltPositionSliderValue:{type:Number}},stateObjChanged:function(t){this.coverPositionSliderValue=t.attributes.current_position,this.coverTiltPositionSliderValue=t.attributes.current_tilt_position},computeClassNames:function(t){return window.hassUtil.attributeClassNames(t,["current_position","current_tilt_position"])},coverPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_position",{entity_id:this.stateObj.entityId,position:t.target.value})},coverTiltPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_tilt_position",{entity_id:this.stateObj.entityId,tilt_position:t.target.value})},computeIsFullyOpenTilt:function(t){return 100===t.attributes.current_tilt_position},computeIsFullyClosedTilt:function(t){return 0===t.attributes.current_tilt_position},onOpenTiltTap:function(){this.hass.serviceActions.callService("cover","open_cover_tilt",{entity_id:this.stateObj.entityId})},onCloseTiltTap:function(){this.hass.serviceActions.callService("cover","close_cover_tilt",{entity_id:this.stateObj.entityId})},onStopTiltTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="more-info-default" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.data-entry .value{max-width:200px}</style><div class="layout vertical"><template is="dom-repeat" items="[[computeDisplayAttributes(stateObj)]]" as="attribute"><div class="data-entry layout justified horizontal"><div class="key">[[formatAttribute(attribute)]]</div><div class="value">[[getAttributeValue(stateObj, attribute)]]</div></div></template></div></template></dom-module><script>!function(){"use strict";var e=["entity_picture","friendly_name","icon","unit_of_measurement","emulated_hue","emulated_hue_name","haaska_hidden","haaska_name","homebridge_hidden","homebridge_name"];Polymer({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return e.indexOf(t)===-1}):[]},formatAttribute:function(e){return e.replace(/_/g," ")},getAttributeValue:function(e,t){var r=e.attributes[t];return Array.isArray(r)?r.join(", "):r}})}()</script><dom-module id="more-info-group" assetpath="more-infos/"><template><style>.child-card{margin-bottom:8px}.child-card:last-child{margin-bottom:0}</style><div id="groupedControlDetails"></div><template is="dom-repeat" items="[[states]]" as="state"><div class="child-card"><state-card-content state-obj="[[state]]" hass="[[hass]]"></state-card-content></div></template></template></dom-module><script>Polymer({is:"more-info-group",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object},states:{type:Array,bindNuclear:function(t){return[t.moreInfoGetters.currentEntity,t.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}}},observers:["statesChanged(stateObj, states)"],statesChanged:function(t,e){var s,i,a,n,r=!1;if(e&&e.length>0)for(s=e[0],r=s.set("entityId",t.entityId).set("attributes",Object.assign({},s.attributes)),i=0;i<e.length;i++)a=e[i],a&&a.domain&&r.domain!==a.domain&&(r=!1);r?window.hassUtil.dynamicContentUpdater(this.$.groupedControlDetails,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(r).toUpperCase(),{stateObj:r,hass:this.hass}):(n=Polymer.dom(this.$.groupedControlDetails),n.lastChild&&n.removeChild(n.lastChild))}})</script><dom-module id="more-info-sun" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><template is="dom-repeat" items="[[computeOrder(risingDate, settingDate)]]"><div class="data-entry layout justified horizontal"><div class="key"><span>[[itemCaption(item)]]</span><ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time></div><div class="value">[[itemValue(item)]]</div></div></template><div class="data-entry layout justified horizontal"><div class="key">Elevation</div><div class="value">[[stateObj.attributes.elevation]]</div></div></template></dom-module><script>Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return new Date(t.attributes.next_rising)},computeSetting:function(t){return new Date(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return window.hassUtil.formatTime(this.itemDate(t))}})</script><dom-module id="more-info-configurator" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>p{margin:8px 0}p>img{max-width:100%}p.center{text-align:center}p.error{color:#C62828}p.submit{text-align:center;height:41px}paper-spinner{width:14px;height:14px;margin-right:20px}</style><div class="layout vertical"><template is="dom-if" if="[[isConfigurable]]"><p hidden$="[[!stateObj.attributes.description]]">[[stateObj.attributes.description]] <a hidden$="[[!stateObj.attributes.link_url]]" href="[[stateObj.attributes.link_url]]" target="_blank">[[stateObj.attributes.link_name]]</a></p><p class="error" hidden$="[[!stateObj.attributes.errors]]">[[stateObj.attributes.errors]]</p><p class="center" hidden$="[[!stateObj.attributes.description_image]]"><img src="[[stateObj.attributes.description_image]]"></p><template is="dom-repeat" items="[[stateObj.attributes.fields]]"><paper-input-container id="paper-input-fields-{{item.id}}"><label>[[item.name]]</label><input is="iron-input" type="[[item.type]]" id="[[item.id]]" on-change="fieldChanged"></paper-input-container></template><p class="submit"><paper-button raised="" disabled="[[isConfiguring]]" on-tap="submitClicked"><paper-spinner active="[[isConfiguring]]" hidden="[[!isConfiguring]]" alt="Configuring"></paper-spinner>[[submitCaption]]</paper-button></p></template></div></template></dom-module><script>Polymer({is:"more-info-configurator",behaviors:[window.hassBehavior],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:function(i){return i.streamGetters.isStreamingEvents}},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"},fieldInput:{type:Object,value:{}}},computeIsConfigurable:function(i){return"configure"===i.state},computeSubmitCaption:function(i){return i.attributes.submit_caption||"Set configuration"},fieldChanged:function(i){var t=i.target;this.fieldInput[t.id]=t.value},submitClicked:function(){var i={configure_id:this.stateObj.attributes.configure_id,fields:this.fieldInput};this.isConfiguring=!0,this.hass.serviceActions.callService("configurator","configure",i).then(function(){this.isConfiguring=!1,this.isStreaming||this.hass.syncActions.fetchAll()}.bind(this),function(){this.isConfiguring=!1}.bind(this))}})</script><dom-module id="more-info-script" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><div class="layout vertical"><div class="data-entry layout justified horizontal"><div class="key">Last Action</div><div class="value">[[stateObj.attributes.last_action]]</div></div></div></template></dom-module><script>Polymer({is:"more-info-script",properties:{stateObj:{type:Object}}})</script><dom-module id="ha-labeled-slider" assetpath="components/"><template><style>:host{display:block;padding-bottom:16px}.title{margin-bottom:16px;opacity:var(--dark-primary-opacity)}iron-icon{float:left;margin-top:4px;opacity:var(--dark-secondary-opacity)}.slider-container{margin-left:24px}</style><div class="title">[[caption]]</div><iron-icon icon="[[icon]]"></iron-icon><div class="slider-container"><paper-slider min="[[min]]" max="[[max]]" value="{{value}}"></paper-slider></div></template></dom-module><script>Polymer({is:"ha-labeled-slider",properties:{caption:{type:String},icon:{type:String},min:{type:Number},max:{type:Number},value:{type:Number,notify:!0}}})</script><dom-module id="ha-color-picker" assetpath="components/"><template><style>canvas{cursor:crosshair}</style><canvas width="[[width]]" height="[[height]]"></canvas></template></dom-module><script>Polymer({is:"ha-color-picker",properties:{color:{type:Object},width:{type:Number},height:{type:Number}},listeners:{mousedown:"onMouseDown",mouseup:"onMouseUp",touchstart:"onTouchStart",touchend:"onTouchEnd"},onMouseDown:function(t){this.onMouseMove(t),this.addEventListener("mousemove",this.onMouseMove)},onMouseUp:function(){this.removeEventListener("mousemove",this.onMouseMove)},onTouchStart:function(t){this.onTouchMove(t),this.addEventListener("touchmove",this.onTouchMove)},onTouchEnd:function(){this.removeEventListener("touchmove",this.onTouchMove)},onTouchMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t.touches[0]),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},onMouseMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},processColorSelect:function(t){var o=this.canvas.getBoundingClientRect();t.clientX<o.left||t.clientX>=o.left+o.width||t.clientY<o.top||t.clientY>=o.top+o.height||this.onColorSelect(t.clientX-o.left,t.clientY-o.top)},onColorSelect:function(t,o){var e=this.context.getImageData(t,o,1,1).data;this.setColor({r:e[0],g:e[1],b:e[2]})},setColor:function(t){this.color=t,this.fire("colorselected",{rgb:this.color})},ready:function(){this.setColor=this.setColor.bind(this),this.mouseMoveIsThrottled=!0,this.canvas=this.children[0],this.context=this.canvas.getContext("2d"),this.drawGradient()},drawGradient:function(){var t,o,e,i,s;this.width&&this.height||(t=getComputedStyle(this)),o=this.width||parseInt(t.width,10),e=this.height||parseInt(t.height,10),i=this.context.createLinearGradient(0,0,o,0),i.addColorStop(0,"rgb(255,0,0)"),i.addColorStop(.16,"rgb(255,0,255)"),i.addColorStop(.32,"rgb(0,0,255)"),i.addColorStop(.48,"rgb(0,255,255)"),i.addColorStop(.64,"rgb(0,255,0)"),i.addColorStop(.8,"rgb(255,255,0)"),i.addColorStop(1,"rgb(255,0,0)"),this.context.fillStyle=i,this.context.fillRect(0,0,o,e),s=this.context.createLinearGradient(0,0,0,e),s.addColorStop(0,"rgba(255,255,255,1)"),s.addColorStop(.5,"rgba(255,255,255,0)"),s.addColorStop(.5,"rgba(0,0,0,0)"),s.addColorStop(1,"rgba(0,0,0,1)"),this.context.fillStyle=s,this.context.fillRect(0,0,o,e)}})</script><dom-module id="more-info-light" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.effect_list{padding-bottom:16px}.brightness,.color_temp,.effect_list,.white_value{max-height:0;overflow:hidden;transition:max-height .5s ease-in}ha-color-picker{display:block;width:250px;max-height:0;overflow:hidden;transition:max-height .2s ease-in}.has-brightness .brightness,.has-color_temp .color_temp,.has-effect_list .effect_list,.has-white_value .white_value{max-height:84px}.has-rgb_color ha-color-picker{max-height:200px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="effect_list"><paper-dropdown-menu label-float="" label="Effect"><paper-menu class="dropdown-content" selected="{{effectIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.effect_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="brightness"><ha-labeled-slider caption="Brightness" icon="mdi:brightness-5" max="255" value="{{brightnessSliderValue}}" on-change="brightnessSliderChanged"></ha-labeled-slider></div><div class="color_temp"><ha-labeled-slider caption="Color Temperature" icon="mdi:thermometer" min="154" max="500" value="{{ctSliderValue}}" on-change="ctSliderChanged"></ha-labeled-slider></div><div class="white_value"><ha-labeled-slider caption="White Value" icon="mdi:file-word-box" max="255" value="{{wvSliderValue}}" on-change="wvSliderChanged"></ha-labeled-slider></div><ha-color-picker on-colorselected="colorPicked" height="200" width="250"></ha-color-picker></div></template></dom-module><script>Polymer({is:"more-info-light",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},effectIndex:{type:Number,value:-1,observer:"effectChanged"},brightnessSliderValue:{type:Number,value:0},ctSliderValue:{type:Number,value:0},wvSliderValue:{type:Number,value:0}},stateObjChanged:function(t){t&&"on"===t.state?(this.brightnessSliderValue=t.attributes.brightness,this.ctSliderValue=t.attributes.color_temp,this.wvSliderValue=t.attributes.white_value,t.attributes.effect_list?this.effectIndex=t.attributes.effect_list.indexOf(t.attributes.effect):this.effectIndex=-1):this.brightnessSliderValue=0,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(t){var e=window.hassUtil.attributeClassNames(t,["rgb_color","color_temp","white_value","effect_list"]),i=1;return t&&t.attributes.supported_features&i&&(e+=" has-brightness"),e},effectChanged:function(t){var e;""!==t&&t!==-1&&(e=this.stateObj.attributes.effect_list[t],e!==this.stateObj.attributes.effect&&this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,effect:e}))},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?this.hass.serviceActions.callTurnOff(this.stateObj.entityId):this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},ctSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,color_temp:e})},wvSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,white_value:e})},serviceChangeColor:function(t,e,i){t.serviceActions.callService("light","turn_on",{entity_id:e,rgb_color:[i.r,i.g,i.b]})},colorPicked:function(t){return this.skipColorPicked?void(this.colorChanged=!0):(this.color=t.detail.rgb,this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.colorChanged=!1,this.skipColorPicked=!0,void(this.colorDebounce=setTimeout(function(){this.colorChanged&&this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.skipColorPicked=!1}.bind(this),500)))}})</script><dom-module id="more-info-media_player" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.media-state{text-transform:capitalize}paper-icon-button[highlight]{color:var(--accent-color)}.volume{margin-bottom:8px;max-height:0;overflow:hidden;transition:max-height .5s ease-in}.has-volume_level .volume{max-height:40px}iron-icon.source-input{padding:7px;margin-top:15px}paper-dropdown-menu.source-input{margin-left:10px}[hidden]{display:none!important}</style><div class$="[[computeClassNames(stateObj)]]"><div class="layout horizontal"><div class="flex"><paper-icon-button icon="mdi:power" highlight$="[[isOff]]" on-tap="handleTogglePower" hidden$="[[computeHidePowerButton(isOff, supportsTurnOn, supportsTurnOff)]]"></paper-icon-button></div><div><template is="dom-if" if="[[computeShowPlaybackControls(isOff, hasMediaControl)]]"><paper-icon-button icon="mdi:skip-previous" on-tap="handlePrevious" hidden$="[[!supportsPreviousTrack]]"></paper-icon-button><paper-icon-button icon="[[computePlaybackControlIcon(stateObj)]]" on-tap="handlePlaybackControl" hidden$="[[!computePlaybackControlIcon(stateObj)]]" highlight=""></paper-icon-button><paper-icon-button icon="mdi:skip-next" on-tap="handleNext" hidden$="[[!supportsNextTrack]]"></paper-icon-button></template></div></div><div class="volume_buttons center horizontal layout" hidden$="[[computeHideVolumeButtons(isOff, supportsVolumeButtons)]]"><paper-icon-button on-tap="handleVolumeTap" icon="mdi:volume-off"></paper-icon-button><paper-icon-button id="volumeDown" disabled$="[[isMuted]]" on-mousedown="handleVolumeDown" on-touchstart="handleVolumeDown" icon="mdi:volume-medium"></paper-icon-button><paper-icon-button id="volumeUp" disabled$="[[isMuted]]" on-mousedown="handleVolumeUp" on-touchstart="handleVolumeUp" icon="mdi:volume-high"></paper-icon-button></div><div class="volume center horizontal layout" hidden$="[[!supportsVolumeSet]]"><paper-icon-button on-tap="handleVolumeTap" hidden$="[[supportsVolumeButtons]]" icon="[[computeMuteVolumeIcon(isMuted)]]"></paper-icon-button><paper-slider disabled$="[[isMuted]]" min="0" max="100" value="[[volumeSliderValue]]" on-change="volumeSliderChanged" class="flex"></paper-slider></div><div class="controls layout horizontal justified" hidden$="[[computeHideSelectSource(isOff, supportsSelectSource)]]"><iron-icon class="source-input" icon="mdi:login-variant"></iron-icon><paper-dropdown-menu class="source-input" label-float="" label="Source"><paper-menu class="dropdown-content" selected="{{sourceIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.source_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div hidden$="[[computeHideTTS(ttsLoaded, supportsPlayMedia)]]" class="layout horizontal end"><paper-input label="Text to speak" class="flex" value="{{ttsMessage}}"></paper-input><paper-icon-button icon="mdi:send" on-tap="sendTTS"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"more-info-media_player",behaviors:[window.hassBehavior],properties:{ttsLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("tts")}},hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},source:{type:String,value:""},sourceIndex:{type:Number,value:0,observer:"handleSourceChanged"},volumeSliderValue:{type:Number,value:0},ttsMessage:{type:String,value:""},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1},supportsPlayMedia:{type:Boolean,value:!1},supportsVolumeButtons:{type:Boolean,value:!1},supportsSelectSource:{type:Boolean,value:!1},supportsPlay:{type:Boolean,value:!1},hasMediaControl:{type:Boolean,value:!1}},HAS_MEDIA_STATES:["playing","paused","unknown"],stateObjChanged:function(e){e&&(this.isOff="off"===e.state,this.isPlaying="playing"===e.state,this.hasMediaControl=this.HAS_MEDIA_STATES.indexOf(e.state)!==-1,this.volumeSliderValue=100*e.attributes.volume_level,this.isMuted=e.attributes.is_volume_muted,this.source=e.attributes.source,this.supportsPause=0!==(1&e.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&e.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&e.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&e.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&e.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&e.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&e.attributes.supported_media_commands),this.supportsPlayMedia=0!==(512&e.attributes.supported_media_commands),this.supportsVolumeButtons=0!==(1024&e.attributes.supported_media_commands),this.supportsSelectSource=0!==(2048&e.attributes.supported_media_commands),this.supportsPlay=0!==(16384&e.attributes.supported_media_commands),void 0!==e.attributes.source_list&&(this.sourceIndex=e.attributes.source_list.indexOf(this.source))),this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(e){return window.hassUtil.attributeClassNames(e,["volume_level"])},computeIsOff:function(e){return"off"===e.state},computeMuteVolumeIcon:function(e){return e?"mdi:volume-off":"mdi:volume-high"},computeHideVolumeButtons:function(e,t){return!t||e},computeShowPlaybackControls:function(e,t){return!e&&t},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"mdi:pause":"mdi:stop":this.supportsPlay?"mdi:play":null},computeHidePowerButton:function(e,t,s){return e?!t:!s},computeHideSelectSource:function(e,t){return e||!t},computeSelectedSource:function(e){return e.attributes.source_list.indexOf(e.attributes.source)},computeHideTTS:function(e,t){return!e||!t},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleSourceChanged:function(e){var t;!this.stateObj||void 0===this.stateObj.attributes.source_list||e<0||e>=this.stateObj.attributes.source_list.length||(t=this.stateObj.attributes.source_list[e],t!==this.stateObj.attributes.source&&this.callService("select_source",{source:t}))},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},handleVolumeUp:function(){var e=this.$.volumeUp;this.handleVolumeWorker("volume_up",e,!0)},handleVolumeDown:function(){var e=this.$.volumeDown;this.handleVolumeWorker("volume_down",e,!0)},handleVolumeWorker:function(e,t,s){(s||void 0!==t&&t.pointerDown)&&(this.callService(e),this.async(function(){this.handleVolumeWorker(e,t,!1)}.bind(this),500))},volumeSliderChanged:function(e){var t=parseFloat(e.target.value),s=t>0?t/100:0;this.callService("volume_set",{volume_level:s})},sendTTS:function(){var e,t,s=this.hass.reactor.evaluate(this.hass.serviceGetters.entityMap).get("tts").get("services").keySeq().toArray();for(t=0;t<s.length;t++)if(s[t].indexOf("_say")!==-1){e=s[t];break}e&&(this.hass.serviceActions.callService("tts",e,{entity_id:this.stateObj.entityId,message:this.ttsMessage}),this.ttsMessage="",document.activeElement.blur())},callService:function(e,t){var s=t||{};s.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("media_player",e,s)}})</script><dom-module id="more-info-camera" assetpath="more-infos/"><template><style>:host{max-width:640px}.camera-image{width:100%}</style><img class="camera-image" src="[[computeCameraImageUrl(hass, stateObj)]]" on-load="imageLoaded" alt="[[stateObj.entityDisplay]]"></template></dom-module><script>Polymer({is:"more-info-camera",properties:{hass:{type:Object},stateObj:{type:Object}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(e,t){return e.demo?"/demo/webcam.jpg":t?"/api/camera_proxy_stream/"+t.entityId+"?token="+t.attributes.access_token:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}})</script><dom-module id="more-info-updater" assetpath="more-infos/"><template><style>.link{color:#03A9F4}</style><div><a class="link" href="https://home-assistant.io/getting-started/updating/" target="_blank">Update Instructions</a></div></template></dom-module><script>Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},computeReleaseNotes:function(t){return t.attributes.release_notes||"https://home-assistant.io/getting-started/updating/"}})</script><dom-module id="more-info-alarm_control_panel" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><div class="layout horizontal"><paper-input label="code" value="{{enteredCode}}" pattern="[[codeFormat]]" type="password" hidden$="[[!codeInputVisible]]" disabled="[[!codeInputEnabled]]"></paper-input></div><div class="layout horizontal"><paper-button on-tap="handleDisarmTap" hidden$="[[!disarmButtonVisible]]" disabled="[[!codeValid]]">Disarm</paper-button><paper-button on-tap="handleHomeTap" hidden$="[[!armHomeButtonVisible]]" disabled="[[!codeValid]]">Arm Home</paper-button><paper-button on-tap="handleAwayTap" hidden$="[[!armAwayButtonVisible]]" disabled="[[!codeValid]]">Arm Away</paper-button></div></template></dom-module><script>Polymer({is:"more-info-alarm_control_panel",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""},disarmButtonVisible:{type:Boolean,value:!1},armHomeButtonVisible:{type:Boolean,value:!1},armAwayButtonVisible:{type:Boolean,value:!1},codeInputVisible:{type:Boolean,value:!1},codeInputEnabled:{type:Boolean,value:!1},codeFormat:{type:String,value:""},codeValid:{type:Boolean,computed:"validateCode(enteredCode, codeFormat)"}},validateCode:function(e,t){var a=new RegExp(t);return null===t||a.test(e)},stateObjChanged:function(e){e&&(this.codeFormat=e.attributes.code_format,this.codeInputVisible=null!==this.codeFormat,this.codeInputEnabled="armed_home"===e.state||"armed_away"===e.state||"disarmed"===e.state||"pending"===e.state||"triggered"===e.state,this.disarmButtonVisible="armed_home"===e.state||"armed_away"===e.state||"pending"===e.state||"triggered"===e.state,this.armHomeButtonVisible="disarmed"===e.state,this.armAwayButtonVisible="disarmed"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},handleDisarmTap:function(){this.callService("alarm_disarm",{code:this.enteredCode})},handleHomeTap:function(){this.callService("alarm_arm_home",{code:this.enteredCode})},handleAwayTap:function(){this.callService("alarm_arm_away",{code:this.enteredCode})},callService:function(e,t){var a=t||{};a.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("alarm_control_panel",e,a).then(function(){this.enteredCode=""}.bind(this))}})</script><dom-module id="more-info-lock" assetpath="more-infos/"><template><style>paper-input{display:inline-block}</style><div hidden$="[[!stateObj.attributes.code_format]]"><paper-input label="code" value="{{enteredCode}}" pattern="[[stateObj.attributes.code_format]]" type="password"></paper-input><paper-button on-tap="handleUnlockTap" hidden$="[[!isLocked]]">Unlock</paper-button><paper-button on-tap="handleLockTap" hidden$="[[isLocked]]">Lock</paper-button></div></template></dom-module><script>Polymer({is:"more-info-lock",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""}},handleUnlockTap:function(){this.callService("unlock",{code:this.enteredCode})},handleLockTap:function(){this.callService("lock",{code:this.enteredCode})},stateObjChanged:function(e){e&&(this.isLocked="locked"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},callService:function(e,t){var i=t||{};i.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("lock",e,i)}})</script><script>Polymer({is:"more-info-content",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"}},created:function(){this.style.display="block"},stateObjChanged:function(t){t&&window.hassUtil.dynamicContentUpdater(this,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(t).toUpperCase(),{hass:this.hass,stateObj:t})}})</script><dom-module id="more-info-dialog" assetpath="dialogs/"><template><style>paper-dialog{font-size:14px;width:365px}paper-dialog[data-domain=camera]{width:auto}state-history-charts{position:relative;z-index:1;max-width:365px}state-card-content{margin-bottom:24px;font-size:14px}@media all and (max-width:450px),all and (max-height:500px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}" data-domain$="[[stateObj.domain]]"><h2><state-card-content state-obj="[[stateObj]]" hass="[[hass]]" in-dialog=""></state-card-content></h2><template is="dom-if" if="[[showHistoryComponent]]"><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingHistoryData]]"></state-history-charts></template><paper-dialog-scrollable id="scrollable"><more-info-content state-obj="[[stateObj]]" hass="[[hass]]"></more-info-content></paper-dialog-scrollable></paper-dialog></template></dom-module><script>Polymer({is:"more-info-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object,bindNuclear:function(t){return t.moreInfoGetters.currentEntity},observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:function(t){return[t.moreInfoGetters.currentEntityHistory,function(t){return!!t&&[t]}]}},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(delayedDialogOpen, isLoadingEntityHistoryData)"},isLoadingEntityHistoryData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},hasHistoryComponent:{type:Boolean,bindNuclear:function(t){return t.configGetters.isComponentLoaded("history")},observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:function(t){return t.moreInfoGetters.isCurrentEntityHistoryStale},observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1,computed:"computeShowHistoryComponent(hasHistoryComponent, stateObj)"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},delayedDialogOpen:{type:Boolean,value:!1}},ready:function(){this.$.scrollable.dialogElement=this.$.dialog},computeIsLoadingHistoryData:function(t,e){return!t||e},computeShowHistoryComponent:function(t,e){return this.hasHistoryComponent&&e&&window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(e.domain)===-1},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&this.hass.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){return t?void this.async(function(){this.fetchHistoryData(),this.dialogOpen=!0}.bind(this),10):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){t?this.async(function(){this.delayedDialogOpen=!0}.bind(this),10):!t&&this.stateObj&&(this.async(function(){this.hass.moreInfoActions.deselectEntity()}.bind(this),10),this.delayedDialogOpen=!1)}})</script><dom-module id="ha-voice-command-dialog" assetpath="dialogs/"><template><style>iron-icon{margin-right:8px}.content{width:300px;min-height:80px;font-size:18px}.icon{float:left}.text{margin-left:48px;margin-right:24px}.interimTranscript{color:#a9a9a9}@media all and (max-width:450px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}"><div class="content"><div class="icon"><iron-icon icon="mdi:text-to-speech" hidden$="[[isTransmitting]]"></iron-icon><paper-spinner active$="[[isTransmitting]]" hidden$="[[!isTransmitting]]"></paper-spinner></div><div class="text"><span>{{finalTranscript}}</span> <span class="interimTranscript">[[interimTranscript]]</span> …</div></div></paper-dialog></template></dom-module><script>Polymer({is:"ha-voice-command-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},finalTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.finalTranscript}},interimTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.extraInterimTranscript}},isTransmitting:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isTransmitting}},isListening:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isListening}},showListenInterface:{type:Boolean,computed:"computeShowListenInterface(isListening, isTransmitting)",observer:"showListenInterfaceChanged"}},computeShowListenInterface:function(e,n){return e||n},dialogOpenChanged:function(e){!e&&this.isListening&&this.hass.voiceActions.stop()},showListenInterfaceChanged:function(e){!e&&this.dialogOpen?this.dialogOpen=!1:e&&(this.dialogOpen=!0)}})</script><dom-module id="paper-icon-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item);@apply(--paper-icon-item)}.content-icon{@apply(--layout-horizontal);@apply(--layout-center);width:var(--paper-item-icon-width,56px);@apply(--paper-item-icon)}</style><div id="contentIcon" class="content-icon"><content select="[item-icon]"></content></div><content></content></template><script>Polymer({is:"paper-icon-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="ha-sidebar" assetpath="components/"><template><style include="iron-flex iron-flex-alignment iron-positioning">:host{--sidebar-text:{opacity:var(--dark-primary-opacity);font-weight:500;font-size:14px};display:block;overflow:auto;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-toolbar{font-weight:400;opacity:var(--dark-primary-opacity);border-bottom:1px solid #e0e0e0}paper-menu{padding-bottom:0}paper-icon-item{--paper-icon-item:{cursor:pointer};--paper-item-icon:{color:#000;opacity:var(--dark-secondary-opacity)};--paper-item-selected:{color:var(--default-primary-color);background-color:#e8e8e8;opacity:1};}paper-icon-item.iron-selected{--paper-item-icon:{color:var(--default-primary-color);opacity:1};}paper-icon-item .item-text{@apply(--sidebar-text)}paper-icon-item.iron-selected .item-text{opacity:1}paper-icon-item.logout{margin-top:16px}.divider{height:1px;background-color:#000;margin:4px 0;opacity:var(--dark-divider-opacity)}.setting{@apply(--sidebar-text)}.subheader{@apply(--sidebar-text);padding:16px}.dev-tools{padding:0 8px;opacity:var(--dark-secondary-opacity)}</style><app-toolbar><div main-title="">Home Assistant</div><paper-icon-button icon="mdi:chevron-left" hidden$="[[narrow]]" on-tap="toggleMenu"></paper-icon-button></app-toolbar><paper-menu attr-for-selected="data-panel" selected="[[selected]]" on-iron-select="menuSelect"><paper-icon-item on-tap="menuClicked" data-panel="states"><iron-icon item-icon="" icon="mdi:apps"></iron-icon><span class="item-text">States</span></paper-icon-item><template is="dom-repeat" items="[[computePanels(panels)]]"><paper-icon-item on-tap="menuClicked" data-panel$="[[item.url_path]]"><iron-icon item-icon="" icon="[[item.icon]]"></iron-icon><span class="item-text">[[item.title]]</span></paper-icon-item></template><paper-icon-item on-tap="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="mdi:exit-to-app"></iron-icon><span class="item-text">Log Out</span></paper-icon-item></paper-menu><div><template is="dom-if" if="[[supportPush]]"><div class="divider"></div><paper-item class="horizontal layout justified"><div class="setting">Push Notifications</div><paper-toggle-button on-change="handlePushChange" checked="{{pushToggleChecked}}"></paper-toggle-button></paper-item></template><div class="divider"></div><div class="subheader">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="mdi:remote" data-panel="dev-service" alt="Services" title="Services" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:code-tags" data-panel="dev-state" alt="States" title="States" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:radio-tower" data-panel="dev-event" alt="Events" title="Events" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:file-xml" data-panel="dev-template" alt="Templates" title="Templates" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:information-outline" data-panel="dev-info" alt="Info" title="Info" on-tap="menuClicked"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"ha-sidebar",behaviors:[window.hassBehavior],properties:{hass:{type:Object},menuShown:{type:Boolean},menuSelected:{type:String},narrow:{type:Boolean},selected:{type:String,bindNuclear:function(t){return t.navigationGetters.activePanelName}},panels:{type:Array,bindNuclear:function(t){return[t.navigationGetters.panels,function(t){return t.toJS()}]}},supportPush:{type:Boolean,value:!1,bindNuclear:function(t){return t.pushNotificationGetters.isSupported}},pushToggleChecked:{type:Boolean,bindNuclear:function(t){return t.pushNotificationGetters.isActive}}},created:function(){this._boundUpdateStyles=this.updateStyles.bind(this)},computePanels:function(t){var e={map:1,logbook:2,history:3},n=[];return Object.keys(t).forEach(function(e){t[e].title&&n.push(t[e])}),n.sort(function(t,n){var i=t.component_name in e,o=n.component_name in e;return i&&o?e[t.component_name]-e[n.component_name]:i?-1:o?1:t.title>n.title?1:t.title<n.title?-1:0}),n},menuSelect:function(){this.debounce("updateStyles",this._boundUpdateStyles,1)},menuClicked:function(t){for(var e=t.target,n=5,i=e.getAttribute("data-panel");n&&!i;)e=e.parentElement,i=e.getAttribute("data-panel"),n--;n&&this.selectPanel(i)},toggleMenu:function(){this.fire("close-menu")},selectPanel:function(t){if(t!==this.selected){if("logout"===t)return void this.handleLogOut();this.hass.navigationActions.navigate.apply(null,t.split("/")),this.debounce("updateStyles",this._boundUpdateStyles,1)}},handlePushChange:function(t){t.target.checked?this.hass.pushNotificationActions.subscribePushNotifications().then(function(t){this.pushToggleChecked=t}.bind(this)):this.hass.pushNotificationActions.unsubscribePushNotifications().then(function(t){this.pushToggleChecked=!t}.bind(this))},handleLogOut:function(){this.hass.authActions.logOut()}})</script><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager hass="[[hass]]"></notification-manager><more-info-dialog hass="[[hass]]"></more-info-dialog><ha-voice-command-dialog hass="[[hass]]"></ha-voice-command-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer="" narrow="[[narrow]]" hass="[[hass]]"></ha-sidebar><iron-pages main="" attr-for-selected="id" fallback-selection="panel-resolver" selected="[[activePanel]]" selected-attribute="panel-visible"><partial-cards id="states" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-cards><partial-panel-resolver id="panel-resolver" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-panel-resolver></iron-pages></paper-drawer-panel></template></dom-module><script>Polymer({is:"home-assistant-main",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!0},activePanel:{type:String,bindNuclear:function(e){return e.navigationGetters.activePanelName},observer:"activePanelChanged"},showSidebar:{type:Boolean,value:!1,bindNuclear:function(e){return e.navigationGetters.showSidebar}}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():this.hass.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&this.hass.navigationActions.showSidebar(!1)},activePanelChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){window.removeInitMsg(),this.hass.startUrlSync()},computeForceNarrow:function(e,n){return e||!n},detached:function(){this.hass.stopUrlSync()}})</script></div><dom-module id="home-assistant"><template><template is="dom-if" if="[[loaded]]"><home-assistant-main hass="[[hass]]"></home-assistant-main></template><template is="dom-if" if="[[!loaded]]"><login-form hass="[[hass]]" force-show-loading="[[computeForceShowLoading(dataLoaded, iconsLoaded)]]"></login-form></template></template></dom-module><script>Polymer({is:"home-assistant",hostAttributes:{icons:null},behaviors:[window.hassBehavior],properties:{hass:{type:Object,value:window.hass},icons:{type:String},dataLoaded:{type:Boolean,bindNuclear:function(o){return o.syncGetters.isDataLoaded}},iconsLoaded:{type:Boolean,value:!1},loaded:{type:Boolean,computed:"computeLoaded(dataLoaded, iconsLoaded)"}},computeLoaded:function(o,t){return o&&t},computeForceShowLoading:function(o,t){return o&&!t},loadIcons:function(){var o=function(){this.iconsLoaded=!0}.bind(this);this.importHref("/static/mdi-"+this.icons+".html",o,function(){this.importHref("/static/mdi.html",o,o)})},ready:function(){this.loadIcons()}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index cf5960d5805d5476f6676f719af498050f1bfe84..ca8c799c522e8783885db768038366dd810d5255 100644 GIT binary patch delta 56149 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 z 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 b=KbwI`bBEH;+Kuz|1;RsrktIv&cOfxRN8GL delta 56039 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 u=<?Wd2hY$ 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 diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 029ed863957..84e87e7554b 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 029ed86395786b40cf57079e749d898f88019b20 +Subproject commit 84e87e7554b9cd9acfc63ecadcb3e41ccd89eb30 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html index 7eba3c45d42..531167d98a8 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html @@ -1 +1 @@ -<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script><dom-module id="events-list" assetpath="./"><template><style>ul{margin:0;padding:0}li{list-style:none;line-height:2em}a{color:var(--dark-primary-color)}</style><ul><template is="dom-repeat" items="[[events]]" as="event"><li><a href="#" on-click="eventSelected">{{event.event}}</a> <span>(</span><span>{{event.listenerCount}}</span><span> listeners)</span></li></template></ul></template></dom-module><script>Polymer({is:"events-list",behaviors:[window.hassBehavior],properties:{hass:{type:Object},events:{type:Array,bindNuclear:function(e){return[e.eventGetters.entityMap,function(e){return e.valueSeq().sortBy(function(e){return e.event}).toArray()}]}}},eventSelected:function(e){e.preventDefault(),this.fire("event-selected",{eventType:e.model.event.event})}})</script></div><dom-module id="ha-panel-dev-event"><template><style is="custom-style" include="ha-style iron-flex iron-positioning"></style><style>:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{@apply(--paper-font-body1);padding:24px}.ha-form{margin-right:16px}.header{@apply(--paper-font-title)}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Events</div></app-toolbar></app-header><div class$="[[computeFormClasses(narrow)]]"><div class="flex"><p>Fire an event on the event bus.</p><div class="ha-form"><paper-input label="Event Type" autofocus="" required="" value="{{eventType}}"></paper-input><paper-textarea label="Event Data (JSON, optional)" value="{{eventData}}"></paper-textarea><paper-button on-tap="fireEvent" raised="">Fire Event</paper-button></div></div><div><div class="header">Available Events</div><events-list on-event-selected="eventSelected" hass="[[hass]]"></events-list></div></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-event",properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},eventType:{type:String,value:""},eventData:{type:String,value:""}},eventSelected:function(e){this.eventType=e.detail.eventType},fireEvent:function(){var e;try{e=this.eventData?JSON.parse(this.eventData):{}}catch(e){return void alert("Error parsing JSON: "+e)}this.hass.eventActions.fireEvent(this.eventType,e)},computeFormClasses:function(e){return e?"content fit":"content fit layout horizontal"}})</script></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},attached:function(){var e=navigator.userAgent.match(/iP(?:[oa]d|hone)/);e&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script><dom-module id="events-list" assetpath="./"><template><style>ul{margin:0;padding:0}li{list-style:none;line-height:2em}a{color:var(--dark-primary-color)}</style><ul><template is="dom-repeat" items="[[events]]" as="event"><li><a href="#" on-click="eventSelected">{{event.event}}</a> <span>(</span><span>{{event.listenerCount}}</span><span> listeners)</span></li></template></ul></template></dom-module><script>Polymer({is:"events-list",behaviors:[window.hassBehavior],properties:{hass:{type:Object},events:{type:Array,bindNuclear:function(e){return[e.eventGetters.entityMap,function(e){return e.valueSeq().sortBy(function(e){return e.event}).toArray()}]}}},eventSelected:function(e){e.preventDefault(),this.fire("event-selected",{eventType:e.model.event.event})}})</script></div><dom-module id="ha-panel-dev-event"><template><style is="custom-style" include="ha-style iron-flex iron-positioning"></style><style>:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{@apply(--paper-font-body1);padding:16px}.ha-form{margin-right:16px}.header{@apply(--paper-font-title)}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Events</div></app-toolbar></app-header><div class$="[[computeFormClasses(narrow)]]"><div class="flex"><p>Fire an event on the event bus.</p><div class="ha-form"><paper-input label="Event Type" autofocus="" required="" value="{{eventType}}"></paper-input><paper-textarea label="Event Data (JSON, optional)" value="{{eventData}}"></paper-textarea><paper-button on-tap="fireEvent" raised="">Fire Event</paper-button></div></div><div><div class="header">Available Events</div><events-list on-event-selected="eventSelected" hass="[[hass]]"></events-list></div></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-event",properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},eventType:{type:String,value:""},eventData:{type:String,value:""}},eventSelected:function(e){this.eventType=e.detail.eventType},fireEvent:function(){var e;try{e=this.eventData?JSON.parse(this.eventData):{}}catch(e){return void alert("Error parsing JSON: "+e)}this.hass.eventActions.fireEvent(this.eventType,e)},computeFormClasses:function(e){return e?"content fit":"content fit layout horizontal"}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html.gz index d259eb65eaa18c5f6d235138c124bc7eb8809f73..22fde6f1a5f3e6636e49768837b19d6081bac803 100644 GIT binary patch delta 2696 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 delta 2611 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 GFaQ8)ZxVn2 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html index 1a01891f25f..0ecddfec1f3 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html @@ -1,2 +1,2 @@ -<html><head><meta charset="UTF-8"></head><body><dom-module id="ha-panel-dev-info"><template><style include="iron-positioning ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:24px}.about{text-align:center;line-height:2em}.version{@apply(--paper-font-headline)}.develop{@apply(--paper-font-subhead)}.about a{color:var(--dark-primary-color)}.error-log-intro{margin-top:16px;border-top:1px solid var(--light-primary-color);padding-top:16px}paper-icon-button{float:right}.error-log{@apply(--paper-font-code1) +<html><head><meta charset="UTF-8"></head><body><dom-module id="ha-panel-dev-info"><template><style include="iron-positioning ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:16px}.about{text-align:center;line-height:2em}.version{@apply(--paper-font-headline)}.develop{@apply(--paper-font-subhead)}.about a{color:var(--dark-primary-color)}.error-log-intro{margin-top:16px;border-top:1px solid var(--light-primary-color);padding-top:16px}paper-icon-button{float:right}.error-log{@apply(--paper-font-code1) clear: both;white-space:pre-wrap}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">About</div></app-toolbar></app-header><div class="content fit"><div class="about"><p class="version"><a href="https://home-assistant.io"><img src="/static/icons/favicon-192x192.png" height="192"></a><br>Home Assistant<br>[[hassVersion]]</p><p>Path to configuration.yaml: [[hassConfigDir]]</p><p class="develop"><a href="https://home-assistant.io/developers/credits/" target="_blank">Developed by a bunch of awesome people.</a></p><p>Published under the MIT license<br>Source: <a href="https://github.com/home-assistant/home-assistant" target="_blank">server</a> — <a href="https://github.com/home-assistant/home-assistant-polymer" target="_blank">frontend-ui</a> — <a href="https://github.com/home-assistant/home-assistant-js" target="_blank">frontend-core</a></p><p>Built using <a href="https://www.python.org">Python 3</a>, <a href="https://www.polymer-project.org" target="_blank">Polymer [[polymerVersion]]</a>, <a href="https://optimizely.github.io/nuclear-js/" target="_blank">NuclearJS [[nuclearVersion]]</a><br>Icons by <a href="https://www.google.com/design/icons/" target="_blank">Google</a> and <a href="https://MaterialDesignIcons.com" target="_blank">MaterialDesignIcons.com</a>.</p></div><p class="error-log-intro">The following errors have been logged this session:<paper-icon-button icon="mdi:refresh" on-tap="refreshErrorLog"></paper-icon-button></p><div class="error-log">[[errorLog]]</div></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-info",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},hassVersion:{type:String,bindNuclear:function(r){return r.configGetters.serverVersion}},hassConfigDir:{type:String,bindNuclear:function(r){return r.configGetters.configDir}},polymerVersion:{type:String,value:Polymer.version},nuclearVersion:{type:String,value:"1.4.0"},errorLog:{type:String,value:""}},attached:function(){this.refreshErrorLog()},refreshErrorLog:function(r){r&&r.preventDefault(),this.errorLog="Loading error log…",this.hass.errorLogActions.fetchErrorLog().then(function(r){this.errorLog=r||"No errors have been reported."}.bind(this))}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html.gz index a7ff46fcb8a79d0f1df724933fb404b7a3592677..8c840c85985b1c1ac0056f7060ebd0e1e3256dee 100644 GIT binary patch delta 1124 zcmdnbwU>)szMF$%$<?BX?Akmfhc{?$+gK90o6lE#qMbv1on+1F=a*O9_bJ&n%ilPb zb?P}OR-ZKExUK^oQXvx#DorR|$JrkssVeX+xLvz{b@0^`gU6R%SsC2&oU&_L>A@4b znm<&=WVOF`SyJA5)psuI%CK9<;-6I3NrmWT$lN&4*d&r1Dcl&a{GiYz>(1lfwf_FQ z;U>Lom)nZMT$gEqJoO(>nm^me>$*rfM)^*%!W5lX7OFfqf>pCQye7DIek@*btAO!Z z;Fs6$TMe^Jxio5><BF1aYv%4bxPy14%z`bJT*bbRCO$r>E&ST<X6pu)Gc9|$d!|m^ zuzDXC3rqG^-YI%3j%9qEWyT%JzQR}hf99fGw=Z||i_gyqGfK9d|7oLry^@XWr29f! zYAYsn39Ilbsm{>WHQ08q>iGYQEkSb+p8R2K_Gc+qOK;?&jW)5<gcJ+hmIz35AH2kM z*>CZ?E6;-;z3Osv@mf=(>-CUndeqt}{O6q<x6Uiv$DO)!PkYYpj;Pfx5tBA>Xswv7 zSQp0KRcZOy-2CtLx4P-;uAJt3GW~CTKliU?yz4*OW?$MFv%%|!ly}I3y>ovap5?a1 z@q_L8i_Qgm6IZnq8{2vGGP&*BesQj~?##1?7HG{E($;-)C8Fcl(ZG;bTug^N+7}%Q z_{BCk^xz!d^f|9I0+vm*Hy3}JbW!%f$@25>U)r0L9*kUnS8_S){ACO5wtb%8F=cM9 z$KO-+XL&>K{k_&+SZ&?Q<7&QNB*N%QPegH~N!X8Lyy1(23}5Tky(l}k^zMxuBPpo| z^HW54BZ}mfiWzn4J>v0vRLAvqo<`vPk3WAhoQl|#)THV=cbd<0ADx3gOL#ICE4&Gk zS(GoN8tW-$65wGT!L+-g_Ux1;&&nQL-gl{2HFZ<7LOpk9>f{R>R>&Rw{o;Az9FyV~ zCbbf8E+4o5XKT#swRP12xvCSn%UA1UJo*3N+1%gK{42L@2)-!Z8*)PGdHVOp<4=nu zXNgW*B9O~%xBtz)o8kBBKC$fapSWytoxAg{&DI>xHnC59!1klhtKTTQdDEo#j%yDs z<XW<E*UMu<ORHU?^NoL>oxlFXNrpSckCuMA^?k<mdl!AU)^Z2U*Dq)5)0?nRoxgVP zs|j}xc3N4d>|QYY@+IHWdz05O`>^!S``J7BAG2e<_~BP?TU5LzE@ly5|JQHNv8jze zrXS(nKKD!cnGHXh^w<QxrYMFme|)a~Hl_Hw4d;!S`<S0`>B^o~S(w09dCc;xjeVng z*`93;y=!Ok{=WH#Yr>TWhw6Uu_~f47J@?}OPRqL+1YXxEzq|a+lK1I7o9QbYs&h-v zw9IdbZ;$^}w#l;o%VGt;cdUy%GS}I+*v3`QZ0lz+m)btr-TU`UyXrLOs;N3JCfT*e zm~gp2_B_6&Gx6B{jET9w51Sud-e3Po?n(D<*LkH|^v*C|p3C91tMt{yb=Pa_em`Wc yU(LV!eA7iSMea)JUz4ROH-Frbd;Ck)D^=UxU+R@tY#;t-Do74XImyh;zyJUwwl8S_ delta 1126 zcmdnXwV#V!zMF$%#tfH<?AkmjM>lA0+n9257hi7pL_3H2e}+HW&Myz#Kl4S7>HM@^ zTv~HYxn`V6+auB_Xu3k7*;V0njIi87BQJ$B%lX3P!k4c)nQ(0B)zXA5lQl|pUpGxG zWq<g2#}&ToogVMGR?oKL4qCgVcmIjce{@#FT(H>C$jqvFY?B((!gEckD&<1`??Zq6 z-Pmj9Q`#Hw_*RF`Vu|`km!Ch|$LqRCI!5_UvceRdR~D)~H;h%YIlLygc7D_h$=$*5 zTI1K(@<S3^rC6uzQ`EQI$hOb#Uc#NW5Waw0GOat+KA!maU}|US{5MV!OlgPiu^v0+ zbt5#Mm8og#EjBOlkmM~@zO!4`Fkex#`+4imeAQcNF8BYMeLs__YJBapX1)Ax<wKhl zf9g8kZdYGv;dn_QsA=aVrsUUa%m2vxYFw3^(_^1}IDVDGjTx#^r#Gi+3Nod;aBbWu zptIKCt;s9DT07Ns>oQ!H965D;k%(Tw%Bx;KKj?^ryq0{vJ7C)B>J!_#S8VlaQRVDj z(6mePQTo;eGo~BY6<@Bud#~u3*WNb{^>sJ@SNPuF^3Zf&y06uA?l8{y<W8<V+l%WX zE_ax5?0arm#j(!ZXKF#-G4_>#2Tpu9+f}?=b#tUd$kX7YrLA+MxG(Oo=<<qnbdY!% za7DuFe!?cL8Jl1B1k19XGWqoU*`gSoUCcH=zkQka&pB9p&evOW3!^?{a=l8n{@>|w z^JiQAmGyV-1U$W)Un{YF`{fe>C7-u5dAH3H%+~8Z#&v(kL$466w7o~a-#xc<i}Y+? zH)rNQlY161dY@Z-#Yyd=>l{VTJN^sr3#-1ew%ae`An6_Evth}~%adNt=~T6t-^Z9M z(h}R{{Ka?C677>sY+Ntdyc5>P#~G`x+$sBG%leXJ&zbda6izrL-BdBrS>^uG?pLLR z`dJw(UwO9QUq1HNpZ94FTC268U9RZ%OD%4xpY}T{pZ`1Nyh`^?$d^SExgsC`d1Los zM~t5H=0lT27Udp%p1(W)+tlszZ5ZDNFL}A-{>2IJ-taY5-fs3NV6Jgr>OOO;W8}&2 z3&I`-uwII|Taw&)$<}PqTJyip&WArqVR&cxF{tuo^_lGV8EUQ9SXZ8(Zq4j2e&WL9 z_I+_BC*D19nJc?#@3PsKFZq_<oV=RZhlPLM AtGdtFICw?t+5?Xp9u&MicoqF8k zQx1Q;AGO~0`(>RLv1dUyql;}M$5n?vKRvB)-ZAxODqHrxVW*S#aU)NS8IJP`{fy81 zKbR=HUN<2*JMD0t*?tBU(;XY;+c5{<{+yTor9R2eT<6HH`yIcx)cQH^G(WGZbs;WV z*7%|N!_ObQ@A;Xv*Vl<0Il0$CMDy&|_6^6g^)G*z_`vOP*{6(5`^)L)b3E2hVvW5t zeL}a}!wj33Gt3On{Lt3jlw1E}*^e(D{qHr`6mCE9x$j!5Wx_6DN004(wzt0SI-hS} z^C16A;`c~{TS_U4`Ofu0%K2t;+uzQJ^WVE<dEkGQ{$1*S;>GW8lsd`H#J~UmOj$BF diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html index 9ce5304213e..8364b2e9991 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html @@ -1 +1 @@ -<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-char-counter" assetpath="../../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script><script>function MakePromise(t){function e(t){if("object"!=typeof this||"function"!=typeof t)throw new TypeError;this._state=null,this._value=null,this._deferreds=[],u(t,i.bind(this),r.bind(this))}function n(e){var n=this;return null===this._state?void this._deferreds.push(e):void t(function(){var t=n._state?e.onFulfilled:e.onRejected;if("function"!=typeof t)return void(n._state?e.resolve:e.reject)(n._value);var i;try{i=t(n._value)}catch(t){return void e.reject(t)}e.resolve(i)})}function i(t){try{if(t===this)throw new TypeError;if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void u(e.bind(t),i.bind(this),r.bind(this))}this._state=!0,this._value=t,o.call(this)}catch(t){r.call(this,t)}}function r(t){this._state=!1,this._value=t,o.call(this)}function o(){for(var t=0,e=this._deferreds.length;t<e;t++)n.call(this,this._deferreds[t]);this._deferreds=null}function u(t,e,n){var i=!1;try{t(function(t){i||(i=!0,e(t))},function(t){i||(i=!0,n(t))})}catch(t){if(i)return;i=!0,n(t)}}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.then=function(t,i){var r=this;return new e(function(e,o){n.call(r,{onFulfilled:t,onRejected:i,resolve:e,reject:o})})},e.resolve=function(t){return t&&"object"==typeof t&&t.constructor===e?t:new e(function(e){e(t)})},e.reject=function(t){return new e(function(e,n){n(t)})},e}"undefined"!=typeof module&&(module.exports=MakePromise)</script><script>window.Promise||(window.Promise=MakePromise(Polymer.Base.async))</script><script>Promise.all=Promise.all||function(){var r=Array.prototype.slice.call(1===arguments.length&&Array.isArray(arguments[0])?arguments[0]:arguments);return new Promise(function(n,e){function t(i,c){try{if(c&&("object"==typeof c||"function"==typeof c)){var f=c.then;if("function"==typeof f)return void f.call(c,function(r){t(i,r)},e)}r[i]=c,0===--o&&n(r)}catch(r){e(r)}}if(0===r.length)return n([]);for(var o=r.length,i=0;i<r.length;i++)t(i,r[i])})},Promise.race=Promise.race||function(r){var n=r;return new Promise(function(r,e){for(var t=0,o=n.length;t<o;t++)n[t].then(r,e)})}</script><script>!function(){"use strict";var t=/\.splices$/,e=/\.length$/,i=/\.?#?([0-9]+)$/;Polymer.AppStorageBehavior={properties:{data:{type:Object,notify:!0,value:function(){return this.zeroValue}},sequentialTransactions:{type:Boolean,value:!1},log:{type:Boolean,value:!1}},observers:["__dataChanged(data.*)"],created:function(){this.__initialized=!1,this.__syncingToMemory=!1,this.__initializingStoredValue=null,this.__transactionQueueAdvances=Promise.resolve()},ready:function(){this._initializeStoredValue()},get isNew(){return!0},get transactionsComplete(){return this.__transactionQueueAdvances},get zeroValue(){},save:function(){return Promise.resolve()},reset:function(){},destroy:function(){return this.data=this.zeroValue,this.save()},initializeStoredValue:function(){return this.isNew?Promise.resolve():this._getStoredValue("data").then(function(t){return this._log("Got stored value!",t,this.data),null==t?this._setStoredValue("data",this.data||this.zeroValue):void this.syncToMemory(function(){this.set("data",t)})}.bind(this))},getStoredValue:function(t){return Promise.resolve()},setStoredValue:function(t,e){return Promise.resolve(e)},memoryPathToStoragePath:function(t){return t},storagePathToMemoryPath:function(t){return t},syncToMemory:function(t){this.__syncingToMemory||(this._group("Sync to memory."),this.__syncingToMemory=!0,t.call(this),this.__syncingToMemory=!1,this._groupEnd("Sync to memory."))},valueIsEmpty:function(t){return Array.isArray(t)?0===t.length:Object.prototype.isPrototypeOf(t)?0===Object.keys(t).length:null==t},_getStoredValue:function(t){return this.getStoredValue(this.memoryPathToStoragePath(t))},_setStoredValue:function(t,e){return this.setStoredValue(this.memoryPathToStoragePath(t),e)},_enqueueTransaction:function(t){if(this.sequentialTransactions)t=t.bind(this);else{var e=t.call(this);t=function(){return e}}return this.__transactionQueueAdvances=this.__transactionQueueAdvances.then(t).catch(function(t){this._error("Error performing queued transaction.",t)}.bind(this))},_log:function(){this.log&&console.log.apply(console,arguments)},_error:function(){this.log&&console.error.apply(console,arguments)},_group:function(){this.log&&console.group.apply(console,arguments)},_groupEnd:function(){this.log&&console.groupEnd.apply(console,arguments)},_initializeStoredValue:function(){if(!this.__initializingStoredValue){this._group("Initializing stored value.");var t=this.__initializingStoredValue=this.initializeStoredValue().then(function(){this.__initialized=!0,this.__initializingStoredValue=null,this._groupEnd("Initializing stored value.")}.bind(this));return this._enqueueTransaction(function(){return t})}},__dataChanged:function(t){if(!this.isNew&&!this.__syncingToMemory&&this.__initialized&&!this.__pathCanBeIgnored(t.path)){var e=this.__normalizeMemoryPath(t.path),i=t.value,n=i&&i.indexSplices;this._enqueueTransaction(function(){return this._log("Setting",e+":",n||i),n&&this.__pathIsSplices(e)&&(e=this.__parentPath(e),i=this.get(e)),this._setStoredValue(e,i)})}},__normalizeMemoryPath:function(t){for(var e=t.split("."),i=[],n=[],r=[],o=0;o<e.length;++o)n.push(e[o]),/^#/.test(e[o])?r.push(this.get(i).indexOf(this.get(n))):r.push(e[o]),i.push(e[o]);return r.join(".")},__parentPath:function(t){var e=t.split(".");return e.slice(0,e.length-1).join(".")},__pathCanBeIgnored:function(t){return e.test(t)&&Array.isArray(this.get(this.__parentPath(t)))},__pathIsSplices:function(e){return t.test(e)&&Array.isArray(this.get(this.__parentPath(e)))},__pathRefersToArray:function(i){return(t.test(i)||e.test(i))&&Array.isArray(this.get(this.__parentPath(i)))},__pathTailToIndex:function(t){var e=t.split(".").pop();return window.parseInt(e.replace(i,"$1"),10)}}}()</script><dom-module id="app-localstorage-document" assetpath="../../bower_components/app-storage/app-localstorage/"><script>"use strict";Polymer({is:"app-localstorage-document",behaviors:[Polymer.AppStorageBehavior],properties:{key:{type:String,notify:!0},sessionOnly:{type:Boolean,value:!1},storage:{type:Object,computed:"__computeStorage(sessionOnly)"}},observers:["__storageSourceChanged(storage, key)"],attached:function(){this.listen(window,"storage","__onStorage"),this.listen(window.top,"app-local-storage-changed","__onAppLocalStorageChanged")},detached:function(){this.unlisten(window,"storage","__onStorage"),this.unlisten(window.top,"app-local-storage-changed","__onAppLocalStorageChanged")},get isNew(){return!this.key},save:function(e){try{this.__setStorageValue(e,this.data)}catch(e){return Promise.reject(e)}return this.key=e,Promise.resolve()},reset:function(){this.key=null,this.data=this.zeroValue},destroy:function(){try{this.storage.removeItem(this.key),this.reset()}catch(e){return Promise.reject(e)}return Promise.resolve()},getStoredValue:function(e){var t;if(null!=this.key)try{t=this.__parseValueFromStorage(),t=null!=t?this.get(e,{data:t}):void 0}catch(e){return Promise.reject(e)}return Promise.resolve(t)},setStoredValue:function(e,t){if(null!=this.key){try{this.__setStorageValue(this.key,this.data)}catch(e){return Promise.reject(e)}this.fire("app-local-storage-changed",this,{node:window.top})}return Promise.resolve(t)},__computeStorage:function(e){return e?window.sessionStorage:window.localStorage},__storageSourceChanged:function(e,t){this._initializeStoredValue()},__onStorage:function(e){e.key===this.key&&e.storageArea===this.storage&&this.syncToMemory(function(){this.set("data",this.__parseValueFromStorage())})},__onAppLocalStorageChanged:function(e){e.detail!==this&&e.detail.key===this.key&&e.detail.storage===this.storage&&this.syncToMemory(function(){this.set("data",e.detail.data)})},__parseValueFromStorage:function(){try{return JSON.parse(this.storage.getItem(this.key))}catch(e){console.error("Failed to parse value from storage for",this.key)}},__setStorageValue:function(e,t){this.storage.setItem(this.key,JSON.stringify(this.data))}})</script></dom-module><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.DropdownBehavior={properties:{opened:{type:Boolean,notify:!0,value:!1,reflectToAttribute:!0,observer:"_openedChanged"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0},readonly:{type:Boolean,value:!1,reflectToAttribute:!0}},open:function(){this.disabled||this.readonly||(this.opened=!0)},close:function(){this.opened=!1},detached:function(){this.close()},_openedChanged:function(e,t){void 0!==t&&(this.opened?this._open():this._close())},_open:function(){this.$.overlay._moveTo(document.body),this._addOutsideClickListener(),this.$.overlay.touchDevice||this.inputElement.focused||this.inputElement.focus(),this.fire("vaadin-dropdown-opened")},_close:function(){this.$.overlay._moveTo(this.root),this._removeOutsideClickListener(),this.fire("vaadin-dropdown-closed")},_outsideClickListener:function(e){var t=Polymer.dom(e).path;t.indexOf(this)===-1&&(this.opened=!1)},_addOutsideClickListener:function(){this.$.overlay.touchDevice?(Polymer.Gestures.add(document,"tap",null),document.addEventListener("tap",this._outsideClickListener.bind(this),!0)):document.addEventListener("click",this._outsideClickListener.bind(this),!0)},_removeOutsideClickListener:function(){this.$.overlay.touchDevice?(Polymer.Gestures.remove(document,"tap",null),document.removeEventListener("tap",this._outsideClickListener.bind(this),!0)):document.removeEventListener("click",this._outsideClickListener.bind(this),!0)}}</script><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.ComboBoxBehaviorImpl={properties:{items:{type:Array},allowCustomValue:{type:Boolean,value:!1},value:{type:String,observer:"_valueChanged",notify:!1},hasValue:{type:Boolean,value:!1,readonly:!0,reflectToAttribute:!0},_focusedIndex:{type:Number,value:-1},_filter:{type:String,value:""},selectedItem:{type:Object,readOnly:!0,notify:!0},itemLabelPath:{type:String,value:"label"},itemValuePath:{type:String,value:"value"},inputElement:{type:HTMLElement,readOnly:!0},_toggleElement:Object,_clearElement:Object,_inputElementValue:String,_closeOnBlurIsPrevented:Boolean},observers:["_filterChanged(_filter, itemValuePath, itemLabelPath)","_itemsChanged(items.splices)","_setItems(items, itemValuePath, itemLabelPath)"],listeners:{"vaadin-dropdown-opened":"_onOpened","vaadin-dropdown-closed":"_onClosed",keydown:"_onKeyDown",tap:"_onTap"},ready:function(){void 0===this.value&&(this.value=""),Polymer.IronA11yAnnouncer.requestAvailability()},_onBlur:function(){this._closeOnBlurIsPrevented||this.close()},_onOverlayDown:function(e){this.$.overlay.touchDevice&&e.target!==this.$.overlay.$.scroller&&(this._closeOnBlurIsPrevented=!0,this.inputElement.blur(),this._closeOnBlurIsPrevented=!1)},_onTap:function(e){this._closeOnBlurIsPrevented=!0;var t=Polymer.dom(e).path;t.indexOf(this._clearElement)!==-1?this._clear():t.indexOf(this._toggleElement)!==-1?this._toggle():t.indexOf(this.inputElement)!==-1&&this._openAsync(),this._closeOnBlurIsPrevented=!1},_onKeyDown:function(e){this._isEventKey(e,"down")?(this._closeOnBlurIsPrevented=!0,this._onArrowDown(),this._closeOnBlurIsPrevented=!1,e.preventDefault()):this._isEventKey(e,"up")?(this._closeOnBlurIsPrevented=!0,this._onArrowUp(),this._closeOnBlurIsPrevented=!1,e.preventDefault()):this._isEventKey(e,"enter")?this._onEnter(e):this._isEventKey(e,"esc")&&this._onEscape()},_isEventKey:function(e,t){return Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,t)},_getItemLabel:function(e){return this.$.overlay.getItemLabel(e)},_getItemValue:function(e){var t=this.get(this.itemValuePath,e);return void 0!==t&&null!==t||(t=e?e.toString():""),t},_onArrowDown:function(){this.opened?this.$.overlay._items&&(this._focusedIndex=Math.min(this.$.overlay._items.length-1,this._focusedIndex+1),this._prefillFocusedItemLabel()):this.open()},_onArrowUp:function(){this.opened?(this._focusedIndex>-1?this._focusedIndex=Math.max(0,this._focusedIndex-1):this.$.overlay._items&&(this._focusedIndex=this.$.overlay._items.length-1),this._prefillFocusedItemLabel()):this.open()},_prefillFocusedItemLabel:function(){this._focusedIndex>-1&&(this._inputElementValue=this._getItemLabel(this.$.overlay._focusedItem),this._setSelectionRange())},_setSelectionRange:function(){this.inputElement.setSelectionRange&&this.inputElement.setSelectionRange(0,this._inputElementValue.length)},_onEnter:function(e){this.opened&&(this.allowCustomValue||""===this._inputElementValue||this._focusedIndex>-1)&&(this.close(),e.preventDefault())},_onEscape:function(){this.opened&&(this._focusedIndex>-1?(this._focusedIndex=-1,this._revertInputValue()):this.cancel())},_openAsync:function(){this.async(this.open)},_toggle:function(){this.opened?this.close():this.open()},_clear:function(){this.value=""},cancel:function(){this._inputElementValue=this._getItemLabel(this.selectedItem),this.close()},_onOpened:function(){this.$.overlay.hidden=!this._hasItems(this.$.overlay._items),this.$.overlay.ensureItemsRendered(),this.$.overlay.notifyResize(),this.$.overlay.adjustScrollPosition()},_onClosed:function(){if(this._focusedIndex>-1)this.$.overlay._selectItem(this._focusedIndex),this._inputElementValue=this._getItemLabel(this.selectedItem);else if(""===this._inputElementValue)this._clear();else if(this.allowCustomValue){var e=this.fire("custom-value-set",this._inputElementValue,{cancelable:!0});e.defaultPrevented||(this.value=this._inputElementValue)}else this._inputElementValue=this._getItemLabel(this.selectedItem);this._clearSelectionRange(),this._filter=""},_inputValueChanged:function(e){Polymer.dom(e).path.indexOf(this.inputElement)!==-1&&(this._filter===this._inputElementValue?this._filterChanged(this._filter):this._filter=this._inputElementValue,this.opened||this.open())},_clearSelectionRange:function(){if(this._focusedInput()===this.inputElement&&this.inputElement.setSelectionRange){var e=this._inputElementValue?this._inputElementValue.length:0;this.inputElement.setSelectionRange(e,e)}},_focusedInput:function(){return Polymer.dom(this).querySelector("input:focus")||Polymer.dom(this.root).querySelector("input:focus")},_filterChanged:function(e){this.unlisten(this.$.overlay,"_selected-item-changed","_selectedItemChanged"),this._setItems(this._filterItems(this.items,e)),this._focusedIndex=this.$.overlay.indexOfLabel(e),this.listen(this.$.overlay,"_selected-item-changed","_selectedItemChanged"),this.async(function(){this.$.overlay.notifyResize()}.bind(this))},_revertInputValue:function(){""!==this._filter?this._inputElementValue=this._filter:this._inputElementValue=this._getItemLabel(this.selectedItem),this._clearSelectionRange()},_valueChanged:function(e){this.hasValue=!!e;var t=this._indexOfValue(e),i=t>-1&&this.items[t];this.$.overlay._items&&i&&this.$.overlay._items.indexOf(i)>-1?this.$.overlay._selectItem(i):(this._inputElementValue=this.allowCustomValue?e:"",this._setSelectedItem(null),this._focusedIndex=-1,this.$.overlay.$.selector.clearSelection()),this.fire("change",void 0,{bubbles:!0}),this.close()},_itemsChanged:function(e){e&&e.indexSplices&&this._setItems(e.indexSplices[0].object)},_filterItems:function(e,t){return e?e.filter(function(e){return t=t.toString().toLowerCase()||"",this._getItemLabel(e).toString().toLowerCase().indexOf(t)>-1}.bind(this)):e},_setItems:function(e){this.$.overlay.notifyPath("_items",void 0),this.$.overlay.set("_items",e);var t=this._indexOfValue(this.value,e);t>-1&&this.$.overlay._selectItem(t),this.$.overlay.hidden=!this._hasItems(e),this.$.overlay.notifyResize()},_hasItems:function(e){return e&&e.length},_indexOfValue:function(e,t){if(t=t||this.items,t&&e)for(var i=0;i<t.length;i++)if(this._getItemValue(t[i]).toString()===e.toString())return i;return-1},_selectedItemChanged:function(e,t){null!==t.value&&(this._setSelectedItem(t.value),this._inputElementValue=this._getItemLabel(this.selectedItem),this.value=this._getItemValue(this.selectedItem),this._focusedIndex=this.$.overlay._items.indexOf(t.value)),this.opened&&this.close()},_getValidity:function(){if(this.inputElement.validate)return this.inputElement.validate()},_preventDefault:function(e){e.preventDefault()},_stopPropagation:function(e){e.stopPropagation()}},vaadin.elements.combobox.ComboBoxBehavior=[Polymer.IronFormElementBehavior,vaadin.elements.combobox.DropdownBehavior,vaadin.elements.combobox.ComboBoxBehaviorImpl]</script><dom-module id="iron-list" assetpath="../../bower_components/iron-list/"><template><style>:host{display:block;position:relative}@media only screen and (-webkit-max-device-pixel-ratio:1){:host{will-change:transform}}#items{@apply(--iron-list-items-container);position:relative}:host(:not([grid])) #items>::content>*{width:100%}; #items>::content>*{box-sizing:border-box;margin:0;position:absolute;top:0;will-change:transform}</style><array-selector id="selector" items="{{items}}" selected="{{selectedItems}}" selected-item="{{selectedItem}}"></array-selector><div id="items"><content></content></div></template></dom-module><script>!function(){var t=navigator.userAgent.match(/iP(?:hone|ad;(?: U;)? CPU) OS (\d+)/),i=t&&t[1]>=8,e=3,s="-10000px",h=-100;Polymer({is:"iron-list",properties:{items:{type:Array},maxPhysicalCount:{type:Number,value:500},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},selectedAs:{type:String,value:"selected"},grid:{type:Boolean,value:!1,reflectToAttribute:!0},selectionEnabled:{type:Boolean,value:!1},selectedItem:{type:Object,notify:!0},selectedItems:{type:Object,notify:!0},multiSelection:{type:Boolean,value:!1}},observers:["_itemsChanged(items.*)","_selectionEnabledChanged(selectionEnabled)","_multiSelectionChanged(multiSelection)","_setOverflow(scrollTarget)"],behaviors:[Polymer.Templatizer,Polymer.IronResizableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronScrollTargetBehavior],keyBindings:{up:"_didMoveUp",down:"_didMoveDown",enter:"_didEnter"},_ratio:.5,_scrollerPaddingTop:0,_scrollPosition:0,_physicalSize:0,_physicalAverage:0,_physicalAverageCount:0,_physicalTop:0,_virtualCount:0,_physicalIndexForKey:null,_estScrollHeight:0,_scrollHeight:0,_viewportHeight:0,_viewportWidth:0,_physicalItems:null,_physicalSizes:null,_firstVisibleIndexVal:null,_lastVisibleIndexVal:null,_collection:null,_maxPages:2,_focusedItem:null,_focusedIndex:-1,_offscreenFocusedItem:null,_focusBackfillItem:null,_itemsPerRow:1,_itemWidth:0,_rowHeight:0,_templateCost:0,get _physicalBottom(){return this._physicalTop+this._physicalSize},get _scrollBottom(){return this._scrollPosition+this._viewportHeight},get _virtualEnd(){return this._virtualStart+this._physicalCount-1},get _hiddenContentSize(){var t=this.grid?this._physicalRows*this._rowHeight:this._physicalSize;return t-this._viewportHeight},get _maxScrollTop(){return this._estScrollHeight-this._viewportHeight+this._scrollerPaddingTop},_minVirtualStart:0,get _maxVirtualStart(){return Math.max(0,this._virtualCount-this._physicalCount)},_virtualStartVal:0,set _virtualStart(t){this._virtualStartVal=Math.min(this._maxVirtualStart,Math.max(this._minVirtualStart,t))},get _virtualStart(){return this._virtualStartVal||0},_physicalStartVal:0,set _physicalStart(t){this._physicalStartVal=t%this._physicalCount,this._physicalStartVal<0&&(this._physicalStartVal=this._physicalCount+this._physicalStartVal),this._physicalEnd=(this._physicalStart+this._physicalCount-1)%this._physicalCount},get _physicalStart(){return this._physicalStartVal||0},_physicalCountVal:0,set _physicalCount(t){this._physicalCountVal=t,this._physicalEnd=(this._physicalStart+this._physicalCount-1)%this._physicalCount},get _physicalCount(){return this._physicalCountVal},_physicalEnd:0,get _optPhysicalSize(){return this.grid?this._estRowsInView*this._rowHeight*this._maxPages:0===this._viewportHeight?1/0:this._viewportHeight*this._maxPages},get _isVisible(){return Boolean(this.offsetWidth||this.offsetHeight)},get firstVisibleIndex(){if(null===this._firstVisibleIndexVal){var t=Math.floor(this._physicalTop+this._scrollerPaddingTop);this._firstVisibleIndexVal=this._iterateItems(function(i,e){return t+=this._getPhysicalSizeIncrement(i),t>this._scrollPosition?this.grid?e-e%this._itemsPerRow:e:this.grid&&this._virtualCount-1===e?e-e%this._itemsPerRow:void 0})||0}return this._firstVisibleIndexVal},get lastVisibleIndex(){if(null===this._lastVisibleIndexVal)if(this.grid){var t=this.firstVisibleIndex+this._estRowsInView*this._itemsPerRow-1;this._lastVisibleIndexVal=Math.min(this._virtualCount,t)}else{var i=this._physicalTop;this._iterateItems(function(t,e){return!(i<this._scrollBottom)||(this._lastVisibleIndexVal=e,void(i+=this._getPhysicalSizeIncrement(t)))})}return this._lastVisibleIndexVal},get _defaultScrollTarget(){return this},get _virtualRowCount(){return Math.ceil(this._virtualCount/this._itemsPerRow)},get _estRowsInView(){return Math.ceil(this._viewportHeight/this._rowHeight)},get _physicalRows(){return Math.ceil(this._physicalCount/this._itemsPerRow)},ready:function(){this.addEventListener("focus",this._didFocus.bind(this),!0)},attached:function(){0===this._physicalCount&&this._debounceTemplate(this._render),this.listen(this,"iron-resize","_resizeHandler")},detached:function(){this.unlisten(this,"iron-resize","_resizeHandler")},_setOverflow:function(t){this.style.webkitOverflowScrolling=t===this?"touch":"",this.style.overflow=t===this?"auto":""},updateViewportBoundaries:function(){var t=window.getComputedStyle(this);this._scrollerPaddingTop=this.scrollTarget===this?0:parseInt(t["padding-top"],10),this._isRTL=Boolean("rtl"===t.direction),this._viewportWidth=this.$.items.offsetWidth,this._viewportHeight=this._scrollTargetHeight,this.grid&&this._updateGridMetrics()},_scrollHandler:function(){var t=Math.max(0,Math.min(this._maxScrollTop,this._scrollTop)),i=t-this._scrollPosition,e=i>=0;if(this._scrollPosition=t,this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null,Math.abs(i)>this._physicalSize){var s=Math.round(i/this._physicalAverage)*this._itemsPerRow;this._physicalTop=this._physicalTop+i,this._virtualStart=this._virtualStart+s,this._physicalStart=this._physicalStart+s,this._update()}else{var h=this._getReusables(e);e?(this._physicalTop=h.physicalTop,this._virtualStart=this._virtualStart+h.indexes.length,this._physicalStart=this._physicalStart+h.indexes.length):(this._virtualStart=this._virtualStart-h.indexes.length,this._physicalStart=this._physicalStart-h.indexes.length),0===h.indexes.length?this._increasePoolIfNeeded():this._update(h.indexes,e?null:h.indexes)}},_getReusables:function(t){var i,e,s,h,l=[],o=this._hiddenContentSize*this._ratio,a=this._virtualStart,n=this._virtualEnd,r=this._physicalCount,c=this._physicalTop+this._scrollerPaddingTop,_=this._scrollTop,u=this._scrollBottom;for(t?(i=this._physicalStart,e=this._physicalEnd,s=_-c):(i=this._physicalEnd,e=this._physicalStart,s=this._physicalBottom-u);;){if(h=this._getPhysicalSizeIncrement(i),s-=h,l.length>=r||s<=o)break;if(t){if(n+l.length+1>=this._virtualCount)break;if(c+h>=_)break;l.push(i),c+=h,i=(i+1)%r}else{if(a-l.length<=0)break;if(c+this._physicalSize-h<=u)break;l.push(i),c-=h,i=0===i?r-1:i-1}}return{indexes:l,physicalTop:c-this._scrollerPaddingTop}},_update:function(t,i){if(!t||0!==t.length){if(this._manageFocus(),this._assignModels(t),this._updateMetrics(t),i)for(;i.length;){var e=i.pop();this._physicalTop-=this._getPhysicalSizeIncrement(e)}this._positionItems(),this._updateScrollerSize(),this._increasePoolIfNeeded()}},_createPool:function(t){var i=new Array(t);this._ensureTemplatized();for(var e=0;e<t;e++){var s=this.stamp(null);i[e]=s.root.querySelector("*"),Polymer.dom(this).appendChild(s.root)}return i},_increasePoolIfNeeded:function(){var t=this,i=this._physicalBottom>=this._scrollBottom&&this._physicalTop<=this._scrollPosition;if(this._physicalSize>=this._optPhysicalSize&&i)return!1;var e=Math.round(.5*this._physicalCount);return i?(this._yield(function(){t._increasePool(Math.min(e,Math.max(1,Math.round(50/t._templateCost))))}),!0):(this._debounceTemplate(this._increasePool.bind(this,e)),!0)},_yield:function(t){var i=window,e=i.requestIdleCallback?i.requestIdleCallback(t):i.setTimeout(t,16);Polymer.dom.addDebouncer({complete:function(){i.cancelIdleCallback?i.cancelIdleCallback(e):i.clearTimeout(e),t()}})},_increasePool:function(t){var i=Math.min(this._physicalCount+t,this._virtualCount-this._virtualStart,Math.max(this.maxPhysicalCount,e)),s=this._physicalCount,h=i-s,l=window.performance.now();h<=0||([].push.apply(this._physicalItems,this._createPool(h)),[].push.apply(this._physicalSizes,new Array(h)),this._physicalCount=s+h,this._physicalStart>this._physicalEnd&&this._isIndexRendered(this._focusedIndex)&&this._getPhysicalIndex(this._focusedIndex)<this._physicalEnd&&(this._physicalStart=this._physicalStart+h),this._update(),this._templateCost=(window.performance.now()-l)/h)},_render:function(){if(this.isAttached&&this._isVisible)if(0===this._physicalCount)this.updateViewportBoundaries(),this._increasePool(e);else{var t=this._getReusables(!0);this._physicalTop=t.physicalTop,this._virtualStart=this._virtualStart+t.indexes.length,this._physicalStart=this._physicalStart+t.indexes.length,this._update(t.indexes),this._update()}},_ensureTemplatized:function(){if(!this.ctor){var t={};t.__key__=!0,t[this.as]=!0,t[this.indexAs]=!0,t[this.selectedAs]=!0,t.tabIndex=!0,this._instanceProps=t,this._userTemplate=Polymer.dom(this).querySelector("template"),this._userTemplate?this.templatize(this._userTemplate):console.warn("iron-list requires a template to be provided in light-dom")}},_getStampedChildren:function(){return this._physicalItems},_forwardInstancePath:function(t,i,e){0===i.indexOf(this.as+".")&&this.notifyPath("items."+t.__key__+"."+i.slice(this.as.length+1),e)},_forwardParentProp:function(t,i){this._physicalItems&&this._physicalItems.forEach(function(e){e._templateInstance[t]=i},this)},_forwardParentPath:function(t,i){this._physicalItems&&this._physicalItems.forEach(function(e){e._templateInstance.notifyPath(t,i,!0)},this)},_forwardItemPath:function(t,i){if(this._physicalIndexForKey){var e=t.indexOf("."),s=t.substring(0,e<0?t.length:e),h=this._physicalIndexForKey[s],l=this._offscreenFocusedItem,o=l&&l._templateInstance.__key__===s?l:this._physicalItems[h];if(o&&o._templateInstance.__key__===s)if(e>=0)t=this.as+"."+t.substring(e+1),o._templateInstance.notifyPath(t,i,!0);else{var a=o._templateInstance[this.as];if(Array.isArray(this.selectedItems)){for(var n=0;n<this.selectedItems.length;n++)if(this.selectedItems[n]===a){this.set("selectedItems."+n,i);break}}else this.selectedItem===a&&this.set("selectedItem",i);o._templateInstance[this.as]=i}}},_itemsChanged:function(t){"items"===t.path?(this._virtualStart=0,this._physicalTop=0,this._virtualCount=this.items?this.items.length:0,this._collection=this.items?Polymer.Collection.get(this.items):null,this._physicalIndexForKey={},this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null,this._physicalCount=this._physicalCount||0,this._physicalItems=this._physicalItems||[],this._physicalSizes=this._physicalSizes||[],this._physicalStart=0,this._scrollTop>this._scrollerPaddingTop&&this._resetScrollPosition(0),this._removeFocusedItem(),this._debounceTemplate(this._render)):"items.splices"===t.path?(this._adjustVirtualIndex(t.value.indexSplices),this._virtualCount=this.items?this.items.length:0,this._debounceTemplate(this._render)):this._forwardItemPath(t.path.split(".").slice(1).join("."),t.value)},_adjustVirtualIndex:function(t){t.forEach(function(t){if(t.removed.forEach(this._removeItem,this),t.index<this._virtualStart){var i=Math.max(t.addedCount-t.removed.length,t.index-this._virtualStart);this._virtualStart=this._virtualStart+i,this._focusedIndex>=0&&(this._focusedIndex=this._focusedIndex+i)}},this)},_removeItem:function(t){this.$.selector.deselect(t),this._focusedItem&&this._focusedItem._templateInstance[this.as]===t&&this._removeFocusedItem()},_iterateItems:function(t,i){var e,s,h,l;if(2===arguments.length&&i){for(l=0;l<i.length;l++)if(e=i[l],s=this._computeVidx(e),null!=(h=t.call(this,e,s)))return h}else{for(e=this._physicalStart,s=this._virtualStart;e<this._physicalCount;e++,s++)if(null!=(h=t.call(this,e,s)))return h;for(e=0;e<this._physicalStart;e++,s++)if(null!=(h=t.call(this,e,s)))return h}},_computeVidx:function(t){return t>=this._physicalStart?this._virtualStart+(t-this._physicalStart):this._virtualStart+(this._physicalCount-this._physicalStart)+t},_assignModels:function(t){this._iterateItems(function(t,i){var e=this._physicalItems[t],s=e._templateInstance,h=this.items&&this.items[i];null!=h?(s[this.as]=h,s.__key__=this._collection.getKey(h),s[this.selectedAs]=this.$.selector.isSelected(h),s[this.indexAs]=i,s.tabIndex=this._focusedIndex===i?0:-1,this._physicalIndexForKey[s.__key__]=t,e.removeAttribute("hidden")):(s.__key__=null,e.setAttribute("hidden",""))},t)},_updateMetrics:function(t){Polymer.dom.flush();var i=0,e=0,s=this._physicalAverageCount,h=this._physicalAverage;this._iterateItems(function(t,s){e+=this._physicalSizes[t]||0,this._physicalSizes[t]=this._physicalItems[t].offsetHeight,i+=this._physicalSizes[t],this._physicalAverageCount+=this._physicalSizes[t]?1:0},t),this.grid?(this._updateGridMetrics(),this._physicalSize=Math.ceil(this._physicalCount/this._itemsPerRow)*this._rowHeight):this._physicalSize=this._physicalSize+i-e,this._physicalAverageCount!==s&&(this._physicalAverage=Math.round((h*s+i)/this._physicalAverageCount))},_updateGridMetrics:function(){this._itemWidth=this._physicalCount>0?this._physicalItems[0].getBoundingClientRect().width:200,this._rowHeight=this._physicalCount>0?this._physicalItems[0].offsetHeight:200,this._itemsPerRow=this._itemWidth?Math.floor(this._viewportWidth/this._itemWidth):this._itemsPerRow},_positionItems:function(){this._adjustScrollPosition();var t=this._physicalTop;if(this.grid){var i=this._itemsPerRow*this._itemWidth,e=(this._viewportWidth-i)/2;this._iterateItems(function(i,s){var h=s%this._itemsPerRow,l=Math.floor(h*this._itemWidth+e);this._isRTL&&(l*=-1),this.translate3d(l+"px",t+"px",0,this._physicalItems[i]),this._shouldRenderNextRow(s)&&(t+=this._rowHeight)})}else this._iterateItems(function(i,e){this.translate3d(0,t+"px",0,this._physicalItems[i]),t+=this._physicalSizes[i]})},_getPhysicalSizeIncrement:function(t){return this.grid?this._computeVidx(t)%this._itemsPerRow!==this._itemsPerRow-1?0:this._rowHeight:this._physicalSizes[t]},_shouldRenderNextRow:function(t){return t%this._itemsPerRow===this._itemsPerRow-1},_adjustScrollPosition:function(){var t=0===this._virtualStart?this._physicalTop:Math.min(this._scrollPosition+this._physicalTop,0);t&&(this._physicalTop=this._physicalTop-t,i||0===this._physicalTop||this._resetScrollPosition(this._scrollTop-t))},_resetScrollPosition:function(t){this.scrollTarget&&(this._scrollTop=t,this._scrollPosition=this._scrollTop)},_updateScrollerSize:function(t){this.grid?this._estScrollHeight=this._virtualRowCount*this._rowHeight:this._estScrollHeight=this._physicalBottom+Math.max(this._virtualCount-this._physicalCount-this._virtualStart,0)*this._physicalAverage,t=t||0===this._scrollHeight,t=t||this._scrollPosition>=this._estScrollHeight-this._physicalSize,t=t||this.grid&&this.$.items.style.height<this._estScrollHeight,(t||Math.abs(this._estScrollHeight-this._scrollHeight)>=this._optPhysicalSize)&&(this.$.items.style.height=this._estScrollHeight+"px",this._scrollHeight=this._estScrollHeight)},scrollToItem:function(t){return this.scrollToIndex(this.items.indexOf(t))},scrollToIndex:function(t){if(!("number"!=typeof t||t<0||t>this.items.length-1)&&(Polymer.dom.flush(),0!==this._physicalCount)){t=Math.min(Math.max(t,0),this._virtualCount-1),(!this._isIndexRendered(t)||t>=this._maxVirtualStart)&&(this._virtualStart=this.grid?t-2*this._itemsPerRow:t-1),this._manageFocus(),this._assignModels(),this._updateMetrics(),this._physicalTop=Math.floor(this._virtualStart/this._itemsPerRow)*this._physicalAverage;for(var i=this._physicalStart,e=this._virtualStart,s=0,h=this._hiddenContentSize;e<t&&s<=h;)s+=this._getPhysicalSizeIncrement(i),i=(i+1)%this._physicalCount,e++;this._updateScrollerSize(!0),this._positionItems(),this._resetScrollPosition(this._physicalTop+this._scrollerPaddingTop+s),this._increasePoolIfNeeded(),this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null}},_resetAverage:function(){this._physicalAverage=0,this._physicalAverageCount=0},_resizeHandler:function(){this._debounceTemplate(function(){var t=Math.abs(this._viewportHeight-this._scrollTargetHeight);this.updateViewportBoundaries(),("ontouchstart"in window||navigator.maxTouchPoints>0)&&t>0&&t<100||(this._isVisible?(this.toggleScrollListener(!0),this._resetAverage(),this._render()):this.toggleScrollListener(!1))}.bind(this))},_getModelFromItem:function(t){var i=this._collection.getKey(t),e=this._physicalIndexForKey[i];return null!=e?this._physicalItems[e]._templateInstance:null},_getNormalizedItem:function(t){if(void 0===this._collection.getKey(t)){if("number"==typeof t){if(t=this.items[t],!t)throw new RangeError("<item> not found");return t}throw new TypeError("<item> should be a valid item")}return t},selectItem:function(t){t=this._getNormalizedItem(t);var i=this._getModelFromItem(t);!this.multiSelection&&this.selectedItem&&this.deselectItem(this.selectedItem),i&&(i[this.selectedAs]=!0),this.$.selector.select(t),this.updateSizeForItem(t)},deselectItem:function(t){t=this._getNormalizedItem(t);var i=this._getModelFromItem(t);i&&(i[this.selectedAs]=!1),this.$.selector.deselect(t),this.updateSizeForItem(t)},toggleSelectionForItem:function(t){t=this._getNormalizedItem(t),this.$.selector.isSelected(t)?this.deselectItem(t):this.selectItem(t)},clearSelection:function(){function t(t){var i=this._getModelFromItem(t);i&&(i[this.selectedAs]=!1)}Array.isArray(this.selectedItems)?this.selectedItems.forEach(t,this):this.selectedItem&&t.call(this,this.selectedItem),this.$.selector.clearSelection()},_selectionEnabledChanged:function(t){var i=t?this.listen:this.unlisten;i.call(this,this,"tap","_selectionHandler")},_selectionHandler:function(t){var i=this.modelForElement(t.target);if(i){var e,s,l=Polymer.dom(t).path[0],o=Polymer.dom(this.domHost?this.domHost.root:document).activeElement,a=this._physicalItems[this._getPhysicalIndex(i[this.indexAs])];"input"!==l.localName&&"button"!==l.localName&&"select"!==l.localName&&(e=i.tabIndex,i.tabIndex=h,s=o?o.tabIndex:-1,i.tabIndex=e,o&&a!==o&&a.contains(o)&&s!==h||this.toggleSelectionForItem(i[this.as]))}},_multiSelectionChanged:function(t){this.clearSelection(),this.$.selector.multi=t},updateSizeForItem:function(t){t=this._getNormalizedItem(t);var i=this._collection.getKey(t),e=this._physicalIndexForKey[i];null!=e&&(this._updateMetrics([e]),this._positionItems())},_manageFocus:function(){var t=this._focusedIndex;t>=0&&t<this._virtualCount?this._isIndexRendered(t)?this._restoreFocusedItem():this._createFocusBackfillItem():this._virtualCount>0&&this._physicalCount>0&&(this._focusedIndex=this._virtualStart,this._focusedItem=this._physicalItems[this._physicalStart])},_isIndexRendered:function(t){return t>=this._virtualStart&&t<=this._virtualEnd},_isIndexVisible:function(t){return t>=this.firstVisibleIndex&&t<=this.lastVisibleIndex},_getPhysicalIndex:function(t){return this._physicalIndexForKey[this._collection.getKey(this._getNormalizedItem(t))]},_focusPhysicalItem:function(t){if(!(t<0||t>=this._virtualCount)){this._restoreFocusedItem(),this._isIndexRendered(t)||this.scrollToIndex(t);var i,e=this._physicalItems[this._getPhysicalIndex(t)],s=e._templateInstance;s.tabIndex=h,e.tabIndex===h&&(i=e),i||(i=Polymer.dom(e).querySelector('[tabindex="'+h+'"]')),s.tabIndex=0,this._focusedIndex=t,i&&i.focus()}},_removeFocusedItem:function(){this._offscreenFocusedItem&&Polymer.dom(this).removeChild(this._offscreenFocusedItem),this._offscreenFocusedItem=null,this._focusBackfillItem=null,this._focusedItem=null,this._focusedIndex=-1},_createFocusBackfillItem:function(){var t=this._focusedIndex,i=this._getPhysicalIndex(t);if(!(this._offscreenFocusedItem||null==i||t<0)){if(!this._focusBackfillItem){var e=this.stamp(null);this._focusBackfillItem=e.root.querySelector("*"),Polymer.dom(this).appendChild(e.root)}this._offscreenFocusedItem=this._physicalItems[i],this._offscreenFocusedItem._templateInstance.tabIndex=0,this._physicalItems[i]=this._focusBackfillItem,this.translate3d(0,s,0,this._offscreenFocusedItem)}},_restoreFocusedItem:function(){var t,i=this._focusedIndex;!this._offscreenFocusedItem||this._focusedIndex<0||(this._assignModels(),t=this._getPhysicalIndex(i),null!=t&&(this._focusBackfillItem=this._physicalItems[t],this._focusBackfillItem._templateInstance.tabIndex=-1,this._physicalItems[t]=this._offscreenFocusedItem,this._offscreenFocusedItem=null,this.translate3d(0,s,0,this._focusBackfillItem)))},_didFocus:function(t){var i=this.modelForElement(t.target),e=this._focusedItem?this._focusedItem._templateInstance:null,s=null!==this._offscreenFocusedItem,h=this._focusedIndex;i&&e&&(e===i?this._isIndexVisible(h)||this.scrollToIndex(h):(this._restoreFocusedItem(),e.tabIndex=-1,i.tabIndex=0,h=i[this.indexAs],this._focusedIndex=h,this._focusedItem=this._physicalItems[this._getPhysicalIndex(h)],s&&!this._offscreenFocusedItem&&this._update()))},_didMoveUp:function(){this._focusPhysicalItem(this._focusedIndex-1)},_didMoveDown:function(t){t.detail.keyboardEvent.preventDefault(),this._focusPhysicalItem(this._focusedIndex+1)},_didEnter:function(t){this._focusPhysicalItem(this._focusedIndex),this._selectionHandler(t.detail.keyboardEvent)}})}()</script><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.OverlayBehaviorImpl={properties:{positionTarget:{type:Object},verticalOffset:{type:Number,value:0},_alignedAbove:{type:Boolean,value:!1}},listeners:{"iron-resize":"_setPosition"},created:function(){this._boundSetPosition=this._setPosition.bind(this)},_unwrapIfNeeded:function(t){var e=Polymer.Settings.hasShadow&&!Polymer.Settings.nativeShadow;return e?window.unwrap(t):t},_processPendingMutationObserversFor:function(t){Polymer.Settings.useNativeCustomElements||CustomElements.takeRecords(t)},_moveTo:function(t){var e=this.parentNode;Polymer.dom(t).appendChild(this),e&&(this._processPendingMutationObserversFor(e),e.host&&Polymer.StyleTransformer.dom(this,e.host.is,this._scopeCssViaAttr,!0)),this._processPendingMutationObserversFor(this),t.host&&Polymer.StyleTransformer.dom(this,t.host.is,this._scopeCssViaAttr),t===document.body?(this.style.position=this._isPositionFixed(this.positionTarget)?"fixed":"absolute",window.addEventListener("scroll",this._boundSetPosition,!0),this._setPosition()):window.removeEventListener("scroll",this._boundSetPosition,!0)},_verticalOffset:function(t,e){return this._alignedAbove?-t.height:e.height+this.verticalOffset},_isPositionFixed:function(t){var e=t.offsetParent;return"fixed"===window.getComputedStyle(this._unwrapIfNeeded(t)).position||e&&this._isPositionFixed(e)},_maxHeight:function(t){var e=8,i=116,o=Math.min(window.innerHeight,document.body.scrollHeight-document.body.scrollTop);return this._alignedAbove?Math.max(t.top-e+Math.min(document.body.scrollTop,0),i)+"px":Math.max(o-t.bottom-e,i)+"px"},_setPosition:function(t){if(t&&t.target){var e=t.target===document?document.body:t.target,i=this._unwrapIfNeeded(this.parentElement);if(!e.contains(this)&&!e.contains(this.positionTarget)||i!==document.body)return}var o=this.positionTarget.getBoundingClientRect();this._alignedAbove=this._shouldAlignAbove(),this.style.maxHeight=this._maxHeight(o),this.$.selector.style.maxHeight=this._maxHeight(o);var s=this.getBoundingClientRect();this._translateX=o.left-s.left+(this._translateX||0),this._translateY=o.top-s.top+(this._translateY||0)+this._verticalOffset(s,o);var n=window.devicePixelRatio||1;this._translateX=Math.round(this._translateX*n)/n,this._translateY=Math.round(this._translateY*n)/n,this.translate3d(this._translateX+"px",this._translateY+"px","0"),this.style.width=this.positionTarget.clientWidth+"px",this.updateViewportBoundaries()},_shouldAlignAbove:function(){var t=(window.innerHeight-this.positionTarget.getBoundingClientRect().bottom-Math.min(document.body.scrollTop,0))/window.innerHeight;return t<.3}},vaadin.elements.combobox.OverlayBehavior=[Polymer.IronResizableBehavior,vaadin.elements.combobox.OverlayBehaviorImpl]</script><dom-module id="vaadin-combo-box-overlay" assetpath="../../bower_components/vaadin-combo-box/"><style>:host{position:absolute;@apply(--shadow-elevation-2dp);background:#fff;border-radius:0 0 2px 2px;top:0;left:0;z-index:200;overflow:hidden}#scroller{overflow:auto;max-height:var(--vaadin-combo-box-overlay-max-height,65vh);transform:translate3d(0,0,0);-webkit-overflow-scrolling:touch}#selector{--iron-list-items-container:{border-top:8px solid transparent;border-bottom:8px solid transparent};}#selector .item{cursor:pointer;padding:13px 16px;color:var(--primary-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#selector .item[focused],#selector:not([touch-device]) .item:hover{background:#eee}#selector .item[selected]{color:var(--primary-color)}</style><template><div id="scroller" scroller="[[_getScroller()]]" on-tap="_stopPropagation"><iron-list id="selector" touch-device$="[[touchDevice]]" role="listbox" data-selection$="[[_ariaActiveIndex]]" on-touchend="_preventDefault" selected-item="{{_selectedItem}}" items="[[_items]]" selection-enabled="" scroll-target="[[_getScroller()]]"><template><div class="item" id$="it[[index]]" selected$="[[selected]]" role$="[[_getAriaRole(index)]]" aria-selected$="[[_getAriaSelected(_focusedIndex,index)]]" focused$="[[_isItemFocused(_focusedIndex,index)]]">[[getItemLabel(item)]]</div></template></iron-list></div></template></dom-module><script>Polymer({is:"vaadin-combo-box-overlay",behaviors:[vaadin.elements.combobox.OverlayBehavior],properties:{touchDevice:{type:Boolean,reflectToAttribute:!0,value:function(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}},_selectedItem:{type:String,notify:!0},_items:{type:Object},_focusedIndex:{type:Number,notify:!0,value:-1,observer:"_focusedIndexChanged"},_focusedItem:{type:String,computed:"_getFocusedItem(_focusedIndex)"},_ariaActiveIndex:{type:Number,notify:!0,computed:"_getAriaActiveIndex(_focusedIndex)"},_itemLabelPath:{type:String,value:"label"},_itemValuePath:{type:String,value:"value"}},ready:function(){this._patchWheelOverScrolling(),void 0!==this.$.selector._scroller&&(this.$.selector._scroller=this._getScroller())},_getFocusedItem:function(e){if(e>=0)return this._items[e]},indexOfLabel:function(e){if(this._items&&e)for(var t=0;t<this._items.length;t++)if(this.getItemLabel(this._items[t]).toString().toLowerCase()===e.toString().toLowerCase())return t;return-1},getItemLabel:function(e){var t=this.get(this._itemLabelPath,e);return void 0!==t&&null!==t||(t=e?e.toString():""),t},_isItemFocused:function(e,t){return e==t},_getAriaActiveIndex:function(e){return e>=0&&"it"+e},_getAriaSelected:function(e,t){return this._isItemFocused(e,t).toString()},_getAriaRole:function(e){return void 0!==e&&"option"},_focusedIndexChanged:function(e){e>=0&&this._scrollIntoView(e)},_scrollIntoView:function(e){if(void 0!==this._visibleItemsCount()){var t=e;e>this._lastVisibleIndex()?(t=e-this._visibleItemsCount()+1,this.$.selector.scrollToIndex(e)):e>this.$.selector.firstVisibleIndex&&(t=this.$.selector.firstVisibleIndex),this.$.selector.scrollToIndex(Math.max(0,t))}},ensureItemsRendered:function(){this.$.selector.flushDebouncer("_debounceTemplate"),this.$.selector._render&&this.$.selector._render()},adjustScrollPosition:function(){this._items&&this._scrollIntoView(this._focusedIndex)},_getScroller:function(){return this.$.scroller},_patchWheelOverScrolling:function(){var e=this.$.selector;e.addEventListener("wheel",function(t){var i=e._scroller||e.scrollTarget,o=0===i.scrollTop,r=i.scrollHeight-i.scrollTop-i.clientHeight<=1;o&&t.deltaY<0?t.preventDefault():r&&t.deltaY>0&&t.preventDefault()})},updateViewportBoundaries:function(){this._cachedViewportTotalPadding=void 0,this.$.selector.updateViewportBoundaries()},get _viewportTotalPadding(){if(void 0===this._cachedViewportTotalPadding){var e=window.getComputedStyle(this._unwrapIfNeeded(this.$.selector.$.items));this._cachedViewportTotalPadding=[e.paddingTop,e.paddingBottom,e.borderTopWidth,e.borderBottomWidth].map(function(e){return parseInt(e,10)}).reduce(function(e,t){return e+t})}return this._cachedViewportTotalPadding},_visibleItemsCount:function(){var e=this.$.selector._physicalStart,t=this.$.selector._physicalSizes[e],i=this.$.selector._viewportHeight||this.$.selector._viewportSize;if(t&&i){var o=(i-this._viewportTotalPadding)/t;return Math.floor(o)}},_lastVisibleIndex:function(){if(this._visibleItemsCount())return this.$.selector.firstVisibleIndex+this._visibleItemsCount()-1},_selectItem:function(e){e="number"==typeof e?this._items[e]:e,this.$.selector.selectedItem!==e&&this.$.selector.selectItem(e)},_preventDefault:function(e){e.preventDefault()},_stopPropagation:function(e){e.stopPropagation()}})</script><dom-module id="vaadin-combo-box-shared-styles" assetpath="../../bower_components/vaadin-combo-box/"><template><style>.rotate-on-open,:host ::content .rotate-on-open{transition:all .2s!important}:host([opened]) .rotate-on-open,:host([opened]) ::content .rotate-on-open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host ::content paper-icon-button.small,paper-icon-button.small{box-sizing:content-box!important;bottom:-6px!important;width:20px!important;height:20px!important;padding:4px 6px 8px!important}:host(:not([has-value])) .clear-button,:host(:not([has-value])) ::content .clear-button,:host(:not([opened])) .clear-button,:host(:not([opened])) ::content .clear-button{display:none}:host([disabled]) .toggle-button,:host([disabled]) ::content .toggle-button,:host([readonly]) .toggle-button,:host([readonly]) ::content .toggle-button{display:none}</style></template><script>Polymer({is:"vaadin-combo-box-shared-styles"})</script></dom-module><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg size="24" name="vaadin-combo-box"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g><g id="clear"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g></defs></svg></iron-iconset-svg><dom-module id="vaadin-combo-box" assetpath="../../bower_components/vaadin-combo-box/"><style include="vaadin-combo-box-shared-styles">:host{display:block;padding:8px 0}:host>#overlay{display:none}paper-input-container{position:relative;padding:0}:host ::content paper-icon-button.clear-button,:host ::content paper-icon-button.toggle-button,paper-icon-button.clear-button,paper-icon-button.toggle-button{position:absolute;bottom:-4px;right:-4px;line-height:18px!important;width:32px;height:32px;padding:4px;text-align:center;color:rgba(0,0,0,.38);cursor:pointer;margin-top:-1px;--paper-icon-button-ink-color:rgba(0, 0, 0, .54)}paper-input-container ::content paper-icon-button.clear-button,paper-input-container paper-icon-button.clear-button{right:28px}:host([opened]) paper-input-container ::content paper-icon-button,:host([opened]) paper-input-container paper-icon-button,paper-input-container ::content paper-icon-button:hover,paper-input-container paper-icon-button:hover{color:rgba(0,0,0,.54)}:host([opened]) paper-input-container ::content paper-icon-button:hover,:host([opened]) paper-input-container paper-icon-button:hover{color:rgba(0,0,0,.86)}:host([opened]) paper-input-container{z-index:20}#input::-ms-clear{display:none}#input{box-sizing:border-box;padding-right:28px}:host([opened][has-value]) #input{padding-right:60px;margin-right:-32px}</style><template><paper-input-container id="inputContainer" disabled$="[[disabled]]" no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" invalid="[[invalid]]"><label on-down="_preventDefault" id="label" hidden$="[[!label]]" aria-hidden="true" on-tap="_openAsync">[[label]]</label><content select="[prefix]"></content><input is="iron-input" id="input" type="text" role="combobox" autocomplete="off" autocapitalize="none" bind-value="{{_inputElementValue}}" aria-labelledby="label" aria-activedescendant$="[[_ariaActiveIndex]]" aria-expanded$="[[_getAriaExpanded(opened)]]" aria-autocomplete="list" aria-owns="overlay" disabled$="[[disabled]]" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" pattern$="[[pattern]]" required$="[[required]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" size$="[[size]]" on-input="_inputValueChanged" on-blur="_onBlur" on-change="_stopPropagation" key-event-target=""><content select="[suffix]"></content><content select=".clear-button"><paper-icon-button id="clearIcon" tabindex="-1" icon="vaadin-combo-box:clear" on-down="_preventDefault" class="clear-button small"></paper-icon-button></content><content select=".toggle-button"><paper-icon-button id="toggleIcon" tabindex="-1" icon="vaadin-combo-box:arrow-drop-down" aria-controls="overlay" on-down="_preventDefault" class="toggle-button rotate-on-open"></paper-icon-button></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template></paper-input-container><vaadin-combo-box-overlay id="overlay" _aria-active-index="{{_ariaActiveIndex}}" position-target="[[_getPositionTarget()]]" _focused-index="[[_focusedIndex]]" _item-label-path="[[itemLabelPath]]" on-down="_onOverlayDown" on-mousedown="_preventDefault" vertical-offset="2"></vaadin-combo-box-overlay></template></dom-module><script>Polymer({is:"vaadin-combo-box",behaviors:[Polymer.IronValidatableBehavior,vaadin.elements.combobox.ComboBoxBehavior],properties:{label:{type:String,reflectToAttribute:!0},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},disabled:{type:Boolean,value:!1},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},autofocus:{type:Boolean},inputmode:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number}},attached:function(){this._setInputElement(this.$.input),this._toggleElement=Polymer.dom(this).querySelector(".toggle-button")||this.$.toggleIcon,this._clearElement=Polymer.dom(this).querySelector(".clear-button")||this.$.clearIcon},_computeAlwaysFloatLabel:function(e,t){return t||e},_getPositionTarget:function(){return this.$.inputContainer},_getAriaExpanded:function(e){return e.toString()}})</script></div><dom-module id="ha-panel-dev-service"><template><style include="ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:24px}.ha-form{margin-right:16px;max-width:500px}.description{margin-top:24px;white-space:pre-wrap}.header{@apply(--paper-font-title)}.attributes th{text-align:left}.attributes tr{vertical-align:top}.attributes tr:nth-child(even){background-color:#eee}.attributes td:nth-child(3){white-space:pre-wrap;word-break:break-word}pre{margin:0}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Services</div></app-toolbar></app-header><app-localstorage-document key="panel-dev-service-state-domain" data="{{domain}}"></app-localstorage-document><app-localstorage-document key="panel-dev-service-state-service" data="{{service}}"></app-localstorage-document><app-localstorage-document key="panel-dev-service-state-servicedata" data="{{serviceData}}"></app-localstorage-document><div class="content"><p>Call a service from a component.</p><div class="ha-form"><vaadin-combo-box label="Domain" items="[[computeDomains(serviceDomains)]]" value="{{domain}}"></vaadin-combo-box><vaadin-combo-box label="Service" items="[[computeServices(serviceDomains, domain)]]" value="{{service}}"></vaadin-combo-box><paper-textarea label="Service Data (JSON, optional)" value="{{serviceData}}"></paper-textarea><paper-button on-tap="callService" raised="">Call Service</paper-button></div><template is="dom-if" if="[[!domain]]"><h1>Select a domain and service to see the description</h1></template><template is="dom-if" if="[[domain]]"><template is="dom-if" if="[[!service]]"><h1>Select a service to see the description</h1></template></template><template is="dom-if" if="[[domain]]"><template is="dom-if" if="[[service]]"><template is="dom-if" if="[[!_attributes.length]]"><h1>No description is available</h1></template><template is="dom-if" if="[[_attributes.length]]"><h1>Valid Parameters</h1><table class="attributes"><tbody><tr><th>Parameter</th><th>Description</th><th>Example</th></tr><template is="dom-repeat" items="[[_attributes]]" as="attribute"><tr><td><pre>[[attribute.key]]</pre></td><td>[[attribute.description]]</td><td>[[attribute.example]]</td></tr></template></tbody></table></template></template></template></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-service",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},domain:{type:String,value:"",observer:"domainChanged"},service:{type:String,value:"",observer:"serviceChanged"},serviceData:{type:String,value:""},_attributes:{type:Array,computed:"computeAttributesArray(hass, domain, service)"},serviceDomains:{type:Array,bindNuclear:function(e){return e.serviceGetters.entityMap}}},computeAttributesArray:function(e,t,r){return e.reactor.evaluate([e.serviceGetters.entityMap,function(e){return e.has(t)&&e.get(t).get("services").has(r)?e.get(t).get("services").get(r).get("fields").map(function(e,t){var r=e.toJS();return r.key=t,r}).toArray():[]}])},computeDomains:function(e){return e.valueSeq().map(function(e){return e.domain}).sort().toJS()},computeServices:function(e,t){return t?e.get(t).get("services").keySeq().toArray():""},domainChanged:function(){this.service="",this.serviceData=""},serviceChanged:function(){this.serviceData=""},callService:function(){var e;try{e=this.serviceData?JSON.parse(this.serviceData):{}}catch(e){return void alert("Error parsing JSON: "+e)}this.hass.serviceActions.callService(this.domain,this.service,e)}})</script></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},attached:function(){var e=navigator.userAgent.match(/iP(?:[oa]d|hone)/);e&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-char-counter" assetpath="../../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script><script>function MakePromise(t){function e(t){if("object"!=typeof this||"function"!=typeof t)throw new TypeError;this._state=null,this._value=null,this._deferreds=[],u(t,i.bind(this),r.bind(this))}function n(e){var n=this;return null===this._state?void this._deferreds.push(e):void t(function(){var t=n._state?e.onFulfilled:e.onRejected;if("function"!=typeof t)return void(n._state?e.resolve:e.reject)(n._value);var i;try{i=t(n._value)}catch(t){return void e.reject(t)}e.resolve(i)})}function i(t){try{if(t===this)throw new TypeError;if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void u(e.bind(t),i.bind(this),r.bind(this))}this._state=!0,this._value=t,o.call(this)}catch(t){r.call(this,t)}}function r(t){this._state=!1,this._value=t,o.call(this)}function o(){for(var t=0,e=this._deferreds.length;t<e;t++)n.call(this,this._deferreds[t]);this._deferreds=null}function u(t,e,n){var i=!1;try{t(function(t){i||(i=!0,e(t))},function(t){i||(i=!0,n(t))})}catch(t){if(i)return;i=!0,n(t)}}return e.prototype.catch=function(t){return this.then(null,t)},e.prototype.then=function(t,i){var r=this;return new e(function(e,o){n.call(r,{onFulfilled:t,onRejected:i,resolve:e,reject:o})})},e.resolve=function(t){return t&&"object"==typeof t&&t.constructor===e?t:new e(function(e){e(t)})},e.reject=function(t){return new e(function(e,n){n(t)})},e}"undefined"!=typeof module&&(module.exports=MakePromise)</script><script>window.Promise||(window.Promise=MakePromise(Polymer.Base.async))</script><script>Promise.all=Promise.all||function(){var r=Array.prototype.slice.call(1===arguments.length&&Array.isArray(arguments[0])?arguments[0]:arguments);return new Promise(function(n,e){function t(i,c){try{if(c&&("object"==typeof c||"function"==typeof c)){var f=c.then;if("function"==typeof f)return void f.call(c,function(r){t(i,r)},e)}r[i]=c,0===--o&&n(r)}catch(r){e(r)}}if(0===r.length)return n([]);for(var o=r.length,i=0;i<r.length;i++)t(i,r[i])})},Promise.race=Promise.race||function(r){var n=r;return new Promise(function(r,e){for(var t=0,o=n.length;t<o;t++)n[t].then(r,e)})}</script><script>!function(){"use strict";var t=/\.splices$/,e=/\.length$/,i=/\.?#?([0-9]+)$/;Polymer.AppStorageBehavior={properties:{data:{type:Object,notify:!0,value:function(){return this.zeroValue}},sequentialTransactions:{type:Boolean,value:!1},log:{type:Boolean,value:!1}},observers:["__dataChanged(data.*)"],created:function(){this.__initialized=!1,this.__syncingToMemory=!1,this.__initializingStoredValue=null,this.__transactionQueueAdvances=Promise.resolve()},ready:function(){this._initializeStoredValue()},get isNew(){return!0},get transactionsComplete(){return this.__transactionQueueAdvances},get zeroValue(){},save:function(){return Promise.resolve()},reset:function(){},destroy:function(){return this.data=this.zeroValue,this.save()},initializeStoredValue:function(){return this.isNew?Promise.resolve():this._getStoredValue("data").then(function(t){return this._log("Got stored value!",t,this.data),null==t?this._setStoredValue("data",this.data||this.zeroValue):void this.syncToMemory(function(){this.set("data",t)})}.bind(this))},getStoredValue:function(t){return Promise.resolve()},setStoredValue:function(t,e){return Promise.resolve(e)},memoryPathToStoragePath:function(t){return t},storagePathToMemoryPath:function(t){return t},syncToMemory:function(t){this.__syncingToMemory||(this._group("Sync to memory."),this.__syncingToMemory=!0,t.call(this),this.__syncingToMemory=!1,this._groupEnd("Sync to memory."))},valueIsEmpty:function(t){return Array.isArray(t)?0===t.length:Object.prototype.isPrototypeOf(t)?0===Object.keys(t).length:null==t},_getStoredValue:function(t){return this.getStoredValue(this.memoryPathToStoragePath(t))},_setStoredValue:function(t,e){return this.setStoredValue(this.memoryPathToStoragePath(t),e)},_enqueueTransaction:function(t){if(this.sequentialTransactions)t=t.bind(this);else{var e=t.call(this);t=function(){return e}}return this.__transactionQueueAdvances=this.__transactionQueueAdvances.then(t).catch(function(t){this._error("Error performing queued transaction.",t)}.bind(this))},_log:function(){this.log&&console.log.apply(console,arguments)},_error:function(){this.log&&console.error.apply(console,arguments)},_group:function(){this.log&&console.group.apply(console,arguments)},_groupEnd:function(){this.log&&console.groupEnd.apply(console,arguments)},_initializeStoredValue:function(){if(!this.__initializingStoredValue){this._group("Initializing stored value.");var t=this.__initializingStoredValue=this.initializeStoredValue().then(function(){this.__initialized=!0,this.__initializingStoredValue=null,this._groupEnd("Initializing stored value.")}.bind(this));return this._enqueueTransaction(function(){return t})}},__dataChanged:function(t){if(!this.isNew&&!this.__syncingToMemory&&this.__initialized&&!this.__pathCanBeIgnored(t.path)){var e=this.__normalizeMemoryPath(t.path),i=t.value,n=i&&i.indexSplices;this._enqueueTransaction(function(){return this._log("Setting",e+":",n||i),n&&this.__pathIsSplices(e)&&(e=this.__parentPath(e),i=this.get(e)),this._setStoredValue(e,i)})}},__normalizeMemoryPath:function(t){for(var e=t.split("."),i=[],n=[],r=[],o=0;o<e.length;++o)n.push(e[o]),/^#/.test(e[o])?r.push(this.get(i).indexOf(this.get(n))):r.push(e[o]),i.push(e[o]);return r.join(".")},__parentPath:function(t){var e=t.split(".");return e.slice(0,e.length-1).join(".")},__pathCanBeIgnored:function(t){return e.test(t)&&Array.isArray(this.get(this.__parentPath(t)))},__pathIsSplices:function(e){return t.test(e)&&Array.isArray(this.get(this.__parentPath(e)))},__pathRefersToArray:function(i){return(t.test(i)||e.test(i))&&Array.isArray(this.get(this.__parentPath(i)))},__pathTailToIndex:function(t){var e=t.split(".").pop();return window.parseInt(e.replace(i,"$1"),10)}}}()</script><dom-module id="app-localstorage-document" assetpath="../../bower_components/app-storage/app-localstorage/"><script>"use strict";Polymer({is:"app-localstorage-document",behaviors:[Polymer.AppStorageBehavior],properties:{key:{type:String,notify:!0},sessionOnly:{type:Boolean,value:!1},storage:{type:Object,computed:"__computeStorage(sessionOnly)"}},observers:["__storageSourceChanged(storage, key)"],attached:function(){this.listen(window,"storage","__onStorage"),this.listen(window.top,"app-local-storage-changed","__onAppLocalStorageChanged")},detached:function(){this.unlisten(window,"storage","__onStorage"),this.unlisten(window.top,"app-local-storage-changed","__onAppLocalStorageChanged")},get isNew(){return!this.key},save:function(e){try{this.__setStorageValue(e,this.data)}catch(e){return Promise.reject(e)}return this.key=e,Promise.resolve()},reset:function(){this.key=null,this.data=this.zeroValue},destroy:function(){try{this.storage.removeItem(this.key),this.reset()}catch(e){return Promise.reject(e)}return Promise.resolve()},getStoredValue:function(e){var t;if(null!=this.key)try{t=this.__parseValueFromStorage(),t=null!=t?this.get(e,{data:t}):void 0}catch(e){return Promise.reject(e)}return Promise.resolve(t)},setStoredValue:function(e,t){if(null!=this.key){try{this.__setStorageValue(this.key,this.data)}catch(e){return Promise.reject(e)}this.fire("app-local-storage-changed",this,{node:window.top})}return Promise.resolve(t)},__computeStorage:function(e){return e?window.sessionStorage:window.localStorage},__storageSourceChanged:function(e,t){this._initializeStoredValue()},__onStorage:function(e){e.key===this.key&&e.storageArea===this.storage&&this.syncToMemory(function(){this.set("data",this.__parseValueFromStorage())})},__onAppLocalStorageChanged:function(e){e.detail!==this&&e.detail.key===this.key&&e.detail.storage===this.storage&&this.syncToMemory(function(){this.set("data",e.detail.data)})},__parseValueFromStorage:function(){try{return JSON.parse(this.storage.getItem(this.key))}catch(e){console.error("Failed to parse value from storage for",this.key)}},__setStorageValue:function(e,t){this.storage.setItem(this.key,JSON.stringify(this.data))}})</script></dom-module><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.DropdownBehavior={properties:{opened:{type:Boolean,notify:!0,value:!1,reflectToAttribute:!0,observer:"_openedChanged"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0},readonly:{type:Boolean,value:!1,reflectToAttribute:!0}},open:function(){this.disabled||this.readonly||(this.opened=!0)},close:function(){this.opened=!1},detached:function(){this.close()},_openedChanged:function(e,t){void 0!==t&&(this.opened?this._open():this._close())},_open:function(){this.$.overlay._moveTo(document.body),this._addOutsideClickListener(),this.$.overlay.touchDevice||this.inputElement.focused||this.inputElement.focus(),this.fire("vaadin-dropdown-opened")},_close:function(){this.$.overlay._moveTo(this.root),this._removeOutsideClickListener(),this.fire("vaadin-dropdown-closed")},_outsideClickListener:function(e){var t=Polymer.dom(e).path;t.indexOf(this)===-1&&(this.opened=!1)},_addOutsideClickListener:function(){this.$.overlay.touchDevice?(Polymer.Gestures.add(document,"tap",null),document.addEventListener("tap",this._outsideClickListener.bind(this),!0)):document.addEventListener("click",this._outsideClickListener.bind(this),!0)},_removeOutsideClickListener:function(){this.$.overlay.touchDevice?(Polymer.Gestures.remove(document,"tap",null),document.removeEventListener("tap",this._outsideClickListener.bind(this),!0)):document.removeEventListener("click",this._outsideClickListener.bind(this),!0)}}</script><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.ComboBoxBehaviorImpl={properties:{items:{type:Array},allowCustomValue:{type:Boolean,value:!1},value:{type:String,observer:"_valueChanged",notify:!1},hasValue:{type:Boolean,value:!1,readonly:!0,reflectToAttribute:!0},_focusedIndex:{type:Number,value:-1},_filter:{type:String,value:""},selectedItem:{type:Object,readOnly:!0,notify:!0},itemLabelPath:{type:String,value:"label"},itemValuePath:{type:String,value:"value"},inputElement:{type:HTMLElement,readOnly:!0},_toggleElement:Object,_clearElement:Object,_inputElementValue:String,_closeOnBlurIsPrevented:Boolean},observers:["_filterChanged(_filter, itemValuePath, itemLabelPath)","_itemsChanged(items.splices)","_setItems(items, itemValuePath, itemLabelPath)"],listeners:{"vaadin-dropdown-opened":"_onOpened","vaadin-dropdown-closed":"_onClosed",keydown:"_onKeyDown",tap:"_onTap"},ready:function(){void 0===this.value&&(this.value=""),Polymer.IronA11yAnnouncer.requestAvailability()},_onBlur:function(){this._closeOnBlurIsPrevented||this.close()},_onOverlayDown:function(e){this.$.overlay.touchDevice&&e.target!==this.$.overlay.$.scroller&&(this._closeOnBlurIsPrevented=!0,this.inputElement.blur(),this._closeOnBlurIsPrevented=!1)},_onTap:function(e){this._closeOnBlurIsPrevented=!0;var t=Polymer.dom(e).path;t.indexOf(this._clearElement)!==-1?this._clear():t.indexOf(this._toggleElement)!==-1?this._toggle():t.indexOf(this.inputElement)!==-1&&this._openAsync(),this._closeOnBlurIsPrevented=!1},_onKeyDown:function(e){this._isEventKey(e,"down")?(this._closeOnBlurIsPrevented=!0,this._onArrowDown(),this._closeOnBlurIsPrevented=!1,e.preventDefault()):this._isEventKey(e,"up")?(this._closeOnBlurIsPrevented=!0,this._onArrowUp(),this._closeOnBlurIsPrevented=!1,e.preventDefault()):this._isEventKey(e,"enter")?this._onEnter(e):this._isEventKey(e,"esc")&&this._onEscape()},_isEventKey:function(e,t){return Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,t)},_getItemLabel:function(e){return this.$.overlay.getItemLabel(e)},_getItemValue:function(e){var t=this.get(this.itemValuePath,e);return void 0!==t&&null!==t||(t=e?e.toString():""),t},_onArrowDown:function(){this.opened?this.$.overlay._items&&(this._focusedIndex=Math.min(this.$.overlay._items.length-1,this._focusedIndex+1),this._prefillFocusedItemLabel()):this.open()},_onArrowUp:function(){this.opened?(this._focusedIndex>-1?this._focusedIndex=Math.max(0,this._focusedIndex-1):this.$.overlay._items&&(this._focusedIndex=this.$.overlay._items.length-1),this._prefillFocusedItemLabel()):this.open()},_prefillFocusedItemLabel:function(){this._focusedIndex>-1&&(this._inputElementValue=this._getItemLabel(this.$.overlay._focusedItem),this._setSelectionRange())},_setSelectionRange:function(){this.inputElement.setSelectionRange&&this.inputElement.setSelectionRange(0,this._inputElementValue.length)},_onEnter:function(e){this.opened&&(this.allowCustomValue||""===this._inputElementValue||this._focusedIndex>-1)&&(this.close(),e.preventDefault())},_onEscape:function(){this.opened&&(this._focusedIndex>-1?(this._focusedIndex=-1,this._revertInputValue()):this.cancel())},_openAsync:function(){this.async(this.open)},_toggle:function(){this.opened?this.close():this.open()},_clear:function(){this.value=""},cancel:function(){this._inputElementValue=this._getItemLabel(this.selectedItem),this.close()},_onOpened:function(){this.$.overlay.hidden=!this._hasItems(this.$.overlay._items),this.$.overlay.ensureItemsRendered(),this.$.overlay.notifyResize(),this.$.overlay.adjustScrollPosition()},_onClosed:function(){if(this._focusedIndex>-1)this.$.overlay._selectItem(this._focusedIndex),this._inputElementValue=this._getItemLabel(this.selectedItem);else if(""===this._inputElementValue)this._clear();else if(this.allowCustomValue){var e=this.fire("custom-value-set",this._inputElementValue,{cancelable:!0});e.defaultPrevented||(this.value=this._inputElementValue)}else this._inputElementValue=this._getItemLabel(this.selectedItem);this._clearSelectionRange(),this._filter=""},_inputValueChanged:function(e){Polymer.dom(e).path.indexOf(this.inputElement)!==-1&&(this._filter===this._inputElementValue?this._filterChanged(this._filter):this._filter=this._inputElementValue,this.opened||this.open())},_clearSelectionRange:function(){if(this._focusedInput()===this.inputElement&&this.inputElement.setSelectionRange){var e=this._inputElementValue?this._inputElementValue.length:0;this.inputElement.setSelectionRange(e,e)}},_focusedInput:function(){return Polymer.dom(this).querySelector("input:focus")||Polymer.dom(this.root).querySelector("input:focus")},_filterChanged:function(e){this.unlisten(this.$.overlay,"_selected-item-changed","_selectedItemChanged"),this._setItems(this._filterItems(this.items,e)),this._focusedIndex=this.$.overlay.indexOfLabel(e),this.listen(this.$.overlay,"_selected-item-changed","_selectedItemChanged"),this.async(function(){this.$.overlay.notifyResize()}.bind(this))},_revertInputValue:function(){""!==this._filter?this._inputElementValue=this._filter:this._inputElementValue=this._getItemLabel(this.selectedItem),this._clearSelectionRange()},_valueChanged:function(e){this.hasValue=!!e;var t=this._indexOfValue(e),i=t>-1&&this.items[t];this.$.overlay._items&&i&&this.$.overlay._items.indexOf(i)>-1?this.$.overlay._selectItem(i):(this._inputElementValue=this.allowCustomValue?e:"",this._setSelectedItem(null),this._focusedIndex=-1,this.$.overlay.$.selector.clearSelection()),this.fire("change",void 0,{bubbles:!0}),this.close()},_itemsChanged:function(e){e&&e.indexSplices&&this._setItems(e.indexSplices[0].object)},_filterItems:function(e,t){return e?e.filter(function(e){return t=t.toString().toLowerCase()||"",this._getItemLabel(e).toString().toLowerCase().indexOf(t)>-1}.bind(this)):e},_setItems:function(e){this.$.overlay.notifyPath("_items",void 0),this.$.overlay.set("_items",e);var t=this._indexOfValue(this.value,e);t>-1&&this.$.overlay._selectItem(t),this.$.overlay.hidden=!this._hasItems(e),this.$.overlay.notifyResize()},_hasItems:function(e){return e&&e.length},_indexOfValue:function(e,t){if(t=t||this.items,t&&e)for(var i=0;i<t.length;i++)if(this._getItemValue(t[i]).toString()===e.toString())return i;return-1},_selectedItemChanged:function(e,t){null!==t.value&&(this._setSelectedItem(t.value),this._inputElementValue=this._getItemLabel(this.selectedItem),this.value=this._getItemValue(this.selectedItem),this._focusedIndex=this.$.overlay._items.indexOf(t.value)),this.opened&&this.close()},_getValidity:function(){if(this.inputElement.validate)return this.inputElement.validate()},_preventDefault:function(e){e.preventDefault()},_stopPropagation:function(e){e.stopPropagation()}},vaadin.elements.combobox.ComboBoxBehavior=[Polymer.IronFormElementBehavior,vaadin.elements.combobox.DropdownBehavior,vaadin.elements.combobox.ComboBoxBehaviorImpl]</script><dom-module id="iron-list" assetpath="../../bower_components/iron-list/"><template><style>:host{display:block;position:relative}@media only screen and (-webkit-max-device-pixel-ratio:1){:host{will-change:transform}}#items{@apply(--iron-list-items-container);position:relative}:host(:not([grid])) #items>::content>*{width:100%}; #items>::content>*{box-sizing:border-box;margin:0;position:absolute;top:0;will-change:transform}</style><array-selector id="selector" items="{{items}}" selected="{{selectedItems}}" selected-item="{{selectedItem}}"></array-selector><div id="items"><content></content></div></template></dom-module><script>!function(){var t=navigator.userAgent.match(/iP(?:hone|ad;(?: U;)? CPU) OS (\d+)/),i=t&&t[1]>=8,e=3,s="-10000px",h=-100;Polymer({is:"iron-list",properties:{items:{type:Array},maxPhysicalCount:{type:Number,value:500},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},selectedAs:{type:String,value:"selected"},grid:{type:Boolean,value:!1,reflectToAttribute:!0},selectionEnabled:{type:Boolean,value:!1},selectedItem:{type:Object,notify:!0},selectedItems:{type:Object,notify:!0},multiSelection:{type:Boolean,value:!1}},observers:["_itemsChanged(items.*)","_selectionEnabledChanged(selectionEnabled)","_multiSelectionChanged(multiSelection)","_setOverflow(scrollTarget)"],behaviors:[Polymer.Templatizer,Polymer.IronResizableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronScrollTargetBehavior],keyBindings:{up:"_didMoveUp",down:"_didMoveDown",enter:"_didEnter"},_ratio:.5,_scrollerPaddingTop:0,_scrollPosition:0,_physicalSize:0,_physicalAverage:0,_physicalAverageCount:0,_physicalTop:0,_virtualCount:0,_physicalIndexForKey:null,_estScrollHeight:0,_scrollHeight:0,_viewportHeight:0,_viewportWidth:0,_physicalItems:null,_physicalSizes:null,_firstVisibleIndexVal:null,_lastVisibleIndexVal:null,_collection:null,_maxPages:2,_focusedItem:null,_focusedIndex:-1,_offscreenFocusedItem:null,_focusBackfillItem:null,_itemsPerRow:1,_itemWidth:0,_rowHeight:0,_templateCost:0,get _physicalBottom(){return this._physicalTop+this._physicalSize},get _scrollBottom(){return this._scrollPosition+this._viewportHeight},get _virtualEnd(){return this._virtualStart+this._physicalCount-1},get _hiddenContentSize(){var t=this.grid?this._physicalRows*this._rowHeight:this._physicalSize;return t-this._viewportHeight},get _maxScrollTop(){return this._estScrollHeight-this._viewportHeight+this._scrollerPaddingTop},_minVirtualStart:0,get _maxVirtualStart(){return Math.max(0,this._virtualCount-this._physicalCount)},_virtualStartVal:0,set _virtualStart(t){this._virtualStartVal=Math.min(this._maxVirtualStart,Math.max(this._minVirtualStart,t))},get _virtualStart(){return this._virtualStartVal||0},_physicalStartVal:0,set _physicalStart(t){this._physicalStartVal=t%this._physicalCount,this._physicalStartVal<0&&(this._physicalStartVal=this._physicalCount+this._physicalStartVal),this._physicalEnd=(this._physicalStart+this._physicalCount-1)%this._physicalCount},get _physicalStart(){return this._physicalStartVal||0},_physicalCountVal:0,set _physicalCount(t){this._physicalCountVal=t,this._physicalEnd=(this._physicalStart+this._physicalCount-1)%this._physicalCount},get _physicalCount(){return this._physicalCountVal},_physicalEnd:0,get _optPhysicalSize(){return this.grid?this._estRowsInView*this._rowHeight*this._maxPages:0===this._viewportHeight?1/0:this._viewportHeight*this._maxPages},get _isVisible(){return Boolean(this.offsetWidth||this.offsetHeight)},get firstVisibleIndex(){if(null===this._firstVisibleIndexVal){var t=Math.floor(this._physicalTop+this._scrollerPaddingTop);this._firstVisibleIndexVal=this._iterateItems(function(i,e){return t+=this._getPhysicalSizeIncrement(i),t>this._scrollPosition?this.grid?e-e%this._itemsPerRow:e:this.grid&&this._virtualCount-1===e?e-e%this._itemsPerRow:void 0})||0}return this._firstVisibleIndexVal},get lastVisibleIndex(){if(null===this._lastVisibleIndexVal)if(this.grid){var t=this.firstVisibleIndex+this._estRowsInView*this._itemsPerRow-1;this._lastVisibleIndexVal=Math.min(this._virtualCount,t)}else{var i=this._physicalTop;this._iterateItems(function(t,e){return!(i<this._scrollBottom)||(this._lastVisibleIndexVal=e,void(i+=this._getPhysicalSizeIncrement(t)))})}return this._lastVisibleIndexVal},get _defaultScrollTarget(){return this},get _virtualRowCount(){return Math.ceil(this._virtualCount/this._itemsPerRow)},get _estRowsInView(){return Math.ceil(this._viewportHeight/this._rowHeight)},get _physicalRows(){return Math.ceil(this._physicalCount/this._itemsPerRow)},ready:function(){this.addEventListener("focus",this._didFocus.bind(this),!0)},attached:function(){0===this._physicalCount&&this._debounceTemplate(this._render),this.listen(this,"iron-resize","_resizeHandler")},detached:function(){this.unlisten(this,"iron-resize","_resizeHandler")},_setOverflow:function(t){this.style.webkitOverflowScrolling=t===this?"touch":"",this.style.overflow=t===this?"auto":""},updateViewportBoundaries:function(){var t=window.getComputedStyle(this);this._scrollerPaddingTop=this.scrollTarget===this?0:parseInt(t["padding-top"],10),this._isRTL=Boolean("rtl"===t.direction),this._viewportWidth=this.$.items.offsetWidth,this._viewportHeight=this._scrollTargetHeight,this.grid&&this._updateGridMetrics()},_scrollHandler:function(){var t=Math.max(0,Math.min(this._maxScrollTop,this._scrollTop)),i=t-this._scrollPosition,e=i>=0;if(this._scrollPosition=t,this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null,Math.abs(i)>this._physicalSize){var s=Math.round(i/this._physicalAverage)*this._itemsPerRow;this._physicalTop=this._physicalTop+i,this._virtualStart=this._virtualStart+s,this._physicalStart=this._physicalStart+s,this._update()}else{var h=this._getReusables(e);e?(this._physicalTop=h.physicalTop,this._virtualStart=this._virtualStart+h.indexes.length,this._physicalStart=this._physicalStart+h.indexes.length):(this._virtualStart=this._virtualStart-h.indexes.length,this._physicalStart=this._physicalStart-h.indexes.length),0===h.indexes.length?this._increasePoolIfNeeded():this._update(h.indexes,e?null:h.indexes)}},_getReusables:function(t){var i,e,s,h,l=[],o=this._hiddenContentSize*this._ratio,a=this._virtualStart,n=this._virtualEnd,r=this._physicalCount,c=this._physicalTop+this._scrollerPaddingTop,_=this._scrollTop,u=this._scrollBottom;for(t?(i=this._physicalStart,e=this._physicalEnd,s=_-c):(i=this._physicalEnd,e=this._physicalStart,s=this._physicalBottom-u);;){if(h=this._getPhysicalSizeIncrement(i),s-=h,l.length>=r||s<=o)break;if(t){if(n+l.length+1>=this._virtualCount)break;if(c+h>=_)break;l.push(i),c+=h,i=(i+1)%r}else{if(a-l.length<=0)break;if(c+this._physicalSize-h<=u)break;l.push(i),c-=h,i=0===i?r-1:i-1}}return{indexes:l,physicalTop:c-this._scrollerPaddingTop}},_update:function(t,i){if(!t||0!==t.length){if(this._manageFocus(),this._assignModels(t),this._updateMetrics(t),i)for(;i.length;){var e=i.pop();this._physicalTop-=this._getPhysicalSizeIncrement(e)}this._positionItems(),this._updateScrollerSize(),this._increasePoolIfNeeded()}},_createPool:function(t){var i=new Array(t);this._ensureTemplatized();for(var e=0;e<t;e++){var s=this.stamp(null);i[e]=s.root.querySelector("*"),Polymer.dom(this).appendChild(s.root)}return i},_increasePoolIfNeeded:function(){var t=this,i=this._physicalBottom>=this._scrollBottom&&this._physicalTop<=this._scrollPosition;if(this._physicalSize>=this._optPhysicalSize&&i)return!1;var e=Math.round(.5*this._physicalCount);return i?(this._yield(function(){t._increasePool(Math.min(e,Math.max(1,Math.round(50/t._templateCost))))}),!0):(this._debounceTemplate(this._increasePool.bind(this,e)),!0)},_yield:function(t){var i=window,e=i.requestIdleCallback?i.requestIdleCallback(t):i.setTimeout(t,16);Polymer.dom.addDebouncer({complete:function(){i.cancelIdleCallback?i.cancelIdleCallback(e):i.clearTimeout(e),t()}})},_increasePool:function(t){var i=Math.min(this._physicalCount+t,this._virtualCount-this._virtualStart,Math.max(this.maxPhysicalCount,e)),s=this._physicalCount,h=i-s,l=window.performance.now();h<=0||([].push.apply(this._physicalItems,this._createPool(h)),[].push.apply(this._physicalSizes,new Array(h)),this._physicalCount=s+h,this._physicalStart>this._physicalEnd&&this._isIndexRendered(this._focusedIndex)&&this._getPhysicalIndex(this._focusedIndex)<this._physicalEnd&&(this._physicalStart=this._physicalStart+h),this._update(),this._templateCost=(window.performance.now()-l)/h)},_render:function(){if(this.isAttached&&this._isVisible)if(0===this._physicalCount)this.updateViewportBoundaries(),this._increasePool(e);else{var t=this._getReusables(!0);this._physicalTop=t.physicalTop,this._virtualStart=this._virtualStart+t.indexes.length,this._physicalStart=this._physicalStart+t.indexes.length,this._update(t.indexes),this._update()}},_ensureTemplatized:function(){if(!this.ctor){var t={};t.__key__=!0,t[this.as]=!0,t[this.indexAs]=!0,t[this.selectedAs]=!0,t.tabIndex=!0,this._instanceProps=t,this._userTemplate=Polymer.dom(this).querySelector("template"),this._userTemplate?this.templatize(this._userTemplate):console.warn("iron-list requires a template to be provided in light-dom")}},_getStampedChildren:function(){return this._physicalItems},_forwardInstancePath:function(t,i,e){0===i.indexOf(this.as+".")&&this.notifyPath("items."+t.__key__+"."+i.slice(this.as.length+1),e)},_forwardParentProp:function(t,i){this._physicalItems&&this._physicalItems.forEach(function(e){e._templateInstance[t]=i},this)},_forwardParentPath:function(t,i){this._physicalItems&&this._physicalItems.forEach(function(e){e._templateInstance.notifyPath(t,i,!0)},this)},_forwardItemPath:function(t,i){if(this._physicalIndexForKey){var e=t.indexOf("."),s=t.substring(0,e<0?t.length:e),h=this._physicalIndexForKey[s],l=this._offscreenFocusedItem,o=l&&l._templateInstance.__key__===s?l:this._physicalItems[h];if(o&&o._templateInstance.__key__===s)if(e>=0)t=this.as+"."+t.substring(e+1),o._templateInstance.notifyPath(t,i,!0);else{var a=o._templateInstance[this.as];if(Array.isArray(this.selectedItems)){for(var n=0;n<this.selectedItems.length;n++)if(this.selectedItems[n]===a){this.set("selectedItems."+n,i);break}}else this.selectedItem===a&&this.set("selectedItem",i);o._templateInstance[this.as]=i}}},_itemsChanged:function(t){"items"===t.path?(this._virtualStart=0,this._physicalTop=0,this._virtualCount=this.items?this.items.length:0,this._collection=this.items?Polymer.Collection.get(this.items):null,this._physicalIndexForKey={},this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null,this._physicalCount=this._physicalCount||0,this._physicalItems=this._physicalItems||[],this._physicalSizes=this._physicalSizes||[],this._physicalStart=0,this._scrollTop>this._scrollerPaddingTop&&this._resetScrollPosition(0),this._removeFocusedItem(),this._debounceTemplate(this._render)):"items.splices"===t.path?(this._adjustVirtualIndex(t.value.indexSplices),this._virtualCount=this.items?this.items.length:0,this._debounceTemplate(this._render)):this._forwardItemPath(t.path.split(".").slice(1).join("."),t.value)},_adjustVirtualIndex:function(t){t.forEach(function(t){if(t.removed.forEach(this._removeItem,this),t.index<this._virtualStart){var i=Math.max(t.addedCount-t.removed.length,t.index-this._virtualStart);this._virtualStart=this._virtualStart+i,this._focusedIndex>=0&&(this._focusedIndex=this._focusedIndex+i)}},this)},_removeItem:function(t){this.$.selector.deselect(t),this._focusedItem&&this._focusedItem._templateInstance[this.as]===t&&this._removeFocusedItem()},_iterateItems:function(t,i){var e,s,h,l;if(2===arguments.length&&i){for(l=0;l<i.length;l++)if(e=i[l],s=this._computeVidx(e),null!=(h=t.call(this,e,s)))return h}else{for(e=this._physicalStart,s=this._virtualStart;e<this._physicalCount;e++,s++)if(null!=(h=t.call(this,e,s)))return h;for(e=0;e<this._physicalStart;e++,s++)if(null!=(h=t.call(this,e,s)))return h}},_computeVidx:function(t){return t>=this._physicalStart?this._virtualStart+(t-this._physicalStart):this._virtualStart+(this._physicalCount-this._physicalStart)+t},_assignModels:function(t){this._iterateItems(function(t,i){var e=this._physicalItems[t],s=e._templateInstance,h=this.items&&this.items[i];null!=h?(s[this.as]=h,s.__key__=this._collection.getKey(h),s[this.selectedAs]=this.$.selector.isSelected(h),s[this.indexAs]=i,s.tabIndex=this._focusedIndex===i?0:-1,this._physicalIndexForKey[s.__key__]=t,e.removeAttribute("hidden")):(s.__key__=null,e.setAttribute("hidden",""))},t)},_updateMetrics:function(t){Polymer.dom.flush();var i=0,e=0,s=this._physicalAverageCount,h=this._physicalAverage;this._iterateItems(function(t,s){e+=this._physicalSizes[t]||0,this._physicalSizes[t]=this._physicalItems[t].offsetHeight,i+=this._physicalSizes[t],this._physicalAverageCount+=this._physicalSizes[t]?1:0},t),this.grid?(this._updateGridMetrics(),this._physicalSize=Math.ceil(this._physicalCount/this._itemsPerRow)*this._rowHeight):this._physicalSize=this._physicalSize+i-e,this._physicalAverageCount!==s&&(this._physicalAverage=Math.round((h*s+i)/this._physicalAverageCount))},_updateGridMetrics:function(){this._itemWidth=this._physicalCount>0?this._physicalItems[0].getBoundingClientRect().width:200,this._rowHeight=this._physicalCount>0?this._physicalItems[0].offsetHeight:200,this._itemsPerRow=this._itemWidth?Math.floor(this._viewportWidth/this._itemWidth):this._itemsPerRow},_positionItems:function(){this._adjustScrollPosition();var t=this._physicalTop;if(this.grid){var i=this._itemsPerRow*this._itemWidth,e=(this._viewportWidth-i)/2;this._iterateItems(function(i,s){var h=s%this._itemsPerRow,l=Math.floor(h*this._itemWidth+e);this._isRTL&&(l*=-1),this.translate3d(l+"px",t+"px",0,this._physicalItems[i]),this._shouldRenderNextRow(s)&&(t+=this._rowHeight)})}else this._iterateItems(function(i,e){this.translate3d(0,t+"px",0,this._physicalItems[i]),t+=this._physicalSizes[i]})},_getPhysicalSizeIncrement:function(t){return this.grid?this._computeVidx(t)%this._itemsPerRow!==this._itemsPerRow-1?0:this._rowHeight:this._physicalSizes[t]},_shouldRenderNextRow:function(t){return t%this._itemsPerRow===this._itemsPerRow-1},_adjustScrollPosition:function(){var t=0===this._virtualStart?this._physicalTop:Math.min(this._scrollPosition+this._physicalTop,0);t&&(this._physicalTop=this._physicalTop-t,i||0===this._physicalTop||this._resetScrollPosition(this._scrollTop-t))},_resetScrollPosition:function(t){this.scrollTarget&&(this._scrollTop=t,this._scrollPosition=this._scrollTop)},_updateScrollerSize:function(t){this.grid?this._estScrollHeight=this._virtualRowCount*this._rowHeight:this._estScrollHeight=this._physicalBottom+Math.max(this._virtualCount-this._physicalCount-this._virtualStart,0)*this._physicalAverage,t=t||0===this._scrollHeight,t=t||this._scrollPosition>=this._estScrollHeight-this._physicalSize,t=t||this.grid&&this.$.items.style.height<this._estScrollHeight,(t||Math.abs(this._estScrollHeight-this._scrollHeight)>=this._optPhysicalSize)&&(this.$.items.style.height=this._estScrollHeight+"px",this._scrollHeight=this._estScrollHeight)},scrollToItem:function(t){return this.scrollToIndex(this.items.indexOf(t))},scrollToIndex:function(t){if(!("number"!=typeof t||t<0||t>this.items.length-1)&&(Polymer.dom.flush(),0!==this._physicalCount)){t=Math.min(Math.max(t,0),this._virtualCount-1),(!this._isIndexRendered(t)||t>=this._maxVirtualStart)&&(this._virtualStart=this.grid?t-2*this._itemsPerRow:t-1),this._manageFocus(),this._assignModels(),this._updateMetrics(),this._physicalTop=Math.floor(this._virtualStart/this._itemsPerRow)*this._physicalAverage;for(var i=this._physicalStart,e=this._virtualStart,s=0,h=this._hiddenContentSize;e<t&&s<=h;)s+=this._getPhysicalSizeIncrement(i),i=(i+1)%this._physicalCount,e++;this._updateScrollerSize(!0),this._positionItems(),this._resetScrollPosition(this._physicalTop+this._scrollerPaddingTop+s),this._increasePoolIfNeeded(),this._firstVisibleIndexVal=null,this._lastVisibleIndexVal=null}},_resetAverage:function(){this._physicalAverage=0,this._physicalAverageCount=0},_resizeHandler:function(){this._debounceTemplate(function(){var t=Math.abs(this._viewportHeight-this._scrollTargetHeight);this.updateViewportBoundaries(),("ontouchstart"in window||navigator.maxTouchPoints>0)&&t>0&&t<100||(this._isVisible?(this.toggleScrollListener(!0),this._resetAverage(),this._render()):this.toggleScrollListener(!1))}.bind(this))},_getModelFromItem:function(t){var i=this._collection.getKey(t),e=this._physicalIndexForKey[i];return null!=e?this._physicalItems[e]._templateInstance:null},_getNormalizedItem:function(t){if(void 0===this._collection.getKey(t)){if("number"==typeof t){if(t=this.items[t],!t)throw new RangeError("<item> not found");return t}throw new TypeError("<item> should be a valid item")}return t},selectItem:function(t){t=this._getNormalizedItem(t);var i=this._getModelFromItem(t);!this.multiSelection&&this.selectedItem&&this.deselectItem(this.selectedItem),i&&(i[this.selectedAs]=!0),this.$.selector.select(t),this.updateSizeForItem(t)},deselectItem:function(t){t=this._getNormalizedItem(t);var i=this._getModelFromItem(t);i&&(i[this.selectedAs]=!1),this.$.selector.deselect(t),this.updateSizeForItem(t)},toggleSelectionForItem:function(t){t=this._getNormalizedItem(t),this.$.selector.isSelected(t)?this.deselectItem(t):this.selectItem(t)},clearSelection:function(){function t(t){var i=this._getModelFromItem(t);i&&(i[this.selectedAs]=!1)}Array.isArray(this.selectedItems)?this.selectedItems.forEach(t,this):this.selectedItem&&t.call(this,this.selectedItem),this.$.selector.clearSelection()},_selectionEnabledChanged:function(t){var i=t?this.listen:this.unlisten;i.call(this,this,"tap","_selectionHandler")},_selectionHandler:function(t){var i=this.modelForElement(t.target);if(i){var e,s,l=Polymer.dom(t).path[0],o=Polymer.dom(this.domHost?this.domHost.root:document).activeElement,a=this._physicalItems[this._getPhysicalIndex(i[this.indexAs])];"input"!==l.localName&&"button"!==l.localName&&"select"!==l.localName&&(e=i.tabIndex,i.tabIndex=h,s=o?o.tabIndex:-1,i.tabIndex=e,o&&a!==o&&a.contains(o)&&s!==h||this.toggleSelectionForItem(i[this.as]))}},_multiSelectionChanged:function(t){this.clearSelection(),this.$.selector.multi=t},updateSizeForItem:function(t){t=this._getNormalizedItem(t);var i=this._collection.getKey(t),e=this._physicalIndexForKey[i];null!=e&&(this._updateMetrics([e]),this._positionItems())},_manageFocus:function(){var t=this._focusedIndex;t>=0&&t<this._virtualCount?this._isIndexRendered(t)?this._restoreFocusedItem():this._createFocusBackfillItem():this._virtualCount>0&&this._physicalCount>0&&(this._focusedIndex=this._virtualStart,this._focusedItem=this._physicalItems[this._physicalStart])},_isIndexRendered:function(t){return t>=this._virtualStart&&t<=this._virtualEnd},_isIndexVisible:function(t){return t>=this.firstVisibleIndex&&t<=this.lastVisibleIndex},_getPhysicalIndex:function(t){return this._physicalIndexForKey[this._collection.getKey(this._getNormalizedItem(t))]},_focusPhysicalItem:function(t){if(!(t<0||t>=this._virtualCount)){this._restoreFocusedItem(),this._isIndexRendered(t)||this.scrollToIndex(t);var i,e=this._physicalItems[this._getPhysicalIndex(t)],s=e._templateInstance;s.tabIndex=h,e.tabIndex===h&&(i=e),i||(i=Polymer.dom(e).querySelector('[tabindex="'+h+'"]')),s.tabIndex=0,this._focusedIndex=t,i&&i.focus()}},_removeFocusedItem:function(){this._offscreenFocusedItem&&Polymer.dom(this).removeChild(this._offscreenFocusedItem),this._offscreenFocusedItem=null,this._focusBackfillItem=null,this._focusedItem=null,this._focusedIndex=-1},_createFocusBackfillItem:function(){var t=this._focusedIndex,i=this._getPhysicalIndex(t);if(!(this._offscreenFocusedItem||null==i||t<0)){if(!this._focusBackfillItem){var e=this.stamp(null);this._focusBackfillItem=e.root.querySelector("*"),Polymer.dom(this).appendChild(e.root)}this._offscreenFocusedItem=this._physicalItems[i],this._offscreenFocusedItem._templateInstance.tabIndex=0,this._physicalItems[i]=this._focusBackfillItem,this.translate3d(0,s,0,this._offscreenFocusedItem)}},_restoreFocusedItem:function(){var t,i=this._focusedIndex;!this._offscreenFocusedItem||this._focusedIndex<0||(this._assignModels(),t=this._getPhysicalIndex(i),null!=t&&(this._focusBackfillItem=this._physicalItems[t],this._focusBackfillItem._templateInstance.tabIndex=-1,this._physicalItems[t]=this._offscreenFocusedItem,this._offscreenFocusedItem=null,this.translate3d(0,s,0,this._focusBackfillItem)))},_didFocus:function(t){var i=this.modelForElement(t.target),e=this._focusedItem?this._focusedItem._templateInstance:null,s=null!==this._offscreenFocusedItem,h=this._focusedIndex;i&&e&&(e===i?this._isIndexVisible(h)||this.scrollToIndex(h):(this._restoreFocusedItem(),e.tabIndex=-1,i.tabIndex=0,h=i[this.indexAs],this._focusedIndex=h,this._focusedItem=this._physicalItems[this._getPhysicalIndex(h)],s&&!this._offscreenFocusedItem&&this._update()))},_didMoveUp:function(){this._focusPhysicalItem(this._focusedIndex-1)},_didMoveDown:function(t){t.detail.keyboardEvent.preventDefault(),this._focusPhysicalItem(this._focusedIndex+1)},_didEnter:function(t){this._focusPhysicalItem(this._focusedIndex),this._selectionHandler(t.detail.keyboardEvent)}})}()</script><script>window.vaadin=window.vaadin||{},vaadin.elements=vaadin.elements||{},vaadin.elements.combobox=vaadin.elements.combobox||{},vaadin.elements.combobox.OverlayBehaviorImpl={properties:{positionTarget:{type:Object},verticalOffset:{type:Number,value:0},_alignedAbove:{type:Boolean,value:!1}},listeners:{"iron-resize":"_setPosition"},created:function(){this._boundSetPosition=this._setPosition.bind(this)},_unwrapIfNeeded:function(t){var e=Polymer.Settings.hasShadow&&!Polymer.Settings.nativeShadow;return e?window.unwrap(t):t},_processPendingMutationObserversFor:function(t){Polymer.Settings.useNativeCustomElements||CustomElements.takeRecords(t)},_moveTo:function(t){var e=this.parentNode;Polymer.dom(t).appendChild(this),e&&(this._processPendingMutationObserversFor(e),e.host&&Polymer.StyleTransformer.dom(this,e.host.is,this._scopeCssViaAttr,!0)),this._processPendingMutationObserversFor(this),t.host&&Polymer.StyleTransformer.dom(this,t.host.is,this._scopeCssViaAttr),t===document.body?(this.style.position=this._isPositionFixed(this.positionTarget)?"fixed":"absolute",window.addEventListener("scroll",this._boundSetPosition,!0),this._setPosition()):window.removeEventListener("scroll",this._boundSetPosition,!0)},_verticalOffset:function(t,e){return this._alignedAbove?-t.height:e.height+this.verticalOffset},_isPositionFixed:function(t){var e=t.offsetParent;return"fixed"===window.getComputedStyle(this._unwrapIfNeeded(t)).position||e&&this._isPositionFixed(e)},_maxHeight:function(t){var e=8,i=116,o=Math.min(window.innerHeight,document.body.scrollHeight-document.body.scrollTop);return this._alignedAbove?Math.max(t.top-e+Math.min(document.body.scrollTop,0),i)+"px":Math.max(o-t.bottom-e,i)+"px"},_setPosition:function(t){if(t&&t.target){var e=t.target===document?document.body:t.target,i=this._unwrapIfNeeded(this.parentElement);if(!e.contains(this)&&!e.contains(this.positionTarget)||i!==document.body)return}var o=this.positionTarget.getBoundingClientRect();this._alignedAbove=this._shouldAlignAbove(),this.style.maxHeight=this._maxHeight(o),this.$.selector.style.maxHeight=this._maxHeight(o);var s=this.getBoundingClientRect();this._translateX=o.left-s.left+(this._translateX||0),this._translateY=o.top-s.top+(this._translateY||0)+this._verticalOffset(s,o);var n=window.devicePixelRatio||1;this._translateX=Math.round(this._translateX*n)/n,this._translateY=Math.round(this._translateY*n)/n,this.translate3d(this._translateX+"px",this._translateY+"px","0"),this.style.width=this.positionTarget.clientWidth+"px",this.updateViewportBoundaries()},_shouldAlignAbove:function(){var t=(window.innerHeight-this.positionTarget.getBoundingClientRect().bottom-Math.min(document.body.scrollTop,0))/window.innerHeight;return t<.3}},vaadin.elements.combobox.OverlayBehavior=[Polymer.IronResizableBehavior,vaadin.elements.combobox.OverlayBehaviorImpl]</script><dom-module id="vaadin-combo-box-overlay" assetpath="../../bower_components/vaadin-combo-box/"><style>:host{position:absolute;@apply(--shadow-elevation-2dp);background:#fff;border-radius:0 0 2px 2px;top:0;left:0;z-index:200;overflow:hidden}#scroller{overflow:auto;max-height:var(--vaadin-combo-box-overlay-max-height,65vh);transform:translate3d(0,0,0);-webkit-overflow-scrolling:touch}#selector{--iron-list-items-container:{border-top:8px solid transparent;border-bottom:8px solid transparent};}#selector .item{cursor:pointer;padding:13px 16px;color:var(--primary-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#selector .item[focused],#selector:not([touch-device]) .item:hover{background:#eee}#selector .item[selected]{color:var(--primary-color)}</style><template><div id="scroller" scroller="[[_getScroller()]]" on-tap="_stopPropagation"><iron-list id="selector" touch-device$="[[touchDevice]]" role="listbox" data-selection$="[[_ariaActiveIndex]]" on-touchend="_preventDefault" selected-item="{{_selectedItem}}" items="[[_items]]" selection-enabled="" scroll-target="[[_getScroller()]]"><template><div class="item" id$="it[[index]]" selected$="[[selected]]" role$="[[_getAriaRole(index)]]" aria-selected$="[[_getAriaSelected(_focusedIndex,index)]]" focused$="[[_isItemFocused(_focusedIndex,index)]]">[[getItemLabel(item)]]</div></template></iron-list></div></template></dom-module><script>Polymer({is:"vaadin-combo-box-overlay",behaviors:[vaadin.elements.combobox.OverlayBehavior],properties:{touchDevice:{type:Boolean,reflectToAttribute:!0,value:function(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}},_selectedItem:{type:String,notify:!0},_items:{type:Object},_focusedIndex:{type:Number,notify:!0,value:-1,observer:"_focusedIndexChanged"},_focusedItem:{type:String,computed:"_getFocusedItem(_focusedIndex)"},_ariaActiveIndex:{type:Number,notify:!0,computed:"_getAriaActiveIndex(_focusedIndex)"},_itemLabelPath:{type:String,value:"label"},_itemValuePath:{type:String,value:"value"}},ready:function(){this._patchWheelOverScrolling(),void 0!==this.$.selector._scroller&&(this.$.selector._scroller=this._getScroller())},_getFocusedItem:function(e){if(e>=0)return this._items[e]},indexOfLabel:function(e){if(this._items&&e)for(var t=0;t<this._items.length;t++)if(this.getItemLabel(this._items[t]).toString().toLowerCase()===e.toString().toLowerCase())return t;return-1},getItemLabel:function(e){var t=this.get(this._itemLabelPath,e);return void 0!==t&&null!==t||(t=e?e.toString():""),t},_isItemFocused:function(e,t){return e==t},_getAriaActiveIndex:function(e){return e>=0&&"it"+e},_getAriaSelected:function(e,t){return this._isItemFocused(e,t).toString()},_getAriaRole:function(e){return void 0!==e&&"option"},_focusedIndexChanged:function(e){e>=0&&this._scrollIntoView(e)},_scrollIntoView:function(e){if(void 0!==this._visibleItemsCount()){var t=e;e>this._lastVisibleIndex()?(t=e-this._visibleItemsCount()+1,this.$.selector.scrollToIndex(e)):e>this.$.selector.firstVisibleIndex&&(t=this.$.selector.firstVisibleIndex),this.$.selector.scrollToIndex(Math.max(0,t))}},ensureItemsRendered:function(){this.$.selector.flushDebouncer("_debounceTemplate"),this.$.selector._render&&this.$.selector._render()},adjustScrollPosition:function(){this._items&&this._scrollIntoView(this._focusedIndex)},_getScroller:function(){return this.$.scroller},_patchWheelOverScrolling:function(){var e=this.$.selector;e.addEventListener("wheel",function(t){var i=e._scroller||e.scrollTarget,o=0===i.scrollTop,r=i.scrollHeight-i.scrollTop-i.clientHeight<=1;o&&t.deltaY<0?t.preventDefault():r&&t.deltaY>0&&t.preventDefault()})},updateViewportBoundaries:function(){this._cachedViewportTotalPadding=void 0,this.$.selector.updateViewportBoundaries()},get _viewportTotalPadding(){if(void 0===this._cachedViewportTotalPadding){var e=window.getComputedStyle(this._unwrapIfNeeded(this.$.selector.$.items));this._cachedViewportTotalPadding=[e.paddingTop,e.paddingBottom,e.borderTopWidth,e.borderBottomWidth].map(function(e){return parseInt(e,10)}).reduce(function(e,t){return e+t})}return this._cachedViewportTotalPadding},_visibleItemsCount:function(){var e=this.$.selector._physicalStart,t=this.$.selector._physicalSizes[e],i=this.$.selector._viewportHeight||this.$.selector._viewportSize;if(t&&i){var o=(i-this._viewportTotalPadding)/t;return Math.floor(o)}},_lastVisibleIndex:function(){if(this._visibleItemsCount())return this.$.selector.firstVisibleIndex+this._visibleItemsCount()-1},_selectItem:function(e){e="number"==typeof e?this._items[e]:e,this.$.selector.selectedItem!==e&&this.$.selector.selectItem(e)},_preventDefault:function(e){e.preventDefault()},_stopPropagation:function(e){e.stopPropagation()}})</script><dom-module id="vaadin-combo-box-shared-styles" assetpath="../../bower_components/vaadin-combo-box/"><template><style>.rotate-on-open,:host ::content .rotate-on-open{transition:all .2s!important}:host([opened]) .rotate-on-open,:host([opened]) ::content .rotate-on-open{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host ::content paper-icon-button.small,paper-icon-button.small{box-sizing:content-box!important;bottom:-6px!important;width:20px!important;height:20px!important;padding:4px 6px 8px!important}:host(:not([has-value])) .clear-button,:host(:not([has-value])) ::content .clear-button,:host(:not([opened])) .clear-button,:host(:not([opened])) ::content .clear-button{display:none}:host([disabled]) .toggle-button,:host([disabled]) ::content .toggle-button,:host([readonly]) .toggle-button,:host([readonly]) ::content .toggle-button{display:none}</style></template><script>Polymer({is:"vaadin-combo-box-shared-styles"})</script></dom-module><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg size="24" name="vaadin-combo-box"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g><g id="clear"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g></defs></svg></iron-iconset-svg><dom-module id="vaadin-combo-box" assetpath="../../bower_components/vaadin-combo-box/"><style include="vaadin-combo-box-shared-styles">:host{display:block;padding:8px 0}:host>#overlay{display:none}paper-input-container{position:relative;padding:0}:host ::content paper-icon-button.clear-button,:host ::content paper-icon-button.toggle-button,paper-icon-button.clear-button,paper-icon-button.toggle-button{position:absolute;bottom:-4px;right:-4px;line-height:18px!important;width:32px;height:32px;padding:4px;text-align:center;color:rgba(0,0,0,.38);cursor:pointer;margin-top:-1px;--paper-icon-button-ink-color:rgba(0, 0, 0, .54)}paper-input-container ::content paper-icon-button.clear-button,paper-input-container paper-icon-button.clear-button{right:28px}:host([opened]) paper-input-container ::content paper-icon-button,:host([opened]) paper-input-container paper-icon-button,paper-input-container ::content paper-icon-button:hover,paper-input-container paper-icon-button:hover{color:rgba(0,0,0,.54)}:host([opened]) paper-input-container ::content paper-icon-button:hover,:host([opened]) paper-input-container paper-icon-button:hover{color:rgba(0,0,0,.86)}:host([opened]) paper-input-container{z-index:20}#input::-ms-clear{display:none}#input{box-sizing:border-box;padding-right:28px}:host([opened][has-value]) #input{padding-right:60px;margin-right:-32px}</style><template><paper-input-container id="inputContainer" disabled$="[[disabled]]" no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" invalid="[[invalid]]"><label on-down="_preventDefault" id="label" hidden$="[[!label]]" aria-hidden="true" on-tap="_openAsync">[[label]]</label><content select="[prefix]"></content><input is="iron-input" id="input" type="text" role="combobox" autocomplete="off" autocapitalize="none" bind-value="{{_inputElementValue}}" aria-labelledby="label" aria-activedescendant$="[[_ariaActiveIndex]]" aria-expanded$="[[_getAriaExpanded(opened)]]" aria-autocomplete="list" aria-owns="overlay" disabled$="[[disabled]]" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" pattern$="[[pattern]]" required$="[[required]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" size$="[[size]]" on-input="_inputValueChanged" on-blur="_onBlur" on-change="_stopPropagation" key-event-target=""><content select="[suffix]"></content><content select=".clear-button"><paper-icon-button id="clearIcon" tabindex="-1" icon="vaadin-combo-box:clear" on-down="_preventDefault" class="clear-button small"></paper-icon-button></content><content select=".toggle-button"><paper-icon-button id="toggleIcon" tabindex="-1" icon="vaadin-combo-box:arrow-drop-down" aria-controls="overlay" on-down="_preventDefault" class="toggle-button rotate-on-open"></paper-icon-button></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template></paper-input-container><vaadin-combo-box-overlay id="overlay" _aria-active-index="{{_ariaActiveIndex}}" position-target="[[_getPositionTarget()]]" _focused-index="[[_focusedIndex]]" _item-label-path="[[itemLabelPath]]" on-down="_onOverlayDown" on-mousedown="_preventDefault" vertical-offset="2"></vaadin-combo-box-overlay></template></dom-module><script>Polymer({is:"vaadin-combo-box",behaviors:[Polymer.IronValidatableBehavior,vaadin.elements.combobox.ComboBoxBehavior],properties:{label:{type:String,reflectToAttribute:!0},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},disabled:{type:Boolean,value:!1},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},autofocus:{type:Boolean},inputmode:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number}},attached:function(){this._setInputElement(this.$.input),this._toggleElement=Polymer.dom(this).querySelector(".toggle-button")||this.$.toggleIcon,this._clearElement=Polymer.dom(this).querySelector(".clear-button")||this.$.clearIcon},_computeAlwaysFloatLabel:function(e,t){return t||e},_getPositionTarget:function(){return this.$.inputContainer},_getAriaExpanded:function(e){return e.toString()}})</script></div><dom-module id="ha-panel-dev-service"><template><style include="ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:16px}.ha-form{margin-right:16px;max-width:500px}.description{margin-top:24px;white-space:pre-wrap}.header{@apply(--paper-font-title)}.attributes th{text-align:left}.attributes tr{vertical-align:top}.attributes tr:nth-child(even){background-color:#eee}.attributes td:nth-child(3){white-space:pre-wrap;word-break:break-word}pre{margin:0}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Services</div></app-toolbar></app-header><app-localstorage-document key="panel-dev-service-state-domain" data="{{domain}}"></app-localstorage-document><app-localstorage-document key="panel-dev-service-state-service" data="{{service}}"></app-localstorage-document><app-localstorage-document key="panel-dev-service-state-servicedata" data="{{serviceData}}"></app-localstorage-document><div class="content"><p>Call a service from a component.</p><div class="ha-form"><vaadin-combo-box label="Domain" items="[[computeDomains(serviceDomains)]]" value="{{domain}}"></vaadin-combo-box><vaadin-combo-box label="Service" items="[[computeServices(serviceDomains, domain)]]" value="{{service}}"></vaadin-combo-box><paper-textarea label="Service Data (JSON, optional)" value="{{serviceData}}"></paper-textarea><paper-button on-tap="callService" raised="">Call Service</paper-button></div><template is="dom-if" if="[[!domain]]"><h1>Select a domain and service to see the description</h1></template><template is="dom-if" if="[[domain]]"><template is="dom-if" if="[[!service]]"><h1>Select a service to see the description</h1></template></template><template is="dom-if" if="[[domain]]"><template is="dom-if" if="[[service]]"><template is="dom-if" if="[[!_attributes.length]]"><h1>No description is available</h1></template><template is="dom-if" if="[[_attributes.length]]"><h1>Valid Parameters</h1><table class="attributes"><tbody><tr><th>Parameter</th><th>Description</th><th>Example</th></tr><template is="dom-repeat" items="[[_attributes]]" as="attribute"><tr><td><pre>[[attribute.key]]</pre></td><td>[[attribute.description]]</td><td>[[attribute.example]]</td></tr></template></tbody></table></template></template></template></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-service",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},domain:{type:String,value:"",observer:"domainChanged"},service:{type:String,value:"",observer:"serviceChanged"},serviceData:{type:String,value:""},_attributes:{type:Array,computed:"computeAttributesArray(hass, domain, service)"},serviceDomains:{type:Array,bindNuclear:function(e){return e.serviceGetters.entityMap}}},computeAttributesArray:function(e,t,r){return e.reactor.evaluate([e.serviceGetters.entityMap,function(e){return e.has(t)&&e.get(t).get("services").has(r)?e.get(t).get("services").get(r).get("fields").map(function(e,t){var r=e.toJS();return r.key=t,r}).toArray():[]}])},computeDomains:function(e){return e.valueSeq().map(function(e){return e.domain}).sort().toJS()},computeServices:function(e,t){return t?e.get(t).get("services").keySeq().toArray():""},domainChanged:function(){this.service="",this.serviceData=""},serviceChanged:function(){this.serviceData=""},callService:function(){var e;try{e=this.serviceData?JSON.parse(this.serviceData):{}}catch(e){return void alert("Error parsing JSON: "+e)}this.hass.serviceActions.callService(this.domain,this.service,e)}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html.gz index e9007a00c9334d6e15c94e2b0ac8bd11bfbec312..0215ae8c97cde56efe80be7e63462b79952042fa 100644 GIT binary patch delta 11886 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 HfRO<Jc(?@8 delta 11837 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%0A#6o9 zoF^=e1KRlGeC^EEOg;Qyr;Wv)3UMcggXe#|%MW}0tGBq5uf^Evz+vvf#2+HFr*HJF z`mlLN<TA$nGDk8N<&|zvZ>$Ki%v`N{V#DK!mw3$O?f%X3N)ow}>lnv!xH68r(!z{! zW=H*$kXJ>XF^l6i^1lkM{ZKQ(M!77&Jbs<M^C{`J>wA9|D?5GIeBaTKL;86`?6r`O zFE<);Ey!7-<W=LMo|akHQ&qR}hWTbu<tM6LQ4IX@VoP$Q(#mcwh&?Cj_+yWhoqm;; z)fxV?Nls__Von*97VPSN%Kz!c(@nwsEZ2U_czoq}{il<YYM7mSPw7~d{BQiIuq)&2 z%uT}6c|FCQ-)0|o<g({coBORyZgXtlOo#1XX4GW%`yK6QlDf6>R9o-FH&Wl^_@2LB zy}jq`#krYDYc{Wv+AQ3%rqfH|I7jW-xjO_7EIjJFr-NJ0+vUdXoSjicCsvqr8K2KO zvUDbgO=ZmQ3>TYv@ABu?kGro}t^cT1YRSj-_Qt%Ho%uUMB_e%eI%a=Snt9Og`8=Cv zxl1<&Rh~boHOsH_XY`u`cg#GwxOL@ud|w|w{!C-7QdQo(3q0w{{3#QgKNh|!QjYz3 zlW|Lt;y!M<g{-?~$}W+(B~+m!usy4eZDGl@6J`CECf@7lt`^eRR8)W4cSS7AwLeSz zj!m|aJbfUFpXq^`>l*FfX`bu*ocGF^7(Tucv_$d2(eJw!WX?*y<Qv9x?6>RwcNG&& zed}WPt$bz>oa!ak>&?`3vHxV1_1UEt!>rVwDoJ!PPdm9yck1--`b%!MZ9esk!|&)7 ze^dX%^MZZX8wB3*@+t4n>YC`9S|4F4`i5h#to2=E6XUl`?7hq0teCs0nc35q<@lt# zIy>u+nb;>k*DTN5R6Bd$<#i`Y;)4Ht+$`R`XGZ%WO)sODmXcTR&fIxq){U)qs+aWH zvd0*)-Fhao)Nauo!ED(%sgtLbCDg~eW!{tSo*rV7Wc}x%_552tS!~6gJKhzuX)iRc zU-s-<TbFd=+@KtpY}>yERxMV$)|n~YWdE7(*;5sfwRdq}v3kFLo!}I==Zz|YHLMHc z@03>Y=3MPwqoKF?=5pbDtt<1MykP!hxIghKm&K`yKglLn9avg>rY9{a{jnfU@#@;I zhaTR1b<X!lw~}Q!`=q}M)tTo_I?-f&{*R8>g-i99zP|Rz|6Mv`+s^*5ogXjlaGj;j zJ0V0eqVqW85lz0+Tu+W@E=mxXeEuBg&aNNjY2NF1Ug!L76zriG<FI`8s)@GB?*xu2 zZQ9yza%79;2P2*1e6~~4_47NbL-nr8iKj(|IM0Z&eWY3a<fX=)nd#j+ZoxIL(lvO0 zhuLc`I?VcAv;N4=ids*ppPN$6YY!fFS30qU-?Cul7WW&UmFgcgs!qQ1YsQnkflnSk z+uz`tw||Q3yOkPZ@lS8f-n4AOe6h+;ZFw$L%ASW0S8?6=@JM*~{v8W`XQm&j{u1+B z$gJ3QrSZhiR}yE(7TsUG_njP9{T062Vky=A3)352R=*6>PvlHGRnH#2zD{Xg<n+zF zca<)>w1w_Goi$<W)ZL9Wsw*T@n7_XAjpo(6nGhMi-SWak$2dMNBlUwHm`>iFuVk7& zN9lUn6t4AbbE~Tslx}QOJWwdooy7L8+q2Yr&%Bop=b5rgIQq@uzFRrrHRFf71{-T5 zJ}8I>{&Pt^daG;3h9r^ql`huxHzc}czx3RF#->ro!Mpd=ml<oGbS({Nn)58OdLGmK zL-Xft*u8!FgYWO-;tgVw7hSrRu)*<sfXp>F<LTvw|DMDJt~kNg{BNyZC5LR!<_Z(5 zz=<7=v-B?A6FWcabHuA}wQ5-tM7#g~J!I@$S$27grKZ}vtya-<l;?-NeIGu1weqTZ z)@QjQoLi1KzIT`}?Ch|rEGqqP>w{D55=>_w+^~5l&bxowitclfOp{~fcDgQ^5ty}a zp<CnTPcrhQ7m{sf^0Kh2zWF`n$cC+D!fyJlx+emH%D5S?-7^Wc;CLP9pP8_<#aVnM z(@Vqj`DrO4yRV!~Z}GE^zcu;Y@?EbKEoGnjF07wEJ>qBUDbx2?%r3eF@2FfLx#HCI ztk*R@Q`C7?uHRt(yi)z`$B%Dpz7^!JR6iSjEuwCzqUF2EJ5=v2s;IwqciTkChwj$T zyRvVtxzexJC}?|#RjO{ep9Lewwtzj+E30q2$Maa-X49A%z<j*xz@e&)5WjU_Jhp87 z;=k;M(>D_z=lUjZjwjjkYBHa%YS{OnCD65?YM+ezyFlYqX%X*$drYU!KNY{)m~yGY zS?-{l(UjW~$L>5n$@`+>FmKl9vWh;PE|t8yF0rS(%l;>y`*GfH;^LnHlKfJim-xQu zeRui$A=BeErw&;b&JPxv6{x~-e$V^&Pv-E5I52f7FOAT$IL3an{?{6daG^yVM}I`y z{qJegDSzm`b>Tm=YMv>syVmIMc*bXaW6h*1-+8{;>IFIR2Hg3O`1ZobDc>!Nq=aK_ zRvNy|ES$6Z``V`D`+xjw1SD_m^O2dSes7W7f8qG2%snd>ycV$a5BxIoQ1R!s#V4O_ z+3{0OE?`sa&SSoxcE|qwIc2>@eZtvg&5vF0Xly&7Hra#2u!XJTNUt`>&E?wpPgn)l zHVG{&dg1QrJ5RZ<>i$KS*v#)my+sQyl<O=$m$hEI=(H2V3yU|;T)s?=d~eV-snDT6 zZ^Hgr3on_Ld0uyn6<x7j?EJ5b#zo5RzKg9_SjB8Oapw{1MTYwN2g+AByw?*}D6Xn! zIQrpB=jVN8kN-t}3AL2;ciT}jcWS6mO8?ZW#xK6C{Kvk{IP^*3`Y%0S75s0sy?onf z@j#=)g)uf;T5n%=!#kO8+eJzzEIE5u_^m_L)n7aIJigeOuk8N3LdNqcv(5ExCHAb3 zjGd7tPsE+)^{OPS_*xnD*=kP4+Dz#QQHSjdZR+>&DF0g+8sqx>Wt2;}_1yyx*G;vL zYbvx2DAzCgyWrE6mtU>36AJojANwb4p6_e^dx7c14UXpPeuu}r&@1HLeVtitrs}7O z3<5g)yh9x%c6Bwc`1`vuLWZSc>5`}Qdz={Vu}*pOYf+SF@j9Q{({_u+18)S>2vtrn z{jOll<FtQq{aoW^7x@l<RPOszqr2`-rEmOSeZEq?X;z0XyS+QL+WK~z`|ZvzEABj* z*W1Bs>vYHU3*VWy)?dG^y-_VZDfaW!cLKLI%Bb@#@z*hKxo#O3{$$a*>yE{7?|WHJ zuuPD27vzmJ`qk@yVROsTC8E<`&z&UqUE^%=^4&#R(Lt|5ZhIfA|Fk{uMELgZU2|uy z+qFx3@6HdGCayoe{C@m(6AQVBb+2yQJg=R$DDcbN>5q<-bnm#W`uCI9ox29x#C$g$ z{^!l|%kjdk3o<K~c#D1ai4J(GoIkmc<LXrTOUvTEPIR|r3l)t&Y0mI}4$GyIT_2_& zEBMPaNyhO~#T*~8S8M#QwLbR9uRk^M(M1D6Hr3cCm*u9nO|_FcXn(v<sOk8$PX!A< zW}MI0VzPMOGewr=nDTrk7S6t!r>8a^cC}b^rJCD0x5NF)b9J4{XIA~bxAY#}46Enf zzuWamAXn9o33)z$dzPG?S|0wv-14`?^39B#2^XK=YH@n^udaBC-m<{W-QBystobNe zU*~8t@0(Tqo0WUN{_g(r_;qZ}QodPd&#A_*{2$|Oq`3aKrO$%1Q~S*}e16$setqZj zU2iRa+3Y`^-oC@9{_>LZ_d^Uyq|a<gWO&f%w~x2Uf5K_;NpkYLf1fD0WS2DYduZIY zvmZHlla4F@c%ES+rO98BYAWU=-hcDh_Xx|R_q{yz90ISGG_uYs5!F9;|A<AA(z63C zFMA$67U0`<#ec$Tp9AdD<}=zp6@R^An5jJ@JSy?|x>wCtzSQL8KYg8EoL<mSclO8L zdx}ApolADBA5Z<jXPe}=r+r&x0^f_=w605^yX><HTU`6tQ?K%^6JXhO{p79E@W;wq za>E|1QI|^J%vkR_X+ick$MSf`xRx@}d9q!G(-~@aeaYSUo&U2XufcmQ?a%({KLtI5 zrr&CvWBj<}iGy6x{I4;tk%3*x-kRDQq<Lf=oOt@~DgIJFvon86a`}|LPdDuS3R|8q zb*-7}E|Y&@)mEiDYj=Km^g_z>$CXyOS03&Sw}jtZi>$rHw08TgdP9GkHt*C04|e_T z<lkdbnjg<FgV%9x$OP%<r}puC&dm^aQ#-b`KQph_d5_luR~Cc(`Wc<I5+B>bc1&_y z`LWlo?xVb^_^jLo26tU6Yz}M|{1s?@@$rM>@vGd<xYkVgzNG4%g4CnrsoRY<Y%SWn zt)#V%fAyV^r*6-K<!13IFBYx;Be{J0P2Su0`SrpTzD&upikDHBJuBg*DN}AAs5v)G zeX5tk-VM{vKFX@MZ@%{7d_YTB<{_>ZDa<QBwJrXyaq4A?fpAgr$74AKOWmZ;$v7-2 z`@ovYZdfC^@0ZXe&5UJ9XMN8}o=D@L-XXAN<Kw#JQNhXfxhG?;%k5M;>N($}uzpd5 zV9k!x8)o>H<R6KD^MGYxYMbCJpWCr+s^6srd7s_g_#@XstWBrjTywkh=i3>zmv$d@ zEzUD3dCR#jFSwX*@m<r*&o`DWIxFh_H!nsi<SSFMzKHvCqoilmxw5f}5gdE=WphmO z|L*9u$1&_H$BRb+N8e~_tnaOQlYQCkc+i^q-wa!tmlz#A&~;$Z^KYM7maV=oe{O-2 z;uVu0hYvn_z<=<k{DsHcv-6+ymWW;6edLkrvaOqHUO%*zi9G&1aqIr~R?452?f6_< z@4NHQKAYHU#gDozX4;nS^5}bYtf`r=?4W<)yl;8$rW}rc@8Te_`1du-%v7bniUsL$ zZBxVc|Gluip6?B}zKcPjV$$JXzePVvmz{Zh=b6KTyD_(nH{M8A%9v7mfZN;Y!}h)% zn|Ehv^ZwerJ@fyaPwsP{<Y>?Q#h^NUoyc0xz@E2nHlF(~a(~N%bswWmww(+uT7LP) zc1=A4VReP~+4eKrLp{Q*AE;aJxLUx!TW#t__20{Pe{f_{a6RW+zeu>zQ8p!@r**zX ziMY|;mScBj$Jk4CUwPD3tC90jh3zooepVsHuZQ-^_s)*{SoFQ(z`A+jiY1F=s^qu7 zkTQ&CRFvQH&hyf{kHYFbse7vH**Dq0UfcFfv-w?9*zBN)7xMadKVOWO`G5a+#q5eJ zEC0VWJ9)C$bcvt{|E!}y8*=L3pV;!ATdCtz(1UyHyanFqCm#QO`02~{`7aL&sEM5Q z%bNPJmtE;ro<l45m7VAOcW+wBrK=rmVyZ0l`P6Q!=w0T2uWbH2DZy#BZrhr}53Voo z<|*Ut>zy1Kw8eLx{nq;$&uS-HwI*!~Grnf>UeYppPvlmSoUe0vBsg}Qf337+7gPO# z8t=UyE3T~<X_#@pA<%9ke@@ud&u#Xr&%_`9;xlzxmS;HUJ*HoCqi!+I4ScX~-duql zwMH*YPP9q1Zb|0RG&|xh$sh9A%jM+4kn=Gn#tp~BeLqLfTi7pZyG7#tovmMd?r!~F zR{Y-M+~q43+Fw<!BxUOO-Z(AIS+)Pk{HJG)Ki7M>svi`6#<<}0iIt8z3y$&D9OCRT zvA!iBU;e9t_f_D3J*h8t-aGgD^6W^HD~<P&RebvL_+ORGR^C#j-j#Q_Qq0^ht=t%7 zCm<^4^5;;uMPkz11b?$udC91B*`*#^dHeg<?AA=r6Mx**eg2Ta`@Waz4`h!&mVdm; zxTCA^iRzmAwHrdD9~fQ9J=&??y(sLf{>o?0cf(G%$gWsdE#-VTM{eTIszqAioMMX| z7<`_6(lCxQ=Q8nG@GhhvDa$)ba+B+~+9aMNC2tM6+xI&7-k(_R?opLA_g=4`fkKS- zNjtax{-5(ojarr8OR;M|a-K2uSIoU-?=~&p_4#t~nFT2)yX!w(UhlAUbLQvw8$R7o z-4-@8OZ>ihe@Nkj|LSYoSa)YlZu{pE{z&it$H0XgQ-7GRXj#x=b#`g+)BFfmx5FlV zxi^j^P3W5aaO2wh$r-QtJ9^~hkG~TzUG8rEez%d8&fSk+um6}G<~-f`O<QSx?>ZxY zUbn`Lz2$S?FJaX;j;eYWSAX5~Mt*<jyg1n-J5I6kpYoW;u;!D*`v$f}&fB$HGyB@^ zuP=WtayH_9-hv0q3+DWNc>AdI>JZ7pz3NI_|Mf23dAm#EN-Y1=cWgT053fomJra`m zqgyC)a<k=vls&iVeH|=*K6~{lOKZ`B>lb)AHZMMy@ge7@<bQpo`HvY}?Eias)OR>f zzrK=ZtLejiGOzQO7$0dqb?`!TFpseQ3$+6rJuC7RC#_5Q^O%1-w*$wd)iY-#{p7Iy zk|I%cGy2jAg+$>`QVoopU%qTmJn`p=qmS(KpTcJ(uj$X{Ut!;OdbyU9P1CadXR2;} zHB+ememE!8{J?L$i-wI?g9Sfl8~u}e)nDII-#Ryx^~q<|$ZJ1+!|to={=TC&MbP)X z*abf(*##Hk6_;+DUgLE%RH^x-{_H&)+l$nW?Ef5*`hnrs79XXS|CL9$nQa`a`K@XU zj?Gb9y71$lgXX+;&3XoP;`wpMR!rX@#PejmiG}sz>MM_|d(NG2W_%MhTleyTx>t-3 z_V3=5%XX{&diq!0ZL9V^>h^W|ti!uO=|G$TL&<biFNtMb;td}+Jx^g(nHb5(a+~p+ zj9W6-$9Wll#lv>gN&b_US{{F6$t#n@J3nTz6<G=$?EZ1>NZh$d#vje@f7|n(-G6j` z^X3@77`~RYW!rq$9NxaE{kg$o{s{s>woz3vEk{=9a%&myURv)O7V2uWe#&KM11HhT z;ZJ|OIaBeUC7t=@Ja+CY+ur|})%bChgFfFi<&*Eb-ktBA&S|2tS%mps#eb*R1>FC> z?iH~Ux%&7Q<D|kv4Kj0Ils6QnUNf$0T*%FAwJiI{yz7idv{|F>{O`U~DVFe9`Qxfp zReEvtJLA@?$4f`g4!qvmSkE#2i)Bcw?{(46Wy`pvH})mn-*854{_LqXXW#uZ`+M|U z|K;zkfA&N?a{GI|X(N-O$I(qJb-SwzZzQeIe<OahwsNk~K4*bLPtRm4C#d|s5L)M~ za=LZ#j0zU#J$C8WFQ0mqZ?N@chL-N_UHb2~T+O?)J6}51WBG=E;ak_Z&pP8{TF?CU z<g$C=OKSTaW-ELUUGE_MW9@UpO(Jt;Z6>^|mF=Fx%FxNqzGk&b;ky0IOHW=m(0!Ku z`0XqwoA<9Hd}aOytXdin_{(qm&kI83c^B^3#81z4omdemZV<BUW<ct^hVJOZ{^b!I zHYOYH*qNmsuX}z&;C{G&<fYq34&Im=!TXx6{&4%PzPCnl_ZeSa+OaZZ%TnXN6B$0O z{%AAxb>-CUuLWvv?fwzh_;``@4rPINt6!xx&29X!@$IGFMut7V-)=PPcwoU~|JC*A z&oYfdsjMk~UtAJ1o4Hpw_*tOQy+murH?y8cw7bj8&n#T4wyvVY)%V_-tJ4Ltww_TD z-(+&$%Io;$dakeD#bH}+-q*O+o%?0xl~~44XA9%ayUV)6b!z-HJf`XV+?ci5X~&Y~ zk0!cR-#0(`Q^{rf?T8npT<_jSzq@?-%FJsHM^&eJ>{Ym9f7RG5rp(d%D*OI;misXi znr#Xv2daFi@v?3&-ucB=V&x%o<DTn#+{7pR%vxr7So+1k1zVl#mwoS_CC9MQ;96L~ z_V>|Sq`5A*+Lq~UomM4zIW+!8Z7u7IHn!`txsIRK;w^q{DVqG6f2xt&?t-9+(#^g5 z_WH~J=4fm+tP=d-m@j<ma35bbi_^llN7v1B6XUtm^0gwR*spuCUp;41{>}f>-T4;Z z4GlP}#O&bb;gi2FL@;%~UcJQ{MuDhl4RhN3J&r9|B(>uCceb#9%r665ey!4AJDh$t zuCAG3>eRIrAKv%uckT4zihmqcS8pB^e?@a@MPtFA%Ngg^mF7;KxpABNhBFSYyo-ML z?2vxHVQ1sS<F+q<Wj8P4jM<epDR^O&S6$4jm7mt_nz&;^`MKVZm9f7bfBMWIRWJEx z$#bcGHN8!3_Oku@>P7yshBtO>pRsM(UePCPF4j|DW(L}NMl$U<xwhTpQs0AT#rCP2 zbN4n}Ten?<E91w!)cokE#(mq)IBLmGU)FZR^K*in?cWP|SCb}iu^i;_%f56cZnnS5 zw41!fM?-u=j-T;!abM0dfBE6f_Dwps#qx{l_vADeTz&oWLG?7J&2}A2na*%!ixzP5 z9_zJx>zm)=GAnYGwPo^LbB7s=XS~+B;OZJ@zW7q0{M~041sCpaPH_4(rC^4_TMM)7 zlfgbeWSG291n%vaZn8M6wbo;wC13F(o`<q)*Uw0quv6~6DVwf?B6DWONzRPioqN5C zBKeDNgx4pWlvto7Hm%Th&cgLfyNnXvaF*EbXz)Eg?{d-Fy9~~Mn`PFx-rVI`I`!=A zO)n}|@7`MW^bFs{c;SvoX8Q9rPS!g86nc?*@hgvfy<VbG#cXa3wR71&UR@8*kK6mV z;^Viwr^BDjJ0`2Xq|`sZX-V)$6F2!}&f>y*XD-}s;LKomtY>%GleSE{`Q8RIZp$z1 zkB+eZ`1II?ahe71mmR$?w6ouxj?9?P@vm%GVVP#0g!!JM{5#YRZBO)lv!C;ip1;O9 zCVf?#%%i{ZJLmt}qjBhg&iwi86U_spth3uE%x037Ud-pz_{;5Wb6L*I?IpTf&u{or zo|s{6xp!|}<J#BDC3l9__qn{t+nX@!%cWx$k0!m|`ebL4vy?uQSnR7a!O`<ineNW_ zKb&xJ+v$@JAKtxt_rts2iJ|fGcGA6W?JXh9f6SQ@H@I<JPEt}l{JZ$8<$>joE{2H7 zY++~o*M0sLSF^uUO^mUm!n4_YDrY4=9G}KMXB+>A)<-WLE|mNeUEw|V_ixkss?1E; z`vO&-4Sf$74`e?*>nOFO$CtUro_lhk&9$9UwxZ9bMo*mgWX+>fXQLlYjZjcLKU<YS zAo6fxt=;~U&+D82^XExqS9Z62P51pgu{Q5ATTn^<YO5mUz^BD)G8P!l6}z=0uR&oV z+xdSIJRd&n)X|l4%U|F4IW_$3$BU*L_ts0UxfN@~E;aMP?ll1{m3J7Q?D-iU@#RrF z;~)K>59NQXFnV@ies<*a8^U{!{qS#=Z?Bj6Z}so`L;m`vuE*&YSpFRe$?5q2Aaeqz z>c7y`e$C83wttsBG5p{E|Jlp)YZ_%f?UcE+hwrWE%~Mb6r`A?Zn7%p5G(9?%{r~Jo zO}ehLU)FbgE<S#rV{-RNH_mI4?@yI(yUG6iZ~oOs8SKmMJask~Gyi!|_iXOUcZMgt z<>Vv2WcogzTPJ1^m?<a!|H;Gu``wlIXgKUQjhipsaB^$9(c<T=t)V;j?K`t$u8myX z|6r4?Js1BhEH<iCPtH*Dob&TQT#Z-HF}6SZAM)4t{JFjLcYWHA)%okb91wpixn`oW zh+U<{$2{E~U+3Ks-oE_3RdQl&xw)YD-__~5$3C?dzn8u3Z~x9>Tl=}%l)t=BebqRv zk{_7O{?U;BdeY`khXT|UUbb??*2s1&JL6^F^hc+^(W19vM~xo$zo(8q-kJI-K?W0= zG;Z#l8dAl#WR=&6IWuDFMMK@f{%%sbd|Cg8@3C)>^mgZ0*y($3D^9#t<F_+p#_S75 z+KO!(&)rz0WpGSy>-MbGElNrUWHM}Ke46cXK&aC5<_y)kN%@Rld++giXxh%>i)fzh z#(syhRqFm?m8Yf$iZ3l#8}9S@;eorAeR~XN{dVnL?EI^+MrGl&)u$H(zW7<M^}i?C zN~H1t--9mxqLOk2BaiacyZ3UiomlC-zd>y2;`S}~KATR=U%14vv{ZG{rqp|v*7_(e z<GZkVUNisBqJYay=_<|!zltx|WWLyNeERpSK#jTg71%3zCw!6#s9Yb;IW=wmbV-#N zc4F&Yl1@18`h3D5y|GU~iTNA%HCM~2U+b9`-}=$c{!#e3@;6IC&zj7Qt4>s$y&Rux z#D0TmMu(+9pO}W1r@*nv_dbj0s2F8(oYsr9*?6E`&0gioq^};1I<+4IosU<{eihBP z@lm&*xIxpDF8dX?-x+*Zw>$ry?e&ix?^+MB$EGr{?U>E;N5IcMN!CK(!aMJ;oX_IK zR!cF~@BSlM7jUYl$d=EWd4kl=fCY1^nfR}muhwRN_11|kmPe%RRY2+Sor|upE_b@S z!1vgODH<oN|J-RQ-X-0)ufXJzwfuyp$(vVSlQ8o;kT9(({eZV^BA40X^Zabz_;xth z%S5YZ@)RUwP1^1kzE`@bgKOt!nE>Cq)(J-g8mbS^Qmfyc){<ZP%4z2DGR3Pi!;TeH zeG*#nc(Gl)dQ{X_A#tfgUPri?&uuOcP2@OuDQaKld*0)5@3yM@9@yllu~NEqCC9B0 zme41QIOk;DRd$|ZztJ~TbI$s>OZ%LT`L@3OX&$(%O#RO^))U=3(rdXtmFlImy`Hho zO6W+Lx&I^aAIwYg>-XnN>P}vH`K#5`waIhWzqowsnA!IW@d1w|tGGRHU5Y;7?09CA zh0@#-3FFpZ_d-0)t9D=YpBNe*C{``gwJt(bX6~=3=R5ZJB{G(?JKwrw?c)A_pXcJf z?~!rYYdX3<c4WSiV|l0>nDpD&OH8S63g-^zy`NkKj{MraJv(5<x=7dh$-6SXnC0JI zoK#aIaxOq^-^+3h!<nDY{q{5pi@UCUH~y5#$py<-F3pHcY1rv?AilV4_JS&%`G(hJ zZe<26uvzL6>-jucmnHYp5%)%p_*Fvdwol&E@-nTpsQml0yCMHSq^@aiQuBP7{^?D> z!V{iEl@)?D1}q9iUhd*G>&ky5n(!Z5bmGV(sRK^78ClFZ$3JZT<+z%eV_vSry!rf$ F3;<BM)c*hg diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html index 53c28a1109f..da96f77d3d4 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html @@ -1 +1 @@ -<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script></div><dom-module id="ha-panel-dev-state"><template><style include="ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:24px}.entities th{text-align:left}.entities tr{vertical-align:top}.entities tr:nth-child(even){background-color:#eee}.entities td:nth-child(3){white-space:pre-wrap;word-break:break-word}.entities a{color:var(--primary-color)}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">States</div></app-toolbar></app-header><div class="content"><div>Set the representation of a device within Home Assistant.<br>This will not communicate with the actual device.<paper-input label="Entity ID" autofocus="" required="" value="{{_entityId}}"></paper-input><paper-input label="State" required="" value="{{_state}}"></paper-input><paper-textarea label="State attributes (JSON, optional)" value="{{_stateAttributes}}"></paper-textarea><paper-button on-tap="handleSetState" raised="">Set State</paper-button></div><h1>Current entities</h1><table class="entities"><tbody><tr><th>Entity</th><th>State</th><th hidden$="[[narrow]]">Attributes<paper-checkbox checked="{{_showAttributes}}"></paper-checkbox></th></tr><template is="dom-repeat" items="[[_entities]]" as="entity"><tr><td><a href="#" on-tap="entitySelected">[[entity.entityId]]</a></td><td>[[entity.state]]</td><template is="dom-if" if="[[computeShowAttributes(narrow, _showAttributes)]]"><td>[[attributeString(entity)]]</td></template></tr></template></tbody></table></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-state",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},_entityId:{type:String,value:""},_state:{type:String,value:""},_stateAttributes:{type:String,value:""},_showAttributes:{type:Boolean,value:!0},_entities:{type:Array,bindNuclear:function(t){return[t.entityGetters.entityMap,function(t){return t.valueSeq().sortBy(function(t){return t.entityId}).toArray()}]}}},entitySelected:function(t){var e=t.model.entity;this._entityId=e.entityId,this._state=e.state,this._stateAttributes=JSON.stringify(e.attributes,null," "),t.preventDefault()},handleSetState:function(){var t;try{t=this._stateAttributes?JSON.parse(this._stateAttributes):{}}catch(t){return void alert("Error parsing JSON: "+t)}this.hass.entityActions.save({entityId:this._entityId,state:this._state,attributes:t})},computeShowAttributes:function(t,e){return!t&&e},attributeString:function(t){var e,i,r,n="";for(e=0,i=Object.keys(t.attributes);e<i.length;e++)r=i[e],n+=r+": "+t.attributes[r]+"\n";return n}})</script></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},attached:function(){var e=navigator.userAgent.match(/iP(?:[oa]d|hone)/);e&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script></div><dom-module id="ha-panel-dev-state"><template><style include="ha-style">:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:16px}.entities th{text-align:left}.entities tr{vertical-align:top}.entities tr:nth-child(even){background-color:#eee}.entities td:nth-child(3){white-space:pre-wrap;word-break:break-word}.entities a{color:var(--primary-color)}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">States</div></app-toolbar></app-header><div class="content"><div><p>Set the representation of a device within Home Assistant.<br>This will not communicate with the actual device.</p><paper-input label="Entity ID" autofocus="" required="" value="{{_entityId}}"></paper-input><paper-input label="State" required="" value="{{_state}}"></paper-input><paper-textarea label="State attributes (JSON, optional)" value="{{_stateAttributes}}"></paper-textarea><paper-button on-tap="handleSetState" raised="">Set State</paper-button></div><h1>Current entities</h1><table class="entities"><tbody><tr><th>Entity</th><th>State</th><th hidden$="[[narrow]]">Attributes<paper-checkbox checked="{{_showAttributes}}"></paper-checkbox></th></tr><template is="dom-repeat" items="[[_entities]]" as="entity"><tr><td><a href="#" on-tap="entitySelected">[[entity.entityId]]</a></td><td>[[entity.state]]</td><template is="dom-if" if="[[computeShowAttributes(narrow, _showAttributes)]]"><td>[[attributeString(entity)]]</td></template></tr></template></tbody></table></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-state",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},_entityId:{type:String,value:""},_state:{type:String,value:""},_stateAttributes:{type:String,value:""},_showAttributes:{type:Boolean,value:!0},_entities:{type:Array,bindNuclear:function(t){return[t.entityGetters.entityMap,function(t){return t.valueSeq().sortBy(function(t){return t.entityId}).toArray()}]}}},entitySelected:function(t){var e=t.model.entity;this._entityId=e.entityId,this._state=e.state,this._stateAttributes=JSON.stringify(e.attributes,null," "),t.preventDefault()},handleSetState:function(){var t;try{t=this._stateAttributes?JSON.parse(this._stateAttributes):{}}catch(t){return void alert("Error parsing JSON: "+t)}this.hass.entityActions.save({entityId:this._entityId,state:this._state,attributes:t})},computeShowAttributes:function(t,e){return!t&&e},attributeString:function(t){var e,i,r,n="";for(e=0,i=Object.keys(t.attributes);e<i.length;e++)r=i[e],n+=r+": "+t.attributes[r]+"\n";return n}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html.gz index 4c211bbe30dc4744a427eb99bc2804fa36efa92d..ee640b9c7cbe4c04892a5f5479e32d91c82a31c2 100644 GIT binary patch literal 2880 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 Y_FX$>a?^);fgk)&EjQj&S72ZO02h^wLI3~& literal 2811 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 HGcW)EkW+c$ diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html index 56d67d09e27..e122c075f9d 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html @@ -1,2 +1,2 @@ -<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-char-counter" assetpath="../../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script></div><dom-module id="ha-panel-dev-template"><template><style is="custom-style" include="ha-style iron-flex iron-positioning"></style><style>:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:24px}.edit-pane{margin-right:16px}.edit-pane a{color:var(--dark-primary-color)}.horizontal .edit-pane{max-width:50%}.render-pane{position:relative;max-width:50%}.render-spinner{position:absolute;top:8px;right:8px}.rendered{@apply(--paper-font-code1) +<html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><dom-module id="iron-autogrow-textarea" assetpath="../../bower_components/iron-autogrow-textarea/"><template><style>:host{display:inline-block;position:relative;width:400px;border:1px solid;padding:2px;-moz-appearance:textarea;-webkit-appearance:textarea;overflow:hidden}.mirror-text{visibility:hidden;word-wrap:break-word}.fit{@apply(--layout-fit)}textarea{position:relative;outline:0;border:none;resize:none;background:inherit;color:inherit;width:100%;height:100%;font-size:inherit;font-family:inherit;line-height:inherit;text-align:inherit;@apply(--iron-autogrow-textarea)}::content textarea:invalid{box-shadow:none}textarea::-webkit-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea::-moz-placeholder{@apply(--iron-autogrow-textarea-placeholder)}textarea:-ms-input-placeholder{@apply(--iron-autogrow-textarea-placeholder)}</style><div id="mirror" class="mirror-text" aria-hidden="true"> </div><div class="textarea-container fit"><textarea id="textarea" name$="[[name]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" disabled$="[[disabled]]" rows$="[[rows]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]"></textarea></div></template></dom-module><script>Polymer({is:"iron-autogrow-textarea",behaviors:[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronControlState],properties:{bindValue:{observer:"_bindValueChanged",type:String},rows:{type:Number,value:1,observer:"_updateCached"},maxRows:{type:Number,value:0,observer:"_updateCached"},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,value:!1},inputmode:{type:String},placeholder:{type:String},readonly:{type:String},required:{type:Boolean},minlength:{type:Number},maxlength:{type:Number}},listeners:{input:"_onInput"},observers:["_onValueChanged(value)"],get textarea(){return this.$.textarea},get selectionStart(){return this.$.textarea.selectionStart},get selectionEnd(){return this.$.textarea.selectionEnd},set selectionStart(e){this.$.textarea.selectionStart=e},set selectionEnd(e){this.$.textarea.selectionEnd=e},attached:function(){var e=navigator.userAgent.match(/iP(?:[oa]d|hone)/);e&&(this.$.textarea.style.marginLeft="-3px")},validate:function(){if(!this.required&&""==this.value)return this.invalid=!1,!0;var e;return this.hasValidator()?e=Polymer.IronValidatableBehavior.validate.call(this,this.value):(e=this.$.textarea.validity.valid,this.invalid=!e),this.fire("iron-input-validate"),e},_bindValueChanged:function(){var e=this.textarea;e&&(e.value!==this.bindValue&&(e.value=this.bindValue||0===this.bindValue?this.bindValue:""),this.value=this.bindValue,this.$.mirror.innerHTML=this._valueForMirror(),this.fire("bind-value-changed",{value:this.bindValue}))},_onInput:function(e){this.bindValue=e.path?e.path[0].value:e.target.value},_constrain:function(e){var t;for(e=e||[""],t=this.maxRows>0&&e.length>this.maxRows?e.slice(0,this.maxRows):e.slice(0);this.rows>0&&t.length<this.rows;)t.push("");return t.join("<br/>")+" "},_valueForMirror:function(){var e=this.textarea;if(e)return this.tokens=e&&e.value?e.value.replace(/&/gm,"&").replace(/"/gm,""").replace(/'/gm,"'").replace(/</gm,"<").replace(/>/gm,">").split("\n"):[""],this._constrain(this.tokens)},_updateCached:function(){this.$.mirror.innerHTML=this._constrain(this.tokens)},_onValueChanged:function(){this.bindValue=this.value}})</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-char-counter" assetpath="../../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-textarea" assetpath="../../bower_components/paper-input/"><template><style>:host{display:block}:host([hidden]){display:none!important}label{pointer-events:none}</style><paper-input-container no-label-float$="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><label hidden$="[[!label]]" aria-hidden="true">[[label]]</label><iron-autogrow-textarea id="input" class="paper-input-input" bind-value="{{value}}" invalid="{{invalid}}" disabled$="[[disabled]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" required$="[[required]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" autocapitalize$="[[autocapitalize]]" rows$="[[rows]]" max-rows$="[[maxRows]]" on-change="_onChange"></iron-autogrow-textarea><template is="dom-if" if="[[errorMessage]]"><paper-input-error>[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-textarea",behaviors:[Polymer.PaperInputBehavior,Polymer.IronFormElementBehavior],properties:{_ariaLabelledBy:{observer:"_ariaLabelledByChanged",type:String},_ariaDescribedBy:{observer:"_ariaDescribedByChanged",type:String},rows:{type:Number,value:1},maxRows:{type:Number,value:0}},_ariaLabelledByChanged:function(e){this.$.input.textarea.setAttribute("aria-labelledby",e)},_ariaDescribedByChanged:function(e){this.$.input.textarea.setAttribute("aria-describedby",e)},get _focusableElement(){return this.$.input.textarea}})</script></div><dom-module id="ha-panel-dev-template"><template><style is="custom-style" include="ha-style iron-flex iron-positioning"></style><style>:host{background-color:#fff;-ms-user-select:initial;-webkit-user-select:initial;-moz-user-select:initial}.content{padding:16px}.edit-pane{margin-right:16px}.edit-pane a{color:var(--dark-primary-color)}.horizontal .edit-pane{max-width:50%}.render-pane{position:relative;max-width:50%}.render-spinner{position:absolute;top:8px;right:8px}.rendered{@apply(--paper-font-code1) clear: both;white-space:pre-wrap}.rendered.error{color:red}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Templates</div></app-toolbar></app-header><div class$="[[computeFormClasses(narrow)]]"><div class="edit-pane"><p>Templates are rendered using the Jinja2 template engine with some Home Assistant specific extensions.</p><ul><li><a href="http://jinja.pocoo.org/docs/dev/templates/" target="_blank">Jinja2 template documentation</a></li><li><a href="https://home-assistant.io/topics/templating/" target="_blank">Home Assistant template extensions</a></li></ul><paper-textarea label="Template" value="{{template}}"></paper-textarea></div><div class="render-pane"><paper-spinner class="render-spinner" active="[[rendering]]"></paper-spinner><pre class$="[[computeRenderedClasses(error)]]">[[processed]]</pre></div></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-dev-template",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},error:{type:Boolean,value:!1},rendering:{type:Boolean,value:!1},template:{type:String,value:'{%- if is_state("device_tracker.paulus", "home") and \n is_state("device_tracker.anne_therese", "home") -%}\n\n You are both home, you silly\n\n{%- else -%}\n\n Anne Therese is at {{ states("device_tracker.anne_therese") }} and Paulus is at {{ states("device_tracker.paulus") }}\n\n{%- endif %}\n\nFor loop example:\n\n{% for state in states.sensor -%}\n {%- if loop.first %}The {% elif loop.last %} and the {% else %}, the {% endif -%}\n {{ state.name | lower }} is {{state.state}} {{- state.attributes.unit_of_measurement}}\n{%- endfor -%}.',observer:"templateChanged"},processed:{type:String,value:""}},computeFormClasses:function(e){return e?"content fit":"content fit layout horizontal"},computeRenderedClasses:function(e){return e?"error rendered":"rendered"},templateChanged:function(){this.error&&(this.error=!1),this.debounce("render-template",this.renderTemplate.bind(this),500)},renderTemplate:function(){this.rendering=!0,this.hass.templateActions.render(this.template).then(function(e){this.processed=e,this.rendering=!1}.bind(this),function(e){this.processed=e.message,this.error=!0,this.rendering=!1}.bind(this))}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html.gz index 6a2f68ab114ee7826ad79285cb7a78fb8173c8f3..fcfef9681b55ab6c060e4912e2b203e324ba8b66 100644 GIT binary patch literal 7366 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 literal 7309 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�NVw~dSeR`$KgcBWCx8JDp^}l=P-Y+ZF?Ovj*FBNU| zFEWV^TfQK0pPp^dCvDE9`)WK*)I*%6Zk;?)Utjb~jt~Fy^t(UTe_~=vb$C^ix|v^e z$vMXEJAdO;uS-mN_x+dMnTH;S|G8G4SzGhc-e%)Z^QGF>Wf_a|3PP{Um6E;BzuIZ) zg0`my6-IycinQOe1uxp&zI9&t7gxtQS86!-?r>R`#?u>eTBeX`p83Rc$8u#Z=g6-- zYhb?iln--V-t~(NlG-lMW&Z1SpSURVVVkv(%_O;d5uvjZWsDQj8+QrsyZvwx8#D8_ znVOG}8z1IhD-iPjYl!G$!^<tv;lG29rtK?c-u3gY?(h8Mc^P)IelKU4J*#K!Q~$g7 zHi#b#<>3ovd+mNGuRZGQt?cOEkLM<A6MJcvc*N=9g}EE2+&!&c>&@xLlfL<<Zot-% zYvq&LKIvVWKkc+??VMEZUj|cdyM179^qmtXzTPUa;_5Qy0*RHsU4FmHyT1AC-^3$A z2`#+g^ECqJ3(efOp}}v@^rFVe%=1!(#O2#(H!+{|<9Z|S_I0_HZ1?NG0dXs;?0!Bn z(28Iai)y+xefzG7r+HN;e5*P6^y#y>+Eq_fyL2)mHogBcG0}A9um8_h{1?;g?!GYd zd6Mbw=)!|-Q-VbDxZI{+%*s>V)V7NM!QL{r1=AGkc1o?9V17mB!?RcVM=sbNv01!6 z?D`76T9u_*B9-&bB^%@~a9D8qwqnNq13F$_Ws_FR**z2rT$jM=prUhZ`u7hy`sZ$3 z`BZgDisyMi!Ng1Lo9#7X^}b$}TK%n1cR}Iy&TAS^l@>bIG`Ft#vc$tKG&iPYm7836 z<1VLy_!*0<FW;PY!PFpd=4W}E->P+wLcF<k)+D@~YpoaNH*@{W&$|CAW2eb{KX6FX zJm=u_nuiDWq(ySZM)xIbwXnb4^nG&C3;*;`gNVstPC17@{t$m+f2)CgQvat%Y+}8x zmTi)8x++g^lwNUPc=vUsRJ#1#&&vX;gniq$UGTjS8WFmAm(Z)jBD)gT9F_f8!((-7 zq2E!STXzE!7f&qB59wW#Et~B9cI(-|eQVz3USD~~;w)Fqwye<HxD7^b=V#2js<m!e zJhSW6CU%#PTrYhUS)w$qUR=bMwtzvm^;ckKOPJQIv?ak0E{gtaTGaGprpTII{9&ut znSQi8Z~emT`?ARe?Eebt+GlUxRQ=W6<MD5XqM$GHb65VX`txM7cvNYDep{Z$^?%>= zf9tnBSa*=AEcO!n-PjDP_zl^C2VODjomacJ?8n41ceSQpesfgMou6qmZEuQU&wJA| zsXZH{jvUtKvrqT<YyWdvn*FRu_Qpo$!%wH!_?CAxCS44_rrmY@z{Q^mmQH*9bmsiM zxA4~K$5(%!d+3n#-yyehN`$H8Nv*(5ELNUfOyACVey(8_HasTlqcL%g>J(vjpY4;@ z94tQRrLoM-qVH9<%CQx}nhnZZI8H5GE5+c||5Rne1&54J;_VBn)H6+jul5P%HO*mX zKmVLN$IzsB|8#|4+^)a>1}Gj6osqMJHU5EBeBAoTm^|)Eq4E{8_D*@!|1W8db$072 z|GBF(Z&qjAjMLe*PwkLiOzmOG{8MeuW-p$8>D1B!?QOi1FCLzy7PR#N!}nJk=c&|Q z_vr|ezkbm>q;{oU;*5}%>uOVE*Z8*Y5^G<2OF;Vn5vLC|MjyY5T>B7q^(xQ$b8#0= z^pvQs=Zsvu^0qP8vwnxvO=W(urg6W{99ofFWuR)~W)*chHYuU()DsKm`(?YH?tf#r Ste*49e})34yO#t~7#IMx$1H>Z diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html index 7b4fa03057c..840f82cfd48 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html @@ -1,4 +1,4 @@ <html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(t,e){"use strict";var n;if("object"==typeof exports){try{n=require("moment")}catch(t){}module.exports=e(n)}else"function"==typeof define&&define.amd?define(function(t){var i="moment";try{n=t(i)}catch(t){}return e(n)}):t.Pikaday=e(t.moment)}(this,function(t){"use strict";var e="function"==typeof t,n=!!window.addEventListener,i=window.document,a=window.setTimeout,o=function(t,e,i,a){n?t.addEventListener(e,i,!!a):t.attachEvent("on"+e,i)},s=function(t,e,i,a){n?t.removeEventListener(e,i,!!a):t.detachEvent("on"+e,i)},r=function(t,e,n){var a;i.createEvent?(a=i.createEvent("HTMLEvents"),a.initEvent(e,!0,!1),a=D(a,n),t.dispatchEvent(a)):i.createEventObject&&(a=i.createEventObject(),a=D(a,n),t.fireEvent("on"+e,a))},h=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},l=function(t,e){return(" "+t.className+" ").indexOf(" "+e+" ")!==-1},d=function(t,e){l(t,e)||(t.className=""===t.className?e:t.className+" "+e)},u=function(t,e){t.className=h((" "+t.className+" ").replace(" "+e+" "," "))},c=function(t){return/Array/.test(Object.prototype.toString.call(t))},f=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},g=function(t){var e=t.getDay();return 0===e||6===e},m=function(t){return t%4===0&&t%100!==0||t%400===0},p=function(t,e){return[31,m(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]},y=function(t){f(t)&&t.setHours(0,0,0,0)},_=function(t,e){return t.getTime()===e.getTime()},D=function(t,e,n){var i,a;for(i in e)a=void 0!==t[i],a&&"object"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?f(e[i])?n&&(t[i]=new Date(e[i].getTime())):c(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=D({},e[i],n):!n&&a||(t[i]=e[i]);return t},v=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),t.month>11&&(t.year+=Math.floor(Math.abs(t.month)/12),t.month-=12),t},b={field:null,bound:void 0,position:"bottom left",reposition:!0,format:"YYYY-MM-DD",defaultDate:null,setDefaultDate:!1,firstDay:0,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:"",showMonthAfterYear:!1,numberOfMonths:1,mainCalendar:"left",container:void 0,i18n:{previousMonth:"Previous Month",nextMonth:"Next Month",months:["January","February","March","April","May","June","July","August","September","October","November","December"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},theme:null,onSelect:null,onOpen:null,onClose:null,onDraw:null},w=function(t,e,n){for(e+=t.firstDay;e>=7;)e-=7;return n?t.i18n.weekdaysShort[e]:t.i18n.weekdays[e]},M=function(t){if(t.isEmpty)return'<td class="is-empty"></td>';var e=[];return t.isDisabled&&e.push("is-disabled"),t.isToday&&e.push("is-today"),t.isSelected&&e.push("is-selected"),t.isInRange&&e.push("is-inrange"),t.isStartRange&&e.push("is-startrange"),t.isEndRange&&e.push("is-endrange"),'<td data-day="'+t.day+'" class="'+e.join(" ")+'"><button class="pika-button pika-day" type="button" data-pika-year="'+t.year+'" data-pika-month="'+t.month+'" data-pika-day="'+t.day+'">'+t.day+"</button></td>"},k=function(t,e,n){var i=new Date(n,0,1),a=Math.ceil(((new Date(n,e,t)-i)/864e5+i.getDay()+1)/7);return'<td class="pika-week">'+a+"</td>"},R=function(t,e){return"<tr>"+(e?t.reverse():t).join("")+"</tr>"},x=function(t){return"<tbody>"+t.join("")+"</tbody>"},N=function(t){var e,n=[];for(t.showWeekNumber&&n.push("<th></th>"),e=0;e<7;e++)n.push('<th scope="col"><abbr title="'+w(t,e)+'">'+w(t,e,!0)+"</abbr></th>");return"<thead>"+(t.isRTL?n.reverse():n).join("")+"</thead>"},C=function(t,e,n,i,a){var o,s,r,h,l,d=t._o,u=n===d.minYear,f=n===d.maxYear,g='<div class="pika-title">',m=!0,p=!0;for(r=[],o=0;o<12;o++)r.push('<option value="'+(n===a?o-e:12+o-e)+'"'+(o===i?" selected":"")+(u&&o<d.minMonth||f&&o>d.maxMonth?"disabled":"")+">"+d.i18n.months[o]+"</option>");for(h='<div class="pika-label">'+d.i18n.months[i]+'<select class="pika-select pika-select-month" tabindex="-1">'+r.join("")+"</select></div>",c(d.yearRange)?(o=d.yearRange[0],s=d.yearRange[1]+1):(o=n-d.yearRange,s=1+n+d.yearRange),r=[];o<s&&o<=d.maxYear;o++)o>=d.minYear&&r.push('<option value="'+o+'"'+(o===n?" selected":"")+">"+o+"</option>");return l='<div class="pika-label">'+n+d.yearSuffix+'<select class="pika-select pika-select-year" tabindex="-1">'+r.join("")+"</select></div>",g+=d.showMonthAfterYear?l+h:h+l,u&&(0===i||d.minMonth>=i)&&(m=!1),f&&(11===i||d.maxMonth<=i)&&(p=!1),0===e&&(g+='<button class="pika-prev'+(m?"":" is-disabled")+'" type="button">'+d.i18n.previousMonth+"</button>"),e===t._o.numberOfMonths-1&&(g+='<button class="pika-next'+(p?"":" is-disabled")+'" type="button">'+d.i18n.nextMonth+"</button>"),g+="</div>"},T=function(t,e){return'<table cellpadding="0" cellspacing="0" class="pika-table">'+N(t)+x(e)+"</table>"},E=function(s){var r=this,h=r.config(s);r._onMouseDown=function(t){if(r._v){t=t||window.event;var e=t.target||t.srcElement;if(e)if(l(e,"is-disabled")||(l(e,"pika-button")&&!l(e,"is-empty")?(r.setDate(new Date(e.getAttribute("data-pika-year"),e.getAttribute("data-pika-month"),e.getAttribute("data-pika-day"))),h.bound&&a(function(){r.hide(),h.field&&h.field.blur()},100)):l(e,"pika-prev")?r.prevMonth():l(e,"pika-next")&&r.nextMonth()),l(e,"pika-select"))r._c=!0;else{if(!t.preventDefault)return t.returnValue=!1,!1;t.preventDefault()}}},r._onChange=function(t){t=t||window.event;var e=t.target||t.srcElement;e&&(l(e,"pika-select-month")?r.gotoMonth(e.value):l(e,"pika-select-year")&&r.gotoYear(e.value))},r._onInputChange=function(n){var i;n.firedBy!==r&&(e?(i=t(h.field.value,h.format),i=i&&i.isValid()?i.toDate():null):i=new Date(Date.parse(h.field.value)),f(i)&&r.setDate(i),r._v||r.show())},r._onInputFocus=function(){r.show()},r._onInputClick=function(){r.show()},r._onInputBlur=function(){var t=i.activeElement;do if(l(t,"pika-single"))return;while(t=t.parentNode);r._c||(r._b=a(function(){r.hide()},50)),r._c=!1},r._onClick=function(t){t=t||window.event;var e=t.target||t.srcElement,i=e;if(e){!n&&l(e,"pika-select")&&(e.onchange||(e.setAttribute("onchange","return;"),o(e,"change",r._onChange)));do if(l(i,"pika-single")||i===h.trigger)return;while(i=i.parentNode);r._v&&e!==h.trigger&&i!==h.trigger&&r.hide()}},r.el=i.createElement("div"),r.el.className="pika-single"+(h.isRTL?" is-rtl":"")+(h.theme?" "+h.theme:""),o(r.el,"mousedown",r._onMouseDown,!0),o(r.el,"touchend",r._onMouseDown,!0),o(r.el,"change",r._onChange),h.field&&(h.container?h.container.appendChild(r.el):h.bound?i.body.appendChild(r.el):h.field.parentNode.insertBefore(r.el,h.field.nextSibling),o(h.field,"change",r._onInputChange),h.defaultDate||(e&&h.field.value?h.defaultDate=t(h.field.value,h.format).toDate():h.defaultDate=new Date(Date.parse(h.field.value)),h.setDefaultDate=!0));var d=h.defaultDate;f(d)?h.setDefaultDate?r.setDate(d,!0):r.gotoDate(d):r.gotoDate(new Date),h.bound?(this.hide(),r.el.className+=" is-bound",o(h.trigger,"click",r._onInputClick),o(h.trigger,"focus",r._onInputFocus),o(h.trigger,"blur",r._onInputBlur)):this.show()};return E.prototype={config:function(t){this._o||(this._o=D({},b,!0));var e=D(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme="string"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn="function"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=n>4?4:n,f(e.minDate)||(e.minDate=!1),f(e.maxDate)||(e.maxDate=!1),e.minDate&&e.maxDate&&e.maxDate<e.minDate&&(e.maxDate=e.minDate=!1),e.minDate&&this.setMinDate(e.minDate),e.maxDate&&this.setMaxDate(e.maxDate),c(e.yearRange)){var i=(new Date).getFullYear()-10;e.yearRange[0]=parseInt(e.yearRange[0],10)||i,e.yearRange[1]=parseInt(e.yearRange[1],10)||i}else e.yearRange=Math.abs(parseInt(e.yearRange,10))||b.yearRange,e.yearRange>100&&(e.yearRange=100);return e},toString:function(n){return f(this._d)?e?t(this._d).format(n||this._o.format):this._d.toDateString():""},getMoment:function(){return e?t(this._d):null},setMoment:function(n,i){e&&t.isMoment(n)&&this.setDate(n.toDate(),i)},getDate:function(){return f(this._d)?new Date(this._d.getTime()):null},setDate:function(t,e){if(!t)return this._d=null,this._o.field&&(this._o.field.value="",r(this._o.field,"change",{firedBy:this})),this.draw();if("string"==typeof t&&(t=new Date(Date.parse(t))),f(t)){var n=this._o.minDate,i=this._o.maxDate;f(n)&&t<n?t=n:f(i)&&t>i&&(t=i),this._d=new Date(t.getTime()),y(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),r(this._o.field,"change",{firedBy:this})),e||"function"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},gotoDate:function(t){var e=!0;if(f(t)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),i=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),a=t.getTime();i.setMonth(i.getMonth()+1),i.setDate(i.getDate()-1),e=a<n.getTime()||i.getTime()<a}e&&(this.calendars=[{month:t.getMonth(),year:t.getFullYear()}],"right"===this._o.mainCalendar&&(this.calendars[0].month+=1-this._o.numberOfMonths)),this.adjustCalendars()}},adjustCalendars:function(){this.calendars[0]=v(this.calendars[0]);for(var t=1;t<this._o.numberOfMonths;t++)this.calendars[t]=v({month:this.calendars[0].month+t,year:this.calendars[0].year});this.draw()},gotoToday:function(){this.gotoDate(new Date)},gotoMonth:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())},nextMonth:function(){this.calendars[0].month++,this.adjustCalendars()},prevMonth:function(){this.calendars[0].month--,this.adjustCalendars()},gotoYear:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())},setMinDate:function(t){y(t),this._o.minDate=t,this._o.minYear=t.getFullYear(),this._o.minMonth=t.getMonth(),this.draw()},setMaxDate:function(t){y(t),this._o.maxDate=t,this._o.maxYear=t.getFullYear(),this._o.maxMonth=t.getMonth(),this.draw()},setStartRange:function(t){this._o.startRange=t},setEndRange:function(t){this._o.endRange=t},draw:function(t){if(this._v||t){var e=this._o,n=e.minYear,i=e.maxYear,o=e.minMonth,s=e.maxMonth,r="";this._y<=n&&(this._y=n,!isNaN(o)&&this._m<o&&(this._m=o)),this._y>=i&&(this._y=i,!isNaN(s)&&this._m>s&&(this._m=s));for(var h=0;h<e.numberOfMonths;h++)r+='<div class="pika-lendar">'+C(this,h,this.calendars[h].year,this.calendars[h].month,this.calendars[0].year)+this.render(this.calendars[h].year,this.calendars[h].month)+"</div>";if(this.el.innerHTML=r,e.bound&&"hidden"!==e.field.type&&a(function(){e.trigger.focus()},1),"function"==typeof this._o.onDraw){var l=this;a(function(){l._o.onDraw.call(l)},0)}}},adjustPosition:function(){var t,e,n,a,o,s,r,h,l,d;if(!this._o.container){if(this.el.style.position="absolute",t=this._o.trigger,e=t,n=this.el.offsetWidth,a=this.el.offsetHeight,o=window.innerWidth||i.documentElement.clientWidth,s=window.innerHeight||i.documentElement.clientHeight,r=window.pageYOffset||i.body.scrollTop||i.documentElement.scrollTop,"function"==typeof t.getBoundingClientRect)d=t.getBoundingClientRect(),h=d.left+window.pageXOffset,l=d.bottom+window.pageYOffset;else for(h=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)h+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&h+n>o||this._o.position.indexOf("right")>-1&&h-n+t.offsetWidth>0)&&(h=h-n+t.offsetWidth),(this._o.reposition&&l+a>s+r||this._o.position.indexOf("top")>-1&&l-a-t.offsetHeight>0)&&(l=l-a-t.offsetHeight),this.el.style.left=h+"px",this.el.style.top=l+"px"}},render:function(t,e){var n=this._o,i=new Date,a=p(t,e),o=new Date(t,e,1).getDay(),s=[],r=[];y(i),n.firstDay>0&&(o-=n.firstDay,o<0&&(o+=7));for(var h=a+o,l=h;l>7;)l-=7;h+=7-l;for(var d=0,u=0;d<h;d++){var c=new Date(t,e,1+(d-o)),m=!!f(this._d)&&_(c,this._d),D=_(c,i),v=d<o||d>=a+o,b=n.startRange&&_(n.startRange,c),w=n.endRange&&_(n.endRange,c),x=n.startRange&&n.endRange&&n.startRange<c&&c<n.endRange,N=n.minDate&&c<n.minDate||n.maxDate&&c>n.maxDate||n.disableWeekends&&g(c)||n.disableDayFn&&n.disableDayFn(c),C={day:1+(d-o),month:e,year:t,isSelected:m,isToday:D,isDisabled:N,isEmpty:v,isStartRange:b,isEndRange:w,isInRange:x};r.push(M(C)),7===++u&&(n.showWeekNumber&&r.unshift(k(d-o,e,t)),s.push(R(r,n.isRTL)),r=[],u=0)}return T(n,s)},isVisible:function(){return this._v},show:function(){this._v||(u(this.el,"is-hidden"),this._v=!0,this.draw(),this._o.bound&&(o(i,"click",this._onClick),this.adjustPosition()),"function"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t=this._v;t!==!1&&(this._o.bound&&s(i,"click",this._onClick),this.el.style.position="static",this.el.style.left="auto",this.el.style.top="auto",d(this.el,"is-hidden"),this._v=!1,void 0!==t&&"function"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){this.hide(),s(this.el,"mousedown",this._onMouseDown,!0),s(this.el,"touchend",this._onMouseDown,!0),s(this.el,"change",this._onChange),this._o.field&&(s(this._o.field,"change",this._onInputChange),this._o.bound&&(s(this._o.trigger,"click",this._onInputClick),s(this._o.trigger,"focus",this._onInputFocus),s(this._o.trigger,"blur",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},E})</script><style>@media all{@charset "UTF-8";/*! * Pikaday * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/ - */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}}</style></div><dom-module id="ha-panel-history"><template><style include="iron-flex ha-style">.content{background-color:#fff}.content.wide{padding:8px}paper-input{max-width:200px}.narrow paper-input{margin-left:8px}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">History</div><paper-icon-button icon="mdi:refresh" on-tap="handleRefreshClick"></paper-icon-button></app-toolbar></app-header><div class$="[[computeContentClasses(narrow)]]"><paper-input label="Showing entries for" id="datePicker" value="[[selectedDateStr]]" on-focus="datepickerFocus"></paper-input><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingData]]"></state-history-charts></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-history",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean},showMenu:{type:Boolean,value:!1},isDataLoaded:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.hasDataForCurrentDate},observer:"isDataLoadedChanged"},stateHistory:{type:Object,bindNuclear:function(t){return t.entityHistoryGetters.entityHistoryForCurrentDate}},isLoadingData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},selectedDate:{type:String,value:null,bindNuclear:function(t){return t.entityHistoryGetters.currentDate}},selectedDateStr:{type:String,value:null,bindNuclear:function(t){return[t.entityHistoryGetters.currentDate,function(t){var e=new Date(t);return window.hassUtil.formatDate(e)}]}}},isDataLoadedChanged:function(t){t||this.async(function(){this.hass.entityHistoryActions.fetchSelectedDate()}.bind(this),1)},handleRefreshClick:function(){this.hass.entityHistoryActions.fetchSelectedDate()},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new window.Pikaday({field:document.createElement("input"),trigger:this.$.datePicker.inputElement,onSelect:this.hass.entityHistoryActions.changeCurrentDate}),this.datePicker.setDate(this.selectedDate,!0)},detached:function(){this.datePicker.destroy()},computeContentClasses:function(t){return t?"flex content narrow":"flex content wide"}})</script></body></html> \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}}</style></div><dom-module id="ha-panel-history"><template><style include="iron-flex ha-style">.content{padding:16px}paper-input{max-width:200px}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">History</div><paper-icon-button icon="mdi:refresh" on-tap="handleRefreshClick"></paper-icon-button></app-toolbar></app-header><div class="flex content"><paper-input label="Showing entries for" id="datePicker" value="[[selectedDateStr]]" on-focus="datepickerFocus"></paper-input><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingData]]"></state-history-charts></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-history",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean},showMenu:{type:Boolean,value:!1},isDataLoaded:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.hasDataForCurrentDate},observer:"isDataLoadedChanged"},stateHistory:{type:Object,bindNuclear:function(t){return t.entityHistoryGetters.entityHistoryForCurrentDate}},isLoadingData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},selectedDate:{type:String,value:null,bindNuclear:function(t){return t.entityHistoryGetters.currentDate}},selectedDateStr:{type:String,value:null,bindNuclear:function(t){return[t.entityHistoryGetters.currentDate,function(t){var e=new Date(t);return window.hassUtil.formatDate(e)}]}}},isDataLoadedChanged:function(t){t||this.async(function(){this.hass.entityHistoryActions.fetchSelectedDate()}.bind(this),1)},handleRefreshClick:function(){this.hass.entityHistoryActions.fetchSelectedDate()},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new window.Pikaday({field:document.createElement("input"),trigger:this.$.datePicker.inputElement,onSelect:this.hass.entityHistoryActions.changeCurrentDate}),this.datePicker.setDate(this.selectedDate,!0)},detached:function(){this.datePicker.destroy()}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-history.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-history.html.gz index 3025b732cdd8960f82e4704fa7280d37ae34fa26..8d03ffbcfe493df7f49adf55fa1ea8b45f653743 100644 GIT binary patch literal 6791 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 literal 6844 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 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html index e8d615caba0..8a13ca837f7 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html @@ -1,4 +1,4 @@ <html><head><meta charset="UTF-8"></head><body><div hidden="" by-vulcanize=""><script>!function(t,e){"use strict";var n;if("object"==typeof exports){try{n=require("moment")}catch(t){}module.exports=e(n)}else"function"==typeof define&&define.amd?define(function(t){var i="moment";try{n=t(i)}catch(t){}return e(n)}):t.Pikaday=e(t.moment)}(this,function(t){"use strict";var e="function"==typeof t,n=!!window.addEventListener,i=window.document,a=window.setTimeout,o=function(t,e,i,a){n?t.addEventListener(e,i,!!a):t.attachEvent("on"+e,i)},s=function(t,e,i,a){n?t.removeEventListener(e,i,!!a):t.detachEvent("on"+e,i)},r=function(t,e,n){var a;i.createEvent?(a=i.createEvent("HTMLEvents"),a.initEvent(e,!0,!1),a=D(a,n),t.dispatchEvent(a)):i.createEventObject&&(a=i.createEventObject(),a=D(a,n),t.fireEvent("on"+e,a))},h=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},l=function(t,e){return(" "+t.className+" ").indexOf(" "+e+" ")!==-1},d=function(t,e){l(t,e)||(t.className=""===t.className?e:t.className+" "+e)},u=function(t,e){t.className=h((" "+t.className+" ").replace(" "+e+" "," "))},c=function(t){return/Array/.test(Object.prototype.toString.call(t))},f=function(t){return/Date/.test(Object.prototype.toString.call(t))&&!isNaN(t.getTime())},g=function(t){var e=t.getDay();return 0===e||6===e},m=function(t){return t%4===0&&t%100!==0||t%400===0},p=function(t,e){return[31,m(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]},y=function(t){f(t)&&t.setHours(0,0,0,0)},_=function(t,e){return t.getTime()===e.getTime()},D=function(t,e,n){var i,a;for(i in e)a=void 0!==t[i],a&&"object"==typeof e[i]&&null!==e[i]&&void 0===e[i].nodeName?f(e[i])?n&&(t[i]=new Date(e[i].getTime())):c(e[i])?n&&(t[i]=e[i].slice(0)):t[i]=D({},e[i],n):!n&&a||(t[i]=e[i]);return t},v=function(t){return t.month<0&&(t.year-=Math.ceil(Math.abs(t.month)/12),t.month+=12),t.month>11&&(t.year+=Math.floor(Math.abs(t.month)/12),t.month-=12),t},b={field:null,bound:void 0,position:"bottom left",reposition:!0,format:"YYYY-MM-DD",defaultDate:null,setDefaultDate:!1,firstDay:0,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,minYear:0,maxYear:9999,minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:"",showMonthAfterYear:!1,numberOfMonths:1,mainCalendar:"left",container:void 0,i18n:{previousMonth:"Previous Month",nextMonth:"Next Month",months:["January","February","March","April","May","June","July","August","September","October","November","December"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},theme:null,onSelect:null,onOpen:null,onClose:null,onDraw:null},w=function(t,e,n){for(e+=t.firstDay;e>=7;)e-=7;return n?t.i18n.weekdaysShort[e]:t.i18n.weekdays[e]},M=function(t){if(t.isEmpty)return'<td class="is-empty"></td>';var e=[];return t.isDisabled&&e.push("is-disabled"),t.isToday&&e.push("is-today"),t.isSelected&&e.push("is-selected"),t.isInRange&&e.push("is-inrange"),t.isStartRange&&e.push("is-startrange"),t.isEndRange&&e.push("is-endrange"),'<td data-day="'+t.day+'" class="'+e.join(" ")+'"><button class="pika-button pika-day" type="button" data-pika-year="'+t.year+'" data-pika-month="'+t.month+'" data-pika-day="'+t.day+'">'+t.day+"</button></td>"},k=function(t,e,n){var i=new Date(n,0,1),a=Math.ceil(((new Date(n,e,t)-i)/864e5+i.getDay()+1)/7);return'<td class="pika-week">'+a+"</td>"},R=function(t,e){return"<tr>"+(e?t.reverse():t).join("")+"</tr>"},x=function(t){return"<tbody>"+t.join("")+"</tbody>"},N=function(t){var e,n=[];for(t.showWeekNumber&&n.push("<th></th>"),e=0;e<7;e++)n.push('<th scope="col"><abbr title="'+w(t,e)+'">'+w(t,e,!0)+"</abbr></th>");return"<thead>"+(t.isRTL?n.reverse():n).join("")+"</thead>"},C=function(t,e,n,i,a){var o,s,r,h,l,d=t._o,u=n===d.minYear,f=n===d.maxYear,g='<div class="pika-title">',m=!0,p=!0;for(r=[],o=0;o<12;o++)r.push('<option value="'+(n===a?o-e:12+o-e)+'"'+(o===i?" selected":"")+(u&&o<d.minMonth||f&&o>d.maxMonth?"disabled":"")+">"+d.i18n.months[o]+"</option>");for(h='<div class="pika-label">'+d.i18n.months[i]+'<select class="pika-select pika-select-month" tabindex="-1">'+r.join("")+"</select></div>",c(d.yearRange)?(o=d.yearRange[0],s=d.yearRange[1]+1):(o=n-d.yearRange,s=1+n+d.yearRange),r=[];o<s&&o<=d.maxYear;o++)o>=d.minYear&&r.push('<option value="'+o+'"'+(o===n?" selected":"")+">"+o+"</option>");return l='<div class="pika-label">'+n+d.yearSuffix+'<select class="pika-select pika-select-year" tabindex="-1">'+r.join("")+"</select></div>",g+=d.showMonthAfterYear?l+h:h+l,u&&(0===i||d.minMonth>=i)&&(m=!1),f&&(11===i||d.maxMonth<=i)&&(p=!1),0===e&&(g+='<button class="pika-prev'+(m?"":" is-disabled")+'" type="button">'+d.i18n.previousMonth+"</button>"),e===t._o.numberOfMonths-1&&(g+='<button class="pika-next'+(p?"":" is-disabled")+'" type="button">'+d.i18n.nextMonth+"</button>"),g+="</div>"},T=function(t,e){return'<table cellpadding="0" cellspacing="0" class="pika-table">'+N(t)+x(e)+"</table>"},E=function(s){var r=this,h=r.config(s);r._onMouseDown=function(t){if(r._v){t=t||window.event;var e=t.target||t.srcElement;if(e)if(l(e,"is-disabled")||(l(e,"pika-button")&&!l(e,"is-empty")?(r.setDate(new Date(e.getAttribute("data-pika-year"),e.getAttribute("data-pika-month"),e.getAttribute("data-pika-day"))),h.bound&&a(function(){r.hide(),h.field&&h.field.blur()},100)):l(e,"pika-prev")?r.prevMonth():l(e,"pika-next")&&r.nextMonth()),l(e,"pika-select"))r._c=!0;else{if(!t.preventDefault)return t.returnValue=!1,!1;t.preventDefault()}}},r._onChange=function(t){t=t||window.event;var e=t.target||t.srcElement;e&&(l(e,"pika-select-month")?r.gotoMonth(e.value):l(e,"pika-select-year")&&r.gotoYear(e.value))},r._onInputChange=function(n){var i;n.firedBy!==r&&(e?(i=t(h.field.value,h.format),i=i&&i.isValid()?i.toDate():null):i=new Date(Date.parse(h.field.value)),f(i)&&r.setDate(i),r._v||r.show())},r._onInputFocus=function(){r.show()},r._onInputClick=function(){r.show()},r._onInputBlur=function(){var t=i.activeElement;do if(l(t,"pika-single"))return;while(t=t.parentNode);r._c||(r._b=a(function(){r.hide()},50)),r._c=!1},r._onClick=function(t){t=t||window.event;var e=t.target||t.srcElement,i=e;if(e){!n&&l(e,"pika-select")&&(e.onchange||(e.setAttribute("onchange","return;"),o(e,"change",r._onChange)));do if(l(i,"pika-single")||i===h.trigger)return;while(i=i.parentNode);r._v&&e!==h.trigger&&i!==h.trigger&&r.hide()}},r.el=i.createElement("div"),r.el.className="pika-single"+(h.isRTL?" is-rtl":"")+(h.theme?" "+h.theme:""),o(r.el,"mousedown",r._onMouseDown,!0),o(r.el,"touchend",r._onMouseDown,!0),o(r.el,"change",r._onChange),h.field&&(h.container?h.container.appendChild(r.el):h.bound?i.body.appendChild(r.el):h.field.parentNode.insertBefore(r.el,h.field.nextSibling),o(h.field,"change",r._onInputChange),h.defaultDate||(e&&h.field.value?h.defaultDate=t(h.field.value,h.format).toDate():h.defaultDate=new Date(Date.parse(h.field.value)),h.setDefaultDate=!0));var d=h.defaultDate;f(d)?h.setDefaultDate?r.setDate(d,!0):r.gotoDate(d):r.gotoDate(new Date),h.bound?(this.hide(),r.el.className+=" is-bound",o(h.trigger,"click",r._onInputClick),o(h.trigger,"focus",r._onInputFocus),o(h.trigger,"blur",r._onInputBlur)):this.show()};return E.prototype={config:function(t){this._o||(this._o=D({},b,!0));var e=D(this._o,t,!0);e.isRTL=!!e.isRTL,e.field=e.field&&e.field.nodeName?e.field:null,e.theme="string"==typeof e.theme&&e.theme?e.theme:null,e.bound=!!(void 0!==e.bound?e.field&&e.bound:e.field),e.trigger=e.trigger&&e.trigger.nodeName?e.trigger:e.field,e.disableWeekends=!!e.disableWeekends,e.disableDayFn="function"==typeof e.disableDayFn?e.disableDayFn:null;var n=parseInt(e.numberOfMonths,10)||1;if(e.numberOfMonths=n>4?4:n,f(e.minDate)||(e.minDate=!1),f(e.maxDate)||(e.maxDate=!1),e.minDate&&e.maxDate&&e.maxDate<e.minDate&&(e.maxDate=e.minDate=!1),e.minDate&&this.setMinDate(e.minDate),e.maxDate&&this.setMaxDate(e.maxDate),c(e.yearRange)){var i=(new Date).getFullYear()-10;e.yearRange[0]=parseInt(e.yearRange[0],10)||i,e.yearRange[1]=parseInt(e.yearRange[1],10)||i}else e.yearRange=Math.abs(parseInt(e.yearRange,10))||b.yearRange,e.yearRange>100&&(e.yearRange=100);return e},toString:function(n){return f(this._d)?e?t(this._d).format(n||this._o.format):this._d.toDateString():""},getMoment:function(){return e?t(this._d):null},setMoment:function(n,i){e&&t.isMoment(n)&&this.setDate(n.toDate(),i)},getDate:function(){return f(this._d)?new Date(this._d.getTime()):null},setDate:function(t,e){if(!t)return this._d=null,this._o.field&&(this._o.field.value="",r(this._o.field,"change",{firedBy:this})),this.draw();if("string"==typeof t&&(t=new Date(Date.parse(t))),f(t)){var n=this._o.minDate,i=this._o.maxDate;f(n)&&t<n?t=n:f(i)&&t>i&&(t=i),this._d=new Date(t.getTime()),y(this._d),this.gotoDate(this._d),this._o.field&&(this._o.field.value=this.toString(),r(this._o.field,"change",{firedBy:this})),e||"function"!=typeof this._o.onSelect||this._o.onSelect.call(this,this.getDate())}},gotoDate:function(t){var e=!0;if(f(t)){if(this.calendars){var n=new Date(this.calendars[0].year,this.calendars[0].month,1),i=new Date(this.calendars[this.calendars.length-1].year,this.calendars[this.calendars.length-1].month,1),a=t.getTime();i.setMonth(i.getMonth()+1),i.setDate(i.getDate()-1),e=a<n.getTime()||i.getTime()<a}e&&(this.calendars=[{month:t.getMonth(),year:t.getFullYear()}],"right"===this._o.mainCalendar&&(this.calendars[0].month+=1-this._o.numberOfMonths)),this.adjustCalendars()}},adjustCalendars:function(){this.calendars[0]=v(this.calendars[0]);for(var t=1;t<this._o.numberOfMonths;t++)this.calendars[t]=v({month:this.calendars[0].month+t,year:this.calendars[0].year});this.draw()},gotoToday:function(){this.gotoDate(new Date)},gotoMonth:function(t){isNaN(t)||(this.calendars[0].month=parseInt(t,10),this.adjustCalendars())},nextMonth:function(){this.calendars[0].month++,this.adjustCalendars()},prevMonth:function(){this.calendars[0].month--,this.adjustCalendars()},gotoYear:function(t){isNaN(t)||(this.calendars[0].year=parseInt(t,10),this.adjustCalendars())},setMinDate:function(t){y(t),this._o.minDate=t,this._o.minYear=t.getFullYear(),this._o.minMonth=t.getMonth(),this.draw()},setMaxDate:function(t){y(t),this._o.maxDate=t,this._o.maxYear=t.getFullYear(),this._o.maxMonth=t.getMonth(),this.draw()},setStartRange:function(t){this._o.startRange=t},setEndRange:function(t){this._o.endRange=t},draw:function(t){if(this._v||t){var e=this._o,n=e.minYear,i=e.maxYear,o=e.minMonth,s=e.maxMonth,r="";this._y<=n&&(this._y=n,!isNaN(o)&&this._m<o&&(this._m=o)),this._y>=i&&(this._y=i,!isNaN(s)&&this._m>s&&(this._m=s));for(var h=0;h<e.numberOfMonths;h++)r+='<div class="pika-lendar">'+C(this,h,this.calendars[h].year,this.calendars[h].month,this.calendars[0].year)+this.render(this.calendars[h].year,this.calendars[h].month)+"</div>";if(this.el.innerHTML=r,e.bound&&"hidden"!==e.field.type&&a(function(){e.trigger.focus()},1),"function"==typeof this._o.onDraw){var l=this;a(function(){l._o.onDraw.call(l)},0)}}},adjustPosition:function(){var t,e,n,a,o,s,r,h,l,d;if(!this._o.container){if(this.el.style.position="absolute",t=this._o.trigger,e=t,n=this.el.offsetWidth,a=this.el.offsetHeight,o=window.innerWidth||i.documentElement.clientWidth,s=window.innerHeight||i.documentElement.clientHeight,r=window.pageYOffset||i.body.scrollTop||i.documentElement.scrollTop,"function"==typeof t.getBoundingClientRect)d=t.getBoundingClientRect(),h=d.left+window.pageXOffset,l=d.bottom+window.pageYOffset;else for(h=e.offsetLeft,l=e.offsetTop+e.offsetHeight;e=e.offsetParent;)h+=e.offsetLeft,l+=e.offsetTop;(this._o.reposition&&h+n>o||this._o.position.indexOf("right")>-1&&h-n+t.offsetWidth>0)&&(h=h-n+t.offsetWidth),(this._o.reposition&&l+a>s+r||this._o.position.indexOf("top")>-1&&l-a-t.offsetHeight>0)&&(l=l-a-t.offsetHeight),this.el.style.left=h+"px",this.el.style.top=l+"px"}},render:function(t,e){var n=this._o,i=new Date,a=p(t,e),o=new Date(t,e,1).getDay(),s=[],r=[];y(i),n.firstDay>0&&(o-=n.firstDay,o<0&&(o+=7));for(var h=a+o,l=h;l>7;)l-=7;h+=7-l;for(var d=0,u=0;d<h;d++){var c=new Date(t,e,1+(d-o)),m=!!f(this._d)&&_(c,this._d),D=_(c,i),v=d<o||d>=a+o,b=n.startRange&&_(n.startRange,c),w=n.endRange&&_(n.endRange,c),x=n.startRange&&n.endRange&&n.startRange<c&&c<n.endRange,N=n.minDate&&c<n.minDate||n.maxDate&&c>n.maxDate||n.disableWeekends&&g(c)||n.disableDayFn&&n.disableDayFn(c),C={day:1+(d-o),month:e,year:t,isSelected:m,isToday:D,isDisabled:N,isEmpty:v,isStartRange:b,isEndRange:w,isInRange:x};r.push(M(C)),7===++u&&(n.showWeekNumber&&r.unshift(k(d-o,e,t)),s.push(R(r,n.isRTL)),r=[],u=0)}return T(n,s)},isVisible:function(){return this._v},show:function(){this._v||(u(this.el,"is-hidden"),this._v=!0,this.draw(),this._o.bound&&(o(i,"click",this._onClick),this.adjustPosition()),"function"==typeof this._o.onOpen&&this._o.onOpen.call(this))},hide:function(){var t=this._v;t!==!1&&(this._o.bound&&s(i,"click",this._onClick),this.el.style.position="static",this.el.style.left="auto",this.el.style.top="auto",d(this.el,"is-hidden"),this._v=!1,void 0!==t&&"function"==typeof this._o.onClose&&this._o.onClose.call(this))},destroy:function(){this.hide(),s(this.el,"mousedown",this._onMouseDown,!0),s(this.el,"touchend",this._onMouseDown,!0),s(this.el,"change",this._onChange),this._o.field&&(s(this._o.field,"change",this._onInputChange),this._o.bound&&(s(this._o.trigger,"click",this._onInputClick),s(this._o.trigger,"focus",this._onInputFocus),s(this._o.trigger,"blur",this._onInputBlur))),this.el.parentNode&&this.el.parentNode.removeChild(this.el)}},E})</script><style>@media all{@charset "UTF-8";/*! * Pikaday * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/ - */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}}</style><dom-module id="domain-icon" assetpath="../../src/components/"><template><iron-icon icon="[[computeIcon(domain, state)]]"></iron-icon></template></dom-module><script>Polymer({is:"domain-icon",properties:{domain:{type:String,value:""},state:{type:String,value:""}},computeIcon:function(n,i){return window.hassUtil.domainIcon(n,i)}})</script><dom-module id="ha-logbook" assetpath="./"><template><style is="custom-style" include="iron-flex"></style><style>:host{display:block;padding:16px}.entry{@apply(--paper-font-body1);display:block;line-height:2em}.time{width:55px;font-size:.8em;color:var(--secondary-text-color)}domain-icon{margin:0 8px 0 16px;color:var(--primary-text-color)}.message{color:var(--primary-text-color)}a{color:var(--primary-color)}</style><template is="dom-if" if="[[!entries.length]]">No logbook entries found.</template><template is="dom-repeat" items="[[entries]]"><div class="horizontal layout entry"><div class="time">[[formatTime(item.when)]]</div><domain-icon domain="[[item.domain]]" class="icon"></domain-icon><div class="message" flex=""><template is="dom-if" if="[[!item.entityId]]"><span class="name">[[item.name]]</span></template><template is="dom-if" if="[[item.entityId]]"><a href="#" on-tap="entityClicked" class="name">[[item.name]]</a></template><span></span> <span>[[item.message]]</span></div></div></template></template></dom-module><script>Polymer({is:"ha-logbook",properties:{hass:{type:Object},entries:{type:Array,value:[]}},formatTime:function(e){return window.hassUtil.formatTime(e)},entityClicked:function(e){e.preventDefault(),this.hass.moreInfoActions.selectEntity(e.model.item.entityId)}})</script></div><dom-module id="ha-panel-logbook"><template><style include="ha-style">.selected-date-container{padding:0 16px}paper-input{max-width:200px}[hidden]{display:none!important}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Logbook</div><paper-icon-button icon="mdi:refresh" on-tap="handleRefresh"></paper-icon-button></app-toolbar></app-header><div><div class="selected-date-container"><paper-input label="Showing entries for" id="datePicker" value="[[selectedDateStr]]" on-focus="datepickerFocus"></paper-input><paper-spinner active="[[isLoading]]" hidden$="[[!isLoading]]" alt="Loading logbook entries"></paper-spinner></div><ha-logbook hass="[[hass]]" entries="[[entries]]" hidden$="[[isLoading]]"></ha-logbook></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-logbook",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},selectedDate:{type:String,bindNuclear:function(e){return e.logbookGetters.currentDate}},selectedDateStr:{type:String,value:null,bindNuclear:function(e){return[e.logbookGetters.currentDate,function(e){var t=new Date(e);return window.hassUtil.formatDate(t)}]}},isLoading:{type:Boolean,bindNuclear:function(e){return e.logbookGetters.isLoadingEntries}},isStale:{type:Boolean,bindNuclear:function(e){return e.logbookGetters.isCurrentStale},observer:"isStaleChanged"},entries:{type:Array,bindNuclear:function(e){return[e.logbookGetters.currentEntries,function(e){return e.reverse().toArray()}]}},datePicker:{type:Object}},isStaleChanged:function(e){e&&this.async(function(){this.hass.logbookActions.fetchDate(this.selectedDate)}.bind(this),1)},handleRefresh:function(){this.hass.logbookActions.fetchDate(this.selectedDate)},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new window.Pikaday({field:document.createElement("input"),trigger:this.$.datePicker.inputElement,onSelect:this.hass.logbookActions.changeCurrentDate}),this.datePicker.setDate(this.selectedDate,!0)},detached:function(){this.datePicker.destroy()}})</script></body></html> \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}}</style><dom-module id="domain-icon" assetpath="../../src/components/"><template><iron-icon icon="[[computeIcon(domain, state)]]"></iron-icon></template></dom-module><script>Polymer({is:"domain-icon",properties:{domain:{type:String,value:""},state:{type:String,value:""}},computeIcon:function(n,i){return window.hassUtil.domainIcon(n,i)}})</script><dom-module id="ha-logbook" assetpath="./"><template><style is="custom-style" include="iron-flex"></style><style>:host{display:block}.entry{@apply(--paper-font-body1);display:block;line-height:2em}.time{width:55px;font-size:.8em;color:var(--secondary-text-color)}domain-icon{margin:0 8px 0 16px;color:var(--primary-text-color)}.message{color:var(--primary-text-color)}a{color:var(--primary-color)}</style><template is="dom-if" if="[[!entries.length]]">No logbook entries found.</template><template is="dom-repeat" items="[[entries]]"><div class="horizontal layout entry"><div class="time">[[formatTime(item.when)]]</div><domain-icon domain="[[item.domain]]" class="icon"></domain-icon><div class="message" flex=""><template is="dom-if" if="[[!item.entityId]]"><span class="name">[[item.name]]</span></template><template is="dom-if" if="[[item.entityId]]"><a href="#" on-tap="entityClicked" class="name">[[item.name]]</a></template><span></span> <span>[[item.message]]</span></div></div></template></template></dom-module><script>Polymer({is:"ha-logbook",properties:{hass:{type:Object},entries:{type:Array,value:[]}},formatTime:function(e){return window.hassUtil.formatTime(e)},entityClicked:function(e){e.preventDefault(),this.hass.moreInfoActions.selectEntity(e.model.item.entityId)}})</script></div><dom-module id="ha-panel-logbook"><template><style include="ha-style">.content{padding:16px}paper-input{max-width:200px}[hidden]{display:none!important}</style><app-header-layout has-scrolling-region=""><app-header fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">Logbook</div><paper-icon-button icon="mdi:refresh" on-tap="handleRefresh"></paper-icon-button></app-toolbar></app-header><div class="flex content"><div class="selected-date-container"><paper-input label="Showing entries for" id="datePicker" value="[[selectedDateStr]]" on-focus="datepickerFocus"></paper-input><paper-spinner active="[[isLoading]]" hidden$="[[!isLoading]]" alt="Loading logbook entries"></paper-spinner></div><ha-logbook hass="[[hass]]" entries="[[entries]]" hidden$="[[isLoading]]"></ha-logbook></div></app-header-layout></template></dom-module><script>Polymer({is:"ha-panel-logbook",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},selectedDate:{type:String,bindNuclear:function(e){return e.logbookGetters.currentDate}},selectedDateStr:{type:String,value:null,bindNuclear:function(e){return[e.logbookGetters.currentDate,function(e){var t=new Date(e);return window.hassUtil.formatDate(t)}]}},isLoading:{type:Boolean,bindNuclear:function(e){return e.logbookGetters.isLoadingEntries}},isStale:{type:Boolean,bindNuclear:function(e){return e.logbookGetters.isCurrentStale},observer:"isStaleChanged"},entries:{type:Array,bindNuclear:function(e){return[e.logbookGetters.currentEntries,function(e){return e.reverse().toArray()}]}},datePicker:{type:Object}},isStaleChanged:function(e){e&&this.async(function(){this.hass.logbookActions.fetchDate(this.selectedDate)}.bind(this),1)},handleRefresh:function(){this.hass.logbookActions.fetchDate(this.selectedDate)},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new window.Pikaday({field:document.createElement("input"),trigger:this.$.datePicker.inputElement,onSelect:this.hass.logbookActions.changeCurrentDate}),this.datePicker.setDate(this.selectedDate,!0)},detached:function(){this.datePicker.destroy()}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html.gz index ebdf2fc7e724247381ca825a206fe8da955ae30b..ebe5f5edee4ad205871b147f08e1adb0e417b40b 100644 GIT binary patch delta 1066 zcmbPbIm?n=zMF$%$<?Bb>`fB&RlBwqIXeAJ`nf*A%v&sMxiNQxzwA540{va-<}sOP z{U^UXm0Ggu(3y96x}Ig<PlT-cRyu+CT~o^sxzv3x3iwaVelt~V`O>0IY-^Y=thUkp zJNJOWX+`afFXhXZXefk6)bShK;82wI4%7527F*o%LSlxso9kVtxJIs%kL#|S`&@r! zf{}5`VnestC8eRU&YG739JqB^lcv?~+?U-RR5<N&eg(%Q2?a(DubK(2vK*`leENDv z<|@|NGJM=+Zs>Wi>Bz&24v#k}&MS=J)95lN`#DK%R?h~5tIN$6rR>ODFzw@f#mbJ% z8lDBxdv0YON#~g9_Os1XisO}~h}eWA774rh69>8eTm3rFQOuOPe+F9w6L;D^&09a+ zxH`|UALq+r_V)TQUC~P@&d5=D`sc{Hth!g~G1HzgX325y?JV(p#4Z`ucSR!dbp1ES zUn{%4KLk%T3d!rb^LmNN)q~dDrg>L?P2M_P<H$9^q@v}Ketwq=%MKj;$S3(sQe8$e zj{l63P5q85M?=fomo74!qf{_mMK#&%htt!a3}F_B7iyb(Ow)39_TMD5ulLb0@rqfu z`=ZtyYAPvJ44XTB>)r{vR!8se<_rq^$zCu;wkA@@z;kxX$?_vBWqMe)**@I8b{St* z&r99TQ(n_jPimZKXI@a@b!lhSc5~iOHoG0yiuq?u-f{kHedC5%`}^6>D;Zp?<`#Y` zrX4R~+P<HAndh}rKbiBdG$^t7D|4OxUFg@f!)T_3$KsYf)2|xbippQH+Ba?Yto*aF z3#J<^ad@@PJ9Uw4#D|G~m3OkIEm^dJXW!<>v*i=s9Y{EP{@Jn<t_wa#UkTMXy}RLn zW@psB*)D!b5l`07{~%{vf3Nxdw5-jC8Lz%L+B5%!)T3UZciCO{H#2<YyvW)5v;9M1 zmGcCH`%|8#m8@u+bYtqR@MZnKjx;mXDcjxLDyRPC;n$0;Q63>nt)qf(&Hv_Is$Alx z!nZDSn)toeXFhzXZ=ZhOGd&<bvXX<#r72{We$8CBl|TP7%qn@kQ)=JCN;~oT=y}pM z@`X=D;sn?{D<3*->z4NF$Ot{o&0)T@@zHi?Ihm)A76!`5#?AQ}vi|E-^G@^Xj6$ER z^%o9Lcgi<-nJyXd$Wn0E(ZKqKDb0W83(9v!7N=;dON*+syY{4e{dp9jVr0&~`M+xS zQ=K`zBGcCI->vg_aYWPfsq8CXXP)Hptk1F)JEc5nLBx`UTgyUP1p_CoV0tuTgTcCW z^In}|%hd6UnA2csYa@2$@A~icZtqQM?nxc%V$XJ;qwW4DYv#Fzt#L8kOK+W8EbIO6 zPT#IWmug;iS4Z2pO?jVN(DVO-=0ky3Uw3?B4|w;q!J^jsl26p#Wvc^Lo!*vhbI91i jrs~f-NuStCn@rP7;vbu9Z~tNc_mBP5B=ghH{TUbl4_E(@ delta 1066 zcmbPbIm?n=zMF$1c30j;_9lsXw_VF)BHnARV(-w7*ZD7cChg>*S0!nT25S%BWz6&W z{-!N{t!1uJ?9Lv)&@(shu1!7jPHv``?S8(Z1F;hX;#Zv!mwm@qIeG7;mTe(&*Be|J zcg<M7^s}%;n&lFX-hc0=h_F84J^h}MO<FM}`K0;LvUB+&;<C)kkFVGoeM0+!dS(5$ z{#8};B!e2-a!ih8ELgX0d$xwFA6Lf0r4DB{>4(?7ZP7Yc^o!TuMTl92L9mN|(+cK= z3}+r5ZQbE;<UN-{+;=rK%^8y|Jf$*X%#IlMon~|uJf?U5hRbikXUl$Faht+p&KqL+ zZ?+1*VQ)WUNprV#?++fuw;J*0p3IK6?T47^gL)Vavs*?yjCYrpDD+$KR{S!<=7fW1 z%w4VThbm6|`QV0QZh|N0e<K&qL*8l`Pm1hL`=8DH+w%X?9mlh^3$rKw^Za9V_|!xx z<?NsN4j#)(3pxE(2eq9_pIB`>ZJAX?<HBQWqv|((b8Eff?&R~%<n+l*t8;u77I7Mf zmppD!K3u=MDY9kxj9oik?b{e~rLCRi-J~TcXV{LfxTA1@>%2ut=%LGvrK~TfEblsP z<ok4As_GuuqqT+~Y`4p9o!0vG)hj0*Fa7Lj)##Eg`*z_aYd%Rlu(JN4r<yP+jO)#d z4rgl#?lrZC%#(d(uSi^u7MeO$=k%n&3H<B^?V6s?UtPU#Qh(y}8@8`8HVdadGP7Vm zl=W|yluh@J$oINE({695nSVv*pWY3PnYz#U{{%93aoF~1toe7`QuEQNjz<c;LZ9No z4rgTVUAWF{=G&}&bEeG_-|6m><|*oR^g*@FzMqWCIQLwclatrAhQ(^Xt843~J)#^w z6IVRt^-7Uq^Z2L4_1^Gtz3q>EE6oID0(#@l{J6PJ@t*F(zGXjbxdSQ%=3eNn=U`uM z&cgZGH!`oSElZ;__GL}#_Z3z)N)OB*O^$u-=p-K}ADhwO68dYA>EAz@%R{z1q`N$N zFe|O{VQj{{Cjr;u>du#P`c9kLzCc^WW9j=t;@MN&?(;A3+&*vX!`<_q7jLZpx%1## z!EnEatcermiR(StyJKrhM_B2ehJs)xjXKvS2Ltuwq>f&Ecyy)z*QWT&<rSN&#n_j9 z<GNd|`GswA-84qkdBO{$WxleXFhB8M^5euArtaH{HU&BsMVzZxc0`}gL#en}<#+t1 zh;xT-dL;f-+H=~-u1mEdvU0+%dDGTRSW<tDd7+ICXP2u~RCarq1fOcBmQ)`n_v2SW ztJdXAIQ*#PXylB`hnb!3Uak6{{>AU`^R<a<DmIke*jaSs{q&bS5wDMKjaaqT=E=q< z{O?zs);W89|BmfPnO%Rfu^<1zKUauvVcZn$dakE&d>zF*l+P}?x_1}X(p_b{k15;m m9&tYL{+#5Msq9n3l*<L}?`}U^|LT1`!^>?+zdrgiFaQ9^RRlu- diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index aebec9ec51c..48c21a590a9 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","805b532af8146f0f2c160ff5fcb0f623"],["/frontend/panels/dev-event-c2d5ec676be98d4474d19f94d0262c1e.html","6c55fc819751923ab00c62ae3fbb7222"],["/frontend/panels/dev-info-a9c07bf281fe9791fb15827ec1286825.html","931f9327e368db710fcdf5f7202f2588"],["/frontend/panels/dev-service-ac74f7ce66fd7136d25c914ea12f4351.html","7018929ba2aba240fc86e16d33201490"],["/frontend/panels/dev-state-65e5f791cc467561719bf591f1386054.html","78158786a6597ef86c3fd6f4985cde92"],["/frontend/panels/dev-template-7d744ab7f7c08b6d6ad42069989de400.html","8a6ee994b1cdb45b081299b8609915ed"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-ad1ebcd0614c98a390d982087a7ca75c.js","e900a4b42404d2a5a1c0497e7c53c975"],["/static/frontend-d6132d3aaac78e1a91efe7bc130b6f45.html","dff6a208dcb092b248333c28e7f665db"],["/static/mdi-48fcee544a61b668451faf2b7295df70.html","08069e54df1fd92bbff70299605d8585"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},createCacheKey=function(e,t,n,a){var c=new URL(e);return a&&c.toString().match(a)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],a=new URL(t,self.location),c=createCacheKey(a,hashParamName,n,!1);return[a.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n))return e.add(new Request(n,{credentials:"same-origin"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(n);var a="index.html";!t&&a&&(n=addDirectoryIndex(n,a),t=urlsToCacheKeys.has(n));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(n=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var n,a;for(n=0;n<e.length;n++)if(a=e[n],a.url===t&&"focus"in a)return a.focus();if(clients.openWindow)return clients.openWindow(t)})))}),self.addEventListener("notificationclose",function(e){notificationEventCallback("closed",e)}); \ No newline at end of file +"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","e7ef237586d3fbf6ba0bdb577923ea38"],["/frontend/panels/dev-event-f19840b9a6a46f57cb064b384e1353f5.html","21cf247351b95fdd451c304e308a726c"],["/frontend/panels/dev-info-3765a371478cc66d677cf6dcc35267c6.html","dd614f2ee5e09a9dfd7f98822a55893d"],["/frontend/panels/dev-service-e32bcd3afdf485417a3e20b4fc760776.html","d7b70007dfb97e8ccbaa79bc2b41a51d"],["/frontend/panels/dev-state-8257d99a38358a150eafdb23fa6727e0.html","3cf24bb7e92c759b35a74cf641ed80cb"],["/frontend/panels/dev-template-cbb251acabd5e7431058ed507b70522b.html","edd6ef67f4ab763f9d3dd7d3aa6f4007"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-22d39af274e1d824ca1302e10971f2d8.js","c6305fc1dee07b5bf94de95ffaccacc4"],["/static/frontend-5aef64bf1b94cc197ac45f87e26f57b5.html","9c16019b4341a5862ad905668ac2153b"],["/static/mdi-48fcee544a61b668451faf2b7295df70.html","08069e54df1fd92bbff70299605d8585"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;a<e.length;a++)if(n=e[a],n.url===t&&"focus"in n)return n.focus();if(clients.openWindow)return clients.openWindow(t)})))}),self.addEventListener("notificationclose",function(e){notificationEventCallback("closed",e)}); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/service_worker.js.gz b/homeassistant/components/frontend/www_static/service_worker.js.gz index 4b2a6cf9dff98acb2c85aba5dbebaac778fa8ea2..8b501e1db0e7b1479276ffd73b11ec8e8320bafe 100644 GIT binary patch delta 2286 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 Vyu5J7XSM&#T$vjWOch~Z006BfSO5S3 delta 2286 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 Syf*s}{|WxfJEw{;FaQA7V^72Y From b685e6e2b51168c9a8c3dfd4f6a4b53bc464b9d3 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus.schoutsen@mycase.com> Date: Mon, 9 Jan 2017 01:38:04 +0100 Subject: [PATCH 121/189] Update frontend --- homeassistant/components/frontend/version.py | 2 +- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 131138 -> 131597 bytes .../www_static/home-assistant-polymer | 2 +- .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2323 -> 2324 bytes 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 3cae814daff..09f6803282b 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,7 +2,7 @@ FINGERPRINTS = { "core.js": "22d39af274e1d824ca1302e10971f2d8", - "frontend.html": "5aef64bf1b94cc197ac45f87e26f57b5", + "frontend.html": "61e57194179b27563a05282b58dd4f47", "mdi.html": "48fcee544a61b668451faf2b7295df70", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "f19840b9a6a46f57cb064b384e1353f5", diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 6811287dabe..f375a93bec7 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -2,4 +2,4 @@ },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]},_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributionClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyRoot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this._updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild(this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDistributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.call(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o=0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInsertionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0;d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t=u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply(e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInsertionPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s=0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=void 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a],t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this));for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++)t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[],o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r))for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)}else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed.getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length&&(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed.getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.addedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a<o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)},_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return!0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\()?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:function(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElements.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolContent:function(){},_beginDistribute:function(){},distributeContent:function(){},_distributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:function(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root=this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleContent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,this._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddleContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.MutationObserver(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._twiddle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.context=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundComplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.finish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.callback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupDebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerActive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebouncer:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:function(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createElement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),this._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),this._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._marshalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script><script>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n=e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("strip-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Node.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\\\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?:,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[|{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.exec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=Boolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h=h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,event:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r.push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t="",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnotation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent=this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent",parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotations:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&(t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this._parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r.bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotations:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextSibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._parseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s.nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textContent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim()&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n,r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(var t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firstChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.name,s.value)}var i=e.getAttribute("name");return i&&t.setAttribute("select","[slot='"+i+"']"),e.parentNode.replaceChild(t,e),t},_parseTemplate:function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAnnotations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polymer.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:function(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.events.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:function(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length-1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribute"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"property"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r.length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.findAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.nextSibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace(a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s&&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="style"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);return n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.createHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href=t,n(e,i)}function s(e){return e.body.__urlResolver||(e.body.__urlResolver=e.createElement("a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:["action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolveCss:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.indexOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".")!==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:function(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice(e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t)&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function(){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._prepElement(t)},this._template._content&&this._template._content._notes?this._notes=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotations(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.prepElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings[r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseMethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.templateContent){this._processAnnotations(n.templateContent._notes);var l=n.templateContent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name:u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.concat(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length&&(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u=0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.signature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.templateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:function(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAnnotatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:function(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(),this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){for(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._configureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTemplateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_configureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorage__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t=0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._findAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&&this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.length;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}},_marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotatedNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name,r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0]],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventHandler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._listen(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundListeners=new WeakMap);var o=i.get(n);o||(o={},Polymer.Settings.isIE&&n==window||i.set(n,o));var a=this._boundListenerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListeners;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))};return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function(e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:function(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){for(var t,n=P?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t,S,!0):document.removeEventListener(t,S,!0)}function t(t){E.mouse.mouseIgnoreJob||e(!0);var n=function(){e(),E.mouse.target=null,E.mouse.mouseIgnoreJob=null};E.mouse.target=Polymer.dom(t).rootTarget,E.mouse.mouseIgnoreJob=Polymer.Debounce(E.mouse.mouseIgnoreJob,n,d)}function n(e){var t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.buttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),Boolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("click"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBoundingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s<=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0;s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn=t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("mouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),document.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polymer.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGestures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_=2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function(){try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}(),g=!1;!function(){try{var e=Object.defineProperty({},"passive",{get:function(){g=!0}});window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(e){}}();var P=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),S=function(e){var t=e.sourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type)){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===E.mouse.target)return;e.preventDefault(),e.stopPropagation()}},E={mouse:{target:null,mouseIgnoreJob:null},touch:{x:0,y:0,id:-1,scrollDecided:!1}};document.addEventListener("touchend",t,!!g&&{passive:!0});var C={gestures:{},recognizers:[],deepTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shadowRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarget:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var t,n=e.type,r=a(e.currentTarget),s=r[c];if(s){var i=s[n];if(i){if(!e[h]&&(e[h]={},"touch"===n.slice(0,5))){var o=e.changedTouches[0];if("touchstart"===n&&1===e.touches.length&&(E.touch.id=o.identifier),E.touch.id!==o.identifier)return;l||"touchstart"!==n&&"touchmove"!==n||C.handleTouchAction(e)}if(t=e[h],!t.skip){for(var u,f=C.recognizers,p=0;p<f.length;p++)u=f[p],i[u.name]&&!t[u.name]&&u.flow&&u.flow.start.indexOf(e.type)>-1&&u.reset&&u.reset();for(p=0,u;p<f.length;p++)u=f[p],i[u.name]&&!t[u.name]&&(t[u.name]=!0,u[n](e))}}}},handleTouchAction:function(e){var t=e.changedTouches[0],n=e.type;if("touchstart"===n)E.touch.x=t.clientX,E.touch.y=t.clientY,E.touch.scrollDecided=!1;else if("touchmove"===n){if(E.touch.scrollDecided)return;E.touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(E.touch.x-t.clientX),a=Math.abs(E.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y"===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u=0;u<s.length;u++)l=s[u],P&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_count:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1,h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAction(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&&(h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recognizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},findRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=this.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)return t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t},fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable:!0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault&&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t.info&&(t.info.prevent=!0)},resetMouseCanceller:function(){E.mouse.mouseIgnoreJob&&E.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedown","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function(){o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire("up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:function(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:function(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:function(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,prevent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchAction:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this.moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:function(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info.x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(this.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.clientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"end":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=function(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.info.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOriginalTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s)&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),this.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.info.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fire:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info.moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t.clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mousedown","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:function(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this.info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e)},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.changedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},forward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY-this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&(this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,preventer:t}))}});var b={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addFeature({_setupGestures:function(){this.__polymerGestures=null},_listen:function(e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e,t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirection:function(e,t){t=t||this,C.setTouchAction(t,b[e]||"auto")}}),Polymer.Gestures=C}(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return Polymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1==arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this,1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""):Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:function(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChildNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveChildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})},getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n=[],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textContent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(this).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:function(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes:function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Polymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return this.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NODE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void 0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useCache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null),r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:function(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){var n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:function(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e)){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.indexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.style.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||this,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.Base.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s,l=this,c=function(e){return e.target.__firedLoad=!0,e.target.removeEventListener("load",c),e.target.removeEventListener("error",h),t.call(l,e)},h=function(e){return e.target.__firedError=!0,e.target.removeEventListener("load",c),e.target.removeEventListener("error",h),n.call(l,e)};return t&&a.addEventListener("load",c),n&&a.addEventListener("error",h),o?(o.__firedLoad&&o.dispatchEvent(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s.href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s)),a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e)&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDescendant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.Settings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.importHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElements.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this,e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Polymer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=void 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t,{value:n},{bubbles:!1,cancelable:!1,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE})},_propertySetter:function(e,t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"object"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChanged(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r=r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.length;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:function(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__[t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._propertyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[]),n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i={kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBindings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort(this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects:function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify:4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return this.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo&&e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.set=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e.substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i),a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index:t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e.path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s,i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e],r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:function(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];this._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer.Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attribute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationEffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectPropertyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notifyChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)},_observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined"))},_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polymer.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||this._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__setProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect","compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:function(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind._marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValue(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s=[],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.name;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polymer.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAncestor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.Base._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addPropertyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:function(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_prepBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:function(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect(t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed)),n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDashCase(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase(t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" cannot be reflected to attribute "+r+' because "-" is not a valid starting attribute name. Use a lowercase first letter for the property instead.')):this._addPropertyEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffects(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s=r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.model,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect(e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e)for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addComplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Error("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args.length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{method:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.method,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})},_addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_addAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._addAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.name[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.name+' because "-" is not a valid attribute starting character')):this._addPropertyEffect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.propertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,event:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputationEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComputationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.args[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dynamicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnotatedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedComputation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n.kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.match(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPropertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){var r=t[2].replace(/\\,/g,",").split(",");return this._parseArgs(r,n)}return n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e){var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:function(e){var t=e.trim().replace(/,/g,",").replace(/\\(.)/g,"$1"),n={name:t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n.value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}return n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep(t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2)))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),this._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:function(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationValue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty(r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n),r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}return"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),("textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_executeStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__static__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}}),function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_setupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig=null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes:function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:function(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProperty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||(this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure:function(){this._configureAnnotationReferences(),this._configureInstanceProperties(),this._aboveConfig=this.mixin({},this._config); for(var e={},t=0;t<this.behaviors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this._configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._config=e,this._clients&&this._clients.length&&this._distributeConfig(this._config)},_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e&&this.hasOwnProperty(t)&&(this._configValue(t,this[t]),delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];if(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._config)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)for(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("annotation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c="attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._configValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=this._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serialize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:function(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveConfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0===this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Polymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t.detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueHandler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_flushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r={},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r.path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t&&(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_getPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for(var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}return e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathParts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];if(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)==l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:null}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r.indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.setItem(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getPathParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.Collection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Collection.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".")),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a&&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_annotationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annotationEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s=this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s._notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this,t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer.Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},unlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoundPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e.isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&this._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root(t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{path:t,value:n},{bubbles:!1,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE})},_EVENT_CHANGED:"-changed",notifySplices:function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices(e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".length",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySplice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed:s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=Array.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.length&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},splice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t):Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice.apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n.path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&this._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e,this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:function(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_complexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComputationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({resolveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.getAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.baseURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)},_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.rules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this.CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.substring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r=e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expandUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.lastIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.indexOf(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MEDIA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.keyframesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.VAR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rules;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e},_expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,function(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify:function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!this._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify(i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r=" "+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r,e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e=this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomPropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this._rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.mixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE:7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:"@"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABLES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[rel=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this.parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},forActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssRules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRules},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTypes.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForStyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTypes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedia(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===this.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o=e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a,t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this.applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nextSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},createScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.setAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePlaceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" "),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=document.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cssFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++)r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polymer.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n)),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssText||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeApi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++)if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this.cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INCLUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNode.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import&&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"===t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)return this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("css-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++)switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVariableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"","","");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a===-1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).trim();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)|(animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETED:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolveCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.CssParse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Polymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transformDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer.dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:function(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.classList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.classList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttribute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},elementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeShadow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent(e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0,p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):this.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:function(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a=this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0),s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHostScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transformRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e.selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleCss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)},_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim(),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"),e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCompoundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}return i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s})),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.indexOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?this._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&&(e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transformSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transformHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];return s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.parsedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule(e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selector=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e.match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.trim(),s)},_slottedToContent:function(e){return e.replace(E,p+"> $1")},SCOPE_NAME:"style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match",E=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExtends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boolean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r=this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for(var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._extendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,function(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:function(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.split(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:function(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.parent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToParent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector.replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector,t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAndAddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extends=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,STRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e=e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]}function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty(e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.slice(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n=t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0)}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n)&&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r(h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f)):e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u),u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n,r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__currentElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a],l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.join("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.MIXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separator:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e,this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t&&(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:function(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":root"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.cssText=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._findApplications(e)},_getInitialValueForProperty:function(e){return this._measureElement||(this._measureElement=document.createElement("meta"),this._measureElement.style.all="initial",document.head.appendChild(this._measureElement)),window.getComputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransformRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y),y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Polymer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=Polymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Settings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle&&"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(this,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulateStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuild=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow"===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o.useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o.useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if(r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFromModule(this.is);var l=this._template&&this._template.parentNode;if(!this._template||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){var c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)&&(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulateStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAttr))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._scopeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if(e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("class",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.length&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeElementClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s(t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Polymer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32),r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.StyleUtil,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer.Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calcHostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e.index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes.MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split(" ").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleScopeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.propertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.propertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectProperties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSIGN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].trim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCssText)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,"").replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(var n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:function(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e[t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.indexOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){var o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o&&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVariableAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for(var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.lastIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{var o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForProperty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.slice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.propertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForProperties(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx.ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTransform){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.keyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.length;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDataFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles(r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.parsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties(n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"===e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo||self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.is,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexOf(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.indexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t.transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformComplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o&&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})}}},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forActiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o){var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i.collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function(e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0,-1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elementKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyProperties(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText||(s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})},_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i.useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRuleTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e.transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e.transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSelector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:function(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h=0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector=c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute(r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this.XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transformStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCount--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShadow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyCss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.textContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._scopeStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._customStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0===n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleProperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[];for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customStyleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache=function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function(e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if(r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s.keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsStrictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length},_objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._objectsEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties,t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_properties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(document.documentElement),addStyle:function(e){this._styles.push(e),this._properties=null},get _styleProperties(){return this._properties||(e.decorateStyles(this._styles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRootPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.customStyle),e.reify(this._properties)),this._properties},hasStyleProperties:function(){return Boolean(this._properties)},_needsStyleProperties:function(){},_computeStyleProperties:function(){return this._styleProperties},updateStyles:function(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._styleCache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__importElement||r,r._apply(); n&&e.updateNativeStyleProperties(document.documentElement,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.serializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(this._styles,this):null)},customStyle:null,getComputedStyleValue:function(e){return i||this._styleProperties||this._computeStyleProperties(),!i&&this._styleProperties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_setupStyleProperties:function(){this.customStyle={},this._styleCache=null,this._styleProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._customStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySelector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeStyle.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSelector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__stylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.host))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=this._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCache||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styles,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),this._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStyleProperties,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,this.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(this.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStyleProperties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeStyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootPropertiesForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styles,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStyleProperties:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=this._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperties=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.style);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scopeCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"===n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementClass(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.call(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr||(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:"")),t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeStyleProperties(this,this.customStyle):(this.isAttached?this._needsStyleProperties()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropertiesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles())},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._query(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.updateStyles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehavior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverEffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:function(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stampTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marshalInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleTransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is:"custom-style",extends:"style",_template:null,properties:{include:String},ready:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__cssBuild=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!==this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedElement;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties(),s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=new MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childList:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){var t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedBuild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forEachRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transform([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpdateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCustomProperties:function(){var e=this.__appliedElement;this._computeStyleProperties();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssText(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",templatize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotations(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffects(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.listen=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropertyOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._constructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._content._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&this.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hideTemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextContent__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.dom.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function(){Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(var n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstancePropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._content;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=function(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Polymer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=this._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parentPropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=Object.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareModelNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function",effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kind:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDashCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forwardParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){return a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return function(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.dataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Object.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySetter);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardInstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHost,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentProps&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:function(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in this._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(this._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getRootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting(),this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._notes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnotatedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),this._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s._createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scopeElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElementClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templatized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPrefix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)if(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.parentNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collections=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this),this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.prototype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new WeakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==typeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pmap[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).map(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slice(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this._removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.store[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},getItems:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_applySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKeys=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?null:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{removed:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collections.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array},as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Function,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"},observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initializeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Number,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatizer],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],this._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._renderChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instances.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._instanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[this.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)},_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:function(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.initialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){this.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requestRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boundRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFrameTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(this._render)},_observeChanged:function(){this._observePaths=this.observe&&this.observe.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):this.items?this._error(this._logf("dom-repeat","expected array for `items`, found",this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._render);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSplices),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwardItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._observePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounceTemplate(this._render))}},render:function(){this._needFullRefresh=!0,this._debounceTemplate(this._render),this._flushTemplates()},_render:function(){this._needFullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterFn?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),this._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._instances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._limit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=this._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProperty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._instances.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:function(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];var n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=this;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlaceholder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?this._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){return e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];void 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filterFn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i++)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;else{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){for(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_detachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChild(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlaceholder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_insertPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.collection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t){var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instances[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNode;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgradeInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:function(e){for(var t=0;t<this._instances.length;t++)this._instances[t].isPlaceholder||this._instances[t]._showHideChildren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sortFn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.indexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.length+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlaceholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToInstIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:function(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}},clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.selected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selected"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.length||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelected:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selected==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._selectedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected."+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&this.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","items."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extends:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_queueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[Polymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(this._ensureInstance)},render:function(){this._flushTemplates()},_render:function(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showHideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._instance&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),this._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNode;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstance:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)for(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r++)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChildren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setProperty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance._notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._readied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,this._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertChildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefore(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<this._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfigure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=this._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:function(){this._importsReady&&this.render()},detached:function(){this._removeChildren()},render:function(){this._ensureReady(),this._children||(this._template=this,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepConfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatures.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),this._insertChildren(),this.fire("dom-change")}})</script><style>[hidden]{display:none!important}</style><style is="custom-style">:root{--layout:{display:-ms-flexbox;display:-webkit-flex;display:flex};--layout-inline:{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex};--layout-horizontal:{@apply(--layout);-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row};--layout-horizontal-reverse:{@apply(--layout);-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse};--layout-vertical:{@apply(--layout);-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column};--layout-vertical-reverse:{@apply(--layout);-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse};--layout-wrap:{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap};--layout-wrap-reverse:{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse};--layout-flex-auto:{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto};--layout-flex-none:{-ms-flex:none;-webkit-flex:none;flex:none};--layout-flex:{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px};--layout-flex-2:{-ms-flex:2;-webkit-flex:2;flex:2};--layout-flex-3:{-ms-flex:3;-webkit-flex:3;flex:3};--layout-flex-4:{-ms-flex:4;-webkit-flex:4;flex:4};--layout-flex-5:{-ms-flex:5;-webkit-flex:5;flex:5};--layout-flex-6:{-ms-flex:6;-webkit-flex:6;flex:6};--layout-flex-7:{-ms-flex:7;-webkit-flex:7;flex:7};--layout-flex-8:{-ms-flex:8;-webkit-flex:8;flex:8};--layout-flex-9:{-ms-flex:9;-webkit-flex:9;flex:9};--layout-flex-10:{-ms-flex:10;-webkit-flex:10;flex:10};--layout-flex-11:{-ms-flex:11;-webkit-flex:11;flex:11};--layout-flex-12:{-ms-flex:12;-webkit-flex:12;flex:12};--layout-start:{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start};--layout-center:{-ms-flex-align:center;-webkit-align-items:center;align-items:center};--layout-end:{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end};--layout-baseline:{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline};--layout-start-justified:{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start};--layout-center-justified:{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center};--layout-end-justified:{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end};--layout-around-justified:{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around};--layout-justified:{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between};--layout-center-center:{@apply(--layout-center);@apply(--layout-center-justified)};--layout-self-start:{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start};--layout-self-center:{-ms-align-self:center;-webkit-align-self:center;align-self:center};--layout-self-end:{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end};--layout-self-stretch:{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch};--layout-self-baseline:{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline};--layout-start-aligned:{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start};--layout-end-aligned:{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end};--layout-center-aligned:{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center};--layout-between-aligned:{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between};--layout-around-aligned:{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around};--layout-block:{display:block};--layout-invisible:{visibility:hidden!important};--layout-relative:{position:relative};--layout-fit:{position:absolute;top:0;right:0;bottom:0;left:0};--layout-scroll:{-webkit-overflow-scrolling:touch;overflow:auto};--layout-fullbleed:{margin:0;height:100vh};--layout-fixed-top:{position:fixed;top:0;left:0;right:0};--layout-fixed-right:{position:fixed;top:0;right:0;bottom:0};--layout-fixed-bottom:{position:fixed;right:0;bottom:0;left:0};--layout-fixed-left:{position:fixed;top:0;bottom:0;left:0};}</style><script>Polymer.PaperSpinnerBehavior={listeners:{animationend:"__reset",webkitAnimationEnd:"__reset"},properties:{active:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"__activeChanged"},alt:{type:String,value:"loading",observer:"__altChanged"},__coolingDown:{type:Boolean,value:!1}},__computeContainerClasses:function(e,t){return[e||t?"active":"",t?"cooldown":""].join(" ")},__activeChanged:function(e,t){this.__setAriaHidden(!e),this.__coolingDown=!e&&t},__altChanged:function(e){e===this.getPropertyInfo("alt").value?this.alt=this.getAttribute("aria-label")||e:(this.__setAriaHidden(""===e),this.setAttribute("aria-label",e))},__setAriaHidden:function(e){var t="aria-hidden";e?this.setAttribute(t,"true"):this.removeAttribute(t)},__reset:function(){this.active=!1,this.__coolingDown=!1}}</script><dom-module id="paper-spinner-styles" assetpath="../bower_components/paper-spinner/"><template><style>:host{display:inline-block;position:relative;width:28px;height:28px;--paper-spinner-container-rotation-duration:1568ms;--paper-spinner-expand-contract-duration:1333ms;--paper-spinner-full-cycle-duration:5332ms;--paper-spinner-cooldown-duration:400ms}#spinnerContainer{width:100%;height:100%;direction:ltr}#spinnerContainer.active{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite;animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;white-space:nowrap;border-color:var(--paper-spinner-color,--google-blue-500)}.layer-1{border-color:var(--paper-spinner-layer-1-color,--google-blue-500)}.layer-2{border-color:var(--paper-spinner-layer-2-color,--google-red-500)}.layer-3{border-color:var(--paper-spinner-layer-3-color,--google-yellow-500)}.layer-4{border-color:var(--paper-spinner-layer-4-color,--google-green-500)}.active .spinner-layer{-webkit-animation-name:fill-unfill-rotate;-webkit-animation-duration:var(--paper-spinner-full-cycle-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-name:fill-unfill-rotate;animation-duration:var(--paper-spinner-full-cycle-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite;opacity:1}.active .spinner-layer.layer-1{-webkit-animation-name:fill-unfill-rotate,layer-1-fade-in-out;animation-name:fill-unfill-rotate,layer-1-fade-in-out}.active .spinner-layer.layer-2{-webkit-animation-name:fill-unfill-rotate,layer-2-fade-in-out;animation-name:fill-unfill-rotate,layer-2-fade-in-out}.active .spinner-layer.layer-3{-webkit-animation-name:fill-unfill-rotate,layer-3-fade-in-out;animation-name:fill-unfill-rotate,layer-3-fade-in-out}.active .spinner-layer.layer-4{-webkit-animation-name:fill-unfill-rotate,layer-4-fade-in-out;animation-name:fill-unfill-rotate,layer-4-fade-in-out}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@keyframes layer-1-fade-in-out{0%{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}to{opacity:1}}@-webkit-keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@keyframes layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@keyframes layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}to{opacity:0}}@-webkit-keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}@keyframes layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.spinner-layer::after{left:45%;width:10%;border-top-style:solid}.circle-clipper::after,.spinner-layer::after{content:'';box-sizing:border-box;position:absolute;top:0;border-width:var(--paper-spinner-stroke-width,3px);border-color:inherit;border-radius:50%}.circle-clipper::after{bottom:0;width:200%;border-style:solid;border-bottom-color:transparent!important}.circle-clipper.left::after{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right::after{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper::after,.active .gap-patch::after{-webkit-animation-duration:var(--paper-spinner-expand-contract-duration);-webkit-animation-timing-function:cubic-bezier(.4,0,.2,1);-webkit-animation-iteration-count:infinite;animation-duration:var(--paper-spinner-expand-contract-duration);animation-timing-function:cubic-bezier(.4,0,.2,1);animation-iteration-count:infinite}.active .circle-clipper.left::after{-webkit-animation-name:left-spin;animation-name:left-spin}.active .circle-clipper.right::after{-webkit-animation-name:right-spin;animation-name:right-spin}@-webkit-keyframes left-spin{0%{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{0%{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1);animation:container-rotate var(--paper-spinner-container-rotation-duration) linear infinite,fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}</style></template></dom-module><dom-module id="paper-spinner" assetpath="../bower_components/paper-spinner/"><template strip-whitespace=""><style include="paper-spinner-styles"></style><div id="spinnerContainer" class-name="[[__computeContainerClasses(active, __coolingDown)]]"><div class="spinner-layer layer-1"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-2"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-3"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div><div class="spinner-layer layer-4"><div class="circle-clipper left"></div><div class="circle-clipper right"></div></div></div></template><script>Polymer({is:"paper-spinner",behaviors:[Polymer.PaperSpinnerBehavior]})</script></dom-module><style>@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-Black.ttf) format("truetype");font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(/static/fonts/roboto/Roboto-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Thin.ttf) format("truetype");font-weight:100;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"Roboto Mono";src:url(/static/fonts/robotomono/RobotoMono-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}</style><style is="custom-style">:root{--paper-font-common-base:{font-family:Roboto,Noto,sans-serif;-webkit-font-smoothing:antialiased};--paper-font-common-code:{font-family:'Roboto Mono',Consolas,Menlo,monospace;-webkit-font-smoothing:antialiased};--paper-font-common-expensive-kerning:{text-rendering:optimizeLegibility};--paper-font-common-nowrap:{white-space:nowrap;overflow:hidden;text-overflow:ellipsis};--paper-font-display4:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:112px;font-weight:300;letter-spacing:-.044em;line-height:120px};--paper-font-display3:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:56px;font-weight:400;letter-spacing:-.026em;line-height:60px};--paper-font-display2:{@apply(--paper-font-common-base);font-size:45px;font-weight:400;letter-spacing:-.018em;line-height:48px};--paper-font-display1:{@apply(--paper-font-common-base);font-size:34px;font-weight:400;letter-spacing:-.01em;line-height:40px};--paper-font-headline:{@apply(--paper-font-common-base);font-size:24px;font-weight:400;letter-spacing:-.012em;line-height:32px};--paper-font-title:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:20px;font-weight:500;line-height:28px};--paper-font-subhead:{@apply(--paper-font-common-base);font-size:16px;font-weight:400;line-height:24px};--paper-font-body2:{@apply(--paper-font-common-base);font-size:14px;font-weight:500;line-height:24px};--paper-font-body1:{@apply(--paper-font-common-base);font-size:14px;font-weight:400;line-height:20px};--paper-font-caption:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:12px;font-weight:400;letter-spacing:0.011em;line-height:20px};--paper-font-menu:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:13px;font-weight:500;line-height:24px};--paper-font-button:{@apply(--paper-font-common-base);@apply(--paper-font-common-nowrap);font-size:14px;font-weight:500;letter-spacing:0.018em;line-height:24px;text-transform:uppercase};--paper-font-code2:{@apply(--paper-font-common-code);font-size:14px;font-weight:700;line-height:20px};--paper-font-code1:{@apply(--paper-font-common-code);font-size:14px;font-weight:500;line-height:20px};}</style><dom-module id="iron-flex" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal,.layout.vertical{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.inline{display:-ms-inline-flexbox;display:-webkit-inline-flex;display:inline-flex}.layout.horizontal{-ms-flex-direction:row;-webkit-flex-direction:row;flex-direction:row}.layout.vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.layout.wrap{-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.flex{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-auto{-ms-flex:1 1 auto;-webkit-flex:1 1 auto;flex:1 1 auto}.flex-none{-ms-flex:none;-webkit-flex:none;flex:none}</style></template></dom-module><dom-module id="iron-flex-reverse" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.horizontal-reverse,.layout.vertical-reverse{display:-ms-flexbox;display:-webkit-flex;display:flex}.layout.horizontal-reverse{-ms-flex-direction:row-reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}.layout.vertical-reverse{-ms-flex-direction:column-reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}.layout.wrap-reverse{-ms-flex-wrap:wrap-reverse;-webkit-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}</style></template></dom-module><dom-module id="iron-flex-alignment" assetpath="../bower_components/iron-flex-layout/"><template><style>.layout.start{-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start}.layout.center,.layout.center-center{-ms-flex-align:center;-webkit-align-items:center;align-items:center}.layout.end{-ms-flex-align:end;-webkit-align-items:flex-end;align-items:flex-end}.layout.baseline{-ms-flex-align:baseline;-webkit-align-items:baseline;align-items:baseline}.layout.start-justified{-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}.layout.center-center,.layout.center-justified{-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center}.layout.end-justified{-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}.layout.around-justified{-ms-flex-pack:distribute;-webkit-justify-content:space-around;justify-content:space-around}.layout.justified{-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.self-start{-ms-align-self:flex-start;-webkit-align-self:flex-start;align-self:flex-start}.self-center{-ms-align-self:center;-webkit-align-self:center;align-self:center}.self-end{-ms-align-self:flex-end;-webkit-align-self:flex-end;align-self:flex-end}.self-stretch{-ms-align-self:stretch;-webkit-align-self:stretch;align-self:stretch}.self-baseline{-ms-align-self:baseline;-webkit-align-self:baseline;align-self:baseline}; .layout.start-aligned{-ms-flex-line-pack:start;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start}.layout.end-aligned{-ms-flex-line-pack:end;-ms-align-content:flex-end;-webkit-align-content:flex-end;align-content:flex-end}.layout.center-aligned{-ms-flex-line-pack:center;-ms-align-content:center;-webkit-align-content:center;align-content:center}.layout.between-aligned{-ms-flex-line-pack:justify;-ms-align-content:space-between;-webkit-align-content:space-between;align-content:space-between}.layout.around-aligned{-ms-flex-line-pack:distribute;-ms-align-content:space-around;-webkit-align-content:space-around;align-content:space-around}</style></template></dom-module><dom-module id="iron-flex-factors" assetpath="../bower_components/iron-flex-layout/"><template><style>.flex,.flex-1{-ms-flex:1 1 0px;-webkit-flex:1;flex:1;-webkit-flex-basis:0px;flex-basis:0px}.flex-2{-ms-flex:2;-webkit-flex:2;flex:2}.flex-3{-ms-flex:3;-webkit-flex:3;flex:3}.flex-4{-ms-flex:4;-webkit-flex:4;flex:4}.flex-5{-ms-flex:5;-webkit-flex:5;flex:5}.flex-6{-ms-flex:6;-webkit-flex:6;flex:6}.flex-7{-ms-flex:7;-webkit-flex:7;flex:7}.flex-8{-ms-flex:8;-webkit-flex:8;flex:8}.flex-9{-ms-flex:9;-webkit-flex:9;flex:9}.flex-10{-ms-flex:10;-webkit-flex:10;flex:10}.flex-11{-ms-flex:11;-webkit-flex:11;flex:11}.flex-12{-ms-flex:12;-webkit-flex:12;flex:12}</style></template></dom-module><dom-module id="iron-positioning" assetpath="../bower_components/iron-flex-layout/"><template><style>.block{display:block}[hidden]{display:none!important}.invisible{visibility:hidden!important}.relative{position:relative}.fit{position:absolute;top:0;right:0;bottom:0;left:0}body.fullbleed{margin:0;height:100vh}.scroll{-webkit-overflow-scrolling:touch;overflow:auto}.fixed-bottom,.fixed-left,.fixed-right,.fixed-top{position:fixed}.fixed-top{top:0;left:0;right:0}.fixed-right{top:0;right:0;bottom:0}.fixed-bottom{right:0;bottom:0;left:0}.fixed-left{top:0;bottom:0;left:0}</style></template></dom-module><script>!function(n){"use strict";function t(n,t){for(var e=[],r=0,u=n.length;r<u;r++)e.push(n[r].substr(0,t));return e}function e(n){return function(t,e,r){var u=r[n].indexOf(e.charAt(0).toUpperCase()+e.substr(1).toLowerCase());~u&&(t.month=u)}}function r(n,t){for(n=String(n),t=t||2;n.length<t;)n="0"+n;return n}var u={},o=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,a=/\d\d?/,i=/\d{3}/,s=/\d{4}/,m=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,d=function(){},f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],c=["January","February","March","April","May","June","July","August","September","October","November","December"],h=t(c,3),l=t(f,3);u.i18n={dayNamesShort:l,dayNames:f,monthNamesShort:h,monthNames:c,amPm:["am","pm"],DoFn:function(n){return n+["th","st","nd","rd"][n%10>3?0:(n-n%10!==10)*n%10]}};var M={D:function(n){return n.getDate()},DD:function(n){return r(n.getDate())},Do:function(n,t){return t.DoFn(n.getDate())},d:function(n){return n.getDay()},dd:function(n){return r(n.getDay())},ddd:function(n,t){return t.dayNamesShort[n.getDay()]},dddd:function(n,t){return t.dayNames[n.getDay()]},M:function(n){return n.getMonth()+1},MM:function(n){return r(n.getMonth()+1)},MMM:function(n,t){return t.monthNamesShort[n.getMonth()]},MMMM:function(n,t){return t.monthNames[n.getMonth()]},YY:function(n){return String(n.getFullYear()).substr(2)},YYYY:function(n){return n.getFullYear()},h:function(n){return n.getHours()%12||12},hh:function(n){return r(n.getHours()%12||12)},H:function(n){return n.getHours()},HH:function(n){return r(n.getHours())},m:function(n){return n.getMinutes()},mm:function(n){return r(n.getMinutes())},s:function(n){return n.getSeconds()},ss:function(n){return r(n.getSeconds())},S:function(n){return Math.round(n.getMilliseconds()/100)},SS:function(n){return r(Math.round(n.getMilliseconds()/10),2)},SSS:function(n){return r(n.getMilliseconds(),3)},a:function(n,t){return n.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(n,t){return n.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(n){var t=n.getTimezoneOffset();return(t>0?"-":"+")+r(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},g={D:[a,function(n,t){n.day=t}],Do:[new RegExp(a.source+m.source),function(n,t){n.day=parseInt(t,10)}],M:[a,function(n,t){n.month=t-1}],YY:[a,function(n,t){var e=new Date,r=+(""+e.getFullYear()).substr(0,2);n.year=""+(t>68?r-1:r)+t}],h:[a,function(n,t){n.hour=t}],m:[a,function(n,t){n.minute=t}],s:[a,function(n,t){n.second=t}],YYYY:[s,function(n,t){n.year=t}],S:[/\d/,function(n,t){n.millisecond=100*t}],SS:[/\d{2}/,function(n,t){n.millisecond=10*t}],SSS:[i,function(n,t){n.millisecond=t}],d:[a,d],ddd:[m,d],MMM:[m,e("monthNamesShort")],MMMM:[m,e("monthNames")],a:[m,function(n,t,e){var r=t.toLowerCase();r===e.amPm[0]?n.isPm=!1:r===e.amPm[1]&&(n.isPm=!0)}],ZZ:[/[\+\-]\d\d:?\d\d/,function(n,t){var e,r=(t+"").match(/([\+\-]|\d\d)/gi);r&&(e=+(60*r[1])+parseInt(r[2],10),n.timezoneOffset="+"===r[0]?e:-e)}]};g.dd=g.d,g.dddd=g.ddd,g.DD=g.D,g.mm=g.m,g.hh=g.H=g.HH=g.h,g.MM=g.M,g.ss=g.s,g.A=g.a,u.masks={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},u.format=function(n,t,e){var r=e||u.i18n;if("number"==typeof n&&(n=new Date(n)),"[object Date]"!==Object.prototype.toString.call(n)||isNaN(n.getTime()))throw new Error("Invalid Date in fecha.format");return t=u.masks[t]||t||u.masks.default,t.replace(o,function(t){return t in M?M[t](n,r):t.slice(1,t.length-1)})},u.parse=function(n,t,e){var r=e||u.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=u.masks[t]||t,n.length>1e3)return!1;var a=!0,i={};if(t.replace(o,function(t){if(g[t]){var e=g[t],u=n.search(e[0]);~u?n.replace(e[0],function(t){return e[1](i,t,r),n=n.substr(u+t.length),t}):a=!1}return g[t]?"":t.slice(1,t.length-1)}),!a)return!1;var s=new Date;i.isPm===!0&&null!=i.hour&&12!==+i.hour?i.hour=+i.hour+12:i.isPm===!1&&12===+i.hour&&(i.hour=0);var m;return null!=i.timezoneOffset?(i.minute=+(i.minute||0)-+i.timezoneOffset,m=new Date(Date.UTC(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0))):m=new Date(i.year||s.getFullYear(),i.month||0,i.day||1,i.hour||0,i.minute||0,i.second||0,i.millisecond||0),m},"undefined"!=typeof module&&module.exports?module.exports=u:"function"==typeof define&&define.amd?define(function(){return u}):n.fecha=u}(this)</script><script>function toLocaleStringSupportsOptions(){try{(new Date).toLocaleString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleDateStringSupportsOptions(){try{(new Date).toLocaleDateString("i")}catch(e){return"RangeError"===e.name}return!1}function toLocaleTimeStringSupportsOptions(){try{(new Date).toLocaleTimeString("i")}catch(e){return"RangeError"===e.name}return!1}window.hassUtil=window.hassUtil||{},window.hassUtil.DEFAULT_ICON="mdi:bookmark",window.hassUtil.OFF_STATES=["off","closed","unlocked"],window.hassUtil.DOMAINS_WITH_CARD=["climate","cover","configurator","input_select","input_slider","media_player","scene","script","weblink"],window.hassUtil.DOMAINS_WITH_MORE_INFO=["light","group","sun","climate","configurator","cover","script","media_player","camera","updater","alarm_control_panel","lock","automation"],window.hassUtil.DOMAINS_WITH_NO_HISTORY=["camera","configurator","scene"],window.hassUtil.HIDE_MORE_INFO=["input_select","scene","script","input_slider"],window.hassUtil.LANGUAGE=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage,window.hassUtil.attributeClassNames=function(e,t){return e?t.map(function(t){return t in e.attributes?"has-"+t:""}).join(" "):""},window.hassUtil.canToggle=function(e,t){return e.reactor.evaluate(e.serviceGetters.canToggleEntity(t))},window.hassUtil.dynamicContentUpdater=function(e,t,i){var n,a=Polymer.dom(e);a.lastChild&&a.lastChild.tagName===t?n=a.lastChild:(a.lastChild&&a.removeChild(a.lastChild),n=document.createElement(t)),Object.keys(i).forEach(function(e){n[e]=i[e]}),null===n.parentNode&&a.appendChild(n)},window.fecha.masks.haDateTime=window.fecha.masks.shortTime+" "+window.fecha.masks.mediumDate,toLocaleStringSupportsOptions()?window.hassUtil.formatDateTime=function(e){return e.toLocaleString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatDateTime=function(e){return window.fecha.format(e,"haDateTime")},toLocaleDateStringSupportsOptions()?window.hassUtil.formatDate=function(e){return e.toLocaleDateString(window.hassUtil.LANGUAGE,{year:"numeric",month:"long",day:"numeric"})}:window.hassUtil.formatDate=function(e){return window.fecha.format(e,"mediumDate")},toLocaleTimeStringSupportsOptions()?window.hassUtil.formatTime=function(e){return e.toLocaleTimeString(window.hassUtil.LANGUAGE,{hour:"numeric",minute:"2-digit"})}:window.hassUtil.formatTime=function(e){return window.fecha.format(e,"shortTime")},window.hassUtil.relativeTime=function(e){var t,i=Math.abs(new Date-e)/1e3,n=new Date>e?"%s ago":"in %s",a=window.hassUtil.relativeTime.tests;for(t=0;t<a.length;t+=2){if(i<a[t])return i=Math.floor(i),n.replace("%s",1===i?"1 "+a[t+1]:i+" "+a[t+1]+"s");i/=a[t]}return i=Math.floor(i),n.replace("%s",1===i?"1 week":i+" weeks")},window.hassUtil.relativeTime.tests=[60,"second",60,"minute",24,"hour",7,"day"],window.hassUtil.stateCardType=function(e,t){return"unavailable"===t.state?"display":window.hassUtil.DOMAINS_WITH_CARD.indexOf(t.domain)!==-1?t.domain:window.hassUtil.canToggle(e,t.entityId)&&"hidden"!==t.attributes.control?"toggle":"display"},window.hassUtil.stateMoreInfoType=function(e){return window.hassUtil.DOMAINS_WITH_MORE_INFO.indexOf(e.domain)!==-1?e.domain:window.hassUtil.HIDE_MORE_INFO.indexOf(e.domain)!==-1?"hidden":"default"},window.hassUtil.domainIcon=function(e,t){switch(e){case"alarm_control_panel":return t&&"disarmed"===t?"mdi:bell-outline":"mdi:bell";case"automation":return"mdi:playlist-play";case"binary_sensor":return t&&"off"===t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle";case"camera":return"mdi:video";case"climate":return"mdi:nest-thermostat";case"configurator":return"mdi:settings";case"conversation":return"mdi:text-to-speech";case"cover":return t&&"open"===t?"mdi:window-open":"mdi:window-closed";case"device_tracker":return"mdi:account";case"fan":return"mdi:fan";case"group":return"mdi:google-circles-communities";case"homeassistant":return"mdi:home";case"input_boolean":return"mdi:drawing";case"input_select":return"mdi:format-list-bulleted";case"input_slider":return"mdi:ray-vertex";case"light":return"mdi:lightbulb";case"lock":return t&&"unlocked"===t?"mdi:lock-open":"mdi:lock";case"media_player":return t&&"off"!==t&&"idle"!==t?"mdi:cast-connected":"mdi:cast";case"notify":return"mdi:comment-alert";case"proximity":return"mdi:apple-safari";case"remote":return"mdi:remote";case"scene":return"mdi:google-pages";case"script":return"mdi:file-document";case"sensor":return"mdi:eye";case"simple_alarm":return"mdi:bell";case"sun":return"mdi:white-balance-sunny";case"switch":return"mdi:flash";case"updater":return"mdi:cloud-upload";case"weblink":return"mdi:open-in-new";default:return console.warn("Unable to find icon for domain "+e+" ("+t+")"),window.hassUtil.DEFAULT_ICON}},window.hassUtil.binarySensorIcon=function(e){var t=e.state&&"off"===e.state;switch(e.attributes.sensor_class){case"connectivity":return t?"mdi:server-network-off":"mdi:server-network";case"light":return t?"mdi:brightness-5":"mdi:brightness-7";case"moisture":return t?"mdi:water-off":"mdi:water";case"motion":return t?"mdi:walk":"mdi:run";case"occupancy":return t?"mdi:home":"mdi:home-outline";case"opening":return t?"mdi:crop-square":"mdi:exit-to-app";case"sound":return t?"mdi:music-note-off":"mdi:music-note";case"vibration":return t?"mdi:crop-portrait":"mdi:vibrate";case"gas":case"power":case"safety":case"smoke":return t?"mdi:verified":"mdi:alert";default:return t?"mdi:radiobox-blank":"mdi:checkbox-marked-circle"}},window.hassUtil.stateIcon=function(e){var t;if(!e)return window.hassUtil.DEFAULT_ICON;if(e.attributes.icon)return e.attributes.icon;if(t=e.attributes.unit_of_measurement,t&&"sensor"===e.domain){if("°C"===t||"°F"===t)return"mdi:thermometer";if("Mice"===t)return"mdi:mouse-variant"}else if("binary_sensor"===e.domain)return window.hassUtil.binarySensorIcon(e);return window.hassUtil.domainIcon(e.domain,e.state)}</script><script>window.hassBehavior={attached:function(){var e=this.hass;if(!e)throw new Error("No hass property found on "+this.nodeName);this.nuclearUnwatchFns=Object.keys(this.properties).reduce(function(t,r){var n;if(!("bindNuclear"in this.properties[r]))return t;if(n=this.properties[r].bindNuclear(e),!n)throw new Error("Undefined getter specified for key "+r+" on "+this.nodeName);return this[r]=e.reactor.evaluate(n),t.concat(e.reactor.observe(n,function(e){this[r]=e}.bind(this)))}.bind(this),[])},detached:function(){for(;this.nuclearUnwatchFns.length;)this.nuclearUnwatchFns.shift()()}}</script><style is="custom-style">:root{--primary-text-color:var(--light-theme-text-color);--primary-background-color:var(--light-theme-background-color);--secondary-text-color:var(--light-theme-secondary-color);--disabled-text-color:var(--light-theme-disabled-color);--divider-color:var(--light-theme-divider-color);--error-color:var(--paper-deep-orange-a700);--primary-color:var(--paper-indigo-500);--light-primary-color:var(--paper-indigo-100);--dark-primary-color:var(--paper-indigo-700);--accent-color:var(--paper-pink-a200);--light-accent-color:var(--paper-pink-a100);--dark-accent-color:var(--paper-pink-a400);--light-theme-background-color:#ffffff;--light-theme-base-color:#000000;--light-theme-text-color:var(--paper-grey-900);--light-theme-secondary-color:#737373;--light-theme-disabled-color:#9b9b9b;--light-theme-divider-color:#dbdbdb;--dark-theme-background-color:var(--paper-grey-900);--dark-theme-base-color:#ffffff;--dark-theme-text-color:#ffffff;--dark-theme-secondary-color:#bcbcbc;--dark-theme-disabled-color:#646464;--dark-theme-divider-color:#3c3c3c;--text-primary-color:var(--dark-theme-text-color);--default-primary-color:var(--primary-color)}</style><script>!function(){var e={},t={},i=null;Polymer.IronMeta=Polymer({is:"iron-meta",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,observer:"_valueChanged"},self:{type:Boolean,observer:"_selfChanged"},list:{type:Array,notify:!0}},hostAttributes:{hidden:!0},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":case"value":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e,t){this._resetRegistration(t)},_valueChanged:function(e){this._resetRegistration(this.key)},_selfChanged:function(e){e&&(this.value=this)},_typeChanged:function(i){this._unregisterKey(this.key),e[i]||(e[i]={}),this._metaData=e[i],t[i]||(t[i]=[]),this.list=t[i],this._registerKeyValue(this.key,this.value)},byKey:function(e){return this._metaData&&this._metaData[e]},_resetRegistration:function(e){this._unregisterKey(e),this._registerKeyValue(this.key,this.value)},_unregisterKey:function(e){this._unregister(e,this._metaData,this.list)},_registerKeyValue:function(e,t){this._register(e,t,this._metaData,this.list)},_register:function(e,t,i,a){e&&i&&void 0!==t&&(i[e]=t,a.push(t))},_unregister:function(e,t,i){if(e&&t&&e in t){var a=t[e];delete t[e],this.arrayDelete(i,a)}}}),Polymer.IronMeta.getIronMeta=function(){return null===i&&(i=new Polymer.IronMeta),i},Polymer.IronMetaQuery=Polymer({is:"iron-meta-query",properties:{type:{type:String,value:"default",observer:"_typeChanged"},key:{type:String,observer:"_keyChanged"},value:{type:Object,notify:!0,readOnly:!0},list:{type:Array,notify:!0}},factoryImpl:function(e){if(e)for(var t in e)switch(t){case"type":case"key":this[t]=e[t]}},created:function(){this._metaDatas=e,this._metaArrays=t},_keyChanged:function(e){this._setValue(this._metaData&&this._metaData[e])},_typeChanged:function(i){this._metaData=e[i],this.list=t[i],this.key&&this._keyChanged(this.key)},byKey:function(e){return this._metaData&&this._metaData[e]}})}()</script><script>Polymer.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,value:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validator"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehaviorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){this.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-invalid")},hasValidator:function(){return null!=this._validator},validate:function(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:function(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidator:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatableBehaviorMeta.byKey(this.validator)}}</script><script>Polymer.IronFormElementBehavior={properties:{name:{type:String},value:{notify:!0,type:String},required:{type:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("iron-form-element-register")},detached:function(){this._parentForm&&this._parentForm.fire("iron-form-element-unregister",{target:this})}}</script><script>Polymer.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,reflectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,value:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueChanged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIronCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this.required||this.checked},_requiredChanged:function(){this.required?this.setAttribute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChanged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.IronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior,Polymer.IronCheckedElementBehaviorImpl]</script><script>!function(){"use strict";function e(e,t){var n="";if(e){var i=e.toLowerCase();" "===i||v.test(i)?n="space":f.test(i)?n="esc":1==i.length?t&&!u.test(i)||(n=i):n=c.test(i)?i.replace("arrow",""):"multiply"==i?"*":i}return n}function t(e){var t="";return e&&(e in o?t=o[e]:h.test(e)?(e=parseInt(e.replace("U+","0x"),16),t=String.fromCharCode(e).toLowerCase()):t=e.toLowerCase()),t}function n(e){var t="";return Number(e)&&(t=e>=65&&e<=90?String.fromCharCode(32+e):e>=112&&e<=123?"f"+(e-112):e>=48&&e<=57?String(e-48):e>=96&&e<=105?String(e-96):d[e]),t}function i(i,r){return i.key?e(i.key,r):i.detail&&i.detail.key?e(i.detail.key,r):t(i.keyIdentifier)||n(i.keyCode)||""}function r(e,t){var n=i(t,e.hasModifiers);return n===e.key&&(!e.hasModifiers||!!t.shiftKey==!!e.shiftKey&&!!t.ctrlKey==!!e.ctrlKey&&!!t.altKey==!!e.altKey&&!!t.metaKey==!!e.metaKey)}function s(e){return 1===e.length?{combo:e,key:e,event:"keydown"}:e.split("+").reduce(function(e,t){var n=t.split(":"),i=n[0],r=n[1];return i in y?(e[y[i]]=!0,e.hasModifiers=!0):(e.key=i,e.event=r||"keydown"),e},{combo:e.split(":").shift()})}function a(e){return e.trim().split(" ").map(function(e){return s(e)})}var o={"U+0008":"backspace","U+0009":"tab","U+001B":"esc","U+0020":"space","U+007F":"del"},d={8:"backspace",9:"tab",13:"enter",27:"esc",33:"pageup",34:"pagedown",35:"end",36:"home",32:"space",37:"left",38:"up",39:"right",40:"down",46:"del",106:"*"},y={shift:"shiftKey",ctrl:"ctrlKey",alt:"altKey",meta:"metaKey"},u=/[a-z0-9*]/,h=/U\+/,c=/^arrow/,v=/^space(bar)?/,f=/^escape$/;Polymer.IronA11yKeysBehavior={properties:{keyEventTarget:{type:Object,value:function(){return this}},stopKeyboardEventPropagation:{type:Boolean,value:!1},_boundKeyHandlers:{type:Array,value:function(){return[]}},_imperativeKeyBindings:{type:Object,value:function(){return{}}}},observers:["_resetKeyEventListeners(keyEventTarget, _boundKeyHandlers)"],keyBindings:{},registered:function(){this._prepKeyBindings()},attached:function(){this._listenKeyEventListeners()},detached:function(){this._unlistenKeyEventListeners()},addOwnKeyBinding:function(e,t){this._imperativeKeyBindings[e]=t,this._prepKeyBindings(),this._resetKeyEventListeners()},removeOwnKeyBindings:function(){this._imperativeKeyBindings={},this._prepKeyBindings(),this._resetKeyEventListeners()},keyboardEventMatchesKeys:function(e,t){for(var n=a(t),i=0;i<n.length;++i)if(r(n[i],e))return!0;return!1},_collectKeyBindings:function(){var e=this.behaviors.map(function(e){return e.keyBindings});return e.indexOf(this.keyBindings)===-1&&e.push(this.keyBindings),e},_prepKeyBindings:function(){this._keyBindings={},this._collectKeyBindings().forEach(function(e){for(var t in e)this._addKeyBinding(t,e[t])},this);for(var e in this._imperativeKeyBindings)this._addKeyBinding(e,this._imperativeKeyBindings[e]);for(var t in this._keyBindings)this._keyBindings[t].sort(function(e,t){var n=e[0].hasModifiers,i=t[0].hasModifiers;return n===i?0:n?-1:1})},_addKeyBinding:function(e,t){a(e).forEach(function(e){this._keyBindings[e.event]=this._keyBindings[e.event]||[],this._keyBindings[e.event].push([e,t])},this)},_resetKeyEventListeners:function(){this._unlistenKeyEventListeners(),this.isAttached&&this._listenKeyEventListeners()},_listenKeyEventListeners:function(){this.keyEventTarget&&Object.keys(this._keyBindings).forEach(function(e){var t=this._keyBindings[e],n=this._onKeyBindingEvent.bind(this,t);this._boundKeyHandlers.push([this.keyEventTarget,e,n]),this.keyEventTarget.addEventListener(e,n)},this)},_unlistenKeyEventListeners:function(){for(var e,t,n,i;this._boundKeyHandlers.length;)e=this._boundKeyHandlers.pop(),t=e[0],n=e[1],i=e[2],t.removeEventListener(n,i)},_onKeyBindingEvent:function(e,t){if(this.stopKeyboardEventPropagation&&t.stopPropagation(),!t.defaultPrevented)for(var n=0;n<e.length;n++){var i=e[n][0],s=e[n][1];if(r(i,t)&&(this._triggerKeyHandler(i,s,t),t.defaultPrevented))return}},_triggerKeyHandler:function(e,t,n){var i=Object.create(e);i.keyboardEvent=n;var r=new CustomEvent(e.event,{detail:i,cancelable:!0});this[t].call(this,r),r.defaultPrevented&&n.preventDefault()}}}()</script><script>Polymer.IronControlState={properties:{focused:{type:Boolean,value:!1,notify:!0,readOnly:!0,reflectToAttribute:!0},disabled:{type:Boolean,value:!1,notify:!0,observer:"_disabledChanged",reflectToAttribute:!0},_oldTabIndex:{type:Number},_boundFocusBlurHandler:{type:Function,value:function(){return this._focusBlurHandler.bind(this)}}},observers:["_changedControlState(focused, disabled)"],ready:function(){this.addEventListener("focus",this._boundFocusBlurHandler,!0),this.addEventListener("blur",this._boundFocusBlurHandler,!0)},_focusBlurHandler:function(e){if(e.target===this)this._setFocused("focus"===e.type);else if(!this.shadowRoot){var t=Polymer.dom(e).localTarget;this.isLightDescendant(t)||this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})}},_disabledChanged:function(e,t){this.setAttribute("aria-disabled",e?"true":"false"),this.style.pointerEvents=e?"none":"",e?(this._oldTabIndex=this.tabIndex,this._setFocused(!1),this.tabIndex=-1,this.blur()):void 0!==this._oldTabIndex&&(this.tabIndex=this._oldTabIndex)},_changedControlState:function(){this._controlStateChanged&&this._controlStateChanged()}}</script><script>Polymer.IronButtonStateImpl={properties:{pressed:{type:Boolean,readOnly:!0,value:!1,reflectToAttribute:!0,observer:"_pressedChanged"},toggles:{type:Boolean,value:!1,reflectToAttribute:!0},active:{type:Boolean,value:!1,notify:!0,reflectToAttribute:!0},pointerDown:{type:Boolean,readOnly:!0,value:!1},receivedFocusFromKeyboard:{type:Boolean,readOnly:!0},ariaActiveAttribute:{type:String,value:"aria-pressed",observer:"_ariaActiveAttributeChanged"}},listeners:{down:"_downHandler",up:"_upHandler",tap:"_tapHandler"},observers:["_detectKeyboardFocus(focused)","_activeChanged(active, ariaActiveAttribute)"],keyBindings:{"enter:keydown":"_asyncClick","space:keydown":"_spaceKeyDownHandler","space:keyup":"_spaceKeyUpHandler"},_mouseEventRe:/^mouse/,_tapHandler:function(){this.toggles?this._userActivate(!this.active):this.active=!1},_detectKeyboardFocus:function(e){this._setReceivedFocusFromKeyboard(!this.pointerDown&&e)},_userActivate:function(e){this.active!==e&&(this.active=e,this.fire("change"))},_downHandler:function(e){this._setPointerDown(!0),this._setPressed(!0),this._setReceivedFocusFromKeyboard(!1)},_upHandler:function(){this._setPointerDown(!1),this._setPressed(!1)},_spaceKeyDownHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(t.preventDefault(),t.stopImmediatePropagation(),this._setPressed(!0))},_spaceKeyUpHandler:function(e){var t=e.detail.keyboardEvent,i=Polymer.dom(t).localTarget;this.isLightDescendant(i)||(this.pressed&&this._asyncClick(),this._setPressed(!1))},_asyncClick:function(){this.async(function(){this.click()},1)},_pressedChanged:function(e){this._changedButtonState()},_ariaActiveAttributeChanged:function(e,t){t&&t!=e&&this.hasAttribute(t)&&this.removeAttribute(t)},_activeChanged:function(e,t){this.toggles?this.setAttribute(this.ariaActiveAttribute,e?"true":"false"):this.removeAttribute(this.ariaActiveAttribute),this._changedButtonState()},_controlStateChanged:function(){this.disabled?this._setPressed(!1):this._changedButtonState()},_changedButtonState:function(){this._buttonStateChanged&&this._buttonStateChanged()}},Polymer.IronButtonState=[Polymer.IronA11yKeysBehavior,Polymer.IronButtonStateImpl]</script><dom-module id="paper-ripple" assetpath="../bower_components/paper-ripple/"><template><style>:host{display:block;position:absolute;border-radius:inherit;overflow:hidden;top:0;left:0;right:0;bottom:0;pointer-events:none}:host([animating]){-webkit-transform:translate(0,0);transform:translate3d(0,0,0)}#background,#waves,.wave,.wave-container{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}#background,.wave{opacity:0}#waves,.wave{overflow:hidden}.wave,.wave-container{border-radius:50%}:host(.circle) #background,:host(.circle) #waves{border-radius:50%}:host(.circle) .wave-container{overflow:hidden}</style><div id="background"></div><div id="waves"></div></template></dom-module><script>!function(){function t(t){this.element=t,this.width=this.boundingRect.width,this.height=this.boundingRect.height,this.size=Math.max(this.width,this.height)}function i(t){this.element=t,this.color=window.getComputedStyle(t).color,this.wave=document.createElement("div"),this.waveContainer=document.createElement("div"),this.wave.style.backgroundColor=this.color,this.wave.classList.add("wave"),this.waveContainer.classList.add("wave-container"),Polymer.dom(this.waveContainer).appendChild(this.wave),this.resetInteractionState()}var e={distance:function(t,i,e,n){var s=t-e,o=i-n;return Math.sqrt(s*s+o*o)},now:window.performance&&window.performance.now?window.performance.now.bind(window.performance):Date.now};t.prototype={get boundingRect(){return this.element.getBoundingClientRect()},furthestCornerDistanceFrom:function(t,i){var n=e.distance(t,i,0,0),s=e.distance(t,i,this.width,0),o=e.distance(t,i,0,this.height),a=e.distance(t,i,this.width,this.height);return Math.max(n,s,o,a)}},i.MAX_RADIUS=300,i.prototype={get recenters(){return this.element.recenters},get center(){return this.element.center},get mouseDownElapsed(){var t;return this.mouseDownStart?(t=e.now()-this.mouseDownStart,this.mouseUpStart&&(t-=this.mouseUpElapsed),t):0},get mouseUpElapsed(){return this.mouseUpStart?e.now()-this.mouseUpStart:0},get mouseDownElapsedSeconds(){return this.mouseDownElapsed/1e3},get mouseUpElapsedSeconds(){return this.mouseUpElapsed/1e3},get mouseInteractionSeconds(){return this.mouseDownElapsedSeconds+this.mouseUpElapsedSeconds},get initialOpacity(){return this.element.initialOpacity},get opacityDecayVelocity(){return this.element.opacityDecayVelocity},get radius(){var t=this.containerMetrics.width*this.containerMetrics.width,e=this.containerMetrics.height*this.containerMetrics.height,n=1.1*Math.min(Math.sqrt(t+e),i.MAX_RADIUS)+5,s=1.1-.2*(n/i.MAX_RADIUS),o=this.mouseInteractionSeconds/s,a=n*(1-Math.pow(80,-o));return Math.abs(a)},get opacity(){return this.mouseUpStart?Math.max(0,this.initialOpacity-this.mouseUpElapsedSeconds*this.opacityDecayVelocity):this.initialOpacity},get outerOpacity(){var t=.3*this.mouseUpElapsedSeconds,i=this.opacity;return Math.max(0,Math.min(t,i))},get isOpacityFullyDecayed(){return this.opacity<.01&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isRestingAtMaxRadius(){return this.opacity>=this.initialOpacity&&this.radius>=Math.min(this.maxRadius,i.MAX_RADIUS)},get isAnimationComplete(){return this.mouseUpStart?this.isOpacityFullyDecayed:this.isRestingAtMaxRadius},get translationFraction(){return Math.min(1,this.radius/this.containerMetrics.size*2/Math.sqrt(2))},get xNow(){return this.xEnd?this.xStart+this.translationFraction*(this.xEnd-this.xStart):this.xStart},get yNow(){return this.yEnd?this.yStart+this.translationFraction*(this.yEnd-this.yStart):this.yStart},get isMouseDown(){return this.mouseDownStart&&!this.mouseUpStart},resetInteractionState:function(){this.maxRadius=0,this.mouseDownStart=0,this.mouseUpStart=0,this.xStart=0,this.yStart=0,this.xEnd=0,this.yEnd=0,this.slideDistance=0,this.containerMetrics=new t(this.element)},draw:function(){var t,i,e;this.wave.style.opacity=this.opacity,t=this.radius/(this.containerMetrics.size/2),i=this.xNow-this.containerMetrics.width/2,e=this.yNow-this.containerMetrics.height/2,this.waveContainer.style.webkitTransform="translate("+i+"px, "+e+"px)",this.waveContainer.style.transform="translate3d("+i+"px, "+e+"px, 0)",this.wave.style.webkitTransform="scale("+t+","+t+")",this.wave.style.transform="scale3d("+t+","+t+",1)"},downAction:function(t){var i=this.containerMetrics.width/2,n=this.containerMetrics.height/2;this.resetInteractionState(),this.mouseDownStart=e.now(),this.center?(this.xStart=i,this.yStart=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)):(this.xStart=t?t.detail.x-this.containerMetrics.boundingRect.left:this.containerMetrics.width/2,this.yStart=t?t.detail.y-this.containerMetrics.boundingRect.top:this.containerMetrics.height/2),this.recenters&&(this.xEnd=i,this.yEnd=n,this.slideDistance=e.distance(this.xStart,this.yStart,this.xEnd,this.yEnd)),this.maxRadius=this.containerMetrics.furthestCornerDistanceFrom(this.xStart,this.yStart),this.waveContainer.style.top=(this.containerMetrics.height-this.containerMetrics.size)/2+"px",this.waveContainer.style.left=(this.containerMetrics.width-this.containerMetrics.size)/2+"px",this.waveContainer.style.width=this.containerMetrics.size+"px",this.waveContainer.style.height=this.containerMetrics.size+"px"},upAction:function(t){this.isMouseDown&&(this.mouseUpStart=e.now())},remove:function(){Polymer.dom(this.waveContainer.parentNode).removeChild(this.waveContainer)}},Polymer({is:"paper-ripple",behaviors:[Polymer.IronA11yKeysBehavior],properties:{initialOpacity:{type:Number,value:.25},opacityDecayVelocity:{type:Number,value:.8},recenters:{type:Boolean,value:!1},center:{type:Boolean,value:!1},ripples:{type:Array,value:function(){return[]}},animating:{type:Boolean,readOnly:!0,reflectToAttribute:!0,value:!1},holdDown:{type:Boolean,value:!1,observer:"_holdDownChanged"},noink:{type:Boolean,value:!1},_animating:{type:Boolean},_boundAnimate:{type:Function,value:function(){return this.animate.bind(this)}}},get target(){return this.keyEventTarget},keyBindings:{"enter:keydown":"_onEnterKeydown","space:keydown":"_onSpaceKeydown","space:keyup":"_onSpaceKeyup"},attached:function(){11==this.parentNode.nodeType?this.keyEventTarget=Polymer.dom(this).getOwnerRoot().host:this.keyEventTarget=this.parentNode;var t=this.keyEventTarget;this.listen(t,"up","uiUpAction"),this.listen(t,"down","uiDownAction")},detached:function(){this.unlisten(this.keyEventTarget,"up","uiUpAction"),this.unlisten(this.keyEventTarget,"down","uiDownAction"),this.keyEventTarget=null},get shouldKeepAnimating(){for(var t=0;t<this.ripples.length;++t)if(!this.ripples[t].isAnimationComplete)return!0;return!1},simulatedRipple:function(){this.downAction(null),this.async(function(){this.upAction()},1)},uiDownAction:function(t){this.noink||this.downAction(t)},downAction:function(t){if(!(this.holdDown&&this.ripples.length>0)){var i=this.addRipple();i.downAction(t),this._animating||(this._animating=!0,this.animate())}},uiUpAction:function(t){this.noink||this.upAction(t)},upAction:function(t){this.holdDown||(this.ripples.forEach(function(i){i.upAction(t)}),this._animating=!0,this.animate())},onAnimationComplete:function(){this._animating=!1,this.$.background.style.backgroundColor=null,this.fire("transitionend")},addRipple:function(){var t=new i(this);return Polymer.dom(this.$.waves).appendChild(t.waveContainer),this.$.background.style.backgroundColor=t.color,this.ripples.push(t),this._setAnimating(!0),t},removeRipple:function(t){var i=this.ripples.indexOf(t);i<0||(this.ripples.splice(i,1),t.remove(),this.ripples.length||this._setAnimating(!1))},animate:function(){if(this._animating){var t,i;for(t=0;t<this.ripples.length;++t)i=this.ripples[t],i.draw(),this.$.background.style.opacity=i.outerOpacity,i.isOpacityFullyDecayed&&!i.isRestingAtMaxRadius&&this.removeRipple(i);this.shouldKeepAnimating||0!==this.ripples.length?window.requestAnimationFrame(this._boundAnimate):this.onAnimationComplete()}},_onEnterKeydown:function(){this.uiDownAction(),this.async(this.uiUpAction,1)},_onSpaceKeydown:function(){this.uiDownAction()},_onSpaceKeyup:function(){this.uiUpAction()},_holdDownChanged:function(t,i){void 0!==i&&(t?this.downAction():this.upAction())}})}()</script><script>Polymer.PaperRippleBehavior={properties:{noink:{type:Boolean,observer:"_noinkChanged"},_rippleContainer:{type:Object}},_buttonStateChanged:function(){this.focused&&this.ensureRipple()},_downHandler:function(e){Polymer.IronButtonStateImpl._downHandler.call(this,e),this.pressed&&this.ensureRipple(e)},ensureRipple:function(e){if(!this.hasRipple()){this._ripple=this._createRipple(),this._ripple.noink=this.noink;var i=this._rippleContainer||this.root;if(i&&Polymer.dom(i).appendChild(this._ripple),e){var n=Polymer.dom(this._rippleContainer||this),t=Polymer.dom(e).rootTarget;n.deepContains(t)&&this._ripple.uiDownAction(e)}}},getRipple:function(){return this.ensureRipple(),this._ripple},hasRipple:function(){return Boolean(this._ripple)},_createRipple:function(){return document.createElement("paper-ripple")},_noinkChanged:function(e){this.hasRipple()&&(this._ripple.noink=e)}}</script><script>Polymer.PaperInkyFocusBehaviorImpl={observers:["_focusedChanged(receivedFocusFromKeyboard)"],_focusedChanged:function(e){e&&this.ensureRipple(),this.hasRipple()&&(this._ripple.holdDown=e)},_createRipple:function(){var e=Polymer.PaperRippleBehavior._createRipple();return e.id="ink",e.setAttribute("center",""),e.classList.add("circle"),e}},Polymer.PaperInkyFocusBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperInkyFocusBehaviorImpl]</script><script>Polymer.PaperCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedElementBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_buttonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.PaperCheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElementBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script><dom-module id="paper-checkbox" assetpath="../bower_components/paper-checkbox/"><template strip-whitespace=""><style>:host{display:inline-block;white-space:nowrap;cursor:pointer;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calculated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#checkboxContainer{display:inline-block;position:relative;width:var(--calculated-paper-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vertical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--paper-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-checkbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[checked]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color 140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #checkmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:checkmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-webkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--paper-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbox-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;height:70%;border-style:solid;border-top:none;border-left:none;border-right-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15 * var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-checkmark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-sizing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:50% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px);white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,var(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkboxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-label-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spacing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #checkbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--paper-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(--paper-checkbox-error-color,var(--error-color))}</style><div id="checkboxContainer"><div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"><div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div></div></div><div id="checkboxLabel"><content></content></div></template><script>Polymer({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttribute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComputedStyleValue("--calculated-paper-checkbox-ink-size").trim();if("-1px"===e){var t=parseFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size").trim()),a=Math.floor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",this.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+="checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxContainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script></dom-module><script>Polymer.PaperButtonBehaviorImpl={properties:{elevation:{type:Number,reflectToAttribute:!0,readOnly:!0}},observers:["_calculateElevation(focused, disabled, active, pressed, receivedFocusFromKeyboard)","_computeKeyboardClass(receivedFocusFromKeyboard)"],hostAttributes:{role:"button",tabindex:"0",animated:!0},_calculateElevation:function(){var e=1;this.disabled?e=0:this.active||this.pressed?e=4:this.receivedFocusFromKeyboard&&(e=3),this._setElevation(e)},_computeKeyboardClass:function(e){this.toggleClass("keyboard-focus",e)},_spaceKeyDownHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyDownHandler.call(this,e),this.hasRipple()&&this.getRipple().ripples.length<1&&this._ripple.uiDownAction()},_spaceKeyUpHandler:function(e){Polymer.IronButtonStateImpl._spaceKeyUpHandler.call(this,e),this.hasRipple()&&this._ripple.uiUpAction()}},Polymer.PaperButtonBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperRippleBehavior,Polymer.PaperButtonBehaviorImpl]</script><style is="custom-style">:root{--shadow-transition:{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)};--shadow-none:{box-shadow:none};--shadow-elevation-2dp:{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)};--shadow-elevation-3dp:{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12),0 3px 3px -2px rgba(0,0,0,.4)};--shadow-elevation-4dp:{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4)};--shadow-elevation-6dp:{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4)};--shadow-elevation-8dp:{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4)};--shadow-elevation-12dp:{box-shadow:0 12px 16px 1px rgba(0,0,0,.14),0 4px 22px 3px rgba(0,0,0,.12),0 6px 7px -4px rgba(0,0,0,.4)};--shadow-elevation-16dp:{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.4)};--shadow-elevation-24dp:{box-shadow:0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12),0 11px 15px -7px rgba(0,0,0,.4)};}</style><dom-module id="paper-material-shared-styles" assetpath="../bower_components/paper-material/"><template><style>:host{display:block;position:relative}:host([elevation="1"]){@apply(--shadow-elevation-2dp)}:host([elevation="2"]){@apply(--shadow-elevation-4dp)}:host([elevation="3"]){@apply(--shadow-elevation-6dp)}:host([elevation="4"]){@apply(--shadow-elevation-8dp)}:host([elevation="5"]){@apply(--shadow-elevation-16dp)}</style></template></dom-module><dom-module id="paper-button" assetpath="../bower_components/paper-button/"><template strip-whitespace=""><style include="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:host([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-button-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;cursor:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@apply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</style><content></content></template><script>Polymer({is:"paper-button",behaviors:[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribute:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){this.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._setElevation(0)}})</script></dom-module><dom-module id="paper-input-container" assetpath="../bower_components/paper-input/"><template><style>:host{display:block;padding:8px 0;@apply(--paper-input-container)}:host([inline]){display:inline-block}:host([disabled]){pointer-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidden]){display:none!important}.floated-label-placeholder{@apply(--paper-font-caption)}.underline{height:2px;position:relative}.focused-line{@apply(--layout-fit);border-bottom:2px solid var(--paper-input-container-focus-color,--primary-color);-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:scale3d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.underline.is-invalid .focused-line{border-color:var(--paper-input-container-invalid-color,--error-color);-webkit-transform:none;transform:none;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--paper-transition-easing)}.unfocused-line{@apply(--layout-fit);border-bottom:1px solid var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px dashed;border-color:var(--paper-input-container-color,--secondary-text-color);@apply(--paper-input-container-underline-disabled)}.label-and-input-container{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-width:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);position:relative}.input-content ::content .paper-input-label,.input-content ::content label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transform-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper-transition-easing)}.input-content.label-is-floating ::content .paper-input-label,.input-content.label-is-floating ::content label{-webkit-transform:translateY(-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-is-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;transform-origin:right top}.input-content.label-is-highlighted ::content .paper-input-label,.input-content.label-is-highlighted ::content label{color:var(--paper-input-container-focus-color,--primary-color);@apply(--paper-input-container-label-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--error-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-content.label-is-hidden ::content label{visibility:hidden}.input-content ::content .paper-input-input,.input-content ::content input,.input-content ::content iron-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appearance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead);@apply(--paper-input-container-input)}.input-content ::content input::-webkit-inner-spin-button,.input-content ::content input::-webkit-outer-spin-button{@apply(--paper-input-container-input-webkit-spinner)}::content [prefix]{@apply(--paper-font-subhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffix]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-flex-none)}.input-content ::content input{min-width:0}.input-content ::content textarea{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on-content.is-highlighted ::content *{color:var(--paper-input-container-focus-color,--primary-color)}</style><template is="dom-if" if="[[!noLabelFloat]]"><div class="floated-label-placeholder" aria-hidden="true"> </div></template><div class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,invalid,_inputHasContent)]]"><content select="[prefix]" id="prefix"></content><div class="label-and-input-container" id="labelAndInputContainer"><content select=":not([add-on]):not([prefix]):not([suffix])"></content></div><content select="[suffix]"></content></div><div class$="[[_computeUnderlineClass(focused,invalid)]]"><div class="unfocused-line"></div><div class="focused-line"></div></div><div class$="[[_computeAddOnContentClass(focused,invalid)]]"><content id="addOnContent" select="[add-on]"></content></div></template></dom-module><script>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidChanged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Function,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Function,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Function,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:Function,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"addon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForValue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputElement(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElementValue(){return this._inputElement[this._propertyForValue]||this._inputElement.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)},attached:function(){this.attrForValue?this._inputElement.addEventListener(this._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this._onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inputElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){this._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(this._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFocus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),this._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._handleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValueAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementValue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.invalid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.validate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}this._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputElement.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invalid:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddOnContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e}})</script><script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attached:function(){this.fire("addon-attached")},update:function(t){}}</script><dom-module id="paper-input-error" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--error-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:absolute;left:0;right:0}:host([invalid]){visibility:visible};</style><content></content></template></dom-module><script>Polymer({is:"paper-input-error",behaviors:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAttribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</script><dom-module id="iron-a11y-announcer" assetpath="../bower_components/iron-a11y-announcer/"><template><style>:host{display:inline-block;position:fixed;clip:rect(0,0,0,0)}</style><div aria-live$="[[mode]]">[[_text]]</div></template><script>!function(){"use strict";Polymer.IronA11yAnnouncer=Polymer({is:"iron-a11y-announcer",properties:{mode:{type:String,value:"polite"},_text:{type:String,value:""}},created:function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=this),document.body.addEventListener("iron-announce",this._onIronAnnounce.bind(this))},announce:function(n){this._text="",this.async(function(){this._text=n},100)},_onIronAnnounce:function(n){n.detail&&n.detail.text&&this.announce(n.detail.text)}}),Polymer.IronA11yAnnouncer.instance=null,Polymer.IronA11yAnnouncer.requestAvailability=function(){Polymer.IronA11yAnnouncer.instance||(Polymer.IronA11yAnnouncer.instance=document.createElement("iron-a11y-announcer")),document.body.appendChild(Polymer.IronA11yAnnouncer.instance)}}()</script></dom-module><script>Polymer({is:"iron-input",extends:"input",behaviors:[Polymer.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,observer:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patternAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._origDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefoxIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDispatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.disabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});try{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t},_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._origDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.type){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.value},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.bindValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){this.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preventInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity();e||(this._announceInvalidCharacter("Invalid string of characters not entered."),this.value=this._previousValidInput)}this.bindValue=this.value,this._previousValidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20==e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyCode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)},_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlreadyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.test(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))return!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.required&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBehavior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-validate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text:e})}})</script><dom-module id="login-form" assetpath="layouts/"><template><style is="custom-style" include="iron-flex iron-positioning"></style><style>:host{white-space:nowrap}#passwordDecorator{display:block;margin-bottom:16px}paper-checkbox{margin-right:8px}paper-button{margin-left:72px}.interact{height:125px}#validatebox{margin-top:16px;text-align:center}.validatemessage{margin-top:10px}</style><div class="layout vertical center center-center fit"><img src="/static/icons/favicon-192x192.png" height="192"> <a href="#" id="hideKeyboardOnFocus"></a><div class="interact"><div id="loginform" hidden$="[[showLoading]]"><paper-input-container id="passwordDecorator" invalid="[[isInvalid]]"><label>Password</label><input is="iron-input" type="password" id="passwordInput"><paper-input-error invalid="[[isInvalid]]">[[errorMessage]]</paper-input-error></paper-input-container><div class="layout horizontal center"><paper-checkbox for="" id="rememberLogin">Remember</paper-checkbox><paper-button id="loginButton">Log In</paper-button></div></div><div id="validatebox" hidden$="[[!showLoading]]"><paper-spinner active="true"></paper-spinner><br><div class="validatemessage">Loading data</div></div></div></div></template></dom-module><script>Polymer({is:"login-form",behaviors:[window.hassBehavior],properties:{hass:{type:Object},errorMessage:{type:String,bindNuclear:function(e){return e.authGetters.attemptErrorMessage}},isInvalid:{type:Boolean,bindNuclear:function(e){return e.authGetters.isInvalidAttempt}},isValidating:{type:Boolean,observer:"isValidatingChanged",bindNuclear:function(e){return e.authGetters.isValidating}},loadingResources:{type:Boolean,value:!1},forceShowLoading:{type:Boolean,value:!1},showLoading:{type:Boolean,computed:"computeShowSpinner(forceShowLoading, isValidating)"}},listeners:{keydown:"passwordKeyDown","loginButton.tap":"validatePassword"},observers:["validatingChanged(isValidating, isInvalid)"],attached:function(){window.removeInitMsg()},computeShowSpinner:function(e,i){return e||i},validatingChanged:function(e,i){e||i||(this.$.passwordInput.value="")},isValidatingChanged:function(e){e||this.async(function(){this.$.passwordInput.focus()}.bind(this),10)},passwordKeyDown:function(e){13===e.keyCode?(this.validatePassword(),e.preventDefault()):this.isInvalid&&(this.isInvalid=!1)},validatePassword:function(){this.$.hideKeyboardOnFocus.focus(),window.validateAuth(this.$.passwordInput.value,this.$.rememberLogin.checked)}})</script><script>Polymer({is:"iron-media-query",properties:{queryMatches:{type:Boolean,value:!1,readOnly:!0,notify:!0},query:{type:String,observer:"queryChanged"},full:{type:Boolean,value:!1},_boundMQHandler:{value:function(){return this.queryHandler.bind(this)}},_mq:{value:null}},attached:function(){this.style.display="none",this.queryChanged()},detached:function(){this._remove()},_add:function(){this._mq&&this._mq.addListener(this._boundMQHandler)},_remove:function(){this._mq&&this._mq.removeListener(this._boundMQHandler),this._mq=null},queryChanged:function(){this._remove();var e=this.query;e&&(this.full||"("===e[0]||(e="("+e+")"),this._mq=window.matchMedia(e),this._add(),this.queryHandler(this._mq))},queryHandler:function(e){this._setQueryMatches(e.matches)}})</script><script>Polymer.IronSelection=function(e){this.selection=[],this.selectCallback=e},Polymer.IronSelection.prototype={get:function(){return this.multi?this.selection.slice():this.selection[0]},clear:function(e){this.selection.slice().forEach(function(t){(!e||e.indexOf(t)<0)&&this.setItemSelected(t,!1)},this)},isSelected:function(e){return this.selection.indexOf(e)>=0},setItemSelected:function(e,t){if(null!=e&&t!==this.isSelected(e)){if(t)this.selection.push(e);else{var i=this.selection.indexOf(e);i>=0&&this.selection.splice(i,1)}this.selectCallback&&this.selectCallback(e,t)}},select:function(e){this.multi?this.toggle(e):this.get()!==e&&(this.setItemSelected(this.get(),!1),this.setItemSelected(e,!0))},toggle:function(e){this.setItemSelected(e,!this.isSelected(e))}}</script><script>Polymer.IronSelectableBehavior={properties:{attrForSelected:{type:String,value:null},selected:{type:String,notify:!0},selectedItem:{type:Object,readOnly:!0,notify:!0},activateEvent:{type:String,value:"tap",observer:"_activateEventChanged"},selectable:String,selectedClass:{type:String,value:"iron-selected"},selectedAttribute:{type:String,value:null},fallbackSelection:{type:String,value:null},items:{type:Array,readOnly:!0,notify:!0,value:function(){return[]}},_excludedLocalNames:{type:Object,value:function(){return{template:1}}}},observers:["_updateAttrForSelected(attrForSelected)","_updateSelected(selected)","_checkFallback(fallbackSelection)"],created:function(){this._bindFilterItem=this._filterItem.bind(this),this._selection=new Polymer.IronSelection(this._applySelection.bind(this))},attached:function(){this._observer=this._observeItems(this),this._updateItems(),this._shouldUpdateSelection||this._updateSelected(),this._addListener(this.activateEvent)},detached:function(){this._observer&&Polymer.dom(this).unobserveNodes(this._observer),this._removeListener(this.activateEvent)},indexOf:function(e){return this.items.indexOf(e)},select:function(e){this.selected=e},selectPrevious:function(){var e=this.items.length,t=(Number(this._valueToIndex(this.selected))-1+e)%e;this.selected=this._indexToValue(t)},selectNext:function(){var e=(Number(this._valueToIndex(this.selected))+1)%this.items.length;this.selected=this._indexToValue(e)},selectIndex:function(e){this.select(this._indexToValue(e))},forceSynchronousItemUpdate:function(){this._updateItems()},get _shouldUpdateSelection(){return null!=this.selected},_checkFallback:function(){this._shouldUpdateSelection&&this._updateSelected()},_addListener:function(e){this.listen(this,e,"_activateHandler")},_removeListener:function(e){this.unlisten(this,e,"_activateHandler")},_activateEventChanged:function(e,t){this._removeListener(t),this._addListener(e)},_updateItems:function(){var e=Polymer.dom(this).queryDistributedElements(this.selectable||"*");e=Array.prototype.filter.call(e,this._bindFilterItem),this._setItems(e)},_updateAttrForSelected:function(){this._shouldUpdateSelection&&(this.selected=this._indexToValue(this.indexOf(this.selectedItem)))},_updateSelected:function(){this._selectSelected(this.selected)},_selectSelected:function(e){this._selection.select(this._valueToItem(this.selected)),this.fallbackSelection&&this.items.length&&void 0===this._selection.get()&&(this.selected=this.fallbackSelection)},_filterItem:function(e){return!this._excludedLocalNames[e.localName]},_valueToItem:function(e){return null==e?null:this.items[this._valueToIndex(e)]},_valueToIndex:function(e){if(!this.attrForSelected)return Number(e);for(var t,i=0;t=this.items[i];i++)if(this._valueForItem(t)==e)return i},_indexToValue:function(e){if(!this.attrForSelected)return e;var t=this.items[e];return t?this._valueForItem(t):void 0},_valueForItem:function(e){var t=e[Polymer.CaseMap.dashToCamelCase(this.attrForSelected)];return void 0!=t?t:e.getAttribute(this.attrForSelected)},_applySelection:function(e,t){this.selectedClass&&this.toggleClass(this.selectedClass,t,e),this.selectedAttribute&&this.toggleAttribute(this.selectedAttribute,t,e),this._selectionChange(),this.fire("iron-"+(t?"select":"deselect"),{item:e})},_selectionChange:function(){this._setSelectedItem(this._selection.get())},_observeItems:function(e){return Polymer.dom(e).observeNodes(function(e){this._updateItems(),this._shouldUpdateSelection&&this._updateSelected(),this.fire("iron-items-changed",e,{bubbles:!1,cancelable:!1})})},_activateHandler:function(e){for(var t=e.target,i=this.items;t&&t!=this;){var s=i.indexOf(t);if(s>=0){var n=this._indexToValue(s);return void this._itemActivate(n,t)}t=t.parentNode}},_itemActivate:function(e,t){this.fire("iron-activate",{selected:e,item:t},{cancelable:!0}).defaultPrevented||this.select(e)}}</script><script>Polymer.IronMultiSelectableBehaviorImpl={properties:{multi:{type:Boolean,value:!1,observer:"multiChanged"},selectedValues:{type:Array,notify:!0},selectedItems:{type:Array,readOnly:!0,notify:!0}},observers:["_updateSelected(selectedValues.splices)"],select:function(e){this.multi?this.selectedValues?this._toggleSelected(e):this.selectedValues=[e]:this.selected=e},multiChanged:function(e){this._selection.multi=e},get _shouldUpdateSelection(){return null!=this.selected||null!=this.selectedValues&&this.selectedValues.length},_updateAttrForSelected:function(){this.multi?this._shouldUpdateSelection&&(this.selectedValues=this.selectedItems.map(function(e){return this._indexToValue(this.indexOf(e))},this).filter(function(e){return null!=e},this)):Polymer.IronSelectableBehavior._updateAttrForSelected.apply(this)},_updateSelected:function(){this.multi?this._selectMulti(this.selectedValues):this._selectSelected(this.selected)},_selectMulti:function(e){if(e){var t=this._valuesToItems(e);this._selection.clear(t);for(var l=0;l<t.length;l++)this._selection.setItemSelected(t[l],!0);if(this.fallbackSelection&&this.items.length&&!this._selection.get().length){var s=this._valueToItem(this.fallbackSelection);s&&(this.selectedValues=[this.fallbackSelection])}}else this._selection.clear()},_selectionChange:function(){var e=this._selection.get();this.multi?this._setSelectedItems(e):(this._setSelectedItems([e]),this._setSelectedItem(e))},_toggleSelected:function(e){var t=this.selectedValues.indexOf(e),l=t<0;l?this.push("selectedValues",e):this.splice("selectedValues",t,1)},_valuesToItems:function(e){return null==e?null:e.map(function(e){return this._valueToItem(e)},this)}},Polymer.IronMultiSelectableBehavior=[Polymer.IronSelectableBehavior,Polymer.IronMultiSelectableBehaviorImpl]</script><script>Polymer({is:"iron-selector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script><script>Polymer.IronResizableBehavior={properties:{_parentResizable:{type:Object,observer:"_parentResizableChanged"},_notifyingDescendant:{type:Boolean,value:!1}},listeners:{"iron-request-resize-notifications":"_onIronRequestResizeNotifications"},created:function(){this._interestedResizables=[],this._boundNotifyResize=this.notifyResize.bind(this)},attached:function(){this.fire("iron-request-resize-notifications",null,{node:this,bubbles:!0,cancelable:!0}),this._parentResizable||(window.addEventListener("resize",this._boundNotifyResize),this.notifyResize())},detached:function(){this._parentResizable?this._parentResizable.stopResizeNotificationsFor(this):window.removeEventListener("resize",this._boundNotifyResize),this._parentResizable=null},notifyResize:function(){this.isAttached&&(this._interestedResizables.forEach(function(e){this.resizerShouldNotify(e)&&this._notifyDescendant(e)},this),this._fireResize())},assignParentResizable:function(e){this._parentResizable=e},stopResizeNotificationsFor:function(e){var i=this._interestedResizables.indexOf(e);i>-1&&(this._interestedResizables.splice(i,1),this.unlisten(e,"iron-resize","_onDescendantIronResize"))},resizerShouldNotify:function(e){return!0},_onDescendantIronResize:function(e){return this._notifyingDescendant?void e.stopPropagation():void(Polymer.Settings.useShadow||this._fireResize())},_fireResize:function(){this.fire("iron-resize",null,{node:this,bubbles:!1})},_onIronRequestResizeNotifications:function(e){var i=e.path?e.path[0]:e.target;i!==this&&(this._interestedResizables.indexOf(i)===-1&&(this._interestedResizables.push(i),this.listen(i,"iron-resize","_onDescendantIronResize")),i.assignParentResizable(this),this._notifyDescendant(i),e.stopPropagation())},_parentResizableChanged:function(e){e&&window.removeEventListener("resize",this._boundNotifyResize)},_notifyDescendant:function(e){this.isAttached&&(this._notifyingDescendant=!0,e.notifyResize(),this._notifyingDescendant=!1)}}</script><dom-module id="paper-drawer-panel" assetpath="../bower_components/paper-drawer-panel/"><template><style>:host{display:block;position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}iron-selector>#drawer{position:absolute;top:0;left:0;height:100%;background-color:#fff;-moz-box-sizing:border-box;box-sizing:border-box;@apply(--paper-drawer-panel-drawer-container)}.transition-drawer{transition:-webkit-transform ease-in-out .3s,width ease-in-out .3s,visibility .3s;transition:transform ease-in-out .3s,width ease-in-out .3s,visibility .3s}.left-drawer>#drawer{@apply(--paper-drawer-panel-left-drawer-container)}.right-drawer>#drawer{left:auto;right:0;@apply(--paper-drawer-panel-right-drawer-container)}iron-selector>#main{position:absolute;top:0;right:0;bottom:0;@apply(--paper-drawer-panel-main-container)}.transition>#main{transition:left ease-in-out .3s,padding ease-in-out .3s}.right-drawer>#main{left:0}.right-drawer.transition>#main{transition:right ease-in-out .3s,padding ease-in-out .3s}#main>::content>[main]{height:100%}#drawer>::content>[drawer]{height:100%}#scrim{position:absolute;top:0;right:0;bottom:0;left:0;visibility:hidden;opacity:0;transition:opacity ease-in-out .38s,visibility ease-in-out .38s;background-color:rgba(0,0,0,.3);@apply(--paper-drawer-panel-scrim)}.narrow-layout>#drawer{will-change:transform}.narrow-layout>#drawer.iron-selected{box-shadow:2px 2px 4px rgba(0,0,0,.15)}.right-drawer.narrow-layout>#drawer.iron-selected{box-shadow:-2px 2px 4px rgba(0,0,0,.15)}.narrow-layout>#drawer>::content>[drawer]{border:0}.left-drawer.narrow-layout>#drawer:not(.iron-selected){visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.right-drawer.narrow-layout>#drawer:not(.iron-selected){left:auto;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}.left-drawer.dragging>#drawer:not(.iron-selected),.left-drawer.peeking>#drawer:not(.iron-selected),.right-drawer.dragging>#drawer:not(.iron-selected),.right-drawer.peeking>#drawer:not(.iron-selected){visibility:visible}.narrow-layout>#main{padding:0}.right-drawer.narrow-layout>#main{left:0;right:0}.dragging>#main>#scrim,.narrow-layout>#main:not(.iron-selected)>#scrim{visibility:visible;opacity:var(--paper-drawer-panel-scrim-opacity,1)}.narrow-layout>#main>*{margin:0;min-height:100%;left:0;right:0;-moz-box-sizing:border-box;box-sizing:border-box}iron-selector:not(.narrow-layout) ::content [paper-drawer-toggle]{display:none}</style><iron-media-query id="mq" on-query-matches-changed="_onQueryMatchesChanged" query="[[_computeMediaQuery(forceNarrow, responsiveWidth)]]"></iron-media-query><iron-selector attr-for-selected="id" class$="[[_computeIronSelectorClass(narrow, _transition, dragging, rightDrawer, peeking)]]" activate-event="" selected="[[selected]]"><div id="main" style$="[[_computeMainStyle(narrow, rightDrawer, drawerWidth)]]"><content select="[main]"></content><div id="scrim" on-tap="closeDrawer"></div></div><div id="drawer" style$="[[_computeDrawerStyle(drawerWidth)]]"><content id="drawerContent" select="[drawer]"></content></div></iron-selector></template><script>!function(){"use strict";function e(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&e[i]&&t.push(i);return t.join(" ")}var t=null;Polymer({is:"paper-drawer-panel",behaviors:[Polymer.IronResizableBehavior],properties:{defaultSelected:{type:String,value:"main"},disableEdgeSwipe:{type:Boolean,value:!1},disableSwipe:{type:Boolean,value:!1},dragging:{type:Boolean,value:!1,readOnly:!0,notify:!0},drawerWidth:{type:String,value:"256px"},edgeSwipeSensitivity:{type:Number,value:30},forceNarrow:{type:Boolean,value:!1},hasTransform:{type:Boolean,value:function(){return"transform"in this.style}},hasWillChange:{type:Boolean,value:function(){return"willChange"in this.style}},narrow:{reflectToAttribute:!0,type:Boolean,value:!1,readOnly:!0,notify:!0},peeking:{type:Boolean,value:!1,readOnly:!0,notify:!0},responsiveWidth:{type:String,value:"768px"},rightDrawer:{type:Boolean,value:!1},selected:{reflectToAttribute:!0,notify:!0,type:String,value:null},drawerToggleAttribute:{type:String,value:"paper-drawer-toggle"},drawerFocusSelector:{type:String,value:'a[href]:not([tabindex="-1"]),area[href]:not([tabindex="-1"]),input:not([disabled]):not([tabindex="-1"]),select:not([disabled]):not([tabindex="-1"]),textarea:not([disabled]):not([tabindex="-1"]),button:not([disabled]):not([tabindex="-1"]),iframe:not([tabindex="-1"]),[tabindex]:not([tabindex="-1"]),[contentEditable=true]:not([tabindex="-1"])'},_transition:{type:Boolean,value:!1}},listeners:{tap:"_onTap",track:"_onTrack",down:"_downHandler",up:"_upHandler",transitionend:"_onTransitionEnd"},observers:["_forceNarrowChanged(forceNarrow, defaultSelected)","_toggleFocusListener(selected)"],ready:function(){this._transition=!0,this._boundFocusListener=this._didFocus.bind(this)},togglePanel:function(){this._isMainSelected()?this.openDrawer():this.closeDrawer()},openDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="drawer"}.bind(this))},closeDrawer:function(){requestAnimationFrame(function(){this.toggleClass("transition-drawer",!0,this.$.drawer),this.selected="main"}.bind(this))},_onTransitionEnd:function(e){var t=Polymer.dom(e).localTarget;if(t===this&&("left"!==e.propertyName&&"right"!==e.propertyName||this.notifyResize(),"transform"===e.propertyName&&(requestAnimationFrame(function(){this.toggleClass("transition-drawer",!1,this.$.drawer)}.bind(this)),"drawer"===this.selected))){var i=this._getAutoFocusedNode();i&&i.focus()}},_computeIronSelectorClass:function(t,i,r,n,a){return e({dragging:r,"narrow-layout":t,"right-drawer":n,"left-drawer":!n,transition:i,peeking:a})},_computeDrawerStyle:function(e){return"width:"+e+";"},_computeMainStyle:function(e,t,i){var r="";return r+="left:"+(e||t?"0":i)+";",t&&(r+="right:"+(e?"":i)+";"),r},_computeMediaQuery:function(e,t){return e?"":"(max-width: "+t+")"},_computeSwipeOverlayHidden:function(e,t){return!e||t},_onTrack:function(e){if(!t||this===t)switch(e.detail.state){case"start":this._trackStart(e);break;case"track":this._trackX(e);break;case"end":this._trackEnd(e)}},_responsiveChange:function(e){this._setNarrow(e),this.selected=this.narrow?this.defaultSelected:null,this.setScrollDirection(this._swipeAllowed()?"y":"all"),this.fire("paper-responsive-change",{narrow:this.narrow})},_onQueryMatchesChanged:function(e){this._responsiveChange(e.detail.value)},_forceNarrowChanged:function(){this._responsiveChange(this.forceNarrow||this.$.mq.queryMatches)},_swipeAllowed:function(){return this.narrow&&!this.disableSwipe},_isMainSelected:function(){return"main"===this.selected},_startEdgePeek:function(){this.width=this.$.drawer.offsetWidth,this._moveDrawer(this._translateXForDeltaX(this.rightDrawer?-this.edgeSwipeSensitivity:this.edgeSwipeSensitivity)),this._setPeeking(!0)},_stopEdgePeek:function(){this.peeking&&(this._setPeeking(!1),this._moveDrawer(null))},_downHandler:function(e){!this.dragging&&this._isMainSelected()&&this._isEdgeTouch(e)&&!t&&(this._startEdgePeek(),e.preventDefault(),t=this)},_upHandler:function(){this._stopEdgePeek(),t=null},_onTap:function(e){var t=Polymer.dom(e).localTarget,i=t&&this.drawerToggleAttribute&&t.hasAttribute(this.drawerToggleAttribute);i&&this.togglePanel()},_isEdgeTouch:function(e){var t=e.detail.x;return!this.disableEdgeSwipe&&this._swipeAllowed()&&(this.rightDrawer?t>=this.offsetWidth-this.edgeSwipeSensitivity:t<=this.edgeSwipeSensitivity)},_trackStart:function(e){this._swipeAllowed()&&(t=this,this._setDragging(!0),this._isMainSelected()&&this._setDragging(this.peeking||this._isEdgeTouch(e)),this.dragging&&(this.width=this.$.drawer.offsetWidth,this._transition=!1))},_translateXForDeltaX:function(e){var t=this._isMainSelected();return this.rightDrawer?Math.max(0,t?this.width+e:e):Math.min(0,t?e-this.width:e)},_trackX:function(e){if(this.dragging){var t=e.detail.dx;if(this.peeking){if(Math.abs(t)<=this.edgeSwipeSensitivity)return;this._setPeeking(!1)}this._moveDrawer(this._translateXForDeltaX(t))}},_trackEnd:function(e){if(this.dragging){var i=e.detail.dx>0;this._setDragging(!1),this._transition=!0,t=null,this._moveDrawer(null),this.rightDrawer?this[i?"closeDrawer":"openDrawer"]():this[i?"openDrawer":"closeDrawer"]()}},_transformForTranslateX:function(e){return null===e?"":this.hasWillChange?"translateX("+e+"px)":"translate3d("+e+"px, 0, 0)"},_moveDrawer:function(e){this.transform(this._transformForTranslateX(e),this.$.drawer)},_getDrawerContent:function(){return Polymer.dom(this.$.drawerContent).getDistributedNodes()[0]},_getAutoFocusedNode:function(){var e=this._getDrawerContent();return this.drawerFocusSelector?Polymer.dom(e).querySelector(this.drawerFocusSelector)||e:null},_toggleFocusListener:function(e){"drawer"===e?this.addEventListener("focus",this._boundFocusListener,!0):this.removeEventListener("focus",this._boundFocusListener,!0)},_didFocus:function(e){var t=this._getAutoFocusedNode();if(t){var i=Polymer.dom(e).path,r=(i[0],this._getDrawerContent()),n=i.indexOf(r)!==-1;n||(e.stopPropagation(),t.focus())}},_isDrawerClosed:function(e,t){return!e||"drawer"!==t}})}()</script></dom-module><dom-module id="iron-pages" assetpath="../bower_components/iron-pages/"><template><style>:host{display:block}:host>::content>:not(.iron-selected){display:none!important}</style><content></content></template><script>Polymer({is:"iron-pages",behaviors:[Polymer.IronResizableBehavior,Polymer.IronSelectableBehavior],properties:{activateEvent:{type:String,value:null}},observers:["_selectedPageChanged(selected)"],_selectedPageChanged:function(e,a){this.async(this.notifyResize)}})</script></dom-module><dom-module id="iron-icon" assetpath="../bower_components/iron-icon/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center-center);position:relative;vertical-align:middle;fill:var(--iron-icon-fill-color,currentcolor);stroke:var(--iron-icon-stroke-color,none);width:var(--iron-icon-width,24px);height:var(--iron-icon-height,24px);@apply(--iron-icon)}</style></template><script>Polymer({is:"iron-icon",properties:{icon:{type:String},theme:{type:String},src:{type:String},_meta:{value:Polymer.Base.create("iron-meta",{type:"iconset"})}},observers:["_updateIcon(_meta, isAttached)","_updateIcon(theme, isAttached)","_srcChanged(src, isAttached)","_iconChanged(icon, isAttached)"],_DEFAULT_ICONSET:"icons",_iconChanged:function(t){var i=(t||"").split(":");this._iconName=i.pop(),this._iconsetName=i.pop()||this._DEFAULT_ICONSET,this._updateIcon()},_srcChanged:function(t){this._updateIcon()},_usesIconset:function(){return this.icon||!this.src},_updateIcon:function(){this._usesIconset()?(this._img&&this._img.parentNode&&Polymer.dom(this.root).removeChild(this._img),""===this._iconName?this._iconset&&this._iconset.removeIcon(this):this._iconsetName&&this._meta&&(this._iconset=this._meta.byKey(this._iconsetName),this._iconset?(this._iconset.applyIcon(this,this._iconName,this.theme),this.unlisten(window,"iron-iconset-added","_updateIcon")):this.listen(window,"iron-iconset-added","_updateIcon"))):(this._iconset&&this._iconset.removeIcon(this),this._img||(this._img=document.createElement("img"),this._img.style.width="100%",this._img.style.height="100%",this._img.draggable=!1),this._img.src=this.src,Polymer.dom(this.root).appendChild(this._img))}})</script></dom-module><dom-module id="paper-icon-button" assetpath="../bower_components/paper-icon-button/"><template strip-whitespace=""><style>:host{display:inline-block;position:relative;padding:8px;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;z-index:0;line-height:1;width:40px;height:40px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;box-sizing:border-box!important;@apply(--paper-icon-button)}:host #ink{color:var(--paper-icon-button-ink-color,--primary-text-color);opacity:.6}:host([disabled]){color:var(--paper-icon-button-disabled-text,--disabled-text-color);pointer-events:none;cursor:auto;@apply(--paper-icon-button-disabled)}:host(:hover){@apply(--paper-icon-button-hover)}iron-icon{--iron-icon-width:100%;--iron-icon-height:100%}</style><iron-icon id="icon" src="[[src]]" icon="[[icon]]" alt$="[[alt]]"></iron-icon></template><script>Polymer({is:"paper-icon-button",hostAttributes:{role:"button",tabindex:"0"},behaviors:[Polymer.PaperInkyFocusBehavior],properties:{src:{type:String},icon:{type:String},alt:{type:String,observer:"_altChanged"}},_altChanged:function(t,e){var r=this.getAttribute("aria-label");r&&e!=r||this.setAttribute("aria-label",t)}})</script></dom-module><script>Polymer.IronMenuBehaviorImpl={properties:{focusedItem:{observer:"_focusedItemChanged",readOnly:!0,type:Object},attrForItemTitle:{type:String}},_SEARCH_RESET_TIMEOUT_MS:1e3,hostAttributes:{role:"menu",tabindex:"0"},observers:["_updateMultiselectable(multi)"],listeners:{focus:"_onFocus",keydown:"_onKeydown","iron-items-changed":"_onIronItemsChanged"},keyBindings:{up:"_onUpKey",down:"_onDownKey",esc:"_onEscKey","shift+tab:keydown":"_onShiftTabDown"},attached:function(){this._resetTabindices()},select:function(e){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null);var t=this._valueToItem(e);t&&t.hasAttribute("disabled")||(this._setFocusedItem(t),Polymer.IronMultiSelectableBehaviorImpl.select.apply(this,arguments))},_resetTabindices:function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this.items.forEach(function(t){t.setAttribute("tabindex",t===e?"0":"-1")},this)},_updateMultiselectable:function(e){e?this.setAttribute("aria-multiselectable","true"):this.removeAttribute("aria-multiselectable")},_focusWithKeyboardEvent:function(e){this.cancelDebouncer("_clearSearchText");var t=this._searchText||"",s=e.key&&1==e.key.length?e.key:String.fromCharCode(e.keyCode);t+=s.toLocaleLowerCase();for(var i,o=t.length,n=0;i=this.items[n];n++)if(!i.hasAttribute("disabled")){var r=this.attrForItemTitle||"textContent",a=(i[r]||i.getAttribute(r)||"").trim();if(!(a.length<o)&&a.slice(0,o).toLocaleLowerCase()==t){this._setFocusedItem(i);break}}this._searchText=t,this.debounce("_clearSearchText",this._clearSearchText,this._SEARCH_RESET_TIMEOUT_MS)},_clearSearchText:function(){this._searchText=""},_focusPrevious:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t-s+e)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_focusNext:function(){for(var e=this.items.length,t=Number(this.indexOf(this.focusedItem)),s=1;s<e+1;s++){var i=this.items[(t+s)%e];if(!i.hasAttribute("disabled")){var o=Polymer.dom(i).getOwnerRoot()||document;if(this._setFocusedItem(i),Polymer.dom(o).activeElement==i)return}}},_applySelection:function(e,t){t?e.setAttribute("aria-selected","true"):e.removeAttribute("aria-selected"),Polymer.IronSelectableBehavior._applySelection.apply(this,arguments)},_focusedItemChanged:function(e,t){t&&t.setAttribute("tabindex","-1"),e&&(e.setAttribute("tabindex","0"),e.focus())},_onIronItemsChanged:function(e){e.detail.addedNodes.length&&this._resetTabindices()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");Polymer.IronMenuBehaviorImpl._shiftTabPressed=!0,this._setFocusedItem(null),this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1},1)},_onFocus:function(e){if(!Polymer.IronMenuBehaviorImpl._shiftTabPressed){var t=Polymer.dom(e).rootTarget;(t===this||"undefined"==typeof t.tabIndex||this.isLightDescendant(t))&&(this._defaultFocusAsync=this.async(function(){var e=this.multi?this.selectedItems&&this.selectedItems[0]:this.selectedItem;this._setFocusedItem(null),e?this._setFocusedItem(e):this.items[0]&&this._focusNext()}))}},_onUpKey:function(e){this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onEscKey:function(e){this.focusedItem.blur()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down esc")||this._focusWithKeyboardEvent(e),e.stopPropagation()},_activateHandler:function(e){Polymer.IronSelectableBehavior._activateHandler.call(this,e),e.stopPropagation()}},Polymer.IronMenuBehaviorImpl._shiftTabPressed=!1,Polymer.IronMenuBehavior=[Polymer.IronMultiSelectableBehavior,Polymer.IronA11yKeysBehavior,Polymer.IronMenuBehaviorImpl]</script><script>Polymer.IronMenubarBehaviorImpl={hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.keyboardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrevious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusWithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Polymer.IronMenubarBehaviorImpl]</script><script>Polymer({is:"iron-iconset-svg",properties:{name:{type:String,observer:"_nameChanged"},size:{type:Number,value:24},rtlMirroring:{type:Boolean,value:!1}},attached:function(){this.style.display="none"},getIconNames:function(){return this._icons=this._createIconMap(),Object.keys(this._icons).map(function(e){return this.name+":"+e},this)},applyIcon:function(e,t){e=e.root||e,this.removeIcon(e);var n=this._cloneIcon(t,this.rtlMirroring&&this._targetIsRTL(e));if(n){var r=Polymer.dom(e);return r.insertBefore(n,r.childNodes[0]),e._svgIcon=n}return null},removeIcon:function(e){e=e.root||e,e._svgIcon&&(Polymer.dom(e).removeChild(e._svgIcon),e._svgIcon=null)},_targetIsRTL:function(e){return null==this.__targetIsRTL&&(e&&e.nodeType!==Node.ELEMENT_NODE&&(e=e.host),this.__targetIsRTL=e&&"rtl"===window.getComputedStyle(e).direction),this.__targetIsRTL},_nameChanged:function(){new Polymer.IronMeta({type:"iconset",key:this.name,value:this}),this.async(function(){this.fire("iron-iconset-added",this,{node:window})})},_createIconMap:function(){var e=Object.create(null);return Polymer.dom(this).querySelectorAll("[id]").forEach(function(t){e[t.id]=t}),e},_cloneIcon:function(e,t){return this._icons=this._icons||this._createIconMap(),this._prepareSvgClone(this._icons[e],this.size,t)},_prepareSvgClone:function(e,t,n){if(e){var r=e.cloneNode(!0),i=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=r.getAttribute("viewBox")||"0 0 "+t+" "+t,s="pointer-events: none; display: block; width: 100%; height: 100%;";return n&&r.hasAttribute("mirror-in-rtl")&&(s+="-webkit-transform:scale(-1,1);transform:scale(-1,1);"),i.setAttribute("viewBox",o),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.style.cssText=s,i.appendChild(r).removeAttribute("id"),i}return null}})</script><iron-iconset-svg name="paper-tabs" size="24"><svg><defs><g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g><g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-tab" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-center-justified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overflow:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base);@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-content{height:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-center-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--paper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-auto);height:100%}</style><div class="tab-content"><content></content></div></template><script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _parentNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(this.link){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)return;e.click()}}})</script></dom-module><dom-module id="paper-tabs" assetpath="../bower_components/paper-tabs/"><template><style>:host{@apply(--layout);@apply(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hidden;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizontal-reverse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;overflow:hidden;@apply(--layout-flex-auto);@apply(--paper-tabs-container)}#tabsContent{height:100%;-moz-flex-basis:auto;-ms-flex-basis:auto;flex-basis:auto;@apply(--paper-tabs-content)}#tabsContent.scrollable{position:absolute;white-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.scrollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;cursor:default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px}#selectionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-color:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left center;transform-origin:left center;transition:-webkit-transform;transition:transform;@apply(--paper-tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.expand{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)}#selectionBar.contract{transition-duration:.18s;transition-timing-function:cubic-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</style><paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button><div id="tabsContainer" on-track="_scroll" on-down="_down"><div id="tabsContent" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"><div id="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTransitionEnd"></div><content select="*"></content></div></div><paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button></template><script>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.IronMenubarBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._cancelPendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).querySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoinkAttribute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNoinkAttribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:function(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass:function(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_computeSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){this._tabChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),Polymer.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivation:function(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=this.async(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:function(){var t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)},_onBlurCapture:function(t){t.target===this._pendingActivationItem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t){this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.tabsContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidden=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:function(){this._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClientRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={width:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null==e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left);var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t),r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSelectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_positionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("translateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:function(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("expand"),e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.contains("contract")&&e.remove("contract")}})</script></dom-module><dom-module id="app-header-layout" assetpath="../bower_components/app-layout/app-header-layout/"><template><style>:host{display:block;position:relative;z-index:0}:host>::content>app-header{@apply(--layout-fixed-top);z-index:1}:host([has-scrolling-region]){height:100%}:host([has-scrolling-region])>::content>app-header{position:absolute}:host([has-scrolling-region])>#contentContainer{@apply(--layout-fit);overflow-y:auto;-webkit-overflow-scrolling:touch}:host([fullbleed]){@apply(--layout-vertical);@apply(--layout-fit)}:host([fullbleed])>#contentContainer{@apply(--layout-vertical);@apply(--layout-flex)}#contentContainer{position:relative;z-index:0}</style><content id="header" select="app-header"></content><div id="contentContainer"><content></content></div></template><script>Polymer({is:"app-header-layout",behaviors:[Polymer.IronResizableBehavior],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectToAttribute:!0}},listeners:{"iron-resize":"_resizeHandler","app-header-reset-layout":"_resetLayoutHandler"},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return Polymer.dom(this.$.header).getDistributedNodes()[0]},resetLayout:function(){this._updateScroller(),this.debounce("_resetLayout",this._updateContentPosition)},_updateContentPosition:function(){var e=this.header;if(this.isAttached&&e){var t=e.offsetHeight;if(this.hasScrollingRegion)e.style.left="",e.style.right="";else{var i=this.getBoundingClientRect(),o=document.documentElement.clientWidth-i.right;e.style.left=i.left+"px",e.style.right=o+"px"}var n=this.$.contentContainer.style;e.fixed&&!e.willCondense()&&this.hasScrollingRegion?(n.marginTop=t+"px",n.paddingTop=""):(n.paddingTop=t+"px",n.marginTop="")}},_updateScroller:function(){if(this.isAttached){var e=this.header;e&&(e.scrollTarget=this.hasScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement)}},_resizeHandler:function(){this.resetLayout()},_resetLayoutHandler:function(e){this.resetLayout(),e.stopPropagation()}})</script></dom-module><script>Polymer.IronScrollTargetBehavior={properties:{scrollTarget:{type:Object,value:function(){return this._defaultScrollTarget}}},observers:["_scrollTargetChanged(scrollTarget, isAttached)"],_shouldHaveListener:!0,_scrollTargetChanged:function(t,l){this._oldScrollTarget&&(this._toggleScrollListener(!1,this._oldScrollTarget),this._oldScrollTarget=null),l&&("document"===t?this.scrollTarget=this._doc:"string"==typeof t?this.scrollTarget=this.domHost?this.domHost.$[t]:Polymer.dom(this.ownerDocument).querySelector("#"+t):this._isValidScrollTarget()&&(this._boundScrollHandler=this._boundScrollHandler||this._scrollHandler.bind(this),this._oldScrollTarget=t,this._toggleScrollListener(this._shouldHaveListener,t)))},_scrollHandler:function(){},get _defaultScrollTarget(){return this._doc},get _doc(){return this.ownerDocument.documentElement},get _scrollTop(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageYOffset:this.scrollTarget.scrollTop:0},get _scrollLeft(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.pageXOffset:this.scrollTarget.scrollLeft:0},set _scrollTop(t){this.scrollTarget===this._doc?window.scrollTo(window.pageXOffset,t):this._isValidScrollTarget()&&(this.scrollTarget.scrollTop=t)},set _scrollLeft(t){this.scrollTarget===this._doc?window.scrollTo(t,window.pageYOffset):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t)},scroll:function(t,l){this.scrollTarget===this._doc?window.scrollTo(t,l):this._isValidScrollTarget()&&(this.scrollTarget.scrollLeft=t,this.scrollTarget.scrollTop=l)},get _scrollTargetWidth(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerWidth:this.scrollTarget.offsetWidth:0},get _scrollTargetHeight(){return this._isValidScrollTarget()?this.scrollTarget===this._doc?window.innerHeight:this.scrollTarget.offsetHeight:0},_isValidScrollTarget:function(){return this.scrollTarget instanceof HTMLElement},_toggleScrollListener:function(t,l){if(this._boundScrollHandler){var e=l===this._doc?window:l;t?e.addEventListener("scroll",this._boundScrollHandler):e.removeEventListener("scroll",this._boundScrollHandler)}},toggleScrollListener:function(t){this._shouldHaveListener=t,this._toggleScrollListener(t,this.scrollTarget)}}</script><script>Polymer.AppLayout=Polymer.AppLayout||{},Polymer.AppLayout._scrollEffects=Polymer.AppLayout._scrollEffects||{},Polymer.AppLayout.scrollTimingFunction=function(o,l,e,r){return o/=r,-e*o*(o-2)+l},Polymer.AppLayout.registerEffect=function(o,l){if(null!=Polymer.AppLayout._scrollEffects[o])throw new Error("effect `"+o+"` is already registered.");Polymer.AppLayout._scrollEffects[o]=l},Polymer.AppLayout.scroll=function(o){o=o||{};var l=document.documentElement,e=o.target||l,r="scrollBehavior"in e.style&&e.scroll,t="app-layout-silent-scroll",s=o.top||0,c=o.left||0,i=e===l?window.scrollTo:function(o,l){e.scrollLeft=o,e.scrollTop=l};if("smooth"===o.behavior)if(r)e.scroll(o);else{var n=Polymer.AppLayout.scrollTimingFunction,a=Date.now(),p=e===l?window.pageYOffset:e.scrollTop,u=e===l?window.pageXOffset:e.scrollLeft,y=s-p,f=c-u,m=300,L=function o(){var l=Date.now(),e=l-a;e<m?(i(n(e,u,f,m),n(e,p,y,m)),requestAnimationFrame(o)):i(c,s)}.bind(this);L()}else"silent"===o.behavior?(l.classList.add(t),clearInterval(Polymer.AppLayout._scrollTimer),Polymer.AppLayout._scrollTimer=setTimeout(function(){l.classList.remove(t),Polymer.AppLayout._scrollTimer=null},100),i(c,s)):i(c,s)}</script><script>Polymer.AppScrollEffectsBehavior=[Polymer.IronScrollTargetBehavior,{properties:{effects:{type:String},effectsConfig:{type:Object,value:function(){return{}}},disabled:{type:Boolean,reflectToAttribute:!0,value:!1},threshold:{type:Number,value:0},thresholdTriggered:{type:Boolean,notify:!0,readOnly:!0,reflectToAttribute:!0}},observers:["_effectsChanged(effects, effectsConfig, isAttached)"],_updateScrollState:function(){},isOnScreen:function(){return!1},isContentBelow:function(){return!1},_effectsRunFn:null,_effects:null,get _clampedScrollTop(){return Math.max(0,this._scrollTop)},detached:function(){this._tearDownEffects()},createEffect:function(t,e){var n=Polymer.AppLayout._scrollEffects[t];if(!n)throw new ReferenceError(this._getUndefinedMsg(t));var f=this._boundEffect(n,e||{});return f.setUp(),f},_effectsChanged:function(t,e,n){this._tearDownEffects(),""!==t&&n&&(t.split(" ").forEach(function(t){var n;""!==t&&((n=Polymer.AppLayout._scrollEffects[t])?this._effects.push(this._boundEffect(n,e[t])):console.warn(this._getUndefinedMsg(t)))},this),this._setUpEffect())},_layoutIfDirty:function(){return this.offsetWidth},_boundEffect:function(t,e){e=e||{};var n=parseFloat(e.startsAt||0),f=parseFloat(e.endsAt||1),s=f-n,r=function(){},o=0===n&&1===f?t.run:function(e,f){t.run.call(this,Math.max(0,(e-n)/s),f)};return{setUp:t.setUp?t.setUp.bind(this,e):r,run:t.run?o.bind(this):r,tearDown:t.tearDown?t.tearDown.bind(this):r}},_setUpEffect:function(){this.isAttached&&this._effects&&(this._effectsRunFn=[],this._effects.forEach(function(t){t.setUp()!==!1&&this._effectsRunFn.push(t.run)},this))},_tearDownEffects:function(){this._effects&&this._effects.forEach(function(t){t.tearDown()}),this._effectsRunFn=[],this._effects=[]},_runEffects:function(t,e){this._effectsRunFn&&this._effectsRunFn.forEach(function(n){n(t,e)})},_scrollHandler:function(){if(!this.disabled){var t=this._clampedScrollTop;this._updateScrollState(t),this.threshold>0&&this._setThresholdTriggered(t>=this.threshold)}},_getDOMRef:function(t){console.warn("_getDOMRef","`"+t+"` is undefined")},_getUndefinedMsg:function(t){return"Scroll effect `"+t+"` is undefined. Did you forget to import app-layout/app-scroll-effects/effects/"+t+".html ?"}}]</script><script>Polymer.AppLayout.registerEffect("waterfall",{run:function(){this.shadow=this.isOnScreen()&&this.isContentBelow()}})</script><dom-module id="app-header" assetpath="../bower_components/app-layout/app-header/"><template><style>:host{position:relative;display:block;transition-timing-function:linear;transition-property:-webkit-transform;transition-property:transform}:host::after{position:absolute;right:0;bottom:-5px;left:0;width:100%;height:5px;content:"";transition:opacity .4s;pointer-events:none;opacity:0;box-shadow:inset 0 5px 6px -3px rgba(0,0,0,.4);will-change:opacity;@apply(--app-header-shadow)}:host([shadow])::after{opacity:1}::content [condensed-title],::content [main-title]{-webkit-transform-origin:left top;transform-origin:left top;white-space:nowrap}::content [condensed-title]{opacity:0}#background{@apply(--layout-fit);overflow:hidden}#backgroundFrontLayer,#backgroundRearLayer{@apply(--layout-fit);height:100%;pointer-events:none;background-size:cover}#backgroundFrontLayer{@apply(--app-header-background-front-layer)}#backgroundRearLayer{opacity:0;@apply(--app-header-background-rear-layer)}#contentContainer{position:relative;width:100%;height:100%}:host([disabled]),:host([disabled]) #backgroundFrontLayer,:host([disabled]) #backgroundRearLayer,:host([disabled]) ::content>[sticky],:host([disabled]) ::content>app-toolbar:first-of-type,:host([disabled])::after,:host-context(.app-layout-silent-scroll),:host-context(.app-layout-silent-scroll) #backgroundFrontLayer,:host-context(.app-layout-silent-scroll) #backgroundRearLayer,:host-context(.app-layout-silent-scroll) ::content>[sticky],:host-context(.app-layout-silent-scroll) ::content>app-toolbar:first-of-type,:host-context(.app-layout-silent-scroll)::after{transition:none!important}</style><div id="contentContainer"><content id="content"></content></div></template><script>Polymer({is:"app-header",behaviors:[Polymer.AppScrollEffectsBehavior,Polymer.IronResizableBehavior],properties:{condenses:{type:Boolean,value:!1},fixed:{type:Boolean,value:!1},reveals:{type:Boolean,value:!1},shadow:{type:Boolean,reflectToAttribute:!0,value:!1}},observers:["resetLayout(isAttached, condenses, fixed)"],listeners:{"iron-resize":"_resizeHandler"},_height:0,_dHeight:0,_stickyElTop:0,_stickyEl:null,_top:0,_progress:0,_wasScrollingDown:!1,_initScrollTop:0,_initTimestamp:0,_lastTimestamp:0,_lastScrollTop:0,get _maxHeaderTop(){return this.fixed?this._dHeight:this._height+5},_getStickyEl:function(){for(var t,e=Polymer.dom(this.$.content).getDistributedNodes(),i=0;i<e.length;i++)if(e[i].nodeType===Node.ELEMENT_NODE){var s=e[i];if(s.hasAttribute("sticky")){t=s;break}t||(t=s)}return t},resetLayout:function(){this.debounce("_resetLayout",function(){if(0!==this.offsetWidth||0!==this.offsetHeight){var t=this._clampedScrollTop,e=0===this._height||0===t,i=this.disabled;this._height=this.offsetHeight,this._stickyEl=this._getStickyEl(),this.disabled=!0,e||this._updateScrollState(0,!0),this._mayMove()?this._dHeight=this._stickyEl?this._height-this._stickyEl.offsetHeight:0:this._dHeight=0,this._stickyElTop=this._stickyEl?this._stickyEl.offsetTop:0,this._setUpEffect(),e?this._updateScrollState(t,!0):(this._updateScrollState(this._lastScrollTop,!0),this._layoutIfDirty()),this.disabled=i,this.fire("app-header-reset-layout")}})},_updateScrollState:function(t,e){if(0!==this._height){var i=0,s=0,o=this._top,r=(this._lastScrollTop,this._maxHeaderTop),h=t-this._lastScrollTop,n=Math.abs(h),a=t>this._lastScrollTop,l=Date.now();if(this._mayMove()&&(s=this._clamp(this.reveals?o+h:t,0,r)),t>=this._dHeight&&(s=this.condenses&&!this.fixed?Math.max(this._dHeight,s):s,this.style.transitionDuration="0ms"),this.reveals&&!this.disabled&&n<100&&((l-this._initTimestamp>300||this._wasScrollingDown!==a)&&(this._initScrollTop=t,this._initTimestamp=l),t>=r))if(Math.abs(this._initScrollTop-t)>30||n>10){a&&t>=r?s=r:!a&&t>=this._dHeight&&(s=this.condenses&&!this.fixed?this._dHeight:0);var _=h/(l-this._lastTimestamp);this.style.transitionDuration=this._clamp((s-o)/_,0,300)+"ms"}else s=this._top;i=0===this._dHeight?t>0?1:0:s/this._dHeight,e||(this._lastScrollTop=t,this._top=s,this._wasScrollingDown=a,this._lastTimestamp=l),(e||i!==this._progress||o!==s||0===t)&&(this._progress=i,this._runEffects(i,s),this._transformHeader(s))}},_mayMove:function(){return this.condenses||!this.fixed},willCondense:function(){return this._dHeight>0&&this.condenses},isOnScreen:function(){return 0!==this._height&&this._top<this._height},isContentBelow:function(){return 0===this._top?this._clampedScrollTop>0:this._clampedScrollTop-this._maxHeaderTop>=0},_transformHeader:function(t){this.translate3d(0,-t+"px",0),this._stickyEl&&this.translate3d(0,this.condenses&&t>=this._stickyElTop?Math.min(t,this._dHeight)-this._stickyElTop+"px":0,0,this._stickyEl)},_resizeHandler:function(){this.resetLayout()},_clamp:function(t,e,i){return Math.min(i,Math.max(e,t))},_ensureBgContainers:function(){this._bgContainer||(this._bgContainer=document.createElement("div"),this._bgContainer.id="background",this._bgRear=document.createElement("div"),this._bgRear.id="backgroundRearLayer",this._bgContainer.appendChild(this._bgRear),this._bgFront=document.createElement("div"),this._bgFront.id="backgroundFrontLayer",this._bgContainer.appendChild(this._bgFront),Polymer.dom(this.root).insertBefore(this._bgContainer,this.$.contentContainer))},_getDOMRef:function(t){switch(t){case"backgroundFrontLayer":return this._ensureBgContainers(),this._bgFront;case"backgroundRearLayer":return this._ensureBgContainers(),this._bgRear;case"background":return this._ensureBgContainers(),this._bgContainer;case"mainTitle":return Polymer.dom(this).querySelector("[main-title]");case"condensedTitle":return Polymer.dom(this).querySelector("[condensed-title]")}return null},getScrollState:function(){return{progress:this._progress,top:this._top}}})</script></dom-module><dom-module id="app-toolbar" assetpath="../bower_components/app-layout/app-toolbar/"><template><style>:host{@apply(--layout-horizontal);@apply(--layout-center);position:relative;height:64px;padding:0 16px;pointer-events:none;font-size:var(--app-toolbar-font-size,20px)}::content>*{pointer-events:auto}::content>paper-icon-button{font-size:0}::content>[condensed-title],::content>[main-title]{pointer-events:none;@apply(--layout-flex)}::content>[bottom-item]{position:absolute;right:0;bottom:0;left:0}::content>[top-item]{position:absolute;top:0;right:0;left:0}::content>[spacer]{margin-left:64px}</style><content></content></template><script>Polymer({is:"app-toolbar"})</script></dom-module><dom-module id="ha-menu-button" assetpath="components/"><template><style>.invisible{visibility:hidden}</style><paper-icon-button icon="mdi:menu" class$="[[computeMenuButtonClass(narrow, showMenu)]]" on-tap="toggleMenu"></paper-icon-button></template></dom-module><script>Polymer({is:"ha-menu-button",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1}},computeMenuButtonClass:function(e,n){return!e&&n?"invisible":""},toggleMenu:function(){this.fire("open-menu")}})</script><dom-module id="ha-label-badge" assetpath="/"><template><style>.badge-container{display:inline-block;text-align:center;vertical-align:top;margin-bottom:16px}.label-badge{position:relative;display:block;margin:0 auto;width:2.5em;text-align:center;height:2.5em;line-height:2.5em;font-size:1.5em;border-radius:50%;border:.1em solid var(--ha-label-badge-color,--default-primary-color);color:#4c4c4c;white-space:nowrap;background-color:#fff;background-size:cover;transition:border .3s ease-in-out}.label-badge .value{font-size:90%;overflow:hidden;text-overflow:ellipsis}.label-badge .value.big{font-size:70%}.label-badge .label{position:absolute;bottom:-1em;left:0;right:0;line-height:1em;font-size:.5em}.label-badge .label span{max-width:80%;display:inline-block;background-color:var(--ha-label-badge-color,--default-primary-color);color:#fff;border-radius:1em;padding:4px 8px;font-weight:500;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;transition:background-color .3s ease-in-out}.badge-container .title{margin-top:1em;font-size:.9em;width:5em;font-weight:300;overflow:hidden;text-overflow:ellipsis;line-height:normal}iron-image{border-radius:50%}[hidden]{display:none!important}</style><div class="badge-container"><div class="label-badge" id="badge"><div class$="[[computeClasses(value)]]"><iron-icon icon="[[icon]]" hidden$="[[computeHideIcon(icon, value, image)]]"></iron-icon><span hidden$="[[computeHideValue(value, image)]]">[[value]]</span></div><div class="label" hidden$="[[!label]]"><span>[[label]]</span></div></div><div class="title">[[description]]</div></div></template></dom-module><script>Polymer({is:"ha-label-badge",properties:{value:{type:String,value:null},icon:{type:String,value:null},label:{type:String,value:null},description:{type:String},image:{type:String,value:null,observer:"imageChanged"}},computeClasses:function(e){return e&&e.length>4?"value big":"value"},computeHideIcon:function(e,n,l){return!e||n||l},computeHideValue:function(e,n){return!e||n},imageChanged:function(e){this.$.badge.style.backgroundImage=e?"url("+e+")":""}})</script><dom-module id="ha-demo-badge" assetpath="components/"><template><style>:host{--ha-label-badge-color:#dac90d}</style><ha-label-badge icon="mdi:emoticon" label="Demo" description=""></ha-label-badge></template></dom-module><script>Polymer({is:"ha-demo-badge"})</script><dom-module id="ha-state-label-badge" assetpath="components/entity/"><template><style>:host{cursor:pointer}ha-label-badge{--ha-label-badge-color:rgb(223, 76, 30)}.blue{--ha-label-badge-color:#039be5}.green{--ha-label-badge-color:#0DA035}.grey{--ha-label-badge-color:var(--paper-grey-500)}</style><ha-label-badge class$="[[computeClasses(state)]]" value="[[computeValue(state)]]" icon="[[computeIcon(state)]]" image="[[computeImage(state)]]" label="[[computeLabel(state)]]" description="[[computeDescription(state)]]"></ha-label-badge></template></dom-module><script>Polymer({is:"ha-state-label-badge",properties:{hass:{type:Object},state:{type:Object,observer:"stateChanged"}},listeners:{tap:"badgeTap"},badgeTap:function(e){e.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.state.entityId)},1)},computeClasses:function(e){switch(e.domain){case"binary_sensor":case"updater":return"blue";default:return""}},computeValue:function(e){switch(e.domain){case"binary_sensor":case"device_tracker":case"updater":case"sun":case"alarm_control_panel":return null;case"sensor":default:return"unknown"===e.state?"-":e.state}},computeIcon:function(e){if("unavailable"===e.state)return null;switch(e.domain){case"alarm_control_panel":return"pending"===e.state?"mdi:clock-fast":"armed_away"===e.state?"mdi:nature":"armed_home"===e.state?"mdi:home-variant":"triggered"===e.state?"mdi:alert-circle":window.hassUtil.domainIcon(e.domain,e.state);case"binary_sensor":case"device_tracker":case"updater":return window.hassUtil.stateIcon(e);case"sun":return"above_horizon"===e.state?window.hassUtil.domainIcon(e.domain):"mdi:brightness-3";default:return null}},computeImage:function(e){return e.attributes.entity_picture||null},computeLabel:function(e){if("unavailable"===e.state)return"unavai";switch(e.domain){case"device_tracker":return"not_home"===e.state?"Away":e.state;case"alarm_control_panel":return"pending"===e.state?"pend":"armed_away"===e.state||"armed_home"===e.state?"armed":"triggered"===e.state?"trig":"disarm";default:return e.attributes.unit_of_measurement||null}},computeDescription:function(e){return e.entityDisplay},stateChanged:function(){this.updateStyles()}})</script><dom-module id="ha-badges-card" assetpath="cards/"><template><template is="dom-repeat" items="[[states]]"><ha-state-label-badge hass="[[hass]]" state="[[item]]"></ha-state-label-badge></template></template></dom-module><script>Polymer({is:"ha-badges-card",properties:{hass:{type:Object},states:{type:Array}}})</script><dom-module id="paper-material" assetpath="../bower_components/paper-material/"><template><style include="paper-material-shared-styles"></style><style>:host([animated]){@apply(--shadow-transition)}</style><content></content></template></dom-module><script>Polymer({is:"paper-material",properties:{elevation:{type:Number,reflectToAttribute:!0,value:1},animated:{type:Boolean,reflectToAttribute:!0,value:!1}}})</script><dom-module id="ha-camera-card" assetpath="cards/"><template><style include="paper-material">:host{display:block;position:relative;font-size:0;border-radius:2px;cursor:pointer;min-height:48px;line-height:0}.camera-feed{width:100%;height:auto;border-radius:2px}.caption{@apply(--paper-font-common-nowrap);position:absolute;left:0;right:0;bottom:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:rgba(0,0,0,.3);padding:16px;font-size:16px;font-weight:500;line-height:16px;color:#fff}</style><img src="[[cameraFeedSrc]]" class="camera-feed" hidden$="[[!imageLoaded]]" on-load="imageLoadSuccess" on-error="imageLoadFail" alt="[[stateObj.entityDisplay]]"><div class="caption">[[stateObj.entityDisplay]]<template is="dom-if" if="[[!imageLoaded]]">(Error loading image)</template></div></template></dom-module><script>Polymer({is:"ha-camera-card",UPDATE_INTERVAL:1e4,properties:{hass:{type:Object},stateObj:{type:Object,observer:"updateCameraFeedSrc"},cameraFeedSrc:{type:String},imageLoaded:{type:Boolean,value:!0},elevation:{type:Number,value:1,reflectToAttribute:!0}},listeners:{tap:"cardTapped"},attached:function(){this.timer=setInterval(function(){this.updateCameraFeedSrc(this.stateObj)}.bind(this),this.UPDATE_INTERVAL)},detached:function(){clearInterval(this.timer)},cardTapped:function(){this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)}.bind(this),1)},updateCameraFeedSrc:function(e){const t=e.attributes,a=(new Date).getTime();this.cameraFeedSrc=t.entity_picture+"&time="+a},imageLoadSuccess:function(){this.imageLoaded=!0},imageLoadFail:function(){this.imageLoaded=!1}})</script><dom-module id="ha-card" assetpath="/"><template><style include="paper-material">:host{display:block;border-radius:2px;transition:all .3s ease-out;background-color:#fff}.header{@apply(--paper-font-headline);@apply(--paper-font-common-expensive-kerning);opacity:var(--dark-primary-opacity);padding:24px 16px 16px;text-transform:capitalize}</style><template is="dom-if" if="[[header]]"><div class="header">[[header]]</div></template><slot></slot></template></dom-module><script>Polymer({is:"ha-card",properties:{header:{type:String},elevation:{type:Number,value:1,reflectToAttribute:!0}}})</script><dom-module id="paper-toggle-button" assetpath="../bower_components/paper-toggle-button/"><template strip-whitespace=""><style>:host{display:inline-block;@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-common-base)}:host([disabled]){pointer-events:none}:host(:focus){outline:0}.toggle-bar{position:absolute;height:100%;width:100%;border-radius:8px;pointer-events:none;opacity:.4;transition:background-color linear .08s;background-color:var(--paper-toggle-button-unchecked-bar-color,#000);@apply(--paper-toggle-button-unchecked-bar)}.toggle-button{position:absolute;top:-3px;left:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 5px 0 rgba(0,0,0,.6);transition:-webkit-transform linear .08s,background-color linear .08s;transition:transform linear .08s,background-color linear .08s;will-change:transform;background-color:var(--paper-toggle-button-unchecked-button-color,--paper-grey-50);@apply(--paper-toggle-button-unchecked-button)}.toggle-button.dragging{-webkit-transition:none;transition:none}:host([checked]:not([disabled])) .toggle-bar{opacity:.5;background-color:var(--paper-toggle-button-checked-bar-color,--primary-color);@apply(--paper-toggle-button-checked-bar)}:host([disabled]) .toggle-bar{background-color:#000;opacity:.12}:host([checked]) .toggle-button{-webkit-transform:translate(16px,0);transform:translate(16px,0)}:host([checked]:not([disabled])) .toggle-button{background-color:var(--paper-toggle-button-checked-button-color,--primary-color);@apply(--paper-toggle-button-checked-button)}:host([disabled]) .toggle-button{background-color:#bdbdbd;opacity:1}.toggle-ink{position:absolute;top:-14px;left:-14px;right:auto;bottom:auto;width:48px;height:48px;opacity:.5;pointer-events:none;color:var(--paper-toggle-button-unchecked-ink-color,--primary-text-color)}:host([checked]) .toggle-ink{color:var(--paper-toggle-button-checked-ink-color,--primary-color)}.toggle-container{display:inline-block;position:relative;width:36px;height:14px;margin:4px 1px}.toggle-label{position:relative;display:inline-block;vertical-align:middle;padding-left:var(--paper-toggle-button-label-spacing,8px);pointer-events:none;color:var(--paper-toggle-button-label-color,--primary-text-color)}:host([invalid]) .toggle-bar{background-color:var(--paper-toggle-button-invalid-bar-color,--error-color)}:host([invalid]) .toggle-button{background-color:var(--paper-toggle-button-invalid-button-color,--error-color)}:host([invalid]) .toggle-ink{color:var(--paper-toggle-button-invalid-ink-color,--error-color)}</style><div class="toggle-container"><div id="toggleBar" class="toggle-bar"></div><div id="toggleButton" class="toggle-button"></div></div><div class="toggle-label"><content></content></div></template><script>Polymer({is:"paper-toggle-button",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttributes:{role:"button","aria-pressed":"false",tabindex:0},properties:{},listeners:{track:"_ontrack"},attached:function(){Polymer.RenderStatus.afterNextRender(this,function(){this.setScrollDirection("y")})},_ontrack:function(t){var e=t.detail;"start"===e.state?this._trackStart(e):"track"===e.state?this._trackMove(e):"end"===e.state&&this._trackEnd(e)},_trackStart:function(t){this._width=this.$.toggleBar.offsetWidth/2,this._trackChecked=this.checked,this.$.toggleButton.classList.add("dragging")},_trackMove:function(t){var e=t.dx;this._x=Math.min(this._width,Math.max(0,this._trackChecked?this._width+e:e)),this.translate3d(this._x+"px",0,0,this.$.toggleButton),this._userActivate(this._x>this._width/2)},_trackEnd:function(t){this.$.toggleButton.classList.remove("dragging"),this.transform("",this.$.toggleButton)},_createRipple:function(){this._rippleContainer=this.$.toggleButton;var t=Polymer.PaperRippleBehavior._createRipple();return t.id="ink",t.setAttribute("recenters",""),t.classList.add("circle","toggle-ink"),t}})</script></dom-module><dom-module id="ha-entity-toggle" assetpath="components/entity/"><template><style>:host{white-space:nowrap}paper-icon-button{color:var(--primary-text-color);transition:color .5s}paper-icon-button[state-active]{color:var(--default-primary-color)}paper-toggle-button{cursor:pointer;--paper-toggle-button-label-spacing:0;padding:13px 5px;margin:-4px -5px}</style><template is="dom-if" if="[[stateObj.attributes.assumed_state]]"><paper-icon-button icon="mdi:flash-off" on-tap="turnOff" state-active$="[[!isOn]]"></paper-icon-button><paper-icon-button icon="mdi:flash" on-tap="turnOn" state-active$="[[isOn]]"></paper-icon-button></template><template is="dom-if" if="[[!stateObj.attributes.assumed_state]]"><paper-toggle-button class="self-center" checked="[[toggleChecked]]" on-change="toggleChanged"></paper-toggle-button></template></template></dom-module><script>Polymer({is:"ha-entity-toggle",properties:{hass:{type:Object},stateObj:{type:Object},toggleChecked:{type:Boolean,value:!1},isOn:{type:Boolean,computed:"computeIsOn(stateObj)",observer:"isOnChanged"}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation()},ready:function(){this.forceStateChange()},toggleChanged:function(t){var e=t.target.checked;e&&!this.isOn?this.callService(!0):!e&&this.isOn&&this.callService(!1)},isOnChanged:function(t){this.toggleChecked=t},forceStateChange:function(){this.toggleChecked===this.isOn&&(this.toggleChecked=!this.toggleChecked),this.toggleChecked=this.isOn},turnOn:function(){this.callService(!0)},turnOff:function(){this.callService(!1)},computeIsOn:function(t){return t&&window.hassUtil.OFF_STATES.indexOf(t.state)===-1},callService:function(t){var e,i,n;"lock"===this.stateObj.domain?(e="lock",i=t?"lock":"unlock"):"garage_door"===this.stateObj.domain?(e="garage_door",i=t?"open":"close"):(e="homeassistant",i=t?"turn_on":"turn_off"),n=this.stateObj,this.hass.serviceActions.callService(e,i,{entity_id:this.stateObj.entityId}).then(function(){setTimeout(function(){this.stateObj===n&&this.forceStateChange()}.bind(this),2e3)}.bind(this))}})</script><dom-module id="ha-state-icon" assetpath="/"><template><iron-icon icon="[[computeIcon(stateObj)]]"></iron-icon></template></dom-module><script>Polymer({is:"ha-state-icon",properties:{stateObj:{type:Object}},computeIcon:function(t){return window.hassUtil.stateIcon(t)}})</script><dom-module id="state-badge" assetpath="components/entity/"><template><style>:host{position:relative;display:inline-block;width:40px;color:#44739E;border-radius:50%;height:40px;text-align:center;background-size:cover;line-height:40px}ha-state-icon{transition:color .3s ease-in-out}ha-state-icon[data-domain=binary_sensor][data-state=on],ha-state-icon[data-domain=light][data-state=on],ha-state-icon[data-domain=sun][data-state=above_horizon],ha-state-icon[data-domain=switch][data-state=on]{color:#FDD835}ha-state-icon[data-state=unavailable]{color:var(--disabled-text-color)}</style><ha-state-icon id="icon" state-obj="[[stateObj]]" data-domain$="[[stateObj.domain]]" data-state$="[[stateObj.state]]"></ha-state-icon></template></dom-module><script>Polymer({is:"state-badge",properties:{stateObj:{type:Object,observer:"updateIconColor"}},updateIconColor:function(t){return t.attributes.entity_picture?(this.style.backgroundImage="url("+t.attributes.entity_picture+")",void(this.$.icon.style.display="none")):(this.style.backgroundImage="",this.$.icon.style.display="inline",void("light"===t.domain&&"on"===t.state&&t.attributes.rgb_color&&t.attributes.rgb_color.reduce(function(t,e){return t+e},0)<730?this.$.icon.style.color="rgb("+t.attributes.rgb_color.join(",")+")":this.$.icon.style.color=null))}})</script><script>Polymer({is:"ha-relative-time",properties:{datetime:{type:String,observer:"datetimeChanged"},datetimeObj:{type:Object,observer:"datetimeObjChanged"},parsedDateTime:{type:Object}},created:function(){this.updateRelative=this.updateRelative.bind(this)},attached:function(){this.updateInterval=setInterval(this.updateRelative,6e4)},detached:function(){clearInterval(this.updateInterval)},datetimeChanged:function(e){this.parsedDateTime=e?new Date(e):null,this.updateRelative()},datetimeObjChanged:function(e){this.parsedDateTime=e,this.updateRelative()},updateRelative:function(){var e=Polymer.dom(this);e.innerHTML=this.parsedDateTime?window.hassUtil.relativeTime(this.parsedDateTime):"never"}})</script><dom-module id="state-info" assetpath="components/entity/"><template><style>:host{@apply(--paper-font-body1);min-width:150px;white-space:nowrap}state-badge{float:left}.info{margin-left:56px}.name{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);line-height:40px}.name[in-dialog]{line-height:20px}.time-ago{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div><state-badge state-obj="[[stateObj]]"></state-badge><div class="info"><div class="name" in-dialog$="[[inDialog]]">[[stateObj.entityDisplay]]</div><template is="dom-if" if="[[inDialog]]"><div class="time-ago"><ha-relative-time datetime-obj="[[stateObj.lastChangedAsDate]]"></ha-relative-time></div></template></div></div></template></dom-module><script>Polymer({is:"state-info",properties:{detailed:{type:Boolean,value:!1},stateObj:{type:Object},inDialog:{type:Boolean}}})</script><dom-module id="state-card-climate" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{@apply(--paper-font-body1);line-height:1.5}.state{margin-left:16px;text-align:right}.target{color:var(--primary-text-color)}.current{color:var(--secondary-text-color)}.operation-mode{font-weight:700;text-transform:capitalize}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="target"><span class="operation-mode">[[stateObj.attributes.operation_mode]] </span><span>[[computeTargetTemperature(stateObj)]]</span></div><div class="current"><span>Currently: </span><span>[[stateObj.attributes.current_temperature]]</span> <span></span> <span>[[stateObj.attributes.unit_of_measurement]]</span></div></div></div></template></dom-module><script>Polymer({is:"state-card-climate",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeTargetTemperature:function(t){var e="";return t.attributes.target_temp_low&&t.attributes.target_temp_high?e=t.attributes.target_temp_low+" - "+t.attributes.target_temp_high+" "+t.attributes.unit_of_measurement:t.attributes.temperature&&(e=t.attributes.temperature+" "+t.attributes.unit_of_measurement),e}})</script><dom-module id="state-card-configurator" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button hidden$="[[inDialog]]">[[stateObj.state]]</paper-button></div><template is="dom-if" if="[[stateObj.attributes.description_image]]"><img hidden="" src="[[stateObj.attributes.description_image]]"></template></template></dom-module><script>Polymer({is:"state-card-configurator",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-cover" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{text-align:right;white-space:nowrap;width:127px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><paper-icon-button icon="mdi:arrow-up" on-tap="onOpenTap" disabled="[[computeIsFullyOpen(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTap"></paper-icon-button><paper-icon-button icon="mdi:arrow-down" on-tap="onCloseTap" disabled="[[computeIsFullyClosed(stateObj)]]"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"state-card-cover",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},computeIsFullyOpen:function(t){return void 0!==t.attributes.current_position?100===t.attributes.current_position:"open"===t.state},computeIsFullyClosed:function(t){return void 0!==t.attributes.current_position?0===t.attributes.current_position:"closed"===t.state},onOpenTap:function(){this.hass.serviceActions.callService("cover","open_cover",{entity_id:this.stateObj.entityId})},onCloseTap:function(){this.hass.serviceActions.callService("cover","close_cover",{entity_id:this.stateObj.entityId})},onStopTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="state-card-display" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.state{@apply(--paper-font-body1);color:var(--primary-text-color);margin-left:16px;text-align:right;line-height:40px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state">[[stateObj.stateDisplay]]</div></div></template></dom-module><script>Polymer({is:"state-card-display",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.NextLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImpl={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:String},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alwaysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},validator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolean,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},name:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,value:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{type:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_ariaLabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:0},get inputElement(){return this.$.input},get _focusableElement(){return this.inputElement},registered:function(){this._typesThatHaveText=["date","datetime","datetime-local","month","time","week","file"]},attached:function(){this._updateAriaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElement.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t){return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.target;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID++;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focused&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:function(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttribute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),this._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&this.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElement.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputElement.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t){return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).querySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ariaLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEvent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElement,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElement;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</script><dom-module id="paper-input-char-counter" assetpath="../bower_components/paper-input/"><template><style>:host{display:inline-block;float:right;@apply(--paper-font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!important}:host-context([dir=rtl]){float:left}</style><span>[[_charCounterStr]]</span></template></dom-module><script>Polymer({is:"paper-input-char-counter",behaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:String,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</script><dom-module id="paper-input" assetpath="../bower_components/paper-input/"><template><style>:host{display:block}:host([focused]){outline:0}:host([hidden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-placeholder{color:var(--paper-input-container-color,--secondary-text-color)}label{pointer-events:none}</style><paper-input-container no-label-float="[[noLabelFloat]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholder)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[invalid]]"><content select="[prefix]"></content><label hidden$="[[!label]]" aria-hidden="true" for="input">[[label]]</label><input is="iron-input" id="input" aria-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" disabled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{invalid}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowedPattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" required$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$="[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" autocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onChange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]" accept$="[[accept]]" multiple$="[[multiple]]"><content select="[suffix]"></content><template is="dom-if" if="[[errorMessage]]"><paper-input-error aria-live="assertive">[[errorMessage]]</paper-input-error></template><template is="dom-if" if="[[charCounter]]"><paper-input-char-counter></paper-input-char-counter></template></paper-input-container></template></dom-module><script>Polymer({is:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBehavior]})</script><script>Polymer.IronFitBehavior={properties:{sizingTarget:{type:Object,value:function(){return this}},fitInto:{type:Object,value:window},noOverlap:{type:Boolean},positionTarget:{type:Element},horizontalAlign:{type:String},verticalAlign:{type:String},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},autoFitOnAttach:{type:Boolean,value:!1},_fitInfo:{type:Object}},get _fitWidth(){var t;return t=this.fitInto===window?this.fitInto.innerWidth:this.fitInto.getBoundingClientRect().width},get _fitHeight(){var t;return t=this.fitInto===window?this.fitInto.innerHeight:this.fitInto.getBoundingClientRect().height},get _fitLeft(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().left},get _fitTop(){var t;return t=this.fitInto===window?0:this.fitInto.getBoundingClientRect().top},get _defaultPositionTarget(){var t=Polymer.dom(this).parentNode;return t&&t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(t=t.host),t},get _localeHorizontalAlign(){if(this._isRTL){if("right"===this.horizontalAlign)return"left";if("left"===this.horizontalAlign)return"right"}return this.horizontalAlign},attached:function(){this._isRTL="rtl"==window.getComputedStyle(this).direction,this.positionTarget=this.positionTarget||this._defaultPositionTarget,this.autoFitOnAttach&&("none"===window.getComputedStyle(this).display?setTimeout(function(){this.fit()}.bind(this)):this.fit())},fit:function(){this.position(),this.constrain(),this.center()},_discoverInfo:function(){if(!this._fitInfo){var t=window.getComputedStyle(this),i=window.getComputedStyle(this.sizingTarget);this._fitInfo={inlineStyle:{top:this.style.top||"",left:this.style.left||"",position:this.style.position||""},sizerInlineStyle:{maxWidth:this.sizingTarget.style.maxWidth||"",maxHeight:this.sizingTarget.style.maxHeight||"",boxSizing:this.sizingTarget.style.boxSizing||""},positionedBy:{vertically:"auto"!==t.top?"top":"auto"!==t.bottom?"bottom":null,horizontally:"auto"!==t.left?"left":"auto"!==t.right?"right":null},sizedBy:{height:"none"!==i.maxHeight,width:"none"!==i.maxWidth,minWidth:parseInt(i.minWidth,10)||0,minHeight:parseInt(i.minHeight,10)||0},margin:{top:parseInt(t.marginTop,10)||0,right:parseInt(t.marginRight,10)||0,bottom:parseInt(t.marginBottom,10)||0,left:parseInt(t.marginLeft,10)||0}},this.verticalOffset&&(this._fitInfo.margin.top=this._fitInfo.margin.bottom=this.verticalOffset,this._fitInfo.inlineStyle.marginTop=this.style.marginTop||"",this._fitInfo.inlineStyle.marginBottom=this.style.marginBottom||"",this.style.marginTop=this.style.marginBottom=this.verticalOffset+"px"),this.horizontalOffset&&(this._fitInfo.margin.left=this._fitInfo.margin.right=this.horizontalOffset,this._fitInfo.inlineStyle.marginLeft=this.style.marginLeft||"",this._fitInfo.inlineStyle.marginRight=this.style.marginRight||"",this.style.marginLeft=this.style.marginRight=this.horizontalOffset+"px")}},resetFit:function(){var t=this._fitInfo||{};for(var i in t.sizerInlineStyle)this.sizingTarget.style[i]=t.sizerInlineStyle[i];for(var i in t.inlineStyle)this.style[i]=t.inlineStyle[i];this._fitInfo=null},refit:function(){var t=this.sizingTarget.scrollLeft,i=this.sizingTarget.scrollTop;this.resetFit(),this.fit(),this.sizingTarget.scrollLeft=t,this.sizingTarget.scrollTop=i},position:function(){if(this.horizontalAlign||this.verticalAlign){this._discoverInfo(),this.style.position="fixed",this.sizingTarget.style.boxSizing="border-box",this.style.left="0px",this.style.top="0px";var t=this.getBoundingClientRect(),i=this.__getNormalizedRect(this.positionTarget),e=this.__getNormalizedRect(this.fitInto),n=this._fitInfo.margin,o={width:t.width+n.left+n.right,height:t.height+n.top+n.bottom},h=this.__getPosition(this._localeHorizontalAlign,this.verticalAlign,o,i,e),s=h.left+n.left,l=h.top+n.top,r=Math.min(e.right-n.right,s+t.width),a=Math.min(e.bottom-n.bottom,l+t.height),g=this._fitInfo.sizedBy.minWidth,f=this._fitInfo.sizedBy.minHeight;s<n.left&&(s=n.left,r-s<g&&(s=r-g)),l<n.top&&(l=n.top,a-l<f&&(l=a-f)),this.sizingTarget.style.maxWidth=r-s+"px",this.sizingTarget.style.maxHeight=a-l+"px",this.style.left=s-t.left+"px",this.style.top=l-t.top+"px"}},constrain:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo;t.positionedBy.vertically||(this.style.position="fixed",this.style.top="0px"),t.positionedBy.horizontally||(this.style.position="fixed",this.style.left="0px"),this.sizingTarget.style.boxSizing="border-box";var i=this.getBoundingClientRect();t.sizedBy.height||this.__sizeDimension(i,t.positionedBy.vertically,"top","bottom","Height"),t.sizedBy.width||this.__sizeDimension(i,t.positionedBy.horizontally,"left","right","Width")}},_sizeDimension:function(t,i,e,n,o){this.__sizeDimension(t,i,e,n,o)},__sizeDimension:function(t,i,e,n,o){var h=this._fitInfo,s=this.__getNormalizedRect(this.fitInto),l="Width"===o?s.width:s.height,r=i===n,a=r?l-t[n]:t[e],g=h.margin[r?e:n],f="offset"+o,p=this[f]-this.sizingTarget[f];this.sizingTarget.style["max"+o]=l-g-a-p+"px"},center:function(){if(!this.horizontalAlign&&!this.verticalAlign){this._discoverInfo();var t=this._fitInfo.positionedBy;if(!t.vertically||!t.horizontally){this.style.position="fixed",t.vertically||(this.style.top="0px"),t.horizontally||(this.style.left="0px");var i=this.getBoundingClientRect(),e=this.__getNormalizedRect(this.fitInto);if(!t.vertically){var n=e.top-i.top+(e.height-i.height)/2;this.style.top=n+"px"}if(!t.horizontally){var o=e.left-i.left+(e.width-i.width)/2;this.style.left=o+"px"}}}},__getNormalizedRect:function(t){return t===document.documentElement||t===window?{top:0,left:0,width:window.innerWidth,height:window.innerHeight,right:window.innerWidth,bottom:window.innerHeight}:t.getBoundingClientRect()},__getCroppedArea:function(t,i,e){var n=Math.min(0,t.top)+Math.min(0,e.bottom-(t.top+i.height)),o=Math.min(0,t.left)+Math.min(0,e.right-(t.left+i.width));return Math.abs(n)*i.width+Math.abs(o)*i.height},__getPosition:function(t,i,e,n,o){var h=[{verticalAlign:"top",horizontalAlign:"left",top:n.top,left:n.left},{verticalAlign:"top",horizontalAlign:"right",top:n.top,left:n.right-e.width},{verticalAlign:"bottom",horizontalAlign:"left",top:n.bottom-e.height,left:n.left},{verticalAlign:"bottom",horizontalAlign:"right",top:n.bottom-e.height,left:n.right-e.width}];if(this.noOverlap){for(var s=0,l=h.length;s<l;s++){var r={};for(var a in h[s])r[a]=h[s][a];h.push(r)}h[0].top=h[1].top+=n.height,h[2].top=h[3].top-=n.height,h[4].left=h[6].left+=n.width,h[5].left=h[7].left-=n.width}i="auto"===i?null:i,t="auto"===t?null:t;for(var g,s=0;s<h.length;s++){var f=h[s];if(!this.dynamicAlign&&!this.noOverlap&&f.verticalAlign===i&&f.horizontalAlign===t){g=f;break}var p=!(i&&f.verticalAlign!==i||t&&f.horizontalAlign!==t);if(this.dynamicAlign||p){g=g||f,f.croppedArea=this.__getCroppedArea(f,e,o);var d=f.croppedArea-g.croppedArea;if((d<0||0===d&&p)&&(g=f),0===g.croppedArea&&p)break}}return g}}</script><dom-module id="iron-overlay-backdrop" assetpath="/"><template><style>:host{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--iron-overlay-backdrop-background-color,#000);opacity:0;transition:opacity .2s;pointer-events:none;@apply(--iron-overlay-backdrop)}:host(.opened){opacity:var(--iron-overlay-backdrop-opacity,.6);pointer-events:auto;@apply(--iron-overlay-backdrop-opened)}</style><content></content></template></dom-module><script>!function(){"use strict";Polymer({is:"iron-overlay-backdrop",properties:{opened:{reflectToAttribute:!0,type:Boolean,value:!1,observer:"_openedChanged"}},listeners:{transitionend:"_onTransitionend"},created:function(){this.__openedRaf=null},attached:function(){this.opened&&this._openedChanged(this.opened)},prepare:function(){this.opened&&!this.parentNode&&Polymer.dom(document.body).appendChild(this)},open:function(){this.opened=!0},close:function(){this.opened=!1},complete:function(){this.opened||this.parentNode!==document.body||Polymer.dom(this.parentNode).removeChild(this)},_onTransitionend:function(e){e&&e.target===this&&this.complete()},_openedChanged:function(e){if(e)this.prepare();else{var t=window.getComputedStyle(this);"0s"!==t.transitionDuration&&0!=t.opacity||this.complete()}this.isAttached&&(this.__openedRaf&&(window.cancelAnimationFrame(this.__openedRaf),this.__openedRaf=null),this.scrollTop=this.scrollTop,this.__openedRaf=window.requestAnimationFrame(function(){this.__openedRaf=null,this.toggleClass("opened",this.opened)}.bind(this)))}})}()</script><script>Polymer.IronOverlayManagerClass=function(){this._overlays=[],this._minimumZ=101,this._backdropElement=null,Polymer.Gestures.add(document,"tap",this._onCaptureClick.bind(this)),document.addEventListener("focus",this._onCaptureFocus.bind(this),!0),document.addEventListener("keydown",this._onCaptureKeyDown.bind(this),!0)},Polymer.IronOverlayManagerClass.prototype={constructor:Polymer.IronOverlayManagerClass,get backdropElement(){return this._backdropElement||(this._backdropElement=document.createElement("iron-overlay-backdrop")),this._backdropElement},get deepActiveElement(){for(var e=document.activeElement||document.body;e.root&&Polymer.dom(e.root).activeElement;)e=Polymer.dom(e.root).activeElement;return e},_bringOverlayAtIndexToFront:function(e){var t=this._overlays[e];if(t){var r=this._overlays.length-1,a=this._overlays[r];if(a&&this._shouldBeBehindOverlay(t,a)&&r--,!(e>=r)){var n=Math.max(this.currentOverlayZ(),this._minimumZ);for(this._getZ(t)<=n&&this._applyOverlayZ(t,n);e<r;)this._overlays[e]=this._overlays[e+1],e++;this._overlays[r]=t}}},addOrRemoveOverlay:function(e){e.opened?this.addOverlay(e):this.removeOverlay(e)},addOverlay:function(e){var t=this._overlays.indexOf(e);if(t>=0)return this._bringOverlayAtIndexToFront(t),void this.trackBackdrop();var r=this._overlays.length,a=this._overlays[r-1],n=Math.max(this._getZ(a),this._minimumZ),o=this._getZ(e);if(a&&this._shouldBeBehindOverlay(e,a)){this._applyOverlayZ(a,n),r--;var i=this._overlays[r-1];n=Math.max(this._getZ(i),this._minimumZ)}o<=n&&this._applyOverlayZ(e,n),this._overlays.splice(r,0,e),this.trackBackdrop()},removeOverlay:function(e){var t=this._overlays.indexOf(e);t!==-1&&(this._overlays.splice(t,1),this.trackBackdrop())},currentOverlay:function(){var e=this._overlays.length-1;return this._overlays[e]},currentOverlayZ:function(){return this._getZ(this.currentOverlay())},ensureMinimumZ:function(e){this._minimumZ=Math.max(this._minimumZ,e)},focusOverlay:function(){var e=this.currentOverlay();e&&e._applyFocus()},trackBackdrop:function(){var e=this._overlayWithBackdrop();(e||this._backdropElement)&&(this.backdropElement.style.zIndex=this._getZ(e)-1,this.backdropElement.opened=!!e)},getBackdrops:function(){for(var e=[],t=0;t<this._overlays.length;t++)this._overlays[t].withBackdrop&&e.push(this._overlays[t]);return e},backdropZ:function(){return this._getZ(this._overlayWithBackdrop())-1},_overlayWithBackdrop:function(){for(var e=0;e<this._overlays.length;e++)if(this._overlays[e].withBackdrop)return this._overlays[e]},_getZ:function(e){var t=this._minimumZ;if(e){var r=Number(e.style.zIndex||window.getComputedStyle(e).zIndex);r===r&&(t=r)}return t},_setZ:function(e,t){e.style.zIndex=t},_applyOverlayZ:function(e,t){this._setZ(e,t+2)},_overlayInPath:function(e){e=e||[];for(var t=0;t<e.length;t++)if(e[t]._manager===this)return e[t]},_onCaptureClick:function(e){var t=this.currentOverlay();t&&this._overlayInPath(Polymer.dom(e).path)!==t&&t._onCaptureClick(e)},_onCaptureFocus:function(e){var t=this.currentOverlay();t&&t._onCaptureFocus(e)},_onCaptureKeyDown:function(e){var t=this.currentOverlay();t&&(Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"esc")?t._onCaptureEsc(e):Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys(e,"tab")&&t._onCaptureTab(e))},_shouldBeBehindOverlay:function(e,t){return!e.alwaysOnTop&&t.alwaysOnTop}},Polymer.IronOverlayManager=new Polymer.IronOverlayManagerClass</script><script>!function(){"use strict";var e=Element.prototype,t=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;Polymer.IronFocusablesHelper={getTabbableNodes:function(e){var t=[],r=this._collectTabbableNodes(e,t);return r?this._sortByTabIndex(t):t},isFocusable:function(e){return t.call(e,"input, select, textarea, button, object")?t.call(e,":not([disabled])"):t.call(e,"a[href], area[href], iframe, [tabindex], [contentEditable]")},isTabbable:function(e){return this.isFocusable(e)&&t.call(e,':not([tabindex="-1"])')&&this._isVisible(e)},_normalizedTabIndex:function(e){if(this.isFocusable(e)){var t=e.getAttribute("tabindex")||0;return Number(t)}return-1},_collectTabbableNodes:function(e,t){if(e.nodeType!==Node.ELEMENT_NODE||!this._isVisible(e))return!1;var r=e,a=this._normalizedTabIndex(r),i=a>0;a>=0&&t.push(r);var n;n="content"===r.localName?Polymer.dom(r).getDistributedNodes():Polymer.dom(r.root||r).children;for(var o=0;o<n.length;o++){var s=this._collectTabbableNodes(n[o],t);i=i||s}return i},_isVisible:function(e){var t=e.style;return"hidden"!==t.visibility&&"none"!==t.display&&(t=window.getComputedStyle(e),"hidden"!==t.visibility&&"none"!==t.display)},_sortByTabIndex:function(e){var t=e.length;if(t<2)return e;var r=Math.ceil(t/2),a=this._sortByTabIndex(e.slice(0,r)),i=this._sortByTabIndex(e.slice(r));return this._mergeSortByTabIndex(a,i)},_mergeSortByTabIndex:function(e,t){for(var r=[];e.length>0&&t.length>0;)this._hasLowerTabOrder(e[0],t[0])?r.push(t.shift()):r.push(e.shift());return r.concat(e,t)},_hasLowerTabOrder:function(e,t){var r=Math.max(e.tabIndex,0),a=Math.max(t.tabIndex,0);return 0===r||0===a?a>r:r>a}}}()</script><script>!function(){"use strict";Polymer.IronOverlayBehaviorImpl={properties:{opened:{observer:"_openedChanged",type:Boolean,value:!1,notify:!0},canceled:{observer:"_canceledChanged",readOnly:!0,type:Boolean,value:!1},withBackdrop:{observer:"_withBackdropChanged",type:Boolean},noAutoFocus:{type:Boolean,value:!1},noCancelOnEscKey:{type:Boolean,value:!1},noCancelOnOutsideClick:{type:Boolean,value:!1},closingReason:{type:Object},restoreFocusOnClose:{type:Boolean,value:!1},alwaysOnTop:{type:Boolean},_manager:{type:Object,value:Polymer.IronOverlayManager},_focusedChild:{type:Object}},listeners:{"iron-resize":"_onIronResize"},get backdropElement(){return this._manager.backdropElement},get _focusNode(){return this._focusedChild||Polymer.dom(this).querySelector("[autofocus]")||this},get _focusableNodes(){return Polymer.IronFocusablesHelper.getTabbableNodes(this)},ready:function(){this.__isAnimating=!1,this.__shouldRemoveTabIndex=!1,this.__firstFocusableNode=this.__lastFocusableNode=null,this.__raf=null,this.__restoreFocusNode=null,this._ensureSetup()},attached:function(){this.opened&&this._openedChanged(this.opened),this._observer=Polymer.dom(this).observeNodes(this._onNodesChange)},detached:function(){Polymer.dom(this).unobserveNodes(this._observer),this._observer=null,this.__raf&&(window.cancelAnimationFrame(this.__raf),this.__raf=null),this._manager.removeOverlay(this)},toggle:function(){this._setCanceled(!1),this.opened=!this.opened},open:function(){this._setCanceled(!1),this.opened=!0},close:function(){this._setCanceled(!1),this.opened=!1},cancel:function(e){var t=this.fire("iron-overlay-canceled",e,{cancelable:!0});t.defaultPrevented||(this._setCanceled(!0),this.opened=!1)},invalidateTabbables:function(){this.__firstFocusableNode=this.__lastFocusableNode=null},_ensureSetup:function(){this._overlaySetup||(this._overlaySetup=!0,this.style.outline="none",this.style.display="none")},_openedChanged:function(e){e?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidden","true"),this.isAttached&&(this.__isAnimating=!0,this.__onNextAnimationFrame(this.__openedChanged))},_canceledChanged:function(){this.closingReason=this.closingReason||{},this.closingReason.canceled=this.canceled},_withBackdropChanged:function(){this.withBackdrop&&!this.hasAttribute("tabindex")?(this.setAttribute("tabindex","-1"),this.__shouldRemoveTabIndex=!0):this.__shouldRemoveTabIndex&&(this.removeAttribute("tabindex"),this.__shouldRemoveTabIndex=!1),this.opened&&this.isAttached&&this._manager.trackBackdrop()},_prepareRenderOpened:function(){this.__restoreFocusNode=this._manager.deepActiveElement,this._preparePositioning(),this.refit(),this._finishPositioning(),this.noAutoFocus&&document.activeElement===this._focusNode&&(this._focusNode.blur(),this.__restoreFocusNode.focus())},_renderOpened:function(){this._finishRenderOpened()},_renderClosed:function(){this._finishRenderClosed()},_finishRenderOpened:function(){this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-opened")},_finishRenderClosed:function(){this.style.display="none",this.style.zIndex="",this.notifyResize(),this.__isAnimating=!1,this.fire("iron-overlay-closed",this.closingReason)},_preparePositioning:function(){this.style.transition=this.style.webkitTransition="none",this.style.transform=this.style.webkitTransform="none",this.style.display=""},_finishPositioning:function(){this.style.display="none",this.scrollTop=this.scrollTop,this.style.transition=this.style.webkitTransition="",this.style.transform=this.style.webkitTransform="",this.style.display="",this.scrollTop=this.scrollTop},_applyFocus:function(){if(this.opened)this.noAutoFocus||this._focusNode.focus();else{this._focusNode.blur(),this._focusedChild=null,this.restoreFocusOnClose&&this.__restoreFocusNode&&this.__restoreFocusNode.focus(),this.__restoreFocusNode=null;var e=this._manager.currentOverlay();e&&this!==e&&e._applyFocus()}},_onCaptureClick:function(e){this.noCancelOnOutsideClick||this.cancel(e)},_onCaptureFocus:function(e){if(this.withBackdrop){var t=Polymer.dom(e).path;t.indexOf(this)===-1?(e.stopPropagation(),this._applyFocus()):this._focusedChild=t[0]}},_onCaptureEsc:function(e){this.noCancelOnEscKey||this.cancel(e)},_onCaptureTab:function(e){if(this.withBackdrop){this.__ensureFirstLastFocusables();var t=e.shiftKey,i=t?this.__firstFocusableNode:this.__lastFocusableNode,s=t?this.__lastFocusableNode:this.__firstFocusableNode,o=!1;if(i===s)o=!0;else{var n=this._manager.deepActiveElement;o=n===i||n===this}o&&(e.preventDefault(),this._focusedChild=s,this._applyFocus())}},_onIronResize:function(){this.opened&&!this.__isAnimating&&this.__onNextAnimationFrame(this.refit)},_onNodesChange:function(){this.opened&&!this.__isAnimating&&(this.invalidateTabbables(),this.notifyResize())},__ensureFirstLastFocusables:function(){if(!this.__firstFocusableNode||!this.__lastFocusableNode){var e=this._focusableNodes;this.__firstFocusableNode=e[0],this.__lastFocusableNode=e[e.length-1]}},__openedChanged:function(){this.opened?(this._prepareRenderOpened(),this._manager.addOverlay(this),this._applyFocus(),this._renderOpened()):(this._manager.removeOverlay(this),this._applyFocus(),this._renderClosed())},__onNextAnimationFrame:function(e){this.__raf&&window.cancelAnimationFrame(this.__raf);var t=this;this.__raf=window.requestAnimationFrame(function(){t.__raf=null,e.call(t)})}},Polymer.IronOverlayBehavior=[Polymer.IronFitBehavior,Polymer.IronResizableBehavior,Polymer.IronOverlayBehaviorImpl]}()</script><script>Polymer.NeonAnimatableBehavior={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnimationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:String}},_entryAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exitAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:function(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t){if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this.animationConfig.value)return void this._warn(this._logf("playAnimation","Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Array.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._getAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClone||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimationConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script><script>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name);if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.cancel&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.complete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnimation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._active||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),delete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(this)}},cancelAnimation:function(){for(var n in this._animations)this._animations[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script><script>Polymer.NeonAnimationBehavior={properties:{animationTiming:{type:Object,value:function(){return{duration:500,easing:"cubic-bezier(0.4, 0, 0.2, 1)",fill:"both"}}}},isNeonAnimation:!0,timingFromConfig:function(i){if(i.timing)for(var n in i.timing)this.animationTiming[n]=i.timing[n];return this.animationTiming},setPrefixedProperty:function(i,n,r){for(var t,o={transform:["webkitTransform"],transformOrigin:["mozTransformOrigin","webkitTransformOrigin"]},e=o[n],m=0;t=e[m];m++)i.style[t]=r;i.style[n]=r},complete:function(){}}</script><script>!function(a,b){var c={},d={},e={},f=null;!function(t,e){function i(t){if("number"==typeof t)return t;var e={};for(var i in t)e[i]=t[i];return e}function n(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=E}function r(){return t.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function o(e,i,r){var o=new n;return i&&(o.fill="both",o.duration="auto"),"number"!=typeof e||isNaN(e)?void 0!==e&&Object.getOwnPropertyNames(e).forEach(function(i){if("auto"!=e[i]){if(("number"==typeof o[i]||"duration"==i)&&("number"!=typeof e[i]||isNaN(e[i])))return;if("fill"==i&&w.indexOf(e[i])==-1)return;if("direction"==i&&T.indexOf(e[i])==-1)return;if("playbackRate"==i&&1!==e[i]&&t.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;o[i]=e[i]}}):o.duration=e,o}function a(t){return"number"==typeof t&&(t=isNaN(t)?{duration:0}:{duration:t}),t}function s(e,i){return e=t.numericTimingToObject(e),o(e,i)}function u(t,e,i,n){return t<0||t>1||i<0||i>1?E:function(r){function o(t,e,i){return 3*t*(1-i)*(1-i)*i+3*e*(1-i)*i*i+i*i*i}if(r<=0){var a=0;return t>0?a=e/t:!e&&i>0&&(a=n/i),a*r}if(r>=1){var s=0;return i<1?s=(n-1)/(i-1):1==i&&t<1&&(s=(e-1)/(t-1)),1+s*(r-1)}for(var u=0,c=1;u<c;){var f=(u+c)/2,l=o(t,i,f);if(Math.abs(r-l)<1e-5)return o(e,n,f);l<r?u=f:c=f}return o(e,n,f)}}function c(t,e){return function(i){if(i>=1)return 1;var n=1/t;return i+=e*n,i-i%n}}function f(t){R||(R=document.createElement("div").style),R.animationTimingFunction="",R.animationTimingFunction=t;var e=R.animationTimingFunction;if(""==e&&r())throw new TypeError(t+" is not a valid value for easing");return e}function l(t){if("linear"==t)return E;var e=O.exec(t);if(e)return u.apply(this,e.slice(1).map(Number));var i=k.exec(t);if(i)return c(Number(i[1]),{start:x,middle:A,end:P}[i[2]]);var n=j[t];return n?n:E}function h(t){return Math.abs(m(t)/t.playbackRate)}function m(t){return 0===t.duration||0===t.iterations?0:t.duration*t.iterations}function d(t,e,i){if(null==e)return S;var n=i.delay+t+i.endDelay;return e<Math.min(i.delay,n)?C:e>=Math.min(i.delay+t,n)?D:F}function p(t,e,i,n,r){switch(n){case C:return"backwards"==e||"both"==e?0:null;case F:return i-r;case D:return"forwards"==e||"both"==e?t:null;case S:return null}}function _(t,e,i,n,r){var o=r;return 0===t?e!==C&&(o+=i):o+=n/t,o}function g(t,e,i,n,r,o){var a=t===1/0?e%1:t%1;return 0!==a||i!==D||0===n||0===r&&0!==o||(a=1),a}function b(t,e,i,n){return t===D&&e===1/0?1/0:1===i?Math.floor(n)-1:Math.floor(n)}function v(t,e,i){var n=t;if("normal"!==t&&"reverse"!==t){var r=e;"alternate-reverse"===t&&(r+=1),n="normal",r!==1/0&&r%2!==0&&(n="reverse")}return"normal"===n?i:1-i}function y(t,e,i){var n=d(t,e,i),r=p(t,i.fill,e,n,i.delay);if(null===r)return null;var o=_(i.duration,n,i.iterations,r,i.iterationStart),a=g(o,i.iterationStart,n,i.iterations,r,i.duration),s=b(n,i.iterations,a,o),u=v(i.direction,s,a);return i._easingFunction(u)}var w="backwards|forwards|both|none".split("|"),T="reverse|alternate|alternate-reverse".split("|"),E=function(t){return t};n.prototype={_setMember:function(e,i){this["_"+e]=i,this._effect&&(this._effect._timingInput[e]=i,this._effect._timing=t.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=t.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(t){this._setMember("delay",t)},get delay(){return this._delay},set endDelay(t){this._setMember("endDelay",t)},get endDelay(){return this._endDelay},set fill(t){this._setMember("fill",t)},get fill(){return this._fill},set iterationStart(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",t)},get iterationStart(){return this._iterationStart},set duration(t){if("auto"!=t&&(isNaN(t)||t<0)&&r())throw new TypeError("duration must be non-negative or auto, received: "+t);this._setMember("duration",t)},get duration(){return this._duration},set direction(t){this._setMember("direction",t)},get direction(){return this._direction},set easing(t){this._easingFunction=l(f(t)),this._setMember("easing",t)},get easing(){return this._easing},set iterations(t){if((isNaN(t)||t<0)&&r())throw new TypeError("iterations must be non-negative, received: "+t);this._setMember("iterations",t)},get iterations(){return this._iterations}};var x=1,A=.5,P=0,j={ease:u(.25,.1,.25,1),"ease-in":u(.42,0,1,1),"ease-out":u(0,0,.58,1),"ease-in-out":u(.42,0,.58,1),"step-start":c(1,x),"step-middle":c(1,A),"step-end":c(1,P)},R=null,N="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",O=new RegExp("cubic-bezier\\("+N+","+N+","+N+","+N+"\\)"),k=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,S=0,C=1,D=2,F=3;t.cloneTimingInput=i,t.makeTiming=o,t.numericTimingToObject=a,t.normalizeTimingInput=s,t.calculateActiveDuration=h,t.calculateIterationProgress=y,t.calculatePhase=d,t.normalizeEasing=f,t.parseEasingFunction=l}(c,f),function(t,e){function i(t,e){return t in f?f[t][e]||e:e}function n(t){return"display"===t||0===t.lastIndexOf("animation",0)||0===t.lastIndexOf("transition",0)}function r(t,e,r){if(!n(t)){var o=s[t];if(o){u.style[t]=e;for(var a in o){var c=o[a],f=u.style[c];r[c]=i(c,f)}}else r[t]=i(t,e)}}function o(t){var e=[];for(var i in t)if(!(i in["easing","offset","composite"])){var n=t[i];Array.isArray(n)||(n=[n]);for(var r,o=n.length,a=0;a<o;a++)r={},"offset"in t?r.offset=t.offset:1==o?r.offset=1:r.offset=a/(o-1),"easing"in t&&(r.easing=t.easing),"composite"in t&&(r.composite=t.composite),r[i]=n[a],e.push(r)}return e.sort(function(t,e){return t.offset-e.offset}),e}function a(e){function i(){var t=n.length;null==n[t-1].offset&&(n[t-1].offset=1),t>1&&null==n[0].offset&&(n[0].offset=0);for(var e=0,i=n[0].offset,r=1;r<t;r++){var o=n[r].offset;if(null!=o){for(var a=1;a<r-e;a++)n[e+a].offset=i+(o-i)*a/(r-e);e=r,i=o}}}if(null==e)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||(e=o(e));for(var n=e.map(function(e){var i={};for(var n in e){var o=e[n];if("offset"==n){if(null!=o){if(o=Number(o),!isFinite(o))throw new TypeError("Keyframe offsets must be numbers.");if(o<0||o>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==n){if("add"==o||"accumulate"==o)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=o)throw new TypeError("Invalid composite mode "+o+".")}else o="easing"==n?t.normalizeEasing(o):""+o;r(n,o,i)}return void 0==i.offset&&(i.offset=null),void 0==i.easing&&(i.easing="linear"),i}),a=!0,s=-(1/0),u=0;u<n.length;u++){var c=n[u].offset;if(null!=c){if(c<s)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");s=c}else a=!1}return n=n.filter(function(t){return t.offset>=0&&t.offset<=1}),a||i(),n}var s={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},u=document.createElementNS("http://www.w3.org/1999/xhtml","div"),c={thin:"1px",medium:"3px",thick:"5px"},f={borderBottomWidth:c,borderLeftWidth:c,borderRightWidth:c,borderTopWidth:c,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:c,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};t.convertToArrayForm=o,t.normalizeKeyframes=a}(c,f),function(t){var e={};t.isDeprecated=function(t,i,n,r){var o=r?"are":"is",a=new Date,s=new Date(i);return s.setMonth(s.getMonth()+3),!(a<s&&(t in e||console.warn("Web Animations: "+t+" "+o+" deprecated and will stop working on "+s.toDateString()+". "+n),e[t]=!0,1))},t.deprecated=function(e,i,n,r){var o=r?"are":"is";if(t.isDeprecated(e,i,n,r))throw new Error(e+" "+o+" no longer supported. "+n)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(t){void 0===a[t]&&(b=!0)})),!b)return}!function(t,e,i){function n(t){for(var e={},i=0;i<t.length;i++)for(var n in t[i])if("offset"!=n&&"easing"!=n&&"composite"!=n){var r={offset:t[i].offset,easing:t[i].easing,value:t[i][n]};e[n]=e[n]||[],e[n].push(r)}for(var o in e){var a=e[o];if(0!=a[0].offset||1!=a[a.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return e}function r(i){var n=[];for(var r in i)for(var o=i[r],a=0;a<o.length-1;a++){var s=a,u=a+1,c=o[s].offset,f=o[u].offset,l=c,h=f;0==a&&(l=-(1/0),0==f&&(u=s)),a==o.length-2&&(h=1/0,1==c&&(s=u)),n.push({applyFrom:l,applyTo:h,startOffset:o[s].offset,endOffset:o[u].offset,easingFunction:t.parseEasingFunction(o[s].easing),property:r,interpolation:e.propertyInterpolation(r,o[s].value,o[u].value)})}return n.sort(function(t,e){return t.startOffset-e.startOffset}),n}e.convertEffectInput=function(i){var o=t.normalizeKeyframes(i),a=n(o),s=r(a);return function(t,i){if(null!=i)s.filter(function(t){return i>=t.applyFrom&&i<t.applyTo}).forEach(function(n){var r=i-n.startOffset,o=n.endOffset-n.startOffset,a=0==o?0:n.easingFunction(r/o);e.apply(t,n.property,n.interpolation(a))});else for(var n in a)"offset"!=n&&"easing"!=n&&"composite"!=n&&e.clear(t,n)}}}(c,d,f),function(t,e,i){function n(t){return t.replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function r(t,e,i){s[i]=s[i]||[],s[i].push([t,e])}function o(t,e,i){for(var o=0;o<i.length;o++){var a=i[o];r(t,e,n(a))}}function a(i,r,o){var a=i;/-/.test(i)&&!t.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(a=n(i)),"initial"!=r&&"initial"!=o||("initial"==r&&(r=u[a]),"initial"==o&&(o=u[a]));for(var c=r==o?[]:s[a],f=0;c&&f<c.length;f++){var l=c[f][0](r),h=c[f][0](o);if(void 0!==l&&void 0!==h){var m=c[f][1](l,h);if(m){var d=e.Interpolation.apply(null,m);return function(t){return 0==t?r:1==t?o:d(t)}}}}return e.Interpolation(!1,!0,function(t){return t?o:r})}var s={};e.addPropertiesHandler=o;var u={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};e.propertyInterpolation=a}(c,d,f),function(t,e,i){function n(e){var i=t.calculateActiveDuration(e),n=function(n){return t.calculateIterationProgress(i,n,e)};return n._totalDuration=e.delay+i+e.endDelay,n}e.KeyframeEffect=function(i,r,o,a){var s,u=n(t.normalizeTimingInput(o)),c=e.convertEffectInput(r),f=function(){c(i,s)};return f._update=function(t){return s=u(t),null!==s},f._clear=function(){c(i,null)},f._hasSameTarget=function(t){return i===t},f._target=i,f._totalDuration=u._totalDuration,f._id=a,f},e.NullEffect=function(t){var e=function(){t&&(t(),t=null)};return e._update=function(){return null},e._totalDuration=0,e._hasSameTarget=function(){return!1},e}}(c,d,f),function(t,e){t.apply=function(e,i,n){e.style[t.propertyName(i)]=n},t.clear=function(e,i){e.style[t.propertyName(i)]=""}}(d,f),function(t){window.Element.prototype.animate=function(e,i){var n="";return i&&i.id&&(n=i.id),t.timeline._play(t.KeyframeEffect(this,e,i,n))}}(d),function(t,e){function i(t,e,n){if("number"==typeof t&&"number"==typeof e)return t*(1-n)+e*n;if("boolean"==typeof t&&"boolean"==typeof e)return n<.5?t:e;if(t.length==e.length){for(var r=[],o=0;o<t.length;o++)r.push(i(t[o],e[o],n));return r}throw"Mismatched interpolation arguments "+t+":"+e}t.Interpolation=function(t,e,n){return function(r){return n(i(t,e,r))}}}(d,f),function(t,e,i){t.sequenceNumber=0;var n=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};e.Animation=function(e){this.id="",e&&e._id&&(this.id=e._id),this._sequenceNumber=t.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=e,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},e.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,e.timeline._animations.push(this))},_tickCurrentTime:function(t,e){t!=this._currentTime&&(this._currentTime=t,this._isFinished&&!e&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(t){t=+t,isNaN(t)||(e.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-t/this._playbackRate),this._currentTimePending=!1,this._currentTime!=t&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(t,!0),e.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(t){t=+t,isNaN(t)||this._paused||this._idle||(this._startTime=t,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),e.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(t){if(t!=this._playbackRate){var i=this.currentTime;this._playbackRate=t,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)),null!=i&&(this.currentTime=i)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),e.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,e.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),e.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(t,e){"function"==typeof e&&"finish"==t&&this._finishHandlers.push(e)},removeEventListener:function(t,e){if("finish"==t){var i=this._finishHandlers.indexOf(e);i>=0&&this._finishHandlers.splice(i,1)}},_fireEvents:function(t){if(this._isFinished){if(!this._finishedFlag){var e=new n(this,this._currentTime,t),i=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){i.forEach(function(t){t.call(e.target,e)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(t,e){this._idle||this._paused||(null==this._startTime?e&&(this.startTime=t-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((t-this._startTime)*this.playbackRate)),e&&(this._currentTimePending=!1,this._fireEvents(t))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var t=this._effect._target;return t._activeAnimations||(t._activeAnimations=[]),t._activeAnimations},_markTarget:function(){var t=this._targetAnimations();t.indexOf(this)===-1&&t.push(this)},_unmarkTarget:function(){var t=this._targetAnimations(),e=t.indexOf(this);e!==-1&&t.splice(e,1)}}}(c,d,f),function(t,e,i){function n(t){var e=c;c=[],t<_.currentTime&&(t=_.currentTime),_._animations.sort(r),_._animations=s(t,!0,_._animations)[0],e.forEach(function(e){e[1](t)}),a(),l=void 0}function r(t,e){return t._sequenceNumber-e._sequenceNumber}function o(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function a(){d.forEach(function(t){t()}),d.length=0}function s(t,i,n){p=!0,m=!1;var r=e.timeline;r.currentTime=t,h=!1;var o=[],a=[],s=[],u=[];return n.forEach(function(e){e._tick(t,i),e._inEffect?(a.push(e._effect),e._markTarget()):(o.push(e._effect),e._unmarkTarget()),e._needsTick&&(h=!0);var n=e._inEffect||e._needsTick;e._inTimeline=n,n?s.push(e):u.push(e)}),d.push.apply(d,o),d.push.apply(d,a),h&&requestAnimationFrame(function(){}),p=!1,[s,u]}var u=window.requestAnimationFrame,c=[],f=0;window.requestAnimationFrame=function(t){var e=f++;return 0==c.length&&u(n),c.push([e,t]),e},window.cancelAnimationFrame=function(t){c.forEach(function(e){e[0]==t&&(e[1]=function(){})})},o.prototype={_play:function(i){i._timing=t.normalizeTimingInput(i.timing);var n=new e.Animation(i);return n._idle=!1,n._timeline=this,this._animations.push(n),e.restart(),e.applyDirtiedAnimation(n),n}};var l=void 0,h=!1,m=!1;e.restart=function(){return h||(h=!0,requestAnimationFrame(function(){}),m=!0),m},e.applyDirtiedAnimation=function(t){if(!p){t._markTarget();var i=t._targetAnimations();i.sort(r);var n=s(e.timeline.currentTime,!1,i.slice())[1];n.forEach(function(t){var e=_._animations.indexOf(t);e!==-1&&_._animations.splice(e,1)}),a()}};var d=[],p=!1,_=new o;e.timeline=_}(c,d,f),function(t){function e(t,e){var i=t.exec(e);if(i)return i=t.ignoreCase?i[0].toLowerCase():i[0],[i,e.substr(i.length)]}function i(t,e){e=e.replace(/^\s*/,"");var i=t(e);if(i)return[i[0],i[1].replace(/^\s*/,"")]}function n(t,n,r){t=i.bind(null,t);for(var o=[];;){var a=t(r);if(!a)return[o,r];if(o.push(a[0]),r=a[1],a=e(n,r),!a||""==a[1])return[o,r];r=a[1]}}function r(t,e){for(var i=0,n=0;n<e.length&&(!/\s|,/.test(e[n])||0!=i);n++)if("("==e[n])i++;else if(")"==e[n]&&(i--,0==i&&n++,i<=0))break;var r=t(e.substr(0,n));return void 0==r?void 0:[r,e.substr(n)]}function o(t,e){for(var i=t,n=e;i&&n;)i>n?i%=n:n%=i;return i=t*e/(i+n)}function a(t){return function(e){var i=t(e);return i&&(i[0]=void 0),i}}function s(t,e){return function(i){var n=t(i);return n?n:[e,i]}}function u(e,i){for(var n=[],r=0;r<e.length;r++){var o=t.consumeTrimmed(e[r],i);if(!o||""==o[0])return;void 0!==o[0]&&n.push(o[0]),i=o[1]}if(""==i)return n}function c(t,e,i,n,r){for(var a=[],s=[],u=[],c=o(n.length,r.length),f=0;f<c;f++){var l=e(n[f%n.length],r[f%r.length]);if(!l)return;a.push(l[0]),s.push(l[1]),u.push(l[2])}return[a,s,function(e){var n=e.map(function(t,e){return u[e](t)}).join(i);return t?t(n):n}]}function f(t,e,i){for(var n=[],r=[],o=[],a=0,s=0;s<i.length;s++)if("function"==typeof i[s]){var u=i[s](t[a],e[a++]);n.push(u[0]),r.push(u[1]),o.push(u[2])}else!function(t){n.push(!1),r.push(!1),o.push(function(){return i[t]})}(s);return[n,r,function(t){for(var e="",i=0;i<t.length;i++)e+=o[i](t[i]);return e}]}t.consumeToken=e,t.consumeTrimmed=i,t.consumeRepeated=n,t.consumeParenthesised=r,t.ignore=a,t.optional=s,t.consumeList=u,t.mergeNestedRepeated=c.bind(null,null),t.mergeWrappedNestedRepeated=c,t.mergeList=f}(d),function(t){function e(e){function i(e){var i=t.consumeToken(/^inset/i,e);if(i)return n.inset=!0,i;var i=t.consumeLengthOrPercent(e);if(i)return n.lengths.push(i[0]),i;var i=t.consumeColor(e);return i?(n.color=i[0],i):void 0}var n={inset:!1,lengths:[],color:null},r=t.consumeRepeated(i,/^/,e);if(r&&r[0].length)return[n,r[1]]}function i(i){var n=t.consumeRepeated(e,/^,/,i);if(n&&""==n[1])return n[0]}function n(e,i){for(;e.lengths.length<Math.max(e.lengths.length,i.lengths.length);)e.lengths.push({px:0});for(;i.lengths.length<Math.max(e.lengths.length,i.lengths.length);)i.lengths.push({px:0});if(e.inset==i.inset&&!!e.color==!!i.color){for(var n,r=[],o=[[],0],a=[[],0],s=0;s<e.lengths.length;s++){var u=t.mergeDimensions(e.lengths[s],i.lengths[s],2==s);o[0].push(u[0]),a[0].push(u[1]),r.push(u[2])}if(e.color&&i.color){var c=t.mergeColors(e.color,i.color);o[1]=c[0],a[1]=c[1],n=c[2]}return[o,a,function(t){for(var i=e.inset?"inset ":" ",o=0;o<r.length;o++)i+=r[o](t[0][o])+" ";return n&&(i+=n(t[1])),i}]}}function r(e,i,n,r){function o(t){return{inset:t,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var a=[],s=[],u=0;u<n.length||u<r.length;u++){var c=n[u]||o(r[u].inset),f=r[u]||o(n[u].inset);a.push(c),s.push(f)}return t.mergeNestedRepeated(e,i,a,s)}var o=r.bind(null,n,", ");t.addPropertiesHandler(i,o,["box-shadow","text-shadow"])}(d),function(t,e){function i(t){return t.toFixed(3).replace(".000","")}function n(t,e,i){return Math.min(e,Math.max(t,i))}function r(t){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(t))return Number(t)}function o(t,e){return[t,e,i]}function a(t,e){if(0!=t)return u(0,1/0)(t,e)}function s(t,e){return[t,e,function(t){return Math.round(n(1,1/0,t))}]}function u(t,e){return function(r,o){return[r,o,function(r){return i(n(t,e,r))}]}}function c(t,e){return[t,e,Math.round]}t.clamp=n,t.addPropertiesHandler(r,u(0,1/0),["border-image-width","line-height"]),t.addPropertiesHandler(r,u(0,1),["opacity","shape-image-threshold"]),t.addPropertiesHandler(r,a,["flex-grow","flex-shrink"]),t.addPropertiesHandler(r,s,["orphans","widows"]),t.addPropertiesHandler(r,c,["z-index"]),t.parseNumber=r,t.mergeNumbers=o,t.numberToString=i}(d,f),function(t,e){function i(t,e){if("visible"==t||"visible"==e)return[0,1,function(i){return i<=0?t:i>=1?e:"visible"}]}t.addPropertiesHandler(String,i,["visibility"])}(d),function(t,e){function i(t){t=t.trim(),o.fillStyle="#000",o.fillStyle=t;var e=o.fillStyle;if(o.fillStyle="#fff",o.fillStyle=t,e==o.fillStyle){o.fillRect(0,0,1,1);var i=o.getImageData(0,0,1,1).data;o.clearRect(0,0,1,1);var n=i[3]/255;return[i[0]*n,i[1]*n,i[2]*n,n]}}function n(e,i){return[e,i,function(e){function i(t){return Math.max(0,Math.min(255,t))}if(e[3])for(var n=0;n<3;n++)e[n]=Math.round(i(e[n]/e[3]));return e[3]=t.numberToString(t.clamp(0,1,e[3])),"rgba("+e.join(",")+")"}]}var r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");r.width=r.height=1;var o=r.getContext("2d");t.addPropertiesHandler(i,n,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),t.consumeColor=t.consumeParenthesised.bind(null,i),t.mergeColors=n}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(t){return c[t]=null,"U"+t});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(t,i){return e(t,i,!0)}function e(t,e,i){var n,r=[];for(n in t)r.push(n);for(n in e)r.indexOf(n)<0&&r.push(n);return t=r.map(function(e){return t[e]||0}),e=r.map(function(t){return e[t]||0}),[t,e,function(t){var e=t.map(function(e,n){return 1==t.length&&i&&(e=Math.max(e,0)),a.numberToString(e)+r[n]}).join(" + ");return t.length>1?"calc("+e+")":e}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(t){var e=l(t);if(e&&""==e[1])return e[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(t,e){function i(e){return t.consumeLengthOrPercent(e)||t.consumeToken(/^auto/,e)}function n(e){var n=t.consumeList([t.ignore(t.consumeToken.bind(null,/^rect/)),t.ignore(t.consumeToken.bind(null,/^\(/)),t.consumeRepeated.bind(null,i,/^,/),t.ignore(t.consumeToken.bind(null,/^\)/))],e);if(n&&4==n[0].length)return n[0]}function r(e,i){return"auto"==e||"auto"==i?[!0,!1,function(n){var r=n?e:i;if("auto"==r)return"auto";var o=t.mergeDimensions(r,r);return o[2](o[0])}]:t.mergeDimensions(e,i)}function o(t){return"rect("+t+")"}var a=t.mergeWrappedNestedRepeated.bind(null,o,r,", ");t.parseBox=n,t.mergeBoxes=a,t.addPropertiesHandler(n,a,["clip"])}(d,f),function(t,e){function i(t){return function(e){var i=0;return t.map(function(t){return t===f?e[i++]:t})}}function n(t){return t}function r(e){if(e=e.toLowerCase().trim(),"none"==e)return[];for(var i,n=/\s*(\w+)\(([^)]*)\)/g,r=[],o=0;i=n.exec(e);){if(i.index!=o)return;o=i.index+i[0].length;var a=i[1],s=m[a];if(!s)return;var u=i[2].split(","),c=s[0];if(c.length<u.length)return;for(var f=[],d=0;d<c.length;d++){var p,_=u[d],g=c[d];if(p=_?{A:function(e){return"0"==e.trim()?h:t.parseAngle(e)},N:t.parseNumber,T:t.parseLengthOrPercent,L:t.parseLength}[g.toUpperCase()](_):{a:h,n:f[0],t:l}[g],void 0===p)return;f.push(p)}if(r.push({t:a,d:f}),n.lastIndex==e.length)return r}}function o(t){return t.toFixed(6).replace(".000000","")}function a(e,i){if(e.decompositionPair!==i){e.decompositionPair=i;var n=t.makeMatrixDecomposition(e)}if(i.decompositionPair!==e){i.decompositionPair=e;var r=t.makeMatrixDecomposition(i)}return null==n[0]||null==r[0]?[[!1],[!0],function(t){return t?i[0].d:e[0].d}]:(n[0].push(0),r[0].push(1),[n,r,function(e){var i=t.quat(n[0][3],r[0][3],e[5]),a=t.composeMatrix(e[0],e[1],e[2],i,e[4]),s=a.map(o).join(",");return s}])}function s(t){return t.replace(/[xy]/,"")}function u(t){return t.replace(/(x|y|z|3d)?$/,"3d")}function c(e,i){var n=t.makeMatrixDecomposition&&!0,r=!1;if(!e.length||!i.length){e.length||(r=!0,e=i,i=[]);for(var o=0;o<e.length;o++){var c=e[o].t,f=e[o].d,l="scale"==c.substr(0,5)?1:0;i.push({t:c,d:f.map(function(t){if("number"==typeof t)return l;var e={};for(var i in t)e[i]=l;return e})})}}var h=function(t,e){return"perspective"==t&&"perspective"==e||("matrix"==t||"matrix3d"==t)&&("matrix"==e||"matrix3d"==e)},d=[],p=[],_=[];if(e.length!=i.length){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]]}else for(var o=0;o<e.length;o++){var c,b=e[o].t,v=i[o].t,y=e[o].d,w=i[o].d,T=m[b],E=m[v];if(h(b,v)){if(!n)return;var g=a([e[o]],[i[o]]);d.push(g[0]),p.push(g[1]),_.push(["matrix",[g[2]]])}else{if(b==v)c=b;else if(T[2]&&E[2]&&s(b)==s(v))c=s(b),y=T[2](y),w=E[2](w);else{if(!T[1]||!E[1]||u(b)!=u(v)){if(!n)return;var g=a(e,i);d=[g[0]],p=[g[1]],_=[["matrix",[g[2]]]];break}c=u(b),y=T[1](y),w=E[1](w)}for(var x=[],A=[],P=[],j=0;j<y.length;j++){var R="number"==typeof y[j]?t.mergeNumbers:t.mergeDimensions,g=R(y[j],w[j]);x[j]=g[0],A[j]=g[1],P.push(g[2])}d.push(x),p.push(A),_.push([c,P])}}if(r){var N=d;d=p,p=N}return[d,p,function(t){return t.map(function(t,e){var i=t.map(function(t,i){return _[e][1][i](t)}).join(",");return"matrix"==_[e][0]&&16==i.split(",").length&&(_[e][0]="matrix3d"),_[e][0]+"("+i+")"}).join(" ")}]}var f=null,l={px:0},h={deg:0},m={matrix:["NNNNNN",[f,f,0,0,f,f,0,0,0,0,1,0,f,f,0,1],n],matrix3d:["NNNNNNNNNNNNNNNN",n],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",i([f,f,1]),n],scalex:["N",i([f,1,1]),i([f,1])],scaley:["N",i([1,f,1]),i([1,f])],scalez:["N",i([1,1,f])],scale3d:["NNN",n],skew:["Aa",null,n],skewx:["A",null,i([f,h])],skewy:["A",null,i([h,f])],translate:["Tt",i([f,f,l]),n],translatex:["T",i([f,l,l]),i([f,l])],translatey:["T",i([l,f,l]),i([l,f])],translatez:["L",i([l,l,f])],translate3d:["TTL",n]};t.addPropertiesHandler(r,c,["transform"])}(d,f),function(t,e){function i(t,e){e.concat([t]).forEach(function(e){e in document.documentElement.style&&(n[t]=e)})}var n={};i("transform",["webkitTransform","msTransform"]),i("transformOrigin",["webkitTransformOrigin"]),i("perspective",["webkitPerspective"]),i("perspectiveOrigin",["webkitPerspectiveOrigin"]),t.propertyName=function(t){return n[t]||t}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var t;if(window.performance&&performance.now)var t=function(){return performance.now()};else var t=function(){return Date.now()};var e=function(t,e,i){this.target=t,this.currentTime=e,this.timelineTime=i,this.type="cancel",this.bubbles=!1,this.cancelable=!1, -this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(c),!function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(c,e,f),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e<this.effect.children.length;e++)this.effect.children[e]._animation=t,this._childAnimations[e]._setExternalAnimation(t)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var t=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(i){var n=e.timeline._play(i);this._childAnimations.push(n),n.playbackRate=this.playbackRate,this._paused&&n.pause(),i._animation=this.effect._animation,this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i))}.bind(this))}},_arrangeChildren:function(t,e){null===this.startTime?t.currentTime=this.currentTime-e/this.playbackRate:t.startTime!==this.startTime+e/this.playbackRate&&(t.startTime=this.startTime+e/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(t,e){this._resolveFinishedPromise=function(){t(this)},this._rejectFinishedPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._readyPromise=new Promise(function(t,e){this._resolveReadyPromise=function(){t(this)},this._rejectReadyPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(t){"function"==typeof t?this._animation.onfinish=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.onfinish=t},get oncancel(){return this._animation.oncancel},set oncancel(t){"function"==typeof t?this._animation.oncancel=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.oncancel=t},get currentTime(){this._updatePromises();var t=this._animation.currentTime;return this._updatePromises(),t},set currentTime(t){this._updatePromises(),this._animation.currentTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.currentTime=t-i}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(t){this._updatePromises(),this._animation.startTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.startTime=t+i}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(t){this._updatePromises();var e=this.currentTime;this._animation.playbackRate=t,this._forEachChild(function(e){e.playbackRate=t}),null!==e&&(this.currentTime=e),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),e.awaitStartTime(this),this._forEachChild(function(t){var e=t.currentTime;t.play(),t.currentTime=e}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(t){t.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var t=this.currentTime;this._animation.reverse(),this._forEachChild(function(t){t.reverse()}),null!==t&&(this.currentTime=t),this._updatePromises()},addEventListener:function(t,e){var i=e;"function"==typeof e&&(i=function(t){t.target=this,e.call(this,t)}.bind(this),e._wrapper=i),this._animation.addEventListener(t,i)},removeEventListener:function(t,e){this._animation.removeEventListener(t,e&&e._wrapper||e)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(e){var i=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(t){e.call(this,t,i),this.effect instanceof window.SequenceEffect&&(i+=t.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var n=this.effect._timing,r=this.currentTime;null!==r&&(r=t.calculateIterationProgress(t.calculateActiveDuration(n),r,n)),(null==r||isNaN(r))&&this._removeChildAnimations()}}},window.Animation=e.Animation}(c,e,f),function(t,e,i){function n(e){this._frames=t.normalizeKeyframes(e)}function r(){for(var t=!1;u.length;){var e=u.shift();e._updateChildren(),t=!0}return t}var o=function(t){if(t._animation=void 0,t instanceof window.SequenceEffect||t instanceof window.GroupEffect)for(var e=0;e<t.children.length;e++)o(t.children[e])};e.removeMulti=function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n._parent?(e.indexOf(n._parent)==-1&&e.push(n._parent),n._parent.children.splice(n._parent.children.indexOf(n),1),n._parent=null,o(n)):n._animation&&n._animation.effect==n&&(n._animation.cancel(),n._animation.effect=new KeyframeEffect(null,[]),n._animation._callback&&(n._animation._callback._animation=null),n._animation._rebuildUnderlyingAnimation(),o(n))}for(i=0;i<e.length;i++)e[i]._rebuild()},e.KeyframeEffect=function(e,i,r,o){return this.target=e,this._parent=null,r=t.numericTimingToObject(r),this._timingInput=t.cloneTimingInput(r),this._timing=t.normalizeTimingInput(r),this.timing=t.makeTiming(r,!1,this),this.timing._effect=this,"function"==typeof i?(t.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=i):this._normalizedKeyframes=new n(i),this._keyframes=i,this.activeDuration=t.calculateActiveDuration(this._timing),this._id=o,this},e.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(t){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=t,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var e=new KeyframeEffect(this.target,[],t.cloneTimingInput(this._timingInput),this._id);return e._normalizedKeyframes=this._normalizedKeyframes,e._keyframes=this._keyframes,e},remove:function(){e.removeMulti([this])}};var a=Element.prototype.animate;Element.prototype.animate=function(t,i){var n="";return i&&i.id&&(n=i.id),e.timeline._play(new e.KeyframeEffect(this,t,i,n))};var s=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.newUnderlyingAnimationForKeyframeEffect=function(t){if(t){var e=t.target||s,i=t._keyframes;"function"==typeof i&&(i=[]);var n=t._timingInput;n.id=t._id}else var e=s,i=[],n=0;return a.apply(e,[i,n])},e.bindAnimationForKeyframeEffect=function(t){t.effect&&"function"==typeof t.effect._normalizedKeyframes&&e.bindAnimationForCustomEffect(t)};var u=[];e.awaitStartTime=function(t){null===t.startTime&&t._isGroup&&(0==u.length&&requestAnimationFrame(r),u.push(t))};var c=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){e.timeline._updateAnimationsPromises();var t=c.apply(this,arguments);return r()&&(t=c.apply(this,arguments)),e.timeline._updateAnimationsPromises(),t}}),window.KeyframeEffect=e.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(t){return null!==t.effect&&t.effect.target==this}.bind(this))}}(c,e,f),function(t,e,i){function n(t){t._registered||(t._registered=!0,a.push(t),s||(s=!0,requestAnimationFrame(r)))}function r(t){var e=a;a=[],e.sort(function(t,e){return t._sequenceNumber-e._sequenceNumber}),e=e.filter(function(t){t();var e=t._animation?t._animation.playState:"idle";return"running"!=e&&"pending"!=e&&(t._registered=!1),t._registered}),a.push.apply(a,e),a.length?(s=!0,requestAnimationFrame(r)):s=!1}var o=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);e.bindAnimationForCustomEffect=function(e){var i,r=e.effect.target,a="function"==typeof e.effect.getFrames();i=a?e.effect.getFrames():e.effect._onsample;var s=e.effect.timing,u=null;s=t.normalizeTimingInput(s);var c=function(){var n=c._animation?c._animation.currentTime:null;null!==n&&(n=t.calculateIterationProgress(t.calculateActiveDuration(s),n,s),isNaN(n)&&(n=null)),n!==u&&(a?i(n,r,e.effect):i(n,e.effect,e.effect._animation)),u=n};c._animation=e,c._registered=!1,c._sequenceNumber=o++,e._callback=c,n(c)};var a=[],s=!1;e.Animation.prototype._register=function(){this._callback&&n(this._callback)}}(c,e,f),function(t,e,i){function n(t){return t._timing.delay+t.activeDuration+t._timing.endDelay}function r(e,i,n){this._id=n,this._parent=null,this.children=e||[],this._reparent(this.children),i=t.numericTimingToObject(i),this._timingInput=t.cloneTimingInput(i),this._timing=t.normalizeTimingInput(i,!0),this.timing=t.makeTiming(i,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){r.apply(this,arguments)},window.GroupEffect=function(){r.apply(this,arguments)},r.prototype={_isAncestor:function(t){for(var e=this;null!==e;){if(e==t)return!0;e=e._parent}return!1},_rebuild:function(){for(var t=this;t;)"auto"===t.timing.duration&&(t._timing.duration=t.activeDuration),t=t._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(t){e.removeMulti(t);for(var i=0;i<t.length;i++)t[i]._parent=this},_putChild:function(t,e){for(var i=e?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",n=0;n<t.length;n++)if(this._isAncestor(t[n]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:i};for(var n=0;n<t.length;n++)e?this.children.push(t[n]):this.children.unshift(t[n]);this._reparent(t),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var e=t.cloneTimingInput(this._timingInput),i=[],n=0;n<this.children.length;n++)i.push(this.children[n].clone());return this instanceof GroupEffect?new GroupEffect(i,e):new SequenceEffect(i,e)},remove:function(){e.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t+=n(e)}),Math.max(t,0)}}),window.GroupEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t=Math.max(t,n(e))}),t}}),e.newUnderlyingAnimationForGroup=function(i){var n,r=null,o=function(e){var i=n._wrapper;if(i&&"pending"!=i.playState&&i.effect)return null==e?void i._removeChildAnimations():0==e&&i.playbackRate<0&&(r||(r=t.normalizeTimingInput(i.effect.timing)),e=t.calculateIterationProgress(t.calculateActiveDuration(r),-1,r),isNaN(e)||null==e)?(i._forEachChild(function(t){t.currentTime=-1}),void i._removeChildAnimations()):void 0},a=new KeyframeEffect(null,[],i._timing,i._id);return a.onsample=o,n=e.timeline._play(a)},e.bindAnimationForGroup=function(t){t._animation._wrapper=t,t._isGroup=!0,e.awaitStartTime(t),t._constructChildAnimations(),t._setExternalAnimation(t)},e.groupChildDuration=n}(c,e,f),b.true=a}({},function(){return this}())</script><script>Polymer({is:"opaque-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"1"}],this.timingFromConfig(e)),i.style.opacity="0",this._effect},complete:function(e){e.node.style.opacity=""}})</script><script>!function(){"use strict";var e={pageX:0,pageY:0},t=null,l=[];Polymer.IronDropdownScrollManager={get currentLockingElement(){return this._lockingElements[this._lockingElements.length-1]},elementIsScrollLocked:function(e){var t=this.currentLockingElement;if(void 0===t)return!1;var l;return!!this._hasCachedLockedElement(e)||!this._hasCachedUnlockedElement(e)&&(l=!!t&&t!==e&&!this._composedTreeContains(t,e),l?this._lockedElementCache.push(e):this._unlockedElementCache.push(e),l)},pushScrollLock:function(e){this._lockingElements.indexOf(e)>=0||(0===this._lockingElements.length&&this._lockScrollInteractions(),this._lockingElements.push(e),this._lockedElementCache=[],this._unlockedElementCache=[])},removeScrollLock:function(e){var t=this._lockingElements.indexOf(e);t!==-1&&(this._lockingElements.splice(t,1),this._lockedElementCache=[],this._unlockedElementCache=[],0===this._lockingElements.length&&this._unlockScrollInteractions())},_lockingElements:[],_lockedElementCache:null,_unlockedElementCache:null,_hasCachedLockedElement:function(e){return this._lockedElementCache.indexOf(e)>-1},_hasCachedUnlockedElement:function(e){return this._unlockedElementCache.indexOf(e)>-1},_composedTreeContains:function(e,t){var l,n,o,r;if(e.contains(t))return!0;for(l=Polymer.dom(e).querySelectorAll("content"),o=0;o<l.length;++o)for(n=Polymer.dom(l[o]).getDistributedNodes(),r=0;r<n.length;++r)if(this._composedTreeContains(n[r],t))return!0;return!1},_scrollInteractionHandler:function(t){if(t.cancelable&&this._shouldPreventScrolling(t)&&t.preventDefault(),t.targetTouches){var l=t.targetTouches[0];e.pageX=l.pageX,e.pageY=l.pageY}},_lockScrollInteractions:function(){this._boundScrollHandler=this._boundScrollHandler||this._scrollInteractionHandler.bind(this),document.addEventListener("wheel",this._boundScrollHandler,!0),document.addEventListener("mousewheel",this._boundScrollHandler,!0),document.addEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.addEventListener("touchstart",this._boundScrollHandler,!0),document.addEventListener("touchmove",this._boundScrollHandler,!0)},_unlockScrollInteractions:function(){document.removeEventListener("wheel",this._boundScrollHandler,!0),document.removeEventListener("mousewheel",this._boundScrollHandler,!0),document.removeEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.removeEventListener("touchstart",this._boundScrollHandler,!0),document.removeEventListener("touchmove",this._boundScrollHandler,!0)},_shouldPreventScrolling:function(e){var n=Polymer.dom(e).rootTarget;if("touchmove"!==e.type&&t!==n&&(t=n,l=this._getScrollableNodes(Polymer.dom(e).path)),!l.length)return!0;if("touchstart"===e.type)return!1;var o=this._getScrollInfo(e);return!this._getScrollingNode(l,o.deltaX,o.deltaY)},_getScrollableNodes:function(e){for(var t=[],l=e.indexOf(this.currentLockingElement),n=0;n<=l;n++)if(e[n].nodeType===Node.ELEMENT_NODE){var o=e[n],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t},_getScrollingNode:function(e,t,l){if(t||l)for(var n=Math.abs(l)>=Math.abs(t),o=0;o<e.length;o++){var r=e[o],c=!1;if(c=n?l<0?r.scrollTop>0:r.scrollTop<r.scrollHeight-r.clientHeight:t<0?r.scrollLeft>0:r.scrollLeft<r.scrollWidth-r.clientWidth)return r}},_getScrollInfo:function(t){var l={deltaX:t.deltaX,deltaY:t.deltaY};if("deltaX"in t);else if("wheelDeltaX"in t)l.deltaX=-t.wheelDeltaX,l.deltaY=-t.wheelDeltaY;else if("axis"in t)l.deltaX=1===t.axis?t.detail:0,l.deltaY=2===t.axis?t.detail:0;else if(t.targetTouches){var n=t.targetTouches[0];l.deltaX=e.pageX-n.pageX,l.deltaY=e.pageY-n.pageY}return l}}}()</script><dom-module id="iron-dropdown" assetpath="../bower_components/iron-dropdown/"><template><style>:host{position:fixed}#contentWrapper ::content>*{overflow:auto}#contentWrapper.animating ::content>*{overflow:hidden}</style><div id="contentWrapper"><content id="content" select=".dropdown-content"></content></div></template><script>!function(){"use strict";Polymer({is:"iron-dropdown",behaviors:[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.IronOverlayBehavior,Polymer.NeonAnimationRunnerBehavior],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1},_boundOnCaptureScroll:{type:Function,value:function(){return this._onCaptureScroll.bind(this)}}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},get _focusTarget(){return this.focusTarget||this.containedElement},ready:function(){this._scrollTop=0,this._scrollLeft=0,this._refitOnScrollRAF=null},attached:function(){this.sizingTarget&&this.sizingTarget!==this||(this.sizingTarget=this.containedElement||this)},detached:function(){this.cancelAnimation(),document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)},_openedChanged:function(){this.opened&&this.disabled?this.cancel():(this.cancelAnimation(),this._updateAnimationConfig(),this._saveScrollPosition(),this.opened?(document.addEventListener("scroll",this._boundOnCaptureScroll),!this.allowOutsideScroll&&Polymer.IronDropdownScrollManager.pushScrollLock(this)):(document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments))},_renderOpened:function(){!this.noAnimations&&this.animationConfig.open?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("open")):Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this,arguments)},_renderClosed:function(){!this.noAnimations&&this.animationConfig.close?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("close")):Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this,arguments)},_onNeonAnimationFinish:function(){this.$.contentWrapper.classList.remove("animating"),this.opened?this._finishRenderOpened():this._finishRenderClosed()},_onCaptureScroll:function(){this.allowOutsideScroll?(this._refitOnScrollRAF&&window.cancelAnimationFrame(this._refitOnScrollRAF),this._refitOnScrollRAF=window.requestAnimationFrame(this.refit.bind(this))):this._restoreScrollPosition()},_saveScrollPosition:function(){document.scrollingElement?(this._scrollTop=document.scrollingElement.scrollTop,this._scrollLeft=document.scrollingElement.scrollLeft):(this._scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this._scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},_restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this._scrollTop,document.scrollingElement.scrollLeft=this._scrollLeft):(document.documentElement.scrollTop=this._scrollTop,document.documentElement.scrollLeft=this._scrollLeft,document.body.scrollTop=this._scrollTop,document.body.scrollLeft=this._scrollLeft)},_updateAnimationConfig:function(){for(var o=this.containedElement,t=[].concat(this.openAnimationConfig||[]).concat(this.closeAnimationConfig||[]),n=0;n<t.length;n++)t[n].node=o;this.animationConfig={open:this.openAnimationConfig,close:this.closeAnimationConfig}},_updateOverlayPosition:function(){this.isAttached&&this.notifyResize()},_applyFocus:function(){var o=this.focusTarget||this.containedElement;o&&this.opened&&!this.noAutoFocus?o.focus():Polymer.IronOverlayBehaviorImpl._applyFocus.apply(this,arguments)}})}()</script></dom-module><script>Polymer({is:"fade-in-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(i){var e=i.node;return this._effect=new KeyframeEffect(e,[{opacity:"0"},{opacity:"1"}],this.timingFromConfig(i)),this._effect}})</script><script>Polymer({is:"fade-out-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"0"}],this.timingFromConfig(e)),this._effect}})</script><script>Polymer({is:"paper-menu-grow-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;return this._effect=new KeyframeEffect(i,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-grow-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;t.top;return this.setPrefixedProperty(i,"transformOrigin","0 0"),this._effect=new KeyframeEffect(i,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}})</script><dom-module id="paper-menu-button" assetpath="../bower_components/paper-menu-button/"><template><style>:host{display:inline-block;position:relative;padding:8px;outline:0;@apply(--paper-menu-button)}:host([disabled]){cursor:auto;color:var(--disabled-text-color);@apply(--paper-menu-button-disabled)}iron-dropdown{@apply(--paper-menu-button-dropdown)}.dropdown-content{@apply(--shadow-elevation-2dp);position:relative;border-radius:2px;background-color:var(--paper-menu-button-dropdown-background,--primary-background-color);@apply(--paper-menu-button-content)}:host([vertical-align=top]) .dropdown-content{margin-bottom:20px;margin-top:-10px;top:10px}:host([vertical-align=bottom]) .dropdown-content{bottom:10px;margin-bottom:-10px;margin-top:20px}#trigger{cursor:pointer}</style><div id="trigger" on-tap="toggle"><content select=".dropdown-trigger"></content></div><iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"><div class="dropdown-content"><content id="content" select=".dropdown-content"></content></div></iron-dropdown></template><script>!function(){"use strict";var e={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},n=Polymer({is:"paper-menu-button",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronControlState],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:e.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},toggle:function(){this.opened?this.close():this.open()},open:function(){this.disabled||this.$.dropdown.open()},close:function(){this.$.dropdown.close()},_onIronSelect:function(e){this.ignoreSelect||this.close()},_onIronActivate:function(e){this.closeOnActivate&&this.close()},_openedChanged:function(e,n){e?(this._dropdownContent=this.contentElement,this.fire("paper-dropdown-open")):null!=n&&this.fire("paper-dropdown-close")},_disabledChanged:function(e){Polymer.IronControlState._disabledChanged.apply(this,arguments),e&&this.opened&&this.close()},__onIronOverlayCanceled:function(e){var n=e.detail,t=(Polymer.dom(n).rootTarget,this.$.trigger),o=Polymer.dom(n).path;o.indexOf(t)>-1&&e.preventDefault()}});Object.keys(e).forEach(function(t){n[t]=e[t]}),Polymer.PaperMenuButton=n}()</script></dom-module><iron-iconset-svg name="paper-dropdown-menu" size="24"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-dropdown-menu-shared-styles" assetpath="../bower_components/paper-dropdown-menu/"><template><style>:host{display:inline-block;position:relative;text-align:left;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--paper-input-container-input:{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;cursor:pointer};@apply(--paper-dropdown-menu)}:host([disabled]){@apply(--paper-dropdown-menu-disabled)}:host([noink]) paper-ripple{display:none}:host([no-label-float]) paper-ripple{top:8px}paper-ripple{top:12px;left:0;bottom:8px;right:0;@apply(--paper-dropdown-menu-ripple)}paper-menu-button{display:block;padding:0;@apply(--paper-dropdown-menu-button)}paper-input{@apply(--paper-dropdown-menu-input)}iron-icon{color:var(--disabled-text-color);@apply(--paper-dropdown-menu-icon)}</style></template></dom-module><dom-module id="paper-dropdown-menu" assetpath="../bower_components/paper-dropdown-menu/"><template><style include="paper-dropdown-menu-shared-styles"></style><span role="button"></span><paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate="" allow-outside-scroll="[[allowOutsideScroll]]"><div class="dropdown-trigger"><paper-ripple></paper-ripple><paper-input type="text" invalid="[[invalid]]" readonly="" disabled="[[disabled]]" value="[[selectedItemLabel]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"><iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix=""></iron-icon></paper-input></div><content id="content" select=".dropdown-content"></content></paper-menu-button></template><script>!function(){"use strict";Polymer({is:"paper-dropdown-menu",behaviors:[Polymer.IronButtonState,Polymer.IronControlState,Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0,readOnly:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},dynamicAlign:{type:Boolean}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var e=this.contentElement;e&&e.selectedItem&&this._setSelectedItem(e.selectedItem)},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},open:function(){this.$.menuButton.open()},close:function(){this.$.menuButton.close()},_onIronSelect:function(e){this._setSelectedItem(e.detail.item)},_onIronDeselect:function(e){this._setSelectedItem(null)},_onTap:function(e){Polymer.Gestures.findOriginalTarget(e)===this&&this.open()},_selectedItemChanged:function(e){var t="";t=e?e.label||e.getAttribute("label")||e.textContent.trim():"",this._setValue(t),this._setSelectedItemLabel(t)},_computeMenuVerticalOffset:function(e){return e?-4:8},_getValidity:function(e){return this.disabled||!this.required||this.required&&!!this.value},_openedChanged:function(){var e=this.opened?"true":"false",t=this.contentElement;t&&t.setAttribute("aria-expanded",e)}})}()</script></dom-module><dom-module id="paper-menu-shared-styles" assetpath="../bower_components/paper-menu/"><template><style>.selectable-content>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-item)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-color,--disabled-text-color)}.selectable-content>::content>:focus{position:relative;outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus:after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-opacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}.selectable-content>::content>[colored]:focus:after{opacity:.26}</style></template></dom-module><dom-module id="paper-menu" assetpath="../bower_components/paper-menu/"><template><style include="paper-menu-shared-styles"></style><style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-color,--primary-background-color);color:var(--paper-menu-color,--primary-text-color);@apply(--paper-menu)}</style><div class="selectable-content"><content></content></div></template><script>!function(){Polymer({is:"paper-menu",behaviors:[Polymer.IronMenuBehavior]})}()</script></dom-module><script>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"}},Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperItemBehaviorImpl]</script><dom-module id="paper-item-shared-styles" assetpath="../bower_components/paper-item/"><template><style>.paper-item,:host{display:block;position:relative;min-height:var(--paper-item-min-height,48px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline:0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden]){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-weight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper-item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabled-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){position:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,:host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opacity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused-before)}</style></template></dom-module><dom-module id="paper-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item)}</style><content></content></template><script>Polymer({is:"paper-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="state-card-input_select" assetpath="state-summary/"><template><style>:host{display:block}state-badge{float:left;margin-top:10px}paper-dropdown-menu{display:block;margin-left:53px}</style><state-badge state-obj="[[stateObj]]"></state-badge><paper-dropdown-menu on-tap="stopPropagation" selected-item-label="{{selectedOption}}" label="[[stateObj.entityDisplay]]"><paper-menu class="dropdown-content" selected="[[computeSelected(stateObj)]]"><template is="dom-repeat" items="[[stateObj.attributes.options]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></template></dom-module><script>Polymer({is:"state-card-input_select",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object},selectedOption:{type:String,observer:"selectedOptionChanged"}},computeSelected:function(t){return t.attributes.options.indexOf(t.state)},selectedOptionChanged:function(t){""!==t&&t!==this.stateObj.state&&this.hass.serviceActions.callService("input_select","select_option",{option:t,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><script>Polymer.IronRangeBehavior={properties:{value:{type:Number,value:0,notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0},max:{type:Number,value:100,notify:!0},step:{type:Number,value:1,notify:!0},ratio:{type:Number,value:0,readOnly:!0,notify:!0}},observers:["_update(value, min, max, step)"],_calcRatio:function(t){return(this._clampValue(t)-this.min)/(this.max-this.min)},_clampValue:function(t){return Math.min(this.max,Math.max(this.min,this._calcStep(t)))},_calcStep:function(t){if(t=parseFloat(t),!this.step)return t;var e=Math.round((t-this.min)/this.step);return this.step<1?e/(1/this.step)+this.min:e*this.step+this.min},_validateValue:function(){var t=this._clampValue(this.value);return this.value=this.oldValue=isNaN(t)?this.oldValue:t,this.value!==t},_update:function(){this._validateValue(),this._setRatio(100*this._calcRatio(this.value))}}</script><dom-module id="paper-progress" assetpath="../bower_components/paper-progress/"><template><style>:host{display:block;width:200px;position:relative;overflow:hidden}:host([hidden]){display:none!important}#progressContainer{@apply(--paper-progress-container);position:relative}#progressContainer,.indeterminate::after{height:var(--paper-progress-height,4px)}#primaryProgress,#secondaryProgress,.indeterminate::after{@apply(--layout-fit)}#progressContainer,.indeterminate::after{background:var(--paper-progress-container-color,--google-grey-300)}:host(.transiting) #primaryProgress,:host(.transiting) #secondaryProgress{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:var(--paper-progress-transition-duration,.08s);transition-duration:var(--paper-progress-transition-duration,.08s);-webkit-transition-timing-function:var(--paper-progress-transition-timing-function,ease);transition-timing-function:var(--paper-progress-transition-timing-function,ease);-webkit-transition-delay:var(--paper-progress-transition-delay,0s);transition-delay:var(--paper-progress-transition-delay,0s)}#primaryProgress,#secondaryProgress{@apply(--layout-fit);-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0);will-change:transform}#primaryProgress{background:var(--paper-progress-active-color,--google-green-500)}#secondaryProgress{background:var(--paper-progress-secondary-color,--google-green-100)}:host([disabled]) #primaryProgress{background:var(--paper-progress-disabled-active-color,--google-grey-500)}:host([disabled]) #secondaryProgress{background:var(--paper-progress-disabled-secondary-color,--google-grey-300)}:host(:not([disabled])) #primaryProgress.indeterminate{-webkit-transform-origin:right center;transform-origin:right center;-webkit-animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}:host(:not([disabled])) #primaryProgress.indeterminate::after{content:"";-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}@-webkit-keyframes indeterminate-bar{0%{-webkit-transform:scaleX(1) translateX(-100%)}50%{-webkit-transform:scaleX(1) translateX(0)}75%{-webkit-transform:scaleX(1) translateX(0);-webkit-animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{-webkit-transform:scaleX(0) translateX(0)}}@-webkit-keyframes indeterminate-splitter{0%{-webkit-transform:scaleX(.75) translateX(-125%)}30%{-webkit-transform:scaleX(.75) translateX(-125%);-webkit-animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{-webkit-transform:scaleX(.75) translateX(125%)}100%{-webkit-transform:scaleX(.75) translateX(125%)}}@keyframes indeterminate-bar{0%{transform:scaleX(1) translateX(-100%)}50%{transform:scaleX(1) translateX(0)}75%{transform:scaleX(1) translateX(0);animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{transform:scaleX(0) translateX(0)}}@keyframes indeterminate-splitter{0%{transform:scaleX(.75) translateX(-125%)}30%{transform:scaleX(.75) translateX(-125%);animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{transform:scaleX(.75) translateX(125%)}100%{transform:scaleX(.75) translateX(125%)}}</style><div id="progressContainer"><div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div><div id="primaryProgress"></div></div></template></dom-module><script>Polymer({is:"paper-progress",behaviors:[Polymer.IronRangeBehavior],properties:{secondaryProgress:{type:Number,value:0},secondaryRatio:{type:Number,value:0,readOnly:!0},indeterminate:{type:Boolean,value:!1,observer:"_toggleIndeterminate"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"_disabledChanged"}},observers:["_progressChanged(secondaryProgress, value, min, max)"],hostAttributes:{role:"progressbar"},_toggleIndeterminate:function(e){this.toggleClass("indeterminate",e,this.$.primaryProgress)},_transformProgress:function(e,r){var s="scaleX("+r/100+")";e.style.transform=e.style.webkitTransform=s},_mainRatioChanged:function(e){this._transformProgress(this.$.primaryProgress,e)},_progressChanged:function(e,r,s,t){e=this._clampValue(e),r=this._clampValue(r);var a=100*this._calcRatio(e),i=100*this._calcRatio(r);this._setSecondaryRatio(a),this._transformProgress(this.$.secondaryProgress,a),this._transformProgress(this.$.primaryProgress,i),this.secondaryProgress=e,this.setAttribute("aria-valuenow",r),this.setAttribute("aria-valuemin",s),this.setAttribute("aria-valuemax",t)},_disabledChanged:function(e){this.setAttribute("aria-disabled",e?"true":"false")},_hideSecondaryProgress:function(e){return 0===e}})</script><dom-module id="paper-slider" assetpath="../bower_components/paper-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-slider-height,2px));margin-left:calc(15px + var(--paper-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-slider-height,2px)/ 2);height:var(--paper-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-slider-height,2px)/ 2);width:calc(30px + var(--paper-slider-height,2px));height:calc(30px + var(--paper-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-slider-knob-color,--google-blue-700);border:2px solid var(--paper-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="state-card-input_slider" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-slider{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-slider min="[[min]]" max="[[max]]" value="{{value}}" step="[[step]]" pin="" on-change="selectedValueChanged" on-tap="stopPropagation"></paper-slider></div></template></dom-module><script>Polymer({is:"state-card-input_slider",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object,observer:"stateObjectChanged"},min:{type:Number},max:{type:Number},step:{type:Number},value:{type:Number}},stateObjectChanged:function(t){this.value=Number(t.state),this.min=Number(t.attributes.min),this.max=Number(t.attributes.max),this.step=Number(t.attributes.step)},selectedValueChanged:function(){this.value!==Number(this.stateObj.state)&&this.hass.serviceActions.callService("input_slider","select_value",{value:this.value,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><dom-module id="state-card-media_player" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);margin-left:16px;text-align:right}.main-text{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);text-transform:capitalize}.main-text[take-height]{line-height:40px}.secondary-text{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="main-text" take-height$="[[!secondaryText]]">[[computePrimaryText(stateObj, isPlaying)]]</div><div class="secondary-text">[[secondaryText]]</div></div></div></template></dom-module><script>Polymer({PLAYING_STATES:["playing","paused"],is:"state-card-media_player",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"},secondaryText:{type:String,computed:"computeSecondaryText(stateObj)"}},computeIsPlaying:function(t){return this.PLAYING_STATES.indexOf(t.state)!==-1},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}})</script><dom-module id="state-card-scene" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button on-tap="activateScene">ACTIVATE</paper-button></div></template></dom-module><script>Polymer({is:"state-card-scene",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},activateScene:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-script" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><template is="dom-if" if="[[stateObj.attributes.can_cancel]]"><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></template><template is="dom-if" if="[[!stateObj.attributes.can_cancel]]"><paper-button on-tap="fireScript">ACTIVATE</paper-button></template></div></template></dom-module><script>Polymer({is:"state-card-script",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},fireScript:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-toggle" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></div></template></dom-module><script>Polymer({is:"state-card-toggle",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-weblink" assetpath="state-summary/"><template><style>:host{display:block}.name{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);color:var(--primary-color);text-transform:capitalize;line-height:40px;margin-left:16px}</style><state-badge state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-badge><a href$="[[stateObj.state]]" target="_blank" class="name" id="link">[[stateObj.entityDisplay]]</a></template></dom-module><script>Polymer({is:"state-card-weblink",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation(),t.target!==this.$.link&&window.open(this.stateObj.state,"_blank")}})</script><script>Polymer({is:"state-card-content",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},observers:["inputChanged(hass, inDialog, stateObj)"],inputChanged:function(t,e,s){s&&window.hassUtil.dynamicContentUpdater(this,"STATE-CARD-"+window.hassUtil.stateCardType(this.hass,s).toUpperCase(),{hass:t,stateObj:s,inDialog:e})}})</script><dom-module id="ha-entities-card" assetpath="cards/"><template><style is="custom-style" include="iron-flex"></style><style>.states{padding-bottom:16px}.state{padding:4px 16px;cursor:pointer}.header{@apply(--paper-font-headline);line-height:40px;color:var(--primary-text-color);padding:20px 16px 12px}.header .name{@apply(--paper-font-common-nowrap)}ha-entity-toggle{margin-left:16px}.header-more-info{cursor:pointer}</style><ha-card><div class$="[[computeTitleClass(groupEntity)]]" on-tap="entityTapped"><div class="flex name">[[computeTitle(states, groupEntity)]]</div><template is="dom-if" if="[[showGroupToggle(groupEntity, states)]]"><ha-entity-toggle hass="[[hass]]" state-obj="[[groupEntity]]"></ha-entity-toggle></template></div><div class="states"><template is="dom-repeat" items="[[states]]"><div class="state" on-tap="entityTapped"><state-card-content hass="[[hass]]" class="state-card" state-obj="[[item]]"></state-card-content></div></template></div></ha-card></template></dom-module><script>Polymer({is:"ha-entities-card",properties:{hass:{type:Object},states:{type:Array},groupEntity:{type:Object}},computeTitle:function(t,e){return e?e.entityDisplay:t[0].domain.replace(/_/g," ")},computeTitleClass:function(t){var e="header horizontal layout center ";return t&&(e+="header-more-info"),e},entityTapped:function(t){var e;t.target.classList.contains("paper-toggle-button")||t.target.classList.contains("paper-icon-button")||!t.model&&!this.groupEntity||(t.stopPropagation(),e=t.model?t.model.item.entityId:this.groupEntity.entityId,this.async(function(){this.hass.moreInfoActions.selectEntity(e)}.bind(this),1))},showGroupToggle:function(t,e){var n;return!(!t||!e||"hidden"===t.attributes.control||"on"!==t.state&&"off"!==t.state)&&(n=e.reduce(function(t,e){return t+window.hassUtil.canToggle(this.hass,e.entityId)},0),n>1)}})</script><dom-module id="ha-introduction-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}a{color:var(--dark-primary-color)}ul{margin:8px;padding-left:16px}li{margin-bottom:8px}.content{padding:0 16px 16px}.install{display:block;line-height:1.5em;margin-top:8px;margin-bottom:16px}</style><ha-card header="Welcome Home!"><div class="content"><template is="dom-if" if="[[hass.demo]]">To install Home Assistant, run:<br><code class="install">pip3 install homeassistant<br>hass --open-ui</code></template>Here are some resources to get started.<ul><template is="dom-if" if="[[hass.demo]]"><li><a href="https://home-assistant.io/getting-started/">Home Assistant website</a></li><li><a href="https://home-assistant.io/getting-started/">Installation instructions</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting/">Troubleshooting your installation</a></li></template><li><a href="https://home-assistant.io/getting-started/configuration/" target="_blank">Configuring Home Assistant</a></li><li><a href="https://home-assistant.io/components/" target="_blank">Available components</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting-configuration/" target="_blank">Troubleshooting your configuration</a></li><li><a href="https://home-assistant.io/help/" target="_blank">Ask community for help</a></li></ul><template is="dom-if" if="[[showHideInstruction]]">To remove this card, edit your config in <code>configuration.yaml</code> and disable the <code>introduction</code> component.</template></div></ha-card></template></dom-module><script>Polymer({is:"ha-introduction-card",properties:{hass:{type:Object},showHideInstruction:{type:Boolean,value:!0}}})</script><dom-module id="ha-media_player-card" assetpath="cards/"><template><style include="paper-material iron-flex iron-flex-alignment iron-positioning">:host{display:block;position:relative;font-size:0;border-radius:2px;overflow:hidden}.banner{position:relative;background-color:#fff;border-top-left-radius:2px;border-top-right-radius:2px}.banner:before{display:block;content:"";width:100%;padding-top:56%;transition:padding-top .8s}.banner.no-cover{background-position:center center;background-image:url(/static/images/card_media_player_bg.png);background-repeat:no-repeat;background-color:var(--primary-color)}.banner.content-type-music:before{padding-top:100%}.banner.no-cover:before{padding-top:88px}.banner>.cover{position:absolute;top:0;left:0;right:0;bottom:0;border-top-left-radius:2px;border-top-right-radius:2px;background-position:center center;background-size:cover;transition:opacity .8s;opacity:1}.banner.is-off>.cover{opacity:0}.banner>.caption{@apply(--paper-font-caption);position:absolute;left:0;right:0;bottom:0;background-color:rgba(0,0,0,var(--dark-secondary-opacity));padding:8px 16px;font-size:14px;font-weight:500;color:#fff;transition:background-color .5s}.banner.is-off>.caption{background-color:initial}.banner>.caption .title{@apply(--paper-font-common-nowrap);font-size:1.2em;margin:8px 0 4px}.progress{width:100%;--paper-progress-active-color:var(--accent-color);--paper-progress-container-color:#FFF}.controls{position:relative;@apply(--paper-font-body1);padding:8px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:#fff}.controls paper-icon-button{width:44px;height:44px}paper-icon-button{opacity:var(--dark-primary-opacity)}paper-icon-button[disabled]{opacity:var(--dark-disabled-opacity)}paper-icon-button.primary{width:56px!important;height:56px!important;background-color:var(--primary-color);color:#fff;border-radius:50%;padding:8px;transition:background-color .5s}paper-icon-button.primary[disabled]{background-color:rgba(0,0,0,var(--dark-disabled-opacity))}[invisible]{visibility:hidden!important}</style><div class$="[[computeBannerClasses(playerObj)]]"><div class="cover" id="cover"></div><div class="caption">[[stateObj.entityDisplay]]<div class="title">[[playerObj.primaryText]]</div>[[playerObj.secondaryText]]<br></div></div><paper-progress max="[[stateObj.attributes.media_duration]]" value="[[playbackPosition]]" hidden$="[[computeHideProgress(playerObj)]]" class="progress"></paper-progress><div class="controls layout horizontal justified"><paper-icon-button icon="mdi:power" on-tap="handleTogglePower" invisible$="[[computeHidePowerButton(playerObj)]]" class="self-center secondary"></paper-icon-button><div><paper-icon-button icon="mdi:skip-previous" invisible$="[[!playerObj.supportsPreviousTrack]]" disabled="[[playerObj.isOff]]" on-tap="handlePrevious"></paper-icon-button><paper-icon-button class="primary" icon="[[computePlaybackControlIcon(playerObj)]]" invisible$="[[!computePlaybackControlIcon(playerObj)]]" disabled="[[playerObj.isOff]]" on-tap="handlePlaybackControl"></paper-icon-button><paper-icon-button icon="mdi:skip-next" invisible$="[[!playerObj.supportsNextTrack]]" disabled="[[playerObj.isOff]]" on-tap="handleNext"></paper-icon-button></div><paper-icon-button icon="mdi:dots-vertical" on-tap="handleOpenMoreInfo" class="self-center secondary"></paper-icon-button></div></template></dom-module><script>Polymer({is:"ha-media_player-card",properties:{hass:{type:Object},stateObj:{type:Object},playerObj:{type:Object,computed:"computePlayerObj(stateObj)",observer:"playerObjChanged"},playbackControlIcon:{type:String,computed:"computePlaybackControlIcon(playerObj)"},playbackPosition:{type:Number},elevation:{type:Number,value:1,reflectToAttribute:!0}},created:function(){this.updatePlaybackPosition=this.updatePlaybackPosition.bind(this)},playerObjChanged:function(t){var e=t.stateObj.attributes.entity_picture;e?this.$.cover.style.backgroundImage="url("+e+")":this.$.cover.style.backgroundImage="",t.isPlaying?(this._positionTracking||(this._positionTracking=setInterval(this.updatePlaybackPosition,1e3)),this.updatePlaybackPosition()):this._positionTracking&&(clearInterval(this._positionTracking),this._positionTracking=null,this.playbackPosition=0)},updatePlaybackPosition:function(){this.playbackPosition=this.playerObj.currentProgress},computeBannerClasses:function(t){var e="banner";return t.isOff||t.isIdle?e+=" is-off no-cover":t.stateObj.attributes.entity_picture?"music"===t.stateObj.attributes.media_content_type&&(e+=" content-type-music"):e+=" no-cover",e},computeHideProgress:function(t){return!t.showProgress},computeHidePowerButton:function(t){return t.isOff?!t.supportsTurnOn:!t.supportsTurnOff},computePlayerObj:function(t){return t.domainModel(this.hass)},computePlaybackControlIcon:function(t){return t.isPlaying?t.supportsPause?"mdi:pause":"mdi:stop":t.isPaused||t.isOff||t.isIdle?t.supportsPlay?"mdi:play":null:""},handleNext:function(t){t.stopPropagation(),this.playerObj.nextTrack()},handleOpenMoreInfo:function(t){t.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)},1)},handlePlaybackControl:function(t){t.stopPropagation(),this.playerObj.mediaPlayPause()},handlePrevious:function(t){t.stopPropagation(),this.playerObj.previousTrack()},handleTogglePower:function(t){t.stopPropagation(),this.playerObj.togglePower()}})</script><dom-module id="ha-persistent_notification-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}.content{padding:0 16px 16px}paper-button{margin:8px;font-weight:500}</style><ha-card header="[[computeTitle(stateObj)]]"><div id="pnContent" class="content"></div><paper-button on-tap="dismissTap">DISMISS</paper-button></ha-card></template></dom-module><script>Polymer({is:"ha-persistent_notification-card",properties:{hass:{type:Object},stateObj:{type:Object},scriptLoaded:{type:Boolean,value:!1}},observers:["computeContent(stateObj, scriptLoaded)"],computeTitle:function(t){return t.attributes.title||t.entityDisplay},loadScript:function(){var t=function(){this.scriptLoaded=!0}.bind(this),e=function(){console.error("Micromarkdown was not loaded.")};this.importHref("/static/micromarkdown-js.html",t,e)},computeContent:function(t,e){var i="",n="";e&&(i=this.$.pnContent,n=window.micromarkdown.parse(t.state),i.innerHTML=n)},ready:function(){this.loadScript()},dismissTap:function(t){t.preventDefault(),this.hass.entityActions.delete(this.stateObj)}})</script><script>Polymer({is:"ha-card-chooser",properties:{cardData:{type:Object,observer:"cardDataChanged"}},cardDataChanged:function(a){a&&window.hassUtil.dynamicContentUpdater(this,"HA-"+a.cardType.toUpperCase()+"-CARD",a)}})</script><dom-module id="ha-cards" assetpath="components/"><template><style is="custom-style" include="iron-flex iron-flex-factors"></style><style>:host{display:block;padding-top:8px;padding-right:8px}.badges{font-size:85%;text-align:center}.column{max-width:500px;overflow-x:hidden}.zone-card{margin-left:8px;margin-bottom:8px}@media (max-width:500px){:host{padding-right:0}.zone-card{margin-left:0}}@media (max-width:599px){.column{max-width:600px}}</style><div class="main"><template is="dom-if" if="[[cards.badges]]"><div class="badges"><template is="dom-if" if="[[cards.demo]]"><ha-demo-badge></ha-demo-badge></template><ha-badges-card states="[[cards.badges]]" hass="[[hass]]"></ha-badges-card></div></template><div class="horizontal layout center-justified"><template is="dom-repeat" items="[[cards.columns]]" as="column"><div class="column flex-1"><template is="dom-repeat" items="[[column]]" as="card"><div class="zone-card"><ha-card-chooser card-data="[[card]]" hass="[[hass]]"></ha-card-chooser></div></template></div></template></div></div></template></dom-module><script>!function(){"use strict";function t(t){return t in o?o[t]:30}function e(t){return"group"===t.domain?t.attributes.order:t.entityDisplay.toLowerCase()}var n={camera:4,media_player:3,persistent_notification:0},o={configurator:-20,persistent_notification:-15,group:-10,a:-1,updater:0,sun:1,device_tracker:2,alarm_control_panel:3,sensor:5,binary_sensor:6};Polymer({is:"ha-cards",properties:{hass:{type:Object},showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},panelVisible:{type:Boolean},viewVisible:{type:Boolean},cards:{type:Object}},observers:["updateCards(columns, states, showIntroduction, panelVisible, viewVisible)"],updateCards:function(t,e,n,o,r){o&&r&&this.debounce("updateCards",function(){this.panelVisible&&this.viewVisible&&(this.cards=this.computeCards(t,e,n))}.bind(this))},computeCards:function(o,r,s){function i(t){return t.filter(function(t){return!(t.entityId in h)})}function a(t){var e=0;for(p=e;p<y.length;p++){if(y[p]<5){e=p;break}y[p]<y[e]&&(e=p)}return y[e]+=t,e}function u(t,e,o){var r,s,i,u;0!==e.length&&(r=[],s=[],i=0,e.forEach(function(t){t.domain in n?(r.push(t),i+=n[t.domain]):(s.push(t),i++)}),i+=s.length>1,u=a(i),s.length>0&&f.columns[u].push({hass:d,cardType:"entities",states:s,groupEntity:o||!1}),r.forEach(function(t){f.columns[u].push({hass:d,cardType:t.domain,stateObj:t})}))}var c,p,d=this.hass,l=r.groupBy(function(t){return t.domain}),h={},f={demo:!1,badges:[],columns:[]},y=[];for(p=0;p<o;p++)f.columns.push([]),y.push(0);return s&&f.columns[a(5)].push({hass:d,cardType:"introduction",showHideInstruction:r.size>0&&!d.demo}),c=this.hass.util.expandGroup,l.keySeq().sortBy(function(e){return t(e)}).forEach(function(n){var o;return"a"===n?void(f.demo=!0):(o=t(n),void(o>=0&&o<10?f.badges.push.apply(f.badges,i(l.get(n)).sortBy(e).toArray()):"group"===n?l.get(n).sortBy(e).forEach(function(t){var e=c(t,r);e.forEach(function(t){h[t.entityId]=!0}),u(t.entityId,e.toArray(),t)}):u(n,i(l.get(n)).sortBy(e).toArray())))}),f.columns=f.columns.filter(function(t){return t.length>0}),f}})}()</script><dom-module id="partial-cards" assetpath="layouts/"><template><style include="iron-flex iron-positioning ha-style">:host{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-header-layout{background-color:#E5E5E5}paper-tabs{margin-left:12px;--paper-tabs-selection-bar-color:#FFF;text-transform:uppercase}</style><app-header-layout has-scrolling-region="" id="layout"><app-header effects="waterfall" condenses="" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">[[computeTitle(views, locationName)]]</div><paper-icon-button icon="mdi:microphone" hidden$="[[!canListen]]" on-tap="handleListenClick"></paper-icon-button></app-toolbar><div sticky="" hidden$="[[!views.length]]"><paper-tabs scrollable="" selected="[[currentView]]" attr-for-selected="data-entity" on-iron-select="handleViewSelected"><paper-tab data-entity="" on-tap="scrollToTop">[[locationName]]</paper-tab><template is="dom-repeat" items="[[views]]"><paper-tab data-entity$="[[item.entityId]]" on-tap="scrollToTop"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></paper-tab></template></paper-tabs></div></app-header><iron-pages attr-for-selected="data-view" selected="[[currentView]]" selected-attribute="view-visible"><ha-cards data-view="" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards><template is="dom-repeat" items="[[views]]"><ha-cards data-view$="[[item.entityId]]" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards></template></iron-pages></app-header-layout></template></dom-module><script>Polymer({is:"partial-cards",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1,observer:"handleWindowChange"},panelVisible:{type:Boolean,value:!1},_columns:{type:Number,value:1},canListen:{type:Boolean,bindNuclear:function(e){return[e.voiceGetters.isVoiceSupported,e.configGetters.isComponentLoaded("conversation"),function(e,t){return e&&t}]}},introductionLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("introduction")}},locationName:{type:String,bindNuclear:function(e){return e.configGetters.locationName}},currentView:{type:String,bindNuclear:function(e){return[e.viewGetters.currentView,function(e){return e||""}]}},views:{type:Array,bindNuclear:function(e){return[e.viewGetters.views,function(e){return e.valueSeq().sortBy(function(e){return e.attributes.order}).toArray()}]}},states:{type:Object,bindNuclear:function(e){return e.viewGetters.currentViewEntities}}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this.mqls=[300,600,900,1200].map(function(e){var t=window.matchMedia("(min-width: "+e+"px)");return t.addListener(this.handleWindowChange),t}.bind(this))},detached:function(){this.mqls.forEach(function(e){e.removeListener(this.handleWindowChange)})},handleWindowChange:function(){var e=this.mqls.reduce(function(e,t){return e+t.matches},0);this._columns=Math.max(1,e-(!this.narrow&&this.showMenu))},scrollToTop:function(){var e=0,t=this.$.layout.header.scrollTarget,n=function(e,t,n,i){return e/=i,-n*e*(e-2)+t},i=Math.random(),o=200,r=Date.now(),a=t.scrollTop,s=e-a;this._currentAnimationId=i,function c(){var u=Date.now(),l=u-r;l>o?t.scrollTop=e:this._currentAnimationId===i&&(t.scrollTop=n(l,a,s,o),requestAnimationFrame(c.bind(this)))}.call(this)},handleListenClick:function(){this.hass.voiceActions.listen()},handleViewSelected:function(e){var t=e.detail.item.getAttribute("data-entity")||null,n=this.currentView||null;t!==n&&this.async(function(){this.hass.viewActions.selectView(t)}.bind(this),0)},computeTitle:function(e,t){return e.length>0?"Home Assistant":t},computeShowIntroduction:function(e,t,n){return""===e&&(t||0===n.size)}})</script><style is="custom-style">html{font-size:14px;--dark-primary-color:#0288D1;--default-primary-color:#03A9F4;--primary-color:#03A9F4;--light-primary-color:#B3E5FC;--text-primary-color:#ffffff;--accent-color:#FF9800;--primary-background-color:#ffffff;--primary-text-color:#212121;--secondary-text-color:#727272;--disabled-text-color:#bdbdbd;--divider-color:#B6B6B6;--paper-toggle-button-checked-ink-color:#039be5;--paper-toggle-button-checked-button-color:#039be5;--paper-toggle-button-checked-bar-color:#039be5;--paper-slider-knob-color:var(--primary-color);--paper-slider-knob-start-color:var(--primary-color);--paper-slider-pin-color:var(--primary-color);--paper-slider-active-color:var(--primary-color);--paper-slider-secondary-color:var(--light-primary-color);--paper-slider-container-color:var(--divider-color);--google-red-500:#db4437;--google-blue-500:#4285f4;--google-green-500:#0f9d58;--google-yellow-500:#f4b400;--paper-grey-50:#fafafa;--paper-green-400:#66bb6a;--paper-blue-400:#42a5f5;--paper-orange-400:#ffa726;--dark-divider-opacity:0.12;--dark-disabled-opacity:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider-opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light-primary-opacity:1.0}</style><dom-module id="ha-style" assetpath="resources/"><template><style>:host{@apply(--paper-font-body1)}app-header,app-toolbar{background-color:var(--primary-color);font-weight:400;color:#fff}app-toolbar ha-menu-button+[main-title]{margin-left:24px}h1{@apply(--paper-font-title)}</style></template></dom-module><dom-module id="partial-panel-resolver" assetpath="layouts/"><template><style include="iron-flex ha-style">[hidden]{display:none!important}.placeholder{height:100%}.layout{height:calc(100% - 64px)}</style><div hidden$="[[resolved]]" class="placeholder"><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button></app-toolbar><div class="layout horizontal center-center"><template is="dom-if" if="[[!errorLoading]]"><paper-spinner active=""></paper-spinner></template><template is="dom-if" if="[[errorLoading]]">Error loading panel :(</template></div></div><span id="panel" hidden$="[[!resolved]]"></span></template></dom-module><script>Polymer({is:"partial-panel-resolver",behaviors:[window.hassBehavior],properties:{hass:{type:Object,observer:"updateAttributes"},narrow:{type:Boolean,value:!1,observer:"updateAttributes"},showMenu:{type:Boolean,value:!1,observer:"updateAttributes"},resolved:{type:Boolean,value:!1},errorLoading:{type:Boolean,value:!1},panel:{type:Object,bindNuclear:function(e){return e.navigationGetters.activePanel},observer:"panelChanged"}},panelChanged:function(e){return e?(this.resolved=!1,this.errorLoading=!1,void this.importHref(e.get("url"),function(){window.hassUtil.dynamicContentUpdater(this.$.panel,"ha-panel-"+e.get("component_name"),{hass:this.hass,narrow:this.narrow,showMenu:this.showMenu,panel:e.toJS()}),this.resolved=!0}.bind(this),function(){this.errorLoading=!0}.bind(this),!0)):void(this.$.panel.lastChild&&this.$.panel.removeChild(this.$.panel.lastChild))},updateAttributes:function(){var e=Polymer.dom(this.$.panel).lastChild;e&&(e.hass=this.hass,e.narrow=this.narrow,e.showMenu=this.showMenu)}})</script><dom-module id="paper-toast" assetpath="../bower_components/paper-toast/"><template><style>:host{display:block;position:fixed;background-color:var(--paper-toast-background-color,#323232);color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding:16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px);@apply(--paper-font-common-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-width:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}</style><span id="label">{{text}}</span><content></content></template><script>!function(){var e=null;Polymer({is:"paper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Object,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,value:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,value:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0},noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionEnd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `opened` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.duration!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.requestAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:function(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._finishRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==this._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.opened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}),this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e===this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClosed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:function(e){this.positionTarget=e}})}()</script></dom-module><dom-module id="notification-manager" assetpath="managers/"><template><style>paper-toast{z-index:1}</style><paper-toast id="toast" text="{{text}}" no-cancel-on-outside-click="[[neg]]"></paper-toast><paper-toast id="connToast" duration="0" text="Connection lost. Reconnecting…" opened="[[!isStreaming]]"></paper-toast></template></dom-module><script>Polymer({is:"notification-manager",behaviors:[window.hassBehavior],properties:{hass:{type:Object},isStreaming:{type:Boolean,bindNuclear:function(t){return t.streamGetters.isStreamingEvents}},neg:{type:Boolean,value:!1},text:{type:String,bindNuclear:function(t){return t.notificationGetters.lastNotificationMessage},observer:"showNotification"},toastClass:{type:String,value:""}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this._mediaq=window.matchMedia("(max-width: 599px)"),this._mediaq.addListener(this.handleWindowChange)},attached:function(){this.handleWindowChange(this._mediaq)},detached:function(){this._mediaq.removeListener(this.handleWindowChange)},handleWindowChange:function(t){this.$.toast.classList.toggle("fit-bottom",t.matches),this.$.connToast.classList.toggle("fit-bottom",t.matches)},showNotification:function(t){t&&this.$.toast.show()}})</script><script>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.closingReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialog-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirmed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBehaviorImpl]</script><dom-module id="paper-dialog-shared-styles" assetpath="../bower_components/paper-dialog-behavior/"><template><style>:host{display:block;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-background-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--paper-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::content>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:host>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bottom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;padding:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-color);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style></template></dom-module><dom-module id="paper-dialog" assetpath="../bower_components/paper-dialog/"><template><style include="paper-dialog-shared-styles"></style><content></content></template></dom-module><script>!function(){Polymer({is:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRunnerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}})}()</script><dom-module id="paper-dialog-scrollable" assetpath="../bower_components/paper-dialog-scrollable/"><template><style>:host{display:block;@apply(--layout-relative)}:host(.is-scrolled:not(:first-child))::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--divider-color)}:host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--divider-color)}.scrollable{padding:0 24px;@apply(--layout-scroll);@apply(--paper-dialog-scrollable)}.fit{@apply(--layout-fit)}</style><div id="scrollable" class="scrollable"><content></content></div></template></dom-module><script>Polymer({is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},listeners:{"scrollable.scroll":"_scroll"},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget()},attached:function(){this.classList.add("no-padding"),this._ensureTarget(),requestAnimationFrame(this._scroll.bind(this))},_scroll:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight<this.scrollTarget.scrollHeight),this.toggleClass("scrolled-to-bottom",this.scrollTarget.scrollTop+this.scrollTarget.offsetHeight>=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||Polymer.dom(this).parentNode,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(Polymer.PaperDialogBehaviorImpl)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})</script><script>!function(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded:{type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,value:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary()},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.message),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(null),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i))},_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bind(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&&this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFromUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNotify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMacro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback%% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbackMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this),this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript:function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handleError.bind(this);var t=document.querySelector("script")||document.body;t.parentNode.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.script=null},handleError:function(r){this.error=new Error("Library failed to load"),this.notifyAll(),this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.slice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete window[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:function(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}}}()</script><script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent:String}})</script><script>Polymer({is:"google-legacy-loader",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://www.google.com/jsapi?callback=%%callback%%"},notifyEvent:{type:String,value:"api-load"}},get api(){return google}})</script><style>div.charts-tooltip{z-index:200!important}</style><script>Polymer({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){function t(t,e,n,i){var d=e.replace(/_/g," ");a.addRow([t,d,n,i])}var e,a,n,i,d,l=Polymer.dom(this),o=this.data;if(this.isAttached){for(;l.node.lastChild;)l.node.removeChild(l.node.lastChild);o&&0!==o.length&&(e=new window.google.visualization.Timeline(this),a=new window.google.visualization.DataTable,a.addColumn({type:"string",id:"Entity"}),a.addColumn({type:"string",id:"State"}),a.addColumn({type:"date",id:"Start"}),a.addColumn({type:"date",id:"End"}),n=new Date(o.reduce(function(t,e){return Math.min(t,e[0].lastChangedAsDate)},new Date)),i=new Date(n),i.setDate(i.getDate()+1),i>new Date&&(i=new Date),d=0,o.forEach(function(e){var a,n,l=null,o=null;0!==e.length&&(a=e[0].entityDisplay,e.forEach(function(e){null!==l&&e.state!==l?(n=e.lastChangedAsDate,t(a,l,o,n),l=e.state,o=n):null===l&&(l=e.state,o=e.lastChangedAsDate)}),t(a,l,o,i),d++)}),e.draw(a,{height:55+42*d,timeline:{showRowLabels:o.length>1},hAxis:{format:"H:mm"}}))}}})</script><script>!function(){"use strict";function t(t,e){var a,r=[];for(a=t;a<e;a++)r.push(a);return r}function e(t){var e=parseFloat(t);return!isNaN(e)&&isFinite(e)?e:null}Polymer({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"},chartEngine:{type:Object}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){var a,r,n,i,u,o=this.unit,s=this.data;this.isAttached&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(this)),0!==s.length&&(a={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",vAxes:{0:{title:o}},hAxis:{format:"H:mm"},chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}},this.isSingleDevice&&(a.legend.position="none",a.vAxes[0].title=null,a.chartArea.left=40,a.chartArea.height="80%",a.chartArea.top=5,a.enableInteractivity=!1),r=new Date(Math.min.apply(null,s.map(function(t){return t[0].lastChangedAsDate}))),n=new Date(r),n.setDate(n.getDate()+1),n>new Date&&(n=new Date),i=s.map(function(t){function a(t,e){r&&e&&c.push([t[0]].concat(r.slice(1).map(function(t,a){return e[a]?t:null}))),c.push(t),r=t}var r,i,u,o,s=t[t.length-1],l=s.domain,d=s.entityDisplay,c=[],h=new window.google.visualization.DataTable;return h.addColumn({type:"datetime",id:"Time"}),"thermostat"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):"climate"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):(h.addColumn("number",d),o="sensor"!==l&&[!0],t.forEach(function(t){var r=e(t.state);a([t.lastChangedAsDate,r],o)})),a([n].concat(r.slice(1)),!1),h.addRows(c),h}),u=1===i.length?i[0]:i.slice(1).reduce(function(e,a){return window.google.visualization.data.join(e,a,"full",[[0,0]],t(1,e.getNumberOfColumns()),t(1,a.getNumberOfColumns()))},i[0]),this.chartEngine.draw(u,a)))}})}()</script><dom-module id="state-history-charts" assetpath="components/"><template><style>:host{display:block}.loading-container{text-align:center;padding:8px}.loading{height:0;overflow:hidden}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><div hidden$="[[!isLoading]]" class="loading-container"><paper-spinner active="" alt="Updating history data"></paper-spinner></div><div class$="[[computeContentClasses(isLoading)]]"><template is="dom-if" if="[[computeIsEmpty(stateHistory)]]">No state history found.</template><state-history-chart-timeline data="[[groupedStateHistory.timeline]]" is-single-device="[[isSingleDevice]]"></state-history-chart-timeline><template is="dom-repeat" items="[[groupedStateHistory.line]]"><state-history-chart-line unit="[[item.unit]]" data="[[item.data]]" is-single-device="[[isSingleDevice]]"></state-history-chart-line></template></div></template></dom-module><script>Polymer({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){var i,o={},n=[];return t||!e?{line:[],timeline:[]}:(e.forEach(function(t){var e,i;t&&0!==t.size&&(e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=!!e&&e.attributes.unit_of_measurement,i?i in o?o[i].push(t.toArray()):o[i]=[t.toArray()]:n.push(t.toArray()))}),n=n.length>0&&n,i=Object.keys(o).map(function(t){return{unit:t,data:o[t]}}),{line:i,timeline:n})},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){this.apiLoaded=!0}.bind(this)})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size}})</script><dom-module id="more-info-automation" assetpath="more-infos/"><template><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px}</style><p>Last triggered:<ha-relative-time datetime="[[stateObj.attributes.last_triggered]]"></ha-relative-time></p><paper-button on-tap="handleTriggerTapped">TRIGGER</paper-button></template></dom-module><script>Polymer({is:"more-info-automation",properties:{hass:{type:Object},stateObj:{type:Object}},handleTriggerTapped:function(){this.hass.serviceActions.callService("automation","trigger",{entity_id:this.stateObj.entityId})}})</script><dom-module id="paper-range-slider" assetpath="../bower_components/paper-range-slider/"><template><style>:host{--paper-range-slider-width:200px;@apply(--layout);@apply(--layout-justified);@apply(--layout-center);--paper-range-slider-lower-color:var(--paper-grey-400);--paper-range-slider-active-color:var(--primary-color);--paper-range-slider-higher-color:var(--paper-grey-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-pin-start-color:var(--paper-grey-400);--paper-range-slider-knob-start-color:transparent;--paper-range-slider-knob-start-border-color:var(--paper-grey-400)}#sliderOuterDiv_0{display:inline-block;width:var(--paper-range-slider-width)}#sliderOuterDiv_1{position:relative;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sliderKnobMinMax{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.divSpanWidth{position:absolute;width:100%;display:block;top:0}#sliderMax{--paper-single-range-slider-bar-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-active-color:var(--paper-range-slider-active-color);--paper-single-range-slider-secondary-color:var(--paper-range-slider-higher-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}#sliderMin{--paper-single-range-slider-active-color:var(--paper-range-slider-lower-color);--paper-single-range-slider-secondary-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}</style><div id="sliderOuterDiv_0" style=""><div id="sliderOuterDiv_1"><div id="backDiv" class="divSpanWidth" on-down="_backDivDown" on-tap="_backDivTap" on-up="_backDivUp" on-track="_backDivOnTrack" on-transitionend="_backDivTransEnd"><div id="backDivInner_0" style="line-height:200%"><br></div></div><div id="sliderKnobMin" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMinOnTrack"></div><div id="sliderKnobMax" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMaxOnTrack"></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMax" disabled$="[[disabled]]" on-down="_sliderMaxDown" on-up="_sliderMaxUp" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMax]]" secondary-progress="[[max]]" style="width:100%"></paper-single-range-slider></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMin" disabled$="[[disabled]]" on-down="_sliderMinDown" on-up="_sliderMinUp" noink="" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMin]]" style="width:100%"></paper-single-range-slider></div><div id="backDivInner_1" style="line-height:100%"><br></div></div></div></template><script>Polymer({is:"paper-range-slider",behaviors:[Polymer.IronRangeBehavior],properties:{sliderWidth:{type:String,value:"",notify:!0,reflectToAttribute:!0},style:{type:String,value:"",notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0,reflectToAttribute:!0},max:{type:Number,value:100,notify:!0,reflectToAttribute:!0},valueMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueMax:{type:Number,value:100,notify:!0,reflectToAttribute:!0},step:{type:Number,value:1,notify:!0,reflectToAttribute:!0},valueDiffMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueDiffMax:{type:Number,value:0,notify:!0,reflectToAttribute:!0},alwaysShowPin:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},snaps:{type:Boolean,value:!1,notify:!0},disabled:{type:Boolean,value:!1,notify:!0},singleSlider:{type:Boolean,value:!1,notify:!0},transDuration:{type:Number,value:250},tapValueExtend:{type:Boolean,value:!0,notify:!0},tapValueReduce:{type:Boolean,value:!1,notify:!0},tapValueMove:{type:Boolean,value:!1,notify:!0}},ready:function(){function i(i){return void 0!=i&&null!=i}i(this._nInitTries)||(this._nInitTries=0);var t=this.$$("#sliderMax").$$("#sliderContainer");if(i(t)&&(t=t.offsetWidth>0),i(t)&&(t=this.$$("#sliderMin").$$("#sliderContainer")),i(t)&&(t=t.offsetWidth>0),i(t))this._renderedReady();else{if(this._nInitTries<1e3){var e=this;setTimeout(function(){e.ready()},10)}else console.error("could not properly initialize the underlying paper-single-range-slider elements ...");this._nInitTries++}},_renderedReady:function(){this.init(),this._setPadding();var i=this;this.$$("#sliderMin").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.$.sliderMin._expandKnob(),i.$.sliderMax._expandKnob()}),this.$$("#sliderMax").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue))}),this.$$("#sliderMin").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.alwaysShowPin&&i.$.sliderMin._expandKnob()}),this.$$("#sliderMax").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue)),i.alwaysShowPin&&i.$.sliderMax._expandKnob()})},_setPadding:function(){var i=document.createElement("div");i.setAttribute("style","position:absolute; top:0px; opacity:0;"),i.innerHTML="invisibleText",document.body.insertBefore(i,document.body.children[0]);var t=i.offsetHeight/2;this.style.paddingTop=t+"px",this.style.paddingBottom=t+"px",i.parentNode.removeChild(i)},_setValueDiff:function(){this._valueDiffMax=Math.max(this.valueDiffMax,0),this._valueDiffMin=Math.max(this.valueDiffMin,0)},_getValuesMinMax:function(i,t){var e=null!=i&&i>=this.min&&i<=this.max,s=null!=t&&t>=this.min&&t<=this.max;if(!e&&!s)return[this.valueMin,this.valueMax];var n=e?i:this.valueMin,a=s?t:this.valueMax;n=Math.min(Math.max(n,this.min),this.max),a=Math.min(Math.max(a,this.min),this.max);var l=a-n;return e?l<this._valueDiffMin?(a=Math.min(this.max,n+this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(n=a-this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(a=n+this._valueDiffMax):l<this._valueDiffMin?(n=Math.max(this.min,a-this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(a=n+this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(n=a-this._valueDiffMax),[n,a]},_setValueMin:function(i){i=Math.max(i,this.min),this.$$("#sliderMin").value=i,this.valueMin=i},_setValueMax:function(i){i=Math.min(i,this.max),this.$$("#sliderMax").value=i,this.valueMax=i},_setValueMinMax:function(i){this._setValueMin(i[0]),this._setValueMax(i[1]),this._updateSliderKnobMinMax(),this.updateValues()},_setValues:function(i,t){null!=i&&(i<this.min||i>this.max)&&(i=null),null!=t&&(t<this.min||t>this.max)&&(t=null),null!=i&&null!=t&&(i=Math.min(i,t)),this._setValueMinMax(this._getValuesMinMax(i,t))},_updateSliderKnobMinMax:function(){var i=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,t=i*(this.valueMin-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMin").offsetWidth,e=i*(this.valueMax-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMax").offsetWidth;this.$$("#sliderKnobMin").style.left=t+"px",this.$$("#sliderKnobMax").style.left=e+"px"},_backDivOnTrack:function(i){switch(i.stopPropagation(),i.detail.state){case"start":this._backDivTrackStart(i);break;case"track":this._backDivTrackDuring(i);break;case"end":this._backDivTrackEnd()}},_backDivTrackStart:function(i){},_backDivTrackDuring:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._x1_Max=this._x0_Max+i.detail.dx;var e=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));t>=this.min&&e<=this.max&&this._setValuesWithCurrentDiff(t,e,!1)},_setValuesWithCurrentDiff:function(i,t,e){var s=this._valueDiffMin,n=this._valueDiffMax;this._valueDiffMin=this.valueMax-this.valueMin,this._valueDiffMax=this.valueMax-this.valueMin,e?this.setValues(i,t):this._setValues(i,t),this._valueDiffMin=s,this._valueDiffMax=n},_backDivTrackEnd:function(){},_sliderKnobMinOnTrack:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._setValues(t,null)},_sliderKnobMaxOnTrack:function(i){this._x1_Max=this._x0_Max+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));this._setValues(null,t)},_sliderMinDown:function(){this.$$("#sliderMax")._expandKnob()},_sliderMaxDown:function(i){this.singleSlider?this._setValues(null,this._getEventValue(i)):this.$$("#sliderMin")._expandKnob()},_sliderMinUp:function(){this.alwaysShowPin?this.$$("#sliderMin")._expandKnob():this.$$("#sliderMax")._resetKnob()},_sliderMaxUp:function(){this.alwaysShowPin?this.$$("#sliderMax")._expandKnob():(this.$$("#sliderMin")._resetKnob(),this.singleSlider&&this.$$("#sliderMax")._resetKnob())},_getEventValue:function(i){var t=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,e=this.$$("#sliderMax").$$("#sliderContainer").getBoundingClientRect(),s=(i.detail.x-e.left)/t,n=this.min+s*(this.max-this.min);return n},_backDivTap:function(i){this._setValueNow=function(i,t){this.tapValueMove?this._setValuesWithCurrentDiff(i,t,!0):this.setValues(i,t)};var t=this._getEventValue(i);if(t>this.valueMin&&t<this.valueMax){if(this.tapValueReduce){var e=t<this.valueMin+(this.valueMax-this.valueMin)/2;e?this._setValueNow(t,null):this._setValueNow(null,t)}}else(this.tapValueExtend||this.tapValueMove)&&(t<this.valueMin&&this._setValueNow(t,null),t>this.valueMax&&this._setValueNow(null,t))},_backDivDown:function(i){this._sliderMinDown(),this._sliderMaxDown(),this._xWidth=this.$$("#sliderMin").$$("#sliderBar").offsetWidth,this._x0_Min=this.$$("#sliderMin").ratio*this._xWidth,this._x0_Max=this.$$("#sliderMax").ratio*this._xWidth},_backDivUp:function(){this._sliderMinUp(),this._sliderMaxUp()},_backDivTransEnd:function(i){},_getRatioPos:function(i,t){return Math.max(i.min,Math.min(i.max,(i.max-i.min)*t+i.min))},init:function(){this.setSingleSlider(this.singleSlider),this.setDisabled(this.disabled),this.alwaysShowPin&&(this.pin=!0),this.$$("#sliderMin").pin=this.pin,this.$$("#sliderMax").pin=this.pin,this.$$("#sliderMin").snaps=this.snaps,this.$$("#sliderMax").snaps=this.snaps,""!=this.sliderWidth&&(this.customStyle["--paper-range-slider-width"]=this.sliderWidth,this.updateStyles()),this.$$("#sliderMin").$$("#sliderBar").$$("#progressContainer").style.background="transparent",this._prevUpdateValues=[this.min,this.max],this._setValueDiff(),this._setValueMinMax(this._getValuesMinMax(this.valueMin,this.valueMax)),this.alwaysShowPin&&(this.$$("#sliderMin")._expandKnob(),this.$$("#sliderMax")._expandKnob())},setValues:function(i,t){this.$$("#sliderMin")._setTransiting(!0),this.$$("#sliderMax")._setTransiting(!0),this._setValues(i,t);var e=this;setTimeout(function(){e.$.sliderMin._setTransiting(!1),e.$.sliderMax._setTransiting(!1)},e.transDuration)},updateValues:function(){this._prevUpdateValues[0]==this.valueMin&&this._prevUpdateValues[1]==this.valueMax||(this._prevUpdateValues=[this.valueMin,this.valueMax],this.async(function(){this.fire("updateValues")}))},setMin:function(i){this.max<i&&(this.max=i),this.min=i,this._prevUpdateValues=[this.min,this.max],this.valueMin<this.min?this._setValues(this.min,null):this._updateSliderKnobMinMax()},setMax:function(i){this.min>i&&(this.min=i),this.max=i,this._prevUpdateValues=[this.min,this.max],this.valueMax>this.max?this._setValues(null,this.max):this._updateSliderKnobMinMax()},setStep:function(i){this.step=i},setValueDiffMin:function(i){this._valueDiffMin=i},setValueDiffMax:function(i){this._valueDiffMax=i},setTapValueExtend:function(i){this.tapValueExtend=i},setTapValueReduce:function(i){this.tapValueReduce=i},setTapValueMove:function(i){this.tapValueMove=i},setDisabled:function(i){this.disabled=i;var t=i?"none":"auto";this.$$("#sliderMax").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderMin").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderOuterDiv_1").style.pointerEvents=t,this.$$("#sliderKnobMin").style.pointerEvents=t,this.$$("#sliderKnobMax").style.pointerEvents=t},setSingleSlider:function(i){this.singleSlider=i,i?(this.$$("#backDiv").style.display="none",this.$$("#sliderMax").style.pointerEvents="auto",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="none",this.$$("#sliderKnobMin").style.pointerEvents="none",this.$$("#sliderKnobMax").style.pointerEvents="none"):(this.$$("#backDiv").style.display="block",this.$$("#sliderMax").style.pointerEvents="none",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="",this.$$("#sliderKnobMin").style.pointerEvents="auto",this.$$("#sliderKnobMax").style.pointerEvents="auto"),this.$$("#sliderMax").$$("#sliderContainer").style.pointerEvents=this.singleSlider?"auto":"none",this.$$("#sliderMin").$$("#sliderContainer").style.pointerEvents="none"}})</script></dom-module><dom-module id="paper-single-range-slider" assetpath="../bower_components/paper-range-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-single-range-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-single-range-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-single-range-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-single-range-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:calc(15px + var(--paper-single-range-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-single-range-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-single-range-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-single-range-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-single-range-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-single-range-slider-height,2px)/ 2);height:var(--paper-single-range-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-single-range-slider-knob-color,--google-blue-700);border:2px solid var(--paper-single-range-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-single-range-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-single-range-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-single-range-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-single-range-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="more-info-climate" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>:host{color:var(--primary-text-color);--paper-input-container-input:{text-transform:capitalize};}.container-aux_heat,.container-away_mode,.container-fan_list,.container-humidity,.container-operation_list,.container-swing_list,.container-temperature{display:none}.has-aux_heat .container-aux_heat,.has-away_mode .container-away_mode,.has-fan_list .container-fan_list,.has-humidity .container-humidity,.has-operation_list .container-operation_list,.has-swing_list .container-swing_list,.has-temperature .container-temperature{display:block}.container-fan_list iron-icon,.container-operation_list iron-icon,.container-swing_list iron-icon{margin:22px 16px 0 0}paper-dropdown-menu{width:100%}paper-slider{width:100%}.auto paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-blue-400)}.heat paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-green-400)}.cool paper-slider{--paper-slider-active-color:var(--paper-green-400);--paper-slider-secondary-color:var(--paper-blue-400)}.humidity{--paper-slider-active-color:var(--paper-blue-400);--paper-slider-secondary-color:var(--paper-blue-400)}paper-range-slider{--paper-range-slider-lower-color:var(--paper-orange-400);--paper-range-slider-active-color:var(--paper-green-400);--paper-range-slider-higher-color:var(--paper-blue-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-width:100%}.single-row{padding:8px 0}.capitalize{text-transform:capitalize}</style><div class$="[[computeClassNames(stateObj)]]"><div class="container-temperature"><div class$="single-row, [[stateObj.attributes.operation_mode]]"><div hidden$="[[computeTargetTempHidden(stateObj)]]">Target Temperature</div><paper-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" secondary-progress="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value="[[stateObj.attributes.temperature]]" hidden$="[[computeHideTempSlider(stateObj)]]" on-change="targetTemperatureSliderChanged"></paper-slider><paper-range-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value-min="[[stateObj.attributes.target_temp_low]]" value-max="[[stateObj.attributes.target_temp_high]]" value-diff-min="2" hidden$="[[computeHideTempRangeSlider(stateObj)]]" on-change="targetTemperatureRangeSliderChanged"></paper-range-slider></div></div><div class="container-humidity"><div class="single-row"><div>Target Humidity</div><paper-slider class="humidity" min="[[stateObj.attributes.min_humidity]]" max="[[stateObj.attributes.max_humidity]]" secondary-progress="[[stateObj.attributes.max_humidity]]" step="1" pin="" value="[[stateObj.attributes.humidity]]" on-change="targetHumiditySliderChanged"></paper-slider></div></div><div class="container-operation_list"><div class="controls"><paper-dropdown-menu label-float="" label="Operation"><paper-menu class="dropdown-content" selected="{{operationIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.operation_list]]"><paper-item class="capitalize">[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div></div><div class="container-fan_list"><paper-dropdown-menu label-float="" label="Fan Mode"><paper-menu class="dropdown-content" selected="{{fanIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.fan_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-swing_list"><paper-dropdown-menu label-float="" label="Swing Mode"><paper-menu class="dropdown-content" selected="{{swingIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.swing_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-away_mode"><div class="center horizontal layout single-row"><div class="flex">Away Mode</div><paper-toggle-button checked="[[awayToggleChecked]]" on-change="awayToggleChanged"></paper-toggle-button></div></div><div class="container-aux_heat"><div class="center horizontal layout single-row"><div class="flex">Aux Heat</div><paper-toggle-button checked="[[auxToggleChecked]]" on-change="auxToggleChanged"></paper-toggle-button></div></div></div></template></dom-module><script>Polymer({is:"more-info-climate",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},operationIndex:{type:Number,value:-1,observer:"handleOperationmodeChanged"},fanIndex:{type:Number,value:-1,observer:"handleFanmodeChanged"},swingIndex:{type:Number,value:-1,observer:"handleSwingmodeChanged"},awayToggleChecked:{type:Boolean},auxToggleChecked:{type:Boolean}},stateObjChanged:function(e){this.targetTemperatureSliderValue=e.attributes.temperature,this.awayToggleChecked="on"===e.attributes.away_mode,this.auxheatToggleChecked="on"===e.attributes.aux_heat,e.attributes.fan_list?this.fanIndex=e.attributes.fan_list.indexOf(e.attributes.fan_mode):this.fanIndex=-1,e.attributes.operation_list?this.operationIndex=e.attributes.operation_list.indexOf(e.attributes.operation_mode):this.operationIndex=-1,e.attributes.swing_list?this.swingIndex=e.attributes.swing_list.indexOf(e.attributes.swing_mode):this.swingIndex=-1,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeTargetTempHidden:function(e){return!e.attributes.temperature&&!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempRangeSlider:function(e){return!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempSlider:function(e){return!e.attributes.temperature},computeClassNames:function(e){return"more-info-climate "+window.hassUtil.attributeClassNames(e,["away_mode","aux_heat","temperature","humidity","operation_list","fan_list","swing_list"])},targetTemperatureSliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.temperature&&this.callServiceHelper("set_temperature",{temperature:t})},targetTemperatureRangeSliderChanged:function(e){var t=e.currentTarget.valueMin,a=e.currentTarget.valueMax;t===this.stateObj.attributes.target_temp_low&&a===this.stateObj.attributes.target_temp_high||this.callServiceHelper("set_temperature",{target_temp_low:t,target_temp_high:a})},targetHumiditySliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.humidity&&this.callServiceHelper("set_humidity",{humidity:t})},awayToggleChanged:function(e){var t="on"===this.stateObj.attributes.away_mode,a=e.target.checked;t!==a&&this.callServiceHelper("set_away_mode",{away_mode:a})},auxToggleChanged:function(e){var t="on"===this.stateObj.attributes.aux_heat,a=e.target.checked;t!==a&&this.callServiceHelper("set_aux_heat",{aux_heat:a})},handleFanmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.fan_list[e],t!==this.stateObj.attributes.fan_mode&&this.callServiceHelper("set_fan_mode",{fan_mode:t}))},handleOperationmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.operation_list[e],t!==this.stateObj.attributes.operation_mode&&this.callServiceHelper("set_operation_mode",{operation_mode:t}))},handleSwingmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.swing_list[e],t!==this.stateObj.attributes.swing_mode&&this.callServiceHelper("set_swing_mode",{swing_mode:t}))},callServiceHelper:function(e,t){t.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("climate",e,t).then(function(){this.stateObjChanged(this.stateObj)}.bind(this))}})</script><dom-module id="more-info-cover" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.current_position,.current_tilt_position{max-height:0;overflow:hidden}.has-current_position .current_position,.has-current_tilt_position .current_tilt_position{max-height:90px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="current_position"><div>Position</div><paper-slider min="0" max="100" value="{{coverPositionSliderValue}}" step="1" pin="" on-change="coverPositionSliderChanged"></paper-slider></div><div class="current_tilt_position"><div>Tilt position</div><paper-icon-button icon="mdi:arrow-top-right" on-tap="onOpenTiltTap" title="Open tilt" disabled="[[computeIsFullyOpenTilt(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTiltTap" title="Stop tilt"></paper-icon-button><paper-icon-button icon="mdi:arrow-bottom-left" on-tap="onCloseTiltTap" title="Close tilt" disabled="[[computeIsFullyClosedTilt(stateObj)]]"></paper-icon-button><paper-slider min="0" max="100" value="{{coverTiltPositionSliderValue}}" step="1" pin="" on-change="coverTiltPositionSliderChanged"></paper-slider></div></div></template></dom-module><script>Polymer({is:"more-info-cover",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},coverPositionSliderValue:{type:Number},coverTiltPositionSliderValue:{type:Number}},stateObjChanged:function(t){this.coverPositionSliderValue=t.attributes.current_position,this.coverTiltPositionSliderValue=t.attributes.current_tilt_position},computeClassNames:function(t){return window.hassUtil.attributeClassNames(t,["current_position","current_tilt_position"])},coverPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_position",{entity_id:this.stateObj.entityId,position:t.target.value})},coverTiltPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_tilt_position",{entity_id:this.stateObj.entityId,tilt_position:t.target.value})},computeIsFullyOpenTilt:function(t){return 100===t.attributes.current_tilt_position},computeIsFullyClosedTilt:function(t){return 0===t.attributes.current_tilt_position},onOpenTiltTap:function(){this.hass.serviceActions.callService("cover","open_cover_tilt",{entity_id:this.stateObj.entityId})},onCloseTiltTap:function(){this.hass.serviceActions.callService("cover","close_cover_tilt",{entity_id:this.stateObj.entityId})},onStopTiltTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="more-info-default" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.data-entry .value{max-width:200px}</style><div class="layout vertical"><template is="dom-repeat" items="[[computeDisplayAttributes(stateObj)]]" as="attribute"><div class="data-entry layout justified horizontal"><div class="key">[[formatAttribute(attribute)]]</div><div class="value">[[getAttributeValue(stateObj, attribute)]]</div></div></template></div></template></dom-module><script>!function(){"use strict";var e=["entity_picture","friendly_name","icon","unit_of_measurement","emulated_hue","emulated_hue_name","haaska_hidden","haaska_name","homebridge_hidden","homebridge_name"];Polymer({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return e.indexOf(t)===-1}):[]},formatAttribute:function(e){return e.replace(/_/g," ")},getAttributeValue:function(e,t){var r=e.attributes[t];return Array.isArray(r)?r.join(", "):r}})}()</script><dom-module id="more-info-group" assetpath="more-infos/"><template><style>.child-card{margin-bottom:8px}.child-card:last-child{margin-bottom:0}</style><div id="groupedControlDetails"></div><template is="dom-repeat" items="[[states]]" as="state"><div class="child-card"><state-card-content state-obj="[[state]]" hass="[[hass]]"></state-card-content></div></template></template></dom-module><script>Polymer({is:"more-info-group",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object},states:{type:Array,bindNuclear:function(t){return[t.moreInfoGetters.currentEntity,t.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}}},observers:["statesChanged(stateObj, states)"],statesChanged:function(t,e){var s,i,a,n,r=!1;if(e&&e.length>0)for(s=e[0],r=s.set("entityId",t.entityId).set("attributes",Object.assign({},s.attributes)),i=0;i<e.length;i++)a=e[i],a&&a.domain&&r.domain!==a.domain&&(r=!1);r?window.hassUtil.dynamicContentUpdater(this.$.groupedControlDetails,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(r).toUpperCase(),{stateObj:r,hass:this.hass}):(n=Polymer.dom(this.$.groupedControlDetails),n.lastChild&&n.removeChild(n.lastChild))}})</script><dom-module id="more-info-sun" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><template is="dom-repeat" items="[[computeOrder(risingDate, settingDate)]]"><div class="data-entry layout justified horizontal"><div class="key"><span>[[itemCaption(item)]]</span><ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time></div><div class="value">[[itemValue(item)]]</div></div></template><div class="data-entry layout justified horizontal"><div class="key">Elevation</div><div class="value">[[stateObj.attributes.elevation]]</div></div></template></dom-module><script>Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return new Date(t.attributes.next_rising)},computeSetting:function(t){return new Date(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return window.hassUtil.formatTime(this.itemDate(t))}})</script><dom-module id="more-info-configurator" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>p{margin:8px 0}p>img{max-width:100%}p.center{text-align:center}p.error{color:#C62828}p.submit{text-align:center;height:41px}paper-spinner{width:14px;height:14px;margin-right:20px}</style><div class="layout vertical"><template is="dom-if" if="[[isConfigurable]]"><p hidden$="[[!stateObj.attributes.description]]">[[stateObj.attributes.description]] <a hidden$="[[!stateObj.attributes.link_url]]" href="[[stateObj.attributes.link_url]]" target="_blank">[[stateObj.attributes.link_name]]</a></p><p class="error" hidden$="[[!stateObj.attributes.errors]]">[[stateObj.attributes.errors]]</p><p class="center" hidden$="[[!stateObj.attributes.description_image]]"><img src="[[stateObj.attributes.description_image]]"></p><template is="dom-repeat" items="[[stateObj.attributes.fields]]"><paper-input-container id="paper-input-fields-{{item.id}}"><label>[[item.name]]</label><input is="iron-input" type="[[item.type]]" id="[[item.id]]" on-change="fieldChanged"></paper-input-container></template><p class="submit"><paper-button raised="" disabled="[[isConfiguring]]" on-tap="submitClicked"><paper-spinner active="[[isConfiguring]]" hidden="[[!isConfiguring]]" alt="Configuring"></paper-spinner>[[submitCaption]]</paper-button></p></template></div></template></dom-module><script>Polymer({is:"more-info-configurator",behaviors:[window.hassBehavior],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:function(i){return i.streamGetters.isStreamingEvents}},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"},fieldInput:{type:Object,value:{}}},computeIsConfigurable:function(i){return"configure"===i.state},computeSubmitCaption:function(i){return i.attributes.submit_caption||"Set configuration"},fieldChanged:function(i){var t=i.target;this.fieldInput[t.id]=t.value},submitClicked:function(){var i={configure_id:this.stateObj.attributes.configure_id,fields:this.fieldInput};this.isConfiguring=!0,this.hass.serviceActions.callService("configurator","configure",i).then(function(){this.isConfiguring=!1,this.isStreaming||this.hass.syncActions.fetchAll()}.bind(this),function(){this.isConfiguring=!1}.bind(this))}})</script><dom-module id="more-info-script" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><div class="layout vertical"><div class="data-entry layout justified horizontal"><div class="key">Last Action</div><div class="value">[[stateObj.attributes.last_action]]</div></div></div></template></dom-module><script>Polymer({is:"more-info-script",properties:{stateObj:{type:Object}}})</script><dom-module id="ha-labeled-slider" assetpath="components/"><template><style>:host{display:block;padding-bottom:16px}.title{margin-bottom:16px;opacity:var(--dark-primary-opacity)}iron-icon{float:left;margin-top:4px;opacity:var(--dark-secondary-opacity)}.slider-container{margin-left:24px}</style><div class="title">[[caption]]</div><iron-icon icon="[[icon]]"></iron-icon><div class="slider-container"><paper-slider min="[[min]]" max="[[max]]" value="{{value}}"></paper-slider></div></template></dom-module><script>Polymer({is:"ha-labeled-slider",properties:{caption:{type:String},icon:{type:String},min:{type:Number},max:{type:Number},value:{type:Number,notify:!0}}})</script><dom-module id="ha-color-picker" assetpath="components/"><template><style>canvas{cursor:crosshair}</style><canvas width="[[width]]" height="[[height]]"></canvas></template></dom-module><script>Polymer({is:"ha-color-picker",properties:{color:{type:Object},width:{type:Number},height:{type:Number}},listeners:{mousedown:"onMouseDown",mouseup:"onMouseUp",touchstart:"onTouchStart",touchend:"onTouchEnd"},onMouseDown:function(t){this.onMouseMove(t),this.addEventListener("mousemove",this.onMouseMove)},onMouseUp:function(){this.removeEventListener("mousemove",this.onMouseMove)},onTouchStart:function(t){this.onTouchMove(t),this.addEventListener("touchmove",this.onTouchMove)},onTouchEnd:function(){this.removeEventListener("touchmove",this.onTouchMove)},onTouchMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t.touches[0]),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},onMouseMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},processColorSelect:function(t){var o=this.canvas.getBoundingClientRect();t.clientX<o.left||t.clientX>=o.left+o.width||t.clientY<o.top||t.clientY>=o.top+o.height||this.onColorSelect(t.clientX-o.left,t.clientY-o.top)},onColorSelect:function(t,o){var e=this.context.getImageData(t,o,1,1).data;this.setColor({r:e[0],g:e[1],b:e[2]})},setColor:function(t){this.color=t,this.fire("colorselected",{rgb:this.color})},ready:function(){this.setColor=this.setColor.bind(this),this.mouseMoveIsThrottled=!0,this.canvas=this.children[0],this.context=this.canvas.getContext("2d"),this.drawGradient()},drawGradient:function(){var t,o,e,i,s;this.width&&this.height||(t=getComputedStyle(this)),o=this.width||parseInt(t.width,10),e=this.height||parseInt(t.height,10),i=this.context.createLinearGradient(0,0,o,0),i.addColorStop(0,"rgb(255,0,0)"),i.addColorStop(.16,"rgb(255,0,255)"),i.addColorStop(.32,"rgb(0,0,255)"),i.addColorStop(.48,"rgb(0,255,255)"),i.addColorStop(.64,"rgb(0,255,0)"),i.addColorStop(.8,"rgb(255,255,0)"),i.addColorStop(1,"rgb(255,0,0)"),this.context.fillStyle=i,this.context.fillRect(0,0,o,e),s=this.context.createLinearGradient(0,0,0,e),s.addColorStop(0,"rgba(255,255,255,1)"),s.addColorStop(.5,"rgba(255,255,255,0)"),s.addColorStop(.5,"rgba(0,0,0,0)"),s.addColorStop(1,"rgba(0,0,0,1)"),this.context.fillStyle=s,this.context.fillRect(0,0,o,e)}})</script><dom-module id="more-info-light" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.effect_list{padding-bottom:16px}.brightness,.color_temp,.effect_list,.white_value{max-height:0;overflow:hidden;transition:max-height .5s ease-in}ha-color-picker{display:block;width:250px;max-height:0;overflow:hidden;transition:max-height .2s ease-in}.has-brightness .brightness,.has-color_temp .color_temp,.has-effect_list .effect_list,.has-white_value .white_value{max-height:84px}.has-rgb_color ha-color-picker{max-height:200px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="effect_list"><paper-dropdown-menu label-float="" label="Effect"><paper-menu class="dropdown-content" selected="{{effectIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.effect_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="brightness"><ha-labeled-slider caption="Brightness" icon="mdi:brightness-5" max="255" value="{{brightnessSliderValue}}" on-change="brightnessSliderChanged"></ha-labeled-slider></div><div class="color_temp"><ha-labeled-slider caption="Color Temperature" icon="mdi:thermometer" min="154" max="500" value="{{ctSliderValue}}" on-change="ctSliderChanged"></ha-labeled-slider></div><div class="white_value"><ha-labeled-slider caption="White Value" icon="mdi:file-word-box" max="255" value="{{wvSliderValue}}" on-change="wvSliderChanged"></ha-labeled-slider></div><ha-color-picker on-colorselected="colorPicked" height="200" width="250"></ha-color-picker></div></template></dom-module><script>Polymer({is:"more-info-light",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},effectIndex:{type:Number,value:-1,observer:"effectChanged"},brightnessSliderValue:{type:Number,value:0},ctSliderValue:{type:Number,value:0},wvSliderValue:{type:Number,value:0}},stateObjChanged:function(t){t&&"on"===t.state?(this.brightnessSliderValue=t.attributes.brightness,this.ctSliderValue=t.attributes.color_temp,this.wvSliderValue=t.attributes.white_value,t.attributes.effect_list?this.effectIndex=t.attributes.effect_list.indexOf(t.attributes.effect):this.effectIndex=-1):this.brightnessSliderValue=0,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(t){var e=window.hassUtil.attributeClassNames(t,["rgb_color","color_temp","white_value","effect_list"]),i=1;return t&&t.attributes.supported_features&i&&(e+=" has-brightness"),e},effectChanged:function(t){var e;""!==t&&t!==-1&&(e=this.stateObj.attributes.effect_list[t],e!==this.stateObj.attributes.effect&&this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,effect:e}))},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?this.hass.serviceActions.callTurnOff(this.stateObj.entityId):this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},ctSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,color_temp:e})},wvSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,white_value:e})},serviceChangeColor:function(t,e,i){t.serviceActions.callService("light","turn_on",{entity_id:e,rgb_color:[i.r,i.g,i.b]})},colorPicked:function(t){return this.skipColorPicked?void(this.colorChanged=!0):(this.color=t.detail.rgb,this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.colorChanged=!1,this.skipColorPicked=!0,void(this.colorDebounce=setTimeout(function(){this.colorChanged&&this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.skipColorPicked=!1}.bind(this),500)))}})</script><dom-module id="more-info-media_player" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.media-state{text-transform:capitalize}paper-icon-button[highlight]{color:var(--accent-color)}.volume{margin-bottom:8px;max-height:0;overflow:hidden;transition:max-height .5s ease-in}.has-volume_level .volume{max-height:40px}iron-icon.source-input{padding:7px;margin-top:15px}paper-dropdown-menu.source-input{margin-left:10px}[hidden]{display:none!important}</style><div class$="[[computeClassNames(stateObj)]]"><div class="layout horizontal"><div class="flex"><paper-icon-button icon="mdi:power" highlight$="[[isOff]]" on-tap="handleTogglePower" hidden$="[[computeHidePowerButton(isOff, supportsTurnOn, supportsTurnOff)]]"></paper-icon-button></div><div><template is="dom-if" if="[[computeShowPlaybackControls(isOff, hasMediaControl)]]"><paper-icon-button icon="mdi:skip-previous" on-tap="handlePrevious" hidden$="[[!supportsPreviousTrack]]"></paper-icon-button><paper-icon-button icon="[[computePlaybackControlIcon(stateObj)]]" on-tap="handlePlaybackControl" hidden$="[[!computePlaybackControlIcon(stateObj)]]" highlight=""></paper-icon-button><paper-icon-button icon="mdi:skip-next" on-tap="handleNext" hidden$="[[!supportsNextTrack]]"></paper-icon-button></template></div></div><div class="volume_buttons center horizontal layout" hidden$="[[computeHideVolumeButtons(isOff, supportsVolumeButtons)]]"><paper-icon-button on-tap="handleVolumeTap" icon="mdi:volume-off"></paper-icon-button><paper-icon-button id="volumeDown" disabled$="[[isMuted]]" on-mousedown="handleVolumeDown" on-touchstart="handleVolumeDown" icon="mdi:volume-medium"></paper-icon-button><paper-icon-button id="volumeUp" disabled$="[[isMuted]]" on-mousedown="handleVolumeUp" on-touchstart="handleVolumeUp" icon="mdi:volume-high"></paper-icon-button></div><div class="volume center horizontal layout" hidden$="[[!supportsVolumeSet]]"><paper-icon-button on-tap="handleVolumeTap" hidden$="[[supportsVolumeButtons]]" icon="[[computeMuteVolumeIcon(isMuted)]]"></paper-icon-button><paper-slider disabled$="[[isMuted]]" min="0" max="100" value="[[volumeSliderValue]]" on-change="volumeSliderChanged" class="flex"></paper-slider></div><div class="controls layout horizontal justified" hidden$="[[computeHideSelectSource(isOff, supportsSelectSource)]]"><iron-icon class="source-input" icon="mdi:login-variant"></iron-icon><paper-dropdown-menu class="source-input" label-float="" label="Source"><paper-menu class="dropdown-content" selected="{{sourceIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.source_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div hidden$="[[computeHideTTS(ttsLoaded, supportsPlayMedia)]]" class="layout horizontal end"><paper-input label="Text to speak" class="flex" value="{{ttsMessage}}"></paper-input><paper-icon-button icon="mdi:send" on-tap="sendTTS"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"more-info-media_player",behaviors:[window.hassBehavior],properties:{ttsLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("tts")}},hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},source:{type:String,value:""},sourceIndex:{type:Number,value:0,observer:"handleSourceChanged"},volumeSliderValue:{type:Number,value:0},ttsMessage:{type:String,value:""},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1},supportsPlayMedia:{type:Boolean,value:!1},supportsVolumeButtons:{type:Boolean,value:!1},supportsSelectSource:{type:Boolean,value:!1},supportsPlay:{type:Boolean,value:!1},hasMediaControl:{type:Boolean,value:!1}},HAS_MEDIA_STATES:["playing","paused","unknown"],stateObjChanged:function(e){e&&(this.isOff="off"===e.state,this.isPlaying="playing"===e.state,this.hasMediaControl=this.HAS_MEDIA_STATES.indexOf(e.state)!==-1,this.volumeSliderValue=100*e.attributes.volume_level,this.isMuted=e.attributes.is_volume_muted,this.source=e.attributes.source,this.supportsPause=0!==(1&e.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&e.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&e.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&e.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&e.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&e.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&e.attributes.supported_media_commands),this.supportsPlayMedia=0!==(512&e.attributes.supported_media_commands),this.supportsVolumeButtons=0!==(1024&e.attributes.supported_media_commands),this.supportsSelectSource=0!==(2048&e.attributes.supported_media_commands),this.supportsPlay=0!==(16384&e.attributes.supported_media_commands),void 0!==e.attributes.source_list&&(this.sourceIndex=e.attributes.source_list.indexOf(this.source))),this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(e){return window.hassUtil.attributeClassNames(e,["volume_level"])},computeIsOff:function(e){return"off"===e.state},computeMuteVolumeIcon:function(e){return e?"mdi:volume-off":"mdi:volume-high"},computeHideVolumeButtons:function(e,t){return!t||e},computeShowPlaybackControls:function(e,t){return!e&&t},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"mdi:pause":"mdi:stop":this.supportsPlay?"mdi:play":null},computeHidePowerButton:function(e,t,s){return e?!t:!s},computeHideSelectSource:function(e,t){return e||!t},computeSelectedSource:function(e){return e.attributes.source_list.indexOf(e.attributes.source)},computeHideTTS:function(e,t){return!e||!t},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleSourceChanged:function(e){var t;!this.stateObj||void 0===this.stateObj.attributes.source_list||e<0||e>=this.stateObj.attributes.source_list.length||(t=this.stateObj.attributes.source_list[e],t!==this.stateObj.attributes.source&&this.callService("select_source",{source:t}))},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},handleVolumeUp:function(){var e=this.$.volumeUp;this.handleVolumeWorker("volume_up",e,!0)},handleVolumeDown:function(){var e=this.$.volumeDown;this.handleVolumeWorker("volume_down",e,!0)},handleVolumeWorker:function(e,t,s){(s||void 0!==t&&t.pointerDown)&&(this.callService(e),this.async(function(){this.handleVolumeWorker(e,t,!1)}.bind(this),500))},volumeSliderChanged:function(e){var t=parseFloat(e.target.value),s=t>0?t/100:0;this.callService("volume_set",{volume_level:s})},sendTTS:function(){var e,t,s=this.hass.reactor.evaluate(this.hass.serviceGetters.entityMap).get("tts").get("services").keySeq().toArray();for(t=0;t<s.length;t++)if(s[t].indexOf("_say")!==-1){e=s[t];break}e&&(this.hass.serviceActions.callService("tts",e,{entity_id:this.stateObj.entityId,message:this.ttsMessage}),this.ttsMessage="",document.activeElement.blur())},callService:function(e,t){var s=t||{};s.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("media_player",e,s)}})</script><dom-module id="more-info-camera" assetpath="more-infos/"><template><style>:host{max-width:640px}.camera-image{width:100%}</style><img class="camera-image" src="[[computeCameraImageUrl(hass, stateObj)]]" on-load="imageLoaded" alt="[[stateObj.entityDisplay]]"></template></dom-module><script>Polymer({is:"more-info-camera",properties:{hass:{type:Object},stateObj:{type:Object}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(e,t){return e.demo?"/demo/webcam.jpg":t?"/api/camera_proxy_stream/"+t.entityId+"?token="+t.attributes.access_token:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}})</script><dom-module id="more-info-updater" assetpath="more-infos/"><template><style>.link{color:#03A9F4}</style><div><a class="link" href="https://home-assistant.io/getting-started/updating/" target="_blank">Update Instructions</a></div></template></dom-module><script>Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},computeReleaseNotes:function(t){return t.attributes.release_notes||"https://home-assistant.io/getting-started/updating/"}})</script><dom-module id="more-info-alarm_control_panel" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><div class="layout horizontal"><paper-input label="code" value="{{enteredCode}}" pattern="[[codeFormat]]" type="password" hidden$="[[!codeInputVisible]]" disabled="[[!codeInputEnabled]]"></paper-input></div><div class="layout horizontal"><paper-button on-tap="handleDisarmTap" hidden$="[[!disarmButtonVisible]]" disabled="[[!codeValid]]">Disarm</paper-button><paper-button on-tap="handleHomeTap" hidden$="[[!armHomeButtonVisible]]" disabled="[[!codeValid]]">Arm Home</paper-button><paper-button on-tap="handleAwayTap" hidden$="[[!armAwayButtonVisible]]" disabled="[[!codeValid]]">Arm Away</paper-button></div></template></dom-module><script>Polymer({is:"more-info-alarm_control_panel",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""},disarmButtonVisible:{type:Boolean,value:!1},armHomeButtonVisible:{type:Boolean,value:!1},armAwayButtonVisible:{type:Boolean,value:!1},codeInputVisible:{type:Boolean,value:!1},codeInputEnabled:{type:Boolean,value:!1},codeFormat:{type:String,value:""},codeValid:{type:Boolean,computed:"validateCode(enteredCode, codeFormat)"}},validateCode:function(e,t){var a=new RegExp(t);return null===t||a.test(e)},stateObjChanged:function(e){e&&(this.codeFormat=e.attributes.code_format,this.codeInputVisible=null!==this.codeFormat,this.codeInputEnabled="armed_home"===e.state||"armed_away"===e.state||"disarmed"===e.state||"pending"===e.state||"triggered"===e.state,this.disarmButtonVisible="armed_home"===e.state||"armed_away"===e.state||"pending"===e.state||"triggered"===e.state,this.armHomeButtonVisible="disarmed"===e.state,this.armAwayButtonVisible="disarmed"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},handleDisarmTap:function(){this.callService("alarm_disarm",{code:this.enteredCode})},handleHomeTap:function(){this.callService("alarm_arm_home",{code:this.enteredCode})},handleAwayTap:function(){this.callService("alarm_arm_away",{code:this.enteredCode})},callService:function(e,t){var a=t||{};a.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("alarm_control_panel",e,a).then(function(){this.enteredCode=""}.bind(this))}})</script><dom-module id="more-info-lock" assetpath="more-infos/"><template><style>paper-input{display:inline-block}</style><div hidden$="[[!stateObj.attributes.code_format]]"><paper-input label="code" value="{{enteredCode}}" pattern="[[stateObj.attributes.code_format]]" type="password"></paper-input><paper-button on-tap="handleUnlockTap" hidden$="[[!isLocked]]">Unlock</paper-button><paper-button on-tap="handleLockTap" hidden$="[[isLocked]]">Lock</paper-button></div></template></dom-module><script>Polymer({is:"more-info-lock",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""}},handleUnlockTap:function(){this.callService("unlock",{code:this.enteredCode})},handleLockTap:function(){this.callService("lock",{code:this.enteredCode})},stateObjChanged:function(e){e&&(this.isLocked="locked"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},callService:function(e,t){var i=t||{};i.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("lock",e,i)}})</script><script>Polymer({is:"more-info-content",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"}},created:function(){this.style.display="block"},stateObjChanged:function(t){t&&window.hassUtil.dynamicContentUpdater(this,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(t).toUpperCase(),{hass:this.hass,stateObj:t})}})</script><dom-module id="more-info-dialog" assetpath="dialogs/"><template><style>paper-dialog{font-size:14px;width:365px}paper-dialog[data-domain=camera]{width:auto}state-history-charts{position:relative;z-index:1;max-width:365px}state-card-content{margin-bottom:24px;font-size:14px}@media all and (max-width:450px),all and (max-height:500px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}" data-domain$="[[stateObj.domain]]"><h2><state-card-content state-obj="[[stateObj]]" hass="[[hass]]" in-dialog=""></state-card-content></h2><template is="dom-if" if="[[showHistoryComponent]]"><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingHistoryData]]"></state-history-charts></template><paper-dialog-scrollable id="scrollable"><more-info-content state-obj="[[stateObj]]" hass="[[hass]]"></more-info-content></paper-dialog-scrollable></paper-dialog></template></dom-module><script>Polymer({is:"more-info-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object,bindNuclear:function(t){return t.moreInfoGetters.currentEntity},observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:function(t){return[t.moreInfoGetters.currentEntityHistory,function(t){return!!t&&[t]}]}},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(delayedDialogOpen, isLoadingEntityHistoryData)"},isLoadingEntityHistoryData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},hasHistoryComponent:{type:Boolean,bindNuclear:function(t){return t.configGetters.isComponentLoaded("history")},observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:function(t){return t.moreInfoGetters.isCurrentEntityHistoryStale},observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1,computed:"computeShowHistoryComponent(hasHistoryComponent, stateObj)"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},delayedDialogOpen:{type:Boolean,value:!1}},ready:function(){this.$.scrollable.dialogElement=this.$.dialog},computeIsLoadingHistoryData:function(t,e){return!t||e},computeShowHistoryComponent:function(t,e){return this.hasHistoryComponent&&e&&window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(e.domain)===-1},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&this.hass.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){return t?void this.async(function(){this.fetchHistoryData(),this.dialogOpen=!0}.bind(this),10):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){t?this.async(function(){this.delayedDialogOpen=!0}.bind(this),10):!t&&this.stateObj&&(this.async(function(){this.hass.moreInfoActions.deselectEntity()}.bind(this),10),this.delayedDialogOpen=!1)}})</script><dom-module id="ha-voice-command-dialog" assetpath="dialogs/"><template><style>iron-icon{margin-right:8px}.content{width:300px;min-height:80px;font-size:18px}.icon{float:left}.text{margin-left:48px;margin-right:24px}.interimTranscript{color:#a9a9a9}@media all and (max-width:450px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}"><div class="content"><div class="icon"><iron-icon icon="mdi:text-to-speech" hidden$="[[isTransmitting]]"></iron-icon><paper-spinner active$="[[isTransmitting]]" hidden$="[[!isTransmitting]]"></paper-spinner></div><div class="text"><span>{{finalTranscript}}</span> <span class="interimTranscript">[[interimTranscript]]</span> …</div></div></paper-dialog></template></dom-module><script>Polymer({is:"ha-voice-command-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},finalTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.finalTranscript}},interimTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.extraInterimTranscript}},isTransmitting:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isTransmitting}},isListening:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isListening}},showListenInterface:{type:Boolean,computed:"computeShowListenInterface(isListening, isTransmitting)",observer:"showListenInterfaceChanged"}},computeShowListenInterface:function(e,n){return e||n},dialogOpenChanged:function(e){!e&&this.isListening&&this.hass.voiceActions.stop()},showListenInterfaceChanged:function(e){!e&&this.dialogOpen?this.dialogOpen=!1:e&&(this.dialogOpen=!0)}})</script><dom-module id="paper-icon-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item);@apply(--paper-icon-item)}.content-icon{@apply(--layout-horizontal);@apply(--layout-center);width:var(--paper-item-icon-width,56px);@apply(--paper-item-icon)}</style><div id="contentIcon" class="content-icon"><content select="[item-icon]"></content></div><content></content></template><script>Polymer({is:"paper-icon-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="ha-sidebar" assetpath="components/"><template><style include="iron-flex iron-flex-alignment iron-positioning">:host{--sidebar-text:{opacity:var(--dark-primary-opacity);font-weight:500;font-size:14px};display:block;overflow:auto;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-toolbar{font-weight:400;opacity:var(--dark-primary-opacity);border-bottom:1px solid #e0e0e0}paper-menu{padding-bottom:0}paper-icon-item{--paper-icon-item:{cursor:pointer};--paper-item-icon:{color:#000;opacity:var(--dark-secondary-opacity)};--paper-item-selected:{color:var(--default-primary-color);background-color:#e8e8e8;opacity:1};}paper-icon-item.iron-selected{--paper-item-icon:{color:var(--default-primary-color);opacity:1};}paper-icon-item .item-text{@apply(--sidebar-text)}paper-icon-item.iron-selected .item-text{opacity:1}paper-icon-item.logout{margin-top:16px}.divider{height:1px;background-color:#000;margin:4px 0;opacity:var(--dark-divider-opacity)}.setting{@apply(--sidebar-text)}.subheader{@apply(--sidebar-text);padding:16px}.dev-tools{padding:0 8px;opacity:var(--dark-secondary-opacity)}</style><app-toolbar><div main-title="">Home Assistant</div><paper-icon-button icon="mdi:chevron-left" hidden$="[[narrow]]" on-tap="toggleMenu"></paper-icon-button></app-toolbar><paper-menu attr-for-selected="data-panel" selected="[[selected]]" on-iron-select="menuSelect"><paper-icon-item on-tap="menuClicked" data-panel="states"><iron-icon item-icon="" icon="mdi:apps"></iron-icon><span class="item-text">States</span></paper-icon-item><template is="dom-repeat" items="[[computePanels(panels)]]"><paper-icon-item on-tap="menuClicked" data-panel$="[[item.url_path]]"><iron-icon item-icon="" icon="[[item.icon]]"></iron-icon><span class="item-text">[[item.title]]</span></paper-icon-item></template><paper-icon-item on-tap="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="mdi:exit-to-app"></iron-icon><span class="item-text">Log Out</span></paper-icon-item></paper-menu><div><template is="dom-if" if="[[supportPush]]"><div class="divider"></div><paper-item class="horizontal layout justified"><div class="setting">Push Notifications</div><paper-toggle-button on-change="handlePushChange" checked="{{pushToggleChecked}}"></paper-toggle-button></paper-item></template><div class="divider"></div><div class="subheader">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="mdi:remote" data-panel="dev-service" alt="Services" title="Services" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:code-tags" data-panel="dev-state" alt="States" title="States" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:radio-tower" data-panel="dev-event" alt="Events" title="Events" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:file-xml" data-panel="dev-template" alt="Templates" title="Templates" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:information-outline" data-panel="dev-info" alt="Info" title="Info" on-tap="menuClicked"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"ha-sidebar",behaviors:[window.hassBehavior],properties:{hass:{type:Object},menuShown:{type:Boolean},menuSelected:{type:String},narrow:{type:Boolean},selected:{type:String,bindNuclear:function(t){return t.navigationGetters.activePanelName}},panels:{type:Array,bindNuclear:function(t){return[t.navigationGetters.panels,function(t){return t.toJS()}]}},supportPush:{type:Boolean,value:!1,bindNuclear:function(t){return t.pushNotificationGetters.isSupported}},pushToggleChecked:{type:Boolean,bindNuclear:function(t){return t.pushNotificationGetters.isActive}}},created:function(){this._boundUpdateStyles=this.updateStyles.bind(this)},computePanels:function(t){var e={map:1,logbook:2,history:3},n=[];return Object.keys(t).forEach(function(e){t[e].title&&n.push(t[e])}),n.sort(function(t,n){var i=t.component_name in e,o=n.component_name in e;return i&&o?e[t.component_name]-e[n.component_name]:i?-1:o?1:t.title>n.title?1:t.title<n.title?-1:0}),n},menuSelect:function(){this.debounce("updateStyles",this._boundUpdateStyles,1)},menuClicked:function(t){for(var e=t.target,n=5,i=e.getAttribute("data-panel");n&&!i;)e=e.parentElement,i=e.getAttribute("data-panel"),n--;n&&this.selectPanel(i)},toggleMenu:function(){this.fire("close-menu")},selectPanel:function(t){if(t!==this.selected){if("logout"===t)return void this.handleLogOut();this.hass.navigationActions.navigate.apply(null,t.split("/")),this.debounce("updateStyles",this._boundUpdateStyles,1)}},handlePushChange:function(t){t.target.checked?this.hass.pushNotificationActions.subscribePushNotifications().then(function(t){this.pushToggleChecked=t}.bind(this)):this.hass.pushNotificationActions.unsubscribePushNotifications().then(function(t){this.pushToggleChecked=!t}.bind(this))},handleLogOut:function(){this.hass.authActions.logOut()}})</script><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager hass="[[hass]]"></notification-manager><more-info-dialog hass="[[hass]]"></more-info-dialog><ha-voice-command-dialog hass="[[hass]]"></ha-voice-command-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer="" narrow="[[narrow]]" hass="[[hass]]"></ha-sidebar><iron-pages main="" attr-for-selected="id" fallback-selection="panel-resolver" selected="[[activePanel]]" selected-attribute="panel-visible"><partial-cards id="states" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-cards><partial-panel-resolver id="panel-resolver" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-panel-resolver></iron-pages></paper-drawer-panel></template></dom-module><script>Polymer({is:"home-assistant-main",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!0},activePanel:{type:String,bindNuclear:function(e){return e.navigationGetters.activePanelName},observer:"activePanelChanged"},showSidebar:{type:Boolean,value:!1,bindNuclear:function(e){return e.navigationGetters.showSidebar}}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():this.hass.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&this.hass.navigationActions.showSidebar(!1)},activePanelChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){window.removeInitMsg(),this.hass.startUrlSync()},computeForceNarrow:function(e,n){return e||!n},detached:function(){this.hass.stopUrlSync()}})</script></div><dom-module id="home-assistant"><template><template is="dom-if" if="[[loaded]]"><home-assistant-main hass="[[hass]]"></home-assistant-main></template><template is="dom-if" if="[[!loaded]]"><login-form hass="[[hass]]" force-show-loading="[[computeForceShowLoading(dataLoaded, iconsLoaded)]]"></login-form></template></template></dom-module><script>Polymer({is:"home-assistant",hostAttributes:{icons:null},behaviors:[window.hassBehavior],properties:{hass:{type:Object,value:window.hass},icons:{type:String},dataLoaded:{type:Boolean,bindNuclear:function(o){return o.syncGetters.isDataLoaded}},iconsLoaded:{type:Boolean,value:!1},loaded:{type:Boolean,computed:"computeLoaded(dataLoaded, iconsLoaded)"}},computeLoaded:function(o,t){return o&&t},computeForceShowLoading:function(o,t){return o&&!t},loadIcons:function(){var o=function(){this.iconsLoaded=!0}.bind(this);this.importHref("/static/mdi-"+this.icons+".html",o,function(){this.importHref("/static/mdi.html",o,o)})},ready:function(){this.loadIcons()}})</script></body></html> \ No newline at end of file +this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(c),!function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(c,e,f),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e<this.effect.children.length;e++)this.effect.children[e]._animation=t,this._childAnimations[e]._setExternalAnimation(t)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var t=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(i){var n=e.timeline._play(i);this._childAnimations.push(n),n.playbackRate=this.playbackRate,this._paused&&n.pause(),i._animation=this.effect._animation,this._arrangeChildren(n,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i))}.bind(this))}},_arrangeChildren:function(t,e){null===this.startTime?t.currentTime=this.currentTime-e/this.playbackRate:t.startTime!==this.startTime+e/this.playbackRate&&(t.startTime=this.startTime+e/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(t,e){this._resolveFinishedPromise=function(){t(this)},this._rejectFinishedPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(e.animationsWithPromises.indexOf(this)==-1&&e.animationsWithPromises.push(this),this._readyPromise=new Promise(function(t,e){this._resolveReadyPromise=function(){t(this)},this._rejectReadyPromise=function(){e({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(t){"function"==typeof t?this._animation.onfinish=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.onfinish=t},get oncancel(){return this._animation.oncancel},set oncancel(t){"function"==typeof t?this._animation.oncancel=function(e){e.target=this,t.call(this,e)}.bind(this):this._animation.oncancel=t},get currentTime(){this._updatePromises();var t=this._animation.currentTime;return this._updatePromises(),t},set currentTime(t){this._updatePromises(),this._animation.currentTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.currentTime=t-i}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(t){this._updatePromises(),this._animation.startTime=isFinite(t)?t:Math.sign(t)*Number.MAX_VALUE,this._register(),this._forEachChild(function(e,i){e.startTime=t+i}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(t){this._updatePromises();var e=this.currentTime;this._animation.playbackRate=t,this._forEachChild(function(e){e.playbackRate=t}),null!==e&&(this.currentTime=e),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),e.awaitStartTime(this),this._forEachChild(function(t){var e=t.currentTime;t.play(),t.currentTime=e}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(t){t.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var t=this.currentTime;this._animation.reverse(),this._forEachChild(function(t){t.reverse()}),null!==t&&(this.currentTime=t),this._updatePromises()},addEventListener:function(t,e){var i=e;"function"==typeof e&&(i=function(t){t.target=this,e.call(this,t)}.bind(this),e._wrapper=i),this._animation.addEventListener(t,i)},removeEventListener:function(t,e){this._animation.removeEventListener(t,e&&e._wrapper||e)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(e){var i=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(t){e.call(this,t,i),this.effect instanceof window.SequenceEffect&&(i+=t.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var n=this.effect._timing,r=this.currentTime;null!==r&&(r=t.calculateIterationProgress(t.calculateActiveDuration(n),r,n)),(null==r||isNaN(r))&&this._removeChildAnimations()}}},window.Animation=e.Animation}(c,e,f),function(t,e,i){function n(e){this._frames=t.normalizeKeyframes(e)}function r(){for(var t=!1;u.length;){var e=u.shift();e._updateChildren(),t=!0}return t}var o=function(t){if(t._animation=void 0,t instanceof window.SequenceEffect||t instanceof window.GroupEffect)for(var e=0;e<t.children.length;e++)o(t.children[e])};e.removeMulti=function(t){for(var e=[],i=0;i<t.length;i++){var n=t[i];n._parent?(e.indexOf(n._parent)==-1&&e.push(n._parent),n._parent.children.splice(n._parent.children.indexOf(n),1),n._parent=null,o(n)):n._animation&&n._animation.effect==n&&(n._animation.cancel(),n._animation.effect=new KeyframeEffect(null,[]),n._animation._callback&&(n._animation._callback._animation=null),n._animation._rebuildUnderlyingAnimation(),o(n))}for(i=0;i<e.length;i++)e[i]._rebuild()},e.KeyframeEffect=function(e,i,r,o){return this.target=e,this._parent=null,r=t.numericTimingToObject(r),this._timingInput=t.cloneTimingInput(r),this._timing=t.normalizeTimingInput(r),this.timing=t.makeTiming(r,!1,this),this.timing._effect=this,"function"==typeof i?(t.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=i):this._normalizedKeyframes=new n(i),this._keyframes=i,this.activeDuration=t.calculateActiveDuration(this._timing),this._id=o,this},e.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(t){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=t,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var e=new KeyframeEffect(this.target,[],t.cloneTimingInput(this._timingInput),this._id);return e._normalizedKeyframes=this._normalizedKeyframes,e._keyframes=this._keyframes,e},remove:function(){e.removeMulti([this])}};var a=Element.prototype.animate;Element.prototype.animate=function(t,i){var n="";return i&&i.id&&(n=i.id),e.timeline._play(new e.KeyframeEffect(this,t,i,n))};var s=document.createElementNS("http://www.w3.org/1999/xhtml","div");e.newUnderlyingAnimationForKeyframeEffect=function(t){if(t){var e=t.target||s,i=t._keyframes;"function"==typeof i&&(i=[]);var n=t._timingInput;n.id=t._id}else var e=s,i=[],n=0;return a.apply(e,[i,n])},e.bindAnimationForKeyframeEffect=function(t){t.effect&&"function"==typeof t.effect._normalizedKeyframes&&e.bindAnimationForCustomEffect(t)};var u=[];e.awaitStartTime=function(t){null===t.startTime&&t._isGroup&&(0==u.length&&requestAnimationFrame(r),u.push(t))};var c=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){e.timeline._updateAnimationsPromises();var t=c.apply(this,arguments);return r()&&(t=c.apply(this,arguments)),e.timeline._updateAnimationsPromises(),t}}),window.KeyframeEffect=e.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(t){return null!==t.effect&&t.effect.target==this}.bind(this))}}(c,e,f),function(t,e,i){function n(t){t._registered||(t._registered=!0,a.push(t),s||(s=!0,requestAnimationFrame(r)))}function r(t){var e=a;a=[],e.sort(function(t,e){return t._sequenceNumber-e._sequenceNumber}),e=e.filter(function(t){t();var e=t._animation?t._animation.playState:"idle";return"running"!=e&&"pending"!=e&&(t._registered=!1),t._registered}),a.push.apply(a,e),a.length?(s=!0,requestAnimationFrame(r)):s=!1}var o=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);e.bindAnimationForCustomEffect=function(e){var i,r=e.effect.target,a="function"==typeof e.effect.getFrames();i=a?e.effect.getFrames():e.effect._onsample;var s=e.effect.timing,u=null;s=t.normalizeTimingInput(s);var c=function(){var n=c._animation?c._animation.currentTime:null;null!==n&&(n=t.calculateIterationProgress(t.calculateActiveDuration(s),n,s),isNaN(n)&&(n=null)),n!==u&&(a?i(n,r,e.effect):i(n,e.effect,e.effect._animation)),u=n};c._animation=e,c._registered=!1,c._sequenceNumber=o++,e._callback=c,n(c)};var a=[],s=!1;e.Animation.prototype._register=function(){this._callback&&n(this._callback)}}(c,e,f),function(t,e,i){function n(t){return t._timing.delay+t.activeDuration+t._timing.endDelay}function r(e,i,n){this._id=n,this._parent=null,this.children=e||[],this._reparent(this.children),i=t.numericTimingToObject(i),this._timingInput=t.cloneTimingInput(i),this._timing=t.normalizeTimingInput(i,!0),this.timing=t.makeTiming(i,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){r.apply(this,arguments)},window.GroupEffect=function(){r.apply(this,arguments)},r.prototype={_isAncestor:function(t){for(var e=this;null!==e;){if(e==t)return!0;e=e._parent}return!1},_rebuild:function(){for(var t=this;t;)"auto"===t.timing.duration&&(t._timing.duration=t.activeDuration),t=t._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(t){e.removeMulti(t);for(var i=0;i<t.length;i++)t[i]._parent=this},_putChild:function(t,e){for(var i=e?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",n=0;n<t.length;n++)if(this._isAncestor(t[n]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:i};for(var n=0;n<t.length;n++)e?this.children.push(t[n]):this.children.unshift(t[n]);this._reparent(t),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var e=t.cloneTimingInput(this._timingInput),i=[],n=0;n<this.children.length;n++)i.push(this.children[n].clone());return this instanceof GroupEffect?new GroupEffect(i,e):new SequenceEffect(i,e)},remove:function(){e.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t+=n(e)}),Math.max(t,0)}}),window.GroupEffect.prototype=Object.create(r.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var t=0;return this.children.forEach(function(e){t=Math.max(t,n(e))}),t}}),e.newUnderlyingAnimationForGroup=function(i){var n,r=null,o=function(e){var i=n._wrapper;if(i&&"pending"!=i.playState&&i.effect)return null==e?void i._removeChildAnimations():0==e&&i.playbackRate<0&&(r||(r=t.normalizeTimingInput(i.effect.timing)),e=t.calculateIterationProgress(t.calculateActiveDuration(r),-1,r),isNaN(e)||null==e)?(i._forEachChild(function(t){t.currentTime=-1}),void i._removeChildAnimations()):void 0},a=new KeyframeEffect(null,[],i._timing,i._id);return a.onsample=o,n=e.timeline._play(a)},e.bindAnimationForGroup=function(t){t._animation._wrapper=t,t._isGroup=!0,e.awaitStartTime(t),t._constructChildAnimations(),t._setExternalAnimation(t)},e.groupChildDuration=n}(c,e,f),b.true=a}({},function(){return this}())</script><script>Polymer({is:"opaque-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"1"}],this.timingFromConfig(e)),i.style.opacity="0",this._effect},complete:function(e){e.node.style.opacity=""}})</script><script>!function(){"use strict";var e={pageX:0,pageY:0},t=null,l=[];Polymer.IronDropdownScrollManager={get currentLockingElement(){return this._lockingElements[this._lockingElements.length-1]},elementIsScrollLocked:function(e){var t=this.currentLockingElement;if(void 0===t)return!1;var l;return!!this._hasCachedLockedElement(e)||!this._hasCachedUnlockedElement(e)&&(l=!!t&&t!==e&&!this._composedTreeContains(t,e),l?this._lockedElementCache.push(e):this._unlockedElementCache.push(e),l)},pushScrollLock:function(e){this._lockingElements.indexOf(e)>=0||(0===this._lockingElements.length&&this._lockScrollInteractions(),this._lockingElements.push(e),this._lockedElementCache=[],this._unlockedElementCache=[])},removeScrollLock:function(e){var t=this._lockingElements.indexOf(e);t!==-1&&(this._lockingElements.splice(t,1),this._lockedElementCache=[],this._unlockedElementCache=[],0===this._lockingElements.length&&this._unlockScrollInteractions())},_lockingElements:[],_lockedElementCache:null,_unlockedElementCache:null,_hasCachedLockedElement:function(e){return this._lockedElementCache.indexOf(e)>-1},_hasCachedUnlockedElement:function(e){return this._unlockedElementCache.indexOf(e)>-1},_composedTreeContains:function(e,t){var l,n,o,r;if(e.contains(t))return!0;for(l=Polymer.dom(e).querySelectorAll("content"),o=0;o<l.length;++o)for(n=Polymer.dom(l[o]).getDistributedNodes(),r=0;r<n.length;++r)if(this._composedTreeContains(n[r],t))return!0;return!1},_scrollInteractionHandler:function(t){if(t.cancelable&&this._shouldPreventScrolling(t)&&t.preventDefault(),t.targetTouches){var l=t.targetTouches[0];e.pageX=l.pageX,e.pageY=l.pageY}},_lockScrollInteractions:function(){this._boundScrollHandler=this._boundScrollHandler||this._scrollInteractionHandler.bind(this),document.addEventListener("wheel",this._boundScrollHandler,!0),document.addEventListener("mousewheel",this._boundScrollHandler,!0),document.addEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.addEventListener("touchstart",this._boundScrollHandler,!0),document.addEventListener("touchmove",this._boundScrollHandler,!0)},_unlockScrollInteractions:function(){document.removeEventListener("wheel",this._boundScrollHandler,!0),document.removeEventListener("mousewheel",this._boundScrollHandler,!0),document.removeEventListener("DOMMouseScroll",this._boundScrollHandler,!0),document.removeEventListener("touchstart",this._boundScrollHandler,!0),document.removeEventListener("touchmove",this._boundScrollHandler,!0)},_shouldPreventScrolling:function(e){var n=Polymer.dom(e).rootTarget;if("touchmove"!==e.type&&t!==n&&(t=n,l=this._getScrollableNodes(Polymer.dom(e).path)),!l.length)return!0;if("touchstart"===e.type)return!1;var o=this._getScrollInfo(e);return!this._getScrollingNode(l,o.deltaX,o.deltaY)},_getScrollableNodes:function(e){for(var t=[],l=e.indexOf(this.currentLockingElement),n=0;n<=l;n++)if(e[n].nodeType===Node.ELEMENT_NODE){var o=e[n],r=o.style;"scroll"!==r.overflow&&"auto"!==r.overflow&&(r=window.getComputedStyle(o)),"scroll"!==r.overflow&&"auto"!==r.overflow||t.push(o)}return t},_getScrollingNode:function(e,t,l){if(t||l)for(var n=Math.abs(l)>=Math.abs(t),o=0;o<e.length;o++){var r=e[o],c=!1;if(c=n?l<0?r.scrollTop>0:r.scrollTop<r.scrollHeight-r.clientHeight:t<0?r.scrollLeft>0:r.scrollLeft<r.scrollWidth-r.clientWidth)return r}},_getScrollInfo:function(t){var l={deltaX:t.deltaX,deltaY:t.deltaY};if("deltaX"in t);else if("wheelDeltaX"in t)l.deltaX=-t.wheelDeltaX,l.deltaY=-t.wheelDeltaY;else if("axis"in t)l.deltaX=1===t.axis?t.detail:0,l.deltaY=2===t.axis?t.detail:0;else if(t.targetTouches){var n=t.targetTouches[0];l.deltaX=e.pageX-n.pageX,l.deltaY=e.pageY-n.pageY}return l}}}()</script><dom-module id="iron-dropdown" assetpath="../bower_components/iron-dropdown/"><template><style>:host{position:fixed}#contentWrapper ::content>*{overflow:auto}#contentWrapper.animating ::content>*{overflow:hidden}</style><div id="contentWrapper"><content id="content" select=".dropdown-content"></content></div></template><script>!function(){"use strict";Polymer({is:"iron-dropdown",behaviors:[Polymer.IronControlState,Polymer.IronA11yKeysBehavior,Polymer.IronOverlayBehavior,Polymer.NeonAnimationRunnerBehavior],properties:{horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},openAnimationConfig:{type:Object},closeAnimationConfig:{type:Object},focusTarget:{type:Object},noAnimations:{type:Boolean,value:!1},allowOutsideScroll:{type:Boolean,value:!1},_boundOnCaptureScroll:{type:Function,value:function(){return this._onCaptureScroll.bind(this)}}},listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},observers:["_updateOverlayPosition(positionTarget, verticalAlign, horizontalAlign, verticalOffset, horizontalOffset)"],get containedElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},get _focusTarget(){return this.focusTarget||this.containedElement},ready:function(){this._scrollTop=0,this._scrollLeft=0,this._refitOnScrollRAF=null},attached:function(){this.sizingTarget&&this.sizingTarget!==this||(this.sizingTarget=this.containedElement||this)},detached:function(){this.cancelAnimation(),document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)},_openedChanged:function(){this.opened&&this.disabled?this.cancel():(this.cancelAnimation(),this._updateAnimationConfig(),this._saveScrollPosition(),this.opened?(document.addEventListener("scroll",this._boundOnCaptureScroll),!this.allowOutsideScroll&&Polymer.IronDropdownScrollManager.pushScrollLock(this)):(document.removeEventListener("scroll",this._boundOnCaptureScroll),Polymer.IronDropdownScrollManager.removeScrollLock(this)),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments))},_renderOpened:function(){!this.noAnimations&&this.animationConfig.open?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("open")):Polymer.IronOverlayBehaviorImpl._renderOpened.apply(this,arguments)},_renderClosed:function(){!this.noAnimations&&this.animationConfig.close?(this.$.contentWrapper.classList.add("animating"),this.playAnimation("close")):Polymer.IronOverlayBehaviorImpl._renderClosed.apply(this,arguments)},_onNeonAnimationFinish:function(){this.$.contentWrapper.classList.remove("animating"),this.opened?this._finishRenderOpened():this._finishRenderClosed()},_onCaptureScroll:function(){this.allowOutsideScroll?(this._refitOnScrollRAF&&window.cancelAnimationFrame(this._refitOnScrollRAF),this._refitOnScrollRAF=window.requestAnimationFrame(this.refit.bind(this))):this._restoreScrollPosition()},_saveScrollPosition:function(){document.scrollingElement?(this._scrollTop=document.scrollingElement.scrollTop,this._scrollLeft=document.scrollingElement.scrollLeft):(this._scrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop),this._scrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft))},_restoreScrollPosition:function(){document.scrollingElement?(document.scrollingElement.scrollTop=this._scrollTop,document.scrollingElement.scrollLeft=this._scrollLeft):(document.documentElement.scrollTop=this._scrollTop,document.documentElement.scrollLeft=this._scrollLeft,document.body.scrollTop=this._scrollTop,document.body.scrollLeft=this._scrollLeft)},_updateAnimationConfig:function(){for(var o=this.containedElement,t=[].concat(this.openAnimationConfig||[]).concat(this.closeAnimationConfig||[]),n=0;n<t.length;n++)t[n].node=o;this.animationConfig={open:this.openAnimationConfig,close:this.closeAnimationConfig}},_updateOverlayPosition:function(){this.isAttached&&this.notifyResize()},_applyFocus:function(){var o=this.focusTarget||this.containedElement;o&&this.opened&&!this.noAutoFocus?o.focus():Polymer.IronOverlayBehaviorImpl._applyFocus.apply(this,arguments)}})}()</script></dom-module><script>Polymer({is:"fade-in-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(i){var e=i.node;return this._effect=new KeyframeEffect(e,[{opacity:"0"},{opacity:"1"}],this.timingFromConfig(i)),this._effect}})</script><script>Polymer({is:"fade-out-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node;return this._effect=new KeyframeEffect(i,[{opacity:"1"},{opacity:"0"}],this.timingFromConfig(e)),this._effect}})</script><script>Polymer({is:"paper-menu-grow-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;return this._effect=new KeyframeEffect(i,[{height:n/2+"px"},{height:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-grow-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n/2+"px"},{width:n+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-width-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.width;return this._effect=new KeyframeEffect(i,[{width:n+"px"},{width:n-n/20+"px"}],this.timingFromConfig(e)),this._effect}}),Polymer({is:"paper-menu-shrink-height-animation",behaviors:[Polymer.NeonAnimationBehavior],configure:function(e){var i=e.node,t=i.getBoundingClientRect(),n=t.height;t.top;return this.setPrefixedProperty(i,"transformOrigin","0 0"),this._effect=new KeyframeEffect(i,[{height:n+"px",transform:"translateY(0)"},{height:n/2+"px",transform:"translateY(-20px)"}],this.timingFromConfig(e)),this._effect}})</script><dom-module id="paper-menu-button" assetpath="../bower_components/paper-menu-button/"><template><style>:host{display:inline-block;position:relative;padding:8px;outline:0;@apply(--paper-menu-button)}:host([disabled]){cursor:auto;color:var(--disabled-text-color);@apply(--paper-menu-button-disabled)}iron-dropdown{@apply(--paper-menu-button-dropdown)}.dropdown-content{@apply(--shadow-elevation-2dp);position:relative;border-radius:2px;background-color:var(--paper-menu-button-dropdown-background,--primary-background-color);@apply(--paper-menu-button-content)}:host([vertical-align=top]) .dropdown-content{margin-bottom:20px;margin-top:-10px;top:10px}:host([vertical-align=bottom]) .dropdown-content{bottom:10px;margin-bottom:-10px;margin-top:20px}#trigger{cursor:pointer}</style><div id="trigger" on-tap="toggle"><content select=".dropdown-trigger"></content></div><iron-dropdown id="dropdown" opened="{{opened}}" horizontal-align="[[horizontalAlign]]" vertical-align="[[verticalAlign]]" dynamic-align="[[dynamicAlign]]" horizontal-offset="[[horizontalOffset]]" vertical-offset="[[verticalOffset]]" no-overlap="[[noOverlap]]" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]" no-animations="[[noAnimations]]" focus-target="[[_dropdownContent]]" allow-outside-scroll="[[allowOutsideScroll]]" restore-focus-on-close="[[restoreFocusOnClose]]" on-iron-overlay-canceled="__onIronOverlayCanceled"><div class="dropdown-content"><content id="content" select=".dropdown-content"></content></div></iron-dropdown></template><script>!function(){"use strict";var e={ANIMATION_CUBIC_BEZIER:"cubic-bezier(.3,.95,.5,1)",MAX_ANIMATION_TIME_MS:400},n=Polymer({is:"paper-menu-button",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronControlState],properties:{opened:{type:Boolean,value:!1,notify:!0,observer:"_openedChanged"},horizontalAlign:{type:String,value:"left",reflectToAttribute:!0},verticalAlign:{type:String,value:"top",reflectToAttribute:!0},dynamicAlign:{type:Boolean},horizontalOffset:{type:Number,value:0,notify:!0},verticalOffset:{type:Number,value:0,notify:!0},noOverlap:{type:Boolean},noAnimations:{type:Boolean,value:!1},ignoreSelect:{type:Boolean,value:!1},closeOnActivate:{type:Boolean,value:!1},openAnimationConfig:{type:Object,value:function(){return[{name:"fade-in-animation",timing:{delay:100,duration:200}},{name:"paper-menu-grow-width-animation",timing:{delay:100,duration:150,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-grow-height-animation",timing:{delay:100,duration:275,easing:e.ANIMATION_CUBIC_BEZIER}}]}},closeAnimationConfig:{type:Object,value:function(){return[{name:"fade-out-animation",timing:{duration:150}},{name:"paper-menu-shrink-width-animation",timing:{delay:100,duration:50,easing:e.ANIMATION_CUBIC_BEZIER}},{name:"paper-menu-shrink-height-animation",timing:{duration:200,easing:"ease-in"}}]}},allowOutsideScroll:{type:Boolean,value:!1},restoreFocusOnClose:{type:Boolean,value:!0},_dropdownContent:{type:Object}},hostAttributes:{role:"group","aria-haspopup":"true"},listeners:{"iron-activate":"_onIronActivate","iron-select":"_onIronSelect"},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},toggle:function(){this.opened?this.close():this.open()},open:function(){this.disabled||this.$.dropdown.open()},close:function(){this.$.dropdown.close()},_onIronSelect:function(e){this.ignoreSelect||this.close()},_onIronActivate:function(e){this.closeOnActivate&&this.close()},_openedChanged:function(e,n){e?(this._dropdownContent=this.contentElement,this.fire("paper-dropdown-open")):null!=n&&this.fire("paper-dropdown-close")},_disabledChanged:function(e){Polymer.IronControlState._disabledChanged.apply(this,arguments),e&&this.opened&&this.close()},__onIronOverlayCanceled:function(e){var n=e.detail,t=(Polymer.dom(n).rootTarget,this.$.trigger),o=Polymer.dom(n).path;o.indexOf(t)>-1&&e.preventDefault()}});Object.keys(e).forEach(function(t){n[t]=e[t]}),Polymer.PaperMenuButton=n}()</script></dom-module><iron-iconset-svg name="paper-dropdown-menu" size="24"><svg><defs><g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g></defs></svg></iron-iconset-svg><dom-module id="paper-dropdown-menu-shared-styles" assetpath="../bower_components/paper-dropdown-menu/"><template><style>:host{display:inline-block;position:relative;text-align:left;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--paper-input-container-input:{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;box-sizing:border-box;cursor:pointer};@apply(--paper-dropdown-menu)}:host([disabled]){@apply(--paper-dropdown-menu-disabled)}:host([noink]) paper-ripple{display:none}:host([no-label-float]) paper-ripple{top:8px}paper-ripple{top:12px;left:0;bottom:8px;right:0;@apply(--paper-dropdown-menu-ripple)}paper-menu-button{display:block;padding:0;@apply(--paper-dropdown-menu-button)}paper-input{@apply(--paper-dropdown-menu-input)}iron-icon{color:var(--disabled-text-color);@apply(--paper-dropdown-menu-icon)}</style></template></dom-module><dom-module id="paper-dropdown-menu" assetpath="../bower_components/paper-dropdown-menu/"><template><style include="paper-dropdown-menu-shared-styles"></style><span role="button"></span><paper-menu-button id="menuButton" vertical-align="[[verticalAlign]]" horizontal-align="[[horizontalAlign]]" dynamic-align="[[dynamicAlign]]" vertical-offset="[[_computeMenuVerticalOffset(noLabelFloat)]]" disabled="[[disabled]]" no-animations="[[noAnimations]]" on-iron-select="_onIronSelect" on-iron-deselect="_onIronDeselect" opened="{{opened}}" close-on-activate="" allow-outside-scroll="[[allowOutsideScroll]]"><div class="dropdown-trigger"><paper-ripple></paper-ripple><paper-input type="text" invalid="[[invalid]]" readonly="" disabled="[[disabled]]" value="[[selectedItemLabel]]" placeholder="[[placeholder]]" error-message="[[errorMessage]]" always-float-label="[[alwaysFloatLabel]]" no-label-float="[[noLabelFloat]]" label="[[label]]"><iron-icon icon="paper-dropdown-menu:arrow-drop-down" suffix=""></iron-icon></paper-input></div><content id="content" select=".dropdown-content"></content></paper-menu-button></template><script>!function(){"use strict";Polymer({is:"paper-dropdown-menu",behaviors:[Polymer.IronButtonState,Polymer.IronControlState,Polymer.IronFormElementBehavior,Polymer.IronValidatableBehavior],properties:{selectedItemLabel:{type:String,notify:!0,readOnly:!0},selectedItem:{type:Object,notify:!0,readOnly:!0},value:{type:String,notify:!0,readOnly:!0},label:{type:String},placeholder:{type:String},errorMessage:{type:String},opened:{type:Boolean,notify:!0,value:!1,observer:"_openedChanged"},allowOutsideScroll:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1,reflectToAttribute:!0},alwaysFloatLabel:{type:Boolean,value:!1},noAnimations:{type:Boolean,value:!1},horizontalAlign:{type:String,value:"right"},verticalAlign:{type:String,value:"top"},dynamicAlign:{type:Boolean}},listeners:{tap:"_onTap"},keyBindings:{"up down":"open",esc:"close"},hostAttributes:{role:"combobox","aria-autocomplete":"none","aria-haspopup":"true"},observers:["_selectedItemChanged(selectedItem)"],attached:function(){var e=this.contentElement;e&&e.selectedItem&&this._setSelectedItem(e.selectedItem)},get contentElement(){return Polymer.dom(this.$.content).getDistributedNodes()[0]},open:function(){this.$.menuButton.open()},close:function(){this.$.menuButton.close()},_onIronSelect:function(e){this._setSelectedItem(e.detail.item)},_onIronDeselect:function(e){this._setSelectedItem(null)},_onTap:function(e){Polymer.Gestures.findOriginalTarget(e)===this&&this.open()},_selectedItemChanged:function(e){var t="";t=e?e.label||e.getAttribute("label")||e.textContent.trim():"",this._setValue(t),this._setSelectedItemLabel(t)},_computeMenuVerticalOffset:function(e){return e?-4:8},_getValidity:function(e){return this.disabled||!this.required||this.required&&!!this.value},_openedChanged:function(){var e=this.opened?"true":"false",t=this.contentElement;t&&t.setAttribute("aria-expanded",e)}})}()</script></dom-module><dom-module id="paper-menu-shared-styles" assetpath="../bower_components/paper-menu/"><template><style>.selectable-content>::content>.iron-selected{font-weight:700;@apply(--paper-menu-selected-item)}.selectable-content>::content>[disabled]{color:var(--paper-menu-disabled-color,--disabled-text-color)}.selectable-content>::content>:focus{position:relative;outline:0;@apply(--paper-menu-focused-item)}.selectable-content>::content>:focus:after{@apply(--layout-fit);background:currentColor;opacity:var(--dark-divider-opacity);content:'';pointer-events:none;@apply(--paper-menu-focused-item-after)}.selectable-content>::content>[colored]:focus:after{opacity:.26}</style></template></dom-module><dom-module id="paper-menu" assetpath="../bower_components/paper-menu/"><template><style include="paper-menu-shared-styles"></style><style>:host{display:block;padding:8px 0;background:var(--paper-menu-background-color,--primary-background-color);color:var(--paper-menu-color,--primary-text-color);@apply(--paper-menu)}</style><div class="selectable-content"><content></content></div></template><script>!function(){Polymer({is:"paper-menu",behaviors:[Polymer.IronMenuBehavior]})}()</script></dom-module><script>Polymer.PaperItemBehaviorImpl={hostAttributes:{role:"option",tabindex:"0"}},Polymer.PaperItemBehavior=[Polymer.IronButtonState,Polymer.IronControlState,Polymer.PaperItemBehaviorImpl]</script><dom-module id="paper-item-shared-styles" assetpath="../bower_components/paper-item/"><template><style>.paper-item,:host{display:block;position:relative;min-height:var(--paper-item-min-height,48px);padding:0 16px}.paper-item{@apply(--paper-font-subhead);border:none;outline:0;background:#fff;width:100%;text-align:left}.paper-item[hidden],:host([hidden]){display:none!important}.paper-item.iron-selected,:host(.iron-selected){font-weight:var(--paper-item-selected-weight,bold);@apply(--paper-item-selected)}.paper-item[disabled],:host([disabled]){color:var(--paper-item-disabled-color,--disabled-text-color);@apply(--paper-item-disabled)}.paper-item:focus,:host(:focus){position:relative;outline:0;@apply(--paper-item-focused)}.paper-item:focus:before,:host(:focus):before{@apply(--layout-fit);background:currentColor;content:'';opacity:var(--dark-divider-opacity);pointer-events:none;@apply(--paper-item-focused-before)}</style></template></dom-module><dom-module id="paper-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item)}</style><content></content></template><script>Polymer({is:"paper-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="state-card-input_select" assetpath="state-summary/"><template><style>:host{display:block}state-badge{float:left;margin-top:10px}paper-dropdown-menu{display:block;margin-left:53px}</style><state-badge state-obj="[[stateObj]]"></state-badge><paper-dropdown-menu on-tap="stopPropagation" selected-item-label="{{selectedOption}}" label="[[stateObj.entityDisplay]]"><paper-menu class="dropdown-content" selected="[[computeSelected(stateObj)]]"><template is="dom-repeat" items="[[stateObj.attributes.options]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></template></dom-module><script>Polymer({is:"state-card-input_select",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object},selectedOption:{type:String,observer:"selectedOptionChanged"}},computeSelected:function(t){return t.attributes.options.indexOf(t.state)},selectedOptionChanged:function(t){""!==t&&t!==this.stateObj.state&&this.hass.serviceActions.callService("input_select","select_option",{option:t,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><script>Polymer.IronRangeBehavior={properties:{value:{type:Number,value:0,notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0},max:{type:Number,value:100,notify:!0},step:{type:Number,value:1,notify:!0},ratio:{type:Number,value:0,readOnly:!0,notify:!0}},observers:["_update(value, min, max, step)"],_calcRatio:function(t){return(this._clampValue(t)-this.min)/(this.max-this.min)},_clampValue:function(t){return Math.min(this.max,Math.max(this.min,this._calcStep(t)))},_calcStep:function(t){if(t=parseFloat(t),!this.step)return t;var e=Math.round((t-this.min)/this.step);return this.step<1?e/(1/this.step)+this.min:e*this.step+this.min},_validateValue:function(){var t=this._clampValue(this.value);return this.value=this.oldValue=isNaN(t)?this.oldValue:t,this.value!==t},_update:function(){this._validateValue(),this._setRatio(100*this._calcRatio(this.value))}}</script><dom-module id="paper-progress" assetpath="../bower_components/paper-progress/"><template><style>:host{display:block;width:200px;position:relative;overflow:hidden}:host([hidden]){display:none!important}#progressContainer{@apply(--paper-progress-container);position:relative}#progressContainer,.indeterminate::after{height:var(--paper-progress-height,4px)}#primaryProgress,#secondaryProgress,.indeterminate::after{@apply(--layout-fit)}#progressContainer,.indeterminate::after{background:var(--paper-progress-container-color,--google-grey-300)}:host(.transiting) #primaryProgress,:host(.transiting) #secondaryProgress{-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-duration:var(--paper-progress-transition-duration,.08s);transition-duration:var(--paper-progress-transition-duration,.08s);-webkit-transition-timing-function:var(--paper-progress-transition-timing-function,ease);transition-timing-function:var(--paper-progress-transition-timing-function,ease);-webkit-transition-delay:var(--paper-progress-transition-delay,0s);transition-delay:var(--paper-progress-transition-delay,0s)}#primaryProgress,#secondaryProgress{@apply(--layout-fit);-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform:scaleX(0);transform:scaleX(0);will-change:transform}#primaryProgress{background:var(--paper-progress-active-color,--google-green-500)}#secondaryProgress{background:var(--paper-progress-secondary-color,--google-green-100)}:host([disabled]) #primaryProgress{background:var(--paper-progress-disabled-active-color,--google-grey-500)}:host([disabled]) #secondaryProgress{background:var(--paper-progress-disabled-secondary-color,--google-grey-300)}:host(:not([disabled])) #primaryProgress.indeterminate{-webkit-transform-origin:right center;transform-origin:right center;-webkit-animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-bar var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}:host(:not([disabled])) #primaryProgress.indeterminate::after{content:"";-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite;animation:indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration,2s) linear infinite}@-webkit-keyframes indeterminate-bar{0%{-webkit-transform:scaleX(1) translateX(-100%)}50%{-webkit-transform:scaleX(1) translateX(0)}75%{-webkit-transform:scaleX(1) translateX(0);-webkit-animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{-webkit-transform:scaleX(0) translateX(0)}}@-webkit-keyframes indeterminate-splitter{0%{-webkit-transform:scaleX(.75) translateX(-125%)}30%{-webkit-transform:scaleX(.75) translateX(-125%);-webkit-animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{-webkit-transform:scaleX(.75) translateX(125%)}100%{-webkit-transform:scaleX(.75) translateX(125%)}}@keyframes indeterminate-bar{0%{transform:scaleX(1) translateX(-100%)}50%{transform:scaleX(1) translateX(0)}75%{transform:scaleX(1) translateX(0);animation-timing-function:cubic-bezier(.28,.62,.37,.91)}100%{transform:scaleX(0) translateX(0)}}@keyframes indeterminate-splitter{0%{transform:scaleX(.75) translateX(-125%)}30%{transform:scaleX(.75) translateX(-125%);animation-timing-function:cubic-bezier(.42,0,.6,.8)}90%{transform:scaleX(.75) translateX(125%)}100%{transform:scaleX(.75) translateX(125%)}}</style><div id="progressContainer"><div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div><div id="primaryProgress"></div></div></template></dom-module><script>Polymer({is:"paper-progress",behaviors:[Polymer.IronRangeBehavior],properties:{secondaryProgress:{type:Number,value:0},secondaryRatio:{type:Number,value:0,readOnly:!0},indeterminate:{type:Boolean,value:!1,observer:"_toggleIndeterminate"},disabled:{type:Boolean,value:!1,reflectToAttribute:!0,observer:"_disabledChanged"}},observers:["_progressChanged(secondaryProgress, value, min, max)"],hostAttributes:{role:"progressbar"},_toggleIndeterminate:function(e){this.toggleClass("indeterminate",e,this.$.primaryProgress)},_transformProgress:function(e,r){var s="scaleX("+r/100+")";e.style.transform=e.style.webkitTransform=s},_mainRatioChanged:function(e){this._transformProgress(this.$.primaryProgress,e)},_progressChanged:function(e,r,s,t){e=this._clampValue(e),r=this._clampValue(r);var a=100*this._calcRatio(e),i=100*this._calcRatio(r);this._setSecondaryRatio(a),this._transformProgress(this.$.secondaryProgress,a),this._transformProgress(this.$.primaryProgress,i),this.secondaryProgress=e,this.setAttribute("aria-valuenow",r),this.setAttribute("aria-valuemin",s),this.setAttribute("aria-valuemax",t)},_disabledChanged:function(e){this.setAttribute("aria-disabled",e?"true":"false")},_hideSecondaryProgress:function(e){return 0===e}})</script><dom-module id="paper-slider" assetpath="../bower_components/paper-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-slider-height,2px));margin-left:calc(15px + var(--paper-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-slider-height,2px)/ 2);height:var(--paper-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-slider-height,2px)/ 2);width:calc(30px + var(--paper-slider-height,2px));height:calc(30px + var(--paper-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-slider-knob-color,--google-blue-700);border:2px solid var(--paper-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-slider-knob-start-color,transparent);border:2px solid var(--paper-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="state-card-input_slider" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-slider{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-slider min="[[min]]" max="[[max]]" value="{{value}}" step="[[step]]" pin="" on-change="selectedValueChanged" on-tap="stopPropagation"></paper-slider></div></template></dom-module><script>Polymer({is:"state-card-input_slider",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object,observer:"stateObjectChanged"},min:{type:Number},max:{type:Number},step:{type:Number},value:{type:Number}},stateObjectChanged:function(t){this.value=Number(t.state),this.min=Number(t.attributes.min),this.max=Number(t.attributes.max),this.step=Number(t.attributes.step)},selectedValueChanged:function(){this.value!==Number(this.stateObj.state)&&this.hass.serviceActions.callService("input_slider","select_value",{value:this.value,entity_id:this.stateObj.entityId})},stopPropagation:function(t){t.stopPropagation()}})</script><dom-module id="state-card-media_player" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>:host{line-height:1.5}.state{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);margin-left:16px;text-align:right}.main-text{@apply(--paper-font-common-nowrap);color:var(--primary-text-color);text-transform:capitalize}.main-text[take-height]{line-height:40px}.secondary-text{@apply(--paper-font-common-nowrap);color:var(--secondary-text-color)}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><div class="state"><div class="main-text" take-height$="[[!secondaryText]]">[[computePrimaryText(stateObj, isPlaying)]]</div><div class="secondary-text">[[secondaryText]]</div></div></div></template></dom-module><script>Polymer({PLAYING_STATES:["playing","paused"],is:"state-card-media_player",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"},secondaryText:{type:String,computed:"computeSecondaryText(stateObj)"}},computeIsPlaying:function(t){return this.PLAYING_STATES.indexOf(t.state)!==-1},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}})</script><dom-module id="state-card-scene" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><paper-button on-tap="activateScene">ACTIVATE</paper-button></div></template></dom-module><script>Polymer({is:"state-card-scene",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},activateScene:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-script" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px;margin-right:-.57em}ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><template is="dom-if" if="[[stateObj.attributes.can_cancel]]"><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></template><template is="dom-if" if="[[!stateObj.attributes.can_cancel]]"><paper-button on-tap="fireScript">ACTIVATE</paper-button></template></div></template></dom-module><script>Polymer({is:"state-card-script",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},fireScript:function(t){t.stopPropagation(),this.hass.serviceActions.callTurnOn(this.stateObj.entityId)}})</script><dom-module id="state-card-toggle" assetpath="state-summary/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>ha-entity-toggle{margin-left:16px}</style><div class="horizontal justified layout"><state-info state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-info><ha-entity-toggle state-obj="[[stateObj]]" hass="[[hass]]"></ha-entity-toggle></div></template></dom-module><script>Polymer({is:"state-card-toggle",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}}})</script><dom-module id="state-card-weblink" assetpath="state-summary/"><template><style>:host{display:block}.name{@apply(--paper-font-common-nowrap);@apply(--paper-font-body1);color:var(--primary-color);text-transform:capitalize;line-height:40px;margin-left:16px}</style><state-badge state-obj="[[stateObj]]" in-dialog="[[inDialog]]"></state-badge><a href$="[[stateObj.state]]" target="_blank" class="name" id="link">[[stateObj.entityDisplay]]</a></template></dom-module><script>Polymer({is:"state-card-weblink",properties:{inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},listeners:{tap:"onTap"},onTap:function(t){t.stopPropagation(),t.target!==this.$.link&&window.open(this.stateObj.state,"_blank")}})</script><script>Polymer({is:"state-card-content",properties:{hass:{type:Object},inDialog:{type:Boolean,value:!1},stateObj:{type:Object}},observers:["inputChanged(hass, inDialog, stateObj)"],inputChanged:function(t,e,s){s&&window.hassUtil.dynamicContentUpdater(this,"STATE-CARD-"+window.hassUtil.stateCardType(this.hass,s).toUpperCase(),{hass:t,stateObj:s,inDialog:e})}})</script><dom-module id="ha-entities-card" assetpath="cards/"><template><style is="custom-style" include="iron-flex"></style><style>.states{padding-bottom:16px}.state{padding:4px 16px;cursor:pointer}.header{@apply(--paper-font-headline);line-height:40px;color:var(--primary-text-color);padding:20px 16px 12px}.header .name{@apply(--paper-font-common-nowrap)}ha-entity-toggle{margin-left:16px}.header-more-info{cursor:pointer}</style><ha-card><div class$="[[computeTitleClass(groupEntity)]]" on-tap="entityTapped"><div class="flex name">[[computeTitle(states, groupEntity)]]</div><template is="dom-if" if="[[showGroupToggle(groupEntity, states)]]"><ha-entity-toggle hass="[[hass]]" state-obj="[[groupEntity]]"></ha-entity-toggle></template></div><div class="states"><template is="dom-repeat" items="[[states]]"><div class="state" on-tap="entityTapped"><state-card-content hass="[[hass]]" class="state-card" state-obj="[[item]]"></state-card-content></div></template></div></ha-card></template></dom-module><script>Polymer({is:"ha-entities-card",properties:{hass:{type:Object},states:{type:Array},groupEntity:{type:Object}},computeTitle:function(t,e){return e?e.entityDisplay:t[0].domain.replace(/_/g," ")},computeTitleClass:function(t){var e="header horizontal layout center ";return t&&(e+="header-more-info"),e},entityTapped:function(t){var e;t.target.classList.contains("paper-toggle-button")||t.target.classList.contains("paper-icon-button")||!t.model&&!this.groupEntity||(t.stopPropagation(),e=t.model?t.model.item.entityId:this.groupEntity.entityId,this.async(function(){this.hass.moreInfoActions.selectEntity(e)}.bind(this),1))},showGroupToggle:function(t,e){var n;return!(!t||!e||"hidden"===t.attributes.control||"on"!==t.state&&"off"!==t.state)&&(n=e.reduce(function(t,e){return t+window.hassUtil.canToggle(this.hass,e.entityId)},0),n>1)}})</script><dom-module id="ha-introduction-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}a{color:var(--dark-primary-color)}ul{margin:8px;padding-left:16px}li{margin-bottom:8px}.content{padding:0 16px 16px}.install{display:block;line-height:1.5em;margin-top:8px;margin-bottom:16px}</style><ha-card header="Welcome Home!"><div class="content"><template is="dom-if" if="[[hass.demo]]">To install Home Assistant, run:<br><code class="install">pip3 install homeassistant<br>hass --open-ui</code></template>Here are some resources to get started.<ul><template is="dom-if" if="[[hass.demo]]"><li><a href="https://home-assistant.io/getting-started/">Home Assistant website</a></li><li><a href="https://home-assistant.io/getting-started/">Installation instructions</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting/">Troubleshooting your installation</a></li></template><li><a href="https://home-assistant.io/getting-started/configuration/" target="_blank">Configuring Home Assistant</a></li><li><a href="https://home-assistant.io/components/" target="_blank">Available components</a></li><li><a href="https://home-assistant.io/getting-started/troubleshooting-configuration/" target="_blank">Troubleshooting your configuration</a></li><li><a href="https://home-assistant.io/help/" target="_blank">Ask community for help</a></li></ul><template is="dom-if" if="[[showHideInstruction]]">To remove this card, edit your config in <code>configuration.yaml</code> and disable the <code>introduction</code> component.</template></div></ha-card></template></dom-module><script>Polymer({is:"ha-introduction-card",properties:{hass:{type:Object},showHideInstruction:{type:Boolean,value:!0}}})</script><dom-module id="ha-media_player-card" assetpath="cards/"><template><style include="paper-material iron-flex iron-flex-alignment iron-positioning">:host{display:block;position:relative;font-size:0;border-radius:2px;overflow:hidden}.banner{position:relative;background-color:#fff;border-top-left-radius:2px;border-top-right-radius:2px}.banner:before{display:block;content:"";width:100%;padding-top:56%;transition:padding-top .8s}.banner.no-cover{background-position:center center;background-image:url(/static/images/card_media_player_bg.png);background-repeat:no-repeat;background-color:var(--primary-color)}.banner.content-type-music:before{padding-top:100%}.banner.no-cover:before{padding-top:88px}.banner>.cover{position:absolute;top:0;left:0;right:0;bottom:0;border-top-left-radius:2px;border-top-right-radius:2px;background-position:center center;background-size:cover;transition:opacity .8s;opacity:1}.banner.is-off>.cover{opacity:0}.banner>.caption{@apply(--paper-font-caption);position:absolute;left:0;right:0;bottom:0;background-color:rgba(0,0,0,var(--dark-secondary-opacity));padding:8px 16px;font-size:14px;font-weight:500;color:#fff;transition:background-color .5s}.banner.is-off>.caption{background-color:initial}.banner>.caption .title{@apply(--paper-font-common-nowrap);font-size:1.2em;margin:8px 0 4px}.progress{width:100%;--paper-progress-active-color:var(--accent-color);--paper-progress-container-color:#FFF}.controls{position:relative;@apply(--paper-font-body1);padding:8px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background-color:#fff}.controls paper-icon-button{width:44px;height:44px}paper-icon-button{opacity:var(--dark-primary-opacity)}paper-icon-button[disabled]{opacity:var(--dark-disabled-opacity)}paper-icon-button.primary{width:56px!important;height:56px!important;background-color:var(--primary-color);color:#fff;border-radius:50%;padding:8px;transition:background-color .5s}paper-icon-button.primary[disabled]{background-color:rgba(0,0,0,var(--dark-disabled-opacity))}[invisible]{visibility:hidden!important}</style><div class$="[[computeBannerClasses(playerObj)]]"><div class="cover" id="cover"></div><div class="caption">[[stateObj.entityDisplay]]<div class="title">[[playerObj.primaryText]]</div>[[playerObj.secondaryText]]<br></div></div><paper-progress max="[[stateObj.attributes.media_duration]]" value="[[playbackPosition]]" hidden$="[[computeHideProgress(playerObj)]]" class="progress"></paper-progress><div class="controls layout horizontal justified"><paper-icon-button icon="mdi:power" on-tap="handleTogglePower" invisible$="[[computeHidePowerButton(playerObj)]]" class="self-center secondary"></paper-icon-button><div><paper-icon-button icon="mdi:skip-previous" invisible$="[[!playerObj.supportsPreviousTrack]]" disabled="[[playerObj.isOff]]" on-tap="handlePrevious"></paper-icon-button><paper-icon-button class="primary" icon="[[computePlaybackControlIcon(playerObj)]]" invisible$="[[!computePlaybackControlIcon(playerObj)]]" disabled="[[playerObj.isOff]]" on-tap="handlePlaybackControl"></paper-icon-button><paper-icon-button icon="mdi:skip-next" invisible$="[[!playerObj.supportsNextTrack]]" disabled="[[playerObj.isOff]]" on-tap="handleNext"></paper-icon-button></div><paper-icon-button icon="mdi:dots-vertical" on-tap="handleOpenMoreInfo" class="self-center secondary"></paper-icon-button></div></template></dom-module><script>Polymer({is:"ha-media_player-card",properties:{hass:{type:Object},stateObj:{type:Object},playerObj:{type:Object,computed:"computePlayerObj(stateObj)",observer:"playerObjChanged"},playbackControlIcon:{type:String,computed:"computePlaybackControlIcon(playerObj)"},playbackPosition:{type:Number},elevation:{type:Number,value:1,reflectToAttribute:!0}},created:function(){this.updatePlaybackPosition=this.updatePlaybackPosition.bind(this)},playerObjChanged:function(t){var e=t.stateObj.attributes.entity_picture;e?this.$.cover.style.backgroundImage="url("+e+")":this.$.cover.style.backgroundImage="",t.isPlaying?(this._positionTracking||(this._positionTracking=setInterval(this.updatePlaybackPosition,1e3)),this.updatePlaybackPosition()):this._positionTracking&&(clearInterval(this._positionTracking),this._positionTracking=null,this.playbackPosition=0)},updatePlaybackPosition:function(){this.playbackPosition=this.playerObj.currentProgress},computeBannerClasses:function(t){var e="banner";return t.isOff||t.isIdle?e+=" is-off no-cover":t.stateObj.attributes.entity_picture?"music"===t.stateObj.attributes.media_content_type&&(e+=" content-type-music"):e+=" no-cover",e},computeHideProgress:function(t){return!t.showProgress},computeHidePowerButton:function(t){return t.isOff?!t.supportsTurnOn:!t.supportsTurnOff},computePlayerObj:function(t){return t.domainModel(this.hass)},computePlaybackControlIcon:function(t){return t.isPlaying?t.supportsPause?"mdi:pause":"mdi:stop":t.isPaused||t.isOff||t.isIdle?t.supportsPlay?"mdi:play":null:""},handleNext:function(t){t.stopPropagation(),this.playerObj.nextTrack()},handleOpenMoreInfo:function(t){t.stopPropagation(),this.async(function(){this.hass.moreInfoActions.selectEntity(this.stateObj.entityId)},1)},handlePlaybackControl:function(t){t.stopPropagation(),this.playerObj.mediaPlayPause()},handlePrevious:function(t){t.stopPropagation(),this.playerObj.previousTrack()},handleTogglePower:function(t){t.stopPropagation(),this.playerObj.togglePower()}})</script><script>!function(){"use strict";Polymer.IronJsonpLibraryBehavior={properties:{libraryLoaded:{type:Boolean,value:!1,notify:!0,readOnly:!0},libraryErrorMessage:{type:String,value:null,notify:!0,readOnly:!0}},observers:["_libraryUrlChanged(libraryUrl)"],_libraryUrlChanged:function(r){this._isReady&&this.libraryUrl&&this._loadLibrary()},_libraryLoadCallback:function(r,i){r?(console.warn("Library load failed:",r.message),this._setLibraryErrorMessage(r.message)):(this._setLibraryErrorMessage(null),this._setLibraryLoaded(!0),this.notifyEvent&&this.fire(this.notifyEvent,i))},_loadLibrary:function(){r.require(this.libraryUrl,this._libraryLoadCallback.bind(this),this.callbackName)},ready:function(){this._isReady=!0,this.libraryUrl&&this._loadLibrary()}};var r={apiMap:{},require:function(r,t,e){var a=this.nameFromUrl(r);this.apiMap[a]||(this.apiMap[a]=new i(a,r,e)),this.apiMap[a].requestNotify(t)},nameFromUrl:function(r){return r.replace(/[\:\/\%\?\&\.\=\-\,]/g,"_")+"_api"}},i=function(r,i,t){if(this.notifiers=[],!t){if(!(i.indexOf(this.callbackMacro)>=0))return void(this.error=new Error("IronJsonpLibraryBehavior a %%callback%% parameter is required in libraryUrl"));t=r+"_loaded",i=i.replace(this.callbackMacro,t)}this.callbackName=t,window[this.callbackName]=this.success.bind(this),this.addScript(i)};i.prototype={callbackMacro:"%%callback%%",loaded:!1,addScript:function(r){var i=document.createElement("script");i.src=r,i.onerror=this.handleError.bind(this);var t=document.querySelector("script")||document.body;t.parentNode.insertBefore(i,t),this.script=i},removeScript:function(){this.script.parentNode&&this.script.parentNode.removeChild(this.script),this.script=null},handleError:function(r){this.error=new Error("Library failed to load"),this.notifyAll(),this.cleanup()},success:function(){this.loaded=!0,this.result=Array.prototype.slice.call(arguments),this.notifyAll(),this.cleanup()},cleanup:function(){delete window[this.callbackName]},notifyAll:function(){this.notifiers.forEach(function(r){r(this.error,this.result)}.bind(this)),this.notifiers=[]},requestNotify:function(r){this.loaded||this.error?r(this.error,this.result):this.notifiers.push(r)}}}()</script><script>Polymer({is:"iron-jsonp-library",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:String,callbackName:String,notifyEvent:String}})</script><script>Polymer({is:"google-legacy-loader",behaviors:[Polymer.IronJsonpLibraryBehavior],properties:{libraryUrl:{type:String,value:"https://www.google.com/jsapi?callback=%%callback%%"},notifyEvent:{type:String,value:"api-load"}},get api(){return google}})</script><dom-module id="ha-weather-card" assetpath="cards/"><template><style>.content{padding:0 16px 16px}.attribution{color:grey}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><ha-card header="[[computeTitle(stateObj)]]"><div class="content"><template is="dom-repeat" items="[[computeCurrentWeather(stateObj)]]"><div>[[item.key]]: [[item.value]]</div></template><div id="chart_area"></div><div class="attribution">[[computeAttribution(stateObj)]]</div></div></ha-card></template></dom-module><script>Polymer({is:"ha-weather-card",properties:{hass:{type:Object},stateObj:{type:Object,observer:"checkRequirements"}},computeTitle:function(t){return t.attributes.friendly_name},computeAttribution:function(t){return t.attributes.attribution},computeCurrentWeather:function(t){return Object.keys(t.attributes).filter(function(t){return["attribution","forecast","friendly_name"].indexOf(t)===-1}).map(function(e){return{key:e,value:t.attributes[e]}})},getDataArray:function(){var t,e=[],i=this.stateObj.attributes.forecast;if(!this.stateObj.attributes.forecast)return[];for(e.push([new Date,this.stateObj.attributes.temperature]),t=0;t<i.length;t++)e.push([new Date(i[t].datetime),i[t].temperature]);return e},checkRequirements:function(){this.stateObj&&window.google&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(document.getElementById("chart_area"))),this.drawChart())},drawChart:function(){var t=new window.google.visualization.DataTable,e={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",chartArea:{left:25,top:5,height:"100%",width:"90%",bottom:25},curveType:"function"};t.addColumn("datetime","Time"),t.addColumn("number","Temperature"),t.addRows(this.getDataArray()),this.chartEngine.draw(t,e)},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["corechart"],callback:function(){this.checkRequirements()}.bind(this)})}})</script><dom-module id="ha-persistent_notification-card" assetpath="cards/"><template><style>:host{@apply(--paper-font-body1)}.content{padding:0 16px 16px}paper-button{margin:8px;font-weight:500}</style><ha-card header="[[computeTitle(stateObj)]]"><div id="pnContent" class="content"></div><paper-button on-tap="dismissTap">DISMISS</paper-button></ha-card></template></dom-module><script>Polymer({is:"ha-persistent_notification-card",properties:{hass:{type:Object},stateObj:{type:Object},scriptLoaded:{type:Boolean,value:!1}},observers:["computeContent(stateObj, scriptLoaded)"],computeTitle:function(t){return t.attributes.title||t.entityDisplay},loadScript:function(){var t=function(){this.scriptLoaded=!0}.bind(this),e=function(){console.error("Micromarkdown was not loaded.")};this.importHref("/static/micromarkdown-js.html",t,e)},computeContent:function(t,e){var i="",n="";e&&(i=this.$.pnContent,n=window.micromarkdown.parse(t.state),i.innerHTML=n)},ready:function(){this.loadScript()},dismissTap:function(t){t.preventDefault(),this.hass.entityActions.delete(this.stateObj)}})</script><script>Polymer({is:"ha-card-chooser",properties:{cardData:{type:Object,observer:"cardDataChanged"}},cardDataChanged:function(a){a&&window.hassUtil.dynamicContentUpdater(this,"HA-"+a.cardType.toUpperCase()+"-CARD",a)}})</script><dom-module id="ha-cards" assetpath="components/"><template><style is="custom-style" include="iron-flex iron-flex-factors"></style><style>:host{display:block;padding-top:8px;padding-right:8px}.badges{font-size:85%;text-align:center}.column{max-width:500px;overflow-x:hidden}.zone-card{margin-left:8px;margin-bottom:8px}@media (max-width:500px){:host{padding-right:0}.zone-card{margin-left:0}}@media (max-width:599px){.column{max-width:600px}}</style><div class="main"><template is="dom-if" if="[[cards.badges]]"><div class="badges"><template is="dom-if" if="[[cards.demo]]"><ha-demo-badge></ha-demo-badge></template><ha-badges-card states="[[cards.badges]]" hass="[[hass]]"></ha-badges-card></div></template><div class="horizontal layout center-justified"><template is="dom-repeat" items="[[cards.columns]]" as="column"><div class="column flex-1"><template is="dom-repeat" items="[[column]]" as="card"><div class="zone-card"><ha-card-chooser card-data="[[card]]" hass="[[hass]]"></ha-card-chooser></div></template></div></template></div></div></template></dom-module><script>!function(){"use strict";function t(t){return t in r?r[t]:30}function e(t){return"group"===t.domain?t.attributes.order:t.entityDisplay.toLowerCase()}var n={camera:4,media_player:3,persistent_notification:0,weather:4},r={configurator:-20,persistent_notification:-15,group:-10,a:-1,updater:0,sun:1,device_tracker:2,alarm_control_panel:3,sensor:5,binary_sensor:6};Polymer({is:"ha-cards",properties:{hass:{type:Object},showIntroduction:{type:Boolean,value:!1},columns:{type:Number,value:2},states:{type:Object},panelVisible:{type:Boolean},viewVisible:{type:Boolean},cards:{type:Object}},observers:["updateCards(columns, states, showIntroduction, panelVisible, viewVisible)"],updateCards:function(t,e,n,r,o){r&&o&&this.debounce("updateCards",function(){this.panelVisible&&this.viewVisible&&(this.cards=this.computeCards(t,e,n))}.bind(this))},computeCards:function(r,o,s){function i(t){return t.filter(function(t){return!(t.entityId in h)})}function a(t){var e=0;for(p=e;p<y.length;p++){if(y[p]<5){e=p;break}y[p]<y[e]&&(e=p)}return y[e]+=t,e}function u(t,e,r){var o,s,i,u;0!==e.length&&(o=[],s=[],i=0,e.forEach(function(t){t.domain in n?(o.push(t),i+=n[t.domain]):(s.push(t),i++)}),i+=s.length>1,u=a(i),s.length>0&&f.columns[u].push({hass:d,cardType:"entities",states:s,groupEntity:r||!1}),o.forEach(function(t){f.columns[u].push({hass:d,cardType:t.domain,stateObj:t})}))}var c,p,d=this.hass,l=o.groupBy(function(t){return t.domain}),h={},f={demo:!1,badges:[],columns:[]},y=[];for(p=0;p<r;p++)f.columns.push([]),y.push(0);return s&&f.columns[a(5)].push({hass:d,cardType:"introduction",showHideInstruction:o.size>0&&!d.demo}),c=this.hass.util.expandGroup,l.keySeq().sortBy(function(e){return t(e)}).forEach(function(n){var r;return"a"===n?void(f.demo=!0):(r=t(n),void(r>=0&&r<10?f.badges.push.apply(f.badges,i(l.get(n)).sortBy(e).toArray()):"group"===n?l.get(n).sortBy(e).forEach(function(t){var e=c(t,o);e.forEach(function(t){h[t.entityId]=!0}),u(t.entityId,e.toArray(),t)}):u(n,i(l.get(n)).sortBy(e).toArray())))}),f.columns=f.columns.filter(function(t){return t.length>0}),f}})}()</script><dom-module id="partial-cards" assetpath="layouts/"><template><style include="iron-flex iron-positioning ha-style">:host{-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-header-layout{background-color:#E5E5E5}paper-tabs{margin-left:12px;--paper-tabs-selection-bar-color:#FFF;text-transform:uppercase}</style><app-header-layout has-scrolling-region="" id="layout"><app-header effects="waterfall" condenses="" fixed=""><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button><div main-title="">[[computeTitle(views, locationName)]]</div><paper-icon-button icon="mdi:microphone" hidden$="[[!canListen]]" on-tap="handleListenClick"></paper-icon-button></app-toolbar><div sticky="" hidden$="[[!views.length]]"><paper-tabs scrollable="" selected="[[currentView]]" attr-for-selected="data-entity" on-iron-select="handleViewSelected"><paper-tab data-entity="" on-tap="scrollToTop">[[locationName]]</paper-tab><template is="dom-repeat" items="[[views]]"><paper-tab data-entity$="[[item.entityId]]" on-tap="scrollToTop"><template is="dom-if" if="[[item.attributes.icon]]"><iron-icon icon="[[item.attributes.icon]]"></iron-icon></template><template is="dom-if" if="[[!item.attributes.icon]]">[[item.entityDisplay]]</template></paper-tab></template></paper-tabs></div></app-header><iron-pages attr-for-selected="data-view" selected="[[currentView]]" selected-attribute="view-visible"><ha-cards data-view="" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards><template is="dom-repeat" items="[[views]]"><ha-cards data-view$="[[item.entityId]]" show-introduction="[[computeShowIntroduction(currentView, introductionLoaded, states)]]" states="[[states]]" columns="[[_columns]]" hass="[[hass]]" panel-visible="[[panelVisible]]"></ha-cards></template></iron-pages></app-header-layout></template></dom-module><script>Polymer({is:"partial-cards",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1,observer:"handleWindowChange"},panelVisible:{type:Boolean,value:!1},_columns:{type:Number,value:1},canListen:{type:Boolean,bindNuclear:function(e){return[e.voiceGetters.isVoiceSupported,e.configGetters.isComponentLoaded("conversation"),function(e,t){return e&&t}]}},introductionLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("introduction")}},locationName:{type:String,bindNuclear:function(e){return e.configGetters.locationName}},currentView:{type:String,bindNuclear:function(e){return[e.viewGetters.currentView,function(e){return e||""}]}},views:{type:Array,bindNuclear:function(e){return[e.viewGetters.views,function(e){return e.valueSeq().sortBy(function(e){return e.attributes.order}).toArray()}]}},states:{type:Object,bindNuclear:function(e){return e.viewGetters.currentViewEntities}}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this.mqls=[300,600,900,1200].map(function(e){var t=window.matchMedia("(min-width: "+e+"px)");return t.addListener(this.handleWindowChange),t}.bind(this))},detached:function(){this.mqls.forEach(function(e){e.removeListener(this.handleWindowChange)})},handleWindowChange:function(){var e=this.mqls.reduce(function(e,t){return e+t.matches},0);this._columns=Math.max(1,e-(!this.narrow&&this.showMenu))},scrollToTop:function(){var e=0,t=this.$.layout.header.scrollTarget,n=function(e,t,n,i){return e/=i,-n*e*(e-2)+t},i=Math.random(),o=200,r=Date.now(),a=t.scrollTop,s=e-a;this._currentAnimationId=i,function c(){var u=Date.now(),l=u-r;l>o?t.scrollTop=e:this._currentAnimationId===i&&(t.scrollTop=n(l,a,s,o),requestAnimationFrame(c.bind(this)))}.call(this)},handleListenClick:function(){this.hass.voiceActions.listen()},handleViewSelected:function(e){var t=e.detail.item.getAttribute("data-entity")||null,n=this.currentView||null;t!==n&&this.async(function(){this.hass.viewActions.selectView(t)}.bind(this),0)},computeTitle:function(e,t){return e.length>0?"Home Assistant":t},computeShowIntroduction:function(e,t,n){return""===e&&(t||0===n.size)}})</script><style is="custom-style">html{font-size:14px;--dark-primary-color:#0288D1;--default-primary-color:#03A9F4;--primary-color:#03A9F4;--light-primary-color:#B3E5FC;--text-primary-color:#ffffff;--accent-color:#FF9800;--primary-background-color:#ffffff;--primary-text-color:#212121;--secondary-text-color:#727272;--disabled-text-color:#bdbdbd;--divider-color:#B6B6B6;--paper-toggle-button-checked-ink-color:#039be5;--paper-toggle-button-checked-button-color:#039be5;--paper-toggle-button-checked-bar-color:#039be5;--paper-slider-knob-color:var(--primary-color);--paper-slider-knob-start-color:var(--primary-color);--paper-slider-pin-color:var(--primary-color);--paper-slider-active-color:var(--primary-color);--paper-slider-secondary-color:var(--light-primary-color);--paper-slider-container-color:var(--divider-color);--google-red-500:#db4437;--google-blue-500:#4285f4;--google-green-500:#0f9d58;--google-yellow-500:#f4b400;--paper-grey-50:#fafafa;--paper-green-400:#66bb6a;--paper-blue-400:#42a5f5;--paper-orange-400:#ffa726;--dark-divider-opacity:0.12;--dark-disabled-opacity:0.38;--dark-secondary-opacity:0.54;--dark-primary-opacity:0.87;--light-divider-opacity:0.12;--light-disabled-opacity:0.3;--light-secondary-opacity:0.7;--light-primary-opacity:1.0}</style><dom-module id="ha-style" assetpath="resources/"><template><style>:host{@apply(--paper-font-body1)}app-header,app-toolbar{background-color:var(--primary-color);font-weight:400;color:#fff}app-toolbar ha-menu-button+[main-title]{margin-left:24px}h1{@apply(--paper-font-title)}</style></template></dom-module><dom-module id="partial-panel-resolver" assetpath="layouts/"><template><style include="iron-flex ha-style">[hidden]{display:none!important}.placeholder{height:100%}.layout{height:calc(100% - 64px)}</style><div hidden$="[[resolved]]" class="placeholder"><app-toolbar><ha-menu-button narrow="[[narrow]]" show-menu="[[showMenu]]"></ha-menu-button></app-toolbar><div class="layout horizontal center-center"><template is="dom-if" if="[[!errorLoading]]"><paper-spinner active=""></paper-spinner></template><template is="dom-if" if="[[errorLoading]]">Error loading panel :(</template></div></div><span id="panel" hidden$="[[!resolved]]"></span></template></dom-module><script>Polymer({is:"partial-panel-resolver",behaviors:[window.hassBehavior],properties:{hass:{type:Object,observer:"updateAttributes"},narrow:{type:Boolean,value:!1,observer:"updateAttributes"},showMenu:{type:Boolean,value:!1,observer:"updateAttributes"},resolved:{type:Boolean,value:!1},errorLoading:{type:Boolean,value:!1},panel:{type:Object,bindNuclear:function(e){return e.navigationGetters.activePanel},observer:"panelChanged"}},panelChanged:function(e){return e?(this.resolved=!1,this.errorLoading=!1,void this.importHref(e.get("url"),function(){window.hassUtil.dynamicContentUpdater(this.$.panel,"ha-panel-"+e.get("component_name"),{hass:this.hass,narrow:this.narrow,showMenu:this.showMenu,panel:e.toJS()}),this.resolved=!0}.bind(this),function(){this.errorLoading=!0}.bind(this),!0)):void(this.$.panel.lastChild&&this.$.panel.removeChild(this.$.panel.lastChild))},updateAttributes:function(){var e=Polymer.dom(this.$.panel).lastChild;e&&(e.hass=this.hass,e.narrow=this.narrow,e.showMenu=this.showMenu)}})</script><dom-module id="paper-toast" assetpath="../bower_components/paper-toast/"><template><style>:host{display:block;position:fixed;background-color:var(--paper-toast-background-color,#323232);color:var(--paper-toast-color,#f1f1f1);min-height:48px;min-width:288px;padding:16px 24px;box-sizing:border-box;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;margin:12px;font-size:14px;cursor:default;-webkit-transition:-webkit-transform .3s,opacity .3s;transition:transform .3s,opacity .3s;opacity:0;-webkit-transform:translateY(100px);transform:translateY(100px);@apply(--paper-font-common-base)}:host(.capsule){border-radius:24px}:host(.fit-bottom){width:100%;min-width:0;border-radius:0;margin:0}:host(.paper-toast-open){opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}</style><span id="label">{{text}}</span><content></content></template><script>!function(){var e=null;Polymer({is:"paper-toast",behaviors:[Polymer.IronOverlayBehavior],properties:{fitInto:{type:Object,value:window,observer:"_onFitIntoChanged"},horizontalAlign:{type:String,value:"left"},verticalAlign:{type:String,value:"bottom"},duration:{type:Number,value:3e3},text:{type:String,value:""},noCancelOnOutsideClick:{type:Boolean,value:!0},noAutoFocus:{type:Boolean,value:!0}},listeners:{transitionend:"__onTransitionEnd"},get visible(){return Polymer.Base._warn("`visible` is deprecated, use `opened` instead"),this.opened},get _canAutoClose(){return this.duration>0&&this.duration!==1/0},created:function(){this._autoClose=null,Polymer.IronA11yAnnouncer.requestAvailability()},show:function(e){"string"==typeof e&&(e={text:e});for(var t in e)0===t.indexOf("_")?Polymer.Base._warn('The property "'+t+'" is private and was not set.'):t in this?this[t]=e[t]:Polymer.Base._warn('The property "'+t+'" is not valid.');this.open()},hide:function(){this.close()},__onTransitionEnd:function(e){e&&e.target===this&&"opacity"===e.propertyName&&(this.opened?this._finishRenderOpened():this._finishRenderClosed())},_openedChanged:function(){null!==this._autoClose&&(this.cancelAsync(this._autoClose),this._autoClose=null),this.opened?(e&&e!==this&&e.close(),e=this,this.fire("iron-announce",{text:this.text}),this._canAutoClose&&(this._autoClose=this.async(this.close,this.duration))):e===this&&(e=null),Polymer.IronOverlayBehaviorImpl._openedChanged.apply(this,arguments)},_renderOpened:function(){this.classList.add("paper-toast-open")},_renderClosed:function(){this.classList.remove("paper-toast-open")},_onFitIntoChanged:function(e){this.positionTarget=e}})}()</script></dom-module><dom-module id="notification-manager" assetpath="managers/"><template><style>paper-toast{z-index:1}</style><paper-toast id="toast" text="{{text}}" no-cancel-on-outside-click="[[neg]]"></paper-toast><paper-toast id="connToast" duration="0" text="Connection lost. Reconnecting…" opened="[[!isStreaming]]"></paper-toast></template></dom-module><script>Polymer({is:"notification-manager",behaviors:[window.hassBehavior],properties:{hass:{type:Object},isStreaming:{type:Boolean,bindNuclear:function(t){return t.streamGetters.isStreamingEvents}},neg:{type:Boolean,value:!1},text:{type:String,bindNuclear:function(t){return t.notificationGetters.lastNotificationMessage},observer:"showNotification"},toastClass:{type:String,value:""}},created:function(){this.handleWindowChange=this.handleWindowChange.bind(this),this._mediaq=window.matchMedia("(max-width: 599px)"),this._mediaq.addListener(this.handleWindowChange)},attached:function(){this.handleWindowChange(this._mediaq)},detached:function(){this._mediaq.removeListener(this.handleWindowChange)},handleWindowChange:function(t){this.$.toast.classList.toggle("fit-bottom",t.matches),this.$.connToast.classList.toggle("fit-bottom",t.matches)},showNotification:function(t){t&&this.$.toast.show()}})</script><script>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},properties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _readied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOutsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEscKey,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosingReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.closingReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialog-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirmed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBehaviorImpl]</script><dom-module id="paper-dialog-shared-styles" assetpath="../bower_components/paper-dialog-behavior/"><template><style>:host{display:block;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-background-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--paper-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::content>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:host>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bottom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;padding:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-color);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style></template></dom-module><dom-module id="paper-dialog" assetpath="../bower_components/paper-dialog/"><template><style include="paper-dialog-shared-styles"></style><content></content></template></dom-module><script>!function(){Polymer({is:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRunnerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_renderOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderClosed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimationFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderClosed()}})}()</script><dom-module id="paper-dialog-scrollable" assetpath="../bower_components/paper-dialog-scrollable/"><template><style>:host{display:block;@apply(--layout-relative)}:host(.is-scrolled:not(:first-child))::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--divider-color)}:host(.can-scroll:not(.scrolled-to-bottom):not(:last-child))::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--divider-color)}.scrollable{padding:0 24px;@apply(--layout-scroll);@apply(--paper-dialog-scrollable)}.fit{@apply(--layout-fit)}</style><div id="scrollable" class="scrollable"><content></content></div></template></dom-module><script>Polymer({is:"paper-dialog-scrollable",properties:{dialogElement:{type:Object}},listeners:{"scrollable.scroll":"_scroll"},get scrollTarget(){return this.$.scrollable},ready:function(){this._ensureTarget()},attached:function(){this.classList.add("no-padding"),this._ensureTarget(),requestAnimationFrame(this._scroll.bind(this))},_scroll:function(){this.toggleClass("is-scrolled",this.scrollTarget.scrollTop>0),this.toggleClass("can-scroll",this.scrollTarget.offsetHeight<this.scrollTarget.scrollHeight),this.toggleClass("scrolled-to-bottom",this.scrollTarget.scrollTop+this.scrollTarget.offsetHeight>=this.scrollTarget.scrollHeight)},_ensureTarget:function(){this.dialogElement=this.dialogElement||Polymer.dom(this).parentNode,this.dialogElement&&this.dialogElement.behaviors&&this.dialogElement.behaviors.indexOf(Polymer.PaperDialogBehaviorImpl)>=0?(this.dialogElement.sizingTarget=this.scrollTarget,this.scrollTarget.classList.remove("fit")):this.dialogElement&&this.scrollTarget.classList.add("fit")}})</script><style>div.charts-tooltip{z-index:200!important}</style><script>Polymer({is:"state-history-chart-timeline",properties:{data:{type:Object,observer:"dataChanged"},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){function t(t,e,n,i){var d=e.replace(/_/g," ");a.addRow([t,d,n,i])}var e,a,n,i,d,l=Polymer.dom(this),o=this.data;if(this.isAttached){for(;l.node.lastChild;)l.node.removeChild(l.node.lastChild);o&&0!==o.length&&(e=new window.google.visualization.Timeline(this),a=new window.google.visualization.DataTable,a.addColumn({type:"string",id:"Entity"}),a.addColumn({type:"string",id:"State"}),a.addColumn({type:"date",id:"Start"}),a.addColumn({type:"date",id:"End"}),n=new Date(o.reduce(function(t,e){return Math.min(t,e[0].lastChangedAsDate)},new Date)),i=new Date(n),i.setDate(i.getDate()+1),i>new Date&&(i=new Date),d=0,o.forEach(function(e){var a,n,l=null,o=null;0!==e.length&&(a=e[0].entityDisplay,e.forEach(function(e){null!==l&&e.state!==l?(n=e.lastChangedAsDate,t(a,l,o,n),l=e.state,o=n):null===l&&(l=e.state,o=e.lastChangedAsDate)}),t(a,l,o,i),d++)}),e.draw(a,{height:55+42*d,timeline:{showRowLabels:o.length>1},hAxis:{format:"H:mm"}}))}}})</script><script>!function(){"use strict";function t(t,e){var a,r=[];for(a=t;a<e;a++)r.push(a);return r}function e(t){var e=parseFloat(t);return!isNaN(e)&&isFinite(e)?e:null}Polymer({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"},chartEngine:{type:Object}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){var a,r,n,i,u,o=this.unit,s=this.data;this.isAttached&&(this.chartEngine||(this.chartEngine=new window.google.visualization.LineChart(this)),0!==s.length&&(a={legend:{position:"top"},interpolateNulls:!0,titlePosition:"none",vAxes:{0:{title:o}},hAxis:{format:"H:mm"},chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}},this.isSingleDevice&&(a.legend.position="none",a.vAxes[0].title=null,a.chartArea.left=40,a.chartArea.height="80%",a.chartArea.top=5,a.enableInteractivity=!1),r=new Date(Math.min.apply(null,s.map(function(t){return t[0].lastChangedAsDate}))),n=new Date(r),n.setDate(n.getDate()+1),n>new Date&&(n=new Date),i=s.map(function(t){function a(t,e){r&&e&&c.push([t[0]].concat(r.slice(1).map(function(t,a){return e[a]?t:null}))),c.push(t),r=t}var r,i,u,o,s=t[t.length-1],l=s.domain,d=s.entityDisplay,c=[],h=new window.google.visualization.DataTable;return h.addColumn({type:"datetime",id:"Time"}),"thermostat"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):"climate"===l?(i=t.reduce(function(t,e){return t||e.attributes.target_temp_high!==e.attributes.target_temp_low},!1),h.addColumn("number",d+" current temperature"),i?(h.addColumn("number",d+" target temperature high"),h.addColumn("number",d+" target temperature low"),o=[!1,!0,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.target_temp_high),i=e(t.attributes.target_temp_low);a([t.lastUpdatedAsDate,r,n,i],o)}):(h.addColumn("number",d+" target temperature"),o=[!1,!0],u=function(t){var r=e(t.attributes.current_temperature),n=e(t.attributes.temperature);a([t.lastUpdatedAsDate,r,n],o)}),t.forEach(u)):(h.addColumn("number",d),o="sensor"!==l&&[!0],t.forEach(function(t){var r=e(t.state);a([t.lastChangedAsDate,r],o)})),a([n].concat(r.slice(1)),!1),h.addRows(c),h}),u=1===i.length?i[0]:i.slice(1).reduce(function(e,a){return window.google.visualization.data.join(e,a,"full",[[0,0]],t(1,e.getNumberOfColumns()),t(1,a.getNumberOfColumns()))},i[0]),this.chartEngine.draw(u,a)))}})}()</script><dom-module id="state-history-charts" assetpath="components/"><template><style>:host{display:block}.loading-container{text-align:center;padding:8px}.loading{height:0;overflow:hidden}</style><google-legacy-loader on-api-load="googleApiLoaded"></google-legacy-loader><div hidden$="[[!isLoading]]" class="loading-container"><paper-spinner active="" alt="Updating history data"></paper-spinner></div><div class$="[[computeContentClasses(isLoading)]]"><template is="dom-if" if="[[computeIsEmpty(stateHistory)]]">No state history found.</template><state-history-chart-timeline data="[[groupedStateHistory.timeline]]" is-single-device="[[isSingleDevice]]"></state-history-chart-timeline><template is="dom-repeat" items="[[groupedStateHistory.line]]"><state-history-chart-line unit="[[item.unit]]" data="[[item.data]]" is-single-device="[[isSingleDevice]]"></state-history-chart-line></template></div></template></dom-module><script>Polymer({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){var i,o={},n=[];return t||!e?{line:[],timeline:[]}:(e.forEach(function(t){var e,i;t&&0!==t.size&&(e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=!!e&&e.attributes.unit_of_measurement,i?i in o?o[i].push(t.toArray()):o[i]=[t.toArray()]:n.push(t.toArray()))}),n=n.length>0&&n,i=Object.keys(o).map(function(t){return{unit:t,data:o[t]}}),{line:i,timeline:n})},googleApiLoaded:function(){window.google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){this.apiLoaded=!0}.bind(this)})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size}})</script><dom-module id="more-info-automation" assetpath="more-infos/"><template><style>paper-button{color:var(--default-primary-color);font-weight:500;top:3px;height:37px}</style><p>Last triggered:<ha-relative-time datetime="[[stateObj.attributes.last_triggered]]"></ha-relative-time></p><paper-button on-tap="handleTriggerTapped">TRIGGER</paper-button></template></dom-module><script>Polymer({is:"more-info-automation",properties:{hass:{type:Object},stateObj:{type:Object}},handleTriggerTapped:function(){this.hass.serviceActions.callService("automation","trigger",{entity_id:this.stateObj.entityId})}})</script><dom-module id="paper-range-slider" assetpath="../bower_components/paper-range-slider/"><template><style>:host{--paper-range-slider-width:200px;@apply(--layout);@apply(--layout-justified);@apply(--layout-center);--paper-range-slider-lower-color:var(--paper-grey-400);--paper-range-slider-active-color:var(--primary-color);--paper-range-slider-higher-color:var(--paper-grey-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-pin-start-color:var(--paper-grey-400);--paper-range-slider-knob-start-color:transparent;--paper-range-slider-knob-start-border-color:var(--paper-grey-400)}#sliderOuterDiv_0{display:inline-block;width:var(--paper-range-slider-width)}#sliderOuterDiv_1{position:relative;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sliderKnobMinMax{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.divSpanWidth{position:absolute;width:100%;display:block;top:0}#sliderMax{--paper-single-range-slider-bar-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-active-color:var(--paper-range-slider-active-color);--paper-single-range-slider-secondary-color:var(--paper-range-slider-higher-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}#sliderMin{--paper-single-range-slider-active-color:var(--paper-range-slider-lower-color);--paper-single-range-slider-secondary-color:transparent;--paper-single-range-slider-knob-color:var(--paper-range-slider-knob-color);--paper-single-range-slider-pin-color:var(--paper-range-slider-pin-color);--paper-single-range-slider-pin-start-color:var(--paper-range-slider-pin-start-color);--paper-single-range-slider-knob-start-color:var(--paper-range-slider-knob-start-color);--paper-single-range-slider-knob-start-border-color:var(--paper-range-slider-knob-start-border-color)}</style><div id="sliderOuterDiv_0" style=""><div id="sliderOuterDiv_1"><div id="backDiv" class="divSpanWidth" on-down="_backDivDown" on-tap="_backDivTap" on-up="_backDivUp" on-track="_backDivOnTrack" on-transitionend="_backDivTransEnd"><div id="backDivInner_0" style="line-height:200%"><br></div></div><div id="sliderKnobMin" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMinOnTrack"></div><div id="sliderKnobMax" class="sliderKnobMinMax" on-down="_backDivDown" on-up="_backDivUp" on-track="_sliderKnobMaxOnTrack"></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMax" disabled$="[[disabled]]" on-down="_sliderMaxDown" on-up="_sliderMaxUp" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMax]]" secondary-progress="[[max]]" style="width:100%"></paper-single-range-slider></div><div class="divSpanWidth" style="pointer-events:none"><paper-single-range-slider id="sliderMin" disabled$="[[disabled]]" on-down="_sliderMinDown" on-up="_sliderMinUp" noink="" step="[[step]]" min="[[min]]" max="[[max]]" value="[[valueMin]]" style="width:100%"></paper-single-range-slider></div><div id="backDivInner_1" style="line-height:100%"><br></div></div></div></template><script>Polymer({is:"paper-range-slider",behaviors:[Polymer.IronRangeBehavior],properties:{sliderWidth:{type:String,value:"",notify:!0,reflectToAttribute:!0},style:{type:String,value:"",notify:!0,reflectToAttribute:!0},min:{type:Number,value:0,notify:!0,reflectToAttribute:!0},max:{type:Number,value:100,notify:!0,reflectToAttribute:!0},valueMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueMax:{type:Number,value:100,notify:!0,reflectToAttribute:!0},step:{type:Number,value:1,notify:!0,reflectToAttribute:!0},valueDiffMin:{type:Number,value:0,notify:!0,reflectToAttribute:!0},valueDiffMax:{type:Number,value:0,notify:!0,reflectToAttribute:!0},alwaysShowPin:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},snaps:{type:Boolean,value:!1,notify:!0},disabled:{type:Boolean,value:!1,notify:!0},singleSlider:{type:Boolean,value:!1,notify:!0},transDuration:{type:Number,value:250},tapValueExtend:{type:Boolean,value:!0,notify:!0},tapValueReduce:{type:Boolean,value:!1,notify:!0},tapValueMove:{type:Boolean,value:!1,notify:!0}},ready:function(){function i(i){return void 0!=i&&null!=i}i(this._nInitTries)||(this._nInitTries=0);var t=this.$$("#sliderMax").$$("#sliderContainer");if(i(t)&&(t=t.offsetWidth>0),i(t)&&(t=this.$$("#sliderMin").$$("#sliderContainer")),i(t)&&(t=t.offsetWidth>0),i(t))this._renderedReady();else{if(this._nInitTries<1e3){var e=this;setTimeout(function(){e.ready()},10)}else console.error("could not properly initialize the underlying paper-single-range-slider elements ...");this._nInitTries++}},_renderedReady:function(){this.init(),this._setPadding();var i=this;this.$$("#sliderMin").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.$.sliderMin._expandKnob(),i.$.sliderMax._expandKnob()}),this.$$("#sliderMax").addEventListener("immediate-value-change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue))}),this.$$("#sliderMin").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(this.immediateValue,null)),i.alwaysShowPin&&i.$.sliderMin._expandKnob()}),this.$$("#sliderMax").addEventListener("change",function(t){i._setValueMinMax(i._getValuesMinMax(null,this.immediateValue)),i.alwaysShowPin&&i.$.sliderMax._expandKnob()})},_setPadding:function(){var i=document.createElement("div");i.setAttribute("style","position:absolute; top:0px; opacity:0;"),i.innerHTML="invisibleText",document.body.insertBefore(i,document.body.children[0]);var t=i.offsetHeight/2;this.style.paddingTop=t+"px",this.style.paddingBottom=t+"px",i.parentNode.removeChild(i)},_setValueDiff:function(){this._valueDiffMax=Math.max(this.valueDiffMax,0),this._valueDiffMin=Math.max(this.valueDiffMin,0)},_getValuesMinMax:function(i,t){var e=null!=i&&i>=this.min&&i<=this.max,s=null!=t&&t>=this.min&&t<=this.max;if(!e&&!s)return[this.valueMin,this.valueMax];var n=e?i:this.valueMin,a=s?t:this.valueMax;n=Math.min(Math.max(n,this.min),this.max),a=Math.min(Math.max(a,this.min),this.max);var l=a-n;return e?l<this._valueDiffMin?(a=Math.min(this.max,n+this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(n=a-this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(a=n+this._valueDiffMax):l<this._valueDiffMin?(n=Math.max(this.min,a-this._valueDiffMin),l=a-n,l<this._valueDiffMin&&(a=n+this._valueDiffMin)):l>this._valueDiffMax&&this._valueDiffMax>0&&(n=a-this._valueDiffMax),[n,a]},_setValueMin:function(i){i=Math.max(i,this.min),this.$$("#sliderMin").value=i,this.valueMin=i},_setValueMax:function(i){i=Math.min(i,this.max),this.$$("#sliderMax").value=i,this.valueMax=i},_setValueMinMax:function(i){this._setValueMin(i[0]),this._setValueMax(i[1]),this._updateSliderKnobMinMax(),this.updateValues()},_setValues:function(i,t){null!=i&&(i<this.min||i>this.max)&&(i=null),null!=t&&(t<this.min||t>this.max)&&(t=null),null!=i&&null!=t&&(i=Math.min(i,t)),this._setValueMinMax(this._getValuesMinMax(i,t))},_updateSliderKnobMinMax:function(){var i=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,t=i*(this.valueMin-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMin").offsetWidth,e=i*(this.valueMax-this.min)/(this.max-this.min)+.5*this.$$("#sliderKnobMax").offsetWidth;this.$$("#sliderKnobMin").style.left=t+"px",this.$$("#sliderKnobMax").style.left=e+"px"},_backDivOnTrack:function(i){switch(i.stopPropagation(),i.detail.state){case"start":this._backDivTrackStart(i);break;case"track":this._backDivTrackDuring(i);break;case"end":this._backDivTrackEnd()}},_backDivTrackStart:function(i){},_backDivTrackDuring:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._x1_Max=this._x0_Max+i.detail.dx;var e=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));t>=this.min&&e<=this.max&&this._setValuesWithCurrentDiff(t,e,!1)},_setValuesWithCurrentDiff:function(i,t,e){var s=this._valueDiffMin,n=this._valueDiffMax;this._valueDiffMin=this.valueMax-this.valueMin,this._valueDiffMax=this.valueMax-this.valueMin,e?this.setValues(i,t):this._setValues(i,t),this._valueDiffMin=s,this._valueDiffMax=n},_backDivTrackEnd:function(){},_sliderKnobMinOnTrack:function(i){this._x1_Min=this._x0_Min+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMin"),this._x1_Min/this._xWidth));this._setValues(t,null)},_sliderKnobMaxOnTrack:function(i){this._x1_Max=this._x0_Max+i.detail.dx;var t=this._calcStep(this._getRatioPos(this.$$("#sliderMax"),this._x1_Max/this._xWidth));this._setValues(null,t)},_sliderMinDown:function(){this.$$("#sliderMax")._expandKnob()},_sliderMaxDown:function(i){this.singleSlider?this._setValues(null,this._getEventValue(i)):this.$$("#sliderMin")._expandKnob()},_sliderMinUp:function(){this.alwaysShowPin?this.$$("#sliderMin")._expandKnob():this.$$("#sliderMax")._resetKnob()},_sliderMaxUp:function(){this.alwaysShowPin?this.$$("#sliderMax")._expandKnob():(this.$$("#sliderMin")._resetKnob(),this.singleSlider&&this.$$("#sliderMax")._resetKnob())},_getEventValue:function(i){var t=this.$$("#sliderMax").$$("#sliderContainer").offsetWidth,e=this.$$("#sliderMax").$$("#sliderContainer").getBoundingClientRect(),s=(i.detail.x-e.left)/t,n=this.min+s*(this.max-this.min);return n},_backDivTap:function(i){this._setValueNow=function(i,t){this.tapValueMove?this._setValuesWithCurrentDiff(i,t,!0):this.setValues(i,t)};var t=this._getEventValue(i);if(t>this.valueMin&&t<this.valueMax){if(this.tapValueReduce){var e=t<this.valueMin+(this.valueMax-this.valueMin)/2;e?this._setValueNow(t,null):this._setValueNow(null,t)}}else(this.tapValueExtend||this.tapValueMove)&&(t<this.valueMin&&this._setValueNow(t,null),t>this.valueMax&&this._setValueNow(null,t))},_backDivDown:function(i){this._sliderMinDown(),this._sliderMaxDown(),this._xWidth=this.$$("#sliderMin").$$("#sliderBar").offsetWidth,this._x0_Min=this.$$("#sliderMin").ratio*this._xWidth,this._x0_Max=this.$$("#sliderMax").ratio*this._xWidth},_backDivUp:function(){this._sliderMinUp(),this._sliderMaxUp()},_backDivTransEnd:function(i){},_getRatioPos:function(i,t){return Math.max(i.min,Math.min(i.max,(i.max-i.min)*t+i.min))},init:function(){this.setSingleSlider(this.singleSlider),this.setDisabled(this.disabled),this.alwaysShowPin&&(this.pin=!0),this.$$("#sliderMin").pin=this.pin,this.$$("#sliderMax").pin=this.pin,this.$$("#sliderMin").snaps=this.snaps,this.$$("#sliderMax").snaps=this.snaps,""!=this.sliderWidth&&(this.customStyle["--paper-range-slider-width"]=this.sliderWidth,this.updateStyles()),this.$$("#sliderMin").$$("#sliderBar").$$("#progressContainer").style.background="transparent",this._prevUpdateValues=[this.min,this.max],this._setValueDiff(),this._setValueMinMax(this._getValuesMinMax(this.valueMin,this.valueMax)),this.alwaysShowPin&&(this.$$("#sliderMin")._expandKnob(),this.$$("#sliderMax")._expandKnob())},setValues:function(i,t){this.$$("#sliderMin")._setTransiting(!0),this.$$("#sliderMax")._setTransiting(!0),this._setValues(i,t);var e=this;setTimeout(function(){e.$.sliderMin._setTransiting(!1),e.$.sliderMax._setTransiting(!1)},e.transDuration)},updateValues:function(){this._prevUpdateValues[0]==this.valueMin&&this._prevUpdateValues[1]==this.valueMax||(this._prevUpdateValues=[this.valueMin,this.valueMax],this.async(function(){this.fire("updateValues")}))},setMin:function(i){this.max<i&&(this.max=i),this.min=i,this._prevUpdateValues=[this.min,this.max],this.valueMin<this.min?this._setValues(this.min,null):this._updateSliderKnobMinMax()},setMax:function(i){this.min>i&&(this.min=i),this.max=i,this._prevUpdateValues=[this.min,this.max],this.valueMax>this.max?this._setValues(null,this.max):this._updateSliderKnobMinMax()},setStep:function(i){this.step=i},setValueDiffMin:function(i){this._valueDiffMin=i},setValueDiffMax:function(i){this._valueDiffMax=i},setTapValueExtend:function(i){this.tapValueExtend=i},setTapValueReduce:function(i){this.tapValueReduce=i},setTapValueMove:function(i){this.tapValueMove=i},setDisabled:function(i){this.disabled=i;var t=i?"none":"auto";this.$$("#sliderMax").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderMin").$$("#sliderKnobInner").style.pointerEvents=t,this.$$("#sliderOuterDiv_1").style.pointerEvents=t,this.$$("#sliderKnobMin").style.pointerEvents=t,this.$$("#sliderKnobMax").style.pointerEvents=t},setSingleSlider:function(i){this.singleSlider=i,i?(this.$$("#backDiv").style.display="none",this.$$("#sliderMax").style.pointerEvents="auto",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="none",this.$$("#sliderKnobMin").style.pointerEvents="none",this.$$("#sliderKnobMax").style.pointerEvents="none"):(this.$$("#backDiv").style.display="block",this.$$("#sliderMax").style.pointerEvents="none",this.$$("#sliderMax").style.display="",this.$$("#sliderMin").style.display="",this.$$("#sliderKnobMin").style.pointerEvents="auto",this.$$("#sliderKnobMax").style.pointerEvents="auto"),this.$$("#sliderMax").$$("#sliderContainer").style.pointerEvents=this.singleSlider?"auto":"none",this.$$("#sliderMin").$$("#sliderContainer").style.pointerEvents="none"}})</script></dom-module><dom-module id="paper-single-range-slider" assetpath="../bower_components/paper-range-slider/"><template strip-whitespace=""><style>:host{@apply(--layout);@apply(--layout-justified);@apply(--layout-center);width:200px;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;--paper-progress-active-color:var(--paper-single-range-slider-active-color, --google-blue-700);--paper-progress-secondary-color:var(--paper-single-range-slider-secondary-color, --google-blue-300);--paper-progress-disabled-active-color:var(--paper-single-range-slider-disabled-active-color, --paper-grey-400);--paper-progress-disabled-secondary-color:var(--paper-single-range-slider-disabled-secondary-color, --paper-grey-400)}:host(:focus){outline:0}#sliderContainer{position:relative;width:100%;height:calc(30px + var(--paper-single-range-slider-height,2px));margin-left:calc(15px + var(--paper-single-range-slider-height,2px)/ 2);margin-right:calc(15px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderContainer:focus{outline:0}#sliderContainer.editable{margin-top:12px;margin-bottom:12px}.bar-container{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.ring>.bar-container{left:calc(5px + var(--paper-single-range-slider-height,2px)/ 2);transition:left .18s ease}.ring.expand.dragging>.bar-container{transition:none}.ring.expand:not(.pin)>.bar-container{left:calc(8px + var(--paper-single-range-slider-height,2px)/ 2)}#sliderBar{padding:15px 0;width:100%;background-color:var(--paper-single-range-slider-bar-color,transparent);--paper-progress-container-color:var(--paper-single-range-slider-container-color, --paper-grey-400);--paper-progress-height:var(--paper-single-range-slider-height, 2px)}.slider-markers{position:absolute;top:calc(14px + var(--paper-single-range-slider-height,2px)/ 2);height:var(--paper-single-range-slider-height,2px);left:0;right:-1px;box-sizing:border-box;pointer-events:none;@apply(--layout-horizontal)}.slider-marker{@apply(--layout-flex)}.slider-marker::after,.slider-markers::after{content:"";display:block;margin-left:-1px;width:2px;height:2px;border-radius:50%;background-color:#000}#sliderKnob{position:absolute;left:0;top:0;margin-left:calc(-15px - var(--paper-single-range-slider-height,2px)/ 2);width:calc(30px + var(--paper-single-range-slider-height,2px));height:calc(30px + var(--paper-single-range-slider-height,2px))}.transiting>#sliderKnob{transition:left 80ms ease}#sliderKnob:focus{outline:0}#sliderKnob.dragging{transition:none}.snaps>#sliderKnob.dragging{transition:-webkit-transform 80ms ease;transition:transform 80ms ease}#sliderKnobInner{margin:10px;width:calc(100% - 20px);height:calc(100% - 20px);background-color:var(--paper-single-range-slider-knob-color,--google-blue-700);border:2px solid var(--paper-single-range-slider-knob-color,--google-blue-700);border-radius:50%;-moz-box-sizing:border-box;box-sizing:border-box;transition-property:-webkit-transform,background-color,border;transition-property:transform,background-color,border;transition-duration:.18s;transition-timing-function:ease}.expand:not(.pin)>#sliderKnob>#sliderKnobInner{-webkit-transform:scale(1.5);transform:scale(1.5)}.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-color,--google-blue-700)}.pin>#sliderKnob>#sliderKnobInner::before{content:"";position:absolute;top:0;left:50%;margin-left:-13px;width:26px;height:26px;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg) scale(0) translate(0);transform:rotate(-45deg) scale(0) translate(0)}#sliderKnobInner::after,#sliderKnobInner::before{transition:-webkit-transform .18s ease,background-color .18s ease;transition:transform .18s ease,background-color .18s ease}.pin.ring>#sliderKnob>#sliderKnobInner::before{background-color:var(--paper-single-range-slider-pin-start-color,--paper-grey-400)}.pin.expand>#sliderKnob>#sliderKnobInner::before{-webkit-transform:rotate(-45deg) scale(1) translate(17px,-17px);transform:rotate(-45deg) scale(1) translate(17px,-17px)}.pin>#sliderKnob>#sliderKnobInner::after{content:attr(value);position:absolute;top:0;left:50%;margin-left:-16px;width:32px;height:26px;text-align:center;color:var(--paper-single-range-slider-font-color,#fff);font-size:10px;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0)}.pin.expand>#sliderKnob>#sliderKnobInner::after{-webkit-transform:scale(1) translate(0,-17px);transform:scale(1) translate(0,-17px)}.slider-input{width:50px;overflow:hidden;--paper-input-container-input:{text-align:center};@apply(--paper-single-range-slider-input)}#sliderContainer.disabled{pointer-events:none}.disabled>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);border:2px solid var(--paper-single-range-slider-disabled-knob-color,--paper-grey-400);-webkit-transform:scale3d(.75,.75,1);transform:scale3d(.75,.75,1)}.disabled.ring>#sliderKnob>#sliderKnobInner{background-color:var(--paper-single-range-slider-knob-start-color,transparent);border:2px solid var(--paper-single-range-slider-knob-start-border-color,--paper-grey-400)}paper-ripple{color:var(--paper-single-range-slider-knob-color,--google-blue-700)}</style><div id="sliderContainer" class$="[[_getClassNames(disabled, pin, snaps, immediateValue, min, expand, dragging, transiting, editable)]]"><div class="bar-container"><paper-progress disabled$="[[disabled]]" id="sliderBar" aria-hidden="true" min="[[min]]" max="[[max]]" step="[[step]]" value="[[immediateValue]]" secondary-progress="[[secondaryProgress]]" on-down="_bardown" on-up="_resetKnob" on-track="_onTrack"></paper-progress></div><template is="dom-if" if="[[snaps]]"><div class="slider-markers"><template is="dom-repeat" items="[[markers]]"><div class="slider-marker"></div></template></div></template><div id="sliderKnob" on-down="_knobdown" on-up="_resetKnob" on-track="_onTrack" on-transitionend="_knobTransitionEnd"><div id="sliderKnobInner" value$="[[immediateValue]]"></div></div></div><template is="dom-if" if="[[editable]]"><paper-input id="input" type="number" step="[[step]]" min="[[min]]" max="[[max]]" class="slider-input" disabled$="[[disabled]]" value="[[immediateValue]]" on-change="_changeValue" on-keydown="_inputKeyDown" no-label-float=""></paper-input></template></template><script>Polymer({is:"paper-single-range-slider",behaviors:[Polymer.IronA11yKeysBehavior,Polymer.IronFormElementBehavior,Polymer.PaperInkyFocusBehavior,Polymer.IronRangeBehavior],properties:{snaps:{type:Boolean,value:!1,notify:!0},pin:{type:Boolean,value:!1,notify:!0},secondaryProgress:{type:Number,value:0,notify:!0,observer:"_secondaryProgressChanged"},editable:{type:Boolean,value:!1},immediateValue:{type:Number,value:0,readOnly:!0,notify:!0},maxMarkers:{type:Number,value:0,notify:!0},expand:{type:Boolean,value:!1,readOnly:!0},dragging:{type:Boolean,value:!1,readOnly:!0},transiting:{type:Boolean,value:!1,readOnly:!0},markers:{type:Array,readOnly:!0,value:[]}},observers:["_updateKnob(value, min, max, snaps, step)","_valueChanged(value)","_immediateValueChanged(immediateValue)","_updateMarkers(maxMarkers, min, max, snaps)"],hostAttributes:{role:"slider",tabindex:0},keyBindings:{"left down pagedown home":"_decrementKey","right up pageup end":"_incrementKey"},increment:function(){this.value=this._clampValue(this.value+this.step)},decrement:function(){this.value=this._clampValue(this.value-this.step)},_updateKnob:function(t,e,i,s,a){this.setAttribute("aria-valuemin",e),this.setAttribute("aria-valuemax",i),this.setAttribute("aria-valuenow",t),this._positionKnob(this._calcRatio(t))},_valueChanged:function(){this.fire("value-change")},_immediateValueChanged:function(){this.dragging?this.fire("immediate-value-change"):this.value=this.immediateValue},_secondaryProgressChanged:function(){this.secondaryProgress=this._clampValue(this.secondaryProgress)},_expandKnob:function(){this._setExpand(!0)},_resetKnob:function(){this.cancelDebouncer("expandKnob"),this._setExpand(!1)},_positionKnob:function(t){this._setImmediateValue(this._calcStep(this._calcKnobPosition(t))),this._setRatio(this._calcRatio(this.immediateValue)),this.$.sliderKnob.style.left=100*this.ratio+"%",this.dragging&&(this._knobstartx=this.ratio*this._w,this.translate3d(0,0,0,this.$.sliderKnob))},_calcKnobPosition:function(t){return(this.max-this.min)*t+this.min},_onTrack:function(t){switch(t.stopPropagation(),t.detail.state){case"start":this._trackStart(t);break;case"track":this._trackX(t);break;case"end":this._trackEnd()}},_trackStart:function(t){this._w=this.$.sliderBar.offsetWidth,this._x=this.ratio*this._w,this._startx=this._x,this._knobstartx=this._startx,this._minx=-this._startx,this._maxx=this._w-this._startx,this.$.sliderKnob.classList.add("dragging"),this._setDragging(!0)},_trackX:function(t){this.dragging||this._trackStart(t);var e=Math.min(this._maxx,Math.max(this._minx,t.detail.dx));this._x=this._startx+e;var i=this._calcStep(this._calcKnobPosition(this._x/this._w));this._setImmediateValue(i);var s=this._calcRatio(this.immediateValue)*this._w-this._knobstartx;this.translate3d(s+"px",0,0,this.$.sliderKnob)},_trackEnd:function(){var t=this.$.sliderKnob.style;this.$.sliderKnob.classList.remove("dragging"),this._setDragging(!1),this._resetKnob(),this.value=this.immediateValue,t.transform=t.webkitTransform="",this.fire("change")},_knobdown:function(t){this._expandKnob(),t.preventDefault(),this.focus()},_bardown:function(t){this._w=this.$.sliderBar.offsetWidth;var e=this.$.sliderBar.getBoundingClientRect(),i=(t.detail.x-e.left)/this._w,s=this.ratio;this._setTransiting(!0),this._positionKnob(i),this.debounce("expandKnob",this._expandKnob,60),s===this.ratio&&this._setTransiting(!1),this.async(function(){this.fire("change")}),t.preventDefault(),this.focus()},_knobTransitionEnd:function(t){t.target===this.$.sliderKnob&&this._setTransiting(!1)},_updateMarkers:function(t,e,i,s){s||this._setMarkers([]);var a=Math.round((i-e)/this.step);a>t&&(a=t),this._setMarkers(new Array(a))},_mergeClasses:function(t){return Object.keys(t).filter(function(e){return t[e]}).join(" ")},_getClassNames:function(){return this._mergeClasses({disabled:this.disabled,pin:this.pin,snaps:this.snaps,ring:this.immediateValue<=this.min,expand:this.expand,dragging:this.dragging,transiting:this.transiting,editable:this.editable})},_incrementKey:function(t){this.disabled||("end"===t.detail.key?this.value=this.max:this.increment(),this.fire("change"))},_decrementKey:function(t){this.disabled||("home"===t.detail.key?this.value=this.min:this.decrement(),this.fire("change"))},_changeValue:function(t){this.value=t.target.value,this.fire("change")},_inputKeyDown:function(t){t.stopPropagation()},_createRipple:function(){return this._rippleContainer=this.$.sliderKnob,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)},_focusedChanged:function(t){t&&this.ensureRipple(),this.hasRipple()&&(t?this._ripple.style.display="":this._ripple.style.display="none",this._ripple.holdDown=t)}})</script></dom-module><dom-module id="more-info-climate" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>:host{color:var(--primary-text-color);--paper-input-container-input:{text-transform:capitalize};}.container-aux_heat,.container-away_mode,.container-fan_list,.container-humidity,.container-operation_list,.container-swing_list,.container-temperature{display:none}.has-aux_heat .container-aux_heat,.has-away_mode .container-away_mode,.has-fan_list .container-fan_list,.has-humidity .container-humidity,.has-operation_list .container-operation_list,.has-swing_list .container-swing_list,.has-temperature .container-temperature{display:block}.container-fan_list iron-icon,.container-operation_list iron-icon,.container-swing_list iron-icon{margin:22px 16px 0 0}paper-dropdown-menu{width:100%}paper-slider{width:100%}.auto paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-blue-400)}.heat paper-slider{--paper-slider-active-color:var(--paper-orange-400);--paper-slider-secondary-color:var(--paper-green-400)}.cool paper-slider{--paper-slider-active-color:var(--paper-green-400);--paper-slider-secondary-color:var(--paper-blue-400)}.humidity{--paper-slider-active-color:var(--paper-blue-400);--paper-slider-secondary-color:var(--paper-blue-400)}paper-range-slider{--paper-range-slider-lower-color:var(--paper-orange-400);--paper-range-slider-active-color:var(--paper-green-400);--paper-range-slider-higher-color:var(--paper-blue-400);--paper-range-slider-knob-color:var(--primary-color);--paper-range-slider-pin-color:var(--primary-color);--paper-range-slider-width:100%}.single-row{padding:8px 0}.capitalize{text-transform:capitalize}</style><div class$="[[computeClassNames(stateObj)]]"><div class="container-temperature"><div class$="single-row, [[stateObj.attributes.operation_mode]]"><div hidden$="[[computeTargetTempHidden(stateObj)]]">Target Temperature</div><paper-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" secondary-progress="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value="[[stateObj.attributes.temperature]]" hidden$="[[computeHideTempSlider(stateObj)]]" on-change="targetTemperatureSliderChanged"></paper-slider><paper-range-slider min="[[stateObj.attributes.min_temp]]" max="[[stateObj.attributes.max_temp]]" pin="" step="0.5" value-min="[[stateObj.attributes.target_temp_low]]" value-max="[[stateObj.attributes.target_temp_high]]" value-diff-min="2" hidden$="[[computeHideTempRangeSlider(stateObj)]]" on-change="targetTemperatureRangeSliderChanged"></paper-range-slider></div></div><div class="container-humidity"><div class="single-row"><div>Target Humidity</div><paper-slider class="humidity" min="[[stateObj.attributes.min_humidity]]" max="[[stateObj.attributes.max_humidity]]" secondary-progress="[[stateObj.attributes.max_humidity]]" step="1" pin="" value="[[stateObj.attributes.humidity]]" on-change="targetHumiditySliderChanged"></paper-slider></div></div><div class="container-operation_list"><div class="controls"><paper-dropdown-menu label-float="" label="Operation"><paper-menu class="dropdown-content" selected="{{operationIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.operation_list]]"><paper-item class="capitalize">[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div></div><div class="container-fan_list"><paper-dropdown-menu label-float="" label="Fan Mode"><paper-menu class="dropdown-content" selected="{{fanIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.fan_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-swing_list"><paper-dropdown-menu label-float="" label="Swing Mode"><paper-menu class="dropdown-content" selected="{{swingIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.swing_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="container-away_mode"><div class="center horizontal layout single-row"><div class="flex">Away Mode</div><paper-toggle-button checked="[[awayToggleChecked]]" on-change="awayToggleChanged"></paper-toggle-button></div></div><div class="container-aux_heat"><div class="center horizontal layout single-row"><div class="flex">Aux Heat</div><paper-toggle-button checked="[[auxToggleChecked]]" on-change="auxToggleChanged"></paper-toggle-button></div></div></div></template></dom-module><script>Polymer({is:"more-info-climate",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},operationIndex:{type:Number,value:-1,observer:"handleOperationmodeChanged"},fanIndex:{type:Number,value:-1,observer:"handleFanmodeChanged"},swingIndex:{type:Number,value:-1,observer:"handleSwingmodeChanged"},awayToggleChecked:{type:Boolean},auxToggleChecked:{type:Boolean}},stateObjChanged:function(e){this.targetTemperatureSliderValue=e.attributes.temperature,this.awayToggleChecked="on"===e.attributes.away_mode,this.auxheatToggleChecked="on"===e.attributes.aux_heat,e.attributes.fan_list?this.fanIndex=e.attributes.fan_list.indexOf(e.attributes.fan_mode):this.fanIndex=-1,e.attributes.operation_list?this.operationIndex=e.attributes.operation_list.indexOf(e.attributes.operation_mode):this.operationIndex=-1,e.attributes.swing_list?this.swingIndex=e.attributes.swing_list.indexOf(e.attributes.swing_mode):this.swingIndex=-1,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeTargetTempHidden:function(e){return!e.attributes.temperature&&!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempRangeSlider:function(e){return!e.attributes.target_temp_low&&!e.attributes.target_temp_high},computeHideTempSlider:function(e){return!e.attributes.temperature},computeClassNames:function(e){return"more-info-climate "+window.hassUtil.attributeClassNames(e,["away_mode","aux_heat","temperature","humidity","operation_list","fan_list","swing_list"])},targetTemperatureSliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.temperature&&this.callServiceHelper("set_temperature",{temperature:t})},targetTemperatureRangeSliderChanged:function(e){var t=e.currentTarget.valueMin,a=e.currentTarget.valueMax;t===this.stateObj.attributes.target_temp_low&&a===this.stateObj.attributes.target_temp_high||this.callServiceHelper("set_temperature",{target_temp_low:t,target_temp_high:a})},targetHumiditySliderChanged:function(e){var t=e.target.value;t!==this.stateObj.attributes.humidity&&this.callServiceHelper("set_humidity",{humidity:t})},awayToggleChanged:function(e){var t="on"===this.stateObj.attributes.away_mode,a=e.target.checked;t!==a&&this.callServiceHelper("set_away_mode",{away_mode:a})},auxToggleChanged:function(e){var t="on"===this.stateObj.attributes.aux_heat,a=e.target.checked;t!==a&&this.callServiceHelper("set_aux_heat",{aux_heat:a})},handleFanmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.fan_list[e],t!==this.stateObj.attributes.fan_mode&&this.callServiceHelper("set_fan_mode",{fan_mode:t}))},handleOperationmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.operation_list[e],t!==this.stateObj.attributes.operation_mode&&this.callServiceHelper("set_operation_mode",{operation_mode:t}))},handleSwingmodeChanged:function(e){var t;""!==e&&e!==-1&&(t=this.stateObj.attributes.swing_list[e],t!==this.stateObj.attributes.swing_mode&&this.callServiceHelper("set_swing_mode",{swing_mode:t}))},callServiceHelper:function(e,t){t.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("climate",e,t).then(function(){this.stateObjChanged(this.stateObj)}.bind(this))}})</script><dom-module id="more-info-cover" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.current_position,.current_tilt_position{max-height:0;overflow:hidden}.has-current_position .current_position,.has-current_tilt_position .current_tilt_position{max-height:90px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="current_position"><div>Position</div><paper-slider min="0" max="100" value="{{coverPositionSliderValue}}" step="1" pin="" on-change="coverPositionSliderChanged"></paper-slider></div><div class="current_tilt_position"><div>Tilt position</div><paper-icon-button icon="mdi:arrow-top-right" on-tap="onOpenTiltTap" title="Open tilt" disabled="[[computeIsFullyOpenTilt(stateObj)]]"></paper-icon-button><paper-icon-button icon="mdi:stop" on-tap="onStopTiltTap" title="Stop tilt"></paper-icon-button><paper-icon-button icon="mdi:arrow-bottom-left" on-tap="onCloseTiltTap" title="Close tilt" disabled="[[computeIsFullyClosedTilt(stateObj)]]"></paper-icon-button><paper-slider min="0" max="100" value="{{coverTiltPositionSliderValue}}" step="1" pin="" on-change="coverTiltPositionSliderChanged"></paper-slider></div></div></template></dom-module><script>Polymer({is:"more-info-cover",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},coverPositionSliderValue:{type:Number},coverTiltPositionSliderValue:{type:Number}},stateObjChanged:function(t){this.coverPositionSliderValue=t.attributes.current_position,this.coverTiltPositionSliderValue=t.attributes.current_tilt_position},computeClassNames:function(t){return window.hassUtil.attributeClassNames(t,["current_position","current_tilt_position"])},coverPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_position",{entity_id:this.stateObj.entityId,position:t.target.value})},coverTiltPositionSliderChanged:function(t){this.hass.serviceActions.callService("cover","set_cover_tilt_position",{entity_id:this.stateObj.entityId,tilt_position:t.target.value})},computeIsFullyOpenTilt:function(t){return 100===t.attributes.current_tilt_position},computeIsFullyClosedTilt:function(t){return 0===t.attributes.current_tilt_position},onOpenTiltTap:function(){this.hass.serviceActions.callService("cover","open_cover_tilt",{entity_id:this.stateObj.entityId})},onCloseTiltTap:function(){this.hass.serviceActions.callService("cover","close_cover_tilt",{entity_id:this.stateObj.entityId})},onStopTiltTap:function(){this.hass.serviceActions.callService("cover","stop_cover",{entity_id:this.stateObj.entityId})}})</script><dom-module id="more-info-default" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.data-entry .value{max-width:200px}</style><div class="layout vertical"><template is="dom-repeat" items="[[computeDisplayAttributes(stateObj)]]" as="attribute"><div class="data-entry layout justified horizontal"><div class="key">[[formatAttribute(attribute)]]</div><div class="value">[[getAttributeValue(stateObj, attribute)]]</div></div></template></div></template></dom-module><script>!function(){"use strict";var e=["entity_picture","friendly_name","icon","unit_of_measurement","emulated_hue","emulated_hue_name","haaska_hidden","haaska_name","homebridge_hidden","homebridge_name"];Polymer({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return e.indexOf(t)===-1}):[]},formatAttribute:function(e){return e.replace(/_/g," ")},getAttributeValue:function(e,t){var r=e.attributes[t];return Array.isArray(r)?r.join(", "):r}})}()</script><dom-module id="more-info-group" assetpath="more-infos/"><template><style>.child-card{margin-bottom:8px}.child-card:last-child{margin-bottom:0}</style><div id="groupedControlDetails"></div><template is="dom-repeat" items="[[states]]" as="state"><div class="child-card"><state-card-content state-obj="[[state]]" hass="[[hass]]"></state-card-content></div></template></template></dom-module><script>Polymer({is:"more-info-group",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object},states:{type:Array,bindNuclear:function(t){return[t.moreInfoGetters.currentEntity,t.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}}},observers:["statesChanged(stateObj, states)"],statesChanged:function(t,e){var s,i,a,n,r=!1;if(e&&e.length>0)for(s=e[0],r=s.set("entityId",t.entityId).set("attributes",Object.assign({},s.attributes)),i=0;i<e.length;i++)a=e[i],a&&a.domain&&r.domain!==a.domain&&(r=!1);r?window.hassUtil.dynamicContentUpdater(this.$.groupedControlDetails,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(r).toUpperCase(),{stateObj:r,hass:this.hass}):(n=Polymer.dom(this.$.groupedControlDetails),n.lastChild&&n.removeChild(n.lastChild))}})</script><dom-module id="more-info-sun" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><template is="dom-repeat" items="[[computeOrder(risingDate, settingDate)]]"><div class="data-entry layout justified horizontal"><div class="key"><span>[[itemCaption(item)]]</span><ha-relative-time datetime-obj="[[itemDate(item)]]"></ha-relative-time></div><div class="value">[[itemValue(item)]]</div></div></template><div class="data-entry layout justified horizontal"><div class="key">Elevation</div><div class="value">[[stateObj.attributes.elevation]]</div></div></template></dom-module><script>Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return new Date(t.attributes.next_rising)},computeSetting:function(t){return new Date(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return window.hassUtil.formatTime(this.itemDate(t))}})</script><dom-module id="more-info-configurator" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>p{margin:8px 0}p>img{max-width:100%}p.center{text-align:center}p.error{color:#C62828}p.submit{text-align:center;height:41px}paper-spinner{width:14px;height:14px;margin-right:20px}</style><div class="layout vertical"><template is="dom-if" if="[[isConfigurable]]"><p hidden$="[[!stateObj.attributes.description]]">[[stateObj.attributes.description]] <a hidden$="[[!stateObj.attributes.link_url]]" href="[[stateObj.attributes.link_url]]" target="_blank">[[stateObj.attributes.link_name]]</a></p><p class="error" hidden$="[[!stateObj.attributes.errors]]">[[stateObj.attributes.errors]]</p><p class="center" hidden$="[[!stateObj.attributes.description_image]]"><img src="[[stateObj.attributes.description_image]]"></p><template is="dom-repeat" items="[[stateObj.attributes.fields]]"><paper-input-container id="paper-input-fields-{{item.id}}"><label>[[item.name]]</label><input is="iron-input" type="[[item.type]]" id="[[item.id]]" on-change="fieldChanged"></paper-input-container></template><p class="submit"><paper-button raised="" disabled="[[isConfiguring]]" on-tap="submitClicked"><paper-spinner active="[[isConfiguring]]" hidden="[[!isConfiguring]]" alt="Configuring"></paper-spinner>[[submitCaption]]</paper-button></p></template></div></template></dom-module><script>Polymer({is:"more-info-configurator",behaviors:[window.hassBehavior],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:function(i){return i.streamGetters.isStreamingEvents}},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"},fieldInput:{type:Object,value:{}}},computeIsConfigurable:function(i){return"configure"===i.state},computeSubmitCaption:function(i){return i.attributes.submit_caption||"Set configuration"},fieldChanged:function(i){var t=i.target;this.fieldInput[t.id]=t.value},submitClicked:function(){var i={configure_id:this.stateObj.attributes.configure_id,fields:this.fieldInput};this.isConfiguring=!0,this.hass.serviceActions.callService("configurator","configure",i).then(function(){this.isConfiguring=!1,this.isStreaming||this.hass.syncActions.fetchAll()}.bind(this),function(){this.isConfiguring=!1}.bind(this))}})</script><dom-module id="more-info-script" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><div class="layout vertical"><div class="data-entry layout justified horizontal"><div class="key">Last Action</div><div class="value">[[stateObj.attributes.last_action]]</div></div></div></template></dom-module><script>Polymer({is:"more-info-script",properties:{stateObj:{type:Object}}})</script><dom-module id="ha-labeled-slider" assetpath="components/"><template><style>:host{display:block;padding-bottom:16px}.title{margin-bottom:16px;opacity:var(--dark-primary-opacity)}iron-icon{float:left;margin-top:4px;opacity:var(--dark-secondary-opacity)}.slider-container{margin-left:24px}</style><div class="title">[[caption]]</div><iron-icon icon="[[icon]]"></iron-icon><div class="slider-container"><paper-slider min="[[min]]" max="[[max]]" value="{{value}}"></paper-slider></div></template></dom-module><script>Polymer({is:"ha-labeled-slider",properties:{caption:{type:String},icon:{type:String},min:{type:Number},max:{type:Number},value:{type:Number,notify:!0}}})</script><dom-module id="ha-color-picker" assetpath="components/"><template><style>canvas{cursor:crosshair}</style><canvas width="[[width]]" height="[[height]]"></canvas></template></dom-module><script>Polymer({is:"ha-color-picker",properties:{color:{type:Object},width:{type:Number},height:{type:Number}},listeners:{mousedown:"onMouseDown",mouseup:"onMouseUp",touchstart:"onTouchStart",touchend:"onTouchEnd"},onMouseDown:function(t){this.onMouseMove(t),this.addEventListener("mousemove",this.onMouseMove)},onMouseUp:function(){this.removeEventListener("mousemove",this.onMouseMove)},onTouchStart:function(t){this.onTouchMove(t),this.addEventListener("touchmove",this.onTouchMove)},onTouchEnd:function(){this.removeEventListener("touchmove",this.onTouchMove)},onTouchMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t.touches[0]),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},onMouseMove:function(t){this.mouseMoveIsThrottled&&(this.mouseMoveIsThrottled=!1,this.processColorSelect(t),this.async(function(){this.mouseMoveIsThrottled=!0}.bind(this),100))},processColorSelect:function(t){var o=this.canvas.getBoundingClientRect();t.clientX<o.left||t.clientX>=o.left+o.width||t.clientY<o.top||t.clientY>=o.top+o.height||this.onColorSelect(t.clientX-o.left,t.clientY-o.top)},onColorSelect:function(t,o){var e=this.context.getImageData(t,o,1,1).data;this.setColor({r:e[0],g:e[1],b:e[2]})},setColor:function(t){this.color=t,this.fire("colorselected",{rgb:this.color})},ready:function(){this.setColor=this.setColor.bind(this),this.mouseMoveIsThrottled=!0,this.canvas=this.children[0],this.context=this.canvas.getContext("2d"),this.drawGradient()},drawGradient:function(){var t,o,e,i,s;this.width&&this.height||(t=getComputedStyle(this)),o=this.width||parseInt(t.width,10),e=this.height||parseInt(t.height,10),i=this.context.createLinearGradient(0,0,o,0),i.addColorStop(0,"rgb(255,0,0)"),i.addColorStop(.16,"rgb(255,0,255)"),i.addColorStop(.32,"rgb(0,0,255)"),i.addColorStop(.48,"rgb(0,255,255)"),i.addColorStop(.64,"rgb(0,255,0)"),i.addColorStop(.8,"rgb(255,255,0)"),i.addColorStop(1,"rgb(255,0,0)"),this.context.fillStyle=i,this.context.fillRect(0,0,o,e),s=this.context.createLinearGradient(0,0,0,e),s.addColorStop(0,"rgba(255,255,255,1)"),s.addColorStop(.5,"rgba(255,255,255,0)"),s.addColorStop(.5,"rgba(0,0,0,0)"),s.addColorStop(1,"rgba(0,0,0,1)"),this.context.fillStyle=s,this.context.fillRect(0,0,o,e)}})</script><dom-module id="more-info-light" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><style>.effect_list{padding-bottom:16px}.brightness,.color_temp,.effect_list,.white_value{max-height:0;overflow:hidden;transition:max-height .5s ease-in}ha-color-picker{display:block;width:250px;max-height:0;overflow:hidden;transition:max-height .2s ease-in}.has-brightness .brightness,.has-color_temp .color_temp,.has-effect_list .effect_list,.has-white_value .white_value{max-height:84px}.has-rgb_color ha-color-picker{max-height:200px}</style><div class$="[[computeClassNames(stateObj)]]"><div class="effect_list"><paper-dropdown-menu label-float="" label="Effect"><paper-menu class="dropdown-content" selected="{{effectIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.effect_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div class="brightness"><ha-labeled-slider caption="Brightness" icon="mdi:brightness-5" max="255" value="{{brightnessSliderValue}}" on-change="brightnessSliderChanged"></ha-labeled-slider></div><div class="color_temp"><ha-labeled-slider caption="Color Temperature" icon="mdi:thermometer" min="154" max="500" value="{{ctSliderValue}}" on-change="ctSliderChanged"></ha-labeled-slider></div><div class="white_value"><ha-labeled-slider caption="White Value" icon="mdi:file-word-box" max="255" value="{{wvSliderValue}}" on-change="wvSliderChanged"></ha-labeled-slider></div><ha-color-picker on-colorselected="colorPicked" height="200" width="250"></ha-color-picker></div></template></dom-module><script>Polymer({is:"more-info-light",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},effectIndex:{type:Number,value:-1,observer:"effectChanged"},brightnessSliderValue:{type:Number,value:0},ctSliderValue:{type:Number,value:0},wvSliderValue:{type:Number,value:0}},stateObjChanged:function(t){t&&"on"===t.state?(this.brightnessSliderValue=t.attributes.brightness,this.ctSliderValue=t.attributes.color_temp,this.wvSliderValue=t.attributes.white_value,t.attributes.effect_list?this.effectIndex=t.attributes.effect_list.indexOf(t.attributes.effect):this.effectIndex=-1):this.brightnessSliderValue=0,this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(t){var e=window.hassUtil.attributeClassNames(t,["rgb_color","color_temp","white_value","effect_list"]),i=1;return t&&t.attributes.supported_features&i&&(e+=" has-brightness"),e},effectChanged:function(t){var e;""!==t&&t!==-1&&(e=this.stateObj.attributes.effect_list[t],e!==this.stateObj.attributes.effect&&this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,effect:e}))},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?this.hass.serviceActions.callTurnOff(this.stateObj.entityId):this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},ctSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,color_temp:e})},wvSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||this.hass.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,white_value:e})},serviceChangeColor:function(t,e,i){t.serviceActions.callService("light","turn_on",{entity_id:e,rgb_color:[i.r,i.g,i.b]})},colorPicked:function(t){return this.skipColorPicked?void(this.colorChanged=!0):(this.color=t.detail.rgb,this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.colorChanged=!1,this.skipColorPicked=!0,void(this.colorDebounce=setTimeout(function(){this.colorChanged&&this.serviceChangeColor(this.hass,this.stateObj.entityId,this.color),this.skipColorPicked=!1}.bind(this),500)))}})</script><dom-module id="more-info-media_player" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex iron-flex-alignment"></style><style>.media-state{text-transform:capitalize}paper-icon-button[highlight]{color:var(--accent-color)}.volume{margin-bottom:8px;max-height:0;overflow:hidden;transition:max-height .5s ease-in}.has-volume_level .volume{max-height:40px}iron-icon.source-input{padding:7px;margin-top:15px}paper-dropdown-menu.source-input{margin-left:10px}[hidden]{display:none!important}</style><div class$="[[computeClassNames(stateObj)]]"><div class="layout horizontal"><div class="flex"><paper-icon-button icon="mdi:power" highlight$="[[isOff]]" on-tap="handleTogglePower" hidden$="[[computeHidePowerButton(isOff, supportsTurnOn, supportsTurnOff)]]"></paper-icon-button></div><div><template is="dom-if" if="[[computeShowPlaybackControls(isOff, hasMediaControl)]]"><paper-icon-button icon="mdi:skip-previous" on-tap="handlePrevious" hidden$="[[!supportsPreviousTrack]]"></paper-icon-button><paper-icon-button icon="[[computePlaybackControlIcon(stateObj)]]" on-tap="handlePlaybackControl" hidden$="[[!computePlaybackControlIcon(stateObj)]]" highlight=""></paper-icon-button><paper-icon-button icon="mdi:skip-next" on-tap="handleNext" hidden$="[[!supportsNextTrack]]"></paper-icon-button></template></div></div><div class="volume_buttons center horizontal layout" hidden$="[[computeHideVolumeButtons(isOff, supportsVolumeButtons)]]"><paper-icon-button on-tap="handleVolumeTap" icon="mdi:volume-off"></paper-icon-button><paper-icon-button id="volumeDown" disabled$="[[isMuted]]" on-mousedown="handleVolumeDown" on-touchstart="handleVolumeDown" icon="mdi:volume-medium"></paper-icon-button><paper-icon-button id="volumeUp" disabled$="[[isMuted]]" on-mousedown="handleVolumeUp" on-touchstart="handleVolumeUp" icon="mdi:volume-high"></paper-icon-button></div><div class="volume center horizontal layout" hidden$="[[!supportsVolumeSet]]"><paper-icon-button on-tap="handleVolumeTap" hidden$="[[supportsVolumeButtons]]" icon="[[computeMuteVolumeIcon(isMuted)]]"></paper-icon-button><paper-slider disabled$="[[isMuted]]" min="0" max="100" value="[[volumeSliderValue]]" on-change="volumeSliderChanged" class="flex"></paper-slider></div><div class="controls layout horizontal justified" hidden$="[[computeHideSelectSource(isOff, supportsSelectSource)]]"><iron-icon class="source-input" icon="mdi:login-variant"></iron-icon><paper-dropdown-menu class="source-input" label-float="" label="Source"><paper-menu class="dropdown-content" selected="{{sourceIndex}}"><template is="dom-repeat" items="[[stateObj.attributes.source_list]]"><paper-item>[[item]]</paper-item></template></paper-menu></paper-dropdown-menu></div><div hidden$="[[computeHideTTS(ttsLoaded, supportsPlayMedia)]]" class="layout horizontal end"><paper-input label="Text to speak" class="flex" value="{{ttsMessage}}"></paper-input><paper-icon-button icon="mdi:send" on-tap="sendTTS"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"more-info-media_player",behaviors:[window.hassBehavior],properties:{ttsLoaded:{type:Boolean,bindNuclear:function(e){return e.configGetters.isComponentLoaded("tts")}},hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},source:{type:String,value:""},sourceIndex:{type:Number,value:0,observer:"handleSourceChanged"},volumeSliderValue:{type:Number,value:0},ttsMessage:{type:String,value:""},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1},supportsPlayMedia:{type:Boolean,value:!1},supportsVolumeButtons:{type:Boolean,value:!1},supportsSelectSource:{type:Boolean,value:!1},supportsPlay:{type:Boolean,value:!1},hasMediaControl:{type:Boolean,value:!1}},HAS_MEDIA_STATES:["playing","paused","unknown"],stateObjChanged:function(e){e&&(this.isOff="off"===e.state,this.isPlaying="playing"===e.state,this.hasMediaControl=this.HAS_MEDIA_STATES.indexOf(e.state)!==-1,this.volumeSliderValue=100*e.attributes.volume_level,this.isMuted=e.attributes.is_volume_muted,this.source=e.attributes.source,this.supportsPause=0!==(1&e.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&e.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&e.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&e.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&e.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&e.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&e.attributes.supported_media_commands),this.supportsPlayMedia=0!==(512&e.attributes.supported_media_commands),this.supportsVolumeButtons=0!==(1024&e.attributes.supported_media_commands),this.supportsSelectSource=0!==(2048&e.attributes.supported_media_commands),this.supportsPlay=0!==(16384&e.attributes.supported_media_commands),void 0!==e.attributes.source_list&&(this.sourceIndex=e.attributes.source_list.indexOf(this.source))),this.async(function(){this.fire("iron-resize")}.bind(this),500)},computeClassNames:function(e){return window.hassUtil.attributeClassNames(e,["volume_level"])},computeIsOff:function(e){return"off"===e.state},computeMuteVolumeIcon:function(e){return e?"mdi:volume-off":"mdi:volume-high"},computeHideVolumeButtons:function(e,t){return!t||e},computeShowPlaybackControls:function(e,t){return!e&&t},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"mdi:pause":"mdi:stop":this.supportsPlay?"mdi:play":null},computeHidePowerButton:function(e,t,s){return e?!t:!s},computeHideSelectSource:function(e,t){return e||!t},computeSelectedSource:function(e){return e.attributes.source_list.indexOf(e.attributes.source)},computeHideTTS:function(e,t){return!e||!t},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleSourceChanged:function(e){var t;!this.stateObj||void 0===this.stateObj.attributes.source_list||e<0||e>=this.stateObj.attributes.source_list.length||(t=this.stateObj.attributes.source_list[e],t!==this.stateObj.attributes.source&&this.callService("select_source",{source:t}))},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},handleVolumeUp:function(){var e=this.$.volumeUp;this.handleVolumeWorker("volume_up",e,!0)},handleVolumeDown:function(){var e=this.$.volumeDown;this.handleVolumeWorker("volume_down",e,!0)},handleVolumeWorker:function(e,t,s){(s||void 0!==t&&t.pointerDown)&&(this.callService(e),this.async(function(){this.handleVolumeWorker(e,t,!1)}.bind(this),500))},volumeSliderChanged:function(e){var t=parseFloat(e.target.value),s=t>0?t/100:0;this.callService("volume_set",{volume_level:s})},sendTTS:function(){var e,t,s=this.hass.reactor.evaluate(this.hass.serviceGetters.entityMap).get("tts").get("services").keySeq().toArray();for(t=0;t<s.length;t++)if(s[t].indexOf("_say")!==-1){e=s[t];break}e&&(this.hass.serviceActions.callService("tts",e,{entity_id:this.stateObj.entityId,message:this.ttsMessage}),this.ttsMessage="",document.activeElement.blur())},callService:function(e,t){var s=t||{};s.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("media_player",e,s)}})</script><dom-module id="more-info-camera" assetpath="more-infos/"><template><style>:host{max-width:640px}.camera-image{width:100%}</style><img class="camera-image" src="[[computeCameraImageUrl(hass, stateObj, isVisible)]]" on-load="imageLoaded" alt="[[stateObj.entityDisplay]]"></template></dom-module><script>Polymer({is:"more-info-camera",properties:{hass:{type:Object},stateObj:{type:Object},isVisible:{type:Boolean,value:!0}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(e,a,t){return e.demo?"/demo/webcam.jpg":a&&t?"/api/camera_proxy_stream/"+a.entityId+"?token="+a.attributes.access_token:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}})</script><dom-module id="more-info-updater" assetpath="more-infos/"><template><style>.link{color:#03A9F4}</style><div><a class="link" href="https://home-assistant.io/getting-started/updating/" target="_blank">Update Instructions</a></div></template></dom-module><script>Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},computeReleaseNotes:function(t){return t.attributes.release_notes||"https://home-assistant.io/getting-started/updating/"}})</script><dom-module id="more-info-alarm_control_panel" assetpath="more-infos/"><template><style is="custom-style" include="iron-flex"></style><div class="layout horizontal"><paper-input label="code" value="{{enteredCode}}" pattern="[[codeFormat]]" type="password" hidden$="[[!codeInputVisible]]" disabled="[[!codeInputEnabled]]"></paper-input></div><div class="layout horizontal"><paper-button on-tap="handleDisarmTap" hidden$="[[!disarmButtonVisible]]" disabled="[[!codeValid]]">Disarm</paper-button><paper-button on-tap="handleHomeTap" hidden$="[[!armHomeButtonVisible]]" disabled="[[!codeValid]]">Arm Home</paper-button><paper-button on-tap="handleAwayTap" hidden$="[[!armAwayButtonVisible]]" disabled="[[!codeValid]]">Arm Away</paper-button></div></template></dom-module><script>Polymer({is:"more-info-alarm_control_panel",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""},disarmButtonVisible:{type:Boolean,value:!1},armHomeButtonVisible:{type:Boolean,value:!1},armAwayButtonVisible:{type:Boolean,value:!1},codeInputVisible:{type:Boolean,value:!1},codeInputEnabled:{type:Boolean,value:!1},codeFormat:{type:String,value:""},codeValid:{type:Boolean,computed:"validateCode(enteredCode, codeFormat)"}},validateCode:function(e,t){var a=new RegExp(t);return null===t||a.test(e)},stateObjChanged:function(e){e&&(this.codeFormat=e.attributes.code_format,this.codeInputVisible=null!==this.codeFormat,this.codeInputEnabled="armed_home"===e.state||"armed_away"===e.state||"disarmed"===e.state||"pending"===e.state||"triggered"===e.state,this.disarmButtonVisible="armed_home"===e.state||"armed_away"===e.state||"pending"===e.state||"triggered"===e.state,this.armHomeButtonVisible="disarmed"===e.state,this.armAwayButtonVisible="disarmed"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},handleDisarmTap:function(){this.callService("alarm_disarm",{code:this.enteredCode})},handleHomeTap:function(){this.callService("alarm_arm_home",{code:this.enteredCode})},handleAwayTap:function(){this.callService("alarm_arm_away",{code:this.enteredCode})},callService:function(e,t){var a=t||{};a.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("alarm_control_panel",e,a).then(function(){this.enteredCode=""}.bind(this))}})</script><dom-module id="more-info-lock" assetpath="more-infos/"><template><style>paper-input{display:inline-block}</style><div hidden$="[[!stateObj.attributes.code_format]]"><paper-input label="code" value="{{enteredCode}}" pattern="[[stateObj.attributes.code_format]]" type="password"></paper-input><paper-button on-tap="handleUnlockTap" hidden$="[[!isLocked]]">Unlock</paper-button><paper-button on-tap="handleLockTap" hidden$="[[isLocked]]">Lock</paper-button></div></template></dom-module><script>Polymer({is:"more-info-lock",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"},enteredCode:{type:String,value:""}},handleUnlockTap:function(){this.callService("unlock",{code:this.enteredCode})},handleLockTap:function(){this.callService("lock",{code:this.enteredCode})},stateObjChanged:function(e){e&&(this.isLocked="locked"===e.state),this.async(function(){this.fire("iron-resize")}.bind(this),500)},callService:function(e,t){var i=t||{};i.entity_id=this.stateObj.entityId,this.hass.serviceActions.callService("lock",e,i)}})</script><script>Polymer({is:"more-info-content",properties:{hass:{type:Object},stateObj:{type:Object,observer:"stateObjChanged"}},created:function(){this.style.display="block"},stateObjChanged:function(t){var s;t?window.hassUtil.dynamicContentUpdater(this,"MORE-INFO-"+window.hassUtil.stateMoreInfoType(t).toUpperCase(),{hass:this.hass,stateObj:t,isVisible:!0}):(s=Polymer.dom(this),s.lastChild&&(s.lastChild.isVisible=!1))}})</script><dom-module id="more-info-dialog" assetpath="dialogs/"><template><style>paper-dialog{font-size:14px;width:365px}paper-dialog[data-domain=camera]{width:auto}state-history-charts{position:relative;z-index:1;max-width:365px}state-card-content{margin-bottom:24px;font-size:14px}@media all and (max-width:450px),all and (max-height:500px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}" data-domain$="[[stateObj.domain]]"><h2><state-card-content state-obj="[[stateObj]]" hass="[[hass]]" in-dialog=""></state-card-content></h2><template is="dom-if" if="[[showHistoryComponent]]"><state-history-charts state-history="[[stateHistory]]" is-loading-data="[[isLoadingHistoryData]]"></state-history-charts></template><paper-dialog-scrollable id="scrollable"><more-info-content state-obj="[[stateObj]]" hass="[[hass]]"></more-info-content></paper-dialog-scrollable></paper-dialog></template></dom-module><script>Polymer({is:"more-info-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},stateObj:{type:Object,bindNuclear:function(t){return t.moreInfoGetters.currentEntity},observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:function(t){return[t.moreInfoGetters.currentEntityHistory,function(t){return!!t&&[t]}]}},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(delayedDialogOpen, isLoadingEntityHistoryData)"},isLoadingEntityHistoryData:{type:Boolean,bindNuclear:function(t){return t.entityHistoryGetters.isLoadingEntityHistory}},hasHistoryComponent:{type:Boolean,bindNuclear:function(t){return t.configGetters.isComponentLoaded("history")},observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:function(t){return t.moreInfoGetters.isCurrentEntityHistoryStale},observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1,computed:"computeShowHistoryComponent(hasHistoryComponent, stateObj)"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},delayedDialogOpen:{type:Boolean,value:!1}},ready:function(){this.$.scrollable.dialogElement=this.$.dialog},computeIsLoadingHistoryData:function(t,e){return!t||e},computeShowHistoryComponent:function(t,e){return this.hasHistoryComponent&&e&&window.hassUtil.DOMAINS_WITH_NO_HISTORY.indexOf(e.domain)===-1},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&this.hass.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){return t?void this.async(function(){this.fetchHistoryData(),this.dialogOpen=!0}.bind(this),10):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){t?this.async(function(){this.delayedDialogOpen=!0}.bind(this),10):!t&&this.stateObj&&(this.async(function(){this.hass.moreInfoActions.deselectEntity()}.bind(this),10),this.delayedDialogOpen=!1)}})</script><dom-module id="ha-voice-command-dialog" assetpath="dialogs/"><template><style>iron-icon{margin-right:8px}.content{width:300px;min-height:80px;font-size:18px}.icon{float:left}.text{margin-left:48px;margin-right:24px}.interimTranscript{color:#a9a9a9}@media all and (max-width:450px){paper-dialog{margin:0;width:100%;max-height:calc(100% - 64px);position:fixed!important;bottom:0;left:0;right:0;overflow:scroll}}</style><paper-dialog id="dialog" with-backdrop="" opened="{{dialogOpen}}"><div class="content"><div class="icon"><iron-icon icon="mdi:text-to-speech" hidden$="[[isTransmitting]]"></iron-icon><paper-spinner active$="[[isTransmitting]]" hidden$="[[!isTransmitting]]"></paper-spinner></div><div class="text"><span>{{finalTranscript}}</span> <span class="interimTranscript">[[interimTranscript]]</span> …</div></div></paper-dialog></template></dom-module><script>Polymer({is:"ha-voice-command-dialog",behaviors:[window.hassBehavior],properties:{hass:{type:Object},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},finalTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.finalTranscript}},interimTranscript:{type:String,bindNuclear:function(e){return e.voiceGetters.extraInterimTranscript}},isTransmitting:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isTransmitting}},isListening:{type:Boolean,bindNuclear:function(e){return e.voiceGetters.isListening}},showListenInterface:{type:Boolean,computed:"computeShowListenInterface(isListening, isTransmitting)",observer:"showListenInterfaceChanged"}},computeShowListenInterface:function(e,n){return e||n},dialogOpenChanged:function(e){!e&&this.isListening&&this.hass.voiceActions.stop()},showListenInterfaceChanged:function(e){!e&&this.dialogOpen?this.dialogOpen=!1:e&&(this.dialogOpen=!0)}})</script><dom-module id="paper-icon-item" assetpath="../bower_components/paper-item/"><template><style include="paper-item-shared-styles"></style><style>:host{@apply(--layout-horizontal);@apply(--layout-center);@apply(--paper-font-subhead);@apply(--paper-item);@apply(--paper-icon-item)}.content-icon{@apply(--layout-horizontal);@apply(--layout-center);width:var(--paper-item-icon-width,56px);@apply(--paper-item-icon)}</style><div id="contentIcon" class="content-icon"><content select="[item-icon]"></content></div><content></content></template><script>Polymer({is:"paper-icon-item",behaviors:[Polymer.PaperItemBehavior]})</script></dom-module><dom-module id="ha-sidebar" assetpath="components/"><template><style include="iron-flex iron-flex-alignment iron-positioning">:host{--sidebar-text:{opacity:var(--dark-primary-opacity);font-weight:500;font-size:14px};display:block;overflow:auto;-ms-user-select:none;-webkit-user-select:none;-moz-user-select:none}app-toolbar{font-weight:400;opacity:var(--dark-primary-opacity);border-bottom:1px solid #e0e0e0}paper-menu{padding-bottom:0}paper-icon-item{--paper-icon-item:{cursor:pointer};--paper-item-icon:{color:#000;opacity:var(--dark-secondary-opacity)};--paper-item-selected:{color:var(--default-primary-color);background-color:#e8e8e8;opacity:1};}paper-icon-item.iron-selected{--paper-item-icon:{color:var(--default-primary-color);opacity:1};}paper-icon-item .item-text{@apply(--sidebar-text)}paper-icon-item.iron-selected .item-text{opacity:1}paper-icon-item.logout{margin-top:16px}.divider{height:1px;background-color:#000;margin:4px 0;opacity:var(--dark-divider-opacity)}.setting{@apply(--sidebar-text)}.subheader{@apply(--sidebar-text);padding:16px}.dev-tools{padding:0 8px;opacity:var(--dark-secondary-opacity)}</style><app-toolbar><div main-title="">Home Assistant</div><paper-icon-button icon="mdi:chevron-left" hidden$="[[narrow]]" on-tap="toggleMenu"></paper-icon-button></app-toolbar><paper-menu attr-for-selected="data-panel" selected="[[selected]]" on-iron-select="menuSelect"><paper-icon-item on-tap="menuClicked" data-panel="states"><iron-icon item-icon="" icon="mdi:apps"></iron-icon><span class="item-text">States</span></paper-icon-item><template is="dom-repeat" items="[[computePanels(panels)]]"><paper-icon-item on-tap="menuClicked" data-panel$="[[item.url_path]]"><iron-icon item-icon="" icon="[[item.icon]]"></iron-icon><span class="item-text">[[item.title]]</span></paper-icon-item></template><paper-icon-item on-tap="menuClicked" data-panel="logout" class="logout"><iron-icon item-icon="" icon="mdi:exit-to-app"></iron-icon><span class="item-text">Log Out</span></paper-icon-item></paper-menu><div><template is="dom-if" if="[[supportPush]]"><div class="divider"></div><paper-item class="horizontal layout justified"><div class="setting">Push Notifications</div><paper-toggle-button on-change="handlePushChange" checked="{{pushToggleChecked}}"></paper-toggle-button></paper-item></template><div class="divider"></div><div class="subheader">Developer Tools</div><div class="dev-tools layout horizontal justified"><paper-icon-button icon="mdi:remote" data-panel="dev-service" alt="Services" title="Services" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:code-tags" data-panel="dev-state" alt="States" title="States" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:radio-tower" data-panel="dev-event" alt="Events" title="Events" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:file-xml" data-panel="dev-template" alt="Templates" title="Templates" on-tap="menuClicked"></paper-icon-button><paper-icon-button icon="mdi:information-outline" data-panel="dev-info" alt="Info" title="Info" on-tap="menuClicked"></paper-icon-button></div></div></template></dom-module><script>Polymer({is:"ha-sidebar",behaviors:[window.hassBehavior],properties:{hass:{type:Object},menuShown:{type:Boolean},menuSelected:{type:String},narrow:{type:Boolean},selected:{type:String,bindNuclear:function(t){return t.navigationGetters.activePanelName}},panels:{type:Array,bindNuclear:function(t){return[t.navigationGetters.panels,function(t){return t.toJS()}]}},supportPush:{type:Boolean,value:!1,bindNuclear:function(t){return t.pushNotificationGetters.isSupported}},pushToggleChecked:{type:Boolean,bindNuclear:function(t){return t.pushNotificationGetters.isActive}}},created:function(){this._boundUpdateStyles=this.updateStyles.bind(this)},computePanels:function(t){var e={map:1,logbook:2,history:3},n=[];return Object.keys(t).forEach(function(e){t[e].title&&n.push(t[e])}),n.sort(function(t,n){var i=t.component_name in e,o=n.component_name in e;return i&&o?e[t.component_name]-e[n.component_name]:i?-1:o?1:t.title>n.title?1:t.title<n.title?-1:0}),n},menuSelect:function(){this.debounce("updateStyles",this._boundUpdateStyles,1)},menuClicked:function(t){for(var e=t.target,n=5,i=e.getAttribute("data-panel");n&&!i;)e=e.parentElement,i=e.getAttribute("data-panel"),n--;n&&this.selectPanel(i)},toggleMenu:function(){this.fire("close-menu")},selectPanel:function(t){if(t!==this.selected){if("logout"===t)return void this.handleLogOut();this.hass.navigationActions.navigate.apply(null,t.split("/")),this.debounce("updateStyles",this._boundUpdateStyles,1)}},handlePushChange:function(t){t.target.checked?this.hass.pushNotificationActions.subscribePushNotifications().then(function(t){this.pushToggleChecked=t}.bind(this)):this.hass.pushNotificationActions.unsubscribePushNotifications().then(function(t){this.pushToggleChecked=!t}.bind(this))},handleLogOut:function(){this.hass.authActions.logOut()}})</script><dom-module id="home-assistant-main" assetpath="layouts/"><template><notification-manager hass="[[hass]]"></notification-manager><more-info-dialog hass="[[hass]]"></more-info-dialog><ha-voice-command-dialog hass="[[hass]]"></ha-voice-command-dialog><iron-media-query query="(max-width: 870px)" query-matches="{{narrow}}"></iron-media-query><paper-drawer-panel id="drawer" force-narrow="[[computeForceNarrow(narrow, showSidebar)]]" responsive-width="0" disable-swipe="[[isSelectedMap]]" disable-edge-swipe="[[isSelectedMap]]"><ha-sidebar drawer="" narrow="[[narrow]]" hass="[[hass]]"></ha-sidebar><iron-pages main="" attr-for-selected="id" fallback-selection="panel-resolver" selected="[[activePanel]]" selected-attribute="panel-visible"><partial-cards id="states" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-cards><partial-panel-resolver id="panel-resolver" narrow="[[narrow]]" hass="[[hass]]" show-menu="[[showSidebar]]"></partial-panel-resolver></iron-pages></paper-drawer-panel></template></dom-module><script>Polymer({is:"home-assistant-main",behaviors:[window.hassBehavior],properties:{hass:{type:Object},narrow:{type:Boolean,value:!0},activePanel:{type:String,bindNuclear:function(e){return e.navigationGetters.activePanelName},observer:"activePanelChanged"},showSidebar:{type:Boolean,value:!1,bindNuclear:function(e){return e.navigationGetters.showSidebar}}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():this.hass.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&this.hass.navigationActions.showSidebar(!1)},activePanelChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){window.removeInitMsg(),this.hass.startUrlSync()},computeForceNarrow:function(e,n){return e||!n},detached:function(){this.hass.stopUrlSync()}})</script></div><dom-module id="home-assistant"><template><template is="dom-if" if="[[loaded]]"><home-assistant-main hass="[[hass]]"></home-assistant-main></template><template is="dom-if" if="[[!loaded]]"><login-form hass="[[hass]]" force-show-loading="[[computeForceShowLoading(dataLoaded, iconsLoaded)]]"></login-form></template></template></dom-module><script>Polymer({is:"home-assistant",hostAttributes:{icons:null},behaviors:[window.hassBehavior],properties:{hass:{type:Object,value:window.hass},icons:{type:String},dataLoaded:{type:Boolean,bindNuclear:function(o){return o.syncGetters.isDataLoaded}},iconsLoaded:{type:Boolean,value:!1},loaded:{type:Boolean,computed:"computeLoaded(dataLoaded, iconsLoaded)"}},computeLoaded:function(o,t){return o&&t},computeForceShowLoading:function(o,t){return o&&!t},loadIcons:function(){var o=function(){this.iconsLoaded=!0}.bind(this);this.importHref("/static/mdi-"+this.icons+".html",o,function(){this.importHref("/static/mdi.html",o,o)})},ready:function(){this.loadIcons()}})</script></body></html> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index ca8c799c522e8783885db768038366dd810d5255..a8fa716d1ea9f89ab4ceec7177870918a4925c6a 100644 GIT binary patch delta 48580 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∨pPlLO(s>o9b|X#kBP8tByv^*yQh@ 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 U)>MsGH~!lP{Cx0ehdu`b0R6z^S^xk5 delta 48153 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�++cXX6y zu)h5x&kqxKZAsbNm#wS2IjizbYD}cr<-=ze$DMnha!0m0A@@pGcfASEzKP4GU)|Y~ zq$alc<HpNHb6!78y%Dry<Bk^@x1SxWS#Z+E_V9xV^ISt#%*sqrz4v*R&&ns4gU%KQ zF39!uE&TcLz?uJ5Gj-Q1|N8&<M#Z<Dd4C1(+a~{GQ3#)Llz(ZJ-LA+f<<^%J1%fBA zSFZl7tSWj$aDzlc`)-4EYwjn1jIP&u`{B5X)7<~;Vu2?#D`rkT;OT8Kxk`!kgo9<{ z*HijCPn?PK>U`|G%izwDs+(WdER<Rp%Hbl&+<o1VcSTqt%SWAATvzlGD!nf)OHgO* zb>-WB<#LIc^WRAt%Z})@7?{-QrOg+NU1oN8LZ$%E&y~yHd{6y+{>^=-aES@GE=fun z)KANKte)~;On5P?f|&MNsiRpZ+#?p}+fK1%{#cge|LWbbZPnAhc-$~w6p$5kC&-2G zL-XxZrxbUFbG0)2+3H`bIQ{*?S)&afU!~U==?I!m+b$F}d!a#9?CqDy$y@v%DA#z@ zPc}0!?Ej|te*r(k{uPf4tKDAhGr75l^?mZ&@Gt50$8DDVQNGi#!P(I5$_&P8!;6-o z6ZfiLQt>KFwoA{G;6G|uZ<>{+@r&1)@o$Kz$HB5}$HjA$z9q~H&p&0%X}H^Nf&Y*5 zr*E>Gm|jxab#OxV{HpQ~Yt26&H?h_i+m-)&Z}%1>U-k{9XUsBArKOadw7GMCqhi_H z>zgE;4@X!ZOQ@IOkXZjq?)#(QzKR(e?v|amstS7UFFU0x^-A=f+ua^(l?pb?9eWmM zo|aPBq+jEu)jrpwxob!4_DA_m!4kZd#pN&W{QKH-J0_glwZv6k_t6*8uTx*8>#}iu zTQ#>Qec}0ej;#id*G7vUHaf)nJ5XYyHJ7o%?A<T6`WkdeI8_?>Z)7@hQsv+~GvfzE zKHNWV9h#PAuVcL9^MrB-yUGH?v(+DK@BXQ~W4~T6tuRO>?)$@MtLiSU^<TU??P1>E Y{-a-{wkv+w`29bFO>N5A+3Fk&0CdhAU;qFB diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 84e87e7554b..988ac002816 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 84e87e7554b9cd9acfc63ecadcb3e41ccd89eb30 +Subproject commit 988ac0028163cfc970e781718bc9459ed486ea61 diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 48c21a590a9..e8c6a4989d8 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","e7ef237586d3fbf6ba0bdb577923ea38"],["/frontend/panels/dev-event-f19840b9a6a46f57cb064b384e1353f5.html","21cf247351b95fdd451c304e308a726c"],["/frontend/panels/dev-info-3765a371478cc66d677cf6dcc35267c6.html","dd614f2ee5e09a9dfd7f98822a55893d"],["/frontend/panels/dev-service-e32bcd3afdf485417a3e20b4fc760776.html","d7b70007dfb97e8ccbaa79bc2b41a51d"],["/frontend/panels/dev-state-8257d99a38358a150eafdb23fa6727e0.html","3cf24bb7e92c759b35a74cf641ed80cb"],["/frontend/panels/dev-template-cbb251acabd5e7431058ed507b70522b.html","edd6ef67f4ab763f9d3dd7d3aa6f4007"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-22d39af274e1d824ca1302e10971f2d8.js","c6305fc1dee07b5bf94de95ffaccacc4"],["/static/frontend-5aef64bf1b94cc197ac45f87e26f57b5.html","9c16019b4341a5862ad905668ac2153b"],["/static/mdi-48fcee544a61b668451faf2b7295df70.html","08069e54df1fd92bbff70299605d8585"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;a<e.length;a++)if(n=e[a],n.url===t&&"focus"in n)return n.focus();if(clients.openWindow)return clients.openWindow(t)})))}),self.addEventListener("notificationclose",function(e){notificationEventCallback("closed",e)}); \ No newline at end of file +"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","8fc0e185070f60174a8d0bad69226022"],["/frontend/panels/dev-event-f19840b9a6a46f57cb064b384e1353f5.html","21cf247351b95fdd451c304e308a726c"],["/frontend/panels/dev-info-3765a371478cc66d677cf6dcc35267c6.html","dd614f2ee5e09a9dfd7f98822a55893d"],["/frontend/panels/dev-service-e32bcd3afdf485417a3e20b4fc760776.html","d7b70007dfb97e8ccbaa79bc2b41a51d"],["/frontend/panels/dev-state-8257d99a38358a150eafdb23fa6727e0.html","3cf24bb7e92c759b35a74cf641ed80cb"],["/frontend/panels/dev-template-cbb251acabd5e7431058ed507b70522b.html","edd6ef67f4ab763f9d3dd7d3aa6f4007"],["/frontend/panels/map-3b0ca63286cbe80f27bd36dbc2434e89.html","d22eee1c33886ce901851ccd35cb43ed"],["/static/core-22d39af274e1d824ca1302e10971f2d8.js","c6305fc1dee07b5bf94de95ffaccacc4"],["/static/frontend-61e57194179b27563a05282b58dd4f47.html","0a0bbfc6567f7ba6a4dabd7fef6a0ee7"],["/static/mdi-48fcee544a61b668451faf2b7295df70.html","08069e54df1fd92bbff70299605d8585"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","89313f9f2126ddea722150f8154aca03"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;a<e.length;a++)if(n=e[a],n.url===t&&"focus"in n)return n.focus();if(clients.openWindow)return clients.openWindow(t)})))}),self.addEventListener("notificationclose",function(e){notificationEventCallback("closed",e)}); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/service_worker.js.gz b/homeassistant/components/frontend/www_static/service_worker.js.gz index 8b501e1db0e7b1479276ffd73b11ec8e8320bafe..e73741e44dc8bb89b14e0f04d7360627a9b0e9f3 100644 GIT binary patch delta 650 zcmbO%G)0I_zMF$1;`T<i$&B?zy3PubLYo4XD<&GA57F4+RqS<nLeTTg{nDkEXD&VF z9p`wnPc)|Qz_FSop7V|_JW+Y-afrH4mqD-Vl%o!dR4#e8Grd~qk|niSLs7|pOHiRx zipVj6R>^desms5LOkL+L=q)T~D74w<lu4*&a?o<GQyL33C%<&-4btp1W%W?-JyW@E zOOn-jBd^LyDV0n7R%b5UsiV@Pu*hjuNA}XkI-Q)41up~~iP~h6@+MALSck`X*_IQM z3qqTUr*V6_`cyd8Ejd}hytqfr=c#4?rpYNxR`rJ_EN16inzWcp!1jXXWkYeD-ja1n zOC^#H2Fos9eLOTVTGCZ%icN3EG%v=;6`I0YUZRTx-3?QIikWmRWbCP#@-Xa#^BEf@ z!FMiQ7EPuZVhf!5Qtuw<2oilN!<yu@vgg>O$r?)>4$Tqt4Hc`&4P585*x=$M4TdjT zf>!;a3G?bR^$ee<?ols)d_Y5Wg2ANZo?^$yNp3O^Ppt4TI^!?9x%a9ff9nM!UjZq# zoMqZAlQNHVwKL@S|8f#tEU}s^*r2b{%Vk#Dj5kuX0zJ<<FXc$zHsHQ2^Ig+-%PCE* zgVRmUUp5GgoTNJULGRU!66?IIz}Z!Q*8P_J8#P_az%4qZUU`=H%uWrzi(XDi^VAKO z**@<|@N}~m{<>+#*|Sk%N-JEaWje8*=s7Zx&v}8%iH;zzj6cSa>m5W_AB~!E%#DGg zu*1W9RqCXro*oT`K7tN6?S;SbrLCT1o}C%vHtXq5ua*Z^ij}K&DsYO=Y~m4)e&?l~ zb6+mIE>qr3W%>P&`GOnPq-m(DRm!<3Id@!8IM<LiS%)Q`#cSin7n|p^<gjo&&7XW~ Ist5xE0JCNiRR910 delta 649 zcmbOtG+BsEzMF$%>D7&FlNsw98kY%rZwhgZdJ*y=Kx3l8w96b7Q!MA#-dQpGoQ`SS zC$3XvYaSG_m_1YW{iMU^dM;RQxm99NOQy~u9X27=iGEfh0sN{#muI+g3RW(f+9j;C z*q}}0jK$)WHfxu!D6#E|nDwD!;*8XwWh=cTCtHOExpDf=^fAwx;^nzU(}5|`=Unkp z(aV+70#8j=Ijvk8<;#6GRWXr8P&CLjMq4)B(?_Dep-t)9q@{|<-)GH8NR%*I>Uxf0 zt<ap!F&<h;hlD>V`?g6-q?#mZofmvGIhDz(-plE=qtnV8E0|pPOHP%XVf9v?yV^su zE#gDS@fWWOLvMt+P2^DZSDv*r$U!XYR7+P-YsQg4p2&Tyy-67i%JQi@L_bYPnZeFc zuH-6nP|AcmK=Jsdyabn(T}6FNh6_X7l23Yy1Suq*>sY46y>FXF__Dwm8J;2xRZ}_U z9_KPRUvDyf#%H5@lXn*;Oey$cCMFeZG;Pw8p3@c=C7H8~BXf$)r>pRK_KDrPkf!-m zi+{4o*&Rz%I*-iz(yHZFxJ-3fg3RYB9CzAJuDi&7Fk_y^*=-wnHyfNSoPWt>^&GB+ zA63tOHt`9Wmg1>ik!&h;w{LdTm1T1KU)Q<qzqXXC=c3rn`i^HoX-ZweJPL}2=O;^C zo>%O;L1pp$&Z@{W&(d_cW3MZnHd)A&;`Yd+T`@o@#YI!q<loFS;S0L1Ch7VlD>LXU zo-i>cNLO&bipl|rWgH9M%;&6T-yC{!_Er-;<+Gn+RGkXuPO!NeGohv1$FZ$bw|uGS zw)}q6{ag5zCtZI3!(1>T%y^3MWE+0viHa^60>>w$Pu6A0XX*MW`D*h5mK+uiuFQ=G Jriw5y000tx5cdE8 From f87016afe6586b4cea80c7347c7d259c35f1997a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus.schoutsen@mycase.com> Date: Mon, 9 Jan 2017 01:38:27 +0100 Subject: [PATCH 122/189] Update MDI --- homeassistant/components/frontend/version.py | 2 +- .../components/frontend/www_static/mdi.html | 2 +- .../frontend/www_static/mdi.html.gz | Bin 181452 -> 184175 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 09f6803282b..3af14628008 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -3,7 +3,7 @@ FINGERPRINTS = { "core.js": "22d39af274e1d824ca1302e10971f2d8", "frontend.html": "61e57194179b27563a05282b58dd4f47", - "mdi.html": "48fcee544a61b668451faf2b7295df70", + "mdi.html": "5bb2f1717206bad0d187c2633062c575", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "f19840b9a6a46f57cb064b384e1353f5", "panels/ha-panel-dev-info.html": "3765a371478cc66d677cf6dcc35267c6", diff --git a/homeassistant/components/frontend/www_static/mdi.html b/homeassistant/components/frontend/www_static/mdi.html index c3d73386f8d..ce1d5d24574 100644 --- a/homeassistant/components/frontend/www_static/mdi.html +++ b/homeassistant/components/frontend/www_static/mdi.html @@ -1 +1 @@ -<iron-iconset-svg name="mdi" iconSize="24"><svg><defs><g id="access-point"><path d="M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="access-point-network"><path d="M4.93,2.93C3.12,4.74 2,7.24 2,10C2,12.76 3.12,15.26 4.93,17.07L6.34,15.66C4.89,14.22 4,12.22 4,10C4,7.79 4.89,5.78 6.34,4.34L4.93,2.93M19.07,2.93L17.66,4.34C19.11,5.78 20,7.79 20,10C20,12.22 19.11,14.22 17.66,15.66L19.07,17.07C20.88,15.26 22,12.76 22,10C22,7.24 20.88,4.74 19.07,2.93M7.76,5.76C6.67,6.85 6,8.35 6,10C6,11.65 6.67,13.15 7.76,14.24L9.17,12.83C8.45,12.11 8,11.11 8,10C8,8.89 8.45,7.89 9.17,7.17L7.76,5.76M16.24,5.76L14.83,7.17C15.55,7.89 16,8.89 16,10C16,11.11 15.55,12.11 14.83,12.83L16.24,14.24C17.33,13.15 18,11.65 18,10C18,8.35 17.33,6.85 16.24,5.76M12,8A2,2 0 0,0 10,10A2,2 0 0,0 12,12A2,2 0 0,0 14,10A2,2 0 0,0 12,8M11,14V18H10A1,1 0 0,0 9,19H2V21H9A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21H22V19H15A1,1 0 0,0 14,18H13V14H11Z" /></g><g id="account"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z" /></g><g id="account-alert"><path d="M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C14.42,14 18,15.79 18,18V20H2V18C2,15.79 5.58,14 10,14M20,12V7H22V12H20M20,16V14H22V16H20Z" /></g><g id="account-box"><path d="M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z" /></g><g id="account-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z" /></g><g id="account-card-details"><path d="M2,3H22C23.05,3 24,3.95 24,5V19C24,20.05 23.05,21 22,21H2C0.95,21 0,20.05 0,19V5C0,3.95 0.95,3 2,3M14,6V7H22V6H14M14,8V9H21.5L22,9V8H14M14,10V11H21V10H14M8,13.91C6,13.91 2,15 2,17V18H14V17C14,15 10,13.91 8,13.91M8,6A3,3 0 0,0 5,9A3,3 0 0,0 8,12A3,3 0 0,0 11,9A3,3 0 0,0 8,6Z" /></g><g id="account-check"><path d="M9,5A3.5,3.5 0 0,1 12.5,8.5A3.5,3.5 0 0,1 9,12A3.5,3.5 0 0,1 5.5,8.5A3.5,3.5 0 0,1 9,5M9,13.75C12.87,13.75 16,15.32 16,17.25V19H2V17.25C2,15.32 5.13,13.75 9,13.75M17,12.66L14.25,9.66L15.41,8.5L17,10.09L20.59,6.5L21.75,7.91L17,12.66Z" /></g><g id="account-circle"><path d="M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="account-convert"><path d="M7.5,21.5L8.85,20.16L12.66,23.97L12,24C5.71,24 0.56,19.16 0.05,13H1.55C1.91,16.76 4.25,19.94 7.5,21.5M16.5,2.5L15.15,3.84L11.34,0.03L12,0C18.29,0 23.44,4.84 23.95,11H22.45C22.09,7.24 19.75,4.07 16.5,2.5M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6V17M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9Z" /></g><g id="account-key"><path d="M11,10V12H10V14H8V12H5.83C5.42,13.17 4.31,14 3,14A3,3 0 0,1 0,11A3,3 0 0,1 3,8C4.31,8 5.42,8.83 5.83,10H11M3,10A1,1 0 0,0 2,11A1,1 0 0,0 3,12A1,1 0 0,0 4,11A1,1 0 0,0 3,10M16,14C18.67,14 24,15.34 24,18V20H8V18C8,15.34 13.33,14 16,14M16,12A4,4 0 0,1 12,8A4,4 0 0,1 16,4A4,4 0 0,1 20,8A4,4 0 0,1 16,12Z" /></g><g id="account-location"><path d="M18,16H6V15.1C6,13.1 10,12 12,12C14,12 18,13.1 18,15.1M12,5.3C13.5,5.3 14.7,6.5 14.7,8C14.7,9.5 13.5,10.7 12,10.7C10.5,10.7 9.3,9.5 9.3,8C9.3,6.5 10.5,5.3 12,5.3M19,2H5C3.89,2 3,2.89 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4C21,2.89 20.1,2 19,2Z" /></g><g id="account-minus"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M1,10V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" /></g><g id="account-multiple"><path d="M16,13C15.71,13 15.38,13 15.03,13.05C16.19,13.89 17,15 17,16.5V19H23V16.5C23,14.17 18.33,13 16,13M8,13C5.67,13 1,14.17 1,16.5V19H15V16.5C15,14.17 10.33,13 8,13M8,11A3,3 0 0,0 11,8A3,3 0 0,0 8,5A3,3 0 0,0 5,8A3,3 0 0,0 8,11M16,11A3,3 0 0,0 19,8A3,3 0 0,0 16,5A3,3 0 0,0 13,8A3,3 0 0,0 16,11Z" /></g><g id="account-multiple-minus"><path d="M13,13C11,13 7,14 7,16V18H19V16C19,14 15,13 13,13M19.62,13.16C20.45,13.88 21,14.82 21,16V18H24V16C24,14.46 21.63,13.5 19.62,13.16M13,11A3,3 0 0,0 16,8A3,3 0 0,0 13,5A3,3 0 0,0 10,8A3,3 0 0,0 13,11M18,11A3,3 0 0,0 21,8A3,3 0 0,0 18,5C17.68,5 17.37,5.05 17.08,5.14C17.65,5.95 18,6.94 18,8C18,9.06 17.65,10.04 17.08,10.85C17.37,10.95 17.68,11 18,11M8,10H0V12H8V10Z" /></g><g id="account-multiple-outline"><path d="M16.5,6.5A2,2 0 0,1 18.5,8.5A2,2 0 0,1 16.5,10.5A2,2 0 0,1 14.5,8.5A2,2 0 0,1 16.5,6.5M16.5,12A3.5,3.5 0 0,0 20,8.5A3.5,3.5 0 0,0 16.5,5A3.5,3.5 0 0,0 13,8.5A3.5,3.5 0 0,0 16.5,12M7.5,6.5A2,2 0 0,1 9.5,8.5A2,2 0 0,1 7.5,10.5A2,2 0 0,1 5.5,8.5A2,2 0 0,1 7.5,6.5M7.5,12A3.5,3.5 0 0,0 11,8.5A3.5,3.5 0 0,0 7.5,5A3.5,3.5 0 0,0 4,8.5A3.5,3.5 0 0,0 7.5,12M21.5,17.5H14V16.25C14,15.79 13.8,15.39 13.5,15.03C14.36,14.73 15.44,14.5 16.5,14.5C18.94,14.5 21.5,15.71 21.5,16.25M12.5,17.5H2.5V16.25C2.5,15.71 5.06,14.5 7.5,14.5C9.94,14.5 12.5,15.71 12.5,16.25M16.5,13C15.3,13 13.43,13.34 12,14C10.57,13.33 8.7,13 7.5,13C5.33,13 1,14.08 1,16.25V19H23V16.25C23,14.08 18.67,13 16.5,13Z" /></g><g id="account-multiple-plus"><path d="M13,13C11,13 7,14 7,16V18H19V16C19,14 15,13 13,13M19.62,13.16C20.45,13.88 21,14.82 21,16V18H24V16C24,14.46 21.63,13.5 19.62,13.16M13,11A3,3 0 0,0 16,8A3,3 0 0,0 13,5A3,3 0 0,0 10,8A3,3 0 0,0 13,11M18,11A3,3 0 0,0 21,8A3,3 0 0,0 18,5C17.68,5 17.37,5.05 17.08,5.14C17.65,5.95 18,6.94 18,8C18,9.06 17.65,10.04 17.08,10.85C17.37,10.95 17.68,11 18,11M8,10H5V7H3V10H0V12H3V15H5V12H8V10Z" /></g><g id="account-network"><path d="M13,16V18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H5V14.5C5,12.57 8.13,11 12,11C15.87,11 19,12.57 19,14.5V16H13M12,2A3.5,3.5 0 0,1 15.5,5.5A3.5,3.5 0 0,1 12,9A3.5,3.5 0 0,1 8.5,5.5A3.5,3.5 0 0,1 12,2Z" /></g><g id="account-off"><path d="M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z" /></g><g id="account-outline"><path d="M12,13C9.33,13 4,14.33 4,17V20H20V17C20,14.33 14.67,13 12,13M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,14.9C14.97,14.9 18.1,16.36 18.1,17V18.1H5.9V17C5.9,16.36 9,14.9 12,14.9M12,5.9A2.1,2.1 0 0,1 14.1,8A2.1,2.1 0 0,1 12,10.1A2.1,2.1 0 0,1 9.9,8A2.1,2.1 0 0,1 12,5.9Z" /></g><g id="account-plus"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" /></g><g id="account-remove"><path d="M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z" /></g><g id="account-search"><path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,14C11.11,14 12.5,13.15 13.32,11.88C12.5,10.75 11.11,10 9.5,10C7.89,10 6.5,10.75 5.68,11.88C6.5,13.15 7.89,14 9.5,14M9.5,5A1.75,1.75 0 0,0 7.75,6.75A1.75,1.75 0 0,0 9.5,8.5A1.75,1.75 0 0,0 11.25,6.75A1.75,1.75 0 0,0 9.5,5Z" /></g><g id="account-settings"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z" /></g><g id="account-settings-variant"><path d="M9,4A4,4 0 0,0 5,8A4,4 0 0,0 9,12A4,4 0 0,0 13,8A4,4 0 0,0 9,4M9,14C6.33,14 1,15.33 1,18V20H12.08C12.03,19.67 12,19.34 12,19C12,17.5 12.5,16 13.41,14.8C11.88,14.28 10.18,14 9,14M18,14C17.87,14 17.76,14.09 17.74,14.21L17.55,15.53C17.25,15.66 16.96,15.82 16.7,16L15.46,15.5C15.35,15.5 15.22,15.5 15.15,15.63L14.15,17.36C14.09,17.47 14.11,17.6 14.21,17.68L15.27,18.5C15.25,18.67 15.24,18.83 15.24,19C15.24,19.17 15.25,19.33 15.27,19.5L14.21,20.32C14.12,20.4 14.09,20.53 14.15,20.64L15.15,22.37C15.21,22.5 15.34,22.5 15.46,22.5L16.7,22C16.96,22.18 17.24,22.35 17.55,22.47L17.74,23.79C17.76,23.91 17.86,24 18,24H20C20.11,24 20.22,23.91 20.24,23.79L20.43,22.47C20.73,22.34 21,22.18 21.27,22L22.5,22.5C22.63,22.5 22.76,22.5 22.83,22.37L23.83,20.64C23.89,20.53 23.86,20.4 23.77,20.32L22.7,19.5C22.72,19.33 22.74,19.17 22.74,19C22.74,18.83 22.73,18.67 22.7,18.5L23.76,17.68C23.85,17.6 23.88,17.47 23.82,17.36L22.82,15.63C22.76,15.5 22.63,15.5 22.5,15.5L21.27,16C21,15.82 20.73,15.65 20.42,15.53L20.23,14.21C20.22,14.09 20.11,14 20,14M19,17.5A1.5,1.5 0 0,1 20.5,19A1.5,1.5 0 0,1 19,20.5C18.16,20.5 17.5,19.83 17.5,19A1.5,1.5 0 0,1 19,17.5Z" /></g><g id="account-star"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,13.28L7.45,14.77L6.8,11.96L9,10.08L6.11,9.83L5,7.19L3.87,9.83L1,10.08L3.18,11.96L2.5,14.77L5,13.28Z" /></g><g id="account-star-variant"><path d="M9,14C11.67,14 17,15.33 17,18V20H1V18C1,15.33 6.33,14 9,14M9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12M19,13.28L16.54,14.77L17.2,11.96L15,10.08L17.89,9.83L19,7.19L20.13,9.83L23,10.08L20.82,11.96L21.5,14.77L19,13.28Z" /></g><g id="account-switch"><path d="M16,9C18.33,9 23,10.17 23,12.5V15H17V12.5C17,11 16.19,9.89 15.04,9.05L16,9M8,9C10.33,9 15,10.17 15,12.5V15H1V12.5C1,10.17 5.67,9 8,9M8,7A3,3 0 0,1 5,4A3,3 0 0,1 8,1A3,3 0 0,1 11,4A3,3 0 0,1 8,7M16,7A3,3 0 0,1 13,4A3,3 0 0,1 16,1A3,3 0 0,1 19,4A3,3 0 0,1 16,7M9,16.75V19H15V16.75L18.25,20L15,23.25V21H9V23.25L5.75,20L9,16.75Z" /></g><g id="adjust"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12Z" /></g><g id="air-conditioner"><path d="M6.59,0.66C8.93,-1.15 11.47,1.06 12.04,4.5C12.47,4.5 12.89,4.62 13.27,4.84C13.79,4.24 14.25,3.42 14.07,2.5C13.65,0.35 16.06,-1.39 18.35,1.58C20.16,3.92 17.95,6.46 14.5,7.03C14.5,7.46 14.39,7.89 14.16,8.27C14.76,8.78 15.58,9.24 16.5,9.06C18.63,8.64 20.38,11.04 17.41,13.34C15.07,15.15 12.53,12.94 11.96,9.5C11.53,9.5 11.11,9.37 10.74,9.15C10.22,9.75 9.75,10.58 9.93,11.5C10.35,13.64 7.94,15.39 5.65,12.42C3.83,10.07 6.05,7.53 9.5,6.97C9.5,6.54 9.63,6.12 9.85,5.74C9.25,5.23 8.43,4.76 7.5,4.94C5.37,5.36 3.62,2.96 6.59,0.66M5,16H7A2,2 0 0,1 9,18V24H7V22H5V24H3V18A2,2 0 0,1 5,16M5,18V20H7V18H5M12.93,16H15L12.07,24H10L12.93,16M18,16H21V18H18V22H21V24H18A2,2 0 0,1 16,22V18A2,2 0 0,1 18,16Z" /></g><g id="airballoon"><path d="M11,23A2,2 0 0,1 9,21V19H15V21A2,2 0 0,1 13,23H11M12,1C12.71,1 13.39,1.09 14.05,1.26C15.22,2.83 16,5.71 16,9C16,11.28 15.62,13.37 15,16A2,2 0 0,1 13,18H11A2,2 0 0,1 9,16C8.38,13.37 8,11.28 8,9C8,5.71 8.78,2.83 9.95,1.26C10.61,1.09 11.29,1 12,1M20,8C20,11.18 18.15,15.92 15.46,17.21C16.41,15.39 17,11.83 17,9C17,6.17 16.41,3.61 15.46,1.79C18.15,3.08 20,4.82 20,8M4,8C4,4.82 5.85,3.08 8.54,1.79C7.59,3.61 7,6.17 7,9C7,11.83 7.59,15.39 8.54,17.21C5.85,15.92 4,11.18 4,8Z" /></g><g id="airplane"><path d="M21,16V14L13,9V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V9L2,14V16L10,13.5V19L8,20.5V22L11.5,21L15,22V20.5L13,19V13.5L21,16Z" /></g><g id="airplane-landing"><path d="M2.5,19H21.5V21H2.5V19M9.68,13.27L14.03,14.43L19.34,15.85C20.14,16.06 20.96,15.59 21.18,14.79C21.39,14 20.92,13.17 20.12,12.95L14.81,11.53L12.05,2.5L10.12,2V10.28L5.15,8.95L4.22,6.63L2.77,6.24V11.41L4.37,11.84L9.68,13.27Z" /></g><g id="airplane-off"><path d="M3.15,5.27L8.13,10.26L2.15,14V16L10.15,13.5V19L8.15,20.5V22L11.65,21L15.15,22V20.5L13.15,19V15.27L18.87,21L20.15,19.73L4.42,4M13.15,9V3.5A1.5,1.5 0 0,0 11.65,2A1.5,1.5 0 0,0 10.15,3.5V7.18L17.97,15L21.15,16V14L13.15,9Z" /></g><g id="airplane-takeoff"><path d="M2.5,19H21.5V21H2.5V19M22.07,9.64C21.86,8.84 21.03,8.36 20.23,8.58L14.92,10L8,3.57L6.09,4.08L10.23,11.25L5.26,12.58L3.29,11.04L1.84,11.43L3.66,14.59L4.43,15.92L6.03,15.5L11.34,14.07L15.69,12.91L21,11.5C21.81,11.26 22.28,10.44 22.07,9.64Z" /></g><g id="airplay"><path d="M6,22H18L12,16M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H7V17H3V5H21V17H17V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z" /></g><g id="alarm"><path d="M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12.5,8H11V14L15.75,16.85L16.5,15.62L12.5,13.25V8M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z" /></g><g id="alarm-check"><path d="M10.54,14.53L8.41,12.4L7.35,13.46L10.53,16.64L16.53,10.64L15.47,9.58L10.54,14.53M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z" /></g><g id="alarm-multiple"><path d="M9.29,3.25L5.16,6.72L4,5.34L8.14,1.87L9.29,3.25M22,5.35L20.84,6.73L16.7,3.25L17.86,1.87L22,5.35M13,4A8,8 0 0,1 21,12A8,8 0 0,1 13,20A8,8 0 0,1 5,12A8,8 0 0,1 13,4M13,6A6,6 0 0,0 7,12A6,6 0 0,0 13,18A6,6 0 0,0 19,12A6,6 0 0,0 13,6M12,7.5H13.5V12.03L16.72,13.5L16.1,14.86L12,13V7.5M1,14C1,11.5 2.13,9.3 3.91,7.83C3.33,9.1 3,10.5 3,12L3.06,13.13L3,14C3,16.28 4.27,18.26 6.14,19.28C7.44,20.5 9.07,21.39 10.89,21.78C10.28,21.92 9.65,22 9,22A8,8 0 0,1 1,14Z" /></g><g id="alarm-off"><path d="M8,3.28L6.6,1.86L5.74,2.57L7.16,4M16.47,18.39C15.26,19.39 13.7,20 12,20A7,7 0 0,1 5,13C5,11.3 5.61,9.74 6.61,8.53M2.92,2.29L1.65,3.57L3,4.9L1.87,5.83L3.29,7.25L4.4,6.31L5.2,7.11C3.83,8.69 3,10.75 3,13A9,9 0 0,0 12,22C14.25,22 16.31,21.17 17.89,19.8L20.09,22L21.36,20.73L3.89,3.27L2.92,2.29M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,6A7,7 0 0,1 19,13C19,13.84 18.84,14.65 18.57,15.4L20.09,16.92C20.67,15.73 21,14.41 21,13A9,9 0 0,0 12,4C10.59,4 9.27,4.33 8.08,4.91L9.6,6.43C10.35,6.16 11.16,6 12,6Z" /></g><g id="alarm-plus"><path d="M13,9H11V12H8V14H11V17H13V14H16V12H13M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39Z" /></g><g id="alarm-snooze"><path d="M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M9,11H12.63L9,15.2V17H15V15H11.37L15,10.8V9H9V11Z" /></g><g id="album"><path d="M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12,16.5C9.5,16.5 7.5,14.5 7.5,12C7.5,9.5 9.5,7.5 12,7.5C14.5,7.5 16.5,9.5 16.5,12C16.5,14.5 14.5,16.5 12,16.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="alert"><path d="M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z" /></g><g id="alert-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13,13V7H11V13H13M13,17V15H11V17H13Z" /></g><g id="alert-circle"><path d="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="alert-circle-outline"><path d="M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z" /></g><g id="alert-octagon"><path d="M13,13H11V7H13M12,17.3A1.3,1.3 0 0,1 10.7,16A1.3,1.3 0 0,1 12,14.7A1.3,1.3 0 0,1 13.3,16A1.3,1.3 0 0,1 12,17.3M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3Z" /></g><g id="alert-outline"><path d="M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16" /></g><g id="all-inclusive"><path d="M18.6,6.62C17.16,6.62 15.8,7.18 14.83,8.15L7.8,14.39C7.16,15.03 6.31,15.38 5.4,15.38C3.53,15.38 2,13.87 2,12C2,10.13 3.53,8.62 5.4,8.62C6.31,8.62 7.16,8.97 7.84,9.65L8.97,10.65L10.5,9.31L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62C2.42,6.62 0,9.04 0,12C0,14.96 2.42,17.38 5.4,17.38C6.84,17.38 8.2,16.82 9.17,15.85L16.2,9.61C16.84,8.97 17.69,8.62 18.6,8.62C20.47,8.62 22,10.13 22,12C22,13.87 20.47,15.38 18.6,15.38C17.7,15.38 16.84,15.03 16.16,14.35L15,13.34L13.5,14.68L14.78,15.8C15.8,16.81 17.15,17.37 18.6,17.37C21.58,17.37 24,14.96 24,12C24,9 21.58,6.62 18.6,6.62Z" /></g><g id="alpha"><path d="M18.08,17.8C17.62,17.93 17.21,18 16.85,18C15.65,18 14.84,17.12 14.43,15.35H14.38C13.39,17.26 12,18.21 10.25,18.21C8.94,18.21 7.89,17.72 7.1,16.73C6.31,15.74 5.92,14.5 5.92,13C5.92,11.25 6.37,9.85 7.26,8.76C8.15,7.67 9.36,7.12 10.89,7.12C11.71,7.12 12.45,7.35 13.09,7.8C13.73,8.26 14.22,8.9 14.56,9.73H14.6L15.31,7.33H17.87L15.73,12.65C15.97,13.89 16.22,14.74 16.5,15.19C16.74,15.64 17.08,15.87 17.5,15.87C17.74,15.87 17.93,15.83 18.1,15.76L18.08,17.8M13.82,12.56C13.61,11.43 13.27,10.55 12.81,9.95C12.36,9.34 11.81,9.04 11.18,9.04C10.36,9.04 9.7,9.41 9.21,10.14C8.72,10.88 8.5,11.79 8.5,12.86C8.5,13.84 8.69,14.65 9.12,15.31C9.54,15.97 10.11,16.29 10.82,16.29C11.42,16.29 11.97,16 12.46,15.45C12.96,14.88 13.37,14.05 13.7,12.96L13.82,12.56Z" /></g><g id="alphabetical"><path d="M6,11A2,2 0 0,1 8,13V17H4A2,2 0 0,1 2,15V13A2,2 0 0,1 4,11H6M4,13V15H6V13H4M20,13V15H22V17H20A2,2 0 0,1 18,15V13A2,2 0 0,1 20,11H22V13H20M12,7V11H14A2,2 0 0,1 16,13V15A2,2 0 0,1 14,17H12A2,2 0 0,1 10,15V7H12M12,15H14V13H12V15Z" /></g><g id="altimeter"><path d="M7,3V5H17V3H7M9,7V9H15V7H9M2,7.96V16.04L6.03,12L2,7.96M22.03,7.96L18,12L22.03,16.04V7.96M7,11V13H17V11H7M9,15V17H15V15H9M7,19V21H17V19H7Z" /></g><g id="amazon"><path d="M15.93,17.09C15.75,17.25 15.5,17.26 15.3,17.15C14.41,16.41 14.25,16.07 13.76,15.36C12.29,16.86 11.25,17.31 9.34,17.31C7.09,17.31 5.33,15.92 5.33,13.14C5.33,10.96 6.5,9.5 8.19,8.76C9.65,8.12 11.68,8 13.23,7.83V7.5C13.23,6.84 13.28,6.09 12.9,5.54C12.58,5.05 11.95,4.84 11.4,4.84C10.38,4.84 9.47,5.37 9.25,6.45C9.2,6.69 9,6.93 8.78,6.94L6.18,6.66C5.96,6.61 5.72,6.44 5.78,6.1C6.38,2.95 9.23,2 11.78,2C13.08,2 14.78,2.35 15.81,3.33C17.11,4.55 17,6.18 17,7.95V12.12C17,13.37 17.5,13.93 18,14.6C18.17,14.85 18.21,15.14 18,15.31L15.94,17.09H15.93M13.23,10.56V10C11.29,10 9.24,10.39 9.24,12.67C9.24,13.83 9.85,14.62 10.87,14.62C11.63,14.62 12.3,14.15 12.73,13.4C13.25,12.47 13.23,11.6 13.23,10.56M20.16,19.54C18,21.14 14.82,22 12.1,22C8.29,22 4.85,20.59 2.25,18.24C2.05,18.06 2.23,17.81 2.5,17.95C5.28,19.58 8.75,20.56 12.33,20.56C14.74,20.56 17.4,20.06 19.84,19.03C20.21,18.87 20.5,19.27 20.16,19.54M21.07,18.5C20.79,18.14 19.22,18.33 18.5,18.42C18.31,18.44 18.28,18.26 18.47,18.12C19.71,17.24 21.76,17.5 22,17.79C22.24,18.09 21.93,20.14 20.76,21.11C20.58,21.27 20.41,21.18 20.5,21C20.76,20.33 21.35,18.86 21.07,18.5Z" /></g><g id="amazon-clouddrive"><path d="M4.94,11.12C5.23,11.12 5.5,11.16 5.76,11.23C5.77,9.09 7.5,7.35 9.65,7.35C11.27,7.35 12.67,8.35 13.24,9.77C13.83,9 14.74,8.53 15.76,8.53C17.5,8.53 18.94,9.95 18.94,11.71C18.94,11.95 18.91,12.2 18.86,12.43C19.1,12.34 19.37,12.29 19.65,12.29C20.95,12.29 22,13.35 22,14.65C22,15.95 20.95,17 19.65,17C18.35,17 6.36,17 4.94,17C3.32,17 2,15.68 2,14.06C2,12.43 3.32,11.12 4.94,11.12Z" /></g><g id="ambulance"><path d="M18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5M19.5,9.5H17V12H21.46L19.5,9.5M6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5M20,8L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.89,4 3,4H17V8H20M8,6V9H5V11H8V14H10V11H13V9H10V6H8Z" /></g><g id="amplifier"><path d="M10,2H14A1,1 0 0,1 15,3H21V21H19A1,1 0 0,1 18,22A1,1 0 0,1 17,21H7A1,1 0 0,1 6,22A1,1 0 0,1 5,21H3V3H9A1,1 0 0,1 10,2M5,5V9H19V5H5M7,6A1,1 0 0,1 8,7A1,1 0 0,1 7,8A1,1 0 0,1 6,7A1,1 0 0,1 7,6M12,6H14V7H12V6M15,6H16V8H15V6M17,6H18V8H17V6M12,11A4,4 0 0,0 8,15A4,4 0 0,0 12,19A4,4 0 0,0 16,15A4,4 0 0,0 12,11M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6Z" /></g><g id="anchor"><path d="M12,2A3,3 0 0,0 9,5C9,6.27 9.8,7.4 11,7.83V10H8V12H11V18.92C9.16,18.63 7.53,17.57 6.53,16H8V14H3V19H5V17.3C6.58,19.61 9.2,21 12,21C14.8,21 17.42,19.61 19,17.31V19H21V14H16V16H17.46C16.46,17.56 14.83,18.63 13,18.92V12H16V10H13V7.82C14.2,7.4 15,6.27 15,5A3,3 0 0,0 12,2M12,4A1,1 0 0,1 13,5A1,1 0 0,1 12,6A1,1 0 0,1 11,5A1,1 0 0,1 12,4Z" /></g><g id="android"><path d="M15,5H14V4H15M10,5H9V4H10M15.53,2.16L16.84,0.85C17.03,0.66 17.03,0.34 16.84,0.14C16.64,-0.05 16.32,-0.05 16.13,0.14L14.65,1.62C13.85,1.23 12.95,1 12,1C11.04,1 10.14,1.23 9.34,1.63L7.85,0.14C7.66,-0.05 7.34,-0.05 7.15,0.14C6.95,0.34 6.95,0.66 7.15,0.85L8.46,2.16C6.97,3.26 6,5 6,7H18C18,5 17,3.25 15.53,2.16M20.5,8A1.5,1.5 0 0,0 19,9.5V16.5A1.5,1.5 0 0,0 20.5,18A1.5,1.5 0 0,0 22,16.5V9.5A1.5,1.5 0 0,0 20.5,8M3.5,8A1.5,1.5 0 0,0 2,9.5V16.5A1.5,1.5 0 0,0 3.5,18A1.5,1.5 0 0,0 5,16.5V9.5A1.5,1.5 0 0,0 3.5,8M6,18A1,1 0 0,0 7,19H8V22.5A1.5,1.5 0 0,0 9.5,24A1.5,1.5 0 0,0 11,22.5V19H13V22.5A1.5,1.5 0 0,0 14.5,24A1.5,1.5 0 0,0 16,22.5V19H17A1,1 0 0,0 18,18V8H6V18Z" /></g><g id="android-debug-bridge"><path d="M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z" /></g><g id="android-studio"><path d="M11,2H13V4H13.5A1.5,1.5 0 0,1 15,5.5V9L14.56,9.44L16.2,12.28C17.31,11.19 18,9.68 18,8H20C20,10.42 18.93,12.59 17.23,14.06L20.37,19.5L20.5,21.72L18.63,20.5L15.56,15.17C14.5,15.7 13.28,16 12,16C10.72,16 9.5,15.7 8.44,15.17L5.37,20.5L3.5,21.72L3.63,19.5L9.44,9.44L9,9V5.5A1.5,1.5 0 0,1 10.5,4H11V2M9.44,13.43C10.22,13.8 11.09,14 12,14C12.91,14 13.78,13.8 14.56,13.43L13.1,10.9H13.09C12.47,11.5 11.53,11.5 10.91,10.9H10.9L9.44,13.43M12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7A1,1 0 0,0 12,6Z" /></g><g id="angular"><path d="M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.6L6.47,17H8.53L9.64,14.22H14.34L15.45,17H17.5L12,4.6M13.62,12.5H10.39L12,8.63L13.62,12.5Z" /></g><g id="animation"><path d="M4,2C2.89,2 2,2.89 2,4V14H4V4H14V2H4M8,6C6.89,6 6,6.89 6,8V18H8V8H18V6H8M12,10C10.89,10 10,10.89 10,12V20C10,21.11 10.89,22 12,22H20C21.11,22 22,21.11 22,20V12C22,10.89 21.11,10 20,10H12Z" /></g><g id="apple"><path d="M18.71,19.5C17.88,20.74 17,21.95 15.66,21.97C14.32,22 13.89,21.18 12.37,21.18C10.84,21.18 10.37,21.95 9.1,22C7.79,22.05 6.8,20.68 5.96,19.47C4.25,17 2.94,12.45 4.7,9.39C5.57,7.87 7.13,6.91 8.82,6.88C10.1,6.86 11.32,7.75 12.11,7.75C12.89,7.75 14.37,6.68 15.92,6.84C16.57,6.87 18.39,7.1 19.56,8.82C19.47,8.88 17.39,10.1 17.41,12.63C17.44,15.65 20.06,16.66 20.09,16.67C20.06,16.74 19.67,18.11 18.71,19.5M13,3.5C13.73,2.67 14.94,2.04 15.94,2C16.07,3.17 15.6,4.35 14.9,5.19C14.21,6.04 13.07,6.7 11.95,6.61C11.8,5.46 12.36,4.26 13,3.5Z" /></g><g id="apple-finder"><path d="M4,4H11.89C12.46,2.91 13.13,1.88 13.93,1L15.04,2.11C14.61,2.7 14.23,3.34 13.89,4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21H14.93L15.26,22.23L13.43,22.95L12.93,21H4A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M4,6V19H12.54C12.5,18.67 12.44,18.34 12.4,18C12.27,18 12.13,18 12,18C9.25,18 6.78,17.5 5.13,16.76L6.04,15.12C7,15.64 9.17,16 12,16C12.08,16 12.16,16 12.24,16C12.21,15.33 12.22,14.66 12.27,14H9C9,14 9.4,9.97 11,6H4M20,19V6H13C12.1,8.22 11.58,10.46 11.3,12H14.17C14,13.28 13.97,14.62 14.06,15.93C15.87,15.8 17.25,15.5 17.96,15.12L18.87,16.76C17.69,17.3 16.1,17.7 14.29,17.89C14.35,18.27 14.41,18.64 14.5,19H20M6,8H8V11H6V8M16,8H18V11H16V8Z" /></g><g id="apple-ios"><path d="M20,9V7H16A2,2 0 0,0 14,9V11A2,2 0 0,0 16,13H18V15H14V17H18A2,2 0 0,0 20,15V13A2,2 0 0,0 18,11H16V9M11,15H9V9H11M11,7H9A2,2 0 0,0 7,9V15A2,2 0 0,0 9,17H11A2,2 0 0,0 13,15V9A2,2 0 0,0 11,7M4,17H6V11H4M4,9H6V7H4V9Z" /></g><g id="apple-keyboard-caps"><path d="M15,14V8H17.17L12,2.83L6.83,8H9V14H15M12,0L22,10H17V16H7V10H2L12,0M7,18H17V24H7V18M15,20H9V22H15V20Z" /></g><g id="apple-keyboard-command"><path d="M6,2A4,4 0 0,1 10,6V8H14V6A4,4 0 0,1 18,2A4,4 0 0,1 22,6A4,4 0 0,1 18,10H16V14H18A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18V16H10V18A4,4 0 0,1 6,22A4,4 0 0,1 2,18A4,4 0 0,1 6,14H8V10H6A4,4 0 0,1 2,6A4,4 0 0,1 6,2M16,18A2,2 0 0,0 18,20A2,2 0 0,0 20,18A2,2 0 0,0 18,16H16V18M14,10H10V14H14V10M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18V16H6M8,6A2,2 0 0,0 6,4A2,2 0 0,0 4,6A2,2 0 0,0 6,8H8V6M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6V8H18Z" /></g><g id="apple-keyboard-control"><path d="M19.78,11.78L18.36,13.19L12,6.83L5.64,13.19L4.22,11.78L12,4L19.78,11.78Z" /></g><g id="apple-keyboard-option"><path d="M3,4H9.11L16.15,18H21V20H14.88L7.84,6H3V4M14,4H21V6H14V4Z" /></g><g id="apple-keyboard-shift"><path d="M15,18V12H17.17L12,6.83L6.83,12H9V18H15M12,4L22,14H17V20H7V14H2L12,4Z" /></g><g id="apple-mobileme"><path d="M22,15.04C22,17.23 20.24,19 18.07,19H5.93C3.76,19 2,17.23 2,15.04C2,13.07 3.43,11.44 5.31,11.14C5.28,11 5.27,10.86 5.27,10.71C5.27,9.33 6.38,8.2 7.76,8.2C8.37,8.2 8.94,8.43 9.37,8.8C10.14,7.05 11.13,5.44 13.91,5.44C17.28,5.44 18.87,8.06 18.87,10.83C18.87,10.94 18.87,11.06 18.86,11.17C20.65,11.54 22,13.13 22,15.04Z" /></g><g id="apple-safari"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.09 4.8,16 6.11,17.41L9.88,9.88L17.41,6.11C16,4.8 14.09,4 12,4M12,20A8,8 0 0,0 20,12C20,9.91 19.2,8 17.89,6.59L14.12,14.12L6.59,17.89C8,19.2 9.91,20 12,20M12,12L11.23,11.23L9.7,14.3L12.77,12.77L12,12M12,17.5H13V19H12V17.5M15.88,15.89L16.59,15.18L17.65,16.24L16.94,16.95L15.88,15.89M17.5,12V11H19V12H17.5M12,6.5H11V5H12V6.5M8.12,8.11L7.41,8.82L6.35,7.76L7.06,7.05L8.12,8.11M6.5,12V13H5V12H6.5Z" /></g><g id="application"><path d="M19,4C20.11,4 21,4.9 21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V6A2,2 0 0,1 5,4H19M19,18V8H5V18H19Z" /></g><g id="appnet"><path d="M14.47,9.14C15.07,7.69 16.18,4.28 16.35,3.68C16.5,3.09 16.95,3 17.2,3H19.25C19.59,3 19.78,3.26 19.7,3.68C17.55,11.27 16.09,13.5 16.09,14C16.09,15.28 17.46,17.67 18.74,17.67C19.5,17.67 19.34,16.56 20.19,16.56H21.81C22.07,16.56 22.32,16.82 22.32,17.25C22.32,17.67 21.85,21 18.61,21C15.36,21 14.15,17.08 14.15,17.08C13.73,17.93 11.23,21 8.16,21C2.7,21 1.68,15.2 1.68,11.79C1.68,8.37 3.3,3 7.91,3C12.5,3 14.47,9.14 14.47,9.14M4.5,11.53C4.5,13.5 4.41,17.59 8,17.67C10.04,17.76 11.91,15.2 12.81,13.15C11.57,8.89 10.72,6.33 8,6.33C4.32,6.41 4.5,11.53 4.5,11.53Z" /></g><g id="apps"><path d="M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z" /></g><g id="archive"><path d="M3,3H21V7H3V3M4,8H20V21H4V8M9.5,11A0.5,0.5 0 0,0 9,11.5V13H15V11.5A0.5,0.5 0 0,0 14.5,11H9.5Z" /></g><g id="arrange-bring-forward"><path d="M2,2H16V16H2V2M22,8V22H8V18H10V20H20V10H18V8H22Z" /></g><g id="arrange-bring-to-front"><path d="M2,2H11V6H9V4H4V9H6V11H2V2M22,13V22H13V18H15V20H20V15H18V13H22M8,8H16V16H8V8Z" /></g><g id="arrange-send-backward"><path d="M2,2H16V16H2V2M22,8V22H8V18H18V8H22M4,4V14H14V4H4Z" /></g><g id="arrange-send-to-back"><path d="M2,2H11V11H2V2M9,4H4V9H9V4M22,13V22H13V13H22M15,20H20V15H15V20M16,8V11H13V8H16M11,16H8V13H11V16Z" /></g><g id="arrow-all"><path d="M13,11H18L16.5,9.5L17.92,8.08L21.84,12L17.92,15.92L16.5,14.5L18,13H13V18L14.5,16.5L15.92,17.92L12,21.84L8.08,17.92L9.5,16.5L11,18V13H6L7.5,14.5L6.08,15.92L2.16,12L6.08,8.08L7.5,9.5L6,11H11V6L9.5,7.5L8.08,6.08L12,2.16L15.92,6.08L14.5,7.5L13,6V11Z" /></g><g id="arrow-bottom-left"><path d="M19,6.41L17.59,5L7,15.59V9H5V19H15V17H8.41L19,6.41Z" /></g><g id="arrow-bottom-right"><path d="M5,6.41L6.41,5L17,15.59V9H19V19H9V17H15.59L5,6.41Z" /></g><g id="arrow-compress"><path d="M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z" /></g><g id="arrow-compress-all"><path d="M19.5,3.09L20.91,4.5L16.41,9H20V11H13V4H15V7.59L19.5,3.09M20.91,19.5L19.5,20.91L15,16.41V20H13V13H20V15H16.41L20.91,19.5M4.5,3.09L9,7.59V4H11V11H4V9H7.59L3.09,4.5L4.5,3.09M3.09,19.5L7.59,15H4V13H11V20H9V16.41L4.5,20.91L3.09,19.5Z" /></g><g id="arrow-down"><path d="M11,4H13V16L18.5,10.5L19.92,11.92L12,19.84L4.08,11.92L5.5,10.5L11,16V4Z" /></g><g id="arrow-down-bold"><path d="M10,4H14V13L17.5,9.5L19.92,11.92L12,19.84L4.08,11.92L6.5,9.5L10,13V4Z" /></g><g id="arrow-down-bold-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,17L17,12H14V8H10V12H7L12,17Z" /></g><g id="arrow-down-bold-circle-outline"><path d="M12,17L7,12H10V8H14V12H17L12,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="arrow-down-bold-hexagon-outline"><path d="M12,17L7,12H10V8H14V12H17L12,17M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-down-box"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,6V14.5L7.5,11L6.08,12.42L12,18.34L17.92,12.42L16.5,11L13,14.5V6H11Z" /></g><g id="arrow-down-drop-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,10L12,15L17,10H7Z" /></g><g id="arrow-down-drop-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M7,10L12,15L17,10H7Z" /></g><g id="arrow-expand"><path d="M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z" /></g><g id="arrow-expand-all"><path d="M9.5,13.09L10.91,14.5L6.41,19H10V21H3V14H5V17.59L9.5,13.09M10.91,9.5L9.5,10.91L5,6.41V10H3V3H10V5H6.41L10.91,9.5M14.5,13.09L19,17.59V14H21V21H14V19H17.59L13.09,14.5L14.5,13.09M13.09,9.5L17.59,5H14V3H21V10H19V6.41L14.5,10.91L13.09,9.5Z" /></g><g id="arrow-left"><path d="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z" /></g><g id="arrow-left-bold"><path d="M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z" /></g><g id="arrow-left-bold-circle"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,12L12,17V14H16V10H12V7L7,12Z" /></g><g id="arrow-left-bold-circle-outline"><path d="M7,12L12,7V10H16V14H12V17L7,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z" /></g><g id="arrow-left-bold-hexagon-outline"><path d="M7,12L12,7V10H16V14H12V17L7,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-left-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M18,11H9.5L13,7.5L11.58,6.08L5.66,12L11.58,17.92L13,16.5L9.5,13H18V11Z" /></g><g id="arrow-left-drop-circle"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14,7L9,12L14,17V7Z" /></g><g id="arrow-left-drop-circle-outline"><path d="M22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12M14,7L9,12L14,17V7Z" /></g><g id="arrow-right"><path d="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" /></g><g id="arrow-right-bold"><path d="M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z" /></g><g id="arrow-right-bold-circle"><path d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M17,12L12,7V10H8V14H12V17L17,12Z" /></g><g id="arrow-right-bold-circle-outline"><path d="M17,12L12,17V14H8V10H12V7L17,12M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z" /></g><g id="arrow-right-bold-hexagon-outline"><path d="M17,12L12,17V14H8V10H12V7L17,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-right-box"><path d="M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5M6,13H14.5L11,16.5L12.42,17.92L18.34,12L12.42,6.08L11,7.5L14.5,11H6V13Z" /></g><g id="arrow-right-drop-circle"><path d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10,17L15,12L10,7V17Z" /></g><g id="arrow-right-drop-circle-outline"><path d="M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12M10,17L15,12L10,7V17Z" /></g><g id="arrow-top-left"><path d="M19,17.59L17.59,19L7,8.41V15H5V5H15V7H8.41L19,17.59Z" /></g><g id="arrow-top-right"><path d="M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z" /></g><g id="arrow-up"><path d="M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z" /></g><g id="arrow-up-bold"><path d="M14,20H10V11L6.5,14.5L4.08,12.08L12,4.16L19.92,12.08L17.5,14.5L14,11V20Z" /></g><g id="arrow-up-bold-circle"><path d="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z" /></g><g id="arrow-up-bold-circle-outline"><path d="M12,7L17,12H14V16H10V12H7L12,7M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z" /></g><g id="arrow-up-bold-hexagon-outline"><path d="M12,7L17,12H14V16H10V12H7L12,7M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-up-box"><path d="M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5V19M13,18V9.5L16.5,13L17.92,11.58L12,5.66L6.08,11.58L7.5,13L11,9.5V18H13Z" /></g><g id="arrow-up-drop-circle"><path d="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M17,14L12,9L7,14H17Z" /></g><g id="arrow-up-drop-circle-outline"><path d="M12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M17,14L12,9L7,14H17Z" /></g><g id="assistant"><path d="M19,2H5A2,2 0 0,0 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4A2,2 0 0,0 19,2M13.88,12.88L12,17L10.12,12.88L6,11L10.12,9.12L12,5L13.88,9.12L18,11" /></g><g id="asterisk"><path d="M10,2H14L13.21,9.91L19.66,5.27L21.66,8.73L14.42,12L21.66,15.27L19.66,18.73L13.21,14.09L14,22H10L10.79,14.09L4.34,18.73L2.34,15.27L9.58,12L2.34,8.73L4.34,5.27L10.79,9.91L10,2Z" /></g><g id="at"><path d="M17.42,15C17.79,14.09 18,13.07 18,12C18,8.13 15.31,5 12,5C8.69,5 6,8.13 6,12C6,15.87 8.69,19 12,19C13.54,19 15,19 16,18.22V20.55C15,21 13.46,21 12,21C7.58,21 4,16.97 4,12C4,7.03 7.58,3 12,3C16.42,3 20,7.03 20,12C20,13.85 19.5,15.57 18.65,17H14V15.5C13.36,16.43 12.5,17 11.5,17C9.57,17 8,14.76 8,12C8,9.24 9.57,7 11.5,7C12.5,7 13.36,7.57 14,8.5V8H16V15H17.42M12,9C10.9,9 10,10.34 10,12C10,13.66 10.9,15 12,15C13.1,15 14,13.66 14,12C14,10.34 13.1,9 12,9Z" /></g><g id="attachment"><path d="M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z" /></g><g id="audiobook"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M13,15A2,2 0 0,0 11,17A2,2 0 0,0 13,19A2,2 0 0,0 15,17V12H18V10H14V15.27C13.71,15.1 13.36,15 13,15Z" /></g><g id="auto-fix"><path d="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" /></g><g id="auto-upload"><path d="M5.35,12.65L6.5,9L7.65,12.65M5.5,7L2.3,16H4.2L4.9,14H8.1L8.8,16H10.7L7.5,7M11,20H22V18H11M14,16H19V11H22L16.5,5.5L11,11H14V16Z" /></g><g id="autorenew"><path d="M12,6V9L16,5L12,1V4A8,8 0 0,0 4,12C4,13.57 4.46,15.03 5.24,16.26L6.7,14.8C6.25,13.97 6,13 6,12A6,6 0 0,1 12,6M18.76,7.74L17.3,9.2C17.74,10.04 18,11 18,12A6,6 0 0,1 12,18V15L8,19L12,23V20A8,8 0 0,0 20,12C20,10.43 19.54,8.97 18.76,7.74Z" /></g><g id="av-timer"><path d="M11,17A1,1 0 0,0 12,18A1,1 0 0,0 13,17A1,1 0 0,0 12,16A1,1 0 0,0 11,17M11,3V7H13V5.08C16.39,5.57 19,8.47 19,12A7,7 0 0,1 12,19A7,7 0 0,1 5,12C5,10.32 5.59,8.78 6.58,7.58L12,13L13.41,11.59L6.61,4.79V4.81C4.42,6.45 3,9.05 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M18,12A1,1 0 0,0 17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12M6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11A1,1 0 0,0 6,12Z" /></g><g id="baby"><path d="M18.5,4A2.5,2.5 0 0,1 21,6.5A2.5,2.5 0 0,1 18.5,9A2.5,2.5 0 0,1 16,6.5A2.5,2.5 0 0,1 18.5,4M4.5,20A1.5,1.5 0 0,1 3,18.5A1.5,1.5 0 0,1 4.5,17H11.5A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,20H4.5M16.09,19L14.69,15H11L6.75,10.75C6.75,10.75 9,8.25 12.5,8.25C15.5,8.25 15.85,9.25 16.06,9.87L18.92,18C19.2,18.78 18.78,19.64 18,19.92C17.22,20.19 16.36,19.78 16.09,19Z" /></g><g id="baby-buggy"><path d="M13,2V10H21A8,8 0 0,0 13,2M19.32,15.89C20.37,14.54 21,12.84 21,11H6.44L5.5,9H2V11H4.22C4.22,11 6.11,15.07 6.34,15.42C5.24,16 4.5,17.17 4.5,18.5A3.5,3.5 0 0,0 8,22C9.76,22 11.22,20.7 11.46,19H13.54C13.78,20.7 15.24,22 17,22A3.5,3.5 0 0,0 20.5,18.5C20.5,17.46 20.04,16.53 19.32,15.89M8,20A1.5,1.5 0 0,1 6.5,18.5A1.5,1.5 0 0,1 8,17A1.5,1.5 0 0,1 9.5,18.5A1.5,1.5 0 0,1 8,20M17,20A1.5,1.5 0 0,1 15.5,18.5A1.5,1.5 0 0,1 17,17A1.5,1.5 0 0,1 18.5,18.5A1.5,1.5 0 0,1 17,20Z" /></g><g id="backburger"><path d="M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z" /></g><g id="backspace"><path d="M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.31,21 7,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12" /></g><g id="backup-restore"><path d="M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z" /></g><g id="bandcamp"><path d="M22,6L15.5,18H2L8.5,6H22Z" /></g><g id="bank"><path d="M11.5,1L2,6V8H21V6M16,10V17H19V10M2,22H21V19H2M10,10V17H13V10M4,10V17H7V10H4Z" /></g><g id="barcode"><path d="M2,6H4V18H2V6M5,6H6V18H5V6M7,6H10V18H7V6M11,6H12V18H11V6M14,6H16V18H14V6M17,6H20V18H17V6M21,6H22V18H21V6Z" /></g><g id="barcode-scan"><path d="M4,6H6V18H4V6M7,6H8V18H7V6M9,6H12V18H9V6M13,6H14V18H13V6M16,6H18V18H16V6M19,6H20V18H19V6M2,4V8H0V4A2,2 0 0,1 2,2H6V4H2M22,2A2,2 0 0,1 24,4V8H22V4H18V2H22M2,16V20H6V22H2A2,2 0 0,1 0,20V16H2M22,20V16H24V20A2,2 0 0,1 22,22H18V20H22Z" /></g><g id="barley"><path d="M7.33,18.33C6.5,17.17 6.5,15.83 6.5,14.5C8.17,15.5 9.83,16.5 10.67,17.67L11,18.23V15.95C9.5,15.05 8.08,14.13 7.33,13.08C6.5,11.92 6.5,10.58 6.5,9.25C8.17,10.25 9.83,11.25 10.67,12.42L11,13V10.7C9.5,9.8 8.08,8.88 7.33,7.83C6.5,6.67 6.5,5.33 6.5,4C8.17,5 9.83,6 10.67,7.17C10.77,7.31 10.86,7.46 10.94,7.62C10.77,7 10.66,6.42 10.65,5.82C10.64,4.31 11.3,2.76 11.96,1.21C12.65,2.69 13.34,4.18 13.35,5.69C13.36,6.32 13.25,6.96 13.07,7.59C13.15,7.45 13.23,7.31 13.33,7.17C14.17,6 15.83,5 17.5,4C17.5,5.33 17.5,6.67 16.67,7.83C15.92,8.88 14.5,9.8 13,10.7V13L13.33,12.42C14.17,11.25 15.83,10.25 17.5,9.25C17.5,10.58 17.5,11.92 16.67,13.08C15.92,14.13 14.5,15.05 13,15.95V18.23L13.33,17.67C14.17,16.5 15.83,15.5 17.5,14.5C17.5,15.83 17.5,17.17 16.67,18.33C15.92,19.38 14.5,20.3 13,21.2V23H11V21.2C9.5,20.3 8.08,19.38 7.33,18.33Z" /></g><g id="barrel"><path d="M18,19H19V21H5V19H6V13H5V11H6V5H5V3H19V5H18V11H19V13H18V19M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13C15,11 12,7.63 12,7.63C12,7.63 9,11 9,13Z" /></g><g id="basecamp"><path d="M3.39,15.64C3.4,15.55 3.42,15.45 3.45,15.36C3.5,15.18 3.54,15 3.6,14.84C3.82,14.19 4.16,13.58 4.5,13C4.7,12.7 4.89,12.41 5.07,12.12C5.26,11.83 5.45,11.54 5.67,11.26C6,10.81 6.45,10.33 7,10.15C7.79,9.9 8.37,10.71 8.82,11.22C9.08,11.5 9.36,11.8 9.71,11.97C9.88,12.04 10.06,12.08 10.24,12.07C10.5,12.05 10.73,11.87 10.93,11.71C11.46,11.27 11.9,10.7 12.31,10.15C12.77,9.55 13.21,8.93 13.73,8.38C13.95,8.15 14.18,7.85 14.5,7.75C14.62,7.71 14.77,7.72 14.91,7.78C15,7.82 15.05,7.87 15.1,7.92C15.17,8 15.25,8.04 15.32,8.09C15.88,8.5 16.4,9 16.89,9.5C17.31,9.93 17.72,10.39 18.1,10.86C18.5,11.32 18.84,11.79 19.15,12.3C19.53,12.93 19.85,13.58 20.21,14.21C20.53,14.79 20.86,15.46 20.53,16.12C20.5,16.15 20.5,16.19 20.5,16.22C19.91,17.19 18.88,17.79 17.86,18.18C16.63,18.65 15.32,18.88 14,18.97C12.66,19.07 11.3,19.06 9.95,18.94C8.73,18.82 7.5,18.6 6.36,18.16C5.4,17.79 4.5,17.25 3.84,16.43C3.69,16.23 3.56,16.03 3.45,15.81C3.43,15.79 3.42,15.76 3.41,15.74C3.39,15.7 3.38,15.68 3.39,15.64M2.08,16.5C2.22,16.73 2.38,16.93 2.54,17.12C2.86,17.5 3.23,17.85 3.62,18.16C4.46,18.81 5.43,19.28 6.44,19.61C7.6,20 8.82,20.19 10.04,20.29C11.45,20.41 12.89,20.41 14.3,20.26C15.6,20.12 16.91,19.85 18.13,19.37C19.21,18.94 20.21,18.32 21.08,17.54C21.31,17.34 21.53,17.13 21.7,16.88C21.86,16.67 22,16.44 22,16.18C22,15.88 22,15.57 21.92,15.27C21.85,14.94 21.76,14.62 21.68,14.3C21.65,14.18 21.62,14.06 21.59,13.94C21.27,12.53 20.78,11.16 20.12,9.87C19.56,8.79 18.87,7.76 18.06,6.84C17.31,6 16.43,5.22 15.43,4.68C14.9,4.38 14.33,4.15 13.75,4C13.44,3.88 13.12,3.81 12.8,3.74C12.71,3.73 12.63,3.71 12.55,3.71C12.44,3.71 12.33,3.71 12.23,3.71C12,3.71 11.82,3.71 11.61,3.71C11.5,3.71 11.43,3.7 11.33,3.71C11.25,3.72 11.16,3.74 11.08,3.75C10.91,3.78 10.75,3.81 10.59,3.85C10.27,3.92 9.96,4 9.65,4.14C9.04,4.38 8.47,4.7 7.93,5.08C6.87,5.8 5.95,6.73 5.18,7.75C4.37,8.83 3.71,10.04 3.21,11.3C2.67,12.64 2.3,14.04 2.07,15.47C2.04,15.65 2,15.84 2,16C2,16.12 2,16.22 2,16.32C2,16.37 2,16.4 2.03,16.44C2.04,16.46 2.06,16.5 2.08,16.5Z" /></g><g id="basket"><path d="M5.5,21C4.72,21 4.04,20.55 3.71,19.9V19.9L1.1,10.44L1,10A1,1 0 0,1 2,9H6.58L11.18,2.43C11.36,2.17 11.66,2 12,2C12.34,2 12.65,2.17 12.83,2.44L17.42,9H22A1,1 0 0,1 23,10L22.96,10.29L20.29,19.9C19.96,20.55 19.28,21 18.5,21H5.5M12,4.74L9,9H15L12,4.74M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13Z" /></g><g id="basket-fill"><path d="M3,2H6V5H3V2M6,7H9V10H6V7M8,2H11V5H8V2M17,11L12,6H15V2H19V6H22L17,11M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z" /></g><g id="basket-unfill"><path d="M3,10H6V7H3V10M5,5H8V2H5V5M8,10H11V7H8V10M17,1L12,6H15V10H19V6H22L17,1M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z" /></g><g id="battery"><path d="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-10"><path d="M16,18H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-20"><path d="M16,17H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-30"><path d="M16,15H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-40"><path d="M16,14H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-50"><path d="M16,13H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-60"><path d="M16,12H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-70"><path d="M16,10H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-80"><path d="M16,9H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-90"><path d="M16,8H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-alert"><path d="M13,14H11V9H13M13,18H11V16H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-charging"><path d="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.66C17.4,22 18,21.4 18,20.67V5.33C18,4.6 17.4,4 16.67,4M11,20V14.5H9L13,7V12.5H15" /></g><g id="battery-charging-100"><path d="M23,11H20V4L15,14H18V22M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-20"><path d="M23.05,11H20.05V4L15.05,14H18.05V22M12.05,17H4.05V6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z" /></g><g id="battery-charging-30"><path d="M12,15H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z" /></g><g id="battery-charging-40"><path d="M23,11H20V4L15,14H18V22M12,13H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-60"><path d="M12,11H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z" /></g><g id="battery-charging-80"><path d="M23,11H20V4L15,14H18V22M12,9H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-90"><path d="M23,11H20V4L15,14H18V22M12,8H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-minus"><path d="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M8,12V14H16V12" /></g><g id="battery-negative"><path d="M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M15,12H23V14H15V12M3,13H11V6H3V13Z" /></g><g id="battery-outline"><path d="M16,20H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-plus"><path d="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M16,14V12H13V9H11V12H8V14H11V17H13V14H16Z" /></g><g id="battery-positive"><path d="M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M23,14H20V17H18V14H15V12H18V9H20V12H23V14M3,13H11V6H3V13Z" /></g><g id="battery-unknown"><path d="M15.07,12.25L14.17,13.17C13.63,13.71 13.25,14.18 13.09,15H11.05C11.16,14.1 11.56,13.28 12.17,12.67L13.41,11.41C13.78,11.05 14,10.55 14,10C14,8.89 13.1,8 12,8A2,2 0 0,0 10,10H8A4,4 0 0,1 12,6A4,4 0 0,1 16,10C16,10.88 15.64,11.68 15.07,12.25M13,19H11V17H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.67C17.4,22 18,21.4 18,20.66V5.33C18,4.59 17.4,4 16.67,4Z" /></g><g id="beach"><path d="M15,18.54C17.13,18.21 19.5,18 22,18V22H5C5,21.35 8.2,19.86 13,18.9V12.4C12.16,12.65 11.45,13.21 11,13.95C10.39,12.93 9.27,12.25 8,12.25C6.73,12.25 5.61,12.93 5,13.95C5.03,10.37 8.5,7.43 13,7.04V7A1,1 0 0,1 14,6A1,1 0 0,1 15,7V7.04C19.5,7.43 22.96,10.37 23,13.95C22.39,12.93 21.27,12.25 20,12.25C18.73,12.25 17.61,12.93 17,13.95C16.55,13.21 15.84,12.65 15,12.39V18.54M7,2A5,5 0 0,1 2,7V2H7Z" /></g><g id="beaker"><path d="M3,3H21V5A2,2 0 0,0 19,7V19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V7A2,2 0 0,0 3,5V3M7,5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7Z" /></g><g id="beats"><path d="M7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7C10.87,7 9.84,7.37 9,8V2.46C9.95,2.16 10.95,2 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,8.3 4,5.07 7,3.34V12M14.5,12C14.5,12.37 14.3,12.68 14,12.86L12.11,14.29C11.94,14.42 11.73,14.5 11.5,14.5A1,1 0 0,1 10.5,13.5V10.5A1,1 0 0,1 11.5,9.5C11.73,9.5 11.94,9.58 12.11,9.71L14,11.14C14.3,11.32 14.5,11.63 14.5,12Z" /></g><g id="beer"><path d="M4,2H19L17,22H6L4,2M6.2,4L7.8,20H8.8L7.43,6.34C8.5,6 9.89,5.89 11,7C12.56,8.56 15.33,7.69 16.5,7.23L16.8,4H6.2Z" /></g><g id="behance"><path d="M19.58,12.27C19.54,11.65 19.33,11.18 18.96,10.86C18.59,10.54 18.13,10.38 17.58,10.38C17,10.38 16.5,10.55 16.19,10.89C15.86,11.23 15.65,11.69 15.57,12.27M21.92,12.04C22,12.45 22,13.04 22,13.81H15.5C15.55,14.71 15.85,15.33 16.44,15.69C16.79,15.92 17.22,16.03 17.73,16.03C18.26,16.03 18.69,15.89 19,15.62C19.2,15.47 19.36,15.27 19.5,15H21.88C21.82,15.54 21.53,16.07 21,16.62C20.22,17.5 19.1,17.92 17.66,17.92C16.47,17.92 15.43,17.55 14.5,16.82C13.62,16.09 13.16,14.9 13.16,13.25C13.16,11.7 13.57,10.5 14.39,9.7C15.21,8.87 16.27,8.46 17.58,8.46C18.35,8.46 19.05,8.6 19.67,8.88C20.29,9.16 20.81,9.59 21.21,10.2C21.58,10.73 21.81,11.34 21.92,12.04M9.58,14.07C9.58,13.42 9.31,12.97 8.79,12.73C8.5,12.6 8.08,12.53 7.54,12.5H4.87V15.84H7.5C8.04,15.84 8.46,15.77 8.76,15.62C9.31,15.35 9.58,14.83 9.58,14.07M4.87,10.46H7.5C8.04,10.46 8.5,10.36 8.82,10.15C9.16,9.95 9.32,9.58 9.32,9.06C9.32,8.5 9.1,8.1 8.66,7.91C8.27,7.78 7.78,7.72 7.19,7.72H4.87M11.72,12.42C12.04,12.92 12.2,13.53 12.2,14.24C12.2,15 12,15.64 11.65,16.23C11.41,16.62 11.12,16.94 10.77,17.21C10.37,17.5 9.9,17.72 9.36,17.83C8.82,17.94 8.24,18 7.61,18H2V5.55H8C9.53,5.58 10.6,6 11.23,6.88C11.61,7.41 11.8,8.04 11.8,8.78C11.8,9.54 11.61,10.15 11.23,10.61C11,10.87 10.7,11.11 10.28,11.32C10.91,11.55 11.39,11.92 11.72,12.42M20.06,7.32H15.05V6.07H20.06V7.32Z" /></g><g id="bell"><path d="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" /></g><g id="bell-off"><path d="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M19.74,21.57L17.17,19H3L6,16V10C6,9.35 6.1,8.72 6.3,8.13L3.47,5.3L4.89,3.89L7.29,6.29L21.15,20.15L19.74,21.57M11,4.08V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V14.17L8.77,4.94C9.44,4.5 10.19,4.22 11,4.08Z" /></g><g id="bell-outline"><path d="M16,17H7V10.5C7,8 9,6 11.5,6C14,6 16,8 16,10.5M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z" /></g><g id="bell-plus"><path d="M10,21C10,22.11 10.9,23 12,23A2,2 0 0,0 14,21M18.88,16.82V11C18.88,7.75 16.63,5.03 13.59,4.31V3.59A1.59,1.59 0 0,0 12,2A1.59,1.59 0 0,0 10.41,3.59V4.31C7.37,5.03 5.12,7.75 5.12,11V16.82L3,18.94V20H21V18.94M16,13H13V16H11V13H8V11H11V8H13V11H16" /></g><g id="bell-ring"><path d="M11.5,22C11.64,22 11.77,22 11.9,21.96C12.55,21.82 13.09,21.38 13.34,20.78C13.44,20.54 13.5,20.27 13.5,20H9.5A2,2 0 0,0 11.5,22M18,10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18L18,16M19.97,10H21.97C21.82,6.79 20.24,3.97 17.85,2.15L16.42,3.58C18.46,5 19.82,7.35 19.97,10M6.58,3.58L5.15,2.15C2.76,3.97 1.18,6.79 1,10H3C3.18,7.35 4.54,5 6.58,3.58Z" /></g><g id="bell-ring-outline"><path d="M16,17V10.5C16,8 14,6 11.5,6C9,6 7,8 7,10.5V17H16M18,16L20,18V19H3V18L5,16V10.5C5,7.43 7.13,4.86 10,4.18V3.5A1.5,1.5 0 0,1 11.5,2A1.5,1.5 0 0,1 13,3.5V4.18C15.86,4.86 18,7.43 18,10.5V16M11.5,22A2,2 0 0,1 9.5,20H13.5A2,2 0 0,1 11.5,22M19.97,10C19.82,7.35 18.46,5 16.42,3.58L17.85,2.15C20.24,3.97 21.82,6.79 21.97,10H19.97M6.58,3.58C4.54,5 3.18,7.35 3,10H1C1.18,6.79 2.76,3.97 5.15,2.15L6.58,3.58Z" /></g><g id="bell-sleep"><path d="M14,9.8L11.2,13.2H14V15H9V13.2L11.8,9.8H9V8H14M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z" /></g><g id="beta"><path d="M9.23,17.59V23.12H6.88V6.72C6.88,5.27 7.31,4.13 8.16,3.28C9,2.43 10.17,2 11.61,2C13,2 14.07,2.34 14.87,3C15.66,3.68 16.05,4.62 16.05,5.81C16.05,6.63 15.79,7.4 15.27,8.11C14.75,8.82 14.08,9.31 13.25,9.58V9.62C14.5,9.82 15.47,10.27 16.13,11C16.79,11.71 17.12,12.62 17.12,13.74C17.12,15.06 16.66,16.14 15.75,16.97C14.83,17.8 13.63,18.21 12.13,18.21C11.07,18.21 10.1,18 9.23,17.59M10.72,10.75V8.83C11.59,8.72 12.3,8.4 12.87,7.86C13.43,7.31 13.71,6.7 13.71,6C13.71,4.62 13,3.92 11.6,3.92C10.84,3.92 10.25,4.16 9.84,4.65C9.43,5.14 9.23,5.82 9.23,6.71V15.5C10.14,16.03 11.03,16.29 11.89,16.29C12.73,16.29 13.39,16.07 13.86,15.64C14.33,15.2 14.56,14.58 14.56,13.79C14.56,12 13.28,11 10.72,10.75Z" /></g><g id="bible"><path d="M5.81,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20C20,21.05 19.05,22 18,22H6C4.95,22 4,21.05 4,20V4C4,3 4.83,2.09 5.81,2M13,10V13H10V15H13V20H15V15H18V13H15V10H13Z" /></g><g id="bike"><path d="M5,20.5A3.5,3.5 0 0,1 1.5,17A3.5,3.5 0 0,1 5,13.5A3.5,3.5 0 0,1 8.5,17A3.5,3.5 0 0,1 5,20.5M5,12A5,5 0 0,0 0,17A5,5 0 0,0 5,22A5,5 0 0,0 10,17A5,5 0 0,0 5,12M14.8,10H19V8.2H15.8L13.86,4.93C13.57,4.43 13,4.1 12.4,4.1C11.93,4.1 11.5,4.29 11.2,4.6L7.5,8.29C7.19,8.6 7,9 7,9.5C7,10.13 7.33,10.66 7.85,10.97L11.2,13V18H13V11.5L10.75,9.85L13.07,7.5M19,20.5A3.5,3.5 0 0,1 15.5,17A3.5,3.5 0 0,1 19,13.5A3.5,3.5 0 0,1 22.5,17A3.5,3.5 0 0,1 19,20.5M19,12A5,5 0 0,0 14,17A5,5 0 0,0 19,22A5,5 0 0,0 24,17A5,5 0 0,0 19,12M16,4.8C17,4.8 17.8,4 17.8,3C17.8,2 17,1.2 16,1.2C15,1.2 14.2,2 14.2,3C14.2,4 15,4.8 16,4.8Z" /></g><g id="bing"><path d="M5,3V19L8.72,21L18,15.82V11.73H18L9.77,8.95L11.38,12.84L13.94,14L8.7,16.92V4.27L5,3" /></g><g id="binoculars"><path d="M11,6H13V13H11V6M9,20A1,1 0 0,1 8,21H5A1,1 0 0,1 4,20V15L6,6H10V13A1,1 0 0,1 9,14V20M10,5H7V3H10V5M15,20V14A1,1 0 0,1 14,13V6H18L20,15V20A1,1 0 0,1 19,21H16A1,1 0 0,1 15,20M14,5V3H17V5H14Z" /></g><g id="bio"><path d="M17,12H20A2,2 0 0,1 22,14V17A2,2 0 0,1 20,19H17A2,2 0 0,1 15,17V14A2,2 0 0,1 17,12M17,14V17H20V14H17M2,7H7A2,2 0 0,1 9,9V11A2,2 0 0,1 7,13A2,2 0 0,1 9,15V17A2,2 0 0,1 7,19H2V13L2,7M4,9V12H7V9H4M4,17H7V14H4V17M11,13H13V19H11V13M11,9H13V11H11V9Z" /></g><g id="biohazard"><path d="M23,16.06C23,16.29 23,16.5 22.96,16.7C22.78,14.14 20.64,12.11 18,12.11C17.63,12.11 17.27,12.16 16.92,12.23C16.96,12.5 17,12.73 17,13C17,15.35 15.31,17.32 13.07,17.81C13.42,20.05 15.31,21.79 17.65,21.96C17.43,22 17.22,22 17,22C14.92,22 13.07,20.94 12,19.34C10.93,20.94 9.09,22 7,22C6.78,22 6.57,22 6.35,21.96C8.69,21.79 10.57,20.06 10.93,17.81C8.68,17.32 7,15.35 7,13C7,12.73 7.04,12.5 7.07,12.23C6.73,12.16 6.37,12.11 6,12.11C3.36,12.11 1.22,14.14 1.03,16.7C1,16.5 1,16.29 1,16.06C1,12.85 3.59,10.24 6.81,10.14C6.3,9.27 6,8.25 6,7.17C6,4.94 7.23,3 9.06,2C7.81,2.9 7,4.34 7,6C7,7.35 7.56,8.59 8.47,9.5C9.38,8.59 10.62,8.04 12,8.04C13.37,8.04 14.62,8.59 15.5,9.5C16.43,8.59 17,7.35 17,6C17,4.34 16.18,2.9 14.94,2C16.77,3 18,4.94 18,7.17C18,8.25 17.7,9.27 17.19,10.14C20.42,10.24 23,12.85 23,16.06M9.27,10.11C10.05,10.62 11,10.92 12,10.92C13,10.92 13.95,10.62 14.73,10.11C14,9.45 13.06,9.03 12,9.03C10.94,9.03 10,9.45 9.27,10.11M12,14.47C12.82,14.47 13.5,13.8 13.5,13A1.5,1.5 0 0,0 12,11.5A1.5,1.5 0 0,0 10.5,13C10.5,13.8 11.17,14.47 12,14.47M10.97,16.79C10.87,14.9 9.71,13.29 8.05,12.55C8.03,12.7 8,12.84 8,13C8,14.82 9.27,16.34 10.97,16.79M15.96,12.55C14.29,13.29 13.12,14.9 13,16.79C14.73,16.34 16,14.82 16,13C16,12.84 15.97,12.7 15.96,12.55Z" /></g><g id="bitbucket"><path d="M12,5.76C15.06,5.77 17.55,5.24 17.55,4.59C17.55,3.94 15.07,3.41 12,3.4C8.94,3.4 6.45,3.92 6.45,4.57C6.45,5.23 8.93,5.76 12,5.76M12,14.4C13.5,14.4 14.75,13.16 14.75,11.64A2.75,2.75 0 0,0 12,8.89C10.5,8.89 9.25,10.12 9.25,11.64C9.25,13.16 10.5,14.4 12,14.4M12,2C16.77,2 20.66,3.28 20.66,4.87C20.66,5.29 19.62,11.31 19.21,13.69C19.03,14.76 16.26,16.33 12,16.33V16.31L12,16.33C7.74,16.33 4.97,14.76 4.79,13.69C4.38,11.31 3.34,5.29 3.34,4.87C3.34,3.28 7.23,2 12,2M18.23,16.08C18.38,16.08 18.53,16.19 18.53,16.42V16.5C18.19,18.26 17.95,19.5 17.91,19.71C17.62,21 15.07,22 12,22V22C8.93,22 6.38,21 6.09,19.71C6.05,19.5 5.81,18.26 5.47,16.5V16.42C5.47,16.19 5.62,16.08 5.77,16.08C5.91,16.08 6,16.17 6,16.17C6,16.17 8.14,17.86 12,17.86C15.86,17.86 18,16.17 18,16.17C18,16.17 18.09,16.08 18.23,16.08M13.38,11.64C13.38,12.4 12.76,13 12,13C11.24,13 10.62,12.4 10.62,11.64A1.38,1.38 0 0,1 12,10.26A1.38,1.38 0 0,1 13.38,11.64Z" /></g><g id="black-mesa"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.39 5.05,16.53 6.71,18H9V12H17L19.15,15.59C19.69,14.5 20,13.29 20,12A8,8 0 0,0 12,4Z" /></g><g id="blackberry"><path d="M5.45,10.28C6.4,10.28 7.5,11.05 7.5,12C7.5,12.95 6.4,13.72 5.45,13.72H2L2.69,10.28H5.45M6.14,4.76C7.09,4.76 8.21,5.53 8.21,6.5C8.21,7.43 7.09,8.21 6.14,8.21H2.69L3.38,4.76H6.14M13.03,4.76C14,4.76 15.1,5.53 15.1,6.5C15.1,7.43 14,8.21 13.03,8.21H9.41L10.1,4.76H13.03M12.34,10.28C13.3,10.28 14.41,11.05 14.41,12C14.41,12.95 13.3,13.72 12.34,13.72H8.72L9.41,10.28H12.34M10.97,15.79C11.92,15.79 13.03,16.57 13.03,17.5C13.03,18.47 11.92,19.24 10.97,19.24H7.5L8.21,15.79H10.97M18.55,13.72C19.5,13.72 20.62,14.5 20.62,15.45C20.62,16.4 19.5,17.17 18.55,17.17H15.1L15.79,13.72H18.55M19.93,8.21C20.88,8.21 22,9 22,9.93C22,10.88 20.88,11.66 19.93,11.66H16.5L17.17,8.21H19.93Z" /></g><g id="blender"><path d="M8,3C8,3.34 8.17,3.69 8.5,3.88L12,6H2.5A1.5,1.5 0 0,0 1,7.5A1.5,1.5 0 0,0 2.5,9H8.41L2,13C1.16,13.5 1,14.22 1,15C1,16 1.77,17 3,17C3.69,17 4.39,16.5 5,16L7,14.38C7.2,18.62 10.71,22 15,22A8,8 0 0,0 23,14C23,11.08 21.43,8.5 19.09,7.13C19.06,7.11 19.03,7.08 19,7.06C19,7.06 18.92,7 18.86,6.97C15.76,4.88 13.03,3.72 9.55,2.13C9.34,2.04 9.16,2 9,2C8.4,2 8,2.46 8,3M15,9A5,5 0 0,1 20,14A5,5 0 0,1 15,19A5,5 0 0,1 10,14A5,5 0 0,1 15,9M15,10.5A3.5,3.5 0 0,0 11.5,14A3.5,3.5 0 0,0 15,17.5A3.5,3.5 0 0,0 18.5,14A3.5,3.5 0 0,0 15,10.5Z" /></g><g id="blinds"><path d="M3,2H21A1,1 0 0,1 22,3V5A1,1 0 0,1 21,6H20V13A1,1 0 0,1 19,14H13V16.17C14.17,16.58 15,17.69 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.69 9.83,16.58 11,16.17V14H5A1,1 0 0,1 4,13V6H3A1,1 0 0,1 2,5V3A1,1 0 0,1 3,2M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z" /></g><g id="block-helper"><path d="M12,0A12,12 0 0,1 24,12A12,12 0 0,1 12,24A12,12 0 0,1 0,12A12,12 0 0,1 12,0M12,2A10,10 0 0,0 2,12C2,14.4 2.85,16.6 4.26,18.33L18.33,4.26C16.6,2.85 14.4,2 12,2M12,22A10,10 0 0,0 22,12C22,9.6 21.15,7.4 19.74,5.67L5.67,19.74C7.4,21.15 9.6,22 12,22Z" /></g><g id="blogger"><path d="M14,13H9.95A1,1 0 0,0 8.95,14A1,1 0 0,0 9.95,15H14A1,1 0 0,0 15,14A1,1 0 0,0 14,13M9.95,10H12.55A1,1 0 0,0 13.55,9A1,1 0 0,0 12.55,8H9.95A1,1 0 0,0 8.95,9A1,1 0 0,0 9.95,10M16,9V10A1,1 0 0,0 17,11A1,1 0 0,1 18,12V15A3,3 0 0,1 15,18H9A3,3 0 0,1 6,15V8A3,3 0 0,1 9,5H13A3,3 0 0,1 16,8M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="bluetooth"><path d="M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12L17.71,7.71Z" /></g><g id="bluetooth-audio"><path d="M12.88,16.29L11,18.17V14.41M11,5.83L12.88,7.71L11,9.58M15.71,7.71L10,2H9V9.58L4.41,5L3,6.41L8.59,12L3,17.58L4.41,19L9,14.41V22H10L15.71,16.29L11.41,12M19.53,6.71L18.26,8C18.89,9.18 19.25,10.55 19.25,12C19.25,13.45 18.89,14.82 18.26,16L19.46,17.22C20.43,15.68 21,13.87 21,11.91C21,10 20.46,8.23 19.53,6.71M14.24,12L16.56,14.33C16.84,13.6 17,12.82 17,12C17,11.18 16.84,10.4 16.57,9.68L14.24,12Z" /></g><g id="bluetooth-connect"><path d="M19,10L17,12L19,14L21,12M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12M7,12L5,10L3,12L5,14L7,12Z" /></g><g id="bluetooth-off"><path d="M13,5.83L14.88,7.71L13.28,9.31L14.69,10.72L17.71,7.7L12,2H11V7.03L13,9.03M5.41,4L4,5.41L10.59,12L5,17.59L6.41,19L11,14.41V22H12L16.29,17.71L18.59,20L20,18.59M13,18.17V14.41L14.88,16.29" /></g><g id="bluetooth-settings"><path d="M14.88,14.29L13,16.17V12.41L14.88,14.29M13,3.83L14.88,5.71L13,7.59M17.71,5.71L12,0H11V7.59L6.41,3L5,4.41L10.59,10L5,15.59L6.41,17L11,12.41V20H12L17.71,14.29L13.41,10L17.71,5.71M15,24H17V22H15M7,24H9V22H7M11,24H13V22H11V24Z" /></g><g id="bluetooth-transfer"><path d="M14.71,7.71L10.41,12L14.71,16.29L9,22H8V14.41L3.41,19L2,17.59L7.59,12L2,6.41L3.41,5L8,9.59V2H9L14.71,7.71M10,5.83V9.59L11.88,7.71L10,5.83M11.88,16.29L10,14.41V18.17L11.88,16.29M22,8H20V11H18V8H16L19,4L22,8M22,16L19,20L16,16H18V13H20V16H22Z" /></g><g id="blur"><path d="M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z" /></g><g id="blur-linear"><path d="M13,17A1,1 0 0,0 14,16A1,1 0 0,0 13,15A1,1 0 0,0 12,16A1,1 0 0,0 13,17M13,13A1,1 0 0,0 14,12A1,1 0 0,0 13,11A1,1 0 0,0 12,12A1,1 0 0,0 13,13M13,9A1,1 0 0,0 14,8A1,1 0 0,0 13,7A1,1 0 0,0 12,8A1,1 0 0,0 13,9M17,12.5A0.5,0.5 0 0,0 17.5,12A0.5,0.5 0 0,0 17,11.5A0.5,0.5 0 0,0 16.5,12A0.5,0.5 0 0,0 17,12.5M17,8.5A0.5,0.5 0 0,0 17.5,8A0.5,0.5 0 0,0 17,7.5A0.5,0.5 0 0,0 16.5,8A0.5,0.5 0 0,0 17,8.5M3,3V5H21V3M17,16.5A0.5,0.5 0 0,0 17.5,16A0.5,0.5 0 0,0 17,15.5A0.5,0.5 0 0,0 16.5,16A0.5,0.5 0 0,0 17,16.5M9,17A1,1 0 0,0 10,16A1,1 0 0,0 9,15A1,1 0 0,0 8,16A1,1 0 0,0 9,17M5,13.5A1.5,1.5 0 0,0 6.5,12A1.5,1.5 0 0,0 5,10.5A1.5,1.5 0 0,0 3.5,12A1.5,1.5 0 0,0 5,13.5M5,9.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 3.5,8A1.5,1.5 0 0,0 5,9.5M3,21H21V19H3M9,9A1,1 0 0,0 10,8A1,1 0 0,0 9,7A1,1 0 0,0 8,8A1,1 0 0,0 9,9M9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13M5,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,14.5A1.5,1.5 0 0,0 3.5,16A1.5,1.5 0 0,0 5,17.5Z" /></g><g id="blur-off"><path d="M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M2.5,5.27L6.28,9.05L6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10C7,9.9 6.97,9.81 6.94,9.72L9.75,12.53C9.04,12.64 8.5,13.26 8.5,14A1.5,1.5 0 0,0 10,15.5C10.74,15.5 11.36,14.96 11.47,14.25L14.28,17.06C14.19,17.03 14.1,17 14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18C15,17.9 14.97,17.81 14.94,17.72L18.72,21.5L20,20.23L3.77,4L2.5,5.27M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7M18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11M18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M13.8,11.5H14A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 12.5,10V10.2C12.61,10.87 13.13,11.39 13.8,11.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7Z" /></g><g id="blur-radial"><path d="M14,13A1,1 0 0,0 13,14A1,1 0 0,0 14,15A1,1 0 0,0 15,14A1,1 0 0,0 14,13M14,16.5A0.5,0.5 0 0,0 13.5,17A0.5,0.5 0 0,0 14,17.5A0.5,0.5 0 0,0 14.5,17A0.5,0.5 0 0,0 14,16.5M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,9.5A0.5,0.5 0 0,0 16.5,10A0.5,0.5 0 0,0 17,10.5A0.5,0.5 0 0,0 17.5,10A0.5,0.5 0 0,0 17,9.5M17,13.5A0.5,0.5 0 0,0 16.5,14A0.5,0.5 0 0,0 17,14.5A0.5,0.5 0 0,0 17.5,14A0.5,0.5 0 0,0 17,13.5M14,7.5A0.5,0.5 0 0,0 14.5,7A0.5,0.5 0 0,0 14,6.5A0.5,0.5 0 0,0 13.5,7A0.5,0.5 0 0,0 14,7.5M14,9A1,1 0 0,0 13,10A1,1 0 0,0 14,11A1,1 0 0,0 15,10A1,1 0 0,0 14,9M10,7.5A0.5,0.5 0 0,0 10.5,7A0.5,0.5 0 0,0 10,6.5A0.5,0.5 0 0,0 9.5,7A0.5,0.5 0 0,0 10,7.5M7,13.5A0.5,0.5 0 0,0 6.5,14A0.5,0.5 0 0,0 7,14.5A0.5,0.5 0 0,0 7.5,14A0.5,0.5 0 0,0 7,13.5M10,16.5A0.5,0.5 0 0,0 9.5,17A0.5,0.5 0 0,0 10,17.5A0.5,0.5 0 0,0 10.5,17A0.5,0.5 0 0,0 10,16.5M7,9.5A0.5,0.5 0 0,0 6.5,10A0.5,0.5 0 0,0 7,10.5A0.5,0.5 0 0,0 7.5,10A0.5,0.5 0 0,0 7,9.5M10,13A1,1 0 0,0 9,14A1,1 0 0,0 10,15A1,1 0 0,0 11,14A1,1 0 0,0 10,13M10,9A1,1 0 0,0 9,10A1,1 0 0,0 10,11A1,1 0 0,0 11,10A1,1 0 0,0 10,9Z" /></g><g id="bomb"><path d="M11.25,6A3.25,3.25 0 0,1 14.5,2.75A3.25,3.25 0 0,1 17.75,6C17.75,6.42 18.08,6.75 18.5,6.75C18.92,6.75 19.25,6.42 19.25,6V5.25H20.75V6A2.25,2.25 0 0,1 18.5,8.25A2.25,2.25 0 0,1 16.25,6A1.75,1.75 0 0,0 14.5,4.25A1.75,1.75 0 0,0 12.75,6H14V7.29C16.89,8.15 19,10.83 19,14A7,7 0 0,1 12,21A7,7 0 0,1 5,14C5,10.83 7.11,8.15 10,7.29V6H11.25M22,6H24V7H22V6M19,4V2H20V4H19M20.91,4.38L22.33,2.96L23.04,3.67L21.62,5.09L20.91,4.38Z" /></g><g id="bomb-off"><path d="M14.5,2.75C12.7,2.75 11.25,4.2 11.25,6H10V7.29C9.31,7.5 8.67,7.81 8.08,8.2L17.79,17.91C18.58,16.76 19,15.39 19,14C19,10.83 16.89,8.15 14,7.29V6H12.75A1.75,1.75 0 0,1 14.5,4.25A1.75,1.75 0 0,1 16.25,6A2.25,2.25 0 0,0 18.5,8.25C19.74,8.25 20.74,7.24 20.74,6V5.25H19.25V6C19.25,6.42 18.91,6.75 18.5,6.75C18.08,6.75 17.75,6.42 17.75,6C17.75,4.2 16.29,2.75 14.5,2.75M3.41,6.36L2,7.77L5.55,11.32C5.2,12.14 5,13.04 5,14C5,17.86 8.13,21 12,21C12.92,21 13.83,20.81 14.68,20.45L18.23,24L19.64,22.59L3.41,6.36Z" /></g><g id="bone"><path d="M8,14A3,3 0 0,1 5,17A3,3 0 0,1 2,14C2,13.23 2.29,12.53 2.76,12C2.29,11.47 2,10.77 2,10A3,3 0 0,1 5,7A3,3 0 0,1 8,10C9.33,10.08 10.67,10.17 12,10.17C13.33,10.17 14.67,10.08 16,10A3,3 0 0,1 19,7A3,3 0 0,1 22,10C22,10.77 21.71,11.47 21.24,12C21.71,12.53 22,13.23 22,14A3,3 0 0,1 19,17A3,3 0 0,1 16,14C14.67,13.92 13.33,13.83 12,13.83C10.67,13.83 9.33,13.92 8,14Z" /></g><g id="book"><path d="M18,22A2,2 0 0,0 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18Z" /></g><g id="book-minus"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M18,18V16H12V18H18Z" /></g><g id="book-multiple"><path d="M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H10V7L12,5.5L14,7V2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z" /></g><g id="book-multiple-variant"><path d="M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M10,9L12,7.5L14,9V4H10V9M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z" /></g><g id="book-open"><path d="M13,12H20V13.5H13M13,9.5H20V11H13M13,14.5H20V16H13M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M21,19H12V6H21" /></g><g id="book-open-page-variant"><path d="M19,2L14,6.5V17.5L19,13V2M6.5,5C4.55,5 2.45,5.4 1,6.5V21.16C1,21.41 1.25,21.66 1.5,21.66C1.6,21.66 1.65,21.59 1.75,21.59C3.1,20.94 5.05,20.5 6.5,20.5C8.45,20.5 10.55,20.9 12,22C13.35,21.15 15.8,20.5 17.5,20.5C19.15,20.5 20.85,20.81 22.25,21.56C22.35,21.61 22.4,21.59 22.5,21.59C22.75,21.59 23,21.34 23,21.09V6.5C22.4,6.05 21.75,5.75 21,5.5V7.5L21,13V19C19.9,18.65 18.7,18.5 17.5,18.5C15.8,18.5 13.35,19.15 12,20V13L12,8.5V6.5C10.55,5.4 8.45,5 6.5,5V5Z" /></g><g id="book-open-variant"><path d="M21,5C19.89,4.65 18.67,4.5 17.5,4.5C15.55,4.5 13.45,4.9 12,6C10.55,4.9 8.45,4.5 6.5,4.5C4.55,4.5 2.45,4.9 1,6V20.65C1,20.9 1.25,21.15 1.5,21.15C1.6,21.15 1.65,21.1 1.75,21.1C3.1,20.45 5.05,20 6.5,20C8.45,20 10.55,20.4 12,21.5C13.35,20.65 15.8,20 17.5,20C19.15,20 20.85,20.3 22.25,21.05C22.35,21.1 22.4,21.1 22.5,21.1C22.75,21.1 23,20.85 23,20.6V6C22.4,5.55 21.75,5.25 21,5M21,18.5C19.9,18.15 18.7,18 17.5,18C15.8,18 13.35,18.65 12,19.5V8C13.35,7.15 15.8,6.5 17.5,6.5C18.7,6.5 19.9,6.65 21,7V18.5Z" /></g><g id="book-plus"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M14,20H16V18H18V16H16V14H14V16H12V18H14V20Z" /></g><g id="book-variant"><path d="M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="bookmark"><path d="M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z" /></g><g id="bookmark-check"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,14L17.25,7.76L15.84,6.34L11,11.18L8.41,8.59L7,10L11,14Z" /></g><g id="bookmark-music"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13V8H16V6H12V11.27C11.71,11.1 11.36,11 11,11Z" /></g><g id="bookmark-outline"><path d="M17,18L12,15.82L7,18V5H17M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z" /></g><g id="bookmark-plus"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7V9H9V11H11V13H13V11H15V9H13V7H11Z" /></g><g id="bookmark-plus-outline"><path d="M17,18V5H7V18L12,15.82L17,18M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7H13V9H15V11H13V13H11V11H9V9H11V7Z" /></g><g id="bookmark-remove"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M8.17,8.58L10.59,11L8.17,13.41L9.59,14.83L12,12.41L14.41,14.83L15.83,13.41L13.41,11L15.83,8.58L14.41,7.17L12,9.58L9.59,7.17L8.17,8.58Z" /></g><g id="boombox"><path d="M7,5L5,7V8H3A1,1 0 0,0 2,9V17A1,1 0 0,0 3,18H21A1,1 0 0,0 22,17V9A1,1 0 0,0 21,8H19V7L17,5H7M7,7H17V8H7V7M11,9H13A0.5,0.5 0 0,1 13.5,9.5A0.5,0.5 0 0,1 13,10H11A0.5,0.5 0 0,1 10.5,9.5A0.5,0.5 0 0,1 11,9M7.5,10.5A3,3 0 0,1 10.5,13.5A3,3 0 0,1 7.5,16.5A3,3 0 0,1 4.5,13.5A3,3 0 0,1 7.5,10.5M16.5,10.5A3,3 0 0,1 19.5,13.5A3,3 0 0,1 16.5,16.5A3,3 0 0,1 13.5,13.5A3,3 0 0,1 16.5,10.5M7.5,12A1.5,1.5 0 0,0 6,13.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 9,13.5A1.5,1.5 0 0,0 7.5,12M16.5,12A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 16.5,12Z" /></g><g id="border-all"><path d="M19,11H13V5H19M19,19H13V13H19M11,11H5V5H11M11,19H5V13H11M3,21H21V3H3V21Z" /></g><g id="border-bottom"><path d="M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M17,11H15V13H17M13,7H11V9H13M5,3H3V5H5M13,11H11V13H13M9,3H7V5H9M13,15H11V17H13M9,11H7V13H9V11Z" /></g><g id="border-color"><path d="M20.71,4.04C21.1,3.65 21.1,3 20.71,2.63L18.37,0.29C18,-0.1 17.35,-0.1 16.96,0.29L15,2.25L18.75,6M17.75,7L14,3.25L4,13.25V17H7.75L17.75,7Z" /></g><g id="border-horizontal"><path d="M19,21H21V19H19M15,21H17V19H15M11,17H13V15H11M19,9H21V7H19M19,5H21V3H19M3,13H21V11H3M11,21H13V19H11M19,17H21V15H19M13,3H11V5H13M13,7H11V9H13M17,3H15V5H17M9,3H7V5H9M5,3H3V5H5M7,21H9V19H7M3,17H5V15H3M5,7H3V9H5M3,21H5V19H3V21Z" /></g><g id="border-inside"><path d="M19,17H21V15H19M19,21H21V19H19M13,3H11V11H3V13H11V21H13V13H21V11H13M15,21H17V19H15M19,5H21V3H19M19,9H21V7H19M17,3H15V5H17M5,3H3V5H5M9,3H7V5H9M3,17H5V15H3M5,7H3V9H5M7,21H9V19H7M3,21H5V19H3V21Z" /></g><g id="border-left"><path d="M15,5H17V3H15M15,13H17V11H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,13H9V11H7M7,5H9V3H7M7,21H9V19H7M11,13H13V11H11M11,9H13V7H11M11,5H13V3H11M11,17H13V15H11M11,21H13V19H11V21Z" /></g><g id="border-none"><path d="M15,5H17V3H15M15,13H17V11H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M11,9H13V7H11M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M11,13H13V11H11M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M11,17H13V15H11M7,21H9V19H7M7,13H9V11H7M7,5H9V3H7V5Z" /></g><g id="border-outside"><path d="M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z" /></g><g id="border-right"><path d="M11,9H13V7H11M11,5H13V3H11M11,13H13V11H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M15,13H17V11H15M11,17H13V15H11M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,13H9V11H7M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z" /></g><g id="border-style"><path d="M15,21H17V19H15M19,21H21V19H19M7,21H9V19H7M11,21H13V19H11M19,17H21V15H19M19,13H21V11H19M3,3V21H5V5H21V3M19,9H21V7H19" /></g><g id="border-top"><path d="M15,13H17V11H15M19,21H21V19H19M11,9H13V7H11M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M11,17H13V15H11M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M11,13H13V11H11M7,13H9V11H7M7,21H9V19H7V21Z" /></g><g id="border-vertical"><path d="M15,13H17V11H15M15,21H17V19H15M15,5H17V3H15M19,9H21V7H19M19,5H21V3H19M19,13H21V11H19M19,21H21V19H19M11,21H13V3H11M19,17H21V15H19M7,5H9V3H7M3,17H5V15H3M3,21H5V19H3M3,13H5V11H3M7,13H9V11H7M7,21H9V19H7M3,5H5V3H3M3,9H5V7H3V9Z" /></g><g id="bow-tie"><path d="M15,14L21,17V7L15,10V14M9,14L3,17V7L9,10V14M10,10H14V14H10V10Z" /></g><g id="bowl"><path d="M22,15A7,7 0 0,1 15,22H9A7,7 0 0,1 2,15V12H15.58L20.3,4.44L22,5.5L17.94,12H22V15Z" /></g><g id="bowling"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12.5,11A1.5,1.5 0 0,0 11,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,12.5A1.5,1.5 0 0,0 12.5,11M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M5.93,8.5C5.38,9.45 5.71,10.67 6.66,11.22C7.62,11.78 8.84,11.45 9.4,10.5C9.95,9.53 9.62,8.31 8.66,7.76C7.71,7.21 6.5,7.53 5.93,8.5Z" /></g><g id="box"><path d="M15.39,14.04V14.04C15.39,12.62 14.24,11.47 12.82,11.47C11.41,11.47 10.26,12.62 10.26,14.04V14.04C10.26,15.45 11.41,16.6 12.82,16.6C14.24,16.6 15.39,15.45 15.39,14.04M17.1,14.04C17.1,16.4 15.18,18.31 12.82,18.31C11.19,18.31 9.77,17.39 9.05,16.04C8.33,17.39 6.91,18.31 5.28,18.31C2.94,18.31 1.04,16.43 1,14.11V14.11H1V7H1V7C1,6.56 1.39,6.18 1.86,6.18C2.33,6.18 2.7,6.56 2.71,7V7H2.71V10.62C3.43,10.08 4.32,9.76 5.28,9.76C6.91,9.76 8.33,10.68 9.05,12.03C9.77,10.68 11.19,9.76 12.82,9.76C15.18,9.76 17.1,11.68 17.1,14.04V14.04M7.84,14.04V14.04C7.84,12.62 6.69,11.47 5.28,11.47C3.86,11.47 2.71,12.62 2.71,14.04V14.04C2.71,15.45 3.86,16.6 5.28,16.6C6.69,16.6 7.84,15.45 7.84,14.04M22.84,16.96V16.96C22.95,17.12 23,17.3 23,17.47C23,17.73 22.88,18 22.66,18.15C22.5,18.26 22.33,18.32 22.15,18.32C21.9,18.32 21.65,18.21 21.5,18L19.59,15.47L17.7,18V18C17.53,18.21 17.28,18.32 17.03,18.32C16.85,18.32 16.67,18.26 16.5,18.15C16.29,18 16.17,17.72 16.17,17.46C16.17,17.29 16.23,17.11 16.33,16.96V16.96H16.33V16.96L18.5,14.04L16.33,11.11V11.11H16.33V11.11C16.22,10.96 16.17,10.79 16.17,10.61C16.17,10.35 16.29,10.1 16.5,9.93C16.89,9.65 17.41,9.72 17.7,10.09V10.09L19.59,12.61L21.5,10.09C21.76,9.72 22.29,9.65 22.66,9.93C22.89,10.1 23,10.36 23,10.63C23,10.8 22.95,10.97 22.84,11.11V11.11H22.84V11.11L20.66,14.04L22.84,16.96V16.96H22.84Z" /></g><g id="box-cutter"><path d="M7.22,11.91C6.89,12.24 6.71,12.65 6.66,13.08L12.17,15.44L20.66,6.96C21.44,6.17 21.44,4.91 20.66,4.13L19.24,2.71C18.46,1.93 17.2,1.93 16.41,2.71L7.22,11.91M5,16V21.75L10.81,16.53L5.81,14.53L5,16M17.12,4.83C17.5,4.44 18.15,4.44 18.54,4.83C18.93,5.23 18.93,5.86 18.54,6.25C18.15,6.64 17.5,6.64 17.12,6.25C16.73,5.86 16.73,5.23 17.12,4.83Z" /></g><g id="box-shadow"><path d="M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z" /></g><g id="bridge"><path d="M7,14V10.91C6.28,10.58 5.61,10.18 5,9.71V14H7M5,18H3V16H1V14H3V7H5V8.43C6.8,10 9.27,11 12,11C14.73,11 17.2,10 19,8.43V7H21V14H23V16H21V18H19V16H5V18M17,10.91V14H19V9.71C18.39,10.18 17.72,10.58 17,10.91M16,14V11.32C15.36,11.55 14.69,11.72 14,11.84V14H16M13,14V11.96L12,12L11,11.96V14H13M10,14V11.84C9.31,11.72 8.64,11.55 8,11.32V14H10Z" /></g><g id="briefcase"><path d="M14,6H10V4H14M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8C22,6.89 21.1,6 20,6Z" /></g><g id="briefcase-check"><path d="M10.5,17.5L7,14L8.41,12.59L10.5,14.67L15.68,9.5L17.09,10.91M10,4H14V6H10M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="briefcase-download"><path d="M12,19L7,14H10V10H14V14H17M10,4H14V6H10M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8C22,6.89 21.1,6 20,6Z" /></g><g id="briefcase-upload"><path d="M20,6A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4L10,2H14L16,4V6H20M10,4V6H14V4H10M12,9L7,14H10V18H14V14H17L12,9Z" /></g><g id="brightness-1"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="brightness-2"><path d="M10,2C8.18,2 6.47,2.5 5,3.35C8,5.08 10,8.3 10,12C10,15.7 8,18.92 5,20.65C6.47,21.5 8.18,22 10,22A10,10 0 0,0 20,12A10,10 0 0,0 10,2Z" /></g><g id="brightness-3"><path d="M9,2C7.95,2 6.95,2.16 6,2.46C10.06,3.73 13,7.5 13,12C13,16.5 10.06,20.27 6,21.54C6.95,21.84 7.95,22 9,22A10,10 0 0,0 19,12A10,10 0 0,0 9,2Z" /></g><g id="brightness-4"><path d="M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></g><g id="brightness-5"><path d="M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z" /></g><g id="brightness-6"><path d="M12,18V6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z" /></g><g id="brightness-7"><path d="M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></g><g id="brightness-auto"><path d="M14.3,16L13.6,14H10.4L9.7,16H7.8L11,7H13L16.2,16H14.3M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69M10.85,12.65H13.15L12,9L10.85,12.65Z" /></g><g id="broom"><path d="M19.36,2.72L20.78,4.14L15.06,9.85C16.13,11.39 16.28,13.24 15.38,14.44L9.06,8.12C10.26,7.22 12.11,7.37 13.65,8.44L19.36,2.72M5.93,17.57C3.92,15.56 2.69,13.16 2.35,10.92L7.23,8.83L14.67,16.27L12.58,21.15C10.34,20.81 7.94,19.58 5.93,17.57Z" /></g><g id="brush"><path d="M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z" /></g><g id="buffer"><path d="M12.6,2.86C15.27,4.1 18,5.39 20.66,6.63C20.81,6.7 21,6.75 21,6.95C21,7.15 20.81,7.19 20.66,7.26C18,8.5 15.3,9.77 12.62,11C12.21,11.21 11.79,11.21 11.38,11C8.69,9.76 6,8.5 3.32,7.25C3.18,7.19 3,7.14 3,6.94C3,6.76 3.18,6.71 3.31,6.65C6,5.39 8.74,4.1 11.44,2.85C11.73,2.72 12.3,2.73 12.6,2.86M12,21.15C11.8,21.15 11.66,21.07 11.38,20.97C8.69,19.73 6,18.47 3.33,17.22C3.19,17.15 3,17.11 3,16.9C3,16.7 3.19,16.66 3.34,16.59C3.78,16.38 4.23,16.17 4.67,15.96C5.12,15.76 5.56,15.76 6,15.97C7.79,16.8 9.57,17.63 11.35,18.46C11.79,18.67 12.23,18.66 12.67,18.46C14.45,17.62 16.23,16.79 18,15.96C18.44,15.76 18.87,15.75 19.29,15.95C19.77,16.16 20.24,16.39 20.71,16.61C20.78,16.64 20.85,16.68 20.91,16.73C21.04,16.83 21.04,17 20.91,17.08C20.83,17.14 20.74,17.19 20.65,17.23C18,18.5 15.33,19.72 12.66,20.95C12.46,21.05 12.19,21.15 12,21.15M12,16.17C11.9,16.17 11.55,16.07 11.36,16C8.68,14.74 6,13.5 3.34,12.24C3.2,12.18 3,12.13 3,11.93C3,11.72 3.2,11.68 3.35,11.61C3.8,11.39 4.25,11.18 4.7,10.97C5.13,10.78 5.56,10.78 6,11C7.78,11.82 9.58,12.66 11.38,13.5C11.79,13.69 12.21,13.69 12.63,13.5C14.43,12.65 16.23,11.81 18.04,10.97C18.45,10.78 18.87,10.78 19.29,10.97C19.76,11.19 20.24,11.41 20.71,11.63C20.77,11.66 20.84,11.69 20.9,11.74C21.04,11.85 21.04,12 20.89,12.12C20.84,12.16 20.77,12.19 20.71,12.22C18,13.5 15.31,14.75 12.61,16C12.42,16.09 12.08,16.17 12,16.17Z" /></g><g id="bug"><path d="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z" /></g><g id="bulletin-board"><path d="M12.04,2.5L9.53,5H14.53L12.04,2.5M4,7V20H20V7H4M12,0L17,5V5H20A2,2 0 0,1 22,7V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V7A2,2 0 0,1 4,5H7V5L12,0M7,18V14H12V18H7M14,17V10H18V17H14M6,12V9H11V12H6Z" /></g><g id="bullhorn"><path d="M16,12V16A1,1 0 0,1 15,17C14.83,17 14.67,17 14.06,16.5C13.44,16 12.39,15 11.31,14.5C10.31,14.04 9.28,14 8.26,14L9.47,17.32L9.5,17.5A0.5,0.5 0 0,1 9,18H7C6.78,18 6.59,17.86 6.53,17.66L5.19,14H5A1,1 0 0,1 4,13A2,2 0 0,1 2,11A2,2 0 0,1 4,9A1,1 0 0,1 5,8H8C9.11,8 10.22,8 11.31,7.5C12.39,7 13.44,6 14.06,5.5C14.67,5 14.83,5 15,5A1,1 0 0,1 16,6V10A1,1 0 0,1 17,11A1,1 0 0,1 16,12M21,11C21,12.38 20.44,13.63 19.54,14.54L18.12,13.12C18.66,12.58 19,11.83 19,11C19,10.17 18.66,9.42 18.12,8.88L19.54,7.46C20.44,8.37 21,9.62 21,11Z" /></g><g id="bullseye"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="burst-mode"><path d="M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z" /></g><g id="bus"><path d="M18,11H6V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M4,16C4,16.88 4.39,17.67 5,18.22V20A1,1 0 0,0 6,21H7A1,1 0 0,0 8,20V19H16V20A1,1 0 0,0 17,21H18A1,1 0 0,0 19,20V18.22C19.61,17.67 20,16.88 20,16V6C20,2.5 16.42,2 12,2C7.58,2 4,2.5 4,6V16Z" /></g><g id="cached"><path d="M19,8L15,12H18A6,6 0 0,1 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20A8,8 0 0,0 20,12H23M6,12A6,6 0 0,1 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4A8,8 0 0,0 4,12H1L5,16L9,12" /></g><g id="cake"><path d="M11.5,0.5C12,0.75 13,2.4 13,3.5C13,4.6 12.33,5 11.5,5C10.67,5 10,4.85 10,3.75C10,2.65 11,2 11.5,0.5M18.5,9C21,9 23,11 23,13.5C23,15.06 22.21,16.43 21,17.24V23H12L3,23V17.24C1.79,16.43 1,15.06 1,13.5C1,11 3,9 5.5,9H10V6H13V9H18.5M12,16A2.5,2.5 0 0,0 14.5,13.5H16A2.5,2.5 0 0,0 18.5,16A2.5,2.5 0 0,0 21,13.5A2.5,2.5 0 0,0 18.5,11H5.5A2.5,2.5 0 0,0 3,13.5A2.5,2.5 0 0,0 5.5,16A2.5,2.5 0 0,0 8,13.5H9.5A2.5,2.5 0 0,0 12,16Z" /></g><g id="cake-layered"><path d="M21,21V17C21,15.89 20.1,15 19,15H18V12C18,10.89 17.1,10 16,10H13V8H11V10H8C6.89,10 6,10.89 6,12V15H5C3.89,15 3,15.89 3,17V21H1V23H23V21M12,7A2,2 0 0,0 14,5C14,4.62 13.9,4.27 13.71,3.97L12,1L10.28,3.97C10.1,4.27 10,4.62 10,5A2,2 0 0,0 12,7Z" /></g><g id="cake-variant"><path d="M12,6C13.11,6 14,5.1 14,4C14,3.62 13.9,3.27 13.71,2.97L12,0L10.29,2.97C10.1,3.27 10,3.62 10,4A2,2 0 0,0 12,6M16.6,16L15.53,14.92L14.45,16C13.15,17.29 10.87,17.3 9.56,16L8.5,14.92L7.4,16C6.75,16.64 5.88,17 4.96,17C4.23,17 3.56,16.77 3,16.39V21A1,1 0 0,0 4,22H20A1,1 0 0,0 21,21V16.39C20.44,16.77 19.77,17 19.04,17C18.12,17 17.25,16.64 16.6,16M18,9H13V7H11V9H6A3,3 0 0,0 3,12V13.54C3,14.62 3.88,15.5 4.96,15.5C5.5,15.5 6,15.3 6.34,14.93L8.5,12.8L10.61,14.93C11.35,15.67 12.64,15.67 13.38,14.93L15.5,12.8L17.65,14.93C18,15.3 18.5,15.5 19.03,15.5C20.11,15.5 21,14.62 21,13.54V12A3,3 0 0,0 18,9Z" /></g><g id="calculator"><path d="M7,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V4A2,2 0 0,1 7,2M7,4V8H17V4H7M7,10V12H9V10H7M11,10V12H13V10H11M15,10V12H17V10H15M7,14V16H9V14H7M11,14V16H13V14H11M15,14V16H17V14H15M7,18V20H9V18H7M11,18V20H13V18H11M15,18V20H17V18H15Z" /></g><g id="calendar"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z" /></g><g id="calendar-blank"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1" /></g><g id="calendar-check"><path d="M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M16.53,11.06L15.47,10L10.59,14.88L8.47,12.76L7.41,13.82L10.59,17L16.53,11.06Z" /></g><g id="calendar-clock"><path d="M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z" /></g><g id="calendar-multiple"><path d="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z" /></g><g id="calendar-multiple-check"><path d="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M17.53,11.06L13.09,15.5L10.41,12.82L11.47,11.76L13.09,13.38L16.47,10L17.53,11.06M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21Z" /></g><g id="calendar-plus"><path d="M19,19V7H5V19H19M16,1H18V3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1M11,9H13V12H16V14H13V17H11V14H8V12H11V9Z" /></g><g id="calendar-question"><path d="M6,1V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H18V1H16V3H8V1H6M5,8H19V19H5V8M12.19,9C11.32,9 10.62,9.2 10.08,9.59C9.56,10 9.3,10.57 9.31,11.36L9.32,11.39H11.25C11.26,11.09 11.35,10.86 11.53,10.7C11.71,10.55 11.93,10.47 12.19,10.47C12.5,10.47 12.76,10.57 12.94,10.75C13.12,10.94 13.2,11.2 13.2,11.5C13.2,11.82 13.13,12.09 12.97,12.32C12.83,12.55 12.62,12.75 12.36,12.91C11.85,13.25 11.5,13.55 11.31,13.82C11.11,14.08 11,14.5 11,15H13C13,14.69 13.04,14.44 13.13,14.26C13.22,14.08 13.39,13.9 13.64,13.74C14.09,13.5 14.46,13.21 14.75,12.81C15.04,12.41 15.19,12 15.19,11.5C15.19,10.74 14.92,10.13 14.38,9.68C13.85,9.23 13.12,9 12.19,9M11,16V18H13V16H11Z" /></g><g id="calendar-range"><path d="M9,11H7V13H9V11M13,11H11V13H13V11M17,11H15V13H17V11M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V9H19V20Z" /></g><g id="calendar-remove"><path d="M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9.31,17L11.75,14.56L14.19,17L15.25,15.94L12.81,13.5L15.25,11.06L14.19,10L11.75,12.44L9.31,10L8.25,11.06L10.69,13.5L8.25,15.94L9.31,17Z" /></g><g id="calendar-text"><path d="M14,14H7V16H14M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M17,10H7V12H17V10Z" /></g><g id="calendar-today"><path d="M7,10H12V15H7M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="call-made"><path d="M9,5V7H15.59L4,18.59L5.41,20L17,8.41V15H19V5" /></g><g id="call-merge"><path d="M17,20.41L18.41,19L15,15.59L13.59,17M7.5,8H11V13.59L5.59,19L7,20.41L13,14.41V8H16.5L12,3.5" /></g><g id="call-missed"><path d="M19.59,7L12,14.59L6.41,9H11V7H3V15H5V10.41L12,17.41L21,8.41" /></g><g id="call-received"><path d="M20,5.41L18.59,4L7,15.59V9H5V19H15V17H8.41" /></g><g id="call-split"><path d="M14,4L16.29,6.29L13.41,9.17L14.83,10.59L17.71,7.71L20,10V4M10,4H4V10L6.29,7.71L11,12.41V20H13V11.59L7.71,6.29" /></g><g id="camcorder"><path d="M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z" /></g><g id="camcorder-box"><path d="M18,16L14,12.8V16H6V8H14V11.2L18,8M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camcorder-box-off"><path d="M6,8H6.73L14,15.27V16H6M2.27,1L1,2.27L3,4.28C2.41,4.62 2,5.26 2,6V18A2,2 0 0,0 4,20H18.73L20.73,22L22,20.73M20,4H7.82L11.82,8H14V10.18L14.57,10.75L18,8V14.18L22,18.17C22,18.11 22,18.06 22,18V6A2,2 0 0,0 20,4Z" /></g><g id="camcorder-off"><path d="M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z" /></g><g id="camera"><path d="M4,4H7L9,2H15L17,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z" /></g><g id="camera-burst"><path d="M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z" /></g><g id="camera-enhance"><path d="M9,3L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5H16.83L15,3M12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18M12,17L13.25,14.25L16,13L13.25,11.75L12,9L10.75,11.75L8,13L10.75,14.25" /></g><g id="camera-front"><path d="M7,2H17V12.5C17,10.83 13.67,10 12,10C10.33,10 7,10.83 7,12.5M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z" /></g><g id="camera-front-variant"><path d="M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M11,1V3H13V1H11M6,4V16.5C6,15.12 8.69,14 12,14C15.31,14 18,15.12 18,16.5V4H6M13,18H9V20H13V22L16,19L13,16V18Z" /></g><g id="camera-iris"><path d="M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z" /></g><g id="camera-off"><path d="M1.2,4.47L2.5,3.2L20,20.72L18.73,22L16.73,20H4A2,2 0 0,1 2,18V6C2,5.78 2.04,5.57 2.1,5.37L1.2,4.47M7,4L9,2H15L17,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L16.33,14.5C16.76,13.77 17,12.91 17,12A5,5 0 0,0 12,7C11.09,7 10.23,7.24 9.5,7.67L5.82,4H7M7,12A5,5 0 0,0 12,17C12.5,17 13.03,16.92 13.5,16.77L11.72,15C10.29,14.85 9.15,13.71 9,12.28L7.23,10.5C7.08,10.97 7,11.5 7,12M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9Z" /></g><g id="camera-party-mode"><path d="M12,17C10.37,17 8.94,16.21 8,15H12A3,3 0 0,0 15,12C15,11.65 14.93,11.31 14.82,11H16.9C16.96,11.32 17,11.66 17,12A5,5 0 0,1 12,17M12,7C13.63,7 15.06,7.79 16,9H12A3,3 0 0,0 9,12C9,12.35 9.07,12.68 9.18,13H7.1C7.03,12.68 7,12.34 7,12A5,5 0 0,1 12,7M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camera-rear"><path d="M12,6C10.89,6 10,5.1 10,4A2,2 0 0,1 12,2C13.09,2 14,2.9 14,4A2,2 0 0,1 12,6M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z" /></g><g id="camera-rear-variant"><path d="M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,2A2,2 0 0,0 10,4A2,2 0 0,0 12,6A2,2 0 0,0 14,4A2,2 0 0,0 12,2M13,18H9V20H13V22L16,19L13,16V18Z" /></g><g id="camera-switch"><path d="M15,15.5V13H9V15.5L5.5,12L9,8.5V11H15V8.5L18.5,12M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camera-timer"><path d="M4.94,6.35C4.55,5.96 4.55,5.32 4.94,4.93C5.33,4.54 5.96,4.54 6.35,4.93L13.07,10.31L13.42,10.59C14.2,11.37 14.2,12.64 13.42,13.42C12.64,14.2 11.37,14.2 10.59,13.42L10.31,13.07L4.94,6.35M12,20A8,8 0 0,0 20,12C20,9.79 19.1,7.79 17.66,6.34L19.07,4.93C20.88,6.74 22,9.24 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12H4A8,8 0 0,0 12,20M12,1A2,2 0 0,1 14,3A2,2 0 0,1 12,5A2,2 0 0,1 10,3A2,2 0 0,1 12,1Z" /></g><g id="candle"><path d="M12.5,2C10.84,2 9.5,5.34 9.5,7A3,3 0 0,0 12.5,10A3,3 0 0,0 15.5,7C15.5,5.34 14.16,2 12.5,2M12.5,6.5A1,1 0 0,1 13.5,7.5A1,1 0 0,1 12.5,8.5A1,1 0 0,1 11.5,7.5A1,1 0 0,1 12.5,6.5M10,11A1,1 0 0,0 9,12V20H7A1,1 0 0,1 6,19V18A1,1 0 0,0 5,17A1,1 0 0,0 4,18V19A3,3 0 0,0 7,22H19A1,1 0 0,0 20,21A1,1 0 0,0 19,20H16V12A1,1 0 0,0 15,11H10Z" /></g><g id="candycane"><path d="M10,10A2,2 0 0,1 8,12A2,2 0 0,1 6,10V8C6,7.37 6.1,6.77 6.27,6.2L10,9.93V10M12,2C12.74,2 13.44,2.13 14.09,2.38L11.97,6C11.14,6 10.44,6.5 10.15,7.25L7.24,4.34C8.34,2.92 10.06,2 12,2M17.76,6.31L14,10.07V8C14,7.62 13.9,7.27 13.72,6.97L15.83,3.38C16.74,4.13 17.42,5.15 17.76,6.31M18,13.09L14,17.09V12.9L18,8.9V13.09M18,20A2,2 0 0,1 16,22A2,2 0 0,1 14,20V19.91L18,15.91V20Z" /></g><g id="car"><path d="M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z" /></g><g id="car-battery"><path d="M4,3V6H1V20H23V6H20V3H14V6H10V3H4M3,8H21V18H3V8M15,10V12H13V14H15V16H17V14H19V12H17V10H15M5,12V14H11V12H5Z" /></g><g id="car-connected"><path d="M5,14H19L17.5,9.5H6.5L5,14M17.5,19A1.5,1.5 0 0,0 19,17.5A1.5,1.5 0 0,0 17.5,16A1.5,1.5 0 0,0 16,17.5A1.5,1.5 0 0,0 17.5,19M6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19M18.92,9L21,15V23A1,1 0 0,1 20,24H19A1,1 0 0,1 18,23V22H6V23A1,1 0 0,1 5,24H4A1,1 0 0,1 3,23V15L5.08,9C5.28,8.42 5.85,8 6.5,8H17.5C18.15,8 18.72,8.42 18.92,9M12,0C14.12,0 16.15,0.86 17.65,2.35L16.23,3.77C15.11,2.65 13.58,2 12,2C10.42,2 8.89,2.65 7.77,3.77L6.36,2.35C7.85,0.86 9.88,0 12,0M12,4C13.06,4 14.07,4.44 14.82,5.18L13.4,6.6C13.03,6.23 12.53,6 12,6C11.5,6 10.97,6.23 10.6,6.6L9.18,5.18C9.93,4.44 10.94,4 12,4Z" /></g><g id="car-wash"><path d="M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0 0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5 0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42 5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0 21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0 7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0 0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5 15.5,3.5A1.5,1.5 0 0,0 17,5Z" /></g><g id="cards"><path d="M21.47,4.35L20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.77 21.47,4.35M1.97,8.05L6.93,20C7.24,20.77 7.97,21.24 8.74,21.26C9,21.26 9.27,21.21 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.26C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05M18.12,4.25A2,2 0 0,0 16.12,2.25H14.67L18.12,10.59" /></g><g id="cards-outline"><path d="M11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05L6.93,20C7.24,20.77 7.97,21.23 8.74,21.25C9,21.25 9.27,21.22 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.25C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25M14.67,2.25L18.12,10.6V4.25A2,2 0 0,0 16.12,2.25M20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.78 21.47,4.36M11.19,4.22L16.17,16.24L8.78,19.3L3.8,7.29" /></g><g id="cards-playing-outline"><path d="M11.19,2.25C11.97,2.26 12.71,2.73 13,3.5L18,15.45C18.09,15.71 18.14,16 18.13,16.25C18.11,17 17.65,17.74 16.9,18.05L9.53,21.1C9.27,21.22 9,21.25 8.74,21.25C7.97,21.23 7.24,20.77 6.93,20L1.97,8.05C1.55,7.04 2.04,5.87 3.06,5.45L10.42,2.4C10.67,2.31 10.93,2.25 11.19,2.25M14.67,2.25H16.12A2,2 0 0,1 18.12,4.25V10.6L14.67,2.25M20.13,3.79L21.47,4.36C22.5,4.78 22.97,5.94 22.56,6.96L20.13,12.82V3.79M11.19,4.22L3.8,7.29L8.77,19.3L16.17,16.24L11.19,4.22M8.65,8.54L11.88,10.95L11.44,14.96L8.21,12.54L8.65,8.54Z" /></g><g id="cards-variant"><path d="M5,2H19A1,1 0 0,1 20,3V13A1,1 0 0,1 19,14H5A1,1 0 0,1 4,13V3A1,1 0 0,1 5,2M6,4V12H18V4H6M20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17V16H20V17M20,21A1,1 0 0,1 19,22H5A1,1 0 0,1 4,21V20H20V21Z" /></g><g id="carrot"><path d="M16,10L15.8,11H13.5A0.5,0.5 0 0,0 13,11.5A0.5,0.5 0 0,0 13.5,12H15.6L14.6,17H12.5A0.5,0.5 0 0,0 12,17.5A0.5,0.5 0 0,0 12.5,18H14.4L14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20L9,15H10.5A0.5,0.5 0 0,0 11,14.5A0.5,0.5 0 0,0 10.5,14H8.8L8,10C8,8.8 8.93,7.77 10.29,7.29L8.9,5.28C8.59,4.82 8.7,4.2 9.16,3.89C9.61,3.57 10.23,3.69 10.55,4.14L11,4.8V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V5.28L14.5,3.54C14.83,3.12 15.47,3.07 15.89,3.43C16.31,3.78 16.36,4.41 16,4.84L13.87,7.35C15.14,7.85 16,8.85 16,10Z" /></g><g id="cart"><path d="M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z" /></g><g id="cart-off"><path d="M22.73,22.73L1.27,1.27L0,2.54L4.39,6.93L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H14.46L15.84,18.38C15.34,18.74 15,19.33 15,20A2,2 0 0,0 17,22C17.67,22 18.26,21.67 18.62,21.16L21.46,24L22.73,22.73M7.42,15A0.25,0.25 0 0,1 7.17,14.75L7.2,14.63L8.1,13H10.46L12.46,15H7.42M15.55,13C16.3,13 16.96,12.59 17.3,11.97L20.88,5.5C20.96,5.34 21,5.17 21,5A1,1 0 0,0 20,4H6.54L15.55,13M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18Z" /></g><g id="cart-outline"><path d="M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z" /></g><g id="cart-plus"><path d="M11,9H13V6H16V4H13V1H11V4H8V6H11M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z" /></g><g id="case-sensitive-alt"><path d="M20,14C20,12.5 19.5,12 18,12H16V11C16,10 16,10 14,10V15.4L14,19H16L18,19C19.5,19 20,18.47 20,17V14M12,12C12,10.5 11.47,10 10,10H6C4.5,10 4,10.5 4,12V19H6V16H10V19H12V12M10,7H14V5H10V7M22,9V20C22,21.11 21.11,22 20,22H4A2,2 0 0,1 2,20V9C2,7.89 2.89,7 4,7H8V5L10,3H14L16,5V7H20A2,2 0 0,1 22,9H22M16,17H18V14H16V17M6,12H10V14H6V12Z" /></g><g id="cash"><path d="M3,6H21V18H3V6M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M7,8A2,2 0 0,1 5,10V14A2,2 0 0,1 7,16H17A2,2 0 0,1 19,14V10A2,2 0 0,1 17,8H7Z" /></g><g id="cash-100"><path d="M2,5H22V20H2V5M20,18V7H4V18H20M17,8A2,2 0 0,0 19,10V15A2,2 0 0,0 17,17H7A2,2 0 0,0 5,15V10A2,2 0 0,0 7,8H17M17,13V12C17,10.9 16.33,10 15.5,10C14.67,10 14,10.9 14,12V13C14,14.1 14.67,15 15.5,15C16.33,15 17,14.1 17,13M15.5,11A0.5,0.5 0 0,1 16,11.5V13.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 15,13.5V11.5A0.5,0.5 0 0,1 15.5,11M13,13V12C13,10.9 12.33,10 11.5,10C10.67,10 10,10.9 10,12V13C10,14.1 10.67,15 11.5,15C12.33,15 13,14.1 13,13M11.5,11A0.5,0.5 0 0,1 12,11.5V13.5A0.5,0.5 0 0,1 11.5,14A0.5,0.5 0 0,1 11,13.5V11.5A0.5,0.5 0 0,1 11.5,11M8,15H9V10H8L7,10.5V11.5L8,11V15Z" /></g><g id="cash-multiple"><path d="M5,6H23V18H5V6M14,9A3,3 0 0,1 17,12A3,3 0 0,1 14,15A3,3 0 0,1 11,12A3,3 0 0,1 14,9M9,8A2,2 0 0,1 7,10V14A2,2 0 0,1 9,16H19A2,2 0 0,1 21,14V10A2,2 0 0,1 19,8H9M1,10H3V20H19V22H1V10Z" /></g><g id="cash-usd"><path d="M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M11,17H13V16H14A1,1 0 0,0 15,15V12A1,1 0 0,0 14,11H11V10H15V8H13V7H11V8H10A1,1 0 0,0 9,9V12A1,1 0 0,0 10,13H13V14H9V16H11V17Z" /></g><g id="cast"><path d="M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3Z" /></g><g id="cast-connected"><path d="M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M19,7H5V8.63C8.96,9.91 12.09,13.04 13.37,17H19M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z" /></g><g id="castle"><path d="M2,13H4V15H6V13H8V15H10V13H12V15H14V10L17,7V1H19L23,3L19,5V7L22,10V22H11V19A2,2 0 0,0 9,17A2,2 0 0,0 7,19V22H2V13M18,10C17.45,10 17,10.54 17,11.2V13H19V11.2C19,10.54 18.55,10 18,10Z" /></g><g id="cat"><path d="M12,8L10.67,8.09C9.81,7.07 7.4,4.5 5,4.5C5,4.5 3.03,7.46 4.96,11.41C4.41,12.24 4.07,12.67 4,13.66L2.07,13.95L2.28,14.93L4.04,14.67L4.18,15.38L2.61,16.32L3.08,17.21L4.53,16.32C5.68,18.76 8.59,20 12,20C15.41,20 18.32,18.76 19.47,16.32L20.92,17.21L21.39,16.32L19.82,15.38L19.96,14.67L21.72,14.93L21.93,13.95L20,13.66C19.93,12.67 19.59,12.24 19.04,11.41C20.97,7.46 19,4.5 19,4.5C16.6,4.5 14.19,7.07 13.33,8.09L12,8M9,11A1,1 0 0,1 10,12A1,1 0 0,1 9,13A1,1 0 0,1 8,12A1,1 0 0,1 9,11M15,11A1,1 0 0,1 16,12A1,1 0 0,1 15,13A1,1 0 0,1 14,12A1,1 0 0,1 15,11M11,14H13L12.3,15.39C12.5,16.03 13.06,16.5 13.75,16.5A1.5,1.5 0 0,0 15.25,15H15.75A2,2 0 0,1 13.75,17C13,17 12.35,16.59 12,16V16H12C11.65,16.59 11,17 10.25,17A2,2 0 0,1 8.25,15H8.75A1.5,1.5 0 0,0 10.25,16.5C10.94,16.5 11.5,16.03 11.7,15.39L11,14Z" /></g><g id="cellphone"><path d="M17,19H7V5H17M17,1H7C5.89,1 5,1.89 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3C19,1.89 18.1,1 17,1Z" /></g><g id="cellphone-android"><path d="M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z" /></g><g id="cellphone-basic"><path d="M15,2A1,1 0 0,0 14,3V6H10C8.89,6 8,6.89 8,8V20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V8C17,7.26 16.6,6.62 16,6.28V3A1,1 0 0,0 15,2M10,8H15V13H10V8M10,15H11V16H10V15M12,15H13V16H12V15M14,15H15V16H14V15M10,17H11V18H10V17M12,17H13V18H12V17M14,17H15V18H14V17M10,19H11V20H10V19M12,19H13V20H12V19M14,19H15V20H14V19Z" /></g><g id="cellphone-dock"><path d="M16,15H8V5H16M16,1H8C6.89,1 6,1.89 6,3V17A2,2 0 0,0 8,19H16A2,2 0 0,0 18,17V3C18,1.89 17.1,1 16,1M8,23H16V21H8V23Z" /></g><g id="cellphone-iphone"><path d="M16,18H7V4H16M11.5,22A1.5,1.5 0 0,1 10,20.5A1.5,1.5 0 0,1 11.5,19A1.5,1.5 0 0,1 13,20.5A1.5,1.5 0 0,1 11.5,22M15.5,1H7.5A2.5,2.5 0 0,0 5,3.5V20.5A2.5,2.5 0 0,0 7.5,23H15.5A2.5,2.5 0 0,0 18,20.5V3.5A2.5,2.5 0 0,0 15.5,1Z" /></g><g id="cellphone-link"><path d="M22,17H18V10H22M23,8H17A1,1 0 0,0 16,9V19A1,1 0 0,0 17,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6H22V4H4A2,2 0 0,0 2,6V17H0V20H14V17H4V6Z" /></g><g id="cellphone-link-off"><path d="M23,8H17A1,1 0 0,0 16,9V13.18L18,15.18V10H22V17H19.82L22.82,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6.27L14.73,17H4V6.27M1.92,1.65L0.65,2.92L2.47,4.74C2.18,5.08 2,5.5 2,6V17H0V20H17.73L20.08,22.35L21.35,21.08L3.89,3.62L1.92,1.65M22,6V4H6.82L8.82,6H22Z" /></g><g id="cellphone-settings"><path d="M16,16H8V4H16M16,0H8A2,2 0 0,0 6,2V18A2,2 0 0,0 8,20H16A2,2 0 0,0 18,18V2A2,2 0 0,0 16,0M15,24H17V22H15M11,24H13V22H11M7,24H9V22H7V24Z" /></g><g id="certificate"><path d="M4,3C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H12V22L15,19L18,22V17H20A2,2 0 0,0 22,15V8L22,6V5A2,2 0 0,0 20,3H16V3H4M12,5L15,7L18,5V8.5L21,10L18,11.5V15L15,13L12,15V11.5L9,10L12,8.5V5M4,5H9V7H4V5M4,9H7V11H4V9M4,13H9V15H4V13Z" /></g><g id="chair-school"><path d="M22,5V7H17L13.53,12H16V14H14.46L18.17,22H15.97L15.04,20H6.38L5.35,22H3.1L7.23,14H7C6.55,14 6.17,13.7 6.04,13.3L2.87,3.84L3.82,3.5C4.34,3.34 4.91,3.63 5.08,4.15L7.72,12H12.1L15.57,7H12V5H22M9.5,14L7.42,18H14.11L12.26,14H9.5Z" /></g><g id="chart-arc"><path d="M16.18,19.6L14.17,16.12C15.15,15.4 15.83,14.28 15.97,13H20C19.83,15.76 18.35,18.16 16.18,19.6M13,7.03V3C17.3,3.26 20.74,6.7 21,11H16.97C16.74,8.91 15.09,7.26 13,7.03M7,12.5C7,13.14 7.13,13.75 7.38,14.3L3.9,16.31C3.32,15.16 3,13.87 3,12.5C3,7.97 6.54,4.27 11,4V8.03C8.75,8.28 7,10.18 7,12.5M11.5,21C8.53,21 5.92,19.5 4.4,17.18L7.88,15.17C8.7,16.28 10,17 11.5,17C12.14,17 12.75,16.87 13.3,16.62L15.31,20.1C14.16,20.68 12.87,21 11.5,21Z" /></g><g id="chart-areaspline"><path d="M17.45,15.18L22,7.31V19L22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L16.74,12.5L10.23,8.75L4.31,19H6.57L10.96,11.44L17.45,15.18Z" /></g><g id="chart-bar"><path d="M22,21H2V3H4V19H6V10H10V19H12V6H16V19H18V14H22V21Z" /></g><g id="chart-bubble"><path d="M7.2,11.2C8.97,11.2 10.4,12.63 10.4,14.4C10.4,16.17 8.97,17.6 7.2,17.6C5.43,17.6 4,16.17 4,14.4C4,12.63 5.43,11.2 7.2,11.2M14.8,16A2,2 0 0,1 16.8,18A2,2 0 0,1 14.8,20A2,2 0 0,1 12.8,18A2,2 0 0,1 14.8,16M15.2,4A4.8,4.8 0 0,1 20,8.8C20,11.45 17.85,13.6 15.2,13.6A4.8,4.8 0 0,1 10.4,8.8C10.4,6.15 12.55,4 15.2,4Z" /></g><g id="chart-gantt"><path d="M2,5H10V2H12V22H10V18H6V15H10V13H4V10H10V8H2V5M14,5H17V8H14V5M14,10H19V13H14V10M14,15H22V18H14V15Z" /></g><g id="chart-histogram"><path d="M3,3H5V13H9V7H13V11H17V15H21V21H3V3Z" /></g><g id="chart-line"><path d="M16,11.78L20.24,4.45L21.97,5.45L16.74,14.5L10.23,10.75L5.46,19H22V21H2V3H4V17.54L9.5,8L16,11.78Z" /></g><g id="chart-pie"><path d="M21,11H13V3A8,8 0 0,1 21,11M19,13C19,15.78 17.58,18.23 15.43,19.67L11.58,13H19M11,21C8.22,21 5.77,19.58 4.33,17.43L10.82,13.68L14.56,20.17C13.5,20.7 12.28,21 11,21M3,13A8,8 0 0,1 11,5V12.42L3.83,16.56C3.3,15.5 3,14.28 3,13Z" /></g><g id="chart-scatterplot-hexbin"><path d="M2,2H4V20H22V22H2V2M14,14.5L12,18H7.94L5.92,14.5L7.94,11H12L14,14.5M14.08,6.5L12.06,10H8L6,6.5L8,3H12.06L14.08,6.5M21.25,10.5L19.23,14H15.19L13.17,10.5L15.19,7H19.23L21.25,10.5Z" /></g><g id="chart-timeline"><path d="M2,2H4V20H22V22H2V2M7,10H17V13H7V10M11,15H21V18H11V15M6,4H22V8H20V6H8V8H6V4Z" /></g><g id="check"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" /></g><g id="check-all"><path d="M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z" /></g><g id="check-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z" /></g><g id="check-circle-outline"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,16.5L6.5,12L7.91,10.59L11,13.67L16.59,8.09L18,9.5L11,16.5Z" /></g><g id="checkbox-blank"><path d="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="checkbox-blank-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-blank-circle-outline"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-blank-outline"><path d="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z" /></g><g id="checkbox-marked"><path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="checkbox-marked-circle"><path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-marked-circle-outline"><path d="M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></g><g id="checkbox-marked-outline"><path d="M19,19H5V5H15V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V11H19M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></g><g id="checkbox-multiple-blank"><path d="M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkbox-multiple-blank-circle"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-blank-circle-outline"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M14,4C17.32,4 20,6.69 20,10C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-blank-outline"><path d="M20,16V4H8V16H20M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkbox-multiple-marked"><path d="M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M13,14L20,7L18.59,5.59L13,11.17L9.91,8.09L8.5,9.5L13,14Z" /></g><g id="checkbox-multiple-marked-circle"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82M18.09,6.08L19.5,7.5L13,14L9.21,10.21L10.63,8.79L13,11.17" /></g><g id="checkbox-multiple-marked-circle-outline"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10H20C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4C14.43,4 14.86,4.05 15.27,4.14L16.88,2.54C15.96,2.18 15,2 14,2M20.59,3.58L14,10.17L11.62,7.79L10.21,9.21L14,13L22,5M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-marked-outline"><path d="M20,16V10H22V16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H16V4H8V16H20M10.91,7.08L14,10.17L20.59,3.58L22,5L14,13L9.5,8.5L10.91,7.08M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkerboard"><path d="M3,3H21V21H3V3M5,5V12H12V19H19V12H12V5H5Z" /></g><g id="chemical-weapon"><path d="M11,7.83C9.83,7.42 9,6.3 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6.31 14.16,7.42 13,7.83V10.64C12.68,10.55 12.35,10.5 12,10.5C11.65,10.5 11.32,10.55 11,10.64V7.83M18.3,21.1C17.16,20.45 16.62,19.18 16.84,17.96L14.4,16.55C14.88,16.09 15.24,15.5 15.4,14.82L17.84,16.23C18.78,15.42 20.16,15.26 21.29,15.91C22.73,16.74 23.22,18.57 22.39,20C21.56,21.44 19.73,21.93 18.3,21.1M2.7,15.9C3.83,15.25 5.21,15.42 6.15,16.22L8.6,14.81C8.76,15.5 9.11,16.08 9.6,16.54L7.15,17.95C7.38,19.17 6.83,20.45 5.7,21.1C4.26,21.93 2.43,21.44 1.6,20C0.77,18.57 1.26,16.73 2.7,15.9M14,14A2,2 0 0,1 12,16C10.89,16 10,15.1 10,14A2,2 0 0,1 12,12C13.11,12 14,12.9 14,14M17,14L16.97,14.57L15.5,13.71C15.4,12.64 14.83,11.71 14,11.12V9.41C15.77,10.19 17,11.95 17,14M14.97,18.03C14.14,18.64 13.11,19 12,19C10.89,19 9.86,18.64 9.03,18L10.5,17.17C10.96,17.38 11.47,17.5 12,17.5C12.53,17.5 13.03,17.38 13.5,17.17L14.97,18.03M7.03,14.56L7,14C7,11.95 8.23,10.19 10,9.42V11.13C9.17,11.71 8.6,12.64 8.5,13.7L7.03,14.56Z" /></g><g id="chevron-double-down"><path d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" /></g><g id="chevron-double-left"><path d="M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z" /></g><g id="chevron-double-right"><path d="M5.59,7.41L7,6L13,12L7,18L5.59,16.59L10.17,12L5.59,7.41M11.59,7.41L13,6L19,12L13,18L11.59,16.59L16.17,12L11.59,7.41Z" /></g><g id="chevron-double-up"><path d="M7.41,18.41L6,17L12,11L18,17L16.59,18.41L12,13.83L7.41,18.41M7.41,12.41L6,11L12,5L18,11L16.59,12.41L12,7.83L7.41,12.41Z" /></g><g id="chevron-down"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></g><g id="chevron-left"><path d="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z" /></g><g id="chevron-right"><path d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" /></g><g id="chevron-up"><path d="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" /></g><g id="chip"><path d="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z" /></g><g id="church"><path d="M11,2H13V4H15V6H13V9.4L22,13V15L20,14.2V22H14V17A2,2 0 0,0 12,15A2,2 0 0,0 10,17V22H4V14.2L2,15V13L11,9.4V6H9V4H11V2M6,20H8V15L7,14L6,15V20M16,20H18V15L17,14L16,15V20Z" /></g><g id="cisco-webex"><path d="M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M5.94,8.5C4,11.85 5.15,16.13 8.5,18.06C11.85,20 18.85,7.87 15.5,5.94C12.15,4 7.87,5.15 5.94,8.5Z" /></g><g id="city"><path d="M19,15H17V13H19M19,19H17V17H19M13,7H11V5H13M13,11H11V9H13M13,15H11V13H13M13,19H11V17H13M7,11H5V9H7M7,15H5V13H7M7,19H5V17H7M15,11V5L12,2L9,5V7H3V21H21V11H15Z" /></g><g id="clipboard"><path d="M9,4A3,3 0 0,1 12,1A3,3 0 0,1 15,4H19A2,2 0 0,1 21,6V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6A2,2 0 0,1 5,4H9M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z" /></g><g id="clipboard-account"><path d="M18,19H6V17.6C6,15.6 10,14.5 12,14.5C14,14.5 18,15.6 18,17.6M12,7A3,3 0 0,1 15,10A3,3 0 0,1 12,13A3,3 0 0,1 9,10A3,3 0 0,1 12,7M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-alert"><path d="M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M13,14H11V8H13M13,18H11V16H13M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-arrow-down"><path d="M12,18L7,13H10V9H14V13H17M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-arrow-left"><path d="M16,15H12V18L7,13L12,8V11H16M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-check"><path d="M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-flow"><path d="M19,4H14.82C14.25,2.44 12.53,1.64 11,2.2C10.14,2.5 9.5,3.16 9.18,4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M12,4A1,1 0 0,1 13,5A1,1 0 0,1 12,6A1,1 0 0,1 11,5A1,1 0 0,1 12,4M10,17H8V10H5L9,6L13,10H10V17M15,20L11,16H14V9H16V16H19L15,20Z" /></g><g id="clipboard-outline"><path d="M7,8V6H5V19H19V6H17V8H7M9,4A3,3 0 0,1 12,1A3,3 0 0,1 15,4H19A2,2 0 0,1 21,6V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6A2,2 0 0,1 5,4H9M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z" /></g><g id="clipboard-text"><path d="M17,9H7V7H17M17,13H7V11H17M14,17H7V15H14M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clippy"><path d="M15,15.5A2.5,2.5 0 0,1 12.5,18A2.5,2.5 0 0,1 10,15.5V13.75A0.75,0.75 0 0,1 10.75,13A0.75,0.75 0 0,1 11.5,13.75V15.5A1,1 0 0,0 12.5,16.5A1,1 0 0,0 13.5,15.5V11.89C12.63,11.61 12,10.87 12,10C12,8.9 13,8 14.25,8C15.5,8 16.5,8.9 16.5,10C16.5,10.87 15.87,11.61 15,11.89V15.5M8.25,8C9.5,8 10.5,8.9 10.5,10C10.5,10.87 9.87,11.61 9,11.89V17.25A3.25,3.25 0 0,0 12.25,20.5A3.25,3.25 0 0,0 15.5,17.25V13.75A0.75,0.75 0 0,1 16.25,13A0.75,0.75 0 0,1 17,13.75V17.25A4.75,4.75 0 0,1 12.25,22A4.75,4.75 0 0,1 7.5,17.25V11.89C6.63,11.61 6,10.87 6,10C6,8.9 7,8 8.25,8M10.06,6.13L9.63,7.59C9.22,7.37 8.75,7.25 8.25,7.25C7.34,7.25 6.53,7.65 6.03,8.27L4.83,7.37C5.46,6.57 6.41,6 7.5,5.81V5.75A3.75,3.75 0 0,1 11.25,2A3.75,3.75 0 0,1 15,5.75V5.81C16.09,6 17.04,6.57 17.67,7.37L16.47,8.27C15.97,7.65 15.16,7.25 14.25,7.25C13.75,7.25 13.28,7.37 12.87,7.59L12.44,6.13C12.77,6 13.13,5.87 13.5,5.81V5.75C13.5,4.5 12.5,3.5 11.25,3.5C10,3.5 9,4.5 9,5.75V5.81C9.37,5.87 9.73,6 10.06,6.13M14.25,9.25C13.7,9.25 13.25,9.59 13.25,10C13.25,10.41 13.7,10.75 14.25,10.75C14.8,10.75 15.25,10.41 15.25,10C15.25,9.59 14.8,9.25 14.25,9.25M8.25,9.25C7.7,9.25 7.25,9.59 7.25,10C7.25,10.41 7.7,10.75 8.25,10.75C8.8,10.75 9.25,10.41 9.25,10C9.25,9.59 8.8,9.25 8.25,9.25Z" /></g><g id="clock"><path d="M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z" /></g><g id="clock-alert"><path d="M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22C14.25,22 16.33,21.24 18,20V17.28C16.53,18.94 14.39,20 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C15.36,4 18.23,6.07 19.41,9H21.54C20.27,4.94 16.5,2 12,2M11,7V13L16.25,16.15L17,14.92L12.5,12.25V7H11M20,11V18H22V11H20M20,20V22H22V20H20Z" /></g><g id="clock-end"><path d="M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M15,16V19H3V21H15V24L19,20M19,20V24H21V16H19" /></g><g id="clock-fast"><path d="M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6M14,8H15.5V11.78L17.83,14.11L16.77,15.17L14,12.4V8M2,18A1,1 0 0,1 1,17A1,1 0 0,1 2,16H5.83C6.14,16.71 6.54,17.38 7,18H2M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H5.05L5,12L5.05,13H3M4,8A1,1 0 0,1 3,7A1,1 0 0,1 4,6H7C6.54,6.62 6.14,7.29 5.83,8H4Z" /></g><g id="clock-in"><path d="M2.21,0.79L0.79,2.21L4.8,6.21L3,8H8V3L6.21,4.8M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12" /></g><g id="clock-out"><path d="M18,1L19.8,2.79L15.79,6.79L17.21,8.21L21.21,4.21L23,6V1M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12" /></g><g id="clock-start"><path d="M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M4,16V24H6V21H18V24L22,20L18,16V19H6V16" /></g><g id="close"><path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" /></g><g id="close-box"><path d="M19,3H16.3H7.7H5A2,2 0 0,0 3,5V7.7V16.4V19A2,2 0 0,0 5,21H7.7H16.4H19A2,2 0 0,0 21,19V16.3V7.7V5A2,2 0 0,0 19,3M15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4L13.4,12L17,15.6L15.6,17Z" /></g><g id="close-box-outline"><path d="M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,8.4L13.4,12L17,15.6L15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4Z" /></g><g id="close-circle"><path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z" /></g><g id="close-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z" /></g><g id="close-network"><path d="M14.59,6L12,8.59L9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="close-octagon"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3M8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41" /></g><g id="close-octagon-outline"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M9.12,7.71L7.71,9.12L10.59,12L7.71,14.88L9.12,16.29L12,13.41L14.88,16.29L16.29,14.88L13.41,12L16.29,9.12L14.88,7.71L12,10.59" /></g><g id="close-outline"><path d="M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74M12,13.41L16.74,18.16L18.16,16.74L13.41,12L18.16,7.26L16.74,5.84L12,10.59L7.26,5.84L5.84,7.26L10.59,12L5.84,16.74L7.26,18.16L12,13.41Z" /></g><g id="closed-caption"><path d="M18,11H16.5V10.5H14.5V13.5H16.5V13H18V14A1,1 0 0,1 17,15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,11H9.5V10.5H7.5V13.5H9.5V13H11V14A1,1 0 0,1 10,15H7A1,1 0 0,1 6,14V10A1,1 0 0,1 7,9H10A1,1 0 0,1 11,10M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z" /></g><g id="cloud"><path d="M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-check"><path d="M10,17L6.5,13.5L7.91,12.08L10,14.17L15.18,9L16.59,10.41M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-circle"><path d="M16.5,16H8A3,3 0 0,1 5,13A3,3 0 0,1 8,10C8.05,10 8.09,10 8.14,10C8.58,8.28 10.13,7 12,7A4,4 0 0,1 16,11H16.5A2.5,2.5 0 0,1 19,13.5A2.5,2.5 0 0,1 16.5,16M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="cloud-download"><path d="M17,13L12,18L7,13H10V9H14V13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-outline"><path d="M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10H6.71C7.37,7.69 9.5,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-outline-off"><path d="M7.73,10L15.73,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10M3,5.27L5.75,8C2.56,8.15 0,10.77 0,14A6,6 0 0,0 6,20H17.73L19.73,22L21,20.73L4.27,4M19.35,10.03C18.67,6.59 15.64,4 12,4C10.5,4 9.15,4.43 8,5.17L9.45,6.63C10.21,6.23 11.08,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15C22,16.13 21.36,17.11 20.44,17.62L21.89,19.07C23.16,18.16 24,16.68 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-print"><path d="M12,2C9.11,2 6.6,3.64 5.35,6.04C2.34,6.36 0,8.91 0,12A6,6 0 0,0 6,18V22H18V18H19A5,5 0 0,0 24,13C24,10.36 21.95,8.22 19.35,8.04C18.67,4.59 15.64,2 12,2M8,13H16V20H8V13M9,14V15H15V14H9M9,16V17H15V16H9M9,18V19H15V18H9Z" /></g><g id="cloud-print-outline"><path d="M19,16A3,3 0 0,0 22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16V11H18V16H19M19.36,8.04C21.95,8.22 24,10.36 24,13A5,5 0 0,1 19,18H18V22H6V18A6,6 0 0,1 0,12C0,8.91 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.6 19.36,8.04M8,13V20H16V13H8M9,18H15V19H9V18M15,17H9V16H15V17M9,14H15V15H9V14Z" /></g><g id="cloud-sync"><path d="M12,4C15.64,4 18.67,6.59 19.35,10.04C21.95,10.22 24,12.36 24,15A5,5 0 0,1 19,20H6A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4M7.5,9.69C6.06,11.5 6.2,14.06 7.82,15.68C8.66,16.5 9.81,17 11,17V18.86L13.83,16.04L11,13.21V15C10.34,15 9.7,14.74 9.23,14.27C8.39,13.43 8.26,12.11 8.92,11.12L7.5,9.69M9.17,8.97L10.62,10.42L12,11.79V10C12.66,10 13.3,10.26 13.77,10.73C14.61,11.57 14.74,12.89 14.08,13.88L15.5,15.31C16.94,13.5 16.8,10.94 15.18,9.32C14.34,8.5 13.19,8 12,8V6.14L9.17,8.97Z" /></g><g id="cloud-upload"><path d="M14,13V17H10V13H7L12,8L17,13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="code-array"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M6,6V18H10V16H8V8H10V6H6M16,16H14V18H18V6H14V8H16V16Z" /></g><g id="code-braces"><path d="M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z" /></g><g id="code-brackets"><path d="M15,4V6H18V18H15V20H20V4M4,4V20H9V18H6V6H9V4H4Z" /></g><g id="code-equal"><path d="M6,13H11V15H6M13,13H18V15H13M13,9H18V11H13M6,9H11V11H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-greater-than"><path d="M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-greater-than-or-equal"><path d="M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-less-than"><path d="M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z" /></g><g id="code-less-than-or-equal"><path d="M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-not-equal"><path d="M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-not-equal-variant"><path d="M11,6.5V9.33L8.33,12L11,14.67V17.5L5.5,12M13,6.43L18.57,12L13,17.57V14.74L15.74,12L13,9.26M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-parentheses"><path d="M17.62,3C19.13,5.27 20,8.55 20,12C20,15.44 19.13,18.72 17.62,21L16,19.96C17.26,18.07 18,15.13 18,12C18,8.87 17.26,5.92 16,4.03L17.62,3M6.38,3L8,4.04C6.74,5.92 6,8.87 6,12C6,15.13 6.74,18.08 8,19.96L6.38,21C4.87,18.73 4,15.45 4,12C4,8.55 4.87,5.27 6.38,3Z" /></g><g id="code-string"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M12.5,11H11.5A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 11.5,8H12.5A1.5,1.5 0 0,1 14,9.5H16A3.5,3.5 0 0,0 12.5,6H11.5A3.5,3.5 0 0,0 8,9.5A3.5,3.5 0 0,0 11.5,13H12.5A1.5,1.5 0 0,1 14,14.5A1.5,1.5 0 0,1 12.5,16H11.5A1.5,1.5 0 0,1 10,14.5H8A3.5,3.5 0 0,0 11.5,18H12.5A3.5,3.5 0 0,0 16,14.5A3.5,3.5 0 0,0 12.5,11Z" /></g><g id="code-tags"><path d="M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z" /></g><g id="code-tags-check"><path d="M6.59,3.41L2,8L6.59,12.6L8,11.18L4.82,8L8,4.82L6.59,3.41M12.41,3.41L11,4.82L14.18,8L11,11.18L12.41,12.6L17,8L12.41,3.41M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13L21.59,11.59Z" /></g><g id="codepen"><path d="M19.45,13.29L17.5,12L19.45,10.71M12.77,18.78V15.17L16.13,12.93L18.83,14.74M12,13.83L9.26,12L12,10.17L14.74,12M11.23,18.78L5.17,14.74L7.87,12.93L11.23,15.17M4.55,10.71L6.5,12L4.55,13.29M11.23,5.22V8.83L7.87,11.07L5.17,9.26M12.77,5.22L18.83,9.26L16.13,11.07L12.77,8.83M21,9.16C21,9.15 21,9.13 21,9.12C21,9.1 21,9.08 20.97,9.06C20.97,9.05 20.97,9.03 20.96,9C20.96,9 20.95,9 20.94,8.96C20.94,8.95 20.93,8.94 20.92,8.93C20.92,8.91 20.91,8.89 20.9,8.88C20.89,8.86 20.88,8.85 20.88,8.84C20.87,8.82 20.85,8.81 20.84,8.79C20.83,8.78 20.83,8.77 20.82,8.76A0.04,0.04 0 0,0 20.78,8.72C20.77,8.71 20.76,8.7 20.75,8.69C20.73,8.67 20.72,8.66 20.7,8.65C20.69,8.64 20.68,8.63 20.67,8.62C20.66,8.62 20.66,8.62 20.66,8.61L12.43,3.13C12.17,2.96 11.83,2.96 11.57,3.13L3.34,8.61C3.34,8.62 3.34,8.62 3.33,8.62C3.32,8.63 3.31,8.64 3.3,8.65C3.28,8.66 3.27,8.67 3.25,8.69C3.24,8.7 3.23,8.71 3.22,8.72C3.21,8.73 3.2,8.74 3.18,8.76C3.17,8.77 3.17,8.78 3.16,8.79C3.15,8.81 3.13,8.82 3.12,8.84C3.12,8.85 3.11,8.86 3.1,8.88C3.09,8.89 3.08,8.91 3.08,8.93C3.07,8.94 3.06,8.95 3.06,8.96C3.05,9 3.05,9 3.04,9C3.03,9.03 3.03,9.05 3.03,9.06C3,9.08 3,9.1 3,9.12C3,9.13 3,9.15 3,9.16C3,9.19 3,9.22 3,9.26V14.74C3,14.78 3,14.81 3,14.84C3,14.85 3,14.87 3,14.88C3,14.9 3,14.92 3.03,14.94C3.03,14.95 3.03,14.97 3.04,15C3.05,15 3.05,15 3.06,15.04C3.06,15.05 3.07,15.06 3.08,15.07C3.08,15.09 3.09,15.11 3.1,15.12C3.11,15.14 3.12,15.15 3.12,15.16C3.13,15.18 3.15,15.19 3.16,15.21C3.17,15.22 3.17,15.23 3.18,15.24C3.2,15.25 3.21,15.27 3.22,15.28C3.23,15.29 3.24,15.3 3.25,15.31C3.27,15.33 3.28,15.34 3.3,15.35C3.31,15.36 3.32,15.37 3.33,15.38C3.34,15.38 3.34,15.38 3.34,15.39L11.57,20.87C11.7,20.96 11.85,21 12,21C12.15,21 12.3,20.96 12.43,20.87L20.66,15.39C20.66,15.38 20.66,15.38 20.67,15.38C20.68,15.37 20.69,15.36 20.7,15.35C20.72,15.34 20.73,15.33 20.75,15.31C20.76,15.3 20.77,15.29 20.78,15.28C20.79,15.27 20.8,15.25 20.82,15.24C20.83,15.23 20.83,15.22 20.84,15.21C20.85,15.19 20.87,15.18 20.88,15.16C20.88,15.15 20.89,15.14 20.9,15.12C20.91,15.11 20.92,15.09 20.92,15.07C20.93,15.06 20.94,15.05 20.94,15.04C20.95,15 20.96,15 20.96,15C20.97,14.97 20.97,14.95 20.97,14.94C21,14.92 21,14.9 21,14.88C21,14.87 21,14.85 21,14.84C21,14.81 21,14.78 21,14.74V9.26C21,9.22 21,9.19 21,9.16Z" /></g><g id="coffee"><path d="M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z" /></g><g id="coffee-outline"><path d="M2,21V19H20V21H2M20,8V5H18V8H20M20,3A2,2 0 0,1 22,5V8A2,2 0 0,1 20,10H18V13A4,4 0 0,1 14,17H8A4,4 0 0,1 4,13V3H20M16,5H6V13A2,2 0 0,0 8,15H14A2,2 0 0,0 16,13V5Z" /></g><g id="coffee-to-go"><path d="M3,19V17H17L15.26,15.24L16.67,13.83L20.84,18L16.67,22.17L15.26,20.76L17,19H3M17,8V5H15V8H17M17,3C18.11,3 19,3.9 19,5V8C19,9.11 18.11,10 17,10H15V11A4,4 0 0,1 11,15H7A4,4 0 0,1 3,11V3H17Z" /></g><g id="coin"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,17V16H9V14H13V13H10A1,1 0 0,1 9,12V9A1,1 0 0,1 10,8H11V7H13V8H15V10H11V11H14A1,1 0 0,1 15,12V15A1,1 0 0,1 14,16H13V17H11Z" /></g><g id="coins"><path d="M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18M3,12C3,14.61 4.67,16.83 7,17.65V19.74C3.55,18.85 1,15.73 1,12C1,8.27 3.55,5.15 7,4.26V6.35C4.67,7.17 3,9.39 3,12Z" /></g><g id="collage"><path d="M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H11V3M13,3V11H21V5C21,3.89 20.11,3 19,3M13,13V21H19C20.11,21 21,20.11 21,19V13" /></g><g id="color-helper"><path d="M0,24H24V20H0V24Z" /></g><g id="comment"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9Z" /></g><g id="comment-account"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M16,14V13C16,11.67 13.33,11 12,11C10.67,11 8,11.67 8,13V14H16M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z" /></g><g id="comment-account-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16,14H8V13C8,11.67 10.67,11 12,11C13.33,11 16,11.67 16,13V14M12,6A2,2 0 0,1 14,8A2,2 0 0,1 12,10A2,2 0 0,1 10,8A2,2 0 0,1 12,6Z" /></g><g id="comment-alert"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M13,10V6H11V10H13M13,14V12H11V14H13Z" /></g><g id="comment-alert-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M13,10H11V6H13V10M13,14H11V12H13V14Z" /></g><g id="comment-check"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,15L18,7L16.59,5.58L10,12.17L7.41,9.59L6,11L10,15Z" /></g><g id="comment-check-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16.5,8L11,13.5L7.5,10L8.91,8.59L11,10.67L15.09,6.59L16.5,8Z" /></g><g id="comment-multiple-outline"><path d="M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.9 12.75,23 12.5,23V23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z" /></g><g id="comment-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10Z" /></g><g id="comment-plus-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z" /></g><g id="comment-processing"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M17,11V9H15V11H17M13,11V9H11V11H13M9,11V9H7V11H9Z" /></g><g id="comment-processing-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M17,11H15V9H17V11M13,11H11V9H13V11M9,11H7V9H9V11Z" /></g><g id="comment-question-outline"><path d="M4,2A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8V21A1,1 0 0,0 9,22H9.5V22C9.75,22 10,21.9 10.2,21.71L13.9,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2H4M4,4H20V16H13.08L10,19.08V16H4V4M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69C0.21,7.69 6.57,7.69 11.24,7.69C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z" /></g><g id="comment-remove-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M9.41,6L12,8.59L14.59,6L16,7.41L13.41,10L16,12.59L14.59,14L12,11.41L9.41,14L8,12.59L10.59,10L8,7.41L9.41,6Z" /></g><g id="comment-text"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M5,5V7H19V5H5M5,9V11H13V9H5M5,13V15H15V13H5Z" /></g><g id="comment-text-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M6,7H18V9H6V7M6,11H15V13H6V11Z" /></g><g id="compare"><path d="M19,3H14V5H19V18L14,12V21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,18H5L10,12M10,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H10V23H12V1H10V3Z" /></g><g id="compass"><path d="M14.19,14.19L6,18L9.81,9.81L18,6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,10.9A1.1,1.1 0 0,0 10.9,12A1.1,1.1 0 0,0 12,13.1A1.1,1.1 0 0,0 13.1,12A1.1,1.1 0 0,0 12,10.9Z" /></g><g id="compass-outline"><path d="M7,17L10.2,10.2L17,7L13.8,13.8L7,17M12,11.1A0.9,0.9 0 0,0 11.1,12A0.9,0.9 0 0,0 12,12.9A0.9,0.9 0 0,0 12.9,12A0.9,0.9 0 0,0 12,11.1M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="console"><path d="M20,19V7H4V19H20M20,3A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5C2,3.89 2.9,3 4,3H20M13,17V15H18V17H13M9.58,13L5.57,9H8.4L11.7,12.3C12.09,12.69 12.09,13.33 11.7,13.72L8.42,17H5.59L9.58,13Z" /></g><g id="contact-mail"><path d="M21,8V7L18,9L15,7V8L18,10M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17M22,12H14V6H22" /></g><g id="contacts"><path d="M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z" /></g><g id="content-copy"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" /></g><g id="content-cut"><path d="M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z" /></g><g id="content-duplicate"><path d="M11,17H4A2,2 0 0,1 2,15V3A2,2 0 0,1 4,1H16V3H4V15H11V13L15,16L11,19V17M19,21V7H8V13H6V7A2,2 0 0,1 8,5H19A2,2 0 0,1 21,7V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19Z" /></g><g id="content-paste"><path d="M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z" /></g><g id="content-save"><path d="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" /></g><g id="content-save-all"><path d="M17,7V3H7V7H17M14,17A3,3 0 0,0 17,14A3,3 0 0,0 14,11A3,3 0 0,0 11,14A3,3 0 0,0 14,17M19,1L23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V3A2,2 0 0,1 7,1H19M1,7H3V21H17V23H3A2,2 0 0,1 1,21V7Z" /></g><g id="content-save-settings"><path d="M15,8V4H5V8H15M12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18M17,2L21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V4A2,2 0 0,1 5,2H17M11,22H13V24H11V22M7,22H9V24H7V22M15,22H17V24H15V22Z" /></g><g id="contrast"><path d="M4.38,20.9C3.78,20.71 3.3,20.23 3.1,19.63L19.63,3.1C20.23,3.3 20.71,3.78 20.9,4.38L4.38,20.9M20,16V18H13V16H20M3,6H6V3H8V6H11V8H8V11H6V8H3V6Z" /></g><g id="contrast-box"><path d="M17,15.5H12V17H17M19,19H5L19,5M5.5,7.5H7.5V5.5H9V7.5H11V9H9V11H7.5V9H5.5M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="contrast-circle"><path d="M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z" /></g><g id="cookie"><path d="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z" /></g><g id="copyright"><path d="M10.08,10.86C10.13,10.53 10.24,10.24 10.38,10C10.5,9.74 10.72,9.53 10.97,9.37C11.21,9.22 11.5,9.15 11.88,9.14C12.11,9.15 12.32,9.19 12.5,9.27C12.71,9.36 12.89,9.5 13.03,9.63C13.17,9.78 13.28,9.96 13.37,10.16C13.46,10.36 13.5,10.58 13.5,10.8H15.3C15.28,10.33 15.19,9.9 15,9.5C14.85,9.12 14.62,8.78 14.32,8.5C14,8.22 13.66,8 13.24,7.84C12.82,7.68 12.36,7.61 11.85,7.61C11.2,7.61 10.63,7.72 10.15,7.95C9.67,8.18 9.27,8.5 8.95,8.87C8.63,9.26 8.39,9.71 8.24,10.23C8.09,10.75 8,11.29 8,11.87V12.14C8,12.72 8.08,13.26 8.23,13.78C8.38,14.3 8.62,14.75 8.94,15.13C9.26,15.5 9.66,15.82 10.14,16.04C10.62,16.26 11.19,16.38 11.84,16.38C12.31,16.38 12.75,16.3 13.16,16.15C13.57,16 13.93,15.79 14.24,15.5C14.55,15.25 14.8,14.94 15,14.58C15.16,14.22 15.27,13.84 15.28,13.43H13.5C13.5,13.64 13.43,13.83 13.34,14C13.25,14.19 13.13,14.34 13,14.47C12.83,14.6 12.66,14.7 12.46,14.77C12.27,14.84 12.07,14.86 11.86,14.87C11.5,14.86 11.2,14.79 10.97,14.64C10.72,14.5 10.5,14.27 10.38,14C10.24,13.77 10.13,13.47 10.08,13.14C10.03,12.81 10,12.47 10,12.14V11.87C10,11.5 10.03,11.19 10.08,10.86M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20Z" /></g><g id="counter"><path d="M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H11V6H4M20,18V6H18.76C19,6.54 18.95,7.07 18.95,7.13C18.88,7.8 18.41,8.5 18.24,8.75L15.91,11.3L19.23,11.28L19.24,12.5L14.04,12.47L14,11.47C14,11.47 17.05,8.24 17.2,7.95C17.34,7.67 17.91,6 16.5,6C15.27,6.05 15.41,7.3 15.41,7.3L13.87,7.31C13.87,7.31 13.88,6.65 14.25,6H13V18H15.58L15.57,17.14L16.54,17.13C16.54,17.13 17.45,16.97 17.46,16.08C17.5,15.08 16.65,15.08 16.5,15.08C16.37,15.08 15.43,15.13 15.43,15.95H13.91C13.91,15.95 13.95,13.89 16.5,13.89C19.1,13.89 18.96,15.91 18.96,15.91C18.96,15.91 19,17.16 17.85,17.63L18.37,18H20M8.92,16H7.42V10.2L5.62,10.76V9.53L8.76,8.41H8.92V16Z" /></g><g id="cow"><path d="M10.5,18A0.5,0.5 0 0,1 11,18.5A0.5,0.5 0 0,1 10.5,19A0.5,0.5 0 0,1 10,18.5A0.5,0.5 0 0,1 10.5,18M13.5,18A0.5,0.5 0 0,1 14,18.5A0.5,0.5 0 0,1 13.5,19A0.5,0.5 0 0,1 13,18.5A0.5,0.5 0 0,1 13.5,18M10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M18,18C18,20.21 15.31,22 12,22C8.69,22 6,20.21 6,18C6,17.1 6.45,16.27 7.2,15.6C6.45,14.6 6,13.35 6,12L6.12,10.78C5.58,10.93 4.93,10.93 4.4,10.78C3.38,10.5 1.84,9.35 2.07,8.55C2.3,7.75 4.21,7.6 5.23,7.9C5.82,8.07 6.45,8.5 6.82,8.96L7.39,8.15C6.79,7.05 7,4 10,3L9.91,3.14V3.14C9.63,3.58 8.91,4.97 9.67,6.47C10.39,6.17 11.17,6 12,6C12.83,6 13.61,6.17 14.33,6.47C15.09,4.97 14.37,3.58 14.09,3.14L14,3C17,4 17.21,7.05 16.61,8.15L17.18,8.96C17.55,8.5 18.18,8.07 18.77,7.9C19.79,7.6 21.7,7.75 21.93,8.55C22.16,9.35 20.62,10.5 19.6,10.78C19.07,10.93 18.42,10.93 17.88,10.78L18,12C18,13.35 17.55,14.6 16.8,15.6C17.55,16.27 18,17.1 18,18M12,16C9.79,16 8,16.9 8,18C8,19.1 9.79,20 12,20C14.21,20 16,19.1 16,18C16,16.9 14.21,16 12,16M12,14C13.12,14 14.17,14.21 15.07,14.56C15.65,13.87 16,13 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13 8.35,13.87 8.93,14.56C9.83,14.21 10.88,14 12,14M14.09,3.14V3.14Z" /></g><g id="creation"><path d="M19,1L17.74,3.75L15,5L17.74,6.26L19,9L20.25,6.26L23,5L20.25,3.75M9,4L6.5,9.5L1,12L6.5,14.5L9,20L11.5,14.5L17,12L11.5,9.5M19,15L17.74,17.74L15,19L17.74,20.25L19,23L20.25,20.25L23,19L20.25,17.74" /></g><g id="credit-card"><path d="M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="credit-card-multiple"><path d="M21,8V6H7V8H21M21,16V11H7V16H21M21,4A2,2 0 0,1 23,6V16A2,2 0 0,1 21,18H7C5.89,18 5,17.1 5,16V6C5,4.89 5.89,4 7,4H21M3,20H18V22H3A2,2 0 0,1 1,20V9H3V20Z" /></g><g id="credit-card-off"><path d="M0.93,4.2L2.21,2.93L20,20.72L18.73,22L16.73,20H4C2.89,20 2,19.1 2,18V6C2,5.78 2.04,5.57 2.11,5.38L0.93,4.2M20,8V6H7.82L5.82,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L19.82,18H20V12H13.82L9.82,8H20M4,8H4.73L4,7.27V8M4,12V18H14.73L8.73,12H4Z" /></g><g id="credit-card-plus"><path d="M21,18H24V20H21V23H19V20H16V18H19V15H21V18M19,8V6H3V8H19M19,12H3V18H14V20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13H19V12Z" /></g><g id="credit-card-scan"><path d="M2,4H6V2H2A2,2 0 0,0 0,4V8H2V4M22,2H18V4H22V8H24V4A2,2 0 0,0 22,2M2,16H0V20A2,2 0 0,0 2,22H6V20H2V16M22,20H18V22H22A2,2 0 0,0 24,20V16H22V20M4,8V16A2,2 0 0,0 6,18H18A2,2 0 0,0 20,16V8A2,2 0 0,0 18,6H6A2,2 0 0,0 4,8M6,16V12H18V16H6M18,8V10H6V8H18Z" /></g><g id="crop"><path d="M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z" /></g><g id="crop-free"><path d="M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z" /></g><g id="crop-landscape"><path d="M19,17H5V7H19M19,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H19A2,2 0 0,0 21,17V7C21,5.89 20.1,5 19,5Z" /></g><g id="crop-portrait"><path d="M17,19H7V5H17M17,3H7A2,2 0 0,0 5,5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V5C19,3.89 18.1,3 17,3Z" /></g><g id="crop-rotate"><path d="M7.47,21.5C4.2,19.93 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24C12.18,24 12.39,24 12.61,23.97L8.8,20.15L7.47,21.5M12.05,0C11.82,0 11.61,0 11.39,0.04L15.2,3.85L16.53,2.5C19.8,4.07 22.14,7.24 22.5,11H24C23.5,4.84 18.34,0 12.05,0M16,14H18V8C18,6.89 17.1,6 16,6H10V8H16V14M8,16V4H6V6H4V8H6V16A2,2 0 0,0 8,18H16V20H18V18H20V16H8Z" /></g><g id="crop-square"><path d="M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z" /></g><g id="crosshairs"><path d="M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="crosshairs-gps"><path d="M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="crown"><path d="M5,16L3,5L8.5,12L12,5L15.5,12L21,5L19,16H5M19,19A1,1 0 0,1 18,20H6A1,1 0 0,1 5,19V18H19V19Z" /></g><g id="cube"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15Z" /></g><g id="cube-outline"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z" /></g><g id="cube-send"><path d="M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15" /></g><g id="cube-unfolded"><path d="M6,9V4H13V9H23V16H18V21H11V16H1V9H6M16,16H13V19H16V16M8,9H11V6H8V9M6,14V11H3V14H6M18,11V14H21V11H18M13,11V14H16V11H13M8,11V14H11V11H8Z" /></g><g id="cup"><path d="M18.32,8H5.67L5.23,4H18.77M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z" /></g><g id="cup-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.97,22 5.13,21.23 5,20.23L3.53,6.8L1,4.27M18.32,8L18.77,4H5.82L3.82,2H21L19.29,17.47L9.82,8H18.32Z" /></g><g id="cup-water"><path d="M18.32,8H5.67L5.23,4H18.77M12,19A3,3 0 0,1 9,16C9,14 12,10.6 12,10.6C12,10.6 15,14 15,16A3,3 0 0,1 12,19M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z" /></g><g id="currency-btc"><path d="M4.5,5H8V2H10V5H11.5V2H13.5V5C19,5 19,11 16,11.25C20,11 21,19 13.5,19V22H11.5V19H10V22H8V19H4.5L5,17H6A1,1 0 0,0 7,16V8A1,1 0 0,0 6,7H4.5V5M10,7V11C10,11 14.5,11.25 14.5,9C14.5,6.75 10,7 10,7M10,12.5V17C10,17 15.5,17 15.5,14.75C15.5,12.5 10,12.5 10,12.5Z" /></g><g id="currency-eur"><path d="M7.07,11L7,12L7.07,13H17.35L16.5,15H7.67C8.8,17.36 11.21,19 14,19C16.23,19 18.22,17.96 19.5,16.33V19.12C18,20.3 16.07,21 14,21C10.08,21 6.75,18.5 5.5,15H2L3,13H5.05L5,12L5.05,11H2L3,9H5.5C6.75,5.5 10.08,3 14,3C16.5,3 18.8,4.04 20.43,5.71L19.57,7.75C18.29,6.08 16.27,5 14,5C11.21,5 8.8,6.64 7.67,9H19.04L18.19,11H7.07Z" /></g><g id="currency-gbp"><path d="M6.5,21V19.75C7.44,19.29 8.24,18.57 8.81,17.7C9.38,16.83 9.67,15.85 9.68,14.75L9.66,13.77L9.57,13H7V11H9.4C9.25,10.17 9.16,9.31 9.13,8.25C9.16,6.61 9.64,5.33 10.58,4.41C11.5,3.5 12.77,3 14.32,3C15.03,3 15.64,3.07 16.13,3.2C16.63,3.32 17,3.47 17.31,3.65L16.76,5.39C16.5,5.25 16.19,5.12 15.79,5C15.38,4.9 14.89,4.85 14.32,4.84C13.25,4.86 12.5,5.19 12,5.83C11.5,6.46 11.29,7.28 11.3,8.28L11.4,9.77L11.6,11H15.5V13H11.79C11.88,14 11.84,15 11.65,15.96C11.35,17.16 10.74,18.18 9.83,19H18V21H6.5Z" /></g><g id="currency-inr"><path d="M8,3H18L17,5H13.74C14.22,5.58 14.58,6.26 14.79,7H18L17,9H15C14.75,11.57 12.74,13.63 10.2,13.96V14H9.5L15.5,21H13L7,14V12H9.5V12C11.26,12 12.72,10.7 12.96,9H7L8,7H12.66C12.1,5.82 10.9,5 9.5,5H7L8,3Z" /></g><g id="currency-ngn"><path d="M4,9H6V3H8L11.42,9H16V3H18V9H20V11H18V13H20V15H18V21H16L12.57,15H8V21H6V15H4V13H6V11H4V9M8,9H9.13L8,7.03V9M8,11V13H11.42L10.28,11H8M16,17V15H14.85L16,17M12.56,11L13.71,13H16V11H12.56Z" /></g><g id="currency-rub"><path d="M6,10H7V3H14.5C17,3 19,5 19,7.5C19,10 17,12 14.5,12H9V14H15V16H9V21H7V16H6V14H7V12H6V10M14.5,5H9V10H14.5A2.5,2.5 0 0,0 17,7.5A2.5,2.5 0 0,0 14.5,5Z" /></g><g id="currency-try"><path d="M19,12A9,9 0 0,1 10,21H8V12.77L5,13.87V11.74L8,10.64V8.87L5,9.96V7.84L8,6.74V3H10V6L15,4.2V6.32L10,8.14V9.92L15,8.1V10.23L10,12.05V19A7,7 0 0,0 17,12H19Z" /></g><g id="currency-usd"><path d="M11.8,10.9C9.53,10.31 8.8,9.7 8.8,8.75C8.8,7.66 9.81,6.9 11.5,6.9C13.28,6.9 13.94,7.75 14,9H16.21C16.14,7.28 15.09,5.7 13,5.19V3H10V5.16C8.06,5.58 6.5,6.84 6.5,8.77C6.5,11.08 8.41,12.23 11.2,12.9C13.7,13.5 14.2,14.38 14.2,15.31C14.2,16 13.71,17.1 11.5,17.1C9.44,17.1 8.63,16.18 8.5,15H6.32C6.44,17.19 8.08,18.42 10,18.83V21H13V18.85C14.95,18.5 16.5,17.35 16.5,15.3C16.5,12.46 14.07,11.5 11.8,10.9Z" /></g><g id="currency-usd-off"><path d="M12.5,6.9C14.28,6.9 14.94,7.75 15,9H17.21C17.14,7.28 16.09,5.7 14,5.19V3H11V5.16C10.47,5.28 9.97,5.46 9.5,5.7L11,7.17C11.4,7 11.9,6.9 12.5,6.9M5.33,4.06L4.06,5.33L7.5,8.77C7.5,10.85 9.06,12 11.41,12.68L14.92,16.19C14.58,16.67 13.87,17.1 12.5,17.1C10.44,17.1 9.63,16.18 9.5,15H7.32C7.44,17.19 9.08,18.42 11,18.83V21H14V18.85C14.96,18.67 15.82,18.3 16.45,17.73L18.67,19.95L19.94,18.68L5.33,4.06Z" /></g><g id="cursor-default"><path d="M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z" /></g><g id="cursor-default-outline"><path d="M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z" /></g><g id="cursor-move"><path d="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z" /></g><g id="cursor-pointer"><path d="M10,2A2,2 0 0,1 12,4V8.5C12,8.5 14,8.25 14,9.25C14,9.25 16,9 16,10C16,10 18,9.75 18,10.75C18,10.75 20,10.5 20,11.5V15C20,16 17,21 17,22H9C9,22 7,15 4,13C4,13 3,7 8,12V4A2,2 0 0,1 10,2Z" /></g><g id="cursor-text"><path d="M13,19A1,1 0 0,0 14,20H16V22H13.5C12.95,22 12,21.55 12,21C12,21.55 11.05,22 10.5,22H8V20H10A1,1 0 0,0 11,19V5A1,1 0 0,0 10,4H8V2H10.5C11.05,2 12,2.45 12,3C12,2.45 12.95,2 13.5,2H16V4H14A1,1 0 0,0 13,5V19Z" /></g><g id="database"><path d="M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M4,9V12C4,14.21 7.58,16 12,16C16.42,16 20,14.21 20,12V9C20,11.21 16.42,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C16.42,21 20,19.21 20,17V14C20,16.21 16.42,18 12,18C7.58,18 4,16.21 4,14Z" /></g><g id="database-minus"><path d="M9,3C4.58,3 1,4.79 1,7C1,9.21 4.58,11 9,11C13.42,11 17,9.21 17,7C17,4.79 13.42,3 9,3M1,9V12C1,14.21 4.58,16 9,16C13.42,16 17,14.21 17,12V9C17,11.21 13.42,13 9,13C4.58,13 1,11.21 1,9M1,14V17C1,19.21 4.58,21 9,21C10.41,21 11.79,20.81 13,20.46V17.46C11.79,17.81 10.41,18 9,18C4.58,18 1,16.21 1,14M15,17V19H23V17" /></g><g id="database-plus"><path d="M9,3C4.58,3 1,4.79 1,7C1,9.21 4.58,11 9,11C13.42,11 17,9.21 17,7C17,4.79 13.42,3 9,3M1,9V12C1,14.21 4.58,16 9,16C13.42,16 17,14.21 17,12V9C17,11.21 13.42,13 9,13C4.58,13 1,11.21 1,9M1,14V17C1,19.21 4.58,21 9,21C10.41,21 11.79,20.81 13,20.46V17.46C11.79,17.81 10.41,18 9,18C4.58,18 1,16.21 1,14M18,14V17H15V19H18V22H20V19H23V17H20V14" /></g><g id="debug-step-into"><path d="M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,2V13L17.5,8.5L18.92,9.92L12,16.84L5.08,9.92L6.5,8.5L11,13V2H13Z" /></g><g id="debug-step-out"><path d="M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,16H11V6L6.5,10.5L5.08,9.08L12,2.16L18.92,9.08L17.5,10.5L13,6V16Z" /></g><g id="debug-step-over"><path d="M12,14A2,2 0 0,1 14,16A2,2 0 0,1 12,18A2,2 0 0,1 10,16A2,2 0 0,1 12,14M23.46,8.86L21.87,15.75L15,14.16L18.8,11.78C17.39,9.5 14.87,8 12,8C8.05,8 4.77,10.86 4.12,14.63L2.15,14.28C2.96,9.58 7.06,6 12,6C15.58,6 18.73,7.89 20.5,10.72L23.46,8.86Z" /></g><g id="decimal-decrease"><path d="M12,17L15,20V18H21V16H15V14L12,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z" /></g><g id="decimal-increase"><path d="M22,17L19,20V18H13V16H19V14L22,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M16,5A3,3 0 0,1 19,8V11A3,3 0 0,1 16,14A3,3 0 0,1 13,11V8A3,3 0 0,1 16,5M16,7A1,1 0 0,0 15,8V11A1,1 0 0,0 16,12A1,1 0 0,0 17,11V8A1,1 0 0,0 16,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z" /></g><g id="delete"><path d="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" /></g><g id="delete-circle"><path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M17,7H14.5L13.5,6H10.5L9.5,7H7V9H17V7M9,18H15A1,1 0 0,0 16,17V10H8V17A1,1 0 0,0 9,18Z" /></g><g id="delete-empty"><path d="M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19Z" /></g><g id="delete-forever"><path d="M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z" /></g><g id="delete-sweep"><path d="M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M3,18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8H3V18M14,5H11L10,4H6L5,5H2V7H14V5Z" /></g><g id="delete-variant"><path d="M21.03,3L18,20.31C17.83,21.27 17,22 16,22H8C7,22 6.17,21.27 6,20.31L2.97,3H21.03M5.36,5L8,20H16L18.64,5H5.36M9,18V14H13V18H9M13,13.18L9.82,10L13,6.82L16.18,10L13,13.18Z" /></g><g id="delta"><path d="M12,7.77L18.39,18H5.61L12,7.77M12,4L2,20H22" /></g><g id="deskphone"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,5V19H19V5H15M5,5V9H13V5H5M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M5,14V16H7V14H5M8,14V16H10V14H8M11,14V16H13V14H11M11,17V19H13V17H11M8,17V19H10V17H8M5,17V19H7V17H5Z" /></g><g id="desktop-mac"><path d="M21,14H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10L8,21V22H16V21L14,18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z" /></g><g id="desktop-tower"><path d="M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V6H16V4H8M16,8H8V10H16V8M16,18H14V20H16V18Z" /></g><g id="details"><path d="M6.38,6H17.63L12,16L6.38,6M3,4L12,20L21,4H3Z" /></g><g id="developer-board"><path d="M22,9V7H20V5A2,2 0 0,0 18,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H18A2,2 0 0,0 20,19V17H22V15H20V13H22V11H20V9H22M18,19H4V5H18V19M6,13H11V17H6V13M12,7H16V10H12V7M6,7H11V12H6V7M12,11H16V17H12V11Z" /></g><g id="deviantart"><path d="M6,6H12L14,2H18V6L14.5,13H18V18H12L10,22H6V18L9.5,11H6V6Z" /></g><g id="dialpad"><path d="M12,19A2,2 0 0,0 10,21A2,2 0 0,0 12,23A2,2 0 0,0 14,21A2,2 0 0,0 12,19M6,1A2,2 0 0,0 4,3A2,2 0 0,0 6,5A2,2 0 0,0 8,3A2,2 0 0,0 6,1M6,7A2,2 0 0,0 4,9A2,2 0 0,0 6,11A2,2 0 0,0 8,9A2,2 0 0,0 6,7M6,13A2,2 0 0,0 4,15A2,2 0 0,0 6,17A2,2 0 0,0 8,15A2,2 0 0,0 6,13M18,5A2,2 0 0,0 20,3A2,2 0 0,0 18,1A2,2 0 0,0 16,3A2,2 0 0,0 18,5M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13M18,13A2,2 0 0,0 16,15A2,2 0 0,0 18,17A2,2 0 0,0 20,15A2,2 0 0,0 18,13M18,7A2,2 0 0,0 16,9A2,2 0 0,0 18,11A2,2 0 0,0 20,9A2,2 0 0,0 18,7M12,7A2,2 0 0,0 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9A2,2 0 0,0 12,7M12,1A2,2 0 0,0 10,3A2,2 0 0,0 12,5A2,2 0 0,0 14,3A2,2 0 0,0 12,1Z" /></g><g id="diamond"><path d="M16,9H19L14,16M10,9H14L12,17M5,9H8L10,16M15,4H17L19,7H16M11,4H13L14,7H10M7,4H9L8,7H5M6,2L2,8L12,22L22,8L18,2H6Z" /></g><g id="dice-1"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="dice-2"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="dice-3"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="dice-4"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-5"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-6"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,10A2,2 0 0,0 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,10A2,2 0 0,0 5,12A2,2 0 0,0 7,14A2,2 0 0,0 9,12A2,2 0 0,0 7,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-d20"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M14.93,8.27A2.57,2.57 0 0,1 17.5,10.84V13.5C17.5,14.9 16.35,16.05 14.93,16.05C13.5,16.05 12.36,14.9 12.36,13.5V10.84A2.57,2.57 0 0,1 14.93,8.27M14.92,9.71C14.34,9.71 13.86,10.18 13.86,10.77V13.53C13.86,14.12 14.34,14.6 14.92,14.6C15.5,14.6 16,14.12 16,13.53V10.77C16,10.18 15.5,9.71 14.92,9.71M11.45,14.76V15.96L6.31,15.93V14.91C6.31,14.91 9.74,11.58 9.75,10.57C9.75,9.33 8.73,9.46 8.73,9.46C8.73,9.46 7.75,9.5 7.64,10.71L6.14,10.76C6.14,10.76 6.18,8.26 8.83,8.26C11.2,8.26 11.23,10.04 11.23,10.5C11.23,12.18 8.15,14.77 8.15,14.77L11.45,14.76Z" /></g><g id="dice-d4"><path d="M13.43,15.15H14.29V16.36H13.43V18H11.92V16.36H8.82L8.75,15.41L11.91,10.42H13.43V15.15M10.25,15.15H11.92V12.47L10.25,15.15M22,21H2C1.64,21 1.31,20.81 1.13,20.5C0.95,20.18 0.96,19.79 1.15,19.5L11.15,3C11.5,2.38 12.5,2.38 12.86,3L22.86,19.5C23.04,19.79 23.05,20.18 22.87,20.5C22.69,20.81 22.36,21 22,21M3.78,19H20.23L12,5.43L3.78,19Z" /></g><g id="dice-d6"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M13.39,9.53C10.89,9.5 10.86,11.53 10.86,11.53C10.86,11.53 11.41,10.87 12.53,10.87C13.19,10.87 14.5,11.45 14.55,13.41C14.61,15.47 12.77,16 12.77,16C12.77,16 9.27,16.86 9.3,12.66C9.33,7.94 13.39,8.33 13.39,8.33V9.53M11.95,12.1C11.21,12 10.83,12.78 10.83,12.78L10.85,13.5C10.85,14.27 11.39,14.83 12,14.83C12.61,14.83 13.05,14.27 13.05,13.5C13.05,12.73 12.56,12.1 11.95,12.1Z" /></g><g id="dice-d8"><path d="M12,23C11.67,23 11.37,22.84 11.18,22.57L4.18,12.57C3.94,12.23 3.94,11.77 4.18,11.43L11.18,1.43C11.55,0.89 12.45,0.89 12.82,1.43L19.82,11.43C20.06,11.77 20.06,12.23 19.82,12.57L12.82,22.57C12.63,22.84 12.33,23 12,23M6.22,12L12,20.26L17.78,12L12,3.74L6.22,12M12,8.25C13.31,8.25 14.38,9.2 14.38,10.38C14.38,11.07 14,11.68 13.44,12.07C14.14,12.46 14.6,13.13 14.6,13.9C14.6,15.12 13.44,16.1 12,16.1C10.56,16.1 9.4,15.12 9.4,13.9C9.4,13.13 9.86,12.46 10.56,12.07C10,11.68 9.63,11.07 9.63,10.38C9.63,9.2 10.69,8.25 12,8.25M12,12.65A1.1,1.1 0 0,0 10.9,13.75A1.1,1.1 0 0,0 12,14.85A1.1,1.1 0 0,0 13.1,13.75A1.1,1.1 0 0,0 12,12.65M12,9.5C11.5,9.5 11.1,9.95 11.1,10.5C11.1,11.05 11.5,11.5 12,11.5C12.5,11.5 12.9,11.05 12.9,10.5C12.9,9.95 12.5,9.5 12,9.5Z" /></g><g id="dictionary"><path d="M5.81,2C4.83,2.09 4,3 4,4V20C4,21.05 4.95,22 6,22H18C19.05,22 20,21.05 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6C5.94,2 5.87,2 5.81,2M12,13H13A1,1 0 0,1 14,14V18H13V16H12V18H11V14A1,1 0 0,1 12,13M12,14V15H13V14H12M15,15H18V16L16,19H18V20H15V19L17,16H15V15Z" /></g><g id="directions"><path d="M14,14.5V12H10V15H8V11A1,1 0 0,1 9,10H14V7.5L17.5,11M21.71,11.29L12.71,2.29H12.7C12.31,1.9 11.68,1.9 11.29,2.29L2.29,11.29C1.9,11.68 1.9,12.32 2.29,12.71L11.29,21.71C11.68,22.09 12.31,22.1 12.71,21.71L21.71,12.71C22.1,12.32 22.1,11.68 21.71,11.29Z" /></g><g id="directions-fork"><path d="M3,4V12.5L6,9.5L9,13C10,14 10,15 10,15V21H14V14C14,14 14,13 13.47,12C12.94,11 12,10 12,10L9,6.58L11.5,4M18,4L13.54,8.47L14,9C14,9 14.93,10 15.47,11C15.68,11.4 15.8,11.79 15.87,12.13L21,7" /></g><g id="discord"><path d="M22,24L16.75,19L17.38,21H4.5A2.5,2.5 0 0,1 2,18.5V3.5A2.5,2.5 0 0,1 4.5,1H19.5A2.5,2.5 0 0,1 22,3.5V24M12,6.8C9.32,6.8 7.44,7.95 7.44,7.95C8.47,7.03 10.27,6.5 10.27,6.5L10.1,6.33C8.41,6.36 6.88,7.53 6.88,7.53C5.16,11.12 5.27,14.22 5.27,14.22C6.67,16.03 8.75,15.9 8.75,15.9L9.46,15C8.21,14.73 7.42,13.62 7.42,13.62C7.42,13.62 9.3,14.9 12,14.9C14.7,14.9 16.58,13.62 16.58,13.62C16.58,13.62 15.79,14.73 14.54,15L15.25,15.9C15.25,15.9 17.33,16.03 18.73,14.22C18.73,14.22 18.84,11.12 17.12,7.53C17.12,7.53 15.59,6.36 13.9,6.33L13.73,6.5C13.73,6.5 15.53,7.03 16.56,7.95C16.56,7.95 14.68,6.8 12,6.8M9.93,10.59C10.58,10.59 11.11,11.16 11.1,11.86C11.1,12.55 10.58,13.13 9.93,13.13C9.29,13.13 8.77,12.55 8.77,11.86C8.77,11.16 9.28,10.59 9.93,10.59M14.1,10.59C14.75,10.59 15.27,11.16 15.27,11.86C15.27,12.55 14.75,13.13 14.1,13.13C13.46,13.13 12.94,12.55 12.94,11.86C12.94,11.16 13.45,10.59 14.1,10.59Z" /></g><g id="disk"><path d="M12,14C10.89,14 10,13.1 10,12C10,10.89 10.89,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="disk-alert"><path d="M10,14C8.89,14 8,13.1 8,12C8,10.89 8.89,10 10,10A2,2 0 0,1 12,12A2,2 0 0,1 10,14M10,4A8,8 0 0,0 2,12A8,8 0 0,0 10,20A8,8 0 0,0 18,12A8,8 0 0,0 10,4M20,12H22V7H20M20,16H22V14H20V16Z" /></g><g id="disqus"><path d="M12.08,22C9.63,22 7.39,21.11 5.66,19.63L1.41,20.21L3.05,16.15C2.5,14.88 2.16,13.5 2.16,12C2.16,6.5 6.6,2 12.08,2C17.56,2 22,6.5 22,12C22,17.5 17.56,22 12.08,22M17.5,11.97V11.94C17.5,9.06 15.46,7 11.95,7H8.16V17H11.9C15.43,17 17.5,14.86 17.5,11.97M12,14.54H10.89V9.46H12C13.62,9.46 14.7,10.39 14.7,12V12C14.7,13.63 13.62,14.54 12,14.54Z" /></g><g id="disqus-outline"><path d="M11.9,14.5H10.8V9.5H11.9C13.5,9.5 14.6,10.4 14.6,12C14.6,13.6 13.5,14.5 11.9,14.5M11.9,7H8.1V17H11.8C15.3,17 17.4,14.9 17.4,12V12C17.4,9.1 15.4,7 11.9,7M12,20C10.1,20 8.3,19.3 6.9,18.1L6.2,17.5L4.5,17.7L5.2,16.1L4.9,15.3C4.4,14.2 4.2,13.1 4.2,11.9C4.2,7.5 7.8,3.9 12.1,3.9C16.4,3.9 19.9,7.6 19.9,12C19.9,16.4 16.3,20 12,20M12,2C6.5,2 2.1,6.5 2.1,12C2.1,13.5 2.4,14.9 3,16.2L1.4,20.3L5.7,19.7C7.4,21.2 9.7,22.1 12.1,22.1C17.6,22.1 22,17.6 22,12.1C22,6.6 17.5,2 12,2Z" /></g><g id="division"><path d="M19,13H5V11H19V13M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M12,15A2,2 0 0,1 14,17A2,2 0 0,1 12,19A2,2 0 0,1 10,17A2,2 0 0,1 12,15Z" /></g><g id="division-box"><path d="M17,13V11H7V13H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7M12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16A1,1 0 0,0 12,15Z" /></g><g id="dna"><path d="M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z" /></g><g id="dns"><path d="M7,9A2,2 0 0,1 5,7A2,2 0 0,1 7,5A2,2 0 0,1 9,7A2,2 0 0,1 7,9M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,19A2,2 0 0,1 5,17A2,2 0 0,1 7,15A2,2 0 0,1 9,17A2,2 0 0,1 7,19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z" /></g><g id="do-not-disturb"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,13H7V11H17V13Z" /></g><g id="do-not-disturb-off"><path d="M17,11V13H15.54L20.22,17.68C21.34,16.07 22,14.11 22,12A10,10 0 0,0 12,2C9.89,2 7.93,2.66 6.32,3.78L13.54,11H17M2.27,2.27L1,3.54L3.78,6.32C2.66,7.93 2,9.89 2,12A10,10 0 0,0 12,22C14.11,22 16.07,21.34 17.68,20.22L20.46,23L21.73,21.73L2.27,2.27M7,13V11H8.46L10.46,13H7Z" /></g><g id="dolby"><path d="M2,5V19H22V5H2M6,17H4V7H6C8.86,7.09 11.1,9.33 11,12C11.1,14.67 8.86,16.91 6,17M20,17H18C15.14,16.91 12.9,14.67 13,12C12.9,9.33 15.14,7.09 18,7H20V17Z" /></g><g id="domain"><path d="M18,15H16V17H18M18,11H16V13H18M20,19H12V17H14V15H12V13H14V11H12V9H20M10,7H8V5H10M10,11H8V9H10M10,15H8V13H10M10,19H8V17H10M6,7H4V5H6M6,11H4V9H6M6,15H4V13H6M6,19H4V17H6M12,7V3H2V21H22V7H12Z" /></g><g id="dots-horizontal"><path d="M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z" /></g><g id="dots-vertical"><path d="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" /></g><g id="douban"><path d="M20,6H4V4H20V6M20,18V20H4V18H7.33L6.26,14H5V8H19V14H17.74L16.67,18H20M7,12H17V10H7V12M9.4,18H14.6L15.67,14H8.33L9.4,18Z" /></g><g id="download"><path d="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z" /></g><g id="drag"><path d="M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z" /></g><g id="drag-horizontal"><path d="M3,15V13H5V15H3M3,11V9H5V11H3M7,15V13H9V15H7M7,11V9H9V11H7M11,15V13H13V15H11M11,11V9H13V11H11M15,15V13H17V15H15M15,11V9H17V11H15M19,15V13H21V15H19M19,11V9H21V11H19Z" /></g><g id="drag-vertical"><path d="M9,3H11V5H9V3M13,3H15V5H13V3M9,7H11V9H9V7M13,7H15V9H13V7M9,11H11V13H9V11M13,11H15V13H13V11M9,15H11V17H9V15M13,15H15V17H13V15M9,19H11V21H9V19M13,19H15V21H13V19Z" /></g><g id="drawing"><path d="M8.5,3A5.5,5.5 0 0,1 14,8.5C14,9.83 13.53,11.05 12.74,12H21V21H12V12.74C11.05,13.53 9.83,14 8.5,14A5.5,5.5 0 0,1 3,8.5A5.5,5.5 0 0,1 8.5,3Z" /></g><g id="drawing-box"><path d="M18,18H12V12.21C11.34,12.82 10.47,13.2 9.5,13.2C7.46,13.2 5.8,11.54 5.8,9.5A3.7,3.7 0 0,1 9.5,5.8C11.54,5.8 13.2,7.46 13.2,9.5C13.2,10.47 12.82,11.34 12.21,12H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="dribbble"><path d="M16.42,18.42C16,16.5 15.5,14.73 15,13.17C15.5,13.1 16,13.06 16.58,13.06H16.6V13.06H16.6C17.53,13.06 18.55,13.18 19.66,13.43C19.28,15.5 18.08,17.27 16.42,18.42M12,19.8C10.26,19.8 8.66,19.23 7.36,18.26C7.64,17.81 8.23,16.94 9.18,16.04C10.14,15.11 11.5,14.15 13.23,13.58C13.82,15.25 14.36,17.15 14.77,19.29C13.91,19.62 13,19.8 12,19.8M4.2,12C4.2,11.96 4.2,11.93 4.2,11.89C4.42,11.9 4.71,11.9 5.05,11.9H5.06C6.62,11.89 9.36,11.76 12.14,10.89C12.29,11.22 12.44,11.56 12.59,11.92C10.73,12.54 9.27,13.53 8.19,14.5C7.16,15.46 6.45,16.39 6.04,17C4.9,15.66 4.2,13.91 4.2,12M8.55,5C9.1,5.65 10.18,7.06 11.34,9.25C9,9.96 6.61,10.12 5.18,10.12C5.14,10.12 5.1,10.12 5.06,10.12H5.05C4.81,10.12 4.6,10.12 4.43,10.11C5,7.87 6.5,6 8.55,5M12,4.2C13.84,4.2 15.53,4.84 16.86,5.91C15.84,7.14 14.5,8 13.03,8.65C12,6.67 11,5.25 10.34,4.38C10.88,4.27 11.43,4.2 12,4.2M18.13,7.18C19.1,8.42 19.71,9.96 19.79,11.63C18.66,11.39 17.6,11.28 16.6,11.28V11.28H16.59C15.79,11.28 15.04,11.35 14.33,11.47C14.16,11.05 14,10.65 13.81,10.26C15.39,9.57 16.9,8.58 18.13,7.18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="dribbble-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15.09,16.5C14.81,15.14 14.47,13.91 14.08,12.82L15.2,12.74H15.22V12.74C15.87,12.74 16.59,12.82 17.36,13C17.09,14.44 16.26,15.69 15.09,16.5M12,17.46C10.79,17.46 9.66,17.06 8.76,16.39C8.95,16.07 9.36,15.46 10,14.83C10.7,14.18 11.64,13.5 12.86,13.11C13.28,14.27 13.65,15.6 13.94,17.1C13.33,17.33 12.68,17.46 12,17.46M6.54,12V11.92L7.14,11.93V11.93C8.24,11.93 10.15,11.83 12.1,11.22L12.41,11.94C11.11,12.38 10.09,13.07 9.34,13.76C8.61,14.42 8.12,15.08 7.83,15.5C7.03,14.56 6.54,13.34 6.54,12M9.59,7.11C9.97,7.56 10.73,8.54 11.54,10.08C9.89,10.57 8.23,10.68 7.22,10.68H7.14V10.68H6.7C7.09,9.11 8.17,7.81 9.59,7.11M12,6.54C13.29,6.54 14.47,7 15.41,7.74C14.69,8.6 13.74,9.22 12.72,9.66C12,8.27 11.31,7.28 10.84,6.67C11.21,6.59 11.6,6.54 12,6.54M16.29,8.63C16.97,9.5 17.4,10.57 17.45,11.74C16.66,11.58 15.92,11.5 15.22,11.5V11.5C14.66,11.5 14.13,11.54 13.63,11.63L13.27,10.78C14.37,10.3 15.43,9.61 16.29,8.63M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="drone"><path d="M22,11H21L20,9H13.75L16,12.5H14L10.75,9H4C3.45,9 2,8.55 2,8C2,7.45 3.5,5.5 5.5,5.5C7.5,5.5 7.67,6.5 9,7H21A1,1 0 0,1 22,8V9L22,11M10.75,6.5L14,3H16L13.75,6.5H10.75M18,11V9.5H19.75L19,11H18M3,19A1,1 0 0,1 2,18A1,1 0 0,1 3,17A4,4 0 0,1 7,21A1,1 0 0,1 6,22A1,1 0 0,1 5,21A2,2 0 0,0 3,19M11,21A1,1 0 0,1 10,22A1,1 0 0,1 9,21A6,6 0 0,0 3,15A1,1 0 0,1 2,14A1,1 0 0,1 3,13A8,8 0 0,1 11,21Z" /></g><g id="dropbox"><path d="M12,14.56L16.35,18.16L18.2,16.95V18.3L12,22L5.82,18.3V16.95L7.68,18.16L12,14.56M7.68,2.5L12,6.09L16.32,2.5L22.5,6.5L18.23,9.94L22.5,13.36L16.32,17.39L12,13.78L7.68,17.39L1.5,13.36L5.77,9.94L1.5,6.5L7.68,2.5M12,13.68L18.13,9.94L12,6.19L5.87,9.94L12,13.68Z" /></g><g id="drupal"><path d="M20.47,14.65C20.47,15.29 20.25,16.36 19.83,17.1C19.4,17.85 19.08,18.06 18.44,18.06C17.7,17.95 16.31,15.82 15.36,15.72C14.18,15.72 11.73,18.17 9.71,18.17C8.54,18.17 8.11,17.95 7.79,17.74C7.15,17.31 6.94,16.67 6.94,15.82C6.94,14.22 8.43,12.84 10.24,12.84C12.59,12.84 14.18,15.18 15.36,15.08C16.31,15.08 18.23,13.16 19.19,13.16C20.15,12.95 20.47,14 20.47,14.65M16.63,5.28C15.57,4.64 14.61,4.32 13.54,3.68C12.91,3.25 12.05,2.3 11.31,1.44C11,2.83 10.78,3.36 10.24,3.79C9.18,4.53 8.64,4.85 7.69,5.28C6.94,5.7 3,8.05 3,13.16C3,18.27 7.37,22 12.05,22C16.85,22 21,18.5 21,13.27C21.21,8.05 17.27,5.7 16.63,5.28Z" /></g><g id="duck"><path d="M8.5,5A1.5,1.5 0 0,0 7,6.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 10,6.5A1.5,1.5 0 0,0 8.5,5M10,2A5,5 0 0,1 15,7C15,8.7 14.15,10.2 12.86,11.1C14.44,11.25 16.22,11.61 18,12.5C21,14 22,12 22,12C22,12 21,21 15,21H9C9,21 4,21 4,16C4,13 7,12 6,10C2,10 2,6.5 2,6.5C3,7 4.24,7 5,6.65C5.19,4.05 7.36,2 10,2Z" /></g><g id="dumbbell"><path d="M4.22,14.12L3.5,13.41C2.73,12.63 2.73,11.37 3.5,10.59C4.3,9.8 5.56,9.8 6.34,10.59L8.92,13.16L13.16,8.92L10.59,6.34C9.8,5.56 9.8,4.3 10.59,3.5C11.37,2.73 12.63,2.73 13.41,3.5L14.12,4.22L19.78,9.88L20.5,10.59C21.27,11.37 21.27,12.63 20.5,13.41C19.7,14.2 18.44,14.2 17.66,13.41L15.08,10.84L10.84,15.08L13.41,17.66C14.2,18.44 14.2,19.7 13.41,20.5C12.63,21.27 11.37,21.27 10.59,20.5L9.88,19.78L4.22,14.12M3.16,19.42L4.22,18.36L2.81,16.95C2.42,16.56 2.42,15.93 2.81,15.54C3.2,15.15 3.83,15.15 4.22,15.54L8.46,19.78C8.85,20.17 8.85,20.8 8.46,21.19C8.07,21.58 7.44,21.58 7.05,21.19L5.64,19.78L4.58,20.84L3.16,19.42M19.42,3.16L20.84,4.58L19.78,5.64L21.19,7.05C21.58,7.44 21.58,8.07 21.19,8.46C20.8,8.86 20.17,8.86 19.78,8.46L15.54,4.22C15.15,3.83 15.15,3.2 15.54,2.81C15.93,2.42 16.56,2.42 16.95,2.81L18.36,4.22L19.42,3.16Z" /></g><g id="earth"><path d="M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="earth-box"><path d="M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M15.78,5H19V17.18C18.74,16.38 17.69,15.79 16.8,15.79H15.8V12.79A1,1 0 0,0 14.8,11.79H8.8V9.79H10.8A1,1 0 0,0 11.8,8.79V6.79H13.8C14.83,6.79 15.67,6 15.78,5M5,10.29L9.8,14.79V15.79C9.8,16.9 10.7,17.79 11.8,17.79V19H5V10.29Z" /></g><g id="earth-box-off"><path d="M23,4.27L21,6.27V19A2,2 0 0,1 19,21H6.27L4.27,23L3,21.72L21.72,3L23,4.27M5,3H19.18L17.18,5H15.78C15.67,6 14.83,6.79 13.8,6.79H11.8V8.79C11.8,9.35 11.35,9.79 10.8,9.79H8.8V11.79H10.38L8.55,13.62L5,10.29V17.18L3,19.18V5C3,3.89 3.89,3 5,3M11.8,19V17.79C11.17,17.79 10.6,17.5 10.23,17.04L8.27,19H11.8M15.8,12.79V15.79H16.8C17.69,15.79 18.74,16.38 19,17.18V8.27L15.33,11.94C15.61,12.12 15.8,12.43 15.8,12.79Z" /></g><g id="earth-off"><path d="M22,5.27L20.5,6.75C21.46,8.28 22,10.07 22,12A10,10 0 0,1 12,22C10.08,22 8.28,21.46 6.75,20.5L5.27,22L4,20.72L20.72,4L22,5.27M17.9,17.39C19.2,15.97 20,14.08 20,12C20,10.63 19.66,9.34 19.05,8.22L14.83,12.44C14.94,12.6 15,12.79 15,13V16H16C16.89,16 17.64,16.59 17.9,17.39M11,19.93V18C10.5,18 10.07,17.83 9.73,17.54L8.22,19.05C9.07,19.5 10,19.8 11,19.93M15,4.59V5A2,2 0 0,1 13,7H11V9A1,1 0 0,1 10,10H8V12H10.18L8.09,14.09L4.21,10.21C4.08,10.78 4,11.38 4,12C4,13.74 4.56,15.36 5.5,16.67L4.08,18.1C2.77,16.41 2,14.3 2,12A10,10 0 0,1 12,2C14.3,2 16.41,2.77 18.1,4.08L16.67,5.5C16.16,5.14 15.6,4.83 15,4.59Z" /></g><g id="edge"><path d="M2.74,10.81C3.83,-1.36 22.5,-1.36 21.2,13.56H8.61C8.61,17.85 14.42,19.21 19.54,16.31V20.53C13.25,23.88 5,21.43 5,14.09C5,8.58 9.97,6.81 9.97,6.81C9.97,6.81 8.58,8.58 8.54,10.05H15.7C15.7,2.93 5.9,5.57 2.74,10.81Z" /></g><g id="eject"><path d="M12,5L5.33,15H18.67M5,17H19V19H5V17Z" /></g><g id="elevation-decline"><path d="M21,21H3V11.25L9.45,15L13.22,12.8L21,17.29V21M3,8.94V6.75L9.45,10.5L13.22,8.3L21,12.79V15L13.22,10.5L9.45,12.67L3,8.94Z" /></g><g id="elevation-rise"><path d="M3,21V17.29L10.78,12.8L14.55,15L21,11.25V21H3M21,8.94L14.55,12.67L10.78,10.5L3,15V12.79L10.78,8.3L14.55,10.5L21,6.75V8.94Z" /></g><g id="elevator"><path d="M7,2L11,6H8V10H6V6H3L7,2M17,10L13,6H16V2H18V6H21L17,10M7,12H17A2,2 0 0,1 19,14V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V14A2,2 0 0,1 7,12M7,14V20H17V14H7Z" /></g><g id="email"><path d="M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="email-alert"><path d="M16,9V7L10,11L4,7V9L10,13L16,9M16,5A2,2 0 0,1 18,7V16A2,2 0 0,1 16,18H4C2.89,18 2,17.1 2,16V7A2,2 0 0,1 4,5H16M20,12V7H22V12H20M20,16V14H22V16H20Z" /></g><g id="email-open"><path d="M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z" /></g><g id="email-open-outline"><path d="M12,15.36L4,10.36V18H20V10.36L12,15.36M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z" /></g><g id="email-outline"><path d="M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M20,18H4V8L12,13L20,8V18M20,6L12,11L4,6V6H20V6Z" /></g><g id="email-secure"><path d="M20.5,0A2.5,2.5 0 0,1 23,2.5V3A1,1 0 0,1 24,4V8A1,1 0 0,1 23,9H18A1,1 0 0,1 17,8V4A1,1 0 0,1 18,3V2.5A2.5,2.5 0 0,1 20.5,0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0 0,0 19,2.5V3H22V2.5A1.5,1.5 0 0,0 20.5,1Z" /></g><g id="email-variant"><path d="M12,13L2,6.76V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V6.75L12,13M22,18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V9.11L4,10.36V18H20V10.36L22,9.11V18Z" /></g><g id="emby"><path d="M11,2L6,7L7,8L2,13L7,18L8,17L13,22L18,17L17,16L22,11L17,6L16,7L11,2M10,8.5L16,12L10,15.5V8.5Z" /></g><g id="emoticon"><path d="M12,17.5C14.33,17.5 16.3,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5M8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11M15.5,11A1.5,1.5 0 0,0 17,9.5A1.5,1.5 0 0,0 15.5,8A1.5,1.5 0 0,0 14,9.5A1.5,1.5 0 0,0 15.5,11M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="emoticon-cool"><path d="M19,10C19,11.38 16.88,12.5 15.5,12.5C14.12,12.5 12.75,11.38 12.75,10H11.25C11.25,11.38 9.88,12.5 8.5,12.5C7.12,12.5 5,11.38 5,10H4.25C4.09,10.64 4,11.31 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,11.31 19.91,10.64 19.75,10H19M12,4C9.04,4 6.45,5.61 5.07,8H18.93C17.55,5.61 14.96,4 12,4M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-dead"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16.18,7.76L15.12,8.82L14.06,7.76L13,8.82L14.06,9.88L13,10.94L14.06,12L15.12,10.94L16.18,12L17.24,10.94L16.18,9.88L17.24,8.82L16.18,7.76M7.82,12L8.88,10.94L9.94,12L11,10.94L9.94,9.88L11,8.82L9.94,7.76L8.88,8.82L7.82,7.76L6.76,8.82L7.82,9.88L6.76,10.94L7.82,12M12,14C9.67,14 7.69,15.46 6.89,17.5H17.11C16.31,15.46 14.33,14 12,14Z" /></g><g id="emoticon-devil"><path d="M1.5,2.09C2.4,3 3.87,3.73 5.69,4.25C7.41,2.84 9.61,2 12,2C14.39,2 16.59,2.84 18.31,4.25C20.13,3.73 21.6,3 22.5,2.09C22.47,3.72 21.65,5.21 20.28,6.4C21.37,8 22,9.92 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,9.92 2.63,8 3.72,6.4C2.35,5.21 1.53,3.72 1.5,2.09M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5L10.5,10M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-excited"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,9.94L14.06,11L15.12,9.94L16.18,11L17.24,9.94L15.12,7.82L13,9.94M8.88,9.94L9.94,11L11,9.94L8.88,7.82L6.76,9.94L7.82,11L8.88,9.94M12,17.5C14.33,17.5 16.31,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5Z" /></g><g id="emoticon-happy"><path d="M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-neutral"><path d="M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,14H15A1,1 0 0,1 16,15A1,1 0 0,1 15,16H9A1,1 0 0,1 8,15A1,1 0 0,1 9,14Z" /></g><g id="emoticon-poop"><path d="M9,11C9.55,11 10,11.9 10,13C10,14.1 9.55,15 9,15C8.45,15 8,14.1 8,13C8,11.9 8.45,11 9,11M15,11C15.55,11 16,11.9 16,13C16,14.1 15.55,15 15,15C14.45,15 14,14.1 14,13C14,11.9 14.45,11 15,11M9.75,1.75C9.75,1.75 16,4 15,8C15,8 19,8 17.25,11.5C17.25,11.5 21.46,11.94 20.28,15.34C19,16.53 18.7,16.88 17.5,17.75L20.31,16.14C21.35,16.65 24.37,18.47 21,21C17,24 11,21.25 9,21.25C7,21.25 5,22 4,22C3,22 2,21 2,19C2,17 4,16 5,16C5,16 2,13 7,11C7,11 5,8 9,7C9,7 8,6 9,5C10,4 9.75,2.75 9.75,1.75M8,17C9.33,18.17 10.67,19.33 12,19.33C13.33,19.33 14.67,18.17 16,17H8M9,10C7.9,10 7,11.34 7,13C7,14.66 7.9,16 9,16C10.1,16 11,14.66 11,13C11,11.34 10.1,10 9,10M15,10C13.9,10 13,11.34 13,13C13,14.66 13.9,16 15,16C16.1,16 17,14.66 17,13C17,11.34 16.1,10 15,10Z" /></g><g id="emoticon-sad"><path d="M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z" /></g><g id="emoticon-tongue"><path d="M9,8A2,2 0 0,1 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10C8.26,10 7.61,10.4 7.27,11C7.1,10.71 7,10.36 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10C17,10.36 16.9,10.71 16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10A2,2 0 0,1 15,8M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,13H15A1,1 0 0,1 16,14A1,1 0 0,1 15,15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H9A1,1 0 0,1 8,14A1,1 0 0,1 9,13Z" /></g><g id="engine"><path d="M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z" /></g><g id="engine-outline"><path d="M8,10H16V18H11L9,16H7V11M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z" /></g><g id="equal"><path d="M19,10H5V8H19V10M19,16H5V14H19V16Z" /></g><g id="equal-box"><path d="M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z" /></g><g id="eraser"><path d="M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z" /></g><g id="eraser-variant"><path d="M15.14,3C14.63,3 14.12,3.2 13.73,3.59L2.59,14.73C1.81,15.5 1.81,16.77 2.59,17.56L5.03,20H12.69L21.41,11.27C22.2,10.5 22.2,9.23 21.41,8.44L16.56,3.59C16.17,3.2 15.65,3 15.14,3M17,18L15,20H22V18" /></g><g id="escalator"><path d="M20,8H18.95L6.95,20H4A2,2 0 0,1 2,18A2,2 0 0,1 4,16H5.29L7,14.29V10A1,1 0 0,1 8,9H9A1,1 0 0,1 10,10V11.29L17.29,4H20A2,2 0 0,1 22,6A2,2 0 0,1 20,8M8.5,5A1.5,1.5 0 0,1 10,6.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 7,6.5A1.5,1.5 0 0,1 8.5,5Z" /></g><g id="ethernet"><path d="M7,15H9V18H11V15H13V18H15V15H17V18H19V9H15V6H9V9H5V18H7V15M4.38,3H19.63C20.94,3 22,4.06 22,5.38V19.63A2.37,2.37 0 0,1 19.63,22H4.38C3.06,22 2,20.94 2,19.63V5.38C2,4.06 3.06,3 4.38,3Z" /></g><g id="ethernet-cable"><path d="M11,3V7H13V3H11M8,4V11H16V4H14V8H10V4H8M10,12V22H14V12H10Z" /></g><g id="ethernet-cable-off"><path d="M11,3H13V7H11V3M8,4H10V8H14V4H16V11H12.82L8,6.18V4M20,20.72L18.73,22L14,17.27V22H10V13.27L2,5.27L3.28,4L20,20.72Z" /></g><g id="etsy"><path d="M6.72,20.78C8.23,20.71 10.07,20.78 11.87,20.78C13.72,20.78 15.62,20.66 17.12,20.78C17.72,20.83 18.28,21.19 18.77,20.87C19.16,20.38 18.87,19.71 18.96,19.05C19.12,17.78 20.28,16.27 18.59,15.95C17.87,16.61 18.35,17.23 17.95,18.05C17.45,19.03 15.68,19.37 14,19.5C12.54,19.62 10,19.76 9.5,18.77C9.04,17.94 9.29,16.65 9.29,15.58C9.29,14.38 9.16,13.22 9.5,12.3C11.32,12.43 13.7,11.69 15,12.5C15.87,13 15.37,14.06 16.38,14.4C17.07,14.21 16.7,13.32 16.66,12.5C16.63,11.94 16.63,11.19 16.66,10.57C16.69,9.73 17,8.76 16.1,8.74C15.39,9.3 15.93,10.23 15.18,10.75C14.95,10.92 14.43,11 14.08,11C12.7,11.17 10.54,11.05 9.38,10.84C9.23,9.16 9.24,6.87 9.38,5.19C10,4.57 11.45,4.54 12.42,4.55C14.13,4.55 16.79,4.7 17.3,5.55C17.58,6 17.36,7 17.85,7.1C18.85,7.33 18.36,5.55 18.41,4.73C18.44,4.11 18.71,3.72 18.59,3.27C18.27,2.83 17.79,3.05 17.5,3.09C14.35,3.5 9.6,3.27 6.26,3.27C5.86,3.27 5.16,3.07 4.88,3.54C4.68,4.6 6.12,4.16 6.62,4.73C6.79,4.91 7.03,5.73 7.08,6.28C7.23,7.74 7.08,9.97 7.08,12.12C7.08,14.38 7.26,16.67 7.08,18.05C7,18.53 6.73,19.3 6.62,19.41C6,20.04 4.34,19.35 4.5,20.69C5.09,21.08 5.93,20.82 6.72,20.78Z" /></g><g id="ev-station"><path d="M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M8,18V13.5H6L10,6V11H12L8,18Z" /></g><g id="evernote"><path d="M15.09,11.63C15.09,11.63 15.28,10.35 16,10.35C16.76,10.35 17.78,12.06 17.78,12.06C17.78,12.06 15.46,11.63 15.09,11.63M19,4.69C18.64,4.09 16.83,3.41 15.89,3.41C14.96,3.41 13.5,3.41 13.5,3.41C13.5,3.41 12.7,2 10.88,2C9.05,2 9.17,2.81 9.17,3.5V6.32L8.34,7.19H4.5C4.5,7.19 3.44,7.91 3.44,9.44C3.44,11 3.92,16.35 7.13,16.85C10.93,17.43 11.58,15.67 11.58,15.46C11.58,14.56 11.6,13.21 11.6,13.21C11.6,13.21 12.71,15.33 14.39,15.33C16.07,15.33 17.04,16.3 17.04,17.29C17.04,18.28 17.04,19.13 17.04,19.13C17.04,19.13 17,20.28 16,20.28C15,20.28 13.89,20.28 13.89,20.28C13.89,20.28 13.2,19.74 13.2,19C13.2,18.25 13.53,18.05 13.93,18.05C14.32,18.05 14.65,18.09 14.65,18.09V16.53C14.65,16.53 11.47,16.5 11.47,18.94C11.47,21.37 13.13,22 14.46,22C15.8,22 16.63,22 16.63,22C16.63,22 20.56,21.5 20.56,13.75C20.56,6 19.33,5.28 19,4.69M7.5,6.31H4.26L8.32,2.22V5.5L7.5,6.31Z" /></g><g id="exclamation"><path d="M11,4.5H13V15.5H11V4.5M13,17.5V19.5H11V17.5H13Z" /></g><g id="exit-to-app"><path d="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z" /></g><g id="export"><path d="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" /></g><g id="eye"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z" /></g><g id="eye-off"><path d="M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z" /></g><g id="eye-outline"><path d="M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M3.93,12C5.5,14.97 8.58,16.83 12,16.83C15.42,16.83 18.5,14.97 20.07,12C18.5,9.03 15.42,7.17 12,7.17C8.58,7.17 5.5,9.03 3.93,12M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5Z" /></g><g id="eye-outline-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M3.93,12C5.5,14.97 8.58,16.83 12,16.83C12.5,16.83 13,16.79 13.45,16.72L11.72,15C10.29,14.85 9.15,13.71 9,12.28L6.07,9.34C5.21,10.07 4.5,10.97 3.93,12M20.07,12C18.5,9.03 15.42,7.17 12,7.17C11.09,7.17 10.21,7.3 9.37,7.55L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.11,15.29C18.33,14.46 19.35,13.35 20.07,12Z" /></g><g id="eyedropper"><path d="M19.35,11.72L17.22,13.85L15.81,12.43L8.1,20.14L3.5,22L2,20.5L3.86,15.9L11.57,8.19L10.15,6.78L12.28,4.65L19.35,11.72M16.76,3C17.93,1.83 19.83,1.83 21,3C22.17,4.17 22.17,6.07 21,7.24L19.08,9.16L14.84,4.92L16.76,3M5.56,17.03L4.5,19.5L6.97,18.44L14.4,11L13,9.6L5.56,17.03Z" /></g><g id="eyedropper-variant"><path d="M6.92,19L5,17.08L13.06,9L15,10.94M20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L13.84,6.41L11.91,4.5L10.5,5.91L11.92,7.33L3,16.25V21H7.75L16.67,12.08L18.09,13.5L19.5,12.09L17.58,10.17L20.7,7.05C21.1,6.65 21.1,6 20.71,5.63Z" /></g><g id="face"><path d="M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,11.71 4,11.42 4.05,11.14C6.41,10.09 8.28,8.16 9.26,5.77C11.07,8.33 14.05,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20Z" /></g><g id="face-profile"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,8.39C13.57,9.4 15.42,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20C9,20 6.39,18.34 5,15.89L6.75,14V13A1.25,1.25 0 0,1 8,11.75A1.25,1.25 0 0,1 9.25,13V14H12M16,11.75A1.25,1.25 0 0,0 14.75,13A1.25,1.25 0 0,0 16,14.25A1.25,1.25 0 0,0 17.25,13A1.25,1.25 0 0,0 16,11.75Z" /></g><g id="facebook"><path d="M17,2V2H17V6H15C14.31,6 14,6.81 14,7.5V10H14L17,10V14H14V22H10V14H7V10H10V6A4,4 0 0,1 14,2H17Z" /></g><g id="facebook-box"><path d="M19,4V7H17A1,1 0 0,0 16,8V10H19V13H16V20H13V13H11V10H13V7.5C13,5.56 14.57,4 16.5,4M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="facebook-messenger"><path d="M12,2C6.5,2 2,6.14 2,11.25C2,14.13 3.42,16.7 5.65,18.4L5.71,22L9.16,20.12L9.13,20.11C10.04,20.36 11,20.5 12,20.5C17.5,20.5 22,16.36 22,11.25C22,6.14 17.5,2 12,2M13.03,14.41L10.54,11.78L5.5,14.41L10.88,8.78L13.46,11.25L18.31,8.78L13.03,14.41Z" /></g><g id="factory"><path d="M4,18V20H8V18H4M4,14V16H14V14H4M10,18V20H14V18H10M16,14V16H20V14H16M16,18V20H20V18H16M2,22V8L7,12V8L12,12V8L17,12L18,2H21L22,12V22H2Z" /></g><g id="fan"><path d="M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12.5,2C17,2 17.11,5.57 14.75,6.75C13.76,7.24 13.32,8.29 13.13,9.22C13.61,9.42 14.03,9.73 14.35,10.13C18.05,8.13 22.03,8.92 22.03,12.5C22.03,17 18.46,17.1 17.28,14.73C16.78,13.74 15.72,13.3 14.79,13.11C14.59,13.59 14.28,14 13.88,14.34C15.87,18.03 15.08,22 11.5,22C7,22 6.91,18.42 9.27,17.24C10.25,16.75 10.69,15.71 10.89,14.79C10.4,14.59 9.97,14.27 9.65,13.87C5.96,15.85 2,15.07 2,11.5C2,7 5.56,6.89 6.74,9.26C7.24,10.25 8.29,10.68 9.22,10.87C9.41,10.39 9.73,9.97 10.14,9.65C8.15,5.96 8.94,2 12.5,2Z" /></g><g id="fast-forward"><path d="M13,6V18L21.5,12M4,18L12.5,12L4,6V18Z" /></g><g id="fast-forward-outline"><path d="M15,9.9L18,12L15,14.1V9.9M6,9.9L9,12L6,14.1V9.9M13,6V18L21.5,12L13,6M4,6V18L12.5,12L4,6Z" /></g><g id="fax"><path d="M6,2A1,1 0 0,0 5,3V7H6V5H8V4H6V3H8V2H6M11,2A1,1 0 0,0 10,3V7H11V5H12V7H13V3A1,1 0 0,0 12,2H11M15,2L16.42,4.5L15,7H16.13L17,5.5L17.87,7H19L17.58,4.5L19,2H17.87L17,3.5L16.13,2H15M11,3H12V4H11V3M5,9A3,3 0 0,0 2,12V18H6V22H18V18H22V12A3,3 0 0,0 19,9H5M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11M8,15H16V20H8V15Z" /></g><g id="feather"><path d="M22,2C22,2 14.36,1.63 8.34,9.88C3.72,16.21 2,22 2,22L3.94,21C5.38,18.5 6.13,17.47 7.54,16C10.07,16.74 12.71,16.65 15,14C13,13.44 11.4,13.57 9.04,13.81C11.69,12 13.5,11.6 16,12L17,10C15.2,9.66 14,9.63 12.22,10.04C14.19,8.65 15.56,7.87 18,8L19.21,6.07C17.65,5.96 16.71,6.13 14.92,6.57C16.53,5.11 18,4.45 20.14,4.32C20.14,4.32 21.19,2.43 22,2Z" /></g><g id="ferry"><path d="M6,6H18V9.96L12,8L6,9.96M3.94,19H4C5.6,19 7,18.12 8,17C9,18.12 10.4,19 12,19C13.6,19 15,18.12 16,17C17,18.12 18.4,19 20,19H20.05L21.95,12.31C22.03,12.06 22,11.78 21.89,11.54C21.76,11.3 21.55,11.12 21.29,11.04L20,10.62V6C20,4.89 19.1,4 18,4H15V1H9V4H6A2,2 0 0,0 4,6V10.62L2.71,11.04C2.45,11.12 2.24,11.3 2.11,11.54C2,11.78 1.97,12.06 2.05,12.31M20,21C18.61,21 17.22,20.53 16,19.67C13.56,21.38 10.44,21.38 8,19.67C6.78,20.53 5.39,21 4,21H2V23H4C5.37,23 6.74,22.65 8,22C10.5,23.3 13.5,23.3 16,22C17.26,22.65 18.62,23 20,23H22V21H20Z" /></g><g id="file"><path d="M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z" /></g><g id="file-chart"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M7,20H9V14H7V20M11,20H13V12H11V20M15,20H17V16H15V20Z" /></g><g id="file-check"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M10.45,18.46L15.2,13.71L14.03,12.3L10.45,15.88L8.86,14.3L7.7,15.46L10.45,18.46Z" /></g><g id="file-cloud"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15.68,15C15.34,13.3 13.82,12 12,12C10.55,12 9.3,12.82 8.68,14C7.17,14.18 6,15.45 6,17A3,3 0 0,0 9,20H15.5A2.5,2.5 0 0,0 18,17.5C18,16.18 16.97,15.11 15.68,15Z" /></g><g id="file-delimited"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M14,15V11H10V15H12.3C12.6,17 12,18 9.7,19.38L10.85,20.2C13,19 14,16 14,15Z" /></g><g id="file-document"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z" /></g><g id="file-document-box"><path d="M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-excel"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M17,11H13V13H14L12,14.67L10,13H11V11H7V13H8L11,15.5L8,18H7V20H11V18H10L12,16.33L14,18H13V20H17V18H16L13,15.5L16,13H17V11Z" /></g><g id="file-excel-box"><path d="M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-export"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M8.93,12.22H16V19.29L13.88,17.17L11.05,20L8.22,17.17L11.05,14.35" /></g><g id="file-find"><path d="M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10A3,3 0 0,0 9,13M20,19.59V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18C18.45,22 18.85,21.85 19.19,21.6L14.76,17.17C13.96,17.69 13,18 12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13C17,14 16.69,14.96 16.17,15.75L20,19.59Z" /></g><g id="file-hidden"><path d="M13,9H14V11H11V7H13V9M18.5,9L16.38,6.88L17.63,5.63L20,8V10H18V11H15V9H18.5M13,3.5V2H12V4H13V6H11V4H9V2H8V4H6V5H4V4C4,2.89 4.89,2 6,2H14L16.36,4.36L15.11,5.61L13,3.5M20,20A2,2 0 0,1 18,22H16V20H18V19H20V20M18,15H20V18H18V15M12,22V20H15V22H12M8,22V20H11V22H8M6,22C4.89,22 4,21.1 4,20V18H6V20H7V22H6M4,14H6V17H4V14M4,10H6V13H4V10M18,11H20V14H18V11M4,6H6V9H4V6Z" /></g><g id="file-image"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z" /></g><g id="file-import"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M10.05,11.22L12.88,14.05L15,11.93V19H7.93L10.05,16.88L7.22,14.05" /></g><g id="file-lock"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14V15H16V19H8V15H9V14C9,12.36 10.34,11 12,11M12,13A1,1 0 0,0 11,14V15H13V14C13,13.47 12.55,13 12,13Z" /></g><g id="file-multiple"><path d="M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z" /></g><g id="file-music"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M9,16A2,2 0 0,0 7,18A2,2 0 0,0 9,20A2,2 0 0,0 11,18V13H14V11H10V16.27C9.71,16.1 9.36,16 9,16Z" /></g><g id="file-outline"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11,4H6V20H11L18,20V11H11V4Z" /></g><g id="file-pdf"><path d="M14,9H19.5L14,3.5V9M7,2H15L21,8V20A2,2 0 0,1 19,22H7C5.89,22 5,21.1 5,20V4A2,2 0 0,1 7,2M11.93,12.44C12.34,13.34 12.86,14.08 13.46,14.59L13.87,14.91C13,15.07 11.8,15.35 10.53,15.84V15.84L10.42,15.88L10.92,14.84C11.37,13.97 11.7,13.18 11.93,12.44M18.41,16.25C18.59,16.07 18.68,15.84 18.69,15.59C18.72,15.39 18.67,15.2 18.57,15.04C18.28,14.57 17.53,14.35 16.29,14.35L15,14.42L14.13,13.84C13.5,13.32 12.93,12.41 12.53,11.28L12.57,11.14C12.9,9.81 13.21,8.2 12.55,7.54C12.39,7.38 12.17,7.3 11.94,7.3H11.7C11.33,7.3 11,7.69 10.91,8.07C10.54,9.4 10.76,10.13 11.13,11.34V11.35C10.88,12.23 10.56,13.25 10.05,14.28L9.09,16.08L8.2,16.57C7,17.32 6.43,18.16 6.32,18.69C6.28,18.88 6.3,19.05 6.37,19.23L6.4,19.28L6.88,19.59L7.32,19.7C8.13,19.7 9.05,18.75 10.29,16.63L10.47,16.56C11.5,16.23 12.78,16 14.5,15.81C15.53,16.32 16.74,16.55 17.5,16.55C17.94,16.55 18.24,16.44 18.41,16.25M18,15.54L18.09,15.65C18.08,15.75 18.05,15.76 18,15.78H17.96L17.77,15.8C17.31,15.8 16.6,15.61 15.87,15.29C15.96,15.19 16,15.19 16.1,15.19C17.5,15.19 17.9,15.44 18,15.54M8.83,17C8.18,18.19 7.59,18.85 7.14,19C7.19,18.62 7.64,17.96 8.35,17.31L8.83,17M11.85,10.09C11.62,9.19 11.61,8.46 11.78,8.04L11.85,7.92L12,7.97C12.17,8.21 12.19,8.53 12.09,9.07L12.06,9.23L11.9,10.05L11.85,10.09Z" /></g><g id="file-pdf-box"><path d="M11.43,10.94C11.2,11.68 10.87,12.47 10.42,13.34C10.22,13.72 10,14.08 9.92,14.38L10.03,14.34V14.34C11.3,13.85 12.5,13.57 13.37,13.41C13.22,13.31 13.08,13.2 12.96,13.09C12.36,12.58 11.84,11.84 11.43,10.94M17.91,14.75C17.74,14.94 17.44,15.05 17,15.05C16.24,15.05 15,14.82 14,14.31C12.28,14.5 11,14.73 9.97,15.06C9.92,15.08 9.86,15.1 9.79,15.13C8.55,17.25 7.63,18.2 6.82,18.2C6.66,18.2 6.5,18.16 6.38,18.09L5.9,17.78L5.87,17.73C5.8,17.55 5.78,17.38 5.82,17.19C5.93,16.66 6.5,15.82 7.7,15.07C7.89,14.93 8.19,14.77 8.59,14.58C8.89,14.06 9.21,13.45 9.55,12.78C10.06,11.75 10.38,10.73 10.63,9.85V9.84C10.26,8.63 10.04,7.9 10.41,6.57C10.5,6.19 10.83,5.8 11.2,5.8H11.44C11.67,5.8 11.89,5.88 12.05,6.04C12.71,6.7 12.4,8.31 12.07,9.64C12.05,9.7 12.04,9.75 12.03,9.78C12.43,10.91 13,11.82 13.63,12.34C13.89,12.54 14.18,12.74 14.5,12.92C14.95,12.87 15.38,12.85 15.79,12.85C17.03,12.85 17.78,13.07 18.07,13.54C18.17,13.7 18.22,13.89 18.19,14.09C18.18,14.34 18.09,14.57 17.91,14.75M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M17.5,14.04C17.4,13.94 17,13.69 15.6,13.69C15.53,13.69 15.46,13.69 15.37,13.79C16.1,14.11 16.81,14.3 17.27,14.3C17.34,14.3 17.4,14.29 17.46,14.28H17.5C17.55,14.26 17.58,14.25 17.59,14.15C17.57,14.12 17.55,14.08 17.5,14.04M8.33,15.5C8.12,15.62 7.95,15.73 7.85,15.81C7.14,16.46 6.69,17.12 6.64,17.5C7.09,17.35 7.68,16.69 8.33,15.5M11.35,8.59L11.4,8.55C11.47,8.23 11.5,7.95 11.56,7.73L11.59,7.57C11.69,7 11.67,6.71 11.5,6.47L11.35,6.42C11.33,6.45 11.3,6.5 11.28,6.54C11.11,6.96 11.12,7.69 11.35,8.59Z" /></g><g id="file-powerpoint"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M8,11V13H9V19H8V20H12V19H11V17H13A3,3 0 0,0 16,14A3,3 0 0,0 13,11H8M13,13A1,1 0 0,1 14,14A1,1 0 0,1 13,15H11V13H13Z" /></g><g id="file-powerpoint-box"><path d="M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z" /></g><g id="file-presentation-box"><path d="M19,16H5V8H19M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-restore"><path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12,18C9.95,18 8.19,16.76 7.42,15H9.13C9.76,15.9 10.81,16.5 12,16.5A3.5,3.5 0 0,0 15.5,13A3.5,3.5 0 0,0 12,9.5C10.65,9.5 9.5,10.28 8.9,11.4L10.5,13H6.5V9L7.8,10.3C8.69,8.92 10.23,8 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18Z" /></g><g id="file-send"><path d="M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z" /></g><g id="file-tree"><path d="M3,3H9V7H3V3M15,10H21V14H15V10M15,17H21V21H15V17M13,13H7V18H13V20H7L5,20V9H7V11H13V13Z" /></g><g id="file-video"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M17,19V13L14,15.2V13H7V19H14V16.8L17,19Z" /></g><g id="file-word"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M7,13L8.5,20H10.5L12,17L13.5,20H15.5L17,13H18V11H14V13H15L14.1,17.2L13,15V15H11V15L9.9,17.2L9,13H10V11H6V13H7Z" /></g><g id="file-word-box"><path d="M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-xml"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6.12,15.5L9.86,19.24L11.28,17.83L8.95,15.5L11.28,13.17L9.86,11.76L6.12,15.5M17.28,15.5L13.54,11.76L12.12,13.17L14.45,15.5L12.12,17.83L13.54,19.24L17.28,15.5Z" /></g><g id="film"><path d="M3.5,3H5V1.8C5,1.36 5.36,1 5.8,1H10.2C10.64,1 11,1.36 11,1.8V3H12.5A1.5,1.5 0 0,1 14,4.5V5H22V20H14V20.5A1.5,1.5 0 0,1 12.5,22H3.5A1.5,1.5 0 0,1 2,20.5V4.5A1.5,1.5 0 0,1 3.5,3M18,7V9H20V7H18M14,7V9H16V7H14M10,7V9H12V7H10M14,16V18H16V16H14M18,16V18H20V16H18M10,16V18H12V16H10Z" /></g><g id="filmstrip"><path d="M18,9H16V7H18M18,13H16V11H18M18,17H16V15H18M8,9H6V7H8M8,13H6V11H8M8,17H6V15H8M18,3V5H16V3H8V5H6V3H4V21H6V19H8V21H16V19H18V21H20V3H18Z" /></g><g id="filmstrip-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L16,19.27V21H8V19H6V21H4V7.27L1,4.27M18,9V7H16V9H18M18,13V11H16V13H18M18,15H16.82L6.82,5H8V3H16V5H18V3H20V18.18L18,16.18V15M8,13V11.27L7.73,11H6V13H8M8,17V15H6V17H8M6,3V4.18L4.82,3H6Z" /></g><g id="filter"><path d="M3,2H21V2H21V4H20.92L14,10.92V22.91L10,18.91V10.91L3.09,4H3V2Z" /></g><g id="filter-outline"><path d="M3,2H21V2H21V4H20.92L15,9.92V22.91L9,16.91V9.91L3.09,4H3V2M11,16.08L13,18.08V9H13.09L18.09,4H5.92L10.92,9H11V16.08Z" /></g><g id="filter-remove"><path d="M14.76,20.83L17.6,18L14.76,15.17L16.17,13.76L19,16.57L21.83,13.76L23.24,15.17L20.43,18L23.24,20.83L21.83,22.24L19,19.4L16.17,22.24L14.76,20.83M2,2H20V2H20V4H19.92L13,10.92V22.91L9,18.91V10.91L2.09,4H2V2Z" /></g><g id="filter-remove-outline"><path d="M14.73,20.83L17.58,18L14.73,15.17L16.15,13.76L19,16.57L21.8,13.76L23.22,15.17L20.41,18L23.22,20.83L21.8,22.24L19,19.4L16.15,22.24L14.73,20.83M2,2H20V2H20V4H19.92L14,9.92V22.91L8,16.91V9.91L2.09,4H2V2M10,16.08L12,18.08V9H12.09L17.09,4H4.92L9.92,9H10V16.08Z" /></g><g id="filter-variant"><path d="M6,13H18V11H6M3,6V8H21V6M10,18H14V16H10V18Z" /></g><g id="fingerprint"><path d="M11.83,1.73C8.43,1.79 6.23,3.32 6.23,3.32C5.95,3.5 5.88,3.91 6.07,4.19C6.27,4.5 6.66,4.55 6.96,4.34C6.96,4.34 11.27,1.15 17.46,4.38C17.75,4.55 18.14,4.45 18.31,4.15C18.5,3.85 18.37,3.47 18.03,3.28C16.36,2.4 14.78,1.96 13.36,1.8C12.83,1.74 12.32,1.72 11.83,1.73M12.22,4.34C6.26,4.26 3.41,9.05 3.41,9.05C3.22,9.34 3.3,9.72 3.58,9.91C3.87,10.1 4.26,10 4.5,9.68C4.5,9.68 6.92,5.5 12.2,5.59C17.5,5.66 19.82,9.65 19.82,9.65C20,9.94 20.38,10.04 20.68,9.87C21,9.69 21.07,9.31 20.9,9C20.9,9 18.15,4.42 12.22,4.34M11.5,6.82C9.82,6.94 8.21,7.55 7,8.56C4.62,10.53 3.1,14.14 4.77,19C4.88,19.33 5.24,19.5 5.57,19.39C5.89,19.28 6.07,18.92 5.95,18.6V18.6C4.41,14.13 5.78,11.2 7.8,9.5C9.77,7.89 13.25,7.5 15.84,9.1C17.11,9.9 18.1,11.28 18.6,12.64C19.11,14 19.08,15.32 18.67,15.94C18.25,16.59 17.4,16.83 16.65,16.64C15.9,16.45 15.29,15.91 15.26,14.77C15.23,13.06 13.89,12 12.5,11.84C11.16,11.68 9.61,12.4 9.21,14C8.45,16.92 10.36,21.07 14.78,22.45C15.11,22.55 15.46,22.37 15.57,22.04C15.67,21.71 15.5,21.35 15.15,21.25C11.32,20.06 9.87,16.43 10.42,14.29C10.66,13.33 11.5,13 12.38,13.08C13.25,13.18 14,13.7 14,14.79C14.05,16.43 15.12,17.54 16.34,17.85C17.56,18.16 18.97,17.77 19.72,16.62C20.5,15.45 20.37,13.8 19.78,12.21C19.18,10.61 18.07,9.03 16.5,8.04C14.96,7.08 13.19,6.7 11.5,6.82M11.86,9.25V9.26C10.08,9.32 8.3,10.24 7.28,12.18C5.96,14.67 6.56,17.21 7.44,19.04C8.33,20.88 9.54,22.1 9.54,22.1C9.78,22.35 10.17,22.35 10.42,22.11C10.67,21.87 10.67,21.5 10.43,21.23C10.43,21.23 9.36,20.13 8.57,18.5C7.78,16.87 7.3,14.81 8.38,12.77C9.5,10.67 11.5,10.16 13.26,10.67C15.04,11.19 16.53,12.74 16.5,15.03C16.46,15.38 16.71,15.68 17.06,15.7C17.4,15.73 17.7,15.47 17.73,15.06C17.79,12.2 15.87,10.13 13.61,9.47C13.04,9.31 12.45,9.23 11.86,9.25M12.08,14.25C11.73,14.26 11.46,14.55 11.47,14.89C11.47,14.89 11.5,16.37 12.31,17.8C13.15,19.23 14.93,20.59 18.03,20.3C18.37,20.28 18.64,20 18.62,19.64C18.6,19.29 18.3,19.03 17.91,19.06C15.19,19.31 14.04,18.28 13.39,17.17C12.74,16.07 12.72,14.88 12.72,14.88C12.72,14.53 12.44,14.25 12.08,14.25Z" /></g><g id="fire"><path d="M11.71,19C9.93,19 8.5,17.59 8.5,15.86C8.5,14.24 9.53,13.1 11.3,12.74C13.07,12.38 14.9,11.53 15.92,10.16C16.31,11.45 16.5,12.81 16.5,14.2C16.5,16.84 14.36,19 11.71,19M13.5,0.67C13.5,0.67 14.24,3.32 14.24,5.47C14.24,7.53 12.89,9.2 10.83,9.2C8.76,9.2 7.2,7.53 7.2,5.47L7.23,5.1C5.21,7.5 4,10.61 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,8.6 17.41,3.8 13.5,0.67Z" /></g><g id="firefox"><path d="M21,11.7C21,11.3 20.9,10.7 20.8,10.3C20.5,8.6 19.6,7.1 18.5,5.9C18.3,5.6 17.9,5.3 17.5,5C16.4,4.1 15.1,3.5 13.6,3.2C10.6,2.7 7.6,3.7 5.6,5.8C5.6,5.8 5.6,5.7 5.6,5.7C5.5,5.5 5.5,5.5 5.4,5.5C5.4,5.5 5.4,5.5 5.4,5.5C5.3,5.3 5.3,5.2 5.2,5.1C5.2,5.1 5.2,5.1 5.2,5.1C5.2,4.9 5.1,4.7 5.1,4.5C4.8,4.6 4.8,4.9 4.7,5.1C4.7,5.1 4.7,5.1 4.7,5.1C4.5,5.3 4.3,5.6 4.3,5.9C4.3,5.9 4.3,5.9 4.3,5.9C4.2,6.1 4,7 4.2,7.1C4.2,7.1 4.2,7.1 4.3,7.1C4.3,7.2 4.3,7.3 4.3,7.4C4.1,7.6 4,7.7 4,7.8C3.7,8.4 3.4,8.9 3.3,9.5C3.3,9.7 3.3,9.8 3.3,9.9C3.3,9.9 3.3,9.9 3.3,9.9C3.3,9.9 3.3,9.8 3.3,9.8C3.1,10 3.1,10.3 3,10.5C3.1,10.5 3.1,10.4 3.2,10.4C2.7,13 3.4,15.7 5,17.7C7.4,20.6 11.5,21.8 15.1,20.5C18.6,19.2 21,15.8 21,12C21,11.9 21,11.8 21,11.7M13.5,4.1C15,4.4 16.4,5.1 17.5,6.1C17.6,6.2 17.7,6.4 17.7,6.4C17.4,6.1 16.7,5.6 16.3,5.8C16.4,6.1 17.6,7.6 17.7,7.7C17.7,7.7 18,9 18.1,9.1C18.1,9.1 18.1,9.1 18.1,9.1C18.1,9.1 18.1,9.1 18.1,9.1C18.1,9.3 17.4,11.9 17.4,12.3C17.4,12.4 16.5,14.2 16.6,14.2C16.3,14.9 16,14.9 15.9,15C15.8,15 15.2,15.2 14.5,15.4C13.9,15.5 13.2,15.7 12.7,15.6C12.4,15.6 12,15.6 11.7,15.4C11.6,15.3 10.8,14.9 10.6,14.8C10.3,14.7 10.1,14.5 9.9,14.3C10.2,14.3 10.8,14.3 11,14.3C11.6,14.2 14.2,13.3 14.1,12.9C14.1,12.6 13.6,12.4 13.4,12.2C13.1,12.1 11.9,12.3 11.4,12.5C11.4,12.5 9.5,12 9,11.6C9,11.5 8.9,10.9 8.9,10.8C8.8,10.7 9.2,10.4 9.2,10.4C9.2,10.4 10.2,9.4 10.2,9.3C10.4,9.3 10.6,9.1 10.7,9C10.6,9 10.8,8.9 11.1,8.7C11.1,8.7 11.1,8.7 11.1,8.7C11.4,8.5 11.6,8.5 11.6,8.2C11.6,8.2 12.1,7.3 11.5,7.4C11.5,7.4 10.6,7.3 10.3,7.3C10,7.5 9.9,7.4 9.6,7.3C9.6,7.3 9.4,7.1 9.4,7C9.5,6.8 10.2,5.3 10.5,5.2C10.3,4.8 9.3,5.1 9.1,5.4C9.1,5.4 8.3,6 7.9,6.1C7.9,6.1 7.9,6.1 7.9,6.1C7.9,6 7.4,5.9 6.9,5.9C8.7,4.4 11.1,3.7 13.5,4.1Z" /></g><g id="fish"><path d="M12,20L12.76,17C9.5,16.79 6.59,15.4 5.75,13.58C5.66,14.06 5.53,14.5 5.33,14.83C4.67,16 3.33,16 2,16C3.1,16 3.5,14.43 3.5,12.5C3.5,10.57 3.1,9 2,9C3.33,9 4.67,9 5.33,10.17C5.53,10.5 5.66,10.94 5.75,11.42C6.4,10 8.32,8.85 10.66,8.32L9,5C11,5 13,5 14.33,5.67C15.46,6.23 16.11,7.27 16.69,8.38C19.61,9.08 22,10.66 22,12.5C22,14.38 19.5,16 16.5,16.66C15.67,17.76 14.86,18.78 14.17,19.33C13.33,20 12.67,20 12,20M17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12A1,1 0 0,0 17,11Z" /></g><g id="flag"><path d="M14.4,6L14,4H5V21H7V14H12.6L13,16H20V6H14.4Z" /></g><g id="flag-checkered"><path d="M14.4,6H20V16H13L12.6,14H7V21H5V4H14L14.4,6M14,14H16V12H18V10H16V8H14V10L13,8V6H11V8H9V6H7V8H9V10H7V12H9V10H11V12H13V10L14,12V14M11,10V8H13V10H11M14,10H16V12H14V10Z" /></g><g id="flag-outline"><path d="M14.5,6H20V16H13L12.5,14H7V21H5V4H14L14.5,6M7,6V12H13L13.5,14H18V8H14L13.5,6H7Z" /></g><g id="flag-outline-variant"><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3M7,7.25V11.5C7,11.5 9,10 11,10C13,10 14,12 16,12C18,12 18,11 18,11V7.5C18,7.5 17,8 16,8C14,8 13,6 11,6C9,6 7,7.25 7,7.25Z" /></g><g id="flag-triangle"><path d="M7,2H9V22H7V2M19,9L11,14.6V3.4L19,9Z" /></g><g id="flag-variant"><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3Z" /></g><g id="flash"><path d="M7,2V13H10V22L17,10H13L17,2H7Z" /></g><g id="flash-auto"><path d="M16.85,7.65L18,4L19.15,7.65M19,2H17L13.8,11H15.7L16.4,9H19.6L20.3,11H22.2M3,2V14H6V23L13,11H9L13,2H3Z" /></g><g id="flash-off"><path d="M17,10H13L17,2H7V4.18L15.46,12.64M3.27,3L2,4.27L7,9.27V13H10V22L13.58,15.86L17.73,20L19,18.73L3.27,3Z" /></g><g id="flash-outline"><path d="M7,2H17L13.5,9H17L10,22V14H7V2M9,4V12H12V14.66L14,11H10.24L13.76,4H9Z" /></g><g id="flash-red-eye"><path d="M16,5C15.44,5 15,5.44 15,6C15,6.56 15.44,7 16,7C16.56,7 17,6.56 17,6C17,5.44 16.56,5 16,5M16,2C13.27,2 10.94,3.66 10,6C10.94,8.34 13.27,10 16,10C18.73,10 21.06,8.34 22,6C21.06,3.66 18.73,2 16,2M16,3.5A2.5,2.5 0 0,1 18.5,6A2.5,2.5 0 0,1 16,8.5A2.5,2.5 0 0,1 13.5,6A2.5,2.5 0 0,1 16,3.5M3,2V14H6V23L13,11H9L10.12,8.5C9.44,7.76 8.88,6.93 8.5,6C9.19,4.29 10.5,2.88 12.11,2H3Z" /></g><g id="flashlight"><path d="M9,10L6,5H18L15,10H9M18,4H6V2H18V4M9,22V11H15V22H9M12,13A1,1 0 0,0 11,14A1,1 0 0,0 12,15A1,1 0 0,0 13,14A1,1 0 0,0 12,13Z" /></g><g id="flashlight-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15,18.27V22H9V12.27L2,5.27M18,5L15,10H11.82L6.82,5H18M18,4H6V2H18V4M15,11V13.18L12.82,11H15Z" /></g><g id="flask"><path d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z" /></g><g id="flask-empty"><path d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z" /></g><g id="flask-empty-outline"><path d="M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z" /></g><g id="flask-outline"><path d="M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M13,16L14.34,14.66L16.27,18H7.73L10.39,13.39L13,16M12.5,12A0.5,0.5 0 0,1 13,12.5A0.5,0.5 0 0,1 12.5,13A0.5,0.5 0 0,1 12,12.5A0.5,0.5 0 0,1 12.5,12Z" /></g><g id="flattr"><path d="M21,9V15A6,6 0 0,1 15,21H4.41L11.07,14.35C11.38,14.04 11.69,13.73 11.84,13.75C12,13.78 12,14.14 12,14.5V17H14A3,3 0 0,0 17,14V8.41L21,4.41V9M3,15V9A6,6 0 0,1 9,3H19.59L12.93,9.65C12.62,9.96 12.31,10.27 12.16,10.25C12,10.22 12,9.86 12,9.5V7H10A3,3 0 0,0 7,10V15.59L3,19.59V15Z" /></g><g id="flip-to-back"><path d="M15,17H17V15H15M15,5H17V3H15M5,7H3V19A2,2 0 0,0 5,21H17V19H5M19,17A2,2 0 0,0 21,15H19M19,9H21V7H19M19,13H21V11H19M9,17V15H7A2,2 0 0,0 9,17M13,3H11V5H13M19,3V5H21C21,3.89 20.1,3 19,3M13,15H11V17H13M9,3C7.89,3 7,3.89 7,5H9M9,11H7V13H9M9,7H7V9H9V7Z" /></g><g id="flip-to-front"><path d="M7,21H9V19H7M11,21H13V19H11M19,15H9V5H19M19,3H9C7.89,3 7,3.89 7,5V15A2,2 0 0,0 9,17H14L18,17H19A2,2 0 0,0 21,15V5C21,3.89 20.1,3 19,3M15,21H17V19H15M3,9H5V7H3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M3,13H5V11H3V13Z" /></g><g id="floppy"><path d="M4.5,22L2,19.5V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17V15A1,1 0 0,0 16,14H7A1,1 0 0,0 6,15V22H4.5M5,4V10A1,1 0 0,0 6,11H18A1,1 0 0,0 19,10V4H5M8,16H11V20H8V16M20,4V5H21V4H20Z" /></g><g id="flower"><path d="M3,13A9,9 0 0,0 12,22C12,17 7.97,13 3,13M12,5.5A2.5,2.5 0 0,1 14.5,8A2.5,2.5 0 0,1 12,10.5A2.5,2.5 0 0,1 9.5,8A2.5,2.5 0 0,1 12,5.5M5.6,10.25A2.5,2.5 0 0,0 8.1,12.75C8.63,12.75 9.12,12.58 9.5,12.31C9.5,12.37 9.5,12.43 9.5,12.5A2.5,2.5 0 0,0 12,15A2.5,2.5 0 0,0 14.5,12.5C14.5,12.43 14.5,12.37 14.5,12.31C14.88,12.58 15.37,12.75 15.9,12.75C17.28,12.75 18.4,11.63 18.4,10.25C18.4,9.25 17.81,8.4 16.97,8C17.81,7.6 18.4,6.74 18.4,5.75C18.4,4.37 17.28,3.25 15.9,3.25C15.37,3.25 14.88,3.41 14.5,3.69C14.5,3.63 14.5,3.56 14.5,3.5A2.5,2.5 0 0,0 12,1A2.5,2.5 0 0,0 9.5,3.5C9.5,3.56 9.5,3.63 9.5,3.69C9.12,3.41 8.63,3.25 8.1,3.25A2.5,2.5 0 0,0 5.6,5.75C5.6,6.74 6.19,7.6 7.03,8C6.19,8.4 5.6,9.25 5.6,10.25M12,22A9,9 0 0,0 21,13C16,13 12,17 12,22Z" /></g><g id="folder"><path d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" /></g><g id="folder-account"><path d="M19,17H11V16C11,14.67 13.67,14 15,14C16.33,14 19,14.67 19,16M15,9A2,2 0 0,1 17,11A2,2 0 0,1 15,13A2,2 0 0,1 13,11C13,9.89 13.9,9 15,9M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-download"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19.25,13H16V9H14V13H10.75L15,17.25" /></g><g id="folder-google-drive"><path d="M13.75,9H16.14L19,14H16.05L13.5,9.46M18.3,17H12.75L14.15,14.5H19.27L19.53,14.96M11.5,17L10.4,14.86L13.24,9.9L14.74,12.56L12.25,17M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-image"><path d="M5,17L9.5,11L13,15.5L15.5,12.5L19,17M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6Z" /></g><g id="folder-lock"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18V12A3,3 0 0,0 15,9A3,3 0 0,0 12,12V13H11V17H19M15,11A1,1 0 0,1 16,12V13H14V12A1,1 0 0,1 15,11Z" /></g><g id="folder-lock-open"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18L16,13H14V11A1,1 0 0,1 15,10A1,1 0 0,1 16,11H18A3,3 0 0,0 15,8A3,3 0 0,0 12,11V13H11V17H19Z" /></g><g id="folder-move"><path d="M9,18V15H5V11H9V8L14,13M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-multiple"><path d="M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z" /></g><g id="folder-multiple-image"><path d="M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z" /></g><g id="folder-multiple-outline"><path d="M22,4A2,2 0 0,1 24,6V16A2,2 0 0,1 22,18H6A2,2 0 0,1 4,16V4A2,2 0 0,1 6,2H12L14,4H22M2,6V20H20V22H2A2,2 0 0,1 0,20V11H0V6H2M6,6V16H22V6H6Z" /></g><g id="folder-outline"><path d="M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-plus"><path d="M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M15,9V12H12V14H15V17H17V14H20V12H17V9H15Z" /></g><g id="folder-remove"><path d="M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M12.46,10.88L14.59,13L12.46,15.12L13.88,16.54L16,14.41L18.12,16.54L19.54,15.12L17.41,13L19.54,10.88L18.12,9.46L16,11.59L13.88,9.46L12.46,10.88Z" /></g><g id="folder-star"><path d="M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M17.94,17L15,15.28L12.06,17L12.84,13.67L10.25,11.43L13.66,11.14L15,8L16.34,11.14L19.75,11.43L17.16,13.67L17.94,17Z" /></g><g id="folder-upload"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75" /></g><g id="food"><path d="M15.5,21L14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.5,21H15.5M5,11H10A3,3 0 0,1 13,14H2A3,3 0 0,1 5,11M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13M3,15H8L9.5,16.5L11,15H12A1,1 0 0,1 13,16A1,1 0 0,1 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15Z" /></g><g id="food-apple"><path d="M20,10C22,13 17,22 15,22C13,22 13,21 12,21C11,21 11,22 9,22C7,22 2,13 4,10C6,7 9,7 11,8V5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5V3H13V8C15,7 18,7 20,10Z" /></g><g id="food-fork-drink"><path d="M3,3A1,1 0 0,0 2,4V8L2,9.5C2,11.19 3.03,12.63 4.5,13.22V19.5A1.5,1.5 0 0,0 6,21A1.5,1.5 0 0,0 7.5,19.5V13.22C8.97,12.63 10,11.19 10,9.5V8L10,4A1,1 0 0,0 9,3A1,1 0 0,0 8,4V8A0.5,0.5 0 0,1 7.5,8.5A0.5,0.5 0 0,1 7,8V4A1,1 0 0,0 6,3A1,1 0 0,0 5,4V8A0.5,0.5 0 0,1 4.5,8.5A0.5,0.5 0 0,1 4,8V4A1,1 0 0,0 3,3M19.88,3C19.75,3 19.62,3.09 19.5,3.16L16,5.25V9H12V11H13L14,21H20L21,11H22V9H18V6.34L20.5,4.84C21,4.56 21.13,4 20.84,3.5C20.63,3.14 20.26,2.95 19.88,3Z" /></g><g id="food-off"><path d="M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H15.5L15.21,18.5L12.97,16.24C12.86,16.68 12.47,17 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15H8L9.5,16.5L11,15H11.73L10.73,14H2A3,3 0 0,1 5,11H7.73L2,5.27M14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.74,18.92L14.54,12.72L14,8M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13Z" /></g><g id="food-variant"><path d="M22,18A4,4 0 0,1 18,22H15A4,4 0 0,1 11,18V16H17.79L20.55,11.23L22.11,12.13L19.87,16H22V18M9,22H2C2,19 2,16 2.33,12.83C2.6,10.3 3.08,7.66 3.6,5H3V3H4L7,3H8V5H7.4C7.92,7.66 8.4,10.3 8.67,12.83C9,16 9,19 9,22Z" /></g><g id="football"><path d="M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C15.46,3.67 17.5,3.83 18.6,4C19.71,4.15 19.87,4.31 20.03,5.41C20.18,6.5 20.33,8.55 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C8.55,20.33 6.5,20.18 5.41,20.03C4.31,19.87 4.15,19.71 4,18.6C3.83,17.5 3.67,15.46 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M7.3,15.79L8.21,16.7L9.42,15.5L10.63,16.7L11.54,15.79L10.34,14.58L12,12.91L13.21,14.12L14.12,13.21L12.91,12L14.58,10.34L15.79,11.54L16.7,10.63L15.5,9.42L16.7,8.21L15.79,7.3L14.58,8.5L13.37,7.3L12.46,8.21L13.66,9.42L12,11.09L10.79,9.88L9.88,10.79L11.09,12L9.42,13.66L8.21,12.46L7.3,13.37L8.5,14.58L7.3,15.79Z" /></g><g id="football-australian"><path d="M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C18,3 21,6 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C6,21 3,18 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M10.62,11.26L10.26,11.62L12.38,13.74L12.74,13.38L10.62,11.26M11.62,10.26L11.26,10.62L13.38,12.74L13.74,12.38L11.62,10.26M9.62,12.26L9.26,12.62L11.38,14.74L11.74,14.38L9.62,12.26M12.63,9.28L12.28,9.63L14.4,11.75L14.75,11.4L12.63,9.28M8.63,13.28L8.28,13.63L10.4,15.75L10.75,15.4L8.63,13.28M13.63,8.28L13.28,8.63L15.4,10.75L15.75,10.4L13.63,8.28Z" /></g><g id="football-helmet"><path d="M13.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,15A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 13.5,12M13.5,3C18.19,3 22,6.58 22,11C22,12.62 22,14 21.09,16C17,16 16,20 12.5,20C10.32,20 9.27,18.28 9.05,16H9L8.24,16L6.96,20.3C6.81,20.79 6.33,21.08 5.84,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19V16A1,1 0 0,1 2,15A1,1 0 0,1 3,14H6.75L7.23,12.39C6.72,12.14 6.13,12 5.5,12H5.07L5,11C5,6.58 8.81,3 13.5,3M5,16V19H5.26L6.15,16H5Z" /></g><g id="format-align-center"><path d="M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z" /></g><g id="format-align-justify"><path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-align-left"><path d="M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-align-right"><path d="M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z" /></g><g id="format-annotation-plus"><path d="M8.5,7H10.5L16,21H13.6L12.5,18H6.3L5.2,21H3L8.5,7M7.1,16H11.9L9.5,9.7L7.1,16M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z" /></g><g id="format-bold"><path d="M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z" /></g><g id="format-clear"><path d="M6,5V5.18L8.82,8H11.22L10.5,9.68L12.6,11.78L14.21,8H20V5H6M3.27,5L2,6.27L8.97,13.24L6.5,19H9.5L11.07,15.34L16.73,21L18,19.73L3.55,5.27L3.27,5Z" /></g><g id="format-color-fill"><path d="M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z" /></g><g id="format-color-text"><path d="M9.62,12L12,5.67L14.37,12M11,3L5.5,17H7.75L8.87,14H15.12L16.25,17H18.5L13,3H11Z" /></g><g id="format-float-center"><path d="M9,7H15V13H9V7M3,3H21V5H3V3M3,15H21V17H3V15M3,19H17V21H3V19Z" /></g><g id="format-float-left"><path d="M3,7H9V13H3V7M3,3H21V5H3V3M21,7V9H11V7H21M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-float-none"><path d="M3,7H9V13H3V7M3,3H21V5H3V3M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-float-right"><path d="M15,7H21V13H15V7M3,3H21V5H3V3M13,7V9H3V7H13M9,11V13H3V11H9M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-header-1"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M14,18V16H16V6.31L13.5,7.75V5.44L16,4H18V16H20V18H14Z" /></g><g id="format-header-2"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M21,18H15A2,2 0 0,1 13,16C13,15.47 13.2,15 13.54,14.64L18.41,9.41C18.78,9.05 19,8.55 19,8A2,2 0 0,0 17,6A2,2 0 0,0 15,8H13A4,4 0 0,1 17,4A4,4 0 0,1 21,8C21,9.1 20.55,10.1 19.83,10.83L15,16H21V18Z" /></g><g id="format-header-3"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V15H15V16H19V12H15V10H19V6H15V7H13V6A2,2 0 0,1 15,4Z" /></g><g id="format-header-4"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M18,18V13H13V11L18,4H20V11H21V13H20V18H18M18,11V7.42L15.45,11H18Z" /></g><g id="format-header-5"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H20V6H15V10H17A4,4 0 0,1 21,14A4,4 0 0,1 17,18H15A2,2 0 0,1 13,16V15H15V16H17A2,2 0 0,0 19,14A2,2 0 0,0 17,12H15A2,2 0 0,1 13,10V6A2,2 0 0,1 15,4Z" /></g><g id="format-header-6"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V7H19V6H15V10H19A2,2 0 0,1 21,12V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V6A2,2 0 0,1 15,4M15,12V16H19V12H15Z" /></g><g id="format-header-decrease"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M20.42,7.41L16.83,11L20.42,14.59L19,16L14,11L19,6L20.42,7.41Z" /></g><g id="format-header-equal"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14,10V8H21V10H14M14,12H21V14H14V12Z" /></g><g id="format-header-increase"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14.59,7.41L18.17,11L14.59,14.59L16,16L21,11L16,6L14.59,7.41Z" /></g><g id="format-header-pound"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M13,8H15.31L15.63,5H17.63L17.31,8H19.31L19.63,5H21.63L21.31,8H23V10H21.1L20.9,12H23V14H20.69L20.37,17H18.37L18.69,14H16.69L16.37,17H14.37L14.69,14H13V12H14.9L15.1,10H13V8M17.1,10L16.9,12H18.9L19.1,10H17.1Z" /></g><g id="format-horizontal-align-center"><path d="M19,16V13H23V11H19V8L15,12L19,16M5,8V11H1V13H5V16L9,12L5,8M11,20H13V4H11V20Z" /></g><g id="format-horizontal-align-left"><path d="M11,16V13H21V11H11V8L7,12L11,16M3,20H5V4H3V20Z" /></g><g id="format-horizontal-align-right"><path d="M13,8V11H3V13H13V16L17,12L13,8M19,20H21V4H19V20Z" /></g><g id="format-indent-decrease"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M3,21H21V19H3M3,12L7,16V8M11,17H21V15H11V17Z" /></g><g id="format-indent-increase"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M11,17H21V15H11M3,8V16L7,12M3,21H21V19H3V21Z" /></g><g id="format-italic"><path d="M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z" /></g><g id="format-line-spacing"><path d="M10,13H22V11H10M10,19H22V17H10M10,7H22V5H10M6,7H8.5L5,3.5L1.5,7H4V17H1.5L5,20.5L8.5,17H6V7Z" /></g><g id="format-line-style"><path d="M3,16H8V14H3V16M9.5,16H14.5V14H9.5V16M16,16H21V14H16V16M3,20H5V18H3V20M7,20H9V18H7V20M11,20H13V18H11V20M15,20H17V18H15V20M19,20H21V18H19V20M3,12H11V10H3V12M13,12H21V10H13V12M3,4V8H21V4H3Z" /></g><g id="format-line-weight"><path d="M3,17H21V15H3V17M3,20H21V19H3V20M3,13H21V10H3V13M3,4V8H21V4H3Z" /></g><g id="format-list-bulleted"><path d="M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z" /></g><g id="format-list-bulleted-type"><path d="M5,9.5L7.5,14H2.5L5,9.5M3,4H7V8H3V4M5,20A2,2 0 0,0 7,18A2,2 0 0,0 5,16A2,2 0 0,0 3,18A2,2 0 0,0 5,20M9,5V7H21V5H9M9,19H21V17H9V19M9,13H21V11H9V13Z" /></g><g id="format-list-numbers"><path d="M7,13H21V11H7M7,19H21V17H7M7,7H21V5H7M2,11H3.8L2,13.1V14H5V13H3.2L5,10.9V10H2M3,8H4V4H2V5H3M2,17H4V17.5H3V18.5H4V19H2V20H5V16H2V17Z" /></g><g id="format-page-break"><path d="M7,11H9V13H7V11M11,11H13V13H11V11M19,17H15V11.17L21,17.17V22H3V13H5V20H19V17M3,2H21V11H19V4H5V11H3V2Z" /></g><g id="format-paint"><path d="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z" /></g><g id="format-paragraph"><path d="M13,4A4,4 0 0,1 17,8A4,4 0 0,1 13,12H11V18H9V4H13M13,10A2,2 0 0,0 15,8A2,2 0 0,0 13,6H11V10H13Z" /></g><g id="format-pilcrow"><path d="M10,11A4,4 0 0,1 6,7A4,4 0 0,1 10,3H18V5H16V21H14V5H12V21H10V11Z" /></g><g id="format-quote"><path d="M14,17H17L19,13V7H13V13H16M6,17H9L11,13V7H5V13H8L6,17Z" /></g><g id="format-section"><path d="M15.67,4.42C14.7,3.84 13.58,3.54 12.45,3.56C10.87,3.56 9.66,4.34 9.66,5.56C9.66,6.96 11,7.47 13,8.14C15.5,8.95 17.4,9.97 17.4,12.38C17.36,13.69 16.69,14.89 15.6,15.61C16.25,16.22 16.61,17.08 16.6,17.97C16.6,20.79 14,21.97 11.5,21.97C10.04,22.03 8.59,21.64 7.35,20.87L8,19.34C9.04,20.05 10.27,20.43 11.53,20.44C13.25,20.44 14.53,19.66 14.53,18.24C14.53,17 13.75,16.31 11.25,15.45C8.5,14.5 6.6,13.5 6.6,11.21C6.67,9.89 7.43,8.69 8.6,8.07C7.97,7.5 7.61,6.67 7.6,5.81C7.6,3.45 9.77,2 12.53,2C13.82,2 15.09,2.29 16.23,2.89L15.67,4.42M11.35,13.42C12.41,13.75 13.44,14.18 14.41,14.71C15.06,14.22 15.43,13.45 15.41,12.64C15.41,11.64 14.77,10.76 13,10.14C11.89,9.77 10.78,9.31 9.72,8.77C8.97,9.22 8.5,10.03 8.5,10.91C8.5,11.88 9.23,12.68 11.35,13.42Z" /></g><g id="format-size"><path d="M3,12H6V19H9V12H12V9H3M9,4V7H14V19H17V7H22V4H9Z" /></g><g id="format-strikethrough"><path d="M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z" /></g><g id="format-strikethrough-variant"><path d="M23,12V14H18.61C19.61,16.14 19.56,22 12.38,22C4.05,22.05 4.37,15.5 4.37,15.5L8.34,15.55C8.37,18.92 11.5,18.92 12.12,18.88C12.76,18.83 15.15,18.84 15.34,16.5C15.42,15.41 14.32,14.58 13.12,14H1V12H23M19.41,7.89L15.43,7.86C15.43,7.86 15.6,5.09 12.15,5.08C8.7,5.06 9,7.28 9,7.56C9.04,7.84 9.34,9.22 12,9.88H5.71C5.71,9.88 2.22,3.15 10.74,2C19.45,0.8 19.43,7.91 19.41,7.89Z" /></g><g id="format-subscript"><path d="M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,21.03H16.97V20.03L17.86,19.23C18.62,18.58 19.18,18.04 19.56,17.6C19.93,17.16 20.12,16.75 20.13,16.36C20.14,16.08 20.05,15.85 19.86,15.66C19.68,15.5 19.39,15.38 19,15.38C18.69,15.38 18.42,15.44 18.16,15.56L17.5,15.94L17.05,14.77C17.32,14.56 17.64,14.38 18.03,14.24C18.42,14.1 18.85,14 19.32,14C20.1,14.04 20.7,14.25 21.1,14.66C21.5,15.07 21.72,15.59 21.72,16.23C21.71,16.79 21.53,17.31 21.18,17.78C20.84,18.25 20.42,18.7 19.91,19.14L19.27,19.66V19.68H21.85V21.03Z" /></g><g id="format-superscript"><path d="M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,9H16.97V8L17.86,7.18C18.62,6.54 19.18,6 19.56,5.55C19.93,5.11 20.12,4.7 20.13,4.32C20.14,4.04 20.05,3.8 19.86,3.62C19.68,3.43 19.39,3.34 19,3.33C18.69,3.34 18.42,3.4 18.16,3.5L17.5,3.89L17.05,2.72C17.32,2.5 17.64,2.33 18.03,2.19C18.42,2.05 18.85,2 19.32,2C20.1,2 20.7,2.2 21.1,2.61C21.5,3 21.72,3.54 21.72,4.18C21.71,4.74 21.53,5.26 21.18,5.73C20.84,6.21 20.42,6.66 19.91,7.09L19.27,7.61V7.63H21.85V9Z" /></g><g id="format-text"><path d="M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z" /></g><g id="format-textdirection-l-to-r"><path d="M21,18L17,14V17H5V19H17V22M9,10V15H11V4H13V15H15V4H17V2H9A4,4 0 0,0 5,6A4,4 0 0,0 9,10Z" /></g><g id="format-textdirection-r-to-l"><path d="M8,17V14L4,18L8,22V19H20V17M10,10V15H12V4H14V15H16V4H18V2H10A4,4 0 0,0 6,6A4,4 0 0,0 10,10Z" /></g><g id="format-title"><path d="M5,4V7H10.5V19H13.5V7H19V4H5Z" /></g><g id="format-underline"><path d="M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z" /></g><g id="format-vertical-align-bottom"><path d="M16,13H13V3H11V13H8L12,17L16,13M4,19V21H20V19H4Z" /></g><g id="format-vertical-align-center"><path d="M8,19H11V23H13V19H16L12,15L8,19M16,5H13V1H11V5H8L12,9L16,5M4,11V13H20V11H4Z" /></g><g id="format-vertical-align-top"><path d="M8,11H11V21H13V11H16L12,7L8,11M4,3V5H20V3H4Z" /></g><g id="format-wrap-inline"><path d="M8,7L13,17H3L8,7M3,3H21V5H3V3M21,15V17H14V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-square"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H6V9H3V7M21,7V9H18V7H21M3,11H6V13H3V11M21,11V13H18V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-tight"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H9V9H3V7M21,7V9H15V7H21M3,11H7V13H3V11M21,11V13H17V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-top-bottom"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,19H21V21H3V19Z" /></g><g id="forum"><path d="M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z" /></g><g id="forward"><path d="M12,8V4L20,12L12,20V16H4V8H12Z" /></g><g id="foursquare"><path d="M17,5L16.57,7.5C16.5,7.73 16.2,8 15.91,8C15.61,8 12,8 12,8C11.53,8 10.95,8.32 10.95,8.79V9.2C10.95,9.67 11.53,10 12,10C12,10 14.95,10 15.28,10C15.61,10 15.93,10.36 15.86,10.71C15.79,11.07 14.94,13.28 14.9,13.5C14.86,13.67 14.64,14 14.25,14C13.92,14 11.37,14 11.37,14C10.85,14 10.69,14.07 10.34,14.5C10,14.94 7.27,18.1 7.27,18.1C7.24,18.13 7,18.04 7,18V5C7,4.7 7.61,4 8,4C8,4 16.17,4 16.5,4C16.82,4 17.08,4.61 17,5M17,14.45C17.11,13.97 18.78,6.72 19.22,4.55M17.58,2C17.58,2 8.38,2 6.91,2C5.43,2 5,3.11 5,3.8C5,4.5 5,20.76 5,20.76C5,21.54 5.42,21.84 5.66,21.93C5.9,22.03 6.55,22.11 6.94,21.66C6.94,21.66 11.65,16.22 11.74,16.13C11.87,16 11.87,16 12,16C12.26,16 14.2,16 15.26,16C16.63,16 16.85,15 17,14.45C17.11,13.97 18.78,6.72 19.22,4.55C19.56,2.89 19.14,2 17.58,2Z" /></g><g id="fridge"><path d="M9,21V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9M7,4V9H17V4H7M7,19H17V11H7V19M8,12H10V15H8V12M8,6H10V8H8V6Z" /></g><g id="fridge-filled"><path d="M7,2H17A2,2 0 0,1 19,4V9H5V4A2,2 0 0,1 7,2M19,19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V10H19V19M8,5V7H10V5H8M8,12V15H10V12H8Z" /></g><g id="fridge-filled-bottom"><path d="M8,8V6H10V8H8M7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2M7,4V9H17V4H7M8,12V15H10V12H8Z" /></g><g id="fridge-filled-top"><path d="M7,2A2,2 0 0,0 5,4V19A2,2 0 0,0 7,21V22H9V21H15V22H17V21A2,2 0 0,0 19,19V4A2,2 0 0,0 17,2H7M8,6H10V8H8V6M7,11H17V19H7V11M8,12V15H10V12H8Z" /></g><g id="fullscreen"><path d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z" /></g><g id="fullscreen-exit"><path d="M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z" /></g><g id="function"><path d="M15.6,5.29C14.5,5.19 13.53,6 13.43,7.11L13.18,10H16V12H13L12.56,17.07C12.37,19.27 10.43,20.9 8.23,20.7C6.92,20.59 5.82,19.86 5.17,18.83L6.67,17.33C6.91,18.07 7.57,18.64 8.4,18.71C9.5,18.81 10.47,18 10.57,16.89L11,12H8V10H11.17L11.44,6.93C11.63,4.73 13.57,3.1 15.77,3.3C17.08,3.41 18.18,4.14 18.83,5.17L17.33,6.67C17.09,5.93 16.43,5.36 15.6,5.29Z" /></g><g id="gamepad"><path d="M16.5,9L13.5,12L16.5,15H22V9M9,16.5V22H15V16.5L12,13.5M7.5,9H2V15H7.5L10.5,12M15,7.5V2H9V7.5L12,10.5L15,7.5Z" /></g><g id="gamepad-variant"><path d="M7,6H17A6,6 0 0,1 23,12A6,6 0 0,1 17,18C15.22,18 13.63,17.23 12.53,16H11.47C10.37,17.23 8.78,18 7,18A6,6 0 0,1 1,12A6,6 0 0,1 7,6M6,9V11H4V13H6V15H8V13H10V11H8V9H6M15.5,12A1.5,1.5 0 0,0 14,13.5A1.5,1.5 0 0,0 15.5,15A1.5,1.5 0 0,0 17,13.5A1.5,1.5 0 0,0 15.5,12M18.5,9A1.5,1.5 0 0,0 17,10.5A1.5,1.5 0 0,0 18.5,12A1.5,1.5 0 0,0 20,10.5A1.5,1.5 0 0,0 18.5,9Z" /></g><g id="garage"><path d="M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12M8,15H16V17H8V15M16,18V20H8V18H16Z" /></g><g id="garage-open"><path d="M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12Z" /></g><g id="gas-cylinder"><path d="M16,9V14L16,20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V14L8,9C8,7.14 9.27,5.57 11,5.13V4H9V2H15V4H13V5.13C14.73,5.57 16,7.14 16,9Z" /></g><g id="gas-station"><path d="M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M12,10H6V5H12M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14C17,12.89 16.1,12 15,12H14V5C14,3.89 13.1,3 12,3H6C4.89,3 4,3.89 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23Z" /></g><g id="gate"><path d="M9,5V10H7V6H5V10H3V8H1V20H3V18H5V20H7V18H9V20H11V18H13V20H15V18H17V20H19V18H21V20H23V8H21V10H19V6H17V10H15V5H13V10H11V5H9M3,12H5V16H3V12M7,12H9V16H7V12M11,12H13V16H11V12M15,12H17V16H15V12M19,12H21V16H19V12Z" /></g><g id="gauge"><path d="M17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.2,16.7 10,16 12,16C14,16 15.9,16.7 17.3,18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M14.4,6.1C14.9,6.3 15.1,6.9 15,7.4L13.6,10.8C13.8,11.1 14,11.5 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12C10,11 10.7,10.1 11.7,10L13.1,6.7C13.3,6.1 13.9,5.9 14.4,6.1Z" /></g><g id="gavel"><path d="M2.3,20.28L11.9,10.68L10.5,9.26L9.78,9.97C9.39,10.36 8.76,10.36 8.37,9.97L7.66,9.26C7.27,8.87 7.27,8.24 7.66,7.85L13.32,2.19C13.71,1.8 14.34,1.8 14.73,2.19L15.44,2.9C15.83,3.29 15.83,3.92 15.44,4.31L14.73,5L16.15,6.43C16.54,6.04 17.17,6.04 17.56,6.43C17.95,6.82 17.95,7.46 17.56,7.85L18.97,9.26L19.68,8.55C20.07,8.16 20.71,8.16 21.1,8.55L21.8,9.26C22.19,9.65 22.19,10.29 21.8,10.68L16.15,16.33C15.76,16.72 15.12,16.72 14.73,16.33L14.03,15.63C13.63,15.24 13.63,14.6 14.03,14.21L14.73,13.5L13.32,12.09L3.71,21.7C3.32,22.09 2.69,22.09 2.3,21.7C1.91,21.31 1.91,20.67 2.3,20.28M20,19A2,2 0 0,1 22,21V22H12V21A2,2 0 0,1 14,19H20Z" /></g><g id="gender-female"><path d="M12,4A6,6 0 0,1 18,10C18,12.97 15.84,15.44 13,15.92V18H15V20H13V22H11V20H9V18H11V15.92C8.16,15.44 6,12.97 6,10A6,6 0 0,1 12,4M12,6A4,4 0 0,0 8,10A4,4 0 0,0 12,14A4,4 0 0,0 16,10A4,4 0 0,0 12,6Z" /></g><g id="gender-male"><path d="M9,9C10.29,9 11.5,9.41 12.47,10.11L17.58,5H13V3H21V11H19V6.41L13.89,11.5C14.59,12.5 15,13.7 15,15A6,6 0 0,1 9,21A6,6 0 0,1 3,15A6,6 0 0,1 9,9M9,11A4,4 0 0,0 5,15A4,4 0 0,0 9,19A4,4 0 0,0 13,15A4,4 0 0,0 9,11Z" /></g><g id="gender-male-female"><path d="M17.58,4H14V2H21V9H19V5.41L15.17,9.24C15.69,10.03 16,11 16,12C16,14.42 14.28,16.44 12,16.9V19H14V21H12V23H10V21H8V19H10V16.9C7.72,16.44 6,14.42 6,12A5,5 0 0,1 11,7C12,7 12.96,7.3 13.75,7.83L17.58,4M11,9A3,3 0 0,0 8,12A3,3 0 0,0 11,15A3,3 0 0,0 14,12A3,3 0 0,0 11,9Z" /></g><g id="gender-transgender"><path d="M19.58,3H15V1H23V9H21V4.41L16.17,9.24C16.69,10.03 17,11 17,12C17,14.42 15.28,16.44 13,16.9V19H15V21H13V23H11V21H9V19H11V16.9C8.72,16.44 7,14.42 7,12C7,11 7.3,10.04 7.82,9.26L6.64,8.07L5.24,9.46L3.83,8.04L5.23,6.65L3,4.42V8H1V1H8V3H4.41L6.64,5.24L8.08,3.81L9.5,5.23L8.06,6.66L9.23,7.84C10,7.31 11,7 12,7C13,7 13.96,7.3 14.75,7.83L19.58,3M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="ghost"><path d="M12,2A9,9 0 0,0 3,11V22L6,19L9,22L12,19L15,22L18,19L21,22V11A9,9 0 0,0 12,2M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12A2,2 0 0,1 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10A2,2 0 0,1 15,12A2,2 0 0,1 13,10A2,2 0 0,1 15,8Z" /></g><g id="gift"><path d="M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A1,1 0 0,1 1,11V8A2,2 0 0,1 3,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H21A2,2 0 0,1 23,8V11A1,1 0 0,1 22,12M4,20H11V12H4V20M20,20V12H13V20H20M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M3,8V10H11V8H3M13,8V10H21V8H13Z" /></g><g id="git"><path d="M2.6,10.59L8.38,4.8L10.07,6.5C9.83,7.35 10.22,8.28 11,8.73V14.27C10.4,14.61 10,15.26 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.26 13.6,14.61 13,14.27V9.41L15.07,11.5C15,11.65 15,11.82 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10C16.82,10 16.65,10 16.5,10.07L13.93,7.5C14.19,6.57 13.71,5.55 12.78,5.16C12.35,5 11.9,4.96 11.5,5.07L9.8,3.38L10.59,2.6C11.37,1.81 12.63,1.81 13.41,2.6L21.4,10.59C22.19,11.37 22.19,12.63 21.4,13.41L13.41,21.4C12.63,22.19 11.37,22.19 10.59,21.4L2.6,13.41C1.81,12.63 1.81,11.37 2.6,10.59Z" /></g><g id="github-box"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H14.85C14.5,21.92 14.5,21.24 14.5,21V18.26C14.5,17.33 14.17,16.72 13.81,16.41C16.04,16.16 18.38,15.32 18.38,11.5C18.38,10.39 18,9.5 17.35,8.79C17.45,8.54 17.8,7.5 17.25,6.15C17.25,6.15 16.41,5.88 14.5,7.17C13.71,6.95 12.85,6.84 12,6.84C11.15,6.84 10.29,6.95 9.5,7.17C7.59,5.88 6.75,6.15 6.75,6.15C6.2,7.5 6.55,8.54 6.65,8.79C6,9.5 5.62,10.39 5.62,11.5C5.62,15.31 7.95,16.17 10.17,16.42C9.89,16.67 9.63,17.11 9.54,17.76C8.97,18 7.5,18.45 6.63,16.93C6.63,16.93 6.1,15.97 5.1,15.9C5.1,15.9 4.12,15.88 5,16.5C5,16.5 5.68,16.81 6.14,17.97C6.14,17.97 6.73,19.91 9.5,19.31V21C9.5,21.24 9.5,21.92 9.14,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2Z" /></g><g id="github-circle"><path d="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z" /></g><g id="glass-flute"><path d="M8,2H16C15.67,5 15.33,8 14.75,9.83C14.17,11.67 13.33,12.33 12.92,14.08C12.5,15.83 12.5,18.67 13.08,20C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,20C11.5,18.67 11.5,15.83 11.08,14.08C10.67,12.33 9.83,11.67 9.25,9.83C8.67,8 8.33,5 8,2M10,4C10.07,5.03 10.15,6.07 10.24,7H13.76C13.85,6.07 13.93,5.03 14,4H10Z" /></g><g id="glass-mug"><path d="M10,4V7H18V4H10M8,2H20L21,2V3L20,4V20L21,21V22H20L8,22H7V21L8,20V18.6L4.2,16.83C3.5,16.5 3,15.82 3,15V8A2,2 0 0,1 5,6H8V4L7,3V2H8M5,15L8,16.39V8H5V15Z" /></g><g id="glass-stange"><path d="M8,2H16V22H8V2M10,4V7H14V4H10Z" /></g><g id="glass-tulip"><path d="M8,2H16C15.67,2.67 15.33,3.33 15.58,5C15.83,6.67 16.67,9.33 16.25,10.74C15.83,12.14 14.17,12.28 13.33,13.86C12.5,15.44 12.5,18.47 13.08,19.9C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,19.9C11.5,18.47 11.5,15.44 10.67,13.86C9.83,12.28 8.17,12.14 7.75,10.74C7.33,9.33 8.17,6.67 8.42,5C8.67,3.33 8.33,2.67 8,2M10,4C10,5.19 9.83,6.17 9.64,7H14.27C14.13,6.17 14,5.19 14,4H10Z" /></g><g id="glassdoor"><path d="M18,6H16V15C16,16 15.82,16.64 15,16.95L9.5,19V6C9.5,5.3 9.74,4.1 11,4.24L18,5V3.79L9,2.11C8.64,2.04 8.36,2 8,2C6.72,2 6,2.78 6,4V20.37C6,21.95 7.37,22.26 8,22L17,18.32C18,17.91 18,17 18,16V6Z" /></g><g id="glasses"><path d="M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z" /></g><g id="gmail"><path d="M20,18H18V9.25L12,13L6,9.25V18H4V6H5.2L12,10.25L18.8,6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="gnome"><path d="M18.42,2C14.26,2 13.5,7.93 15.82,7.93C18.16,7.93 22.58,2 18.42,2M12,2.73C11.92,2.73 11.85,2.73 11.78,2.74C9.44,3.04 10.26,7.12 11.5,7.19C12.72,7.27 14.04,2.73 12,2.73M7.93,4.34C7.81,4.34 7.67,4.37 7.53,4.43C5.65,5.21 7.24,8.41 8.3,8.2C9.27,8 9.39,4.3 7.93,4.34M4.93,6.85C4.77,6.84 4.59,6.9 4.41,7.03C2.9,8.07 4.91,10.58 5.8,10.19C6.57,9.85 6.08,6.89 4.93,6.85M13.29,8.77C10.1,8.8 6.03,10.42 5.32,13.59C4.53,17.11 8.56,22 12.76,22C14.83,22 17.21,20.13 17.66,17.77C18,15.97 13.65,16.69 13.81,17.88C14,19.31 12.76,20 11.55,19.1C7.69,16.16 17.93,14.7 17.25,10.69C17.03,9.39 15.34,8.76 13.29,8.77Z" /></g><g id="gondola"><path d="M18,10H13V7.59L22.12,6.07L21.88,4.59L16.41,5.5C16.46,5.35 16.5,5.18 16.5,5A1.5,1.5 0 0,0 15,3.5A1.5,1.5 0 0,0 13.5,5C13.5,5.35 13.63,5.68 13.84,5.93L13,6.07V5H11V6.41L10.41,6.5C10.46,6.35 10.5,6.18 10.5,6A1.5,1.5 0 0,0 9,4.5A1.5,1.5 0 0,0 7.5,6C7.5,6.36 7.63,6.68 7.83,6.93L1.88,7.93L2.12,9.41L11,7.93V10H6C4.89,10 4,10.9 4,12V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12A2,2 0 0,0 18,10M6,12H8.25V16H6V12M9.75,16V12H14.25V16H9.75M18,16H15.75V12H18V16Z" /></g><g id="google"><path d="M21.35,11.1H12.18V13.83H18.69C18.36,17.64 15.19,19.27 12.19,19.27C8.36,19.27 5,16.25 5,12C5,7.9 8.2,4.73 12.2,4.73C15.29,4.73 17.1,6.7 17.1,6.7L19,4.72C19,4.72 16.56,2 12.1,2C6.42,2 2.03,6.8 2.03,12C2.03,17.05 6.16,22 12.25,22C17.6,22 21.5,18.33 21.5,12.91C21.5,11.76 21.35,11.1 21.35,11.1V11.1Z" /></g><g id="google-cardboard"><path d="M20.74,6H3.2C2.55,6 2,6.57 2,7.27V17.73C2,18.43 2.55,19 3.23,19H8C8.54,19 9,18.68 9.16,18.21L10.55,14.74C10.79,14.16 11.35,13.75 12,13.75C12.65,13.75 13.21,14.16 13.45,14.74L14.84,18.21C15.03,18.68 15.46,19 15.95,19H20.74C21.45,19 22,18.43 22,17.73V7.27C22,6.57 21.45,6 20.74,6M7.22,14.58C6,14.58 5,13.55 5,12.29C5,11 6,10 7.22,10C8.44,10 9.43,11 9.43,12.29C9.43,13.55 8.44,14.58 7.22,14.58M16.78,14.58C15.56,14.58 14.57,13.55 14.57,12.29C14.57,11.03 15.56,10 16.78,10C18,10 19,11.03 19,12.29C19,13.55 18,14.58 16.78,14.58Z" /></g><g id="google-chrome"><path d="M12,20L15.46,14H15.45C15.79,13.4 16,12.73 16,12C16,10.8 15.46,9.73 14.62,9H19.41C19.79,9.93 20,10.94 20,12A8,8 0 0,1 12,20M4,12C4,10.54 4.39,9.18 5.07,8L8.54,14H8.55C9.24,15.19 10.5,16 12,16C12.45,16 12.88,15.91 13.29,15.77L10.89,19.91C7,19.37 4,16.04 4,12M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12M12,4C14.96,4 17.54,5.61 18.92,8H12C10.06,8 8.45,9.38 8.08,11.21L5.7,7.08C7.16,5.21 9.44,4 12,4M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="google-circles"><path d="M16.66,15H17C18,15 19,14.8 19.87,14.46C19.17,18.73 15.47,22 11,22C6,22 2,17.97 2,13C2,8.53 5.27,4.83 9.54,4.13C9.2,5 9,6 9,7V7.34C6.68,8.16 5,10.38 5,13A6,6 0 0,0 11,19C13.62,19 15.84,17.32 16.66,15M17,10A3,3 0 0,0 20,7A3,3 0 0,0 17,4A3,3 0 0,0 14,7A3,3 0 0,0 17,10M17,1A6,6 0 0,1 23,7A6,6 0 0,1 17,13A6,6 0 0,1 11,7C11,3.68 13.69,1 17,1Z" /></g><g id="google-circles-communities"><path d="M15,12C13.89,12 13,12.89 13,14A2,2 0 0,0 15,16A2,2 0 0,0 17,14C17,12.89 16.1,12 15,12M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M14,9C14,7.89 13.1,7 12,7C10.89,7 10,7.89 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9M9,12A2,2 0 0,0 7,14A2,2 0 0,0 9,16A2,2 0 0,0 11,14C11,12.89 10.1,12 9,12Z" /></g><g id="google-circles-extended"><path d="M18,19C16.89,19 16,18.1 16,17C16,15.89 16.89,15 18,15A2,2 0 0,1 20,17A2,2 0 0,1 18,19M18,13A4,4 0 0,0 14,17A4,4 0 0,0 18,21A4,4 0 0,0 22,17A4,4 0 0,0 18,13M12,11.1A1.9,1.9 0 0,0 10.1,13A1.9,1.9 0 0,0 12,14.9A1.9,1.9 0 0,0 13.9,13A1.9,1.9 0 0,0 12,11.1M6,19C4.89,19 4,18.1 4,17C4,15.89 4.89,15 6,15A2,2 0 0,1 8,17A2,2 0 0,1 6,19M6,13A4,4 0 0,0 2,17A4,4 0 0,0 6,21A4,4 0 0,0 10,17A4,4 0 0,0 6,13M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M12,10A4,4 0 0,0 16,6A4,4 0 0,0 12,2A4,4 0 0,0 8,6A4,4 0 0,0 12,10Z" /></g><g id="google-circles-group"><path d="M5,10A2,2 0 0,0 3,12C3,13.11 3.9,14 5,14C6.11,14 7,13.11 7,12A2,2 0 0,0 5,10M5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16M10.5,11H14V8L18,12L14,16V13H10.5V11M5,6C4.55,6 4.11,6.05 3.69,6.14C5.63,3.05 9.08,1 13,1C19.08,1 24,5.92 24,12C24,18.08 19.08,23 13,23C9.08,23 5.63,20.95 3.69,17.86C4.11,17.95 4.55,18 5,18C5.8,18 6.56,17.84 7.25,17.56C8.71,19.07 10.74,20 13,20A8,8 0 0,0 21,12A8,8 0 0,0 13,4C10.74,4 8.71,4.93 7.25,6.44C6.56,6.16 5.8,6 5,6Z" /></g><g id="google-controller"><path d="M7.97,16L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.21,7.81 5.14,6 7.5,6H16.5C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75A1.75,1.75 0 0,1 20.25,19.5C19.77,19.5 19.33,19.3 19,19L16.03,16H7.97M7,8V10H5V11H7V13H8V11H10V10H8V8H7M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></g><g id="google-controller-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H7.97L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.1,9.09 3.53,8.17 4.19,7.46L2,5.27M5,10V11H7V13H8V11.27L6.73,10H5M16.5,6C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75C22,18.41 21.64,19 21.1,19.28L7.82,6H16.5M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></g><g id="google-drive"><path d="M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z" /></g><g id="google-earth"><path d="M12.4,7.56C9.6,4.91 7.3,5.65 6.31,6.1C7.06,5.38 7.94,4.8 8.92,4.4C11.7,4.3 14.83,4.84 16.56,7.31C16.56,7.31 19,11.5 19.86,9.65C20.08,10.4 20.2,11.18 20.2,12C20.2,12.3 20.18,12.59 20.15,12.88C18.12,12.65 15.33,10.32 12.4,7.56M19.1,16.1C18.16,16.47 17,17.1 15.14,17.1C13.26,17.1 11.61,16.35 9.56,15.7C7.7,15.11 7,14.2 5.72,14.2C5.06,14.2 4.73,14.86 4.55,15.41C4.07,14.37 3.8,13.22 3.8,12C3.8,11.19 3.92,10.42 4.14,9.68C5.4,8.1 7.33,7.12 10.09,9.26C10.09,9.26 16.32,13.92 19.88,14.23C19.7,14.89 19.43,15.5 19.1,16.1M12,20.2C10.88,20.2 9.81,19.97 8.83,19.56C8.21,18.08 8.22,16.92 9.95,17.5C9.95,17.5 13.87,19 18,17.58C16.5,19.19 14.37,20.2 12,20.2M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="google-glass"><path d="M13,11V13.5H18.87C18.26,17 15.5,19.5 12,19.5A7.5,7.5 0 0,1 4.5,12A7.5,7.5 0 0,1 12,4.5C14.09,4.5 15.9,5.39 17.16,6.84L18.93,5.06C17.24,3.18 14.83,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22C17.5,22 21.5,17.5 21.5,12V11H13Z" /></g><g id="google-keep"><path d="M4,2H20A2,2 0 0,1 22,4V17.33L17.33,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M17,17V20.25L20.25,17H17M10,19H14V18H15V13C16.21,12.09 17,10.64 17,9A5,5 0 0,0 12,4A5,5 0 0,0 7,9C7,10.64 7.79,12.09 9,13V18H10V19M14,17H10V16H14V17M14,15H10V14H14V15M12,5A4,4 0 0,1 16,9C16,10.5 15.2,11.77 14,12.46V13H10V12.46C8.8,11.77 8,10.5 8,9A4,4 0 0,1 12,5Z" /></g><g id="google-maps"><path d="M5,4A2,2 0 0,0 3,6V16.29L11.18,8.11C11.06,7.59 11,7.07 11,6.53C11,5.62 11.2,4.76 11.59,4H5M18,21A2,2 0 0,0 20,19V11.86C19.24,13 18.31,14.21 17.29,15.5L16.5,16.5L15.72,15.5C14.39,13.85 13.22,12.32 12.39,10.91C12.05,10.33 11.76,9.76 11.53,9.18L7.46,13.25L15.21,21H18M3,19A2,2 0 0,0 5,21H13.79L6.75,13.96L3,17.71V19M16.5,15C19.11,11.63 21,9.1 21,6.57C21,4.05 19,2 16.5,2C14,2 12,4.05 12,6.57C12,9.1 13.87,11.63 16.5,15M18.5,6.5A2,2 0 0,1 16.5,8.5A2,2 0 0,1 14.5,6.5A2,2 0 0,1 16.5,4.5A2,2 0 0,1 18.5,6.5Z" /></g><g id="google-nearby"><path d="M4.2,3C3.57,3 3.05,3.5 3,4.11C3,8.66 3,13.24 3,17.8C3,18.46 3.54,19 4.2,19C4.31,19 4.42,19 4.53,18.95C8.5,16.84 12.56,14.38 16.5,12.08C16.94,11.89 17.21,11.46 17.21,11C17.21,10.57 17,10.17 16.6,9.96C12.5,7.56 8.21,5.07 4.53,3.05C4.42,3 4.31,3 4.2,3M19.87,6C19.76,6 19.65,6 19.54,6.05C18.6,6.57 17.53,7.18 16.5,7.75C16.85,7.95 17.19,8.14 17.5,8.33C18.5,8.88 19.07,9.9 19.07,11V11C19.07,12.18 18.38,13.27 17.32,13.77C15.92,14.59 12.92,16.36 11.32,17.29C14.07,18.89 16.82,20.5 19.54,21.95C19.65,22 19.76,22 19.87,22C20.54,22 21.07,21.46 21.07,20.8C21.07,16.24 21.08,11.66 21.07,7.11C21,6.5 20.5,6 19.87,6Z" /></g><g id="google-pages"><path d="M19,3H13V8L17,7L16,11H21V5C21,3.89 20.1,3 19,3M17,17L13,16V21H19A2,2 0 0,0 21,19V13H16M8,13H3V19A2,2 0 0,0 5,21H11V16L7,17M3,5V11H8L7,7L11,8V3H5C3.89,3 3,3.89 3,5Z" /></g><g id="google-photos"><path d="M17,12V7L12,2V7H7L2,12H7V17L12,22V17H17L22,12H17M12.88,12.88L12,15.53L11.12,12.88L8.47,12L11.12,11.12L12,8.46L12.88,11.11L15.53,12L12.88,12.88Z" /></g><g id="google-physical-web"><path d="M12,1.5A9,9 0 0,1 21,10.5C21,13.11 19.89,15.47 18.11,17.11L17.05,16.05C18.55,14.68 19.5,12.7 19.5,10.5A7.5,7.5 0 0,0 12,3A7.5,7.5 0 0,0 4.5,10.5C4.5,12.7 5.45,14.68 6.95,16.05L5.89,17.11C4.11,15.47 3,13.11 3,10.5A9,9 0 0,1 12,1.5M12,4.5A6,6 0 0,1 18,10.5C18,12.28 17.22,13.89 16,15L14.92,13.92C15.89,13.1 16.5,11.87 16.5,10.5C16.5,8 14.5,6 12,6C9.5,6 7.5,8 7.5,10.5C7.5,11.87 8.11,13.1 9.08,13.92L8,15C6.78,13.89 6,12.28 6,10.5A6,6 0 0,1 12,4.5M8.11,17.65L11.29,14.46C11.68,14.07 12.32,14.07 12.71,14.46L15.89,17.65C16.28,18.04 16.28,18.67 15.89,19.06L12.71,22.24C12.32,22.63 11.68,22.63 11.29,22.24L8.11,19.06C7.72,18.67 7.72,18.04 8.11,17.65Z" /></g><g id="google-play"><path d="M3,20.5V3.5C3,2.91 3.34,2.39 3.84,2.15L13.69,12L3.84,21.85C3.34,21.6 3,21.09 3,20.5M16.81,15.12L6.05,21.34L14.54,12.85L16.81,15.12M20.16,10.81C20.5,11.08 20.75,11.5 20.75,12C20.75,12.5 20.53,12.9 20.18,13.18L17.89,14.5L15.39,12L17.89,9.5L20.16,10.81M6.05,2.66L16.81,8.88L14.54,11.15L6.05,2.66Z" /></g><g id="google-plus"><path d="M23,11H21V9H19V11H17V13H19V15H21V13H23M8,11V13.4H12C11.8,14.4 10.8,16.4 8,16.4C5.6,16.4 3.7,14.4 3.7,12C3.7,9.6 5.6,7.6 8,7.6C9.4,7.6 10.3,8.2 10.8,8.7L12.7,6.9C11.5,5.7 9.9,5 8,5C4.1,5 1,8.1 1,12C1,15.9 4.1,19 8,19C12,19 14.7,16.2 14.7,12.2C14.7,11.7 14.7,11.4 14.6,11H8Z" /></g><g id="google-plus-box"><path d="M20,2A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4C2,2.89 2.9,2 4,2H20M20,12H18V10H17V12H15V13H17V15H18V13H20V12M9,11.29V13H11.86C11.71,13.71 11,15.14 9,15.14C7.29,15.14 5.93,13.71 5.93,12C5.93,10.29 7.29,8.86 9,8.86C10,8.86 10.64,9.29 11,9.64L12.36,8.36C11.5,7.5 10.36,7 9,7C6.21,7 4,9.21 4,12C4,14.79 6.21,17 9,17C11.86,17 13.79,15 13.79,12.14C13.79,11.79 13.79,11.57 13.71,11.29H9Z" /></g><g id="google-translate"><path d="M3,1C1.89,1 1,1.89 1,3V17C1,18.11 1.89,19 3,19H15L9,1H3M12.34,5L13,7H21V21H12.38L13.03,23H21C22.11,23 23,22.11 23,21V7C23,5.89 22.11,5 21,5H12.34M7.06,5.91C8.16,5.91 9.09,6.31 9.78,7L8.66,8.03C8.37,7.74 7.87,7.41 7.06,7.41C5.67,7.41 4.56,8.55 4.56,9.94C4.56,11.33 5.67,12.5 7.06,12.5C8.68,12.5 9.26,11.33 9.38,10.75H7.06V9.38H10.88C10.93,9.61 10.94,9.77 10.94,10.06C10.94,12.38 9.38,14 7.06,14C4.81,14 3,12.19 3,9.94C3,7.68 4.81,5.91 7.06,5.91M16,10V11H14.34L14.66,12H18C17.73,12.61 17.63,13.17 16.81,14.13C16.41,13.66 16.09,13.25 16,13H15C15.12,13.43 15.62,14.1 16.22,14.78C16.09,14.91 15.91,15.08 15.75,15.22L16.03,16.06C16.28,15.84 16.53,15.61 16.78,15.38C17.8,16.45 18.88,17.44 18.88,17.44L19.44,16.84C19.44,16.84 18.37,15.79 17.41,14.75C18.04,14.05 18.6,13.2 19,12H20V11H17V10H16Z" /></g><g id="google-wallet"><path d="M9.89,11.08C9.76,9.91 9.39,8.77 8.77,7.77C8.5,7.29 8.46,6.7 8.63,6.25C8.71,6 8.83,5.8 9.03,5.59C9.24,5.38 9.46,5.26 9.67,5.18C9.88,5.09 10,5.06 10.31,5.06C10.66,5.06 11,5.17 11.28,5.35L11.72,5.76L11.83,5.92C12.94,7.76 13.53,9.86 13.53,12L13.5,12.79C13.38,14.68 12.8,16.5 11.82,18.13C11.5,18.67 10.92,19 10.29,19L9.78,18.91L9.37,18.73C8.86,18.43 8.57,17.91 8.5,17.37C8.5,17.05 8.54,16.72 8.69,16.41L8.77,16.28C9.54,15 9.95,13.53 9.95,12L9.89,11.08M20.38,7.88C20.68,9.22 20.84,10.62 20.84,12C20.84,13.43 20.68,14.82 20.38,16.16L20.11,17.21C19.78,18.4 19.4,19.32 19,20C18.7,20.62 18.06,21 17.38,21C17.1,21 16.83,20.94 16.58,20.82C16,20.55 15.67,20.07 15.55,19.54L15.5,19.11C15.5,18.7 15.67,18.35 15.68,18.32C16.62,16.34 17.09,14.23 17.09,12C17.09,9.82 16.62,7.69 15.67,5.68C15.22,4.75 15.62,3.63 16.55,3.18C16.81,3.06 17.08,3 17.36,3C18.08,3 18.75,3.42 19.05,4.07C19.63,5.29 20.08,6.57 20.38,7.88M16.12,9.5C16.26,10.32 16.34,11.16 16.34,12C16.34,14 15.95,15.92 15.2,17.72C15.11,16.21 14.75,14.76 14.16,13.44L14.22,12.73L14.25,11.96C14.25,9.88 13.71,7.85 12.67,6.07C14,7.03 15.18,8.21 16.12,9.5M4,10.5C3.15,10.03 2.84,9 3.28,8.18C3.58,7.63 4.15,7.28 4.78,7.28C5.06,7.28 5.33,7.35 5.58,7.5C6.87,8.17 8.03,9.1 8.97,10.16L9.12,11.05L9.18,12C9.18,13.43 8.81,14.84 8.1,16.07C7.6,13.66 6.12,11.62 4,10.5Z" /></g><g id="gradient"><path d="M11,9H13V11H11V9M9,11H11V13H9V11M13,11H15V13H13V11M15,9H17V11H15V9M7,9H9V11H7V9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,18H7V16H9V18M13,18H11V16H13V18M17,18H15V16H17V18M19,11H17V13H19V15H17V13H15V15H13V13H11V15H9V13H7V15H5V13H7V11H5V5H19V11Z" /></g><g id="grease-pencil"><path d="M18.62,1.5C18.11,1.5 17.6,1.69 17.21,2.09L10.75,8.55L14.95,12.74L21.41,6.29C22.2,5.5 22.2,4.24 21.41,3.46L20.04,2.09C19.65,1.69 19.14,1.5 18.62,1.5M9.8,9.5L3.23,16.07L3.93,16.77C3.4,17.24 2.89,17.78 2.38,18.29C1.6,19.08 1.6,20.34 2.38,21.12C3.16,21.9 4.42,21.9 5.21,21.12C5.72,20.63 6.25,20.08 6.73,19.58L7.43,20.27L14,13.7" /></g><g id="grid"><path d="M10,4V8H14V4H10M16,4V8H20V4H16M16,10V14H20V10H16M16,16V20H20V16H16M14,20V16H10V20H14M8,20V16H4V20H8M8,14V10H4V14H8M8,8V4H4V8H8M10,14H14V10H10V14M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2Z" /></g><g id="grid-off"><path d="M0,2.77L1.28,1.5L22.5,22.72L21.23,24L19.23,22H4C2.92,22 2,21.1 2,20V4.77L0,2.77M10,4V7.68L8,5.68V4H6.32L4.32,2H20A2,2 0 0,1 22,4V19.7L20,17.7V16H18.32L16.32,14H20V10H16V13.68L14,11.68V10H12.32L10.32,8H14V4H10M16,4V8H20V4H16M16,20H17.23L16,18.77V20M4,8H5.23L4,6.77V8M10,14H11.23L10,12.77V14M14,20V16.77L13.23,16H10V20H14M8,20V16H4V20H8M8,14V10.77L7.23,10H4V14H8Z" /></g><g id="group"><path d="M8,8V12H13V8H8M1,1H5V2H19V1H23V5H22V19H23V23H19V22H5V23H1V19H2V5H1V1M5,19V20H19V19H20V5H19V4H5V5H4V19H5M6,6H15V10H18V18H8V14H6V6M15,14H10V16H16V12H15V14Z" /></g><g id="guitar-electric"><path d="M20.5,2L18.65,4.08L18.83,4.26L10.45,12.16C10.23,12.38 9.45,12.75 9.26,12.28C8.81,11.12 10.23,11 10,10.8C8.94,10.28 7.73,11.18 7.67,11.23C6.94,11.78 6.5,12.43 6.26,13.13C5.96,14.04 5.17,14.15 4.73,14.17C3.64,14.24 3,14.53 2.5,15.23C2.27,15.54 1.9,16 2,16.96C2.16,18 2.95,19.33 3.56,20C4.21,20.69 5.05,21.38 5.81,21.75C6.35,22 6.68,22.08 7.47,21.88C8.17,21.7 8.86,21.14 9.15,20.4C9.39,19.76 9.42,19.3 9.53,18.78C9.67,18.11 9.76,18 10.47,17.68C11.14,17.39 11.5,17.35 12.05,16.78C12.44,16.37 12.64,15.93 12.76,15.46C12.86,15.06 12.93,14.56 12.74,14.5C12.57,14.35 12.27,15.31 11.56,14.86C11.05,14.54 11.11,13.74 11.55,13.29C14.41,10.38 16.75,8 19.63,5.09L19.86,5.32L22,3.5Z" /></g><g id="guitar-pick"><path d="M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1Z" /></g><g id="guitar-pick-outline"><path d="M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1M18.2,10.2C17.1,12.9 16.1,14.9 14.8,16.7C14.6,16.9 14.5,17.2 14.3,17.4C13.8,18.2 12.6,20 12,20C12,20 12,20 12,20C11.3,20 10.2,18.3 9.6,17.4C9.4,17.2 9.3,16.9 9.1,16.7C7.9,14.9 6.8,12.9 5.7,10.2C5.5,9.5 4.7,7 6.3,5.5C6.8,5 7.6,4.7 8.6,4.4C9,4.4 10.7,4 11.8,4C11.8,4 12.1,4 12.1,4C13.2,4 14.9,4.3 15.3,4.4C16.3,4.7 17.1,5 17.6,5.5C19.3,7 18.5,9.5 18.2,10.2Z" /></g><g id="hackernews"><path d="M2,2H22V22H2V2M11.25,17.5H12.75V13.06L16,7H14.5L12,11.66L9.5,7H8L11.25,13.06V17.5Z" /></g><g id="hamburger"><path d="M2,16H22V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V16M6,4H18C20.22,4 22,5.78 22,8V10H2V8C2,5.78 3.78,4 6,4M4,11H15L17,13L19,11H20C21.11,11 22,11.89 22,13C22,14.11 21.11,15 20,15H4C2.89,15 2,14.11 2,13C2,11.89 2.89,11 4,11Z" /></g><g id="hand-pointing-right"><path d="M21,9A1,1 0 0,1 22,10A1,1 0 0,1 21,11H16.53L16.4,12.21L14.2,17.15C14,17.65 13.47,18 12.86,18H8.5C7.7,18 7,17.27 7,16.5V10C7,9.61 7.16,9.26 7.43,9L11.63,4.1L12.4,4.84C12.6,5.03 12.72,5.29 12.72,5.58L12.69,5.8L11,9H21M2,18V10H5V18H2Z" /></g><g id="hanger"><path d="M20.76,16.34H20.75C21.5,16.77 22,17.58 22,18.5A2.5,2.5 0 0,1 19.5,21H4.5A2.5,2.5 0 0,1 2,18.5C2,17.58 2.5,16.77 3.25,16.34H3.24L11,11.86C11,11.86 11,11 12,10C13,10 14,9.1 14,8A2,2 0 0,0 12,6A2,2 0 0,0 10,8H8A4,4 0 0,1 12,4A4,4 0 0,1 16,8C16,9.86 14.73,11.42 13,11.87L20.76,16.34M4.5,19V19H19.5V19C19.67,19 19.84,18.91 19.93,18.75C20.07,18.5 20,18.21 19.75,18.07L12,13.59L4.25,18.07C4,18.21 3.93,18.5 4.07,18.75C4.16,18.91 4.33,19 4.5,19Z" /></g><g id="hangouts"><path d="M15,11L14,13H12.5L13.5,11H12V8H15M11,11L10,13H8.5L9.5,11H8V8H11M11.5,2A8.5,8.5 0 0,0 3,10.5A8.5,8.5 0 0,0 11.5,19H12V22.5C16.86,20.15 20,15 20,10.5C20,5.8 16.19,2 11.5,2Z" /></g><g id="harddisk"><path d="M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z" /></g><g id="headphones"><path d="M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H18A3,3 0 0,0 21,17V10C21,5 16.97,1 12,1Z" /></g><g id="headphones-box"><path d="M7.2,18C6.54,18 6,17.46 6,16.8V13.2L6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12V13.2L18,16.8A1.2,1.2 0 0,1 16.8,18H14V14H16V12A4,4 0 0,0 12,8A4,4 0 0,0 8,12V14H10V18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="headphones-settings"><path d="M12,1A9,9 0 0,1 21,10V17A3,3 0 0,1 18,20H15V12H19V10A7,7 0 0,0 12,3A7,7 0 0,0 5,10V12H9V20H6A3,3 0 0,1 3,17V10A9,9 0 0,1 12,1M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z" /></g><g id="headset"><path d="M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H19V21H12V23H18A3,3 0 0,0 21,20V10C21,5 16.97,1 12,1Z" /></g><g id="headset-dock"><path d="M2,18H9V6.13C7.27,6.57 6,8.14 6,10V11H8V17H6A2,2 0 0,1 4,15V10A6,6 0 0,1 10,4H11A6,6 0 0,1 17,10V12H18V9H20V12A2,2 0 0,1 18,14H17V15A2,2 0 0,1 15,17H13V11H15V10C15,8.14 13.73,6.57 12,6.13V18H22V20H2V18Z" /></g><g id="headset-off"><path d="M22.5,4.77L20.43,6.84C20.8,7.82 21,8.89 21,10V20A3,3 0 0,1 18,23H12V21H19V20H15V12.27L9,18.27V20H7.27L4.77,22.5L3.5,21.22L21.22,3.5L22.5,4.77M12,1C14.53,1 16.82,2.04 18.45,3.72L17.04,5.14C15.77,3.82 14,3 12,3A7,7 0 0,0 5,10V12H9V13.18L3.5,18.67C3.19,18.19 3,17.62 3,17V10A9,9 0 0,1 12,1M19,12V10C19,9.46 18.94,8.94 18.83,8.44L15.27,12H19Z" /></g><g id="heart"><path d="M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z" /></g><g id="heart-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17Z" /></g><g id="heart-box-outline"><path d="M12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z" /></g><g id="heart-broken"><path d="M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C8.17,3 8.82,3.12 9.44,3.33L13,9.35L9,14.35L12,21.35V21.35M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L11,14.35L15.5,9.35L12.85,4.27C13.87,3.47 15.17,3 16.5,3Z" /></g><g id="heart-half-outline"><path d="M16.5,5C15,5 13.58,5.91 13,7.2V17.74C17.25,13.87 20,11.2 20,8.5C20,6.5 18.5,5 16.5,5M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3Z" /></g><g id="heart-half-part"><path d="M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z" /></g><g id="heart-half-part-outline"><path d="M4,8.5C4,11.2 6.75,13.87 11,17.74V7.2C10.42,5.91 9,5 7.5,5C5.5,5 4,6.5 4,8.5M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z" /></g><g id="heart-outline"><path d="M12.1,18.55L12,18.65L11.89,18.55C7.14,14.24 4,11.39 4,8.5C4,6.5 5.5,5 7.5,5C9.04,5 10.54,6 11.07,7.36H12.93C13.46,6 14.96,5 16.5,5C18.5,5 20,6.5 20,8.5C20,11.39 16.86,14.24 12.1,18.55M16.5,3C14.76,3 13.09,3.81 12,5.08C10.91,3.81 9.24,3 7.5,3C4.42,3 2,5.41 2,8.5C2,12.27 5.4,15.36 10.55,20.03L12,21.35L13.45,20.03C18.6,15.36 22,12.27 22,8.5C22,5.41 19.58,3 16.5,3Z" /></g><g id="heart-pulse"><path d="M7.5,4A5.5,5.5 0 0,0 2,9.5C2,10 2.09,10.5 2.22,11H6.3L7.57,7.63C7.87,6.83 9.05,6.75 9.43,7.63L11.5,13L12.09,11.58C12.22,11.25 12.57,11 13,11H21.78C21.91,10.5 22,10 22,9.5A5.5,5.5 0 0,0 16.5,4C14.64,4 13,4.93 12,6.34C11,4.93 9.36,4 7.5,4V4M3,12.5A1,1 0 0,0 2,13.5A1,1 0 0,0 3,14.5H5.44L11,20C12,20.9 12,20.9 13,20L18.56,14.5H21A1,1 0 0,0 22,13.5A1,1 0 0,0 21,12.5H13.4L12.47,14.8C12.07,15.81 10.92,15.67 10.55,14.83L8.5,9.5L7.54,11.83C7.39,12.21 7.05,12.5 6.6,12.5H3Z" /></g><g id="help"><path d="M10,19H13V22H10V19M12,2C17.35,2.22 19.68,7.62 16.5,11.67C15.67,12.67 14.33,13.33 13.67,14.17C13,15 13,16 13,17H10C10,15.33 10,13.92 10.67,12.92C11.33,11.92 12.67,11.33 13.5,10.67C15.92,8.43 15.32,5.26 12,5A3,3 0 0,0 9,8H6A6,6 0 0,1 12,2Z" /></g><g id="help-circle"><path d="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="help-circle-outline"><path d="M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z" /></g><g id="hexagon"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5Z" /></g><g id="hexagon-outline"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="highway"><path d="M10,2L8,8H11V2H10M13,2V8H16L14,2H13M2,9V10H4V11H6V10H18L18.06,11H20V10H22V9H2M7,11L3.34,22H11V11H7M13,11V22H20.66L17,11H13Z" /></g><g id="history"><path d="M11,7V12.11L15.71,14.9L16.5,13.62L12.5,11.25V7M12.5,2C8.97,2 5.91,3.92 4.27,6.77L2,4.5V11H8.5L5.75,8.25C6.96,5.73 9.5,4 12.5,4A7.5,7.5 0 0,1 20,11.5A7.5,7.5 0 0,1 12.5,19C9.23,19 6.47,16.91 5.44,14H3.34C4.44,18.03 8.11,21 12.5,21C17.74,21 22,16.75 22,11.5A9.5,9.5 0 0,0 12.5,2Z" /></g><g id="hololens"><path d="M12,8C12,8 22,8 22,11C22,11 22.09,14.36 21.75,14.25C21,11 12,11 12,11C12,11 3,11 2.25,14.25C1.91,14.36 2,11 2,11C2,8 12,8 12,8M12,12C20,12 20.75,14.25 20.75,14.25C19.75,17.25 19,18 15,18C12,18 13,16.5 12,16.5C11,16.5 12,18 9,18C5,18 4.25,17.25 3.25,14.25C3.25,14.25 4,12 12,12Z" /></g><g id="home"><path d="M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z" /></g><g id="home-map-marker"><path d="M12,3L2,12H5V20H19V12H22L12,3M12,7.7C14.1,7.7 15.8,9.4 15.8,11.5C15.8,14.5 12,18 12,18C12,18 8.2,14.5 8.2,11.5C8.2,9.4 9.9,7.7 12,7.7M12,10A1.5,1.5 0 0,0 10.5,11.5A1.5,1.5 0 0,0 12,13A1.5,1.5 0 0,0 13.5,11.5A1.5,1.5 0 0,0 12,10Z" /></g><g id="home-modern"><path d="M6,21V8A2,2 0 0,1 8,6L16,3V6A2,2 0 0,1 18,8V21H12V16H8V21H6M14,19H16V16H14V19M8,13H10V9H8V13M12,13H16V9H12V13Z" /></g><g id="home-outline"><path d="M9,19V13H11L13,13H15V19H18V10.91L12,4.91L6,10.91V19H9M12,2.09L21.91,12H20V21H13V15H11V21H4V12H2.09L12,2.09Z" /></g><g id="home-variant"><path d="M8,20H5V12H2L12,3L22,12H19V20H12V14H8V20M14,14V17H17V14H14Z" /></g><g id="hook"><path d="M18,6C18,7.82 16.76,9.41 15,9.86V17A5,5 0 0,1 10,22A5,5 0 0,1 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V9.86C11.23,9.4 10,7.8 10,5.97C10,3.76 11.8,2 14,2C16.22,2 18,3.79 18,6M14,8A2,2 0 0,0 16,6A2,2 0 0,0 14,4A2,2 0 0,0 12,6A2,2 0 0,0 14,8Z" /></g><g id="hook-off"><path d="M13,9.86V11.18L15,13.18V9.86C17.14,9.31 18.43,7.13 17.87,5C17.32,2.85 15.14,1.56 13,2.11C10.86,2.67 9.57,4.85 10.13,7C10.5,8.4 11.59,9.5 13,9.86M14,4A2,2 0 0,1 16,6A2,2 0 0,1 14,8A2,2 0 0,1 12,6A2,2 0 0,1 14,4M18.73,22L14.86,18.13C14.21,20.81 11.5,22.46 8.83,21.82C6.6,21.28 5,19.29 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V16.27L2,5.27L3.28,4L13,13.72L15,15.72L20,20.72L18.73,22Z" /></g><g id="hops"><path d="M21,12C21,12 12.5,10 12.5,2C12.5,2 21,2 21,12M3,12C3,2 11.5,2 11.5,2C11.5,10 3,12 3,12M12,6.5C12,6.5 13,8.66 15,10.5C14.76,14.16 12,16 12,16C12,16 9.24,14.16 9,10.5C11,8.66 12,6.5 12,6.5M20.75,13.25C20.75,13.25 20,17 18,19C18,19 15.53,17.36 14.33,14.81C15.05,13.58 15.5,12.12 15.75,11.13C17.13,12.18 18.75,13 20.75,13.25M15.5,18.25C14.5,20.25 12,21.75 12,21.75C12,21.75 9.5,20.25 8.5,18.25C8.5,18.25 9.59,17.34 10.35,15.8C10.82,16.35 11.36,16.79 12,17C12.64,16.79 13.18,16.35 13.65,15.8C14.41,17.34 15.5,18.25 15.5,18.25M3.25,13.25C5.25,13 6.87,12.18 8.25,11.13C8.5,12.12 8.95,13.58 9.67,14.81C8.47,17.36 6,19 6,19C4,17 3.25,13.25 3.25,13.25Z" /></g><g id="hospital"><path d="M18,14H14V18H10V14H6V10H10V6H14V10H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="hospital-building"><path d="M2,22V7A1,1 0 0,1 3,6H7V2H17V6H21A1,1 0 0,1 22,7V22H14V17H10V22H2M9,4V10H11V8H13V10H15V4H13V6H11V4H9M4,20H8V17H4V20M4,15H8V12H4V15M16,20H20V17H16V20M16,15H20V12H16V15M10,15H14V12H10V15Z" /></g><g id="hospital-marker"><path d="M12,2C15.86,2 19,5.13 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M9,6V12H11V10H13V12H15V6H13V8H11V6H9Z" /></g><g id="hotel"><path d="M19,7H11V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13Z" /></g><g id="houzz"><path d="M12,24V16L5.1,20V12H5.1V4L12,0V8L5.1,12L12,16V8L18.9,4V12H18.9V20L12,24Z" /></g><g id="houzz-box"><path d="M12,4L7.41,6.69V12L12,9.3V4M12,9.3V14.7L12,20L16.59,17.31V12L16.59,6.6L12,9.3M12,14.7L7.41,12V17.4L12,14.7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" /></g><g id="human"><path d="M21,9H15V22H13V16H11V22H9V9H3V7H21M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6C10.89,6 10,5.1 10,4C10,2.89 10.89,2 12,2Z" /></g><g id="human-child"><path d="M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M11,22H8V16H6V9H18V16H16V22H13V18H11V22Z" /></g><g id="human-female"><path d="M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,22V16H7.5L10.09,8.41C10.34,7.59 11.1,7 12,7C12.9,7 13.66,7.59 13.91,8.41L16.5,16H13.5V22H10.5Z" /></g><g id="human-greeting"><path d="M1.5,4V5.5C1.5,9.65 3.71,13.28 7,15.3V20H22V18C22,15.34 16.67,14 14,14C14,14 13.83,14 13.75,14C9,14 5,10 5,5.5V4M14,4A4,4 0 0,0 10,8A4,4 0 0,0 14,12A4,4 0 0,0 18,8A4,4 0 0,0 14,4Z" /></g><g id="human-handsdown"><path d="M12,1C10.89,1 10,1.9 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3A2,2 0 0,0 12,1M10,6C9.73,6 9.5,6.11 9.31,6.28H9.3L4,11.59L5.42,13L9,9.41V22H11V15H13V22H15V9.41L18.58,13L20,11.59L14.7,6.28C14.5,6.11 14.27,6 14,6" /></g><g id="human-handsup"><path d="M5,1C5,3.7 6.56,6.16 9,7.32V22H11V15H13V22H15V7.31C17.44,6.16 19,3.7 19,1H17A5,5 0 0,1 12,6A5,5 0 0,1 7,1M12,1C10.89,1 10,1.89 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3C14,1.89 13.11,1 12,1Z" /></g><g id="human-male"><path d="M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,7H13.5A2,2 0 0,1 15.5,9V14.5H14V22H10V14.5H8.5V9A2,2 0 0,1 10.5,7Z" /></g><g id="human-male-female"><path d="M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,22V16H12L14.59,8.41C14.84,7.59 15.6,7 16.5,7C17.4,7 18.16,7.59 18.41,8.41L21,16H18V22H15Z" /></g><g id="human-pregnant"><path d="M9,4C9,2.89 9.89,2 11,2C12.11,2 13,2.89 13,4C13,5.11 12.11,6 11,6C9.89,6 9,5.11 9,4M16,13C16,11.66 15.17,10.5 14,10A3,3 0 0,0 11,7A3,3 0 0,0 8,10V17H10V22H13V17H16V13Z" /></g><g id="image"><path d="M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z" /></g><g id="image-album"><path d="M6,19L9,15.14L11.14,17.72L14.14,13.86L18,19H6M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="image-area"><path d="M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M5,16H19L14.5,10L11,14.5L8.5,11.5L5,16Z" /></g><g id="image-area-close"><path d="M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M5,14H19L14.5,8L11,12.5L8.5,9.5L5,14Z" /></g><g id="image-broken"><path d="M19,3A2,2 0 0,1 21,5V11H19V13H19L17,13V15H15V17H13V19H11V21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19M21,15V19A2,2 0 0,1 19,21H19L15,21V19H17V17H19V15H21M19,8.5A0.5,0.5 0 0,0 18.5,8H5.5A0.5,0.5 0 0,0 5,8.5V15.5A0.5,0.5 0 0,0 5.5,16H11V15H13V13H15V11H17V9H19V8.5Z" /></g><g id="image-broken-variant"><path d="M21,5V11.59L18,8.58L14,12.59L10,8.59L6,12.59L3,9.58V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M18,11.42L21,14.43V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V12.42L6,15.41L10,11.41L14,15.41" /></g><g id="image-filter"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z" /></g><g id="image-filter-black-white"><path d="M19,19L12,11V19H5L12,11V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="image-filter-center-focus"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z" /></g><g id="image-filter-center-focus-weak"><path d="M5,15H3V19A2,2 0 0,0 5,21H9V19H5M5,5H9V3H5A2,2 0 0,0 3,5V9H5M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14Z" /></g><g id="image-filter-drama"><path d="M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10A4,4 0 0,1 10,14H12C12,11.24 10.14,8.92 7.6,8.22C8.61,6.88 10.2,6 12,6C15.03,6 17.5,8.47 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.61,5.64 5.36,8.04C2.35,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04Z" /></g><g id="image-filter-frames"><path d="M18,8H6V18H18M20,20H4V6H8.5L12.04,2.5L15.5,6H20M20,4H16L12,0L8,4H4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V6A2,2 0 0,0 20,4Z" /></g><g id="image-filter-hdr"><path d="M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z" /></g><g id="image-filter-none"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="image-filter-tilt-shift"><path d="M5.68,19.74C7.16,20.95 9,21.75 11,21.95V19.93C9.54,19.75 8.21,19.17 7.1,18.31M13,19.93V21.95C15,21.75 16.84,20.95 18.32,19.74L16.89,18.31C15.79,19.17 14.46,19.75 13,19.93M18.31,16.9L19.74,18.33C20.95,16.85 21.75,15 21.95,13H19.93C19.75,14.46 19.17,15.79 18.31,16.9M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12M4.07,13H2.05C2.25,15 3.05,16.84 4.26,18.32L5.69,16.89C4.83,15.79 4.25,14.46 4.07,13M5.69,7.1L4.26,5.68C3.05,7.16 2.25,9 2.05,11H4.07C4.25,9.54 4.83,8.21 5.69,7.1M19.93,11H21.95C21.75,9 20.95,7.16 19.74,5.68L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11M18.32,4.26C16.84,3.05 15,2.25 13,2.05V4.07C14.46,4.25 15.79,4.83 16.9,5.69M11,4.07V2.05C9,2.25 7.16,3.05 5.68,4.26L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07Z" /></g><g id="image-filter-vintage"><path d="M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M18.7,12.4C18.42,12.24 18.13,12.11 17.84,12C18.13,11.89 18.42,11.76 18.7,11.6C20.62,10.5 21.69,8.5 21.7,6.41C19.91,5.38 17.63,5.3 15.7,6.41C15.42,6.57 15.16,6.76 14.92,6.95C14.97,6.64 15,6.32 15,6C15,3.78 13.79,1.85 12,0.81C10.21,1.85 9,3.78 9,6C9,6.32 9.03,6.64 9.08,6.95C8.84,6.75 8.58,6.56 8.3,6.4C6.38,5.29 4.1,5.37 2.3,6.4C2.3,8.47 3.37,10.5 5.3,11.59C5.58,11.75 5.87,11.88 6.16,12C5.87,12.1 5.58,12.23 5.3,12.39C3.38,13.5 2.31,15.5 2.3,17.58C4.09,18.61 6.37,18.69 8.3,17.58C8.58,17.42 8.84,17.23 9.08,17.04C9.03,17.36 9,17.68 9,18C9,20.22 10.21,22.15 12,23.19C13.79,22.15 15,20.22 15,18C15,17.68 14.97,17.36 14.92,17.05C15.16,17.25 15.42,17.43 15.7,17.59C17.62,18.7 19.9,18.62 21.7,17.59C21.69,15.5 20.62,13.5 18.7,12.4Z" /></g><g id="image-multiple"><path d="M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6" /></g><g id="import"><path d="M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z" /></g><g id="inbox"><path d="M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="inbox-arrow-down"><path d="M16,10H14V7H10V10H8L12,14M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="inbox-arrow-up"><path d="M14,14H10V11H8L12,7L16,11H14V14M16,11M5,15V5H19V15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3" /></g><g id="incognito"><path d="M12,3C9.31,3 7.41,4.22 7.41,4.22L6,9H18L16.59,4.22C16.59,4.22 14.69,3 12,3M12,11C9.27,11 5.39,11.54 5.13,11.59C4.09,11.87 3.25,12.15 2.59,12.41C1.58,12.75 1,13 1,13H23C23,13 22.42,12.75 21.41,12.41C20.75,12.15 19.89,11.87 18.84,11.59C18.84,11.59 14.82,11 12,11M7.5,14A3.5,3.5 0 0,0 4,17.5A3.5,3.5 0 0,0 7.5,21A3.5,3.5 0 0,0 11,17.5C11,17.34 11,17.18 10.97,17.03C11.29,16.96 11.63,16.9 12,16.91C12.37,16.91 12.71,16.96 13.03,17.03C13,17.18 13,17.34 13,17.5A3.5,3.5 0 0,0 16.5,21A3.5,3.5 0 0,0 20,17.5A3.5,3.5 0 0,0 16.5,14C15.03,14 13.77,14.9 13.25,16.19C12.93,16.09 12.55,16 12,16C11.45,16 11.07,16.09 10.75,16.19C10.23,14.9 8.97,14 7.5,14M7.5,15A2.5,2.5 0 0,1 10,17.5A2.5,2.5 0 0,1 7.5,20A2.5,2.5 0 0,1 5,17.5A2.5,2.5 0 0,1 7.5,15M16.5,15A2.5,2.5 0 0,1 19,17.5A2.5,2.5 0 0,1 16.5,20A2.5,2.5 0 0,1 14,17.5A2.5,2.5 0 0,1 16.5,15Z" /></g><g id="infinity"><path d="M18.6,6.62C21.58,6.62 24,9 24,12C24,14.96 21.58,17.37 18.6,17.37C17.15,17.37 15.8,16.81 14.78,15.8L12,13.34L9.17,15.85C8.2,16.82 6.84,17.38 5.4,17.38C2.42,17.38 0,14.96 0,12C0,9.04 2.42,6.62 5.4,6.62C6.84,6.62 8.2,7.18 9.22,8.2L12,10.66L14.83,8.15C15.8,7.18 17.16,6.62 18.6,6.62M7.8,14.39L10.5,12L7.84,9.65C7.16,8.97 6.31,8.62 5.4,8.62C3.53,8.62 2,10.13 2,12C2,13.87 3.53,15.38 5.4,15.38C6.31,15.38 7.16,15.03 7.8,14.39M16.2,9.61L13.5,12L16.16,14.35C16.84,15.03 17.7,15.38 18.6,15.38C20.47,15.38 22,13.87 22,12C22,10.13 20.47,8.62 18.6,8.62C17.69,8.62 16.84,8.97 16.2,9.61Z" /></g><g id="information"><path d="M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="information-outline"><path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" /></g><g id="information-variant"><path d="M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z" /></g><g id="instagram"><path d="M7.8,2H16.2C19.4,2 22,4.6 22,7.8V16.2A5.8,5.8 0 0,1 16.2,22H7.8C4.6,22 2,19.4 2,16.2V7.8A5.8,5.8 0 0,1 7.8,2M7.6,4A3.6,3.6 0 0,0 4,7.6V16.4C4,18.39 5.61,20 7.6,20H16.4A3.6,3.6 0 0,0 20,16.4V7.6C20,5.61 18.39,4 16.4,4H7.6M17.25,5.5A1.25,1.25 0 0,1 18.5,6.75A1.25,1.25 0 0,1 17.25,8A1.25,1.25 0 0,1 16,6.75A1.25,1.25 0 0,1 17.25,5.5M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="instapaper"><path d="M10,5A1,1 0 0,0 9,4H8V2H16V4H15A1,1 0 0,0 14,5V19A1,1 0 0,0 15,20H16V22H8V20H9A1,1 0 0,0 10,19V5Z" /></g><g id="internet-explorer"><path d="M13,3L14,3.06C16.8,1.79 19.23,1.64 20.5,2.92C21.5,3.93 21.58,5.67 20.92,7.72C21.61,9 22,10.45 22,12L21.95,13H9.08C9.45,15.28 11.06,17 13,17C14.31,17 15.47,16.21 16.2,15H21.5C20.25,18.5 16.92,21 13,21C11.72,21 10.5,20.73 9.41,20.25C6.5,21.68 3.89,21.9 2.57,20.56C1,18.96 1.68,15.57 4,12C4.93,10.54 6.14,9.06 7.57,7.65L8.38,6.88C7.21,7.57 5.71,8.62 4.19,10.17C5.03,6.08 8.66,3 13,3M13,7C11.21,7 9.69,8.47 9.18,10.5H16.82C16.31,8.47 14.79,7 13,7M20.06,4.06C19.4,3.39 18.22,3.35 16.74,3.81C18.22,4.5 19.5,5.56 20.41,6.89C20.73,5.65 20.64,4.65 20.06,4.06M3.89,20C4.72,20.84 6.4,20.69 8.44,19.76C6.59,18.67 5.17,16.94 4.47,14.88C3.27,17.15 3,19.07 3.89,20Z" /></g><g id="invert-colors"><path d="M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z" /></g><g id="itunes"><path d="M7.85,17.07C7.03,17.17 3.5,17.67 4.06,20.26C4.69,23.3 9.87,22.59 9.83,19C9.81,16.57 9.83,9.2 9.83,9.2C9.83,9.2 9.76,8.53 10.43,8.39L18.19,6.79C18.19,6.79 18.83,6.65 18.83,7.29C18.83,7.89 18.83,14.2 18.83,14.2C18.83,14.2 18.9,14.83 18.12,15C17.34,15.12 13.91,15.4 14.19,18C14.5,21.07 20,20.65 20,17.07V2.61C20,2.61 20.04,1.62 18.9,1.87L9.5,3.78C9.5,3.78 8.66,3.96 8.66,4.77C8.66,5.5 8.66,16.11 8.66,16.11C8.66,16.11 8.66,16.96 7.85,17.07Z" /></g><g id="jeepney"><path d="M19,13V7H20V4H4V7H5V13H2C2,13.93 2.5,14.71 3.5,14.93V20A1,1 0 0,0 4.5,21H5.5A1,1 0 0,0 6.5,20V19H17.5V20A1,1 0 0,0 18.5,21H19.5A1,1 0 0,0 20.5,20V14.93C21.5,14.7 22,13.93 22,13H19M8,15A1.5,1.5 0 0,1 6.5,13.5A1.5,1.5 0 0,1 8,12A1.5,1.5 0 0,1 9.5,13.5A1.5,1.5 0 0,1 8,15M16,15A1.5,1.5 0 0,1 14.5,13.5A1.5,1.5 0 0,1 16,12A1.5,1.5 0 0,1 17.5,13.5A1.5,1.5 0 0,1 16,15M17.5,10.5C15.92,10.18 14.03,10 12,10C9.97,10 8,10.18 6.5,10.5V7H17.5V10.5Z" /></g><g id="jira"><path d="M12,2A1.58,1.58 0 0,1 13.58,3.58A1.58,1.58 0 0,1 12,5.16A1.58,1.58 0 0,1 10.42,3.58A1.58,1.58 0 0,1 12,2M7.79,3.05C8.66,3.05 9.37,3.76 9.37,4.63C9.37,5.5 8.66,6.21 7.79,6.21A1.58,1.58 0 0,1 6.21,4.63A1.58,1.58 0 0,1 7.79,3.05M16.21,3.05C17.08,3.05 17.79,3.76 17.79,4.63C17.79,5.5 17.08,6.21 16.21,6.21A1.58,1.58 0 0,1 14.63,4.63A1.58,1.58 0 0,1 16.21,3.05M11.8,10.95C9.7,8.84 10.22,7.79 10.22,7.79H13.91C13.91,9.37 11.8,10.95 11.8,10.95M13.91,21.47C13.91,21.47 13.91,19.37 9.7,15.16C5.5,10.95 4.96,9.89 4.43,6.74C4.43,6.74 4.83,6.21 5.36,6.74C5.88,7.26 7.07,7.66 8.12,7.66C8.12,7.66 9.17,10.95 12.07,13.05C12.07,13.05 15.88,9.11 15.88,7.53C15.88,7.53 17.07,7.79 18.5,6.74C18.5,6.74 19.5,6.21 19.57,6.74C19.7,7.79 18.64,11.47 14.3,15.16C14.3,15.16 17.07,18.32 16.8,21.47H13.91M9.17,16.21L11.41,18.71C10.36,19.76 10.22,22 10.22,22H7.07C7.59,17.79 9.17,16.21 9.17,16.21Z" /></g><g id="jsfiddle"><path d="M20.33,10.79C21.9,11.44 23,12.96 23,14.73C23,17.09 21.06,19 18.67,19H5.4C3,18.96 1,17 1,14.62C1,13.03 1.87,11.63 3.17,10.87C3.08,10.59 3.04,10.29 3.04,10C3.04,8.34 4.39,7 6.06,7C6.75,7 7.39,7.25 7.9,7.64C8.96,5.47 11.2,3.96 13.81,3.96C17.42,3.96 20.35,6.85 20.35,10.41C20.35,10.54 20.34,10.67 20.33,10.79M9.22,10.85C7.45,10.85 6,12.12 6,13.67C6,15.23 7.45,16.5 9.22,16.5C10.25,16.5 11.17,16.06 11.76,15.39L10.75,14.25C10.42,14.68 9.77,15 9.22,15C8.43,15 7.79,14.4 7.79,13.67C7.79,12.95 8.43,12.36 9.22,12.36C9.69,12.36 10.12,12.59 10.56,12.88C11,13.16 11.73,14.17 12.31,14.82C13.77,16.29 14.53,16.42 15.4,16.42C17.17,16.42 18.6,15.15 18.6,13.6C18.6,12.04 17.17,10.78 15.4,10.78C14.36,10.78 13.44,11.21 12.85,11.88L13.86,13C14.19,12.59 14.84,12.28 15.4,12.28C16.19,12.28 16.83,12.87 16.83,13.6C16.83,14.32 16.19,14.91 15.4,14.91C14.93,14.91 14.5,14.68 14.05,14.39C13.61,14.11 12.88,13.1 12.31,12.45C10.84,11 10.08,10.85 9.22,10.85Z" /></g><g id="json"><path d="M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z" /></g><g id="keg"><path d="M5,22V20H6V16H5V14H6V11H5V7H11V3H10V2H11L13,2H14V3H13V7H19V11H18V14H19V16H18V20H19V22H5M17,9A1,1 0 0,0 16,8H14A1,1 0 0,0 13,9A1,1 0 0,0 14,10H16A1,1 0 0,0 17,9Z" /></g><g id="kettle"><path d="M12.5,3C7.81,3 4,5.69 4,9V9C4,10.19 4.5,11.34 5.44,12.33C4.53,13.5 4,14.96 4,16.5C4,17.64 4,18.83 4,20C4,21.11 4.89,22 6,22H19C20.11,22 21,21.11 21,20C21,18.85 21,17.61 21,16.5C21,15.28 20.66,14.07 20,13L22,11L19,8L16.9,10.1C15.58,9.38 14.05,9 12.5,9C10.65,9 8.95,9.53 7.55,10.41C7.19,9.97 7,9.5 7,9C7,7.21 9.46,5.75 12.5,5.75V5.75C13.93,5.75 15.3,6.08 16.33,6.67L18.35,4.65C16.77,3.59 14.68,3 12.5,3M12.5,11C12.84,11 13.17,11.04 13.5,11.09C10.39,11.57 8,14.25 8,17.5V20H6V17.5A6.5,6.5 0 0,1 12.5,11Z" /></g><g id="key"><path d="M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z" /></g><g id="key-change"><path d="M6.5,2C8.46,2 10.13,3.25 10.74,5H22V8H18V11H15V8H10.74C10.13,9.75 8.46,11 6.5,11C4,11 2,9 2,6.5C2,4 4,2 6.5,2M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M6.5,13C8.46,13 10.13,14.25 10.74,16H22V19H20V22H18V19H16V22H13V19H10.74C10.13,20.75 8.46,22 6.5,22C4,22 2,20 2,17.5C2,15 4,13 6.5,13M6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16Z" /></g><g id="key-minus"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H16V19H8V17Z" /></g><g id="key-plus"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H11V14H13V17H16V19H13V22H11V19H8V17Z" /></g><g id="key-remove"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M14.59,14L16,15.41L13.41,18L16,20.59L14.59,22L12,19.41L9.41,22L8,20.59L10.59,18L8,15.41L9.41,14L12,16.59L14.59,14Z" /></g><g id="key-variant"><path d="M22,18V22H18V19H15V16H12L9.74,13.74C9.19,13.91 8.61,14 8,14A6,6 0 0,1 2,8A6,6 0 0,1 8,2A6,6 0 0,1 14,8C14,8.61 13.91,9.19 13.74,9.74L22,18M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z" /></g><g id="keyboard"><path d="M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4C2.89,5 2,5.89 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7C22,5.89 21.1,5 20,5Z" /></g><g id="keyboard-backspace"><path d="M21,11H6.83L10.41,7.41L9,6L3,12L9,18L10.41,16.58L6.83,13H21V11Z" /></g><g id="keyboard-caps"><path d="M6,18H18V16H6M12,8.41L16.59,13L18,11.58L12,5.58L6,11.58L7.41,13L12,8.41Z" /></g><g id="keyboard-close"><path d="M12,23L16,19H8M19,8H17V6H19M19,11H17V9H19M16,8H14V6H16M16,11H14V9H16M16,15H8V13H16M7,8H5V6H7M7,11H5V9H7M8,9H10V11H8M8,6H10V8H8M11,9H13V11H11M11,6H13V8H11M20,3H4C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H20A2,2 0 0,0 22,15V5C22,3.89 21.1,3 20,3Z" /></g><g id="keyboard-off"><path d="M1,4.27L2.28,3L20,20.72L18.73,22L15.73,19H4C2.89,19 2,18.1 2,17V7C2,6.5 2.18,6.07 2.46,5.73L1,4.27M19,10V8H17V10H19M19,13V11H17V13H19M16,10V8H14V10H16M16,13V11H14V12.18L11.82,10H13V8H11V9.18L9.82,8L6.82,5H20A2,2 0 0,1 22,7V17C22,17.86 21.46,18.59 20.7,18.87L14.82,13H16M8,15V17H13.73L11.73,15H8M5,10H6.73L5,8.27V10M7,13V11H5V13H7M8,13H9.73L8,11.27V13Z" /></g><g id="keyboard-return"><path d="M19,7V11H5.83L9.41,7.41L8,6L2,12L8,18L9.41,16.58L5.83,13H21V7H19Z" /></g><g id="keyboard-tab"><path d="M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z" /></g><g id="keyboard-variant"><path d="M6,16H18V18H6V16M6,13V15H2V13H6M7,15V13H10V15H7M11,15V13H13V15H11M14,15V13H17V15H14M18,15V13H22V15H18M2,10H5V12H2V10M19,12V10H22V12H19M18,12H16V10H18V12M8,12H6V10H8V12M12,12H9V10H12V12M15,12H13V10H15V12M2,9V7H4V9H2M5,9V7H7V9H5M8,9V7H10V9H8M11,9V7H13V9H11M14,9V7H16V9H14M17,9V7H22V9H17Z" /></g><g id="kodi"><path d="M12.03,1C11.82,1 11.6,1.11 11.41,1.31C10.56,2.16 9.72,3 8.88,3.84C8.66,4.06 8.6,4.18 8.38,4.38C8.09,4.62 7.96,4.91 7.97,5.28C8,6.57 8,7.84 8,9.13C8,10.46 8,11.82 8,13.16C8,13.26 8,13.34 8.03,13.44C8.11,13.75 8.31,13.82 8.53,13.59C9.73,12.39 10.8,11.3 12,10.09C13.36,8.73 14.73,7.37 16.09,6C16.5,5.6 16.5,5.15 16.09,4.75C14.94,3.6 13.77,2.47 12.63,1.31C12.43,1.11 12.24,1 12.03,1M18.66,7.66C18.45,7.66 18.25,7.75 18.06,7.94C16.91,9.1 15.75,10.24 14.59,11.41C14.2,11.8 14.2,12.23 14.59,12.63C15.74,13.78 16.88,14.94 18.03,16.09C18.43,16.5 18.85,16.5 19.25,16.09C20.36,15 21.5,13.87 22.59,12.75C22.76,12.58 22.93,12.42 23,12.19V11.88C22.93,11.64 22.76,11.5 22.59,11.31C21.47,10.19 20.37,9.06 19.25,7.94C19.06,7.75 18.86,7.66 18.66,7.66M4.78,8.09C4.65,8.04 4.58,8.14 4.5,8.22C3.35,9.39 2.34,10.43 1.19,11.59C0.93,11.86 0.93,12.24 1.19,12.5C1.81,13.13 2.44,13.75 3.06,14.38C3.6,14.92 4,15.33 4.56,15.88C4.72,16.03 4.86,16 4.94,15.81C5,15.71 5,15.58 5,15.47C5,14.29 5,13.37 5,12.19C5,11 5,9.81 5,8.63C5,8.55 5,8.45 4.97,8.38C4.95,8.25 4.9,8.14 4.78,8.09M12.09,14.25C11.89,14.25 11.66,14.34 11.47,14.53C10.32,15.69 9.18,16.87 8.03,18.03C7.63,18.43 7.63,18.85 8.03,19.25C9.14,20.37 10.26,21.47 11.38,22.59C11.54,22.76 11.71,22.93 11.94,23H12.22C12.44,22.94 12.62,22.79 12.78,22.63C13.9,21.5 15.03,20.38 16.16,19.25C16.55,18.85 16.5,18.4 16.13,18C14.97,16.84 13.84,15.69 12.69,14.53C12.5,14.34 12.3,14.25 12.09,14.25Z" /></g><g id="label"><path d="M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z" /></g><g id="label-outline"><path d="M16,17H5V7H16L19.55,12M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z" /></g><g id="lambda"><path d="M6,20L10.16,7.91L9.34,6H8V4H10C10.42,4 10.78,4.26 10.93,4.63L16.66,18H18V20H16C15.57,20 15.21,19.73 15.07,19.36L11.33,10.65L8.12,20H6Z" /></g><g id="lamp"><path d="M8,2H16L20,14H4L8,2M11,15H13V20H18V22H6V20H11V15Z" /></g><g id="lan"><path d="M10,2C8.89,2 8,2.89 8,4V7C8,8.11 8.89,9 10,9H11V11H2V13H6V15H5C3.89,15 3,15.89 3,17V20C3,21.11 3.89,22 5,22H9C10.11,22 11,21.11 11,20V17C11,15.89 10.11,15 9,15H8V13H16V15H15C13.89,15 13,15.89 13,17V20C13,21.11 13.89,22 15,22H19C20.11,22 21,21.11 21,20V17C21,15.89 20.11,15 19,15H18V13H22V11H13V9H14C15.11,9 16,8.11 16,7V4C16,2.89 15.11,2 14,2H10M10,4H14V7H10V4M5,17H9V20H5V17M15,17H19V20H15V17Z" /></g><g id="lan-connect"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,13V18L3,20H10V18H5V13H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M14,15H20V19H14V15Z" /></g><g id="lan-disconnect"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3.88,13.46L2.46,14.88L4.59,17L2.46,19.12L3.88,20.54L6,18.41L8.12,20.54L9.54,19.12L7.41,17L9.54,14.88L8.12,13.46L6,15.59L3.88,13.46M14,15H20V19H14V15Z" /></g><g id="lan-pending"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,12V14H5V12H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3,15V17H5V15H3M14,15H20V19H14V15M3,18V20H5V18H3M6,18V20H8V18H6M9,18V20H11V18H9Z" /></g><g id="language-c"><path d="M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z" /></g><g id="language-cpp"><path d="M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z" /></g><g id="language-csharp"><path d="M11.5,15.97L11.91,18.41C11.65,18.55 11.23,18.68 10.67,18.8C10.1,18.93 9.43,19 8.66,19C6.45,18.96 4.79,18.3 3.68,17.04C2.56,15.77 2,14.16 2,12.21C2.05,9.9 2.72,8.13 4,6.89C5.32,5.64 6.96,5 8.94,5C9.69,5 10.34,5.07 10.88,5.19C11.42,5.31 11.82,5.44 12.08,5.59L11.5,8.08L10.44,7.74C10.04,7.64 9.58,7.59 9.05,7.59C7.89,7.58 6.93,7.95 6.18,8.69C5.42,9.42 5.03,10.54 5,12.03C5,13.39 5.37,14.45 6.08,15.23C6.79,16 7.79,16.4 9.07,16.41L10.4,16.29C10.83,16.21 11.19,16.1 11.5,15.97M13.89,19L14.5,15H13L13.34,13H14.84L15.16,11H13.66L14,9H15.5L16.11,5H18.11L17.5,9H18.5L19.11,5H21.11L20.5,9H22L21.66,11H20.16L19.84,13H21.34L21,15H19.5L18.89,19H16.89L17.5,15H16.5L15.89,19H13.89M16.84,13H17.84L18.16,11H17.16L16.84,13Z" /></g><g id="language-css3"><path d="M5,3L4.35,6.34H17.94L17.5,8.5H3.92L3.26,11.83H16.85L16.09,15.64L10.61,17.45L5.86,15.64L6.19,14H2.85L2.06,18L9.91,21L18.96,18L20.16,11.97L20.4,10.76L21.94,3H5Z" /></g><g id="language-html5"><path d="M12,17.56L16.07,16.43L16.62,10.33H9.38L9.2,8.3H16.8L17,6.31H7L7.56,12.32H14.45L14.22,14.9L12,15.5L9.78,14.9L9.64,13.24H7.64L7.93,16.43L12,17.56M4.07,3H19.93L18.5,19.2L12,21L5.5,19.2L4.07,3Z" /></g><g id="language-javascript"><path d="M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z" /></g><g id="language-php"><path d="M12,18.08C5.37,18.08 0,15.36 0,12C0,8.64 5.37,5.92 12,5.92C18.63,5.92 24,8.64 24,12C24,15.36 18.63,18.08 12,18.08M6.81,10.13C7.35,10.13 7.72,10.23 7.9,10.44C8.08,10.64 8.12,11 8.03,11.47C7.93,12 7.74,12.34 7.45,12.56C7.17,12.78 6.74,12.89 6.16,12.89H5.29L5.82,10.13H6.81M3.31,15.68H4.75L5.09,13.93H6.32C6.86,13.93 7.3,13.87 7.65,13.76C8,13.64 8.32,13.45 8.61,13.18C8.85,12.96 9.04,12.72 9.19,12.45C9.34,12.19 9.45,11.89 9.5,11.57C9.66,10.79 9.55,10.18 9.17,9.75C8.78,9.31 8.18,9.1 7.35,9.1H4.59L3.31,15.68M10.56,7.35L9.28,13.93H10.7L11.44,10.16H12.58C12.94,10.16 13.18,10.22 13.29,10.34C13.4,10.46 13.42,10.68 13.36,11L12.79,13.93H14.24L14.83,10.86C14.96,10.24 14.86,9.79 14.56,9.5C14.26,9.23 13.71,9.1 12.91,9.1H11.64L12,7.35H10.56M18,10.13C18.55,10.13 18.91,10.23 19.09,10.44C19.27,10.64 19.31,11 19.22,11.47C19.12,12 18.93,12.34 18.65,12.56C18.36,12.78 17.93,12.89 17.35,12.89H16.5L17,10.13H18M14.5,15.68H15.94L16.28,13.93H17.5C18.05,13.93 18.5,13.87 18.85,13.76C19.2,13.64 19.5,13.45 19.8,13.18C20.04,12.96 20.24,12.72 20.38,12.45C20.53,12.19 20.64,11.89 20.7,11.57C20.85,10.79 20.74,10.18 20.36,9.75C20,9.31 19.37,9.1 18.54,9.1H15.79L14.5,15.68Z" /></g><g id="language-python"><path d="M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z" /></g><g id="language-python-text"><path d="M2,5.69C8.92,1.07 11.1,7 11.28,10.27C11.46,13.53 8.29,17.64 4.31,14.92V20.3L2,18.77V5.69M4.22,7.4V12.78C7.84,14.95 9.08,13.17 9.08,10.09C9.08,5.74 6.57,5.59 4.22,7.4M15.08,4.15C15.08,4.15 14.9,7.64 15.08,11.07C15.44,14.5 19.69,11.84 19.69,11.84V4.92L22,5.2V14.44C22,20.6 15.85,20.3 15.85,20.3L15.08,18C20.46,18 19.78,14.43 19.78,14.43C13.27,16.97 12.77,12.61 12.77,12.61V5.69L15.08,4.15Z" /></g><g id="language-swift"><path d="M17.09,19.72C14.73,21.08 11.5,21.22 8.23,19.82C5.59,18.7 3.4,16.74 2,14.5C2.67,15.05 3.46,15.5 4.3,15.9C7.67,17.47 11.03,17.36 13.4,15.9C10.03,13.31 7.16,9.94 5.03,7.19C4.58,6.74 4.25,6.18 3.91,5.68C12.19,11.73 11.83,13.27 6.32,4.67C11.21,9.61 15.75,12.41 15.75,12.41C15.91,12.5 16,12.57 16.11,12.63C16.21,12.38 16.3,12.12 16.37,11.85C17.16,9 16.26,5.73 14.29,3.04C18.84,5.79 21.54,10.95 20.41,15.28C20.38,15.39 20.35,15.5 20.36,15.67C22.6,18.5 22,21.45 21.71,20.89C20.5,18.5 18.23,19.24 17.09,19.72V19.72Z" /></g><g id="laptop"><path d="M4,6H20V16H4M20,18A2,2 0 0,0 22,16V6C22,4.89 21.1,4 20,4H4C2.89,4 2,4.89 2,6V16A2,2 0 0,0 4,18H0V20H24V18H20Z" /></g><g id="laptop-chromebook"><path d="M20,15H4V5H20M14,18H10V17H14M22,18V3H2V18H0V20H24V18H22Z" /></g><g id="laptop-mac"><path d="M12,19A1,1 0 0,1 11,18A1,1 0 0,1 12,17A1,1 0 0,1 13,18A1,1 0 0,1 12,19M4,5H20V16H4M20,18A2,2 0 0,0 22,16V5C22,3.89 21.1,3 20,3H4C2.89,3 2,3.89 2,5V16A2,2 0 0,0 4,18H0A2,2 0 0,0 2,20H22A2,2 0 0,0 24,18H20Z" /></g><g id="laptop-off"><path d="M1,4.27L2.28,3L20,20.72L18.73,22L16.73,20H0V18H4C2.89,18 2,17.1 2,16V6C2,5.78 2.04,5.57 2.1,5.37L1,4.27M4,16H12.73L4,7.27V16M20,16V6H7.82L5.82,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H21.82L17.82,16H20Z" /></g><g id="laptop-windows"><path d="M3,4H21A1,1 0 0,1 22,5V16A1,1 0 0,1 21,17H22L24,20V21H0V20L2,17H3A1,1 0 0,1 2,16V5A1,1 0 0,1 3,4M4,6V15H20V6H4Z" /></g><g id="lastfm"><path d="M18,17.93C15.92,17.92 14.81,16.9 14.04,15.09L13.82,14.6L11.92,10.23C11.29,8.69 9.72,7.64 7.96,7.64C5.57,7.64 3.63,9.59 3.63,12C3.63,14.41 5.57,16.36 7.96,16.36C9.62,16.36 11.08,15.41 11.8,14L12.57,15.81C11.5,17.15 9.82,18 7.96,18C4.67,18 2,15.32 2,12C2,8.69 4.67,6 7.96,6C10.44,6 12.45,7.34 13.47,9.7C13.54,9.89 14.54,12.24 15.42,14.24C15.96,15.5 16.42,16.31 17.91,16.36C19.38,16.41 20.39,15.5 20.39,14.37C20.39,13.26 19.62,13 18.32,12.56C16,11.79 14.79,11 14.79,9.15C14.79,7.33 16,6.12 18,6.12C19.31,6.12 20.24,6.7 20.89,7.86L19.62,8.5C19.14,7.84 18.61,7.57 17.94,7.57C17,7.57 16.33,8.23 16.33,9.1C16.33,10.34 17.43,10.53 18.97,11.03C21.04,11.71 22,12.5 22,14.42C22,16.45 20.27,17.93 18,17.93Z" /></g><g id="launch"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" /></g><g id="layers"><path d="M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z" /></g><g id="layers-off"><path d="M3.27,1L2,2.27L6.22,6.5L3,9L4.63,10.27L12,16L14.1,14.37L15.53,15.8L12,18.54L4.63,12.81L3,14.07L12,21.07L16.95,17.22L20.73,21L22,19.73L3.27,1M19.36,10.27L21,9L12,2L9.09,4.27L16.96,12.15L19.36,10.27M19.81,15L21,14.07L19.57,12.64L18.38,13.56L19.81,15Z" /></g><g id="lead-pencil"><path d="M16.84,2.73C16.45,2.73 16.07,2.88 15.77,3.17L13.65,5.29L18.95,10.6L21.07,8.5C21.67,7.89 21.67,6.94 21.07,6.36L17.9,3.17C17.6,2.88 17.22,2.73 16.84,2.73M12.94,6L4.84,14.11L7.4,14.39L7.58,16.68L9.86,16.85L10.15,19.41L18.25,11.3M4.25,15.04L2.5,21.73L9.2,19.94L8.96,17.78L6.65,17.61L6.47,15.29" /></g><g id="leaf"><path d="M17,8C8,10 5.9,16.17 3.82,21.34L5.71,22L6.66,19.7C7.14,19.87 7.64,20 8,20C19,20 22,3 22,3C21,5 14,5.25 9,6.25C4,7.25 2,11.5 2,13.5C2,15.5 3.75,17.25 3.75,17.25C7,8 17,8 17,8Z" /></g><g id="led-off"><path d="M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6Z" /></g><g id="led-on"><path d="M11,0V4H13V0H11M18.3,2.29L15.24,5.29L16.64,6.71L19.7,3.71L18.3,2.29M5.71,2.29L4.29,3.71L7.29,6.71L8.71,5.29L5.71,2.29M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M2,9V11H6V9H2M18,9V11H22V9H18Z" /></g><g id="led-outline"><path d="M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M12,8A2,2 0 0,1 14,10V15H10V10A2,2 0 0,1 12,8Z" /></g><g id="led-variant-off"><path d="M12,3C10.05,3 8.43,4.4 8.08,6.25L16.82,15H18V13H16V7A4,4 0 0,0 12,3M3.28,4L2,5.27L8,11.27V13H6V15H9V21H11V15H11.73L13,16.27V21H15V18.27L18.73,22L20,20.72L15,15.72L8,8.72L3.28,4Z" /></g><g id="led-variant-on"><path d="M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3Z" /></g><g id="led-variant-outline"><path d="M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3M12,5A2,2 0 0,1 14,7V12H10V7A2,2 0 0,1 12,5Z" /></g><g id="library"><path d="M12,8A3,3 0 0,0 15,5A3,3 0 0,0 12,2A3,3 0 0,0 9,5A3,3 0 0,0 12,8M12,11.54C9.64,9.35 6.5,8 3,8V19C6.5,19 9.64,20.35 12,22.54C14.36,20.35 17.5,19 21,19V8C17.5,8 14.36,9.35 12,11.54Z" /></g><g id="library-books"><path d="M19,7H9V5H19M15,15H9V13H15M19,11H9V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z" /></g><g id="library-music"><path d="M4,6H2V20A2,2 0 0,0 4,22H18V20H4M18,7H15V12.5A2.5,2.5 0 0,1 12.5,15A2.5,2.5 0 0,1 10,12.5A2.5,2.5 0 0,1 12.5,10C13.07,10 13.58,10.19 14,10.5V5H18M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2Z" /></g><g id="library-plus"><path d="M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z" /></g><g id="lightbulb"><path d="M12,2A7,7 0 0,0 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H15A1,1 0 0,0 16,17V14.74C17.81,13.47 19,11.38 19,9A7,7 0 0,0 12,2M9,21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9V21Z" /></g><g id="lightbulb-on"><path d="M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z" /></g><g id="lightbulb-on-outline"><path d="M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z" /></g><g id="lightbulb-outline"><path d="M12,2A7,7 0 0,1 19,9C19,11.38 17.81,13.47 16,14.74V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V14.74C6.19,13.47 5,11.38 5,9A7,7 0 0,1 12,2M9,21V20H15V21A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21M12,4A5,5 0 0,0 7,9C7,11.05 8.23,12.81 10,13.58V16H14V13.58C15.77,12.81 17,11.05 17,9A5,5 0 0,0 12,4Z" /></g><g id="link"><path d="M16,6H13V7.9H16C18.26,7.9 20.1,9.73 20.1,12A4.1,4.1 0 0,1 16,16.1H13V18H16A6,6 0 0,0 22,12C22,8.68 19.31,6 16,6M3.9,12C3.9,9.73 5.74,7.9 8,7.9H11V6H8A6,6 0 0,0 2,12A6,6 0 0,0 8,18H11V16.1H8C5.74,16.1 3.9,14.26 3.9,12M8,13H16V11H8V13Z" /></g><g id="link-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L14.73,18H13V16.27L9.73,13H8V11.27L5.5,8.76C4.5,9.5 3.9,10.68 3.9,12C3.9,14.26 5.74,16.1 8,16.1H11V18H8A6,6 0 0,1 2,12C2,10.16 2.83,8.5 4.14,7.41L2,5.27M16,6A6,6 0 0,1 22,12C22,14.21 20.8,16.15 19,17.19L17.6,15.77C19.07,15.15 20.1,13.7 20.1,12C20.1,9.73 18.26,7.9 16,7.9H13V6H16M8,6H11V7.9H9.72L7.82,6H8M16,11V13H14.82L12.82,11H16Z" /></g><g id="link-variant"><path d="M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></g><g id="link-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L13.9,17.17L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L12.5,15.76L10.88,14.15C10.87,14.39 10.77,14.64 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C8.12,13.77 7.63,12.37 7.72,11L2,5.27M12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.79,8.97L9.38,7.55L12.71,4.22M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.2,10.54 16.61,12.5 16.06,14.23L14.28,12.46C14.23,11.78 13.94,11.11 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></g><g id="linkedin"><path d="M21,21H17V14.25C17,13.19 15.81,12.31 14.75,12.31C13.69,12.31 13,13.19 13,14.25V21H9V9H13V11C13.66,9.93 15.36,9.24 16.5,9.24C19,9.24 21,11.28 21,13.75V21M7,21H3V9H7V21M5,3A2,2 0 0,1 7,5A2,2 0 0,1 5,7A2,2 0 0,1 3,5A2,2 0 0,1 5,3Z" /></g><g id="linkedin-box"><path d="M19,19H16V13.7A1.5,1.5 0 0,0 14.5,12.2A1.5,1.5 0 0,0 13,13.7V19H10V10H13V11.2C13.5,10.36 14.59,9.8 15.5,9.8A3.5,3.5 0 0,1 19,13.3M6.5,8.31C5.5,8.31 4.69,7.5 4.69,6.5A1.81,1.81 0 0,1 6.5,4.69C7.5,4.69 8.31,5.5 8.31,6.5A1.81,1.81 0 0,1 6.5,8.31M8,19H5V10H8M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="linux"><path d="M13.18,14.5C12.53,15.26 11.47,15.26 10.82,14.5L7.44,10.5C7.16,11.28 7,12.12 7,13C7,14.67 7.57,16.18 8.5,17.27C10,17.37 11.29,17.96 11.78,19C11.85,19 11.93,19 12.22,19C12.71,18 13.95,17.44 15.46,17.33C16.41,16.24 17,14.7 17,13C17,12.12 16.84,11.28 16.56,10.5L13.18,14.5M20,20.75C20,21.3 19.3,22 18.75,22H13.25C12.7,22 12,21.3 12,20.75C12,21.3 11.3,22 10.75,22H5.25C4.7,22 4,21.3 4,20.75C4,19.45 4.94,18.31 6.3,17.65C5.5,16.34 5,14.73 5,13C4,15 2.7,15.56 2.09,15C1.5,14.44 1.79,12.83 3.1,11.41C3.84,10.6 5,9.62 5.81,9.25C6.13,8.56 6.54,7.93 7,7.38V7A5,5 0 0,1 12,2A5,5 0 0,1 17,7V7.38C17.46,7.93 17.87,8.56 18.19,9.25C19,9.62 20.16,10.6 20.9,11.41C22.21,12.83 22.5,14.44 21.91,15C21.3,15.56 20,15 19,13C19,14.75 18.5,16.37 17.67,17.69C19.05,18.33 20,19.44 20,20.75M9.88,9C9.46,9.5 9.46,10.27 9.88,10.75L11.13,12.25C11.54,12.73 12.21,12.73 12.63,12.25L13.88,10.75C14.29,10.27 14.29,9.5 13.88,9H9.88M10,5.25C9.45,5.25 9,5.9 9,7C9,8.1 9.45,8.75 10,8.75C10.55,8.75 11,8.1 11,7C11,5.9 10.55,5.25 10,5.25M14,5.25C13.45,5.25 13,5.9 13,7C13,8.1 13.45,8.75 14,8.75C14.55,8.75 15,8.1 15,7C15,5.9 14.55,5.25 14,5.25Z" /></g><g id="lock"><path d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></g><g id="lock-open"><path d="M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z" /></g><g id="lock-open-outline"><path d="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z" /></g><g id="lock-outline"><path d="M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10C4,8.89 4.89,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></g><g id="lock-pattern"><path d="M7,3A4,4 0 0,1 11,7C11,8.86 9.73,10.43 8,10.87V13.13C8.37,13.22 8.72,13.37 9.04,13.56L13.56,9.04C13.2,8.44 13,7.75 13,7A4,4 0 0,1 17,3A4,4 0 0,1 21,7A4,4 0 0,1 17,11C16.26,11 15.57,10.8 15,10.45L10.45,15C10.8,15.57 11,16.26 11,17A4,4 0 0,1 7,21A4,4 0 0,1 3,17C3,15.14 4.27,13.57 6,13.13V10.87C4.27,10.43 3,8.86 3,7A4,4 0 0,1 7,3M17,13A4,4 0 0,1 21,17A4,4 0 0,1 17,21A4,4 0 0,1 13,17A4,4 0 0,1 17,13M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="lock-plus"><path d="M18,8H17V6A5,5 0 0,0 12,1A5,5 0 0,0 7,6V8H6A2,2 0 0,0 4,10V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V10A2,2 0 0,0 18,8M8.9,6C8.9,4.29 10.29,2.9 12,2.9C13.71,2.9 15.1,4.29 15.1,6V8H8.9V6M16,16H13V19H11V16H8V14H11V11H13V14H16V16Z" /></g><g id="login"><path d="M10,17.25V14H3V10H10V6.75L15.25,12L10,17.25M8,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H8A2,2 0 0,1 6,20V16H8V20H17V4H8V8H6V4A2,2 0 0,1 8,2Z" /></g><g id="login-variant"><path d="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z" /></g><g id="logout"><path d="M17,17.25V14H10V10H17V6.75L22.25,12L17,17.25M13,2A2,2 0 0,1 15,4V8H13V4H4V20H13V16H15V20A2,2 0 0,1 13,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2H13Z" /></g><g id="logout-variant"><path d="M14.08,15.59L16.67,13H7V11H16.67L14.08,8.41L15.5,7L20.5,12L15.5,17L14.08,15.59M19,3A2,2 0 0,1 21,5V9.67L19,7.67V5H5V19H19V16.33L21,14.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19Z" /></g><g id="looks"><path d="M12,6A11,11 0 0,0 1,17H3C3,12.04 7.04,8 12,8C16.96,8 21,12.04 21,17H23A11,11 0 0,0 12,6M12,10C8.14,10 5,13.14 5,17H7A5,5 0 0,1 12,12A5,5 0 0,1 17,17H19C19,13.14 15.86,10 12,10Z" /></g><g id="loop"><path d="M9,14V21H2V19H5.57C4,17.3 3,15 3,12.5A9.5,9.5 0 0,1 12.5,3A9.5,9.5 0 0,1 22,12.5A9.5,9.5 0 0,1 12.5,22H12V20H12.5A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5A7.5,7.5 0 0,0 5,12.5C5,14.47 5.76,16.26 7,17.6V14H9Z" /></g><g id="loupe"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22H20A2,2 0 0,0 22,20V12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z" /></g><g id="lumx"><path d="M12.35,1.75L20.13,9.53L13.77,15.89L12.35,14.47L17.3,9.53L10.94,3.16L12.35,1.75M15.89,9.53L14.47,10.94L10.23,6.7L5.28,11.65L3.87,10.23L10.23,3.87L15.89,9.53M10.23,8.11L11.65,9.53L6.7,14.47L13.06,20.84L11.65,22.25L3.87,14.47L10.23,8.11M8.11,14.47L9.53,13.06L13.77,17.3L18.72,12.35L20.13,13.77L13.77,20.13L8.11,14.47Z" /></g><g id="magnet"><path d="M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3" /></g><g id="magnet-on"><path d="M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3M13,1.5L9,9H11V14.5L15,7H13V1.5Z" /></g><g id="magnify"><path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></g><g id="magnify-minus"><path d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z" /></g><g id="magnify-plus"><path d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z" /></g><g id="mail-ru"><path d="M15.45,11.91C15.34,9.7 13.7,8.37 11.72,8.37H11.64C9.35,8.37 8.09,10.17 8.09,12.21C8.09,14.5 9.62,15.95 11.63,15.95C13.88,15.95 15.35,14.3 15.46,12.36M11.65,6.39C13.18,6.39 14.62,7.07 15.67,8.13V8.13C15.67,7.62 16,7.24 16.5,7.24H16.61C17.35,7.24 17.5,7.94 17.5,8.16V16.06C17.46,16.58 18.04,16.84 18.37,16.5C19.64,15.21 21.15,9.81 17.58,6.69C14.25,3.77 9.78,4.25 7.4,5.89C4.88,7.63 3.26,11.5 4.83,15.11C6.54,19.06 11.44,20.24 14.35,19.06C15.83,18.47 16.5,20.46 15,21.11C12.66,22.1 6.23,22 3.22,16.79C1.19,13.27 1.29,7.08 6.68,3.87C10.81,1.42 16.24,2.1 19.5,5.5C22.95,9.1 22.75,15.8 19.4,18.41C17.89,19.59 15.64,18.44 15.66,16.71L15.64,16.15C14.59,17.2 13.18,17.81 11.65,17.81C8.63,17.81 6,15.15 6,12.13C6,9.08 8.63,6.39 11.65,6.39Z" /></g><g id="map"><path d="M15,19L9,16.89V5L15,7.11M20.5,3C20.44,3 20.39,3 20.34,3L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.61,21 3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3Z" /></g><g id="map-marker"><path d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" /></g><g id="map-marker-circle"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,12.5A1.5,1.5 0 0,1 10.5,11A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 13.5,11A1.5,1.5 0 0,1 12,12.5M12,7.2C9.9,7.2 8.2,8.9 8.2,11C8.2,14 12,17.5 12,17.5C12,17.5 15.8,14 15.8,11C15.8,8.9 14.1,7.2 12,7.2Z" /></g><g id="map-marker-minus"><path d="M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H23V19H15V17Z" /></g><g id="map-marker-multiple"><path d="M14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 14,11.5M14,2C17.86,2 21,5.13 21,9C21,14.25 14,22 14,22C14,22 7,14.25 7,9A7,7 0 0,1 14,2M5,9C5,13.5 10.08,19.66 11,20.81L10,22C10,22 3,14.25 3,9C3,5.83 5.11,3.15 8,2.29C6.16,3.94 5,6.33 5,9Z" /></g><g id="map-marker-off"><path d="M16.37,16.1L11.75,11.47L11.64,11.36L3.27,3L2,4.27L5.18,7.45C5.06,7.95 5,8.46 5,9C5,14.25 12,22 12,22C12,22 13.67,20.15 15.37,17.65L18.73,21L20,19.72M12,6.5A2.5,2.5 0 0,1 14.5,9C14.5,9.73 14.17,10.39 13.67,10.85L17.3,14.5C18.28,12.62 19,10.68 19,9A7,7 0 0,0 12,2C10,2 8.24,2.82 6.96,4.14L10.15,7.33C10.61,6.82 11.26,6.5 12,6.5Z" /></g><g id="map-marker-plus"><path d="M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H18V14H20V17H23V19H20V22H18V19H15V17Z" /></g><g id="map-marker-radius"><path d="M12,2C15.31,2 18,4.66 18,7.95C18,12.41 12,19 12,19C12,19 6,12.41 6,7.95C6,4.66 8.69,2 12,2M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M20,19C20,21.21 16.42,23 12,23C7.58,23 4,21.21 4,19C4,17.71 5.22,16.56 7.11,15.83L7.75,16.74C6.67,17.19 6,17.81 6,18.5C6,19.88 8.69,21 12,21C15.31,21 18,19.88 18,18.5C18,17.81 17.33,17.19 16.25,16.74L16.89,15.83C18.78,16.56 20,17.71 20,19Z" /></g><g id="margin"><path d="M14.63,6.78L12.9,5.78L18.5,2.08L18.1,8.78L16.37,7.78L8.73,21H6.42L14.63,6.78M17.5,12C19.43,12 21,13.74 21,16.5C21,19.26 19.43,21 17.5,21C15.57,21 14,19.26 14,16.5C14,13.74 15.57,12 17.5,12M17.5,14C16.67,14 16,14.84 16,16.5C16,18.16 16.67,19 17.5,19C18.33,19 19,18.16 19,16.5C19,14.84 18.33,14 17.5,14M7.5,5C9.43,5 11,6.74 11,9.5C11,12.26 9.43,14 7.5,14C5.57,14 4,12.26 4,9.5C4,6.74 5.57,5 7.5,5M7.5,7C6.67,7 6,7.84 6,9.5C6,11.16 6.67,12 7.5,12C8.33,12 9,11.16 9,9.5C9,7.84 8.33,7 7.5,7Z" /></g><g id="markdown"><path d="M2,16V8H4L7,11L10,8H12V16H10V10.83L7,13.83L4,10.83V16H2M16,8H19V12H21.5L17.5,16.5L13.5,12H16V8Z" /></g><g id="marker"><path d="M18.5,1.15C17.97,1.15 17.46,1.34 17.07,1.73L11.26,7.55L16.91,13.2L22.73,7.39C23.5,6.61 23.5,5.35 22.73,4.56L19.89,1.73C19.5,1.34 19,1.15 18.5,1.15M10.3,8.5L4.34,14.46C3.56,15.24 3.56,16.5 4.36,17.31C3.14,18.54 1.9,19.77 0.67,21H6.33L7.19,20.14C7.97,20.9 9.22,20.89 10,20.12L15.95,14.16" /></g><g id="marker-check"><path d="M10,16L5,11L6.41,9.58L10,13.17L17.59,5.58L19,7M19,1H5C3.89,1 3,1.89 3,3V15.93C3,16.62 3.35,17.23 3.88,17.59L12,23L20.11,17.59C20.64,17.23 21,16.62 21,15.93V3C21,1.89 20.1,1 19,1Z" /></g><g id="martini"><path d="M7.5,7L5.5,5H18.5L16.5,7M11,13V19H6V21H18V19H13V13L21,5V3H3V5L11,13Z" /></g><g id="material-ui"><path d="M8,16.61V15.37L14,11.91V7.23L9,10.12L4,7.23V13L3,13.58L2,13V5L3.07,4.38L9,7.81L12.93,5.54L14.93,4.38L16,5V13.06L10.92,16L14.97,18.33L20,15.43V11L21,10.42L22,11V16.58L14.97,20.64L8,16.61M22,9.75L21,10.33L20,9.75V8.58L21,8L22,8.58V9.75Z" /></g><g id="math-compass"><path d="M13,4.2V3C13,2.4 12.6,2 12,2V4.2C9.8,4.6 9,5.7 9,7C9,7.8 9.3,8.5 9.8,9L4,19.9V22L6.2,20L11.6,10C11.7,10 11.9,10 12,10C13.7,10 15,8.7 15,7C15,5.7 14.2,4.6 13,4.2M12.9,7.5C12.7,7.8 12.4,8 12,8C11.4,8 11,7.6 11,7C11,6.8 11.1,6.7 11.1,6.5C11.3,6.2 11.6,6 12,6C12.6,6 13,6.4 13,7C13,7.2 12.9,7.3 12.9,7.5M20,19.9V22H20L17.8,20L13.4,11.8C14.1,11.6 14.7,11.3 15.2,10.9L20,19.9Z" /></g><g id="matrix"><path d="M2,2H6V4H4V20H6V22H2V2M20,4H18V2H22V22H18V20H20V4M9,5H10V10H11V11H8V10H9V6L8,6.5V5.5L9,5M15,13H16V18H17V19H14V18H15V14L14,14.5V13.5L15,13M9,13C10.1,13 11,14.34 11,16C11,17.66 10.1,19 9,19C7.9,19 7,17.66 7,16C7,14.34 7.9,13 9,13M9,14C8.45,14 8,14.9 8,16C8,17.1 8.45,18 9,18C9.55,18 10,17.1 10,16C10,14.9 9.55,14 9,14M15,5C16.1,5 17,6.34 17,8C17,9.66 16.1,11 15,11C13.9,11 13,9.66 13,8C13,6.34 13.9,5 15,5M15,6C14.45,6 14,6.9 14,8C14,9.1 14.45,10 15,10C15.55,10 16,9.1 16,8C16,6.9 15.55,6 15,6Z" /></g><g id="maxcdn"><path d="M20.6,6.69C19.73,5.61 18.38,5 16.9,5H2.95L4.62,8.57L2.39,19H6.05L8.28,8.57H11.4L9.17,19H12.83L15.06,8.57H16.9C17.3,8.57 17.63,8.7 17.82,8.94C18,9.17 18.07,9.5 18,9.9L16.04,19H19.69L21.5,10.65C21.78,9.21 21.46,7.76 20.6,6.69Z" /></g><g id="medical-bag"><path d="M10,3L8,5V7H5C3.85,7 3.12,8 3,9L2,19C1.88,20 2.54,21 4,21H20C21.46,21 22.12,20 22,19L21,9C20.88,8 20.06,7 19,7H16V5L14,3H10M10,5H14V7H10V5M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z" /></g><g id="medium"><path d="M21.93,6.62L15.89,16.47L11.57,9.43L15,3.84C15.17,3.58 15.5,3.47 15.78,3.55L21.93,6.62M22,19.78C22,20.35 21.5,20.57 20.89,20.26L16.18,17.91L22,8.41V19.78M9,19.94C9,20.5 8.57,20.76 8.07,20.5L2.55,17.76C2.25,17.6 2,17.2 2,16.86V4.14C2,3.69 2.33,3.5 2.74,3.68L8.7,6.66L9,7.12V19.94M15.29,17.46L10,14.81V8.81L15.29,17.46Z" /></g><g id="memory"><path d="M17,17H7V7H17M21,11V9H19V7C19,5.89 18.1,5 17,5H15V3H13V5H11V3H9V5H7C5.89,5 5,5.89 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11M13,13H11V11H13M15,9H9V15H15V9Z" /></g><g id="menu"><path d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z" /></g><g id="menu-down"><path d="M7,10L12,15L17,10H7Z" /></g><g id="menu-down-outline"><path d="M18,9V10.5L12,16.5L6,10.5V9H18M12,13.67L14.67,11H9.33L12,13.67Z" /></g><g id="menu-left"><path d="M14,7L9,12L14,17V7Z" /></g><g id="menu-right"><path d="M10,17L15,12L10,7V17Z" /></g><g id="menu-up"><path d="M7,15L12,10L17,15H7Z" /></g><g id="menu-up-outline"><path d="M18,16V14.5L12,8.5L6,14.5V16H18M12,11.33L14.67,14H9.33L12,11.33Z" /></g><g id="message"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-alert"><path d="M13,10H11V6H13M13,14H11V12H13M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-bulleted"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M8,14H6V12H8V14M8,11H6V9H8V11M8,8H6V6H8V8M15,14H10V12H15V14M18,11H10V9H18V11M18,8H10V6H18V8Z" /></g><g id="message-bulleted-off"><path d="M1.27,1.73L0,3L2,5V22L6,18H15L20.73,23.73L22,22.46L1.27,1.73M8,14H6V12H8V14M6,11V9L8,11H6M20,2H4.08L10,7.92V6H18V8H10.08L11.08,9H18V11H13.08L20.07,18C21.14,17.95 22,17.08 22,16V4A2,2 0 0,0 20,2Z" /></g><g id="message-draw"><path d="M18,14H10.5L12.5,12H18M6,14V11.5L12.88,4.64C13.07,4.45 13.39,4.45 13.59,4.64L15.35,6.41C15.55,6.61 15.55,6.92 15.35,7.12L8.47,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-image"><path d="M5,14L8.5,9.5L11,12.5L14.5,8L19,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-outline"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H6L4,18V4H20" /></g><g id="message-plus"><path d="M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z" /></g><g id="message-processing"><path d="M17,11H15V9H17M13,11H11V9H13M9,11H7V9H9M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-reply"><path d="M22,4C22,2.89 21.1,2 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z" /></g><g id="message-reply-text"><path d="M18,8H6V6H18V8M18,11H6V9H18V11M18,14H6V12H18V14M22,4A2,2 0 0,0 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z" /></g><g id="message-text"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18" /></g><g id="message-text-outline"><path d="M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M4,4V17.17L5.17,16H20V4H4M6,7H18V9H6V7M6,11H15V13H6V11Z" /></g><g id="message-video"><path d="M18,14L14,10.8V14H6V6H14V9.2L18,6M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="meteor"><path d="M2.8,3L19.67,18.82C19.67,18.82 20,19.27 19.58,19.71C19.17,20.15 18.63,19.77 18.63,19.77L2.8,3M7.81,4.59L20.91,16.64C20.91,16.64 21.23,17.08 20.82,17.5C20.4,17.97 19.86,17.59 19.86,17.59L7.81,4.59M4.29,8L17.39,20.03C17.39,20.03 17.71,20.47 17.3,20.91C16.88,21.36 16.34,21 16.34,21L4.29,8M12.05,5.96L21.2,14.37C21.2,14.37 21.42,14.68 21.13,15C20.85,15.3 20.47,15.03 20.47,15.03L12.05,5.96M5.45,11.91L14.6,20.33C14.6,20.33 14.82,20.64 14.54,20.95C14.25,21.26 13.87,21 13.87,21L5.45,11.91M16.38,7.92L20.55,11.74C20.55,11.74 20.66,11.88 20.5,12.03C20.38,12.17 20.19,12.05 20.19,12.05L16.38,7.92M7.56,16.1L11.74,19.91C11.74,19.91 11.85,20.06 11.7,20.2C11.56,20.35 11.37,20.22 11.37,20.22L7.56,16.1Z" /></g><g id="microphone"><path d="M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z" /></g><g id="microphone-off"><path d="M19,11C19,12.19 18.66,13.3 18.1,14.28L16.87,13.05C17.14,12.43 17.3,11.74 17.3,11H19M15,11.16L9,5.18V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V11L15,11.16M4.27,3L21,19.73L19.73,21L15.54,16.81C14.77,17.27 13.91,17.58 13,17.72V21H11V17.72C7.72,17.23 5,14.41 5,11H6.7C6.7,14 9.24,16.1 12,16.1C12.81,16.1 13.6,15.91 14.31,15.58L12.65,13.92L12,14A3,3 0 0,1 9,11V10.28L3,4.27L4.27,3Z" /></g><g id="microphone-outline"><path d="M17.3,11C17.3,14 14.76,16.1 12,16.1C9.24,16.1 6.7,14 6.7,11H5C5,14.41 7.72,17.23 11,17.72V21H13V17.72C16.28,17.23 19,14.41 19,11M10.8,4.9C10.8,4.24 11.34,3.7 12,3.7C12.66,3.7 13.2,4.24 13.2,4.9L13.19,11.1C13.19,11.76 12.66,12.3 12,12.3C11.34,12.3 10.8,11.76 10.8,11.1M12,14A3,3 0 0,0 15,11V5A3,3 0 0,0 12,2A3,3 0 0,0 9,5V11A3,3 0 0,0 12,14Z" /></g><g id="microphone-settings"><path d="M19,10H17.3C17.3,13 14.76,15.1 12,15.1C9.24,15.1 6.7,13 6.7,10H5C5,13.41 7.72,16.23 11,16.72V20H13V16.72C16.28,16.23 19,13.41 19,10M15,24H17V22H15M11,24H13V22H11M12,13A3,3 0 0,0 15,10V4A3,3 0 0,0 12,1A3,3 0 0,0 9,4V10A3,3 0 0,0 12,13M7,24H9V22H7V24Z" /></g><g id="microphone-variant"><path d="M9,3A4,4 0 0,1 13,7H5A4,4 0 0,1 9,3M11.84,9.82L11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V14A4,4 0 0,1 18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V19A4,4 0 0,1 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.67,9.32 5.31,8.7 5.13,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z" /></g><g id="microphone-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L16,19.26C15.86,21.35 14.12,23 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.82,9.47 5.53,9.06 5.33,8.6L2,5.27M9,3A4,4 0 0,1 13,7H8.82L6.08,4.26C6.81,3.5 7.85,3 9,3M11.84,9.82L11.82,10L9.82,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V17.27L11.35,14.62L11,18M18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V14.18L14.3,12.5C14.9,11 16.33,10 18,10M8,12A1,1 0 0,0 9,13C9.21,13 9.4,12.94 9.56,12.83L8.17,11.44C8.06,11.6 8,11.79 8,12Z" /></g><g id="microscope"><path d="M9.46,6.28L11.05,9C8.47,9.26 6.5,11.41 6.5,14A5,5 0 0,0 11.5,19C13.55,19 15.31,17.77 16.08,16H13.5V14H21.5V16H19.25C18.84,17.57 17.97,18.96 16.79,20H19.5V22H3.5V20H6.21C4.55,18.53 3.5,16.39 3.5,14C3.5,10.37 5.96,7.2 9.46,6.28M12.74,2.07L13.5,3.37L14.36,2.87L17.86,8.93L14.39,10.93L10.89,4.87L11.76,4.37L11,3.07L12.74,2.07Z" /></g><g id="microsoft"><path d="M2,3H11V12H2V3M11,22H2V13H11V22M21,3V12H12V3H21M21,22H12V13H21V22Z" /></g><g id="minecraft"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M6,6V10H10V12H8V18H10V16H14V18H16V12H14V10H18V6H14V10H10V6H6Z" /></g><g id="minus"><path d="M19,13H5V11H19V13Z" /></g><g id="minus-box"><path d="M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="minus-circle"><path d="M17,13H7V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="minus-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7" /></g><g id="minus-network"><path d="M16,11V9H8V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="mixcloud"><path d="M21.11,18.5C20.97,18.5 20.83,18.44 20.71,18.36C20.37,18.13 20.28,17.68 20.5,17.34C21.18,16.34 21.54,15.16 21.54,13.93C21.54,12.71 21.18,11.53 20.5,10.5C20.28,10.18 20.37,9.73 20.71,9.5C21.04,9.28 21.5,9.37 21.72,9.7C22.56,10.95 23,12.41 23,13.93C23,15.45 22.56,16.91 21.72,18.16C21.58,18.37 21.35,18.5 21.11,18.5M19,17.29C18.88,17.29 18.74,17.25 18.61,17.17C18.28,16.94 18.19,16.5 18.42,16.15C18.86,15.5 19.1,14.73 19.1,13.93C19.1,13.14 18.86,12.37 18.42,11.71C18.19,11.37 18.28,10.92 18.61,10.69C18.95,10.47 19.4,10.55 19.63,10.89C20.24,11.79 20.56,12.84 20.56,13.93C20.56,15 20.24,16.07 19.63,16.97C19.5,17.18 19.25,17.29 19,17.29M14.9,15.73C15.89,15.73 16.7,14.92 16.7,13.93C16.7,13.17 16.22,12.5 15.55,12.25C15.5,12.55 15.43,12.85 15.34,13.14C15.23,13.44 14.95,13.64 14.64,13.64C14.57,13.64 14.5,13.62 14.41,13.6C14.03,13.47 13.82,13.06 13.95,12.67C14.09,12.24 14.17,11.78 14.17,11.32C14.17,8.93 12.22,7 9.82,7C8.1,7 6.56,8 5.87,9.5C6.54,9.7 7.16,10.04 7.66,10.54C7.95,10.83 7.95,11.29 7.66,11.58C7.38,11.86 6.91,11.86 6.63,11.58C6.17,11.12 5.56,10.86 4.9,10.86C3.56,10.86 2.46,11.96 2.46,13.3C2.46,14.64 3.56,15.73 4.9,15.73H14.9M15.6,10.75C17.06,11.07 18.17,12.37 18.17,13.93C18.17,15.73 16.7,17.19 14.9,17.19H4.9C2.75,17.19 1,15.45 1,13.3C1,11.34 2.45,9.73 4.33,9.45C5.12,7.12 7.33,5.5 9.82,5.5C12.83,5.5 15.31,7.82 15.6,10.75Z" /></g><g id="monitor"><path d="M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z" /></g><g id="monitor-multiple"><path d="M22,17V7H6V17H22M22,5A2,2 0 0,1 24,7V17C24,18.11 23.1,19 22,19H16V21H18V23H10V21H12V19H6C4.89,19 4,18.11 4,17V7A2,2 0 0,1 6,5H22M2,3V15H0V3A2,2 0 0,1 2,1H20V3H2Z" /></g><g id="more"><path d="M19,13.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 19,13.5M14,13.5A1.5,1.5 0 0,1 12.5,12A1.5,1.5 0 0,1 14,10.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 14,13.5M9,13.5A1.5,1.5 0 0,1 7.5,12A1.5,1.5 0 0,1 9,10.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,13.5M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.37,21 7.06,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3Z" /></g><g id="motorbike"><path d="M16.36,4.27H18.55V2.13H16.36V1.07H18.22C17.89,0.43 17.13,0 16.36,0C15.16,0 14.18,0.96 14.18,2.13C14.18,3.31 15.16,4.27 16.36,4.27M10.04,9.39L13,6.93L17.45,9.6H10.25M19.53,12.05L21.05,10.56C21.93,9.71 21.93,8.43 21.05,7.57L19.2,9.39L13.96,4.27C13.64,3.73 13,3.41 12.33,3.41C11.78,3.41 11.35,3.63 11,3.95L7,7.89C6.65,8.21 6.44,8.64 6.44,9.17V9.71H5.13C4.04,9.71 3.16,10.67 3.16,11.84V12.27C3.5,12.16 3.93,12.16 4.25,12.16C7.09,12.16 9.5,14.4 9.5,17.28C9.5,17.6 9.5,18.03 9.38,18.35H14.5C14.4,18.03 14.4,17.6 14.4,17.28C14.4,14.29 16.69,12.05 19.53,12.05M4.36,19.73C2.84,19.73 1.64,18.56 1.64,17.07C1.64,15.57 2.84,14.4 4.36,14.4C5.89,14.4 7.09,15.57 7.09,17.07C7.09,18.56 5.89,19.73 4.36,19.73M4.36,12.8C1.96,12.8 0,14.72 0,17.07C0,19.41 1.96,21.33 4.36,21.33C6.76,21.33 8.73,19.41 8.73,17.07C8.73,14.72 6.76,12.8 4.36,12.8M19.64,19.73C18.11,19.73 16.91,18.56 16.91,17.07C16.91,15.57 18.11,14.4 19.64,14.4C21.16,14.4 22.36,15.57 22.36,17.07C22.36,18.56 21.16,19.73 19.64,19.73M19.64,12.8C17.24,12.8 15.27,14.72 15.27,17.07C15.27,19.41 17.24,21.33 19.64,21.33C22.04,21.33 24,19.41 24,17.07C24,14.72 22.04,12.8 19.64,12.8Z" /></g><g id="mouse"><path d="M11,1.07C7.05,1.56 4,4.92 4,9H11M4,15A8,8 0 0,0 12,23A8,8 0 0,0 20,15V11H4M13,1.07V9H20C20,4.92 16.94,1.56 13,1.07Z" /></g><g id="mouse-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.5,20.79C16.08,22.16 14.14,23 12,23A8,8 0 0,1 4,15V11H7.73L5.73,9H4C4,8.46 4.05,7.93 4.15,7.42L2,5.27M11,1.07V9H10.82L5.79,3.96C7.05,2.4 8.9,1.33 11,1.07M20,11V15C20,15.95 19.83,16.86 19.53,17.71L12.82,11H20M13,1.07C16.94,1.56 20,4.92 20,9H13V1.07Z" /></g><g id="mouse-variant"><path d="M14,7H10V2.1C12.28,2.56 14,4.58 14,7M4,7C4,4.58 5.72,2.56 8,2.1V7H4M14,12C14,14.42 12.28,16.44 10,16.9V18A3,3 0 0,0 13,21A3,3 0 0,0 16,18V13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13H18V18A5,5 0 0,1 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H14V12Z" /></g><g id="mouse-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.29,20.56C16.42,22 14.82,23 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H5.73L2,5.27M14,7H10V2.1C12.28,2.56 14,4.58 14,7M8,2.1V6.18L5.38,3.55C6.07,2.83 7,2.31 8,2.1M14,12V12.17L10.82,9H14V12M10,16.9V18A3,3 0 0,0 13,21C14.28,21 15.37,20.2 15.8,19.07L12.4,15.67C11.74,16.28 10.92,16.71 10,16.9M16,13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13V16.18L16,14.18V13Z" /></g><g id="move-resize"><path d="M9,1V2H10V5H9V6H12V5H11V2H12V1M9,7C7.89,7 7,7.89 7,9V21C7,22.11 7.89,23 9,23H21C22.11,23 23,22.11 23,21V9C23,7.89 22.11,7 21,7M1,9V12H2V11H5V12H6V9H5V10H2V9M9,9H21V21H9M14,10V11H15V16H11V15H10V18H11V17H15V19H14V20H17V19H16V17H19V18H20V15H19V16H16V11H17V10" /></g><g id="move-resize-variant"><path d="M1.88,0.46L0.46,1.88L5.59,7H2V9H9V2H7V5.59M11,7V9H21V15H23V9A2,2 0 0,0 21,7M7,11V21A2,2 0 0,0 9,23H15V21H9V11M15.88,14.46L14.46,15.88L19.6,21H17V23H23V17H21V19.59" /></g><g id="movie"><path d="M18,4L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4H18Z" /></g><g id="multiplication"><path d="M11,3H13V10.27L19.29,6.64L20.29,8.37L14,12L20.3,15.64L19.3,17.37L13,13.72V21H11V13.73L4.69,17.36L3.69,15.63L10,12L3.72,8.36L4.72,6.63L11,10.26V3Z" /></g><g id="multiplication-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M11,17H13V13.73L15.83,15.36L16.83,13.63L14,12L16.83,10.36L15.83,8.63L13,10.27V7H11V10.27L8.17,8.63L7.17,10.36L10,12L7.17,13.63L8.17,15.36L11,13.73V17Z" /></g><g id="music-box"><path d="M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="music-box-outline"><path d="M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z" /></g><g id="music-circle"><path d="M16,9V7H12V12.5C11.58,12.19 11.07,12 10.5,12A2.5,2.5 0 0,0 8,14.5A2.5,2.5 0 0,0 10.5,17A2.5,2.5 0 0,0 13,14.5V9H16M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="music-note"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8,12 6,14 6,16.5C6,19 8,21 10.5,21C13,21 15,19 15,16.5V6H19V3H12Z" /></g><g id="music-note-bluetooth"><path d="M10,3V12.26C9.5,12.09 9,12 8.5,12C6,12 4,14 4,16.5C4,19 6,21 8.5,21C11,21 13,19 13,16.5V6H17V3H10M20,7V10.79L17.71,8.5L17,9.21L19.79,12L17,14.79L17.71,15.5L20,13.21V17H20.5L23.35,14.15L21.21,12L23.36,9.85L20.5,7H20M21,8.91L21.94,9.85L21,10.79V8.91M21,13.21L21.94,14.15L21,15.09V13.21Z" /></g><g id="music-note-bluetooth-off"><path d="M10,3V8.68L13,11.68V6H17V3H10M3.28,4.5L2,5.77L8.26,12.03C5.89,12.15 4,14.1 4,16.5C4,19 6,21 8.5,21C10.9,21 12.85,19.11 12.97,16.74L17.68,21.45L18.96,20.18L13,14.22L10,11.22L3.28,4.5M20,7V10.79L17.71,8.5L17,9.21L19.79,12L17,14.79L17.71,15.5L20,13.21V17H20.5L23.35,14.15L21.21,12L23.36,9.85L20.5,7H20M21,8.91L21.94,9.85L21,10.79V8.91M21,13.21L21.94,14.15L21,15.09V13.21Z" /></g><g id="music-note-eighth"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V6H19V3H12Z" /></g><g id="music-note-half"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V9L15,6V3H12M10.5,14.5A2,2 0 0,1 12.5,16.5A2,2 0 0,1 10.5,18.5A2,2 0 0,1 8.5,16.5A2,2 0 0,1 10.5,14.5Z" /></g><g id="music-note-off"><path d="M12,3V8.68L15,11.68V6H19V3H12M5.28,4.5L4,5.77L10.26,12.03C7.89,12.15 6,14.1 6,16.5C6,19 8,21 10.5,21C12.9,21 14.85,19.11 14.97,16.74L19.68,21.45L20.96,20.18L15,14.22L12,11.22L5.28,4.5Z" /></g><g id="music-note-quarter"><path d="M12,3H15V15H19V18H14.72C14.1,19.74 12.46,21 10.5,21C8.54,21 6.9,19.74 6.28,18H3V15H6.28C6.9,13.26 8.54,12 10.5,12C11,12 11.5,12.09 12,12.26V3Z" /></g><g id="music-note-sixteenth"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V10H19V7H15V6H19V3H12Z" /></g><g id="music-note-whole"><path d="M10.5,12C8.6,12 6.9,13.2 6.26,15H3V18H6.26C6.9,19.8 8.6,21 10.5,21C12.4,21 14.1,19.8 14.74,18H19V15H14.74C14.1,13.2 12.4,12 10.5,12M10.5,14.5A2,2 0 0,1 12.5,16.5A2,2 0 0,1 10.5,18.5A2,2 0 0,1 8.5,16.5A2,2 0 0,1 10.5,14.5Z" /></g><g id="nature"><path d="M13,16.12C16.47,15.71 19.17,12.76 19.17,9.17C19.17,5.3 16.04,2.17 12.17,2.17A7,7 0 0,0 5.17,9.17C5.17,12.64 7.69,15.5 11,16.06V20H5V22H19V20H13V16.12Z" /></g><g id="nature-people"><path d="M4.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,8A1.5,1.5 0 0,0 3,9.5A1.5,1.5 0 0,0 4.5,11M22.17,9.17C22.17,5.3 19.04,2.17 15.17,2.17A7,7 0 0,0 8.17,9.17C8.17,12.64 10.69,15.5 14,16.06V20H6V17H7V13A1,1 0 0,0 6,12H3A1,1 0 0,0 2,13V17H3V22H19V20H16V16.12C19.47,15.71 22.17,12.76 22.17,9.17Z" /></g><g id="navigation"><path d="M12,2L4.5,20.29L5.21,21L12,18L18.79,21L19.5,20.29L12,2Z" /></g><g id="near-me"><path d="M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z" /></g><g id="needle"><path d="M11.15,15.18L9.73,13.77L11.15,12.35L12.56,13.77L13.97,12.35L12.56,10.94L13.97,9.53L15.39,10.94L16.8,9.53L13.97,6.7L6.9,13.77L9.73,16.6L11.15,15.18M3.08,19L6.2,15.89L4.08,13.77L13.97,3.87L16.1,6L17.5,4.58L16.1,3.16L17.5,1.75L21.75,6L20.34,7.4L18.92,6L17.5,7.4L19.63,9.53L9.73,19.42L7.61,17.3L3.08,21.84V19Z" /></g><g id="nest-protect"><path d="M12,18A6,6 0 0,0 18,12C18,8.68 15.31,6 12,6C8.68,6 6,8.68 6,12A6,6 0 0,0 12,18M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12Z" /></g><g id="nest-thermostat"><path d="M16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="new-box"><path d="M20,4C21.11,4 22,4.89 22,6V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V6C2,4.89 2.89,4 4,4H20M8.5,15V9H7.25V12.5L4.75,9H3.5V15H4.75V11.5L7.3,15H8.5M13.5,10.26V9H9.5V15H13.5V13.75H11V12.64H13.5V11.38H11V10.26H13.5M20.5,14V9H19.25V13.5H18.13V10H16.88V13.5H15.75V9H14.5V14A1,1 0 0,0 15.5,15H19.5A1,1 0 0,0 20.5,14Z" /></g><g id="newspaper"><path d="M20,11H4V8H20M20,15H13V13H20M20,19H13V17H20M11,19H4V13H11M20.33,4.67L18.67,3L17,4.67L15.33,3L13.67,4.67L12,3L10.33,4.67L8.67,3L7,4.67L5.33,3L3.67,4.67L2,3V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V3L20.33,4.67Z" /></g><g id="nfc"><path d="M10.59,7.66C10.59,7.66 11.19,7.39 11.57,7.82C11.95,8.26 12.92,9.94 12.92,11.62C12.92,13.3 12.5,15.09 12.05,15.68C11.62,16.28 11.19,16.28 10.86,16.06C10.54,15.85 5.5,12 5.23,11.89C4.95,11.78 4.85,12.05 5.12,13.5C5.39,15 4.95,15.41 4.57,15.47C4.2,15.5 3.06,15.2 3,12.16C2.95,9.13 3.76,8.64 4.14,8.64C4.85,8.64 10.27,13.5 10.64,13.46C10.97,13.41 11.13,11.35 10.5,9.72C9.78,7.96 10.59,7.66 10.59,7.66M19.3,4.63C21.12,8.24 21,11.66 21,12C21,12.34 21.12,15.76 19.3,19.37C19.3,19.37 18.83,19.92 18.12,19.59C17.42,19.26 17.66,18.4 17.66,18.4C17.66,18.4 19.14,15.55 19.1,12.05V12C19.14,8.5 17.66,5.6 17.66,5.6C17.66,5.6 17.42,4.74 18.12,4.41C18.83,4.08 19.3,4.63 19.3,4.63M15.77,6.25C17.26,8.96 17.16,11.66 17.14,12C17.16,12.34 17.26,14.92 15.77,17.85C15.77,17.85 15.3,18.4 14.59,18.07C13.89,17.74 14.13,16.88 14.13,16.88C14.13,16.88 15.09,15.5 15.24,12.05V12C15.14,8.53 14.13,7.23 14.13,7.23C14.13,7.23 13.89,6.36 14.59,6.04C15.3,5.71 15.77,6.25 15.77,6.25Z" /></g><g id="nfc-tap"><path d="M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M4,4H11A2,2 0 0,1 13,6V9H11V6H4V11H6V9L9,12L6,15V13H4A2,2 0 0,1 2,11V6A2,2 0 0,1 4,4M20,20H13A2,2 0 0,1 11,18V15H13V18H20V13H18V15L15,12L18,9V11H20A2,2 0 0,1 22,13V18A2,2 0 0,1 20,20Z" /></g><g id="nfc-variant"><path d="M18,6H13A2,2 0 0,0 11,8V10.28C10.41,10.62 10,11.26 10,12A2,2 0 0,0 12,14C13.11,14 14,13.1 14,12C14,11.26 13.6,10.62 13,10.28V8H16V16H8V8H10V6H8L6,6V18H18M20,20H4V4H20M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20C21.11,22 22,21.1 22,20V4C22,2.89 21.11,2 20,2Z" /></g><g id="nodejs"><path d="M12,1.85C11.73,1.85 11.45,1.92 11.22,2.05L3.78,6.35C3.3,6.63 3,7.15 3,7.71V16.29C3,16.85 3.3,17.37 3.78,17.65L5.73,18.77C6.68,19.23 7,19.24 7.44,19.24C8.84,19.24 9.65,18.39 9.65,16.91V8.44C9.65,8.32 9.55,8.22 9.43,8.22H8.5C8.37,8.22 8.27,8.32 8.27,8.44V16.91C8.27,17.57 7.59,18.22 6.5,17.67L4.45,16.5C4.38,16.45 4.34,16.37 4.34,16.29V7.71C4.34,7.62 4.38,7.54 4.45,7.5L11.89,3.21C11.95,3.17 12.05,3.17 12.11,3.21L19.55,7.5C19.62,7.54 19.66,7.62 19.66,7.71V16.29C19.66,16.37 19.62,16.45 19.55,16.5L12.11,20.79C12.05,20.83 11.95,20.83 11.88,20.79L10,19.65C9.92,19.62 9.84,19.61 9.79,19.64C9.26,19.94 9.16,20 8.67,20.15C8.55,20.19 8.36,20.26 8.74,20.47L11.22,21.94C11.46,22.08 11.72,22.15 12,22.15C12.28,22.15 12.54,22.08 12.78,21.94L20.22,17.65C20.7,17.37 21,16.85 21,16.29V7.71C21,7.15 20.7,6.63 20.22,6.35L12.78,2.05C12.55,1.92 12.28,1.85 12,1.85M14,8C11.88,8 10.61,8.89 10.61,10.39C10.61,12 11.87,12.47 13.91,12.67C16.34,12.91 16.53,13.27 16.53,13.75C16.53,14.58 15.86,14.93 14.3,14.93C12.32,14.93 11.9,14.44 11.75,13.46C11.73,13.36 11.64,13.28 11.53,13.28H10.57C10.45,13.28 10.36,13.37 10.36,13.5C10.36,14.74 11.04,16.24 14.3,16.24C16.65,16.24 18,15.31 18,13.69C18,12.08 16.92,11.66 14.63,11.35C12.32,11.05 12.09,10.89 12.09,10.35C12.09,9.9 12.29,9.3 14,9.3C15.5,9.3 16.09,9.63 16.32,10.66C16.34,10.76 16.43,10.83 16.53,10.83H17.5C17.55,10.83 17.61,10.81 17.65,10.76C17.69,10.72 17.72,10.66 17.7,10.6C17.56,8.82 16.38,8 14,8Z" /></g><g id="note"><path d="M14,10V4.5L19.5,10M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V9L15,3H5Z" /></g><g id="note-multiple"><path d="M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3Z" /></g><g id="note-multiple-outline"><path d="M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M7,4V18H21V11H14V4H7Z" /></g><g id="note-outline"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,5V19H19V12H12V5H5Z" /></g><g id="note-plus"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M9,18H11V15H14V13H11V10H9V13H6V15H9V18Z" /></g><g id="note-plus-outline"><path d="M15,10H20.5L15,4.5V10M4,3H16L22,9V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V5C2,3.89 2.89,3 4,3M4,5V19H20V12H13V5H4M8,17V15H6V13H8V11H10V13H12V15H10V17H8Z" /></g><g id="note-text"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,12V14H19V12H5M5,16V18H14V16H5Z" /></g><g id="notification-clear-all"><path d="M5,13H19V11H5M3,17H17V15H3M7,7V9H21V7" /></g><g id="npm"><path d="M4,10V14H6V11H7V14H8V10H4M9,10V15H11V14H13V10H9M12,11V13H11V11H12M14,10V14H16V11H17V14H18V11H19V14H20V10H14M3,9H21V15H12V16H8V15H3V9Z" /></g><g id="nuke"><path d="M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z" /></g><g id="numeric"><path d="M4,17V9H2V7H6V17H4M22,15C22,16.11 21.1,17 20,17H16V15H20V13H18V11H20V9H16V7H20A2,2 0 0,1 22,9V10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 22,13.5V15M14,15V17H8V13C8,11.89 8.9,11 10,11H12V9H8V7H12A2,2 0 0,1 14,9V11C14,12.11 13.1,13 12,13H10V15H14Z" /></g><g id="numeric-0-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z" /></g><g id="numeric-0-box-multiple-outline"><path d="M21,17V3H7V17H21M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,5H15A2,2 0 0,1 17,7V13A2,2 0 0,1 15,15H13A2,2 0 0,1 11,13V7A2,2 0 0,1 13,5M13,7V13H15V7H13Z" /></g><g id="numeric-0-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z" /></g><g id="numeric-1-box"><path d="M14,17H12V9H10V7H14M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-1-box-multiple-outline"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M14,15H16V5H12V7H14M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-1-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,17H14V7H10V9H12" /></g><g id="numeric-2-box"><path d="M15,11C15,12.11 14.1,13 13,13H11V15H15V17H9V13C9,11.89 9.9,11 11,11H13V9H9V7H13A2,2 0 0,1 15,9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-2-box-multiple-outline"><path d="M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-2-box-outline"><path d="M15,15H11V13H13A2,2 0 0,0 15,11V9C15,7.89 14.1,7 13,7H9V9H13V11H11A2,2 0 0,0 9,13V17H15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-3-box"><path d="M15,10.5A1.5,1.5 0 0,1 13.5,12C14.34,12 15,12.67 15,13.5V15C15,16.11 14.11,17 13,17H9V15H13V13H11V11H13V9H9V7H13C14.11,7 15,7.89 15,9M19,3H5C3.91,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19C20.11,21 21,20.1 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-3-box-multiple-outline"><path d="M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z" /></g><g id="numeric-3-box-outline"><path d="M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-4-box"><path d="M15,17H13V13H9V7H11V11H13V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-4-box-multiple-outline"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M15,15H17V5H15V9H13V5H11V11H15M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-4-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13,17H15V7H13V11H11V7H9V13H13" /></g><g id="numeric-5-box"><path d="M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H9V15H13V13H9V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-5-box-multiple-outline"><path d="M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z" /></g><g id="numeric-5-box-outline"><path d="M15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H9V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-6-box"><path d="M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H11A2,2 0 0,1 9,15V9C9,7.89 9.9,7 11,7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H13V13H11V15Z" /></g><g id="numeric-6-box-multiple-outline"><path d="M13,11H15V13H13M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-6-box-outline"><path d="M11,13H13V15H11M11,17H13A2,2 0 0,0 15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H11A2,2 0 0,0 9,9V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-7-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17L15,9V7H9V9H13L9,17H11Z" /></g><g id="numeric-7-box-multiple-outline"><path d="M13,15L17,7V5H11V7H15L11,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-7-box-outline"><path d="M11,17L15,9V7H9V9H13L9,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-8-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M11,13H13V15H11V13M11,9H13V11H11V9Z" /></g><g id="numeric-8-box-multiple-outline"><path d="M13,11H15V13H13M13,7H15V9H13M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-8-box-outline"><path d="M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-9-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M13,11H11V9H13V11M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7Z" /></g><g id="numeric-9-box-multiple-outline"><path d="M15,9H13V7H15M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-9-box-outline"><path d="M13,11H11V9H13M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-9-plus-box"><path d="M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9Z" /></g><g id="numeric-9-plus-box-multiple-outline"><path d="M21,9H19V7H17V9H15V11H17V13H19V11H21V17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M11,9V8H12V9M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-9-plus-box-outline"><path d="M19,11H17V9H15V11H13V13H15V15H17V13H19V19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,11V10H10V11M12,14V10C12,8.89 11.1,8 10,8H9A2,2 0 0,0 7,10V11C7,12.11 7.9,13 9,13H10V14H7V16H10A2,2 0 0,0 12,14Z" /></g><g id="nutrition"><path d="M22,18A4,4 0 0,1 18,22H14A4,4 0 0,1 10,18V16H22V18M4,3H14A2,2 0 0,1 16,5V14H8V19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,6V8H6V6H4M14,8V6H8V8H14M4,10V12H6V10H4M8,10V12H14V10H8M4,14V16H6V14H4Z" /></g><g id="oar"><path d="M20.23,15.21C18.77,13.75 14.97,10.2 12.77,11.27L4.5,3L3,4.5L11.28,12.79C10.3,15 13.88,18.62 15.35,20.08C17.11,21.84 18.26,20.92 19.61,19.57C21.1,18.08 21.61,16.61 20.23,15.21Z" /></g><g id="octagon"><path d="M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27" /></g><g id="octagon-outline"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1" /></g><g id="odnoklassniki"><path d="M17.83,12.74C17.55,12.17 16.76,11.69 15.71,12.5C14.28,13.64 12,13.64 12,13.64C12,13.64 9.72,13.64 8.29,12.5C7.24,11.69 6.45,12.17 6.17,12.74C5.67,13.74 6.23,14.23 7.5,15.04C8.59,15.74 10.08,16 11.04,16.1L10.24,16.9C9.1,18.03 8,19.12 7.25,19.88C6.8,20.34 6.8,21.07 7.25,21.5L7.39,21.66C7.84,22.11 8.58,22.11 9.03,21.66L12,18.68C13.15,19.81 14.24,20.9 15,21.66C15.45,22.11 16.18,22.11 16.64,21.66L16.77,21.5C17.23,21.07 17.23,20.34 16.77,19.88L13.79,16.9L13,16.09C13.95,16 15.42,15.73 16.5,15.04C17.77,14.23 18.33,13.74 17.83,12.74M12,4.57C13.38,4.57 14.5,5.69 14.5,7.06C14.5,8.44 13.38,9.55 12,9.55C10.62,9.55 9.5,8.44 9.5,7.06C9.5,5.69 10.62,4.57 12,4.57M12,12.12C14.8,12.12 17.06,9.86 17.06,7.06C17.06,4.27 14.8,2 12,2C9.2,2 6.94,4.27 6.94,7.06C6.94,9.86 9.2,12.12 12,12.12Z" /></g><g id="office"><path d="M3,18L7,16.75V7L14,5V19.5L3.5,18.25L14,22L20,20.75V3.5L13.95,2L3,5.75V18Z" /></g><g id="oil"><path d="M22,12.5C22,12.5 24,14.67 24,16A2,2 0 0,1 22,18A2,2 0 0,1 20,16C20,14.67 22,12.5 22,12.5M6,6H10A1,1 0 0,1 11,7A1,1 0 0,1 10,8H9V10H11C11.74,10 12.39,10.4 12.73,11L19.24,7.24L22.5,9.13C23,9.4 23.14,10 22.87,10.5C22.59,10.97 22,11.14 21.5,10.86L19.4,9.65L15.75,15.97C15.41,16.58 14.75,17 14,17H5A2,2 0 0,1 3,15V12A2,2 0 0,1 5,10H7V8H6A1,1 0 0,1 5,7A1,1 0 0,1 6,6M5,12V15H14L16.06,11.43L12.6,13.43L11.69,12H5M0.38,9.21L2.09,7.5C2.5,7.11 3.11,7.11 3.5,7.5C3.89,7.89 3.89,8.5 3.5,8.91L1.79,10.62C1.4,11 0.77,11 0.38,10.62C0,10.23 0,9.6 0.38,9.21Z" /></g><g id="oil-temperature"><path d="M11.5,1A1.5,1.5 0 0,0 10,2.5V14.5C9.37,14.97 9,15.71 9,16.5A2.5,2.5 0 0,0 11.5,19A2.5,2.5 0 0,0 14,16.5C14,15.71 13.63,15 13,14.5V13H17V11H13V9H17V7H13V5H17V3H13V2.5A1.5,1.5 0 0,0 11.5,1M0,15V17C0.67,17 0.79,17.21 1.29,17.71C1.79,18.21 2.67,19 4,19C5.33,19 6.21,18.21 6.71,17.71C6.82,17.59 6.91,17.5 7,17.41V15.16C6.21,15.42 5.65,15.93 5.29,16.29C4.79,16.79 4.67,17 4,17C3.33,17 3.21,16.79 2.71,16.29C2.21,15.79 1.33,15 0,15M16,15V17C16.67,17 16.79,17.21 17.29,17.71C17.79,18.21 18.67,19 20,19C21.33,19 22.21,18.21 22.71,17.71C23.21,17.21 23.33,17 24,17V15C22.67,15 21.79,15.79 21.29,16.29C20.79,16.79 20.67,17 20,17C19.33,17 19.21,16.79 18.71,16.29C18.21,15.79 17.33,15 16,15M8,20C6.67,20 5.79,20.79 5.29,21.29C4.79,21.79 4.67,22 4,22C3.33,22 3.21,21.79 2.71,21.29C2.35,20.93 1.79,20.42 1,20.16V22.41C1.09,22.5 1.18,22.59 1.29,22.71C1.79,23.21 2.67,24 4,24C5.33,24 6.21,23.21 6.71,22.71C7.21,22.21 7.33,22 8,22C8.67,22 8.79,22.21 9.29,22.71C9.73,23.14 10.44,23.8 11.5,23.96C11.66,24 11.83,24 12,24C13.33,24 14.21,23.21 14.71,22.71C15.21,22.21 15.33,22 16,22C16.67,22 16.79,22.21 17.29,22.71C17.79,23.21 18.67,24 20,24C21.33,24 22.21,23.21 22.71,22.71C22.82,22.59 22.91,22.5 23,22.41V20.16C22.21,20.42 21.65,20.93 21.29,21.29C20.79,21.79 20.67,22 20,22C19.33,22 19.21,21.79 18.71,21.29C18.21,20.79 17.33,20 16,20C14.67,20 13.79,20.79 13.29,21.29C12.79,21.79 12.67,22 12,22C11.78,22 11.63,21.97 11.5,21.92C11.22,21.82 11.05,21.63 10.71,21.29C10.21,20.79 9.33,20 8,20Z" /></g><g id="omega"><path d="M19.15,19H13.39V16.87C15.5,15.25 16.59,13.24 16.59,10.84C16.59,9.34 16.16,8.16 15.32,7.29C14.47,6.42 13.37,6 12.03,6C10.68,6 9.57,6.42 8.71,7.3C7.84,8.17 7.41,9.37 7.41,10.88C7.41,13.26 8.5,15.26 10.61,16.87V19H4.85V16.87H8.41C6.04,15.32 4.85,13.23 4.85,10.6C4.85,8.5 5.5,6.86 6.81,5.66C8.12,4.45 9.84,3.85 11.97,3.85C14.15,3.85 15.89,4.45 17.19,5.64C18.5,6.83 19.15,8.5 19.15,10.58C19.15,13.21 17.95,15.31 15.55,16.87H19.15V19Z" /></g><g id="onedrive"><path d="M20.08,13.64C21.17,13.81 22,14.75 22,15.89C22,16.78 21.5,17.55 20.75,17.92L20.58,18H9.18L9.16,18V18C7.71,18 6.54,16.81 6.54,15.36C6.54,13.9 7.72,12.72 9.18,12.72L9.4,12.73L9.39,12.53A3.3,3.3 0 0,1 12.69,9.23C13.97,9.23 15.08,9.96 15.63,11C16.08,10.73 16.62,10.55 17.21,10.55A2.88,2.88 0 0,1 20.09,13.43L20.08,13.64M8.82,12.16C7.21,12.34 5.96,13.7 5.96,15.36C5.96,16.04 6.17,16.66 6.5,17.18H4.73A2.73,2.73 0 0,1 2,14.45C2,13 3.12,11.83 4.53,11.73L4.46,11.06C4.46,9.36 5.84,8 7.54,8C8.17,8 8.77,8.18 9.26,8.5C9.95,7.11 11.4,6.15 13.07,6.15C15.27,6.15 17.08,7.83 17.3,9.97H17.21C16.73,9.97 16.27,10.07 15.84,10.25C15.12,9.25 13.96,8.64 12.69,8.64C10.67,8.64 9,10.19 8.82,12.16Z" /></g><g id="opacity"><path d="M17.66,8L12,2.35L6.34,8C4.78,9.56 4,11.64 4,13.64C4,15.64 4.78,17.75 6.34,19.31C7.9,20.87 9.95,21.66 12,21.66C14.05,21.66 16.1,20.87 17.66,19.31C19.22,17.75 20,15.64 20,13.64C20,11.64 19.22,9.56 17.66,8M6,14C6,12 6.62,10.73 7.76,9.6L12,5.27L16.24,9.65C17.38,10.77 18,12 18,14H6Z" /></g><g id="open-in-app"><path d="M12,10L8,14H11V20H13V14H16M19,4H5C3.89,4 3,4.9 3,6V18A2,2 0 0,0 5,20H9V18H5V8H19V18H15V20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4Z" /></g><g id="open-in-new"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" /></g><g id="openid"><path d="M14,2L11,3.5V19.94C7,19.5 4,17.46 4,15C4,12.75 6.5,10.85 10,10.22V8.19C4.86,8.88 1,11.66 1,15C1,18.56 5.36,21.5 11,21.94C11.03,21.94 11.06,21.94 11.09,21.94L14,20.5V2M15,8.19V10.22C16.15,10.43 17.18,10.77 18.06,11.22L16.5,12L23,13.5L22.5,9L20.5,10C19,9.12 17.12,8.47 15,8.19Z" /></g><g id="opera"><path d="M17.33,3.57C15.86,2.56 14.05,2 12,2C10.13,2 8.46,2.47 7.06,3.32C4.38,4.95 2.72,8 2.72,11.9C2.72,17.19 6.43,22 12,22C17.57,22 21.28,17.19 21.28,11.9C21.28,8.19 19.78,5.25 17.33,3.57M12,3.77C15,3.77 15.6,7.93 15.6,11.72C15.6,15.22 15.26,19.91 12.04,19.91C8.82,19.91 8.4,15.17 8.4,11.67C8.4,7.89 9,3.77 12,3.77Z" /></g><g id="ornament"><path d="M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M6.34,16H7.59L6,14.43C6.05,15 6.17,15.5 6.34,16M12.59,16L8.59,12H6.41L10.41,16H12.59M17.66,12H16.41L18,13.57C17.95,13 17.83,12.5 17.66,12M11.41,12L15.41,16H17.59L13.59,12H11.41M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20Z" /></g><g id="ornament-variant"><path d="M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20M12,12A2,2 0 0,0 10,14A2,2 0 0,0 12,16A2,2 0 0,0 14,14A2,2 0 0,0 12,12M18,14C18,13.31 17.88,12.65 17.67,12C16.72,12.19 16,13 16,14C16,15 16.72,15.81 17.67,15.97C17.88,15.35 18,14.69 18,14M6,14C6,14.69 6.12,15.35 6.33,15.97C7.28,15.81 8,15 8,14C8,13 7.28,12.19 6.33,12C6.12,12.65 6,13.31 6,14Z" /></g><g id="owl"><path d="M12,16C12.56,16.84 13.31,17.53 14.2,18L12,20.2L9.8,18C10.69,17.53 11.45,16.84 12,16M17,11.2A2,2 0 0,0 15,13.2A2,2 0 0,0 17,15.2A2,2 0 0,0 19,13.2C19,12.09 18.1,11.2 17,11.2M7,11.2A2,2 0 0,0 5,13.2A2,2 0 0,0 7,15.2A2,2 0 0,0 9,13.2C9,12.09 8.1,11.2 7,11.2M17,8.7A4,4 0 0,1 21,12.7A4,4 0 0,1 17,16.7A4,4 0 0,1 13,12.7A4,4 0 0,1 17,8.7M7,8.7A4,4 0 0,1 11,12.7A4,4 0 0,1 7,16.7A4,4 0 0,1 3,12.7A4,4 0 0,1 7,8.7M2.24,1C4,4.7 2.73,7.46 1.55,10.2C1.19,11 1,11.83 1,12.7A6,6 0 0,0 7,18.7C7.21,18.69 7.42,18.68 7.63,18.65L10.59,21.61L12,23L13.41,21.61L16.37,18.65C16.58,18.68 16.79,18.69 17,18.7A6,6 0 0,0 23,12.7C23,11.83 22.81,11 22.45,10.2C21.27,7.46 20,4.7 21.76,1C19.12,3.06 15.36,4.69 12,4.7C8.64,4.69 4.88,3.06 2.24,1Z" /></g><g id="package"><path d="M5.12,5H18.87L17.93,4H5.93L5.12,5M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M6,18H12V15H6V18Z" /></g><g id="package-down"><path d="M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z" /></g><g id="package-up"><path d="M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M5.12,5H18.87L17.93,4H5.93L5.12,5M12,9.5L6.5,15H10V17H14V15H17.5L12,9.5Z" /></g><g id="package-variant"><path d="M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z" /></g><g id="package-variant-closed"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L10.11,5.22L16,8.61L17.96,7.5L12,4.15M6.04,7.5L12,10.85L13.96,9.75L8.08,6.35L6.04,7.5M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z" /></g><g id="page-first"><path d="M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z" /></g><g id="page-last"><path d="M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z" /></g><g id="palette"><path d="M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z" /></g><g id="palette-advanced"><path d="M22,22H10V20H22V22M2,22V20H9V22H2M18,18V10H22V18H18M18,3H22V9H18V3M2,18V3H16V18H2M9,14.56A3,3 0 0,0 12,11.56C12,9.56 9,6.19 9,6.19C9,6.19 6,9.56 6,11.56A3,3 0 0,0 9,14.56Z" /></g><g id="panda"><path d="M12,3C13.74,3 15.36,3.5 16.74,4.35C17.38,3.53 18.38,3 19.5,3A3.5,3.5 0 0,1 23,6.5C23,8 22.05,9.28 20.72,9.78C20.9,10.5 21,11.23 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12C3,11.23 3.1,10.5 3.28,9.78C1.95,9.28 1,8 1,6.5A3.5,3.5 0 0,1 4.5,3C5.62,3 6.62,3.53 7.26,4.35C8.64,3.5 10.26,3 12,3M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M16.19,10.3C16.55,11.63 16.08,12.91 15.15,13.16C14.21,13.42 13.17,12.54 12.81,11.2C12.45,9.87 12.92,8.59 13.85,8.34C14.79,8.09 15.83,8.96 16.19,10.3M7.81,10.3C8.17,8.96 9.21,8.09 10.15,8.34C11.08,8.59 11.55,9.87 11.19,11.2C10.83,12.54 9.79,13.42 8.85,13.16C7.92,12.91 7.45,11.63 7.81,10.3M12,14C12.6,14 13.13,14.19 13.5,14.5L12.5,15.5C12.5,15.92 12.84,16.25 13.25,16.25A0.75,0.75 0 0,0 14,15.5A0.5,0.5 0 0,1 14.5,15A0.5,0.5 0 0,1 15,15.5A1.75,1.75 0 0,1 13.25,17.25C12.76,17.25 12.32,17.05 12,16.72C11.68,17.05 11.24,17.25 10.75,17.25A1.75,1.75 0 0,1 9,15.5A0.5,0.5 0 0,1 9.5,15A0.5,0.5 0 0,1 10,15.5A0.75,0.75 0 0,0 10.75,16.25A0.75,0.75 0 0,0 11.5,15.5L10.5,14.5C10.87,14.19 11.4,14 12,14Z" /></g><g id="pandora"><path d="M16.87,7.73C16.87,9.9 15.67,11.7 13.09,11.7H10.45V3.66H13.09C15.67,3.66 16.87,5.5 16.87,7.73M10.45,15.67V13.41H13.09C17.84,13.41 20.5,10.91 20.5,7.73C20.5,4.45 17.84,2 13.09,2H3.5V2.92C6.62,2.92 7.17,3.66 7.17,8.28V15.67C7.17,20.29 6.62,21.08 3.5,21.08V22H14.1V21.08C11,21.08 10.45,20.29 10.45,15.67Z" /></g><g id="panorama"><path d="M8.5,12.5L11,15.5L14.5,11L19,17H5M23,18V6A2,2 0 0,0 21,4H3A2,2 0 0,0 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18Z" /></g><g id="panorama-fisheye"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2Z" /></g><g id="panorama-horizontal"><path d="M21.43,4C21.33,4 21.23,4 21.12,4.06C18.18,5.16 15.09,5.7 12,5.7C8.91,5.7 5.82,5.15 2.88,4.06C2.77,4 2.66,4 2.57,4C2.23,4 2,4.23 2,4.63V19.38C2,19.77 2.23,20 2.57,20C2.67,20 2.77,20 2.88,19.94C5.82,18.84 8.91,18.3 12,18.3C15.09,18.3 18.18,18.85 21.12,19.94C21.23,20 21.33,20 21.43,20C21.76,20 22,19.77 22,19.37V4.63C22,4.23 21.76,4 21.43,4M20,6.54V17.45C17.4,16.68 14.72,16.29 12,16.29C9.28,16.29 6.6,16.68 4,17.45V6.54C6.6,7.31 9.28,7.7 12,7.7C14.72,7.71 17.4,7.32 20,6.54Z" /></g><g id="panorama-vertical"><path d="M6.54,20C7.31,17.4 7.7,14.72 7.7,12C7.7,9.28 7.31,6.6 6.54,4H17.45C16.68,6.6 16.29,9.28 16.29,12C16.29,14.72 16.68,17.4 17.45,20M19.94,21.12C18.84,18.18 18.3,15.09 18.3,12C18.3,8.91 18.85,5.82 19.94,2.88C20,2.77 20,2.66 20,2.57C20,2.23 19.77,2 19.37,2H4.63C4.23,2 4,2.23 4,2.57C4,2.67 4,2.77 4.06,2.88C5.16,5.82 5.71,8.91 5.71,12C5.71,15.09 5.16,18.18 4.07,21.12C4,21.23 4,21.34 4,21.43C4,21.76 4.23,22 4.63,22H19.38C19.77,22 20,21.76 20,21.43C20,21.33 20,21.23 19.94,21.12Z" /></g><g id="panorama-wide-angle"><path d="M12,4C9.27,4 6.78,4.24 4.05,4.72L3.12,4.88L2.87,5.78C2.29,7.85 2,9.93 2,12C2,14.07 2.29,16.15 2.87,18.22L3.12,19.11L4.05,19.27C6.78,19.76 9.27,20 12,20C14.73,20 17.22,19.76 19.95,19.28L20.88,19.12L21.13,18.23C21.71,16.15 22,14.07 22,12C22,9.93 21.71,7.85 21.13,5.78L20.88,4.89L19.95,4.73C17.22,4.24 14.73,4 12,4M12,6C14.45,6 16.71,6.2 19.29,6.64C19.76,8.42 20,10.22 20,12C20,13.78 19.76,15.58 19.29,17.36C16.71,17.8 14.45,18 12,18C9.55,18 7.29,17.8 4.71,17.36C4.24,15.58 4,13.78 4,12C4,10.22 4.24,8.42 4.71,6.64C7.29,6.2 9.55,6 12,6Z" /></g><g id="paper-cut-vertical"><path d="M11.43,3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H20A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23M4,8V20H11A1,1 0 0,1 12,19A1,1 0 0,1 13,20H20V8H15L14.9,8L17,10.92L15.4,12.1L12.42,8H11.58L8.6,12.1L7,10.92L9.1,8H9L4,8M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M12,16A1,1 0 0,1 13,17A1,1 0 0,1 12,18A1,1 0 0,1 11,17A1,1 0 0,1 12,16M12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13M12,10A1,1 0 0,1 13,11A1,1 0 0,1 12,12A1,1 0 0,1 11,11A1,1 0 0,1 12,10Z" /></g><g id="paperclip"><path d="M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z" /></g><g id="parking"><path d="M13.2,11H10V7H13.2A2,2 0 0,1 15.2,9A2,2 0 0,1 13.2,11M13,3H6V21H10V15H13A6,6 0 0,0 19,9C19,5.68 16.31,3 13,3Z" /></g><g id="pause"><path d="M14,19H18V5H14M6,19H10V5H6V19Z" /></g><g id="pause-circle"><path d="M15,16H13V8H15M11,16H9V8H11M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="pause-circle-outline"><path d="M13,16V8H15V16H13M9,16V8H11V16H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="pause-octagon"><path d="M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M15,16V8H13V16H15M11,16V8H9V16H11Z" /></g><g id="pause-octagon-outline"><path d="M15,16H13V8H15V16M11,16H9V8H11V16M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M14.9,5H9.1L5,9.1V14.9L9.1,19H14.9L19,14.9V9.1L14.9,5Z" /></g><g id="paw"><path d="M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.5,7.67 10.85,9.25 9.67,9.43C8.5,9.61 7.24,8.32 6.87,6.54C6.5,4.77 7.17,3.19 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6M19.33,18.38C19.37,19.32 18.65,20.36 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.88,13.09 9.88,10.44 11.89,10.44C13.89,10.44 14.95,13.05 16.3,14.5C17.41,15.72 19.26,16.75 19.33,18.38Z" /></g><g id="paw-off"><path d="M2,4.27L3.28,3L21.5,21.22L20.23,22.5L18.23,20.5C18.09,20.6 17.94,20.68 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.21,13.77 8.84,12.69 9.55,11.82L2,4.27M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.32,6.75 11.26,7.56 11,8.19L7.03,4.2C7.29,3.55 7.75,3.1 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6Z" /></g><g id="pen"><path d="M20.71,7.04C20.37,7.38 20.04,7.71 20.03,8.04C20,8.36 20.34,8.69 20.66,9C21.14,9.5 21.61,9.95 21.59,10.44C21.57,10.93 21.06,11.44 20.55,11.94L16.42,16.08L15,14.66L19.25,10.42L18.29,9.46L16.87,10.87L13.12,7.12L16.96,3.29C17.35,2.9 18,2.9 18.37,3.29L20.71,5.63C21.1,6 21.1,6.65 20.71,7.04M3,17.25L12.56,7.68L16.31,11.43L6.75,21H3V17.25Z" /></g><g id="pencil"><path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" /></g><g id="pencil-box"><path d="M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35C16.92,9.14 16.92,8.79 16.7,8.58L15.42,7.3C15.21,7.08 14.86,7.08 14.65,7.3L13.65,8.3L15.7,10.35L16.7,9.35M7,14.94V17H9.06L15.12,10.94L13.06,8.88L7,14.94Z" /></g><g id="pencil-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94Z" /></g><g id="pencil-circle"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M15.1,7.07C15.24,7.07 15.38,7.12 15.5,7.23L16.77,8.5C17,8.72 17,9.07 16.77,9.28L15.77,10.28L13.72,8.23L14.72,7.23C14.82,7.12 14.96,7.07 15.1,7.07M13.13,8.81L15.19,10.87L9.13,16.93H7.07V14.87L13.13,8.81Z" /></g><g id="pencil-lock"><path d="M5.5,2A2.5,2.5 0 0,0 3,4.5V5A1,1 0 0,0 2,6V10A1,1 0 0,0 3,11H8A1,1 0 0,0 9,10V6A1,1 0 0,0 8,5V4.5A2.5,2.5 0 0,0 5.5,2M5.5,3A1.5,1.5 0 0,1 7,4.5V5H4V4.5A1.5,1.5 0 0,1 5.5,3M19.66,3C19.4,3 19.16,3.09 18.97,3.28L17.13,5.13L20.88,8.88L22.72,7.03C23.11,6.64 23.11,6 22.72,5.63L20.38,3.28C20.18,3.09 19.91,3 19.66,3M16.06,6.19L5,17.25V21H8.75L19.81,9.94L16.06,6.19Z" /></g><g id="pencil-off"><path d="M18.66,2C18.4,2 18.16,2.09 17.97,2.28L16.13,4.13L19.88,7.88L21.72,6.03C22.11,5.64 22.11,5 21.72,4.63L19.38,2.28C19.18,2.09 18.91,2 18.66,2M3.28,4L2,5.28L8.5,11.75L4,16.25V20H7.75L12.25,15.5L18.72,22L20,20.72L13.5,14.25L9.75,10.5L3.28,4M15.06,5.19L11.03,9.22L14.78,12.97L18.81,8.94L15.06,5.19Z" /></g><g id="pentagon"><path d="M12,2.5L2,9.8L5.8,21.5H18.2L22,9.8L12,2.5Z" /></g><g id="pentagon-outline"><path d="M12,5L19.6,10.5L16.7,19.4H7.3L4.4,10.5L12,5M12,2.5L2,9.8L5.8,21.5H18.1L22,9.8L12,2.5Z" /></g><g id="percent"><path d="M7,4A3,3 0 0,1 10,7A3,3 0 0,1 7,10A3,3 0 0,1 4,7A3,3 0 0,1 7,4M17,14A3,3 0 0,1 20,17A3,3 0 0,1 17,20A3,3 0 0,1 14,17A3,3 0 0,1 17,14M20,5.41L5.41,20L4,18.59L18.59,4L20,5.41Z" /></g><g id="pharmacy"><path d="M16,14H13V17H11V14H8V12H11V9H13V12H16M21,5H18.35L19.5,1.85L17.15,1L15.69,5H3V7L5,13L3,19V21H21V19L19,13L21,7V5Z" /></g><g id="phone"><path d="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z" /></g><g id="phone-bluetooth"><path d="M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,7.21L18.94,8.14L18,9.08M18,2.91L18.94,3.85L18,4.79M14.71,9.5L17,7.21V11H17.5L20.35,8.14L18.21,6L20.35,3.85L17.5,1H17V4.79L14.71,2.5L14,3.21L16.79,6L14,8.79L14.71,9.5Z" /></g><g id="phone-classic"><path d="M12,3C7.46,3 3.34,4.78 0.29,7.67C0.11,7.85 0,8.1 0,8.38C0,8.66 0.11,8.91 0.29,9.09L2.77,11.57C2.95,11.75 3.2,11.86 3.5,11.86C3.75,11.86 4,11.75 4.18,11.58C4.97,10.84 5.87,10.22 6.84,9.73C7.17,9.57 7.4,9.23 7.4,8.83V5.73C8.85,5.25 10.39,5 12,5C13.59,5 15.14,5.25 16.59,5.72V8.82C16.59,9.21 16.82,9.56 17.15,9.72C18.13,10.21 19,10.84 19.82,11.57C20,11.75 20.25,11.85 20.5,11.85C20.8,11.85 21.05,11.74 21.23,11.56L23.71,9.08C23.89,8.9 24,8.65 24,8.37C24,8.09 23.88,7.85 23.7,7.67C20.65,4.78 16.53,3 12,3M9,7V10C9,10 3,15 3,18V22H21V18C21,15 15,10 15,10V7H13V9H11V7H9M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,13.5A2.5,2.5 0 0,0 9.5,16A2.5,2.5 0 0,0 12,18.5A2.5,2.5 0 0,0 14.5,16A2.5,2.5 0 0,0 12,13.5Z" /></g><g id="phone-forward"><path d="M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,11L23,6L18,1V4H14V8H18V11Z" /></g><g id="phone-hangup"><path d="M12,9C10.4,9 8.85,9.25 7.4,9.72V12.82C7.4,13.22 7.17,13.56 6.84,13.72C5.86,14.21 4.97,14.84 4.17,15.57C4,15.75 3.75,15.86 3.5,15.86C3.2,15.86 2.95,15.74 2.77,15.56L0.29,13.08C0.11,12.9 0,12.65 0,12.38C0,12.1 0.11,11.85 0.29,11.67C3.34,8.77 7.46,7 12,7C16.54,7 20.66,8.77 23.71,11.67C23.89,11.85 24,12.1 24,12.38C24,12.65 23.89,12.9 23.71,13.08L21.23,15.56C21.05,15.74 20.8,15.86 20.5,15.86C20.25,15.86 20,15.75 19.82,15.57C19.03,14.84 18.14,14.21 17.16,13.72C16.83,13.56 16.6,13.22 16.6,12.82V9.72C15.15,9.25 13.6,9 12,9Z" /></g><g id="phone-in-talk"><path d="M15,12H17A5,5 0 0,0 12,7V9A3,3 0 0,1 15,12M19,12H21C21,7 16.97,3 12,3V5C15.86,5 19,8.13 19,12M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z" /></g><g id="phone-incoming"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M19,11V9.5H15.5L21,4L20,3L14.5,8.5V5H13V11H19Z" /></g><g id="phone-locked"><path d="M19.2,4H15.8V3.5C15.8,2.56 16.56,1.8 17.5,1.8C18.44,1.8 19.2,2.56 19.2,3.5M20,4V3.5A2.5,2.5 0 0,0 17.5,1A2.5,2.5 0 0,0 15,3.5V4A1,1 0 0,0 14,5V9A1,1 0 0,0 15,10H20A1,1 0 0,0 21,9V5A1,1 0 0,0 20,4M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z" /></g><g id="phone-log"><path d="M20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5M12,3H14V5H12M15,3H21V5H15M12,6H14V8H12M15,6H21V8H15M12,9H14V11H12M15,9H21V11H15" /></g><g id="phone-minus"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M13,6V8H21V6" /></g><g id="phone-missed"><path d="M23.71,16.67C20.66,13.77 16.54,12 12,12C7.46,12 3.34,13.77 0.29,16.67C0.11,16.85 0,17.1 0,17.38C0,17.65 0.11,17.9 0.29,18.08L2.77,20.56C2.95,20.74 3.2,20.86 3.5,20.86C3.75,20.86 4,20.75 4.18,20.57C4.97,19.83 5.86,19.21 6.84,18.72C7.17,18.56 7.4,18.22 7.4,17.82V14.72C8.85,14.25 10.39,14 12,14C13.6,14 15.15,14.25 16.6,14.72V17.82C16.6,18.22 16.83,18.56 17.16,18.72C18.14,19.21 19.03,19.83 19.82,20.57C20,20.75 20.25,20.86 20.5,20.86C20.8,20.86 21.05,20.74 21.23,20.56L23.71,18.08C23.89,17.9 24,17.65 24,17.38C24,17.1 23.89,16.85 23.71,16.67M6.5,5.5L12,11L19,4L18,3L12,9L7.5,4.5H11V3H5V9H6.5V5.5Z" /></g><g id="phone-outgoing"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M15,3V4.5H18.5L13,10L14,11L19.5,5.5V9H21V3H15Z" /></g><g id="phone-paused"><path d="M19,10H21V3H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,3H15V10H17V3Z" /></g><g id="phone-plus"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M16,3V6H13V8H16V11H18V8H21V6H18V3" /></g><g id="phone-settings"><path d="M19,11H21V9H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,9H15V11H17M13,9H11V11H13V9Z" /></g><g id="phone-voip"><path d="M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H13M23.7,7.67C23.88,7.85 24,8.09 24,8.37C24,8.65 23.89,8.9 23.71,9.08L21.23,11.56C21.05,11.74 20.8,11.85 20.5,11.85C20.25,11.85 20,11.75 19.82,11.57C19,10.84 18.13,10.21 17.15,9.72C16.82,9.56 16.59,9.21 16.59,8.82V5.72C15.14,5.25 13.59,5 12,5C10.4,5 8.85,5.25 7.4,5.73V8.83C7.4,9.23 7.17,9.57 6.84,9.73C5.87,10.22 4.97,10.84 4.18,11.58C4,11.75 3.75,11.86 3.5,11.86C3.2,11.86 2.95,11.75 2.77,11.57L0.29,9.09C0.11,8.91 0,8.66 0,8.38C0,8.1 0.11,7.85 0.29,7.67C3.34,4.78 7.46,3 12,3C16.53,3 20.65,4.78 23.7,7.67M11,10V15H10V10H11M12,10H15V13H13V15H12V10M14,12V11H13V12H14Z" /></g><g id="pi"><path d="M4,5V7H6V19H8V7H14V16A3,3 0 0,0 17,19A3,3 0 0,0 20,16H18A1,1 0 0,1 17,17A1,1 0 0,1 16,16V7H18V5" /></g><g id="pi-box"><path d="M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M6,7H17V9H15V14A1,1 0 0,0 16,15A1,1 0 0,0 17,14H19A3,3 0 0,1 16,17A3,3 0 0,1 13,14V9H10V17H8V9H6" /></g><g id="piano"><path d="M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V19H8V13H6.75V5H4M9,19H15V13H13.75V5H10.25V13H9V19M16,19H20V5H17.25V13H16V19Z" /></g><g id="pig"><path d="M9.5,9A1.5,1.5 0 0,0 8,10.5A1.5,1.5 0 0,0 9.5,12A1.5,1.5 0 0,0 11,10.5A1.5,1.5 0 0,0 9.5,9M14.5,9A1.5,1.5 0 0,0 13,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,10.5A1.5,1.5 0 0,0 14.5,9M12,4L12.68,4.03C13.62,3.24 14.82,2.59 15.72,2.35C17.59,1.85 20.88,2.23 21.31,3.83C21.62,5 20.6,6.45 19.03,7.38C20.26,8.92 21,10.87 21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13C3,10.87 3.74,8.92 4.97,7.38C3.4,6.45 2.38,5 2.69,3.83C3.12,2.23 6.41,1.85 8.28,2.35C9.18,2.59 10.38,3.24 11.32,4.03L12,4M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16M14,16A1,1 0 0,1 15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17A1,1 0 0,1 14,16M12,13C9.24,13 7,15.34 7,17C7,18.66 9.24,20 12,20C14.76,20 17,18.66 17,17C17,15.34 14.76,13 12,13M7.76,4.28C7.31,4.16 4.59,4.35 4.59,4.35C4.59,4.35 6.8,6.1 7.24,6.22C7.69,6.34 9.77,6.43 9.91,5.9C10.06,5.36 8.2,4.4 7.76,4.28M16.24,4.28C15.8,4.4 13.94,5.36 14.09,5.9C14.23,6.43 16.31,6.34 16.76,6.22C17.2,6.1 19.41,4.35 19.41,4.35C19.41,4.35 16.69,4.16 16.24,4.28Z" /></g><g id="pill"><path d="M4.22,11.29L11.29,4.22C13.64,1.88 17.43,1.88 19.78,4.22C22.12,6.56 22.12,10.36 19.78,12.71L12.71,19.78C10.36,22.12 6.56,22.12 4.22,19.78C1.88,17.43 1.88,13.64 4.22,11.29M5.64,12.71C4.59,13.75 4.24,15.24 4.6,16.57L10.59,10.59L14.83,14.83L18.36,11.29C19.93,9.73 19.93,7.2 18.36,5.64C16.8,4.07 14.27,4.07 12.71,5.64L5.64,12.71Z" /></g><g id="pillar"><path d="M6,5H18A1,1 0 0,1 19,6A1,1 0 0,1 18,7H6A1,1 0 0,1 5,6A1,1 0 0,1 6,5M21,2V4H3V2H21M15,8H17V22H15V8M7,8H9V22H7V8M11,8H13V22H11V8Z" /></g><g id="pin"><path d="M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z" /></g><g id="pin-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z" /></g><g id="pine-tree"><path d="M10,21V18H3L8,13H5L10,8H7L12,3L17,8H14L19,13H16L21,18H14V21H10Z" /></g><g id="pine-tree-box"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M11,19H13V17H18L14,13H17L13,9H16L12,5L8,9H11L7,13H10L6,17H11V19Z" /></g><g id="pinterest"><path d="M13.25,17.25C12.25,17.25 11.29,16.82 10.6,16.1L9.41,20.1L9.33,20.36L9.29,20.34C9.04,20.75 8.61,21 8.12,21C7.37,21 6.75,20.38 6.75,19.62C6.75,19.56 6.76,19.5 6.77,19.44L6.75,19.43L6.81,19.21L9.12,12.26C9.12,12.26 8.87,11.5 8.87,10.42C8.87,8.27 10.03,7.62 10.95,7.62C11.88,7.62 12.73,7.95 12.73,9.26C12.73,10.94 11.61,11.8 11.61,13C11.61,13.94 12.37,14.69 13.29,14.69C16.21,14.69 17.25,12.5 17.25,10.44C17.25,7.71 14.89,5.5 12,5.5C9.1,5.5 6.75,7.71 6.75,10.44C6.75,11.28 7,12.12 7.43,12.85C7.54,13.05 7.6,13.27 7.6,13.5A1.25,1.25 0 0,1 6.35,14.75C5.91,14.75 5.5,14.5 5.27,14.13C4.6,13 4.25,11.73 4.25,10.44C4.25,6.33 7.73,3 12,3C16.27,3 19.75,6.33 19.75,10.44C19.75,13.72 17.71,17.25 13.25,17.25Z" /></g><g id="pinterest-box"><path d="M13,16.2C12.2,16.2 11.43,15.86 10.88,15.28L9.93,18.5L9.86,18.69L9.83,18.67C9.64,19 9.29,19.2 8.9,19.2C8.29,19.2 7.8,18.71 7.8,18.1C7.8,18.05 7.81,18 7.81,17.95H7.8L7.85,17.77L9.7,12.21C9.7,12.21 9.5,11.59 9.5,10.73C9.5,9 10.42,8.5 11.16,8.5C11.91,8.5 12.58,8.76 12.58,9.81C12.58,11.15 11.69,11.84 11.69,12.81C11.69,13.55 12.29,14.16 13.03,14.16C15.37,14.16 16.2,12.4 16.2,10.75C16.2,8.57 14.32,6.8 12,6.8C9.68,6.8 7.8,8.57 7.8,10.75C7.8,11.42 8,12.09 8.34,12.68C8.43,12.84 8.5,13 8.5,13.2A1,1 0 0,1 7.5,14.2C7.13,14.2 6.79,14 6.62,13.7C6.08,12.81 5.8,11.79 5.8,10.75C5.8,7.47 8.58,4.8 12,4.8C15.42,4.8 18.2,7.47 18.2,10.75C18.2,13.37 16.57,16.2 13,16.2M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="pistol"><path d="M7,5H23V9H22V10H16A1,1 0 0,0 15,11V12A2,2 0 0,1 13,14H9.62C9.24,14 8.89,14.22 8.72,14.56L6.27,19.45C6.1,19.79 5.76,20 5.38,20H2C2,20 -1,20 3,14C3,14 6,10 2,10V5H3L3.5,4H6.5L7,5M14,12V11A1,1 0 0,0 13,10H12C12,10 11,11 12,12A2,2 0 0,1 10,10A1,1 0 0,0 9,11V12A1,1 0 0,0 10,13H13A1,1 0 0,0 14,12Z" /></g><g id="pizza"><path d="M12,15A2,2 0 0,1 10,13C10,11.89 10.9,11 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M7,7C7,5.89 7.89,5 9,5A2,2 0 0,1 11,7A2,2 0 0,1 9,9C7.89,9 7,8.1 7,7M12,2C8.43,2 5.23,3.54 3,6L12,22L21,6C18.78,3.54 15.57,2 12,2Z" /></g><g id="plane-shield"><path d="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z" /></g><g id="play"><path d="M8,5.14V19.14L19,12.14L8,5.14Z" /></g><g id="play-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,8V16L15,12L10,8Z" /></g><g id="play-circle"><path d="M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="play-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z" /></g><g id="play-pause"><path d="M3,5V19L11,12M13,19H16V5H13M18,5V19H21V5" /></g><g id="play-protected-content"><path d="M2,5V18H11V16H4V7H17V11H19V5H2M9,9V14L12.5,11.5L9,9M21.04,11.67L16.09,16.62L13.96,14.5L12.55,15.91L16.09,19.45L22.45,13.09L21.04,11.67Z" /></g><g id="playlist-check"><path d="M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z" /></g><g id="playlist-minus"><path d="M2,16H10V14H2M12,14V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z" /></g><g id="playlist-play"><path d="M19,9H2V11H19V9M19,5H2V7H19V5M2,15H15V13H2V15M17,13V19L22,16L17,13Z" /></g><g id="playlist-plus"><path d="M2,16H10V14H2M18,14V10H16V14H12V16H16V20H18V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z" /></g><g id="playlist-remove"><path d="M2,6V8H14V6H2M2,10V12H10V10H2M14.17,10.76L12.76,12.17L15.59,15L12.76,17.83L14.17,19.24L17,16.41L19.83,19.24L21.24,17.83L18.41,15L21.24,12.17L19.83,10.76L17,13.59L14.17,10.76M2,14V16H10V14H2Z" /></g><g id="playstation"><path d="M9.5,4.27C10.88,4.53 12.9,5.14 14,5.5C16.75,6.45 17.69,7.63 17.69,10.29C17.69,12.89 16.09,13.87 14.05,12.89V8.05C14.05,7.5 13.95,6.97 13.41,6.82C13,6.69 12.76,7.07 12.76,7.63V19.73L9.5,18.69V4.27M13.37,17.62L18.62,15.75C19.22,15.54 19.31,15.24 18.83,15.08C18.34,14.92 17.47,14.97 16.87,15.18L13.37,16.41V14.45L13.58,14.38C13.58,14.38 14.59,14 16,13.87C17.43,13.71 19.17,13.89 20.53,14.4C22.07,14.89 22.25,15.61 21.86,16.1C21.46,16.6 20.5,16.95 20.5,16.95L13.37,19.5V17.62M3.5,17.42C1.93,17 1.66,16.05 2.38,15.5C3.05,15 4.18,14.65 4.18,14.65L8.86,13V14.88L5.5,16.09C4.9,16.3 4.81,16.6 5.29,16.76C5.77,16.92 6.65,16.88 7.24,16.66L8.86,16.08V17.77L8.54,17.83C6.92,18.09 5.2,18 3.5,17.42Z" /></g><g id="plex"><path d="M4,2C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2H4M8.56,6H12.06L15.5,12L12.06,18H8.56L12,12L8.56,6Z" /></g><g id="plus"><path d="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" /></g><g id="plus-box"><path d="M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="plus-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z" /></g><g id="plus-circle"><path d="M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="plus-circle-multiple-outline"><path d="M16,8H14V11H11V13H14V16H16V13H19V11H16M2,12C2,9.21 3.64,6.8 6,5.68V3.5C2.5,4.76 0,8.09 0,12C0,15.91 2.5,19.24 6,20.5V18.32C3.64,17.2 2,14.79 2,12M15,3C10.04,3 6,7.04 6,12C6,16.96 10.04,21 15,21C19.96,21 24,16.96 24,12C24,7.04 19.96,3 15,3M15,19C11.14,19 8,15.86 8,12C8,8.14 11.14,5 15,5C18.86,5 22,8.14 22,12C22,15.86 18.86,19 15,19Z" /></g><g id="plus-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z" /></g><g id="plus-network"><path d="M16,11V9H13V6H11V9H8V11H11V14H13V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="plus-one"><path d="M10,8V12H14V14H10V18H8V14H4V12H8V8H10M14.5,6.08L19,5V18H17V7.4L14.5,7.9V6.08Z" /></g><g id="plus-outline"><path d="M4,9H9V4H15V9H20V15H15V20H9V15H4V9M11,13V18H13V13H18V11H13V6H11V11H6V13H11Z" /></g><g id="pocket"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12V4.5A2.5,2.5 0 0,1 4.5,2H19.5A2.5,2.5 0 0,1 22,4.5V12M15.88,8.25L12,12.13L8.12,8.24C7.53,7.65 6.58,7.65 6,8.24C5.41,8.82 5.41,9.77 6,10.36L10.93,15.32C11.5,15.9 12.47,15.9 13.06,15.32L18,10.37C18.59,9.78 18.59,8.83 18,8.25C17.42,7.66 16.47,7.66 15.88,8.25Z" /></g><g id="pokeball"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.92,4 4.55,7.05 4.06,11H8.13C8.57,9.27 10.14,8 12,8C13.86,8 15.43,9.27 15.87,11H19.94C19.45,7.05 16.08,4 12,4M12,20C16.08,20 19.45,16.95 19.94,13H15.87C15.43,14.73 13.86,16 12,16C10.14,16 8.57,14.73 8.13,13H4.06C4.55,16.95 7.92,20 12,20M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="polaroid"><path d="M6,3H18A2,2 0 0,1 20,5V19A2,2 0 0,1 18,21H6A2,2 0 0,1 4,19V5A2,2 0 0,1 6,3M6,5V17H18V5H6Z" /></g><g id="poll"><path d="M3,22V8H7V22H3M10,22V2H14V22H10M17,22V14H21V22H17Z" /></g><g id="poll-box"><path d="M17,17H15V13H17M13,17H11V7H13M9,17H7V10H9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="polymer"><path d="M19,4H15L7.1,16.63L4.5,12L9,4H5L0.5,12L5,20H9L16.89,7.37L19.5,12L15,20H19L23.5,12L19,4Z" /></g><g id="pool"><path d="M2,15C3.67,14.25 5.33,13.5 7,13.17V5A3,3 0 0,1 10,2C11.31,2 12.42,2.83 12.83,4H10A1,1 0 0,0 9,5V6H14V5A3,3 0 0,1 17,2C18.31,2 19.42,2.83 19.83,4H17A1,1 0 0,0 16,5V14.94C18,14.62 20,13 22,13V15C19.78,15 17.56,17 15.33,17C13.11,17 10.89,15 8.67,15C6.44,15 4.22,16 2,17V15M14,8H9V10H14V8M14,12H9V13C10.67,13.16 12.33,14.31 14,14.79V12M2,19C4.22,18 6.44,17 8.67,17C10.89,17 13.11,19 15.33,19C17.56,19 19.78,17 22,17V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V19Z" /></g><g id="popcorn"><path d="M7,22H4.75C4.75,22 4,22 3.81,20.65L2.04,3.81L2,3.5C2,2.67 2.9,2 4,2C5.1,2 6,2.67 6,3.5C6,2.67 6.9,2 8,2C9.1,2 10,2.67 10,3.5C10,2.67 10.9,2 12,2C13.09,2 14,2.66 14,3.5V3.5C14,2.67 14.9,2 16,2C17.1,2 18,2.67 18,3.5C18,2.67 18.9,2 20,2C21.1,2 22,2.67 22,3.5L21.96,3.81L20.19,20.65C20,22 19.25,22 19.25,22H17L16.5,22H13.75L10.25,22H7.5L7,22M17.85,4.93C17.55,4.39 16.84,4 16,4C15.19,4 14.36,4.36 14,4.87L13.78,20H16.66L17.85,4.93M10,4.87C9.64,4.36 8.81,4 8,4C7.16,4 6.45,4.39 6.15,4.93L7.34,20H10.22L10,4.87Z" /></g><g id="pot"><path d="M19,19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V13H3V10H21V13H19V19M6,6H8V8H6V6M11,6H13V8H11V6M16,6H18V8H16V6M18,3H20V5H18V3M13,3H15V5H13V3M8,3H10V5H8V3Z" /></g><g id="pot-mix"><path d="M19,19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V13H3V10H14L18,3.07L19.73,4.07L16.31,10H21V13H19V19Z" /></g><g id="pound"><path d="M5.41,21L6.12,17H2.12L2.47,15H6.47L7.53,9H3.53L3.88,7H7.88L8.59,3H10.59L9.88,7H15.88L16.59,3H18.59L17.88,7H21.88L21.53,9H17.53L16.47,15H20.47L20.12,17H16.12L15.41,21H13.41L14.12,17H8.12L7.41,21H5.41M9.53,9L8.47,15H14.47L15.53,9H9.53Z" /></g><g id="pound-box"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z" /></g><g id="power"><path d="M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13" /></g><g id="power-plug"><path d="M16,7V3H14V7H10V3H8V7H8C7,7 6,8 6,9V14.5L9.5,18V21H14.5V18L18,14.5V9C18,8 17,7 16,7Z" /></g><g id="power-plug-off"><path d="M8,3V6.18C11.1,9.23 14.1,12.3 17.2,15.3C17.4,15 17.8,14.8 18,14.4V8.8C18,7.68 16.7,7.16 16,6.84V3H14V7H10V3H8M3.28,4C2.85,4.42 2.43,4.85 2,5.27L6,9.27V14.5C7.17,15.65 8.33,16.83 9.5,18V21H14.5V18C14.72,17.73 14.95,18.33 15.17,18.44C16.37,19.64 17.47,20.84 18.67,22.04C19.17,21.64 19.57,21.14 19.97,20.74C14.37,15.14 8.77,9.64 3.27,4.04L3.28,4Z" /></g><g id="power-settings"><path d="M15,24H17V22H15M16.56,4.44L15.11,5.89C16.84,6.94 18,8.83 18,11A6,6 0 0,1 12,17A6,6 0 0,1 6,11C6,8.83 7.16,6.94 8.88,5.88L7.44,4.44C5.36,5.88 4,8.28 4,11A8,8 0 0,0 12,19A8,8 0 0,0 20,11C20,8.28 18.64,5.88 16.56,4.44M13,2H11V12H13M11,24H13V22H11M7,24H9V22H7V24Z" /></g><g id="power-socket"><path d="M15,15H17V11H15M7,15H9V11H7M11,13H13V9H11M8.83,7H15.2L19,10.8V17H5V10.8M8,5L3,10V19H21V10L16,5H8Z" /></g><g id="prescription"><path d="M4,4V10L4,14H6V10H8L13.41,15.41L9.83,19L11.24,20.41L14.83,16.83L18.41,20.41L19.82,19L16.24,15.41L19.82,11.83L18.41,10.41L14.83,14L10.83,10H11A3,3 0 0,0 14,7A3,3 0 0,0 11,4H4M6,6H11A1,1 0 0,1 12,7A1,1 0 0,1 11,8H6V6Z" /></g><g id="presentation"><path d="M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5Z" /></g><g id="presentation-play"><path d="M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z" /></g><g id="printer"><path d="M18,3H6V7H18M19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12M16,19H8V14H16M19,8H5A3,3 0 0,0 2,11V17H6V21H18V17H22V11A3,3 0 0,0 19,8Z" /></g><g id="printer-3d"><path d="M19,6A1,1 0 0,0 20,5A1,1 0 0,0 19,4A1,1 0 0,0 18,5A1,1 0 0,0 19,6M19,2A3,3 0 0,1 22,5V11H18V7H6V11H2V5A3,3 0 0,1 5,2H19M18,18.25C18,18.63 17.79,18.96 17.47,19.13L12.57,21.82C12.4,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L6.53,19.13C6.21,18.96 6,18.63 6,18.25V13C6,12.62 6.21,12.29 6.53,12.12L11.43,9.68C11.59,9.56 11.79,9.5 12,9.5C12.21,9.5 12.4,9.56 12.57,9.68L17.47,12.12C17.79,12.29 18,12.62 18,13V18.25M12,11.65L9.04,13L12,14.6L14.96,13L12,11.65M8,17.66L11,19.29V16.33L8,14.71V17.66M16,17.66V14.71L13,16.33V19.29L16,17.66Z" /></g><g id="printer-alert"><path d="M14,4V8H6V4H14M15,13A1,1 0 0,0 16,12A1,1 0 0,0 15,11A1,1 0 0,0 14,12A1,1 0 0,0 15,13M13,19V15H7V19H13M15,9A3,3 0 0,1 18,12V17H15V21H5V17H2V12A3,3 0 0,1 5,9H15M22,7V12H20V7H22M22,14V16H20V14H22Z" /></g><g id="printer-settings"><path d="M18,2V6H6V2H18M19,11A1,1 0 0,0 20,10A1,1 0 0,0 19,9A1,1 0 0,0 18,10A1,1 0 0,0 19,11M16,18V13H8V18H16M19,7A3,3 0 0,1 22,10V16H18V20H6V16H2V10A3,3 0 0,1 5,7H19M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z" /></g><g id="priority-high"><path d="M14,19H22V17H14V19M14,13.5H22V11.5H14V13.5M14,8H22V6H14V8M2,12.5C2,8.92 4.92,6 8.5,6H9V4L12,7L9,10V8H8.5C6,8 4,10 4,12.5C4,15 6,17 8.5,17H12V19H8.5C4.92,19 2,16.08 2,12.5Z" /></g><g id="priority-low"><path d="M14,5H22V7H14V5M14,10.5H22V12.5H14V10.5M14,16H22V18H14V16M2,11.5C2,15.08 4.92,18 8.5,18H9V20L12,17L9,14V16H8.5C6,16 4,14 4,11.5C4,9 6,7 8.5,7H12V5H8.5C4.92,5 2,7.92 2,11.5Z" /></g><g id="professional-hexagon"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M5,9V15H6.25V13H7A2,2 0 0,0 9,11A2,2 0 0,0 7,9H5M6.25,12V10H6.75A1,1 0 0,1 7.75,11A1,1 0 0,1 6.75,12H6.25M9.75,9V15H11V13H11.75L12.41,15H13.73L12.94,12.61C13.43,12.25 13.75,11.66 13.75,11A2,2 0 0,0 11.75,9H9.75M11,12V10H11.5A1,1 0 0,1 12.5,11A1,1 0 0,1 11.5,12H11M17,9C15.62,9 14.5,10.34 14.5,12C14.5,13.66 15.62,15 17,15C18.38,15 19.5,13.66 19.5,12C19.5,10.34 18.38,9 17,9M17,10.25C17.76,10.25 18.38,11.03 18.38,12C18.38,12.97 17.76,13.75 17,13.75C16.24,13.75 15.63,12.97 15.63,12C15.63,11.03 16.24,10.25 17,10.25Z" /></g><g id="projector"><path d="M16,6C14.87,6 13.77,6.35 12.84,7H4C2.89,7 2,7.89 2,9V15C2,16.11 2.89,17 4,17H5V18A1,1 0 0,0 6,19H8A1,1 0 0,0 9,18V17H15V18A1,1 0 0,0 16,19H18A1,1 0 0,0 19,18V17H20C21.11,17 22,16.11 22,15V9C22,7.89 21.11,7 20,7H19.15C18.23,6.35 17.13,6 16,6M16,7.5A3.5,3.5 0 0,1 19.5,11A3.5,3.5 0 0,1 16,14.5A3.5,3.5 0 0,1 12.5,11A3.5,3.5 0 0,1 16,7.5M4,9H8V10H4V9M16,9A2,2 0 0,0 14,11A2,2 0 0,0 16,13A2,2 0 0,0 18,11A2,2 0 0,0 16,9M4,11H8V12H4V11M4,13H8V14H4V13Z" /></g><g id="projector-screen"><path d="M4,2A1,1 0 0,0 3,3V4A1,1 0 0,0 4,5H5V14H11V16.59L6.79,20.79L8.21,22.21L11,19.41V22H13V19.41L15.79,22.21L17.21,20.79L13,16.59V14H19V5H20A1,1 0 0,0 21,4V3A1,1 0 0,0 20,2H4Z" /></g><g id="publish"><path d="M5,4V6H19V4H5M5,14H9V20H15V14H19L12,7L5,14Z" /></g><g id="pulse"><path d="M3,13H5.79L10.1,4.79L11.28,13.75L14.5,9.66L17.83,13H21V15H17L14.67,12.67L9.92,18.73L8.94,11.31L7,15H3V13Z" /></g><g id="puzzle"><path d="M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z" /></g><g id="qqchat"><path d="M3.18,13.54C3.76,12.16 4.57,11.14 5.17,10.92C5.16,10.12 5.31,9.62 5.56,9.22C5.56,9.19 5.5,8.86 5.72,8.45C5.87,4.85 8.21,2 12,2C15.79,2 18.13,4.85 18.28,8.45C18.5,8.86 18.44,9.19 18.44,9.22C18.69,9.62 18.84,10.12 18.83,10.92C19.43,11.14 20.24,12.16 20.82,13.55C21.57,15.31 21.69,17 21.09,17.3C20.68,17.5 20.03,17 19.42,16.12C19.18,17.1 18.58,18 17.73,18.71C18.63,19.04 19.21,19.58 19.21,20.19C19.21,21.19 17.63,22 15.69,22C13.93,22 12.5,21.34 12.21,20.5H11.79C11.5,21.34 10.07,22 8.31,22C6.37,22 4.79,21.19 4.79,20.19C4.79,19.58 5.37,19.04 6.27,18.71C5.42,18 4.82,17.1 4.58,16.12C3.97,17 3.32,17.5 2.91,17.3C2.31,17 2.43,15.31 3.18,13.54Z" /></g><g id="qrcode"><path d="M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z" /></g><g id="qrcode-scan"><path d="M4,4H10V10H4V4M20,4V10H14V4H20M14,15H16V13H14V11H16V13H18V11H20V13H18V15H20V18H18V20H16V18H13V20H11V16H14V15M16,15V18H18V15H16M4,20V14H10V20H4M6,6V8H8V6H6M16,6V8H18V6H16M6,16V18H8V16H6M4,11H6V13H4V11M9,11H13V15H11V13H9V11M11,6H13V10H11V6M2,2V6H0V2A2,2 0 0,1 2,0H6V2H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22M2,18V22H6V24H2A2,2 0 0,1 0,22V18H2M22,22V18H24V22A2,2 0 0,1 22,24H18V22H22Z" /></g><g id="quadcopter"><path d="M5.5,1C8,1 10,3 10,5.5C10,6.38 9.75,7.2 9.31,7.9L9.41,8H14.59L14.69,7.9C14.25,7.2 14,6.38 14,5.5C14,3 16,1 18.5,1C21,1 23,3 23,5.5C23,8 21,10 18.5,10C17.62,10 16.8,9.75 16.1,9.31L15,10.41V13.59L16.1,14.69C16.8,14.25 17.62,14 18.5,14C21,14 23,16 23,18.5C23,21 21,23 18.5,23C16,23 14,21 14,18.5C14,17.62 14.25,16.8 14.69,16.1L14.59,16H9.41L9.31,16.1C9.75,16.8 10,17.62 10,18.5C10,21 8,23 5.5,23C3,23 1,21 1,18.5C1,16 3,14 5.5,14C6.38,14 7.2,14.25 7.9,14.69L9,13.59V10.41L7.9,9.31C7.2,9.75 6.38,10 5.5,10C3,10 1,8 1,5.5C1,3 3,1 5.5,1M5.5,3A2.5,2.5 0 0,0 3,5.5A2.5,2.5 0 0,0 5.5,8A2.5,2.5 0 0,0 8,5.5A2.5,2.5 0 0,0 5.5,3M5.5,16A2.5,2.5 0 0,0 3,18.5A2.5,2.5 0 0,0 5.5,21A2.5,2.5 0 0,0 8,18.5A2.5,2.5 0 0,0 5.5,16M18.5,3A2.5,2.5 0 0,0 16,5.5A2.5,2.5 0 0,0 18.5,8A2.5,2.5 0 0,0 21,5.5A2.5,2.5 0 0,0 18.5,3M18.5,16A2.5,2.5 0 0,0 16,18.5A2.5,2.5 0 0,0 18.5,21A2.5,2.5 0 0,0 21,18.5A2.5,2.5 0 0,0 18.5,16M3.91,17.25L5.04,17.91C5.17,17.81 5.33,17.75 5.5,17.75A0.75,0.75 0 0,1 6.25,18.5L6.24,18.6L7.37,19.25L7.09,19.75L5.96,19.09C5.83,19.19 5.67,19.25 5.5,19.25A0.75,0.75 0 0,1 4.75,18.5L4.76,18.4L3.63,17.75L3.91,17.25M3.63,6.25L4.76,5.6L4.75,5.5A0.75,0.75 0 0,1 5.5,4.75C5.67,4.75 5.83,4.81 5.96,4.91L7.09,4.25L7.37,4.75L6.24,5.4L6.25,5.5A0.75,0.75 0 0,1 5.5,6.25C5.33,6.25 5.17,6.19 5.04,6.09L3.91,6.75L3.63,6.25M16.91,4.25L18.04,4.91C18.17,4.81 18.33,4.75 18.5,4.75A0.75,0.75 0 0,1 19.25,5.5L19.24,5.6L20.37,6.25L20.09,6.75L18.96,6.09C18.83,6.19 18.67,6.25 18.5,6.25A0.75,0.75 0 0,1 17.75,5.5L17.76,5.4L16.63,4.75L16.91,4.25M16.63,19.25L17.75,18.5A0.75,0.75 0 0,1 18.5,17.75C18.67,17.75 18.83,17.81 18.96,17.91L20.09,17.25L20.37,17.75L19.25,18.5A0.75,0.75 0 0,1 18.5,19.25C18.33,19.25 18.17,19.19 18.04,19.09L16.91,19.75L16.63,19.25Z" /></g><g id="quality-high"><path d="M14.5,13.5H16.5V10.5H14.5M18,14A1,1 0 0,1 17,15H16.25V16.5H14.75V15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z" /></g><g id="quicktime"><path d="M12,3A9,9 0 0,1 21,12C21,13.76 20.5,15.4 19.62,16.79L21,18.17V20A1,1 0 0,1 20,21H18.18L16.79,19.62C15.41,20.5 13.76,21 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C12.65,17 13.26,16.88 13.83,16.65L10.95,13.77C10.17,13 10.17,11.72 10.95,10.94C11.73,10.16 13,10.16 13.78,10.94L16.66,13.82C16.88,13.26 17,12.64 17,12A5,5 0 0,0 12,7Z" /></g><g id="radar"><path d="M19.07,4.93L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12C4,7.92 7.05,4.56 11,4.07V6.09C8.16,6.57 6,9.03 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12C18,10.34 17.33,8.84 16.24,7.76L14.83,9.17C15.55,9.9 16,10.9 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12C8,10.14 9.28,8.59 11,8.14V10.28C10.4,10.63 10,11.26 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.26 13.6,10.62 13,10.28V2H12A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.24 20.88,6.74 19.07,4.93Z" /></g><g id="radiator"><path d="M7.95,3L6.53,5.19L7.95,7.4H7.94L5.95,10.5L4.22,9.6L5.64,7.39L4.22,5.19L6.22,2.09L7.95,3M13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L11.95,10.4L10.22,9.5L11.64,7.3L10.22,5.1L12.22,2L13.95,2.89M20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89M2,22V14A2,2 0 0,1 4,12H20A2,2 0 0,1 22,14V22H20V20H4V22H2M6,14A1,1 0 0,0 5,15V17A1,1 0 0,0 6,18A1,1 0 0,0 7,17V15A1,1 0 0,0 6,14M10,14A1,1 0 0,0 9,15V17A1,1 0 0,0 10,18A1,1 0 0,0 11,17V15A1,1 0 0,0 10,14M14,14A1,1 0 0,0 13,15V17A1,1 0 0,0 14,18A1,1 0 0,0 15,17V15A1,1 0 0,0 14,14M18,14A1,1 0 0,0 17,15V17A1,1 0 0,0 18,18A1,1 0 0,0 19,17V15A1,1 0 0,0 18,14Z" /></g><g id="radio"><path d="M20,6A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8C2,7.15 2.53,6.42 3.28,6.13L15.71,1L16.47,2.83L8.83,6H20M20,8H4V12H16V10H18V12H20V8M7,14A3,3 0 0,0 4,17A3,3 0 0,0 7,20A3,3 0 0,0 10,17A3,3 0 0,0 7,14Z" /></g><g id="radio-handheld"><path d="M9,2A1,1 0 0,0 8,3C8,8.67 8,14.33 8,20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V9C17,7.89 16.11,7 15,7H10V3A1,1 0 0,0 9,2M10,9H15V13H10V9Z" /></g><g id="radio-tower"><path d="M12,10A2,2 0 0,1 14,12C14,12.5 13.82,12.94 13.53,13.29L16.7,22H14.57L12,14.93L9.43,22H7.3L10.47,13.29C10.18,12.94 10,12.5 10,12A2,2 0 0,1 12,10M12,8A4,4 0 0,0 8,12C8,12.5 8.1,13 8.28,13.46L7.4,15.86C6.53,14.81 6,13.47 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12C18,13.47 17.47,14.81 16.6,15.86L15.72,13.46C15.9,13 16,12.5 16,12A4,4 0 0,0 12,8M12,4A8,8 0 0,0 4,12C4,14.36 5,16.5 6.64,17.94L5.92,19.94C3.54,18.11 2,15.23 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12C22,15.23 20.46,18.11 18.08,19.94L17.36,17.94C19,16.5 20,14.36 20,12A8,8 0 0,0 12,4Z" /></g><g id="radioactive"><path d="M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.72,16 13.4,15.81 14,15.47L17.31,20.47C15.78,21.44 13.95,22 12,22M2,12C2,7.86 4.5,4.3 8.11,2.78L10.34,8.36C8.96,9 8,10.38 8,12H2M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z" /></g><g id="radiobox-blank"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="radiobox-marked"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z" /></g><g id="raspberrypi"><path d="M20,8H22V10H20V8M4,5H20A2,2 0 0,1 22,7H19V9H5V13H8V16H19V17H22A2,2 0 0,1 20,19H16V20H14V19H11V20H7V19H4A2,2 0 0,1 2,17V7A2,2 0 0,1 4,5M19,15H9V10H19V11H22V13H19V15M13,12V14H15V12H13M5,6V8H6V6H5M7,6V8H8V6H7M9,6V8H10V6H9M11,6V8H12V6H11M13,6V8H14V6H13M15,6V8H16V6H15M20,14H22V16H20V14Z" /></g><g id="ray-end"><path d="M20,9C18.69,9 17.58,9.83 17.17,11H2V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9Z" /></g><g id="ray-end-arrow"><path d="M1,12L5,16V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9C18.69,9 17.58,9.83 17.17,11H5V8L1,12Z" /></g><g id="ray-start"><path d="M4,9C5.31,9 6.42,9.83 6.83,11H22V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z" /></g><g id="ray-start-arrow"><path d="M23,12L19,16V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9C5.31,9 6.42,9.83 6.83,11H19V8L23,12Z" /></g><g id="ray-start-end"><path d="M4,9C5.31,9 6.42,9.83 6.83,11H17.17C17.58,9.83 18.69,9 20,9A3,3 0 0,1 23,12A3,3 0 0,1 20,15C18.69,15 17.58,14.17 17.17,13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z" /></g><g id="ray-vertex"><path d="M2,11H9.17C9.58,9.83 10.69,9 12,9C13.31,9 14.42,9.83 14.83,11H22V13H14.83C14.42,14.17 13.31,15 12,15C10.69,15 9.58,14.17 9.17,13H2V11Z" /></g><g id="rdio"><path d="M19.29,10.84C19.35,11.22 19.38,11.61 19.38,12C19.38,16.61 15.5,20.35 10.68,20.35C5.87,20.35 2,16.61 2,12C2,7.39 5.87,3.65 10.68,3.65C11.62,3.65 12.53,3.79 13.38,4.06V9.11C13.38,9.11 10.79,7.69 8.47,9.35C6.15,11 6.59,12.76 6.59,12.76C6.59,12.76 6.7,15.5 9.97,15.5C13.62,15.5 14.66,12.19 14.66,12.19V4.58C15.36,4.93 16,5.36 16.65,5.85C18.2,6.82 19.82,7.44 21.67,7.39C21.67,7.39 22,7.31 22,8C22,8.4 21.88,8.83 21.5,9.25C21.5,9.25 20.78,10.33 19.29,10.84Z" /></g><g id="read"><path d="M21.59,11.59L23,13L13.5,22.5L8.42,17.41L9.83,16L13.5,19.68L21.59,11.59M4,16V3H6L9,3A4,4 0 0,1 13,7C13,8.54 12.13,9.88 10.85,10.55L14,16H12L9.11,11H6V16H4M6,9H9A2,2 0 0,0 11,7A2,2 0 0,0 9,5H6V9Z" /></g><g id="readability"><path d="M12,4C15.15,4 17.81,6.38 18.69,9.65C18,10.15 17.58,10.93 17.5,11.81L17.32,13.91C15.55,13 13.78,12.17 12,12.17C10.23,12.17 8.45,13 6.68,13.91L6.5,11.77C6.42,10.89 6,10.12 5.32,9.61C6.21,6.36 8.86,4 12,4M17.05,17H6.95L6.73,14.47C8.5,13.59 10.24,12.75 12,12.75C13.76,12.75 15.5,13.59 17.28,14.47L17.05,17M5,19V18L3.72,14.5H3.5A2.5,2.5 0 0,1 1,12A2.5,2.5 0 0,1 3.5,9.5C4.82,9.5 5.89,10.5 6,11.81L6.5,18V19H5M19,19H17.5V18L18,11.81C18.11,10.5 19.18,9.5 20.5,9.5A2.5,2.5 0 0,1 23,12A2.5,2.5 0 0,1 20.5,14.5H20.28L19,18V19Z" /></g><g id="receipt"><path d="M3,22L4.5,20.5L6,22L7.5,20.5L9,22L10.5,20.5L12,22L13.5,20.5L15,22L16.5,20.5L18,22L19.5,20.5L21,22V2L19.5,3.5L18,2L16.5,3.5L15,2L13.5,3.5L12,2L10.5,3.5L9,2L7.5,3.5L6,2L4.5,3.5L3,2M18,9H6V7H18M18,13H6V11H18M18,17H6V15H18V17Z" /></g><g id="record"><path d="M19,12C19,15.86 15.86,19 12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12Z" /></g><g id="record-rec"><path d="M12.5,5A7.5,7.5 0 0,0 5,12.5A7.5,7.5 0 0,0 12.5,20A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5M7,10H9A1,1 0 0,1 10,11V12C10,12.5 9.62,12.9 9.14,12.97L10.31,15H9.15L8,13V15H7M12,10H14V11H12V12H14V13H12V14H14V15H12A1,1 0 0,1 11,14V11A1,1 0 0,1 12,10M16,10H18V11H16V14H18V15H16A1,1 0 0,1 15,14V11A1,1 0 0,1 16,10M8,11V12H9V11" /></g><g id="recycle"><path d="M21.82,15.42L19.32,19.75C18.83,20.61 17.92,21.06 17,21H15V23L12.5,18.5L15,14V16H17.82L15.6,12.15L19.93,9.65L21.73,12.77C22.25,13.54 22.32,14.57 21.82,15.42M9.21,3.06H14.21C15.19,3.06 16.04,3.63 16.45,4.45L17.45,6.19L19.18,5.19L16.54,9.6L11.39,9.69L13.12,8.69L11.71,6.24L9.5,10.09L5.16,7.59L6.96,4.47C7.37,3.64 8.22,3.06 9.21,3.06M5.05,19.76L2.55,15.43C2.06,14.58 2.13,13.56 2.64,12.79L3.64,11.06L1.91,10.06L7.05,10.14L9.7,14.56L7.97,13.56L6.56,16H11V21H7.4C6.47,21.07 5.55,20.61 5.05,19.76Z" /></g><g id="reddit"><path d="M22,11.5C22,10.1 20.9,9 19.5,9C18.9,9 18.3,9.2 17.9,9.6C16.4,8.7 14.6,8.1 12.5,8L13.6,4L17,5A2,2 0 0,0 19,7A2,2 0 0,0 21,5A2,2 0 0,0 19,3C18.3,3 17.6,3.4 17.3,4L13.3,3C13,2.9 12.8,3.1 12.7,3.4L11.5,8C9.5,8.1 7.6,8.7 6.1,9.6C5.7,9.2 5.1,9 4.5,9C3.1,9 2,10.1 2,11.5C2,12.4 2.4,13.1 3.1,13.6L3,14.5C3,18.1 7,21 12,21C17,21 21,18.1 21,14.5L20.9,13.6C21.6,13.1 22,12.4 22,11.5M9,11.8C9.7,11.8 10.2,12.4 10.2,13C10.2,13.6 9.7,14.2 9,14.2C8.3,14.2 7.8,13.7 7.8,13C7.8,12.3 8.3,11.8 9,11.8M15.8,17.2C14,18.3 10,18.3 8.2,17.2C8,17 7.9,16.7 8.1,16.5C8.3,16.3 8.6,16.2 8.8,16.4C10,17.3 14,17.3 15.2,16.4C15.4,16.2 15.7,16.3 15.9,16.5C16.1,16.7 16,17 15.8,17.2M15,14.2C14.3,14.2 13.8,13.6 13.8,13C13.8,12.3 14.4,11.8 15,11.8C15.7,11.8 16.2,12.4 16.2,13C16.2,13.7 15.7,14.2 15,14.2Z" /></g><g id="redo"><path d="M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z" /></g><g id="redo-variant"><path d="M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z" /></g><g id="refresh"><path d="M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z" /></g><g id="regex"><path d="M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76V6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24V15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92H16V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19H5Z" /></g><g id="relative-scale"><path d="M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M12,10H10V12H12M8,10H6V12H8M16,14H14V16H16M16,10H14V12H16V10Z" /></g><g id="reload"><path d="M19,12H22.32L17.37,16.95L12.42,12H16.97C17,10.46 16.42,8.93 15.24,7.75C12.9,5.41 9.1,5.41 6.76,7.75C4.42,10.09 4.42,13.9 6.76,16.24C8.6,18.08 11.36,18.47 13.58,17.41L15.05,18.88C12,20.69 8,20.29 5.34,17.65C2.22,14.53 2.23,9.47 5.35,6.35C8.5,3.22 13.53,3.21 16.66,6.34C18.22,7.9 19,9.95 19,12Z" /></g><g id="remote"><path d="M12,0C8.96,0 6.21,1.23 4.22,3.22L5.63,4.63C7.26,3 9.5,2 12,2C14.5,2 16.74,3 18.36,4.64L19.77,3.23C17.79,1.23 15.04,0 12,0M7.05,6.05L8.46,7.46C9.37,6.56 10.62,6 12,6C13.38,6 14.63,6.56 15.54,7.46L16.95,6.05C15.68,4.78 13.93,4 12,4C10.07,4 8.32,4.78 7.05,6.05M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M15,9H9A1,1 0 0,0 8,10V22A1,1 0 0,0 9,23H15A1,1 0 0,0 16,22V10A1,1 0 0,0 15,9Z" /></g><g id="rename-box"><path d="M18,17H10.5L12.5,15H18M6,17V14.5L13.88,6.65C14.07,6.45 14.39,6.45 14.59,6.65L16.35,8.41C16.55,8.61 16.55,8.92 16.35,9.12L8.47,17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="reorder-horizontal"><path d="M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z" /></g><g id="reorder-vertical"><path d="M9,3V21H11V3H9M5,3V21H7V3H5M13,3V21H15V3H13M19,3H17V21H19V3Z" /></g><g id="repeat"><path d="M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></g><g id="repeat-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15.73,19H7V22L3,18L7,14V17H13.73L7,10.27V11H5V8.27L2,5.27M17,13H19V17.18L17,15.18V13M17,5V2L21,6L17,10V7H8.82L6.82,5H17Z" /></g><g id="repeat-once"><path d="M13,15V9H12L10,10V11H11.5V15M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></g><g id="replay"><path d="M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z" /></g><g id="reply"><path d="M10,9V5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9Z" /></g><g id="reply-all"><path d="M13,9V5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12L7,8Z" /></g><g id="reproduction"><path d="M12.72,13.15L13.62,12.26C13.6,11 14.31,9.44 15.62,8.14C17.57,6.18 20.11,5.55 21.28,6.72C22.45,7.89 21.82,10.43 19.86,12.38C18.56,13.69 17,14.4 15.74,14.38L14.85,15.28C14.5,15.61 14,15.66 13.6,15.41C12.76,15.71 12,16.08 11.56,16.8C11.03,17.68 11.03,19.1 10.47,19.95C9.91,20.81 8.79,21.1 7.61,21.1C6.43,21.1 5,21 3.95,19.5L6.43,19.92C7,20 8.5,19.39 9.05,18.54C9.61,17.68 9.61,16.27 10.14,15.38C10.61,14.6 11.5,14.23 12.43,13.91C12.42,13.64 12.5,13.36 12.72,13.15M7,2A5,5 0 0,1 12,7A5,5 0 0,1 7,12A5,5 0 0,1 2,7A5,5 0 0,1 7,2M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4Z" /></g><g id="resize-bottom-right"><path d="M22,22H20V20H22V22M22,18H20V16H22V18M18,22H16V20H18V22M18,18H16V16H18V18M14,22H12V20H14V22M22,14H20V12H22V14Z" /></g><g id="responsive"><path d="M4,6V16H9V12A2,2 0 0,1 11,10H16A2,2 0 0,1 18,12V16H20V6H4M0,20V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H18V20C18,21.11 17.1,22 16,22H11A2,2 0 0,1 9,20H9L0,20M11.5,20A0.5,0.5 0 0,0 11,20.5A0.5,0.5 0 0,0 11.5,21A0.5,0.5 0 0,0 12,20.5A0.5,0.5 0 0,0 11.5,20M15.5,20A0.5,0.5 0 0,0 15,20.5A0.5,0.5 0 0,0 15.5,21A0.5,0.5 0 0,0 16,20.5A0.5,0.5 0 0,0 15.5,20M13,20V21H14V20H13M11,12V19H16V12H11Z" /></g><g id="restore"><path d="M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3M12,8V13L16.28,15.54L17,14.33L13.5,12.25V8H12Z" /></g><g id="rewind"><path d="M11.5,12L20,18V6M11,18V6L2.5,12L11,18Z" /></g><g id="rewind-outline"><path d="M10,9.9L7,12L10,14.1V9.9M19,9.9L16,12L19,14.1V9.9M12,6V18L3.5,12L12,6M21,6V18L12.5,12L21,6Z" /></g><g id="rhombus"><path d="M21.5,10.8L13.2,2.5C12.5,1.8 11.5,1.8 10.8,2.5L2.5,10.8C1.8,11.5 1.8,12.5 2.5,13.2L10.8,21.5C11.5,22.2 12.5,22.2 13.2,21.5L21.5,13.2C22.1,12.5 22.1,11.5 21.5,10.8Z" /></g><g id="rhombus-outline"><path d="M21.5,10.8L13.2,2.5C12.5,1.8 11.5,1.8 10.8,2.5L2.5,10.8C1.8,11.5 1.8,12.5 2.5,13.2L10.8,21.5C11.5,22.2 12.5,22.2 13.2,21.5L21.5,13.2C22.1,12.5 22.1,11.5 21.5,10.8M20.3,12L12,20.3L3.7,12L12,3.7L20.3,12Z" /></g><g id="ribbon"><path d="M13.41,19.31L16.59,22.5L18,21.07L14.83,17.9M15.54,11.53H15.53L12,15.07L8.47,11.53H8.46V11.53C7.56,10.63 7,9.38 7,8A5,5 0 0,1 12,3A5,5 0 0,1 17,8C17,9.38 16.44,10.63 15.54,11.53M16.9,13C18.2,11.73 19,9.96 19,8A7,7 0 0,0 12,1A7,7 0 0,0 5,8C5,9.96 5.81,11.73 7.1,13V13L10.59,16.5L6,21.07L7.41,22.5L16.9,13Z" /></g><g id="road"><path d="M11,16H13V20H11M11,10H13V14H11M11,4H13V8H11M4,22H20V2H4V22Z" /></g><g id="road-variant"><path d="M18.1,4.8C18,4.3 17.6,4 17.1,4H13L13.2,7H10.8L11,4H6.8C6.3,4 5.9,4.4 5.8,4.8L3.1,18.8C3,19.4 3.5,20 4.1,20H10L10.3,15H13.7L14,20H19.8C20.4,20 20.9,19.4 20.8,18.8L18.1,4.8M10.4,13L10.6,9H13.2L13.4,13H10.4Z" /></g><g id="robot"><path d="M12,2A2,2 0 0,1 14,4C14,4.74 13.6,5.39 13,5.73V7H14A7,7 0 0,1 21,14H22A1,1 0 0,1 23,15V18A1,1 0 0,1 22,19H21V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V19H2A1,1 0 0,1 1,18V15A1,1 0 0,1 2,14H3A7,7 0 0,1 10,7H11V5.73C10.4,5.39 10,4.74 10,4A2,2 0 0,1 12,2M7.5,13A2.5,2.5 0 0,0 5,15.5A2.5,2.5 0 0,0 7.5,18A2.5,2.5 0 0,0 10,15.5A2.5,2.5 0 0,0 7.5,13M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z" /></g><g id="rocket"><path d="M2.81,14.12L5.64,11.29L8.17,10.79C11.39,6.41 17.55,4.22 19.78,4.22C19.78,6.45 17.59,12.61 13.21,15.83L12.71,18.36L9.88,21.19L9.17,17.66C7.76,17.66 7.76,17.66 7.05,16.95C6.34,16.24 6.34,16.24 6.34,14.83L2.81,14.12M5.64,16.95L7.05,18.36L4.39,21.03H2.97V19.61L5.64,16.95M4.22,15.54L5.46,15.71L3,18.16V16.74L4.22,15.54M8.29,18.54L8.46,19.78L7.26,21H5.84L8.29,18.54M13,9.5A1.5,1.5 0 0,0 11.5,11A1.5,1.5 0 0,0 13,12.5A1.5,1.5 0 0,0 14.5,11A1.5,1.5 0 0,0 13,9.5Z" /></g><g id="roomba"><path d="M12,2C14.65,2 17.19,3.06 19.07,4.93L17.65,6.35C16.15,4.85 14.12,4 12,4C9.88,4 7.84,4.84 6.35,6.35L4.93,4.93C6.81,3.06 9.35,2 12,2M3.66,6.5L5.11,7.94C4.39,9.17 4,10.57 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,10.57 19.61,9.17 18.88,7.94L20.34,6.5C21.42,8.12 22,10.04 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.04 2.58,8.12 3.66,6.5M12,6A6,6 0 0,1 18,12C18,13.59 17.37,15.12 16.24,16.24L14.83,14.83C14.08,15.58 13.06,16 12,16C10.94,16 9.92,15.58 9.17,14.83L7.76,16.24C6.63,15.12 6,13.59 6,12A6,6 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z" /></g><g id="rotate-3d"><path d="M12,5C16.97,5 21,7.69 21,11C21,12.68 19.96,14.2 18.29,15.29C19.36,14.42 20,13.32 20,12.13C20,9.29 16.42,7 12,7V10L8,6L12,2V5M12,19C7.03,19 3,16.31 3,13C3,11.32 4.04,9.8 5.71,8.71C4.64,9.58 4,10.68 4,11.88C4,14.71 7.58,17 12,17V14L16,18L12,22V19Z" /></g><g id="rotate-90"><path d="M7.34,6.41L0.86,12.9L7.35,19.38L13.84,12.9L7.34,6.41M3.69,12.9L7.35,9.24L11,12.9L7.34,16.56L3.69,12.9M19.36,6.64C17.61,4.88 15.3,4 13,4V0.76L8.76,5L13,9.24V6C14.79,6 16.58,6.68 17.95,8.05C20.68,10.78 20.68,15.22 17.95,17.95C16.58,19.32 14.79,20 13,20C12.03,20 11.06,19.79 10.16,19.39L8.67,20.88C10,21.62 11.5,22 13,22C15.3,22 17.61,21.12 19.36,19.36C22.88,15.85 22.88,10.15 19.36,6.64Z" /></g><g id="rotate-left"><path d="M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z" /></g><g id="rotate-left-variant"><path d="M4,2H7A2,2 0 0,1 9,4V20A2,2 0 0,1 7,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M20,15A2,2 0 0,1 22,17V20A2,2 0 0,1 20,22H11V15H20M14,4A8,8 0 0,1 22,12L21.94,13H19.92L20,12A6,6 0 0,0 14,6V9L10,5L14,1V4Z" /></g><g id="rotate-right"><path d="M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z" /></g><g id="rotate-right-variant"><path d="M10,4V1L14,5L10,9V6A6,6 0 0,0 4,12L4.08,13H2.06L2,12A8,8 0 0,1 10,4M17,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17A2,2 0 0,1 15,20V4A2,2 0 0,1 17,2M4,15H13V22H4A2,2 0 0,1 2,20V17A2,2 0 0,1 4,15Z" /></g><g id="rounded-corner"><path d="M19,19H21V21H19V19M19,17H21V15H19V17M3,13H5V11H3V13M3,17H5V15H3V17M3,9H5V7H3V9M3,5H5V3H3V5M7,5H9V3H7V5M15,21H17V19H15V21M11,21H13V19H11V21M15,21H17V19H15V21M7,21H9V19H7V21M3,21H5V19H3V21M21,8A5,5 0 0,0 16,3H11V5H16A3,3 0 0,1 19,8V13H21V8Z" /></g><g id="router-wireless"><path d="M4,13H20A1,1 0 0,1 21,14V18A1,1 0 0,1 20,19H4A1,1 0 0,1 3,18V14A1,1 0 0,1 4,13M9,17H10V15H9V17M5,15V17H7V15H5M19,6.93L17.6,8.34C16.15,6.89 14.15,6 11.93,6C9.72,6 7.72,6.89 6.27,8.34L4.87,6.93C6.68,5.12 9.18,4 11.93,4C14.69,4 17.19,5.12 19,6.93M16.17,9.76L14.77,11.17C14.04,10.45 13.04,10 11.93,10C10.82,10 9.82,10.45 9.1,11.17L7.7,9.76C8.78,8.67 10.28,8 11.93,8C13.58,8 15.08,8.67 16.17,9.76Z" /></g><g id="routes"><path d="M11,10H5L3,8L5,6H11V3L12,2L13,3V4H19L21,6L19,8H13V10H19L21,12L19,14H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V10Z" /></g><g id="rowing"><path d="M8.5,14.5L4,19L5.5,20.5L9,17H11L8.5,14.5M15,1A2,2 0 0,0 13,3A2,2 0 0,0 15,5A2,2 0 0,0 17,3A2,2 0 0,0 15,1M21,21L18,24L15,21V19.5L7.91,12.41C7.6,12.46 7.3,12.5 7,12.5V10.32C8.66,10.35 10.61,9.45 11.67,8.28L13.07,6.73C13.26,6.5 13.5,6.35 13.76,6.23C14.05,6.09 14.38,6 14.72,6H14.75C16,6 17,7 17,8.26V14C17,14.85 16.65,15.62 16.08,16.17L12.5,12.59V10.32C11.87,10.84 11.07,11.34 10.21,11.71L16.5,18H18L21,21Z" /></g><g id="rss"><path d="M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,4.44A15.56,15.56 0 0,1 19.56,20H16.73A12.73,12.73 0 0,0 4,7.27V4.44M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1Z" /></g><g id="rss-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,18A1.5,1.5 0 0,0 9,16.5A1.5,1.5 0 0,0 7.5,15M6,10V12A6,6 0 0,1 12,18H14A8,8 0 0,0 6,10M6,6V8A10,10 0 0,1 16,18H18A12,12 0 0,0 6,6Z" /></g><g id="ruler"><path d="M1.39,18.36L3.16,16.6L4.58,18L5.64,16.95L4.22,15.54L5.64,14.12L8.11,16.6L9.17,15.54L6.7,13.06L8.11,11.65L9.53,13.06L10.59,12L9.17,10.59L10.59,9.17L13.06,11.65L14.12,10.59L11.65,8.11L13.06,6.7L14.47,8.11L15.54,7.05L14.12,5.64L15.54,4.22L18,6.7L19.07,5.64L16.6,3.16L18.36,1.39L22.61,5.64L5.64,22.61L1.39,18.36Z" /></g><g id="run"><path d="M17.12,10L16.04,8.18L15.31,11.05L17.8,15.59V22H16V17L13.67,13.89L12.07,18.4L7.25,20.5L6.2,19L10.39,16.53L12.91,6.67L10.8,7.33V11H9V5.8L14.42,4.11L14.92,4.03C15.54,4.03 16.08,4.37 16.38,4.87L18.38,8.2H22V10H17.12M17,3.8C16,3.8 15.2,3 15.2,2C15.2,1 16,0.2 17,0.2C18,0.2 18.8,1 18.8,2C18.8,3 18,3.8 17,3.8M7,9V11H4A1,1 0 0,1 3,10A1,1 0 0,1 4,9H7M9.25,13L8.75,15H5A1,1 0 0,1 4,14A1,1 0 0,1 5,13H9.25M7,5V7H3A1,1 0 0,1 2,6A1,1 0 0,1 3,5H7Z" /></g><g id="sale"><path d="M18.65,2.85L19.26,6.71L22.77,8.5L21,12L22.78,15.5L19.24,17.29L18.63,21.15L14.74,20.54L11.97,23.3L9.19,20.5L5.33,21.14L4.71,17.25L1.22,15.47L3,11.97L1.23,8.5L4.74,6.69L5.35,2.86L9.22,3.5L12,0.69L14.77,3.46L18.65,2.85M9.5,7A1.5,1.5 0 0,0 8,8.5A1.5,1.5 0 0,0 9.5,10A1.5,1.5 0 0,0 11,8.5A1.5,1.5 0 0,0 9.5,7M14.5,14A1.5,1.5 0 0,0 13,15.5A1.5,1.5 0 0,0 14.5,17A1.5,1.5 0 0,0 16,15.5A1.5,1.5 0 0,0 14.5,14M8.41,17L17,8.41L15.59,7L7,15.59L8.41,17Z" /></g><g id="satellite"><path d="M5,18L8.5,13.5L11,16.5L14.5,12L19,18M5,12V10A5,5 0 0,0 10,5H12A7,7 0 0,1 5,12M5,5H8A3,3 0 0,1 5,8M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="satellite-variant"><path d="M11.62,1L17.28,6.67L15.16,8.79L13.04,6.67L11.62,8.09L13.95,10.41L12.79,11.58L13.24,12.04C14.17,11.61 15.31,11.77 16.07,12.54L12.54,16.07C11.77,15.31 11.61,14.17 12.04,13.24L11.58,12.79L10.41,13.95L8.09,11.62L6.67,13.04L8.79,15.16L6.67,17.28L1,11.62L3.14,9.5L5.26,11.62L6.67,10.21L3.84,7.38C3.06,6.6 3.06,5.33 3.84,4.55L4.55,3.84C5.33,3.06 6.6,3.06 7.38,3.84L10.21,6.67L11.62,5.26L9.5,3.14L11.62,1M18,14A4,4 0 0,1 14,18V16A2,2 0 0,0 16,14H18M22,14A8,8 0 0,1 14,22V20A6,6 0 0,0 20,14H22Z" /></g><g id="saxophone"><path d="M4,2A1,1 0 0,0 3,3A1,1 0 0,0 4,4A3,3 0 0,1 7,7V8.66L7,15.5C7,19.1 9.9,22 13.5,22C17.1,22 20,19.1 20,15.5V13A1,1 0 0,0 21,12A1,1 0 0,0 20,11H14A1,1 0 0,0 13,12A1,1 0 0,0 14,13V15A1,1 0 0,1 13,16A1,1 0 0,1 12,15V11A1,1 0 0,0 13,10A1,1 0 0,0 12,9V8A1,1 0 0,0 13,7A1,1 0 0,0 12,6V5.5A3.5,3.5 0 0,0 8.5,2H4Z" /></g><g id="scale"><path d="M8.46,15.06L7.05,16.47L5.68,15.1C4.82,16.21 4.24,17.54 4.06,19H6V21H2V20C2,15.16 5.44,11.13 10,10.2V8.2L2,5V3H22V5L14,8.2V10.2C18.56,11.13 22,15.16 22,20V21H18V19H19.94C19.76,17.54 19.18,16.21 18.32,15.1L16.95,16.47L15.54,15.06L16.91,13.68C15.8,12.82 14.46,12.24 13,12.06V14H11V12.06C9.54,12.24 8.2,12.82 7.09,13.68L8.46,15.06M12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22C11.68,22 11.38,21.93 11.12,21.79L7.27,20L11.12,18.21C11.38,18.07 11.68,18 12,18Z" /></g><g id="scale-balance"><path d="M12,3C10.73,3 9.6,3.8 9.18,5H3V7H4.95L2,14C1.53,16 3,17 5.5,17C8,17 9.56,16 9,14L6.05,7H9.17C9.5,7.85 10.15,8.5 11,8.83V20H2V22H22V20H13V8.82C13.85,8.5 14.5,7.85 14.82,7H17.95L15,14C14.53,16 16,17 18.5,17C21,17 22.56,16 22,14L19.05,7H21V5H14.83C14.4,3.8 13.27,3 12,3M12,5A1,1 0 0,1 13,6A1,1 0 0,1 12,7A1,1 0 0,1 11,6A1,1 0 0,1 12,5M5.5,10.25L7,14H4L5.5,10.25M18.5,10.25L20,14H17L18.5,10.25Z" /></g><g id="scale-bathroom"><path d="M5,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2M12,4A4,4 0 0,0 8,8H11.26L10.85,5.23L12.9,8H16A4,4 0 0,0 12,4M5,10V20H19V10H5Z" /></g><g id="scanner"><path d="M19.8,10.7L4.2,5L3.5,6.9L17.6,12H5A2,2 0 0,0 3,14V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V12.5C21,11.7 20.5,10.9 19.8,10.7M7,17H5V15H7V17M19,17H9V15H19V17Z" /></g><g id="school"><path d="M12,3L1,9L12,15L21,10.09V17H23V9M5,13.18V17.18L12,21L19,17.18V13.18L12,17L5,13.18Z" /></g><g id="screen-rotation"><path d="M7.5,21.5C4.25,19.94 1.91,16.76 1.55,13H0.05C0.56,19.16 5.71,24 12,24L12.66,23.97L8.85,20.16M14.83,21.19L2.81,9.17L9.17,2.81L21.19,14.83M10.23,1.75C9.64,1.16 8.69,1.16 8.11,1.75L1.75,8.11C1.16,8.7 1.16,9.65 1.75,10.23L13.77,22.25C14.36,22.84 15.31,22.84 15.89,22.25L22.25,15.89C22.84,15.3 22.84,14.35 22.25,13.77L10.23,1.75M16.5,2.5C19.75,4.07 22.09,7.24 22.45,11H23.95C23.44,4.84 18.29,0 12,0L11.34,0.03L15.15,3.84L16.5,2.5Z" /></g><g id="screen-rotation-lock"><path d="M16.8,2.5C16.8,1.56 17.56,0.8 18.5,0.8C19.44,0.8 20.2,1.56 20.2,2.5V3H16.8V2.5M16,9H21A1,1 0 0,0 22,8V4A1,1 0 0,0 21,3V2.5A2.5,2.5 0 0,0 18.5,0A2.5,2.5 0 0,0 16,2.5V3A1,1 0 0,0 15,4V8A1,1 0 0,0 16,9M8.47,20.5C5.2,18.94 2.86,15.76 2.5,12H1C1.5,18.16 6.66,23 12.95,23L13.61,22.97L9.8,19.15L8.47,20.5M23.25,12.77L20.68,10.2L19.27,11.61L21.5,13.83L15.83,19.5L4.5,8.17L10.17,2.5L12.27,4.61L13.68,3.2L11.23,0.75C10.64,0.16 9.69,0.16 9.11,0.75L2.75,7.11C2.16,7.7 2.16,8.65 2.75,9.23L14.77,21.25C15.36,21.84 16.31,21.84 16.89,21.25L23.25,14.89C23.84,14.3 23.84,13.35 23.25,12.77Z" /></g><g id="screwdriver"><path d="M18,1.83C17.5,1.83 17,2 16.59,2.41C13.72,5.28 8,11 8,11L9.5,12.5L6,16H4L2,20L4,22L8,20V18L11.5,14.5L13,16C13,16 18.72,10.28 21.59,7.41C22.21,6.5 22.37,5.37 21.59,4.59L19.41,2.41C19,2 18.5,1.83 18,1.83M18,4L20,6L13,13L11,11L18,4Z" /></g><g id="script"><path d="M14,20A2,2 0 0,0 16,18V5H9A1,1 0 0,0 8,6V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H18V18L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H12A2,2 0 0,0 14,20Z" /></g><g id="sd"><path d="M18,8H16V4H18M15,8H13V4H15M12,8H10V4H12M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="seal"><path d="M20.39,19.37L16.38,18L15,22L11.92,16L9,22L7.62,18L3.61,19.37L6.53,13.37C5.57,12.17 5,10.65 5,9A7,7 0 0,1 12,2A7,7 0 0,1 19,9C19,10.65 18.43,12.17 17.47,13.37L20.39,19.37M7,9L9.69,10.34L9.5,13.34L12,11.68L14.5,13.33L14.33,10.34L17,9L14.32,7.65L14.5,4.67L12,6.31L9.5,4.65L9.67,7.66L7,9Z" /></g><g id="seat-flat"><path d="M22,11V13H9V7H18A4,4 0 0,1 22,11M2,14V16H8V18H16V16H22V14M7.14,12.1C8.3,10.91 8.28,9 7.1,7.86C5.91,6.7 4,6.72 2.86,7.9C1.7,9.09 1.72,11 2.9,12.14C4.09,13.3 6,13.28 7.14,12.1Z" /></g><g id="seat-flat-angled"><path d="M22.25,14.29L21.56,16.18L9.2,11.71L11.28,6.05L19.84,9.14C21.94,9.9 23,12.2 22.25,14.29M1.5,12.14L8,14.5V19H16V17.37L20.5,19L21.21,17.11L2.19,10.25M7.3,10.2C8.79,9.5 9.42,7.69 8.71,6.2C8,4.71 6.2,4.08 4.7,4.8C3.21,5.5 2.58,7.3 3.3,8.8C4,10.29 5.8,10.92 7.3,10.2Z" /></g><g id="seat-individual-suite"><path d="M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13M19,7H11V14H3V7H1V17H23V11A4,4 0 0,0 19,7Z" /></g><g id="seat-legroom-extra"><path d="M4,12V3H2V12A5,5 0 0,0 7,17H13V15H7A3,3 0 0,1 4,12M22.83,17.24C22.45,16.5 21.54,16.27 20.8,16.61L19.71,17.11L16.3,10.13C15.96,9.45 15.27,9 14.5,9H11V3H5V11A3,3 0 0,0 8,14H15L18.41,21L22.13,19.3C22.9,18.94 23.23,18 22.83,17.24Z" /></g><g id="seat-legroom-normal"><path d="M5,12V3H3V12A5,5 0 0,0 8,17H14V15H8A3,3 0 0,1 5,12M20.5,18H19V11A2,2 0 0,0 17,9H12V3H6V11A3,3 0 0,0 9,14H16V21H20.5A1.5,1.5 0 0,0 22,19.5A1.5,1.5 0 0,0 20.5,18Z" /></g><g id="seat-legroom-reduced"><path d="M19.97,19.2C20.15,20.16 19.42,21 18.5,21H14V18L15,14H9A3,3 0 0,1 6,11V3H12V9H17A2,2 0 0,1 19,11L17,18H18.44C19.17,18 19.83,18.5 19.97,19.2M5,12V3H3V12A5,5 0 0,0 8,17H12V15H8A3,3 0 0,1 5,12Z" /></g><g id="seat-recline-extra"><path d="M5.35,5.64C4.45,5 4.23,3.76 4.86,2.85C5.5,1.95 6.74,1.73 7.65,2.36C8.55,3 8.77,4.24 8.14,5.15C7.5,6.05 6.26,6.27 5.35,5.64M16,19H8.93C7.45,19 6.19,17.92 5.97,16.46L4,7H2L4,16.76C4.37,19.2 6.47,21 8.94,21H16M16.23,15H11.35L10.32,10.9C11.9,11.79 13.6,12.44 15.47,12.12V10C13.84,10.3 12.03,9.72 10.78,8.74L9.14,7.47C8.91,7.29 8.65,7.17 8.38,7.09C8.06,7 7.72,6.97 7.39,7.03H7.37C6.14,7.25 5.32,8.42 5.53,9.64L6.88,15.56C7.16,17 8.39,18 9.83,18H16.68L20.5,21L22,19.5" /></g><g id="seat-recline-normal"><path d="M7.59,5.41C6.81,4.63 6.81,3.36 7.59,2.58C8.37,1.8 9.64,1.8 10.42,2.58C11.2,3.36 11.2,4.63 10.42,5.41C9.63,6.2 8.37,6.2 7.59,5.41M6,16V7H4V16A5,5 0 0,0 9,21H15V19H9A3,3 0 0,1 6,16M20,20.07L14.93,15H11.5V11.32C12.9,12.47 15.1,13.5 17,13.5V11.32C15.34,11.34 13.39,10.45 12.33,9.28L10.93,7.73C10.74,7.5 10.5,7.35 10.24,7.23C9.95,7.09 9.62,7 9.28,7H9.25C8,7 7,8 7,9.25V15A3,3 0 0,0 10,18H15.07L18.57,21.5" /></g><g id="security"><path d="M12,12H19C18.47,16.11 15.72,19.78 12,20.92V12H5V6.3L12,3.19M12,1L3,5V11C3,16.55 6.84,21.73 12,23C17.16,21.73 21,16.55 21,11V5L12,1Z" /></g><g id="security-home"><path d="M11,13H13V16H16V11H18L12,6L6,11H8V16H11V13M12,1L21,5V11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1Z" /></g><g id="security-network"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16.34C8.07,15.13 6,12 6,8.67V4.67L12,2L18,4.67V8.67C18,12 15.93,15.13 13,16.34V18M12,4L8,5.69V9H12V4M12,9V15C13.91,14.53 16,12.06 16,10V9H12Z" /></g><g id="select"><path d="M4,3H5V5H3V4A1,1 0 0,1 4,3M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M21,20A1,1 0 0,1 20,21H19V19H21V20M15,21V19H17V21H15M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M3,7H5V9H3V7M21,7V9H19V7H21Z" /></g><g id="select-all"><path d="M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z" /></g><g id="select-inverse"><path d="M5,3H7V5H9V3H11V5H13V3H15V5H17V3H19V5H21V7H19V9H21V11H19V13H21V15H19V17H21V19H19V21H17V19H15V21H13V19H11V21H9V19H7V21H5V19H3V17H5V15H3V13H5V11H3V9H5V7H3V5H5V3Z" /></g><g id="select-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L17,20.27V21H15V19H15.73L5,8.27V9H3V7H3.73L1,4.27M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M21,7V9H19V7H21Z" /></g><g id="selection"><path d="M2,4V7H4V4H2M7,4H4C4,4 4,4 4,4H2C2,2.89 2.9,2 4,2H7V4M22,4V7H20V4H22M17,4H20C20,4 20,4 20,4H22C22,2.89 21.1,2 20,2H17V4M22,20V17H20V20H22M17,20H20C20,20 20,20 20,20H22C22,21.11 21.1,22 20,22H17V20M2,20V17H4V20H2M7,20H4C4,20 4,20 4,20H2C2,21.11 2.9,22 4,22H7V20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z" /></g><g id="send"><path d="M2,21L23,12L2,3V10L17,12L2,14V21Z" /></g><g id="serial-port"><path d="M7,3H17V5H19V8H16V14H8V8H5V5H7V3M17,9H19V14H17V9M11,15H13V22H11V15M5,9H7V14H5V9Z" /></g><g id="server"><path d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H20A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9M4,17H20A1,1 0 0,1 21,18V22A1,1 0 0,1 20,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17M9,5H10V3H9V5M9,13H10V11H9V13M9,21H10V19H9V21M5,3V5H7V3H5M5,11V13H7V11H5M5,19V21H7V19H5Z" /></g><g id="server-minus"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H16V18H8V16Z" /></g><g id="server-network"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H20A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H13V18M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H4A1,1 0 0,1 3,7V3A1,1 0 0,1 4,2M9,6H10V4H9V6M9,14H10V12H9V14M5,4V6H7V4H5M5,12V14H7V12H5Z" /></g><g id="server-network-off"><path d="M13,18H14A1,1 0 0,1 15,19H15.73L13,16.27V18M22,19V20.18L20.82,19H22M21,21.72L19.73,23L17.73,21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H6.73L4.73,8H4A1,1 0 0,1 3,7V6.27L1,4.27L2.28,3L21,21.72M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H9.82L7,5.18V4H5.82L3.84,2C3.89,2 3.94,2 4,2M20,10A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H17.82L11.82,10H20M9,6H10V4H9V6M9,14H10V13.27L9,12.27V14M5,12V14H7V12H5Z" /></g><g id="server-off"><path d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H8.82L6.82,5H7V3H5V3.18L3.21,1.39C3.39,1.15 3.68,1 4,1M22,22.72L20.73,24L19.73,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17H13.73L11.73,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9H5.73L3.68,6.95C3.38,6.85 3.15,6.62 3.05,6.32L1,4.27L2.28,3L22,22.72M20,9A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H16.82L10.82,9H20M20,17A1,1 0 0,1 21,18V19.18L18.82,17H20M9,5H10V3H9V5M9,13H9.73L9,12.27V13M9,21H10V19H9V21M5,11V13H7V11H5M5,19V21H7V19H5Z" /></g><g id="server-plus"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H11V13H13V16H16V18H13V21H11V18H8V16Z" /></g><g id="server-remove"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M10.59,17L8,14.41L9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17Z" /></g><g id="server-security"><path d="M3,1H19A1,1 0 0,1 20,2V6A1,1 0 0,1 19,7H3A1,1 0 0,1 2,6V2A1,1 0 0,1 3,1M3,9H19A1,1 0 0,1 20,10V10.67L17.5,9.56L11,12.44V15H3A1,1 0 0,1 2,14V10A1,1 0 0,1 3,9M3,17H11C11.06,19.25 12,21.4 13.46,23H3A1,1 0 0,1 2,22V18A1,1 0 0,1 3,17M8,5H9V3H8V5M8,13H9V11H8V13M8,21H9V19H8V21M4,3V5H6V3H4M4,11V13H6V11H4M4,19V21H6V19H4M17.5,12L22,14V17C22,19.78 20.08,22.37 17.5,23C14.92,22.37 13,19.78 13,17V14L17.5,12M17.5,13.94L15,15.06V17.72C15,19.26 16.07,20.7 17.5,21.06V13.94Z" /></g><g id="settings"><path d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" /></g><g id="settings-box"><path d="M17.25,12C17.25,12.23 17.23,12.46 17.2,12.68L18.68,13.84C18.81,13.95 18.85,14.13 18.76,14.29L17.36,16.71C17.27,16.86 17.09,16.92 16.93,16.86L15.19,16.16C14.83,16.44 14.43,16.67 14,16.85L13.75,18.7C13.72,18.87 13.57,19 13.4,19H10.6C10.43,19 10.28,18.87 10.25,18.7L10,16.85C9.56,16.67 9.17,16.44 8.81,16.16L7.07,16.86C6.91,16.92 6.73,16.86 6.64,16.71L5.24,14.29C5.15,14.13 5.19,13.95 5.32,13.84L6.8,12.68C6.77,12.46 6.75,12.23 6.75,12C6.75,11.77 6.77,11.54 6.8,11.32L5.32,10.16C5.19,10.05 5.15,9.86 5.24,9.71L6.64,7.29C6.73,7.13 6.91,7.07 7.07,7.13L8.81,7.84C9.17,7.56 9.56,7.32 10,7.15L10.25,5.29C10.28,5.13 10.43,5 10.6,5H13.4C13.57,5 13.72,5.13 13.75,5.29L14,7.15C14.43,7.32 14.83,7.56 15.19,7.84L16.93,7.13C17.09,7.07 17.27,7.13 17.36,7.29L18.76,9.71C18.85,9.86 18.81,10.05 18.68,10.16L17.2,11.32C17.23,11.54 17.25,11.77 17.25,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M12,10C10.89,10 10,10.89 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,10.89 13.1,10 12,10Z" /></g><g id="shape-circle-plus"><path d="M11,19A6,6 0 0,0 17,13H19A8,8 0 0,1 11,21A8,8 0 0,1 3,13A8,8 0 0,1 11,5V7A6,6 0 0,0 5,13A6,6 0 0,0 11,19M19,5H22V7H19V10H17V7H14V5H17V2H19V5Z" /></g><g id="shape-plus"><path d="M2,2H11V11H2V2M17.5,2C20,2 22,4 22,6.5C22,9 20,11 17.5,11C15,11 13,9 13,6.5C13,4 15,2 17.5,2M6.5,14L11,22H2L6.5,14M19,17H22V19H19V22H17V19H14V17H17V14H19V17Z" /></g><g id="shape-polygon-plus"><path d="M17,15.7V13H19V17L10,21L3,14L7,5H11V7H8.3L5.4,13.6L10.4,18.6L17,15.7M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z" /></g><g id="shape-rectangle-plus"><path d="M19,6H22V8H19V11H17V8H14V6H17V3H19V6M17,17V14H19V19H3V6H11V8H5V17H17Z" /></g><g id="shape-square-plus"><path d="M19,5H22V7H19V10H17V7H14V5H17V2H19V5M17,19V13H19V21H3V5H11V7H5V19H17Z" /></g><g id="share"><path d="M21,11L14,4V8C7,9 4,14 3,19C5.5,15.5 9,13.9 14,13.9V18L21,11Z" /></g><g id="share-variant"><path d="M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z" /></g><g id="shield"><path d="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z" /></g><g id="shield-outline"><path d="M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21Z" /></g><g id="shopping"><path d="M12,13A5,5 0 0,1 7,8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H17A5,5 0 0,1 12,13M12,3A3,3 0 0,1 15,6H9A3,3 0 0,1 12,3M19,6H17A5,5 0 0,0 12,1A5,5 0 0,0 7,6H5C3.89,6 3,6.89 3,8V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V8C21,6.89 20.1,6 19,6Z" /></g><g id="shopping-music"><path d="M12,3A3,3 0 0,0 9,6H15A3,3 0 0,0 12,3M19,6A2,2 0 0,1 21,8V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V8C3,6.89 3.89,6 5,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6H19M9,19L16.5,14L9,10V19Z" /></g><g id="shovel"><path d="M15.1,1.81L12.27,4.64C11.5,5.42 11.5,6.69 12.27,7.47L13.68,8.88L9.13,13.43L6.31,10.6L4.89,12C-0.06,17 3.5,20.5 3.5,20.5C3.5,20.5 7,24 12,19.09L13.41,17.68L10.61,14.88L15.15,10.34L16.54,11.73C17.32,12.5 18.59,12.5 19.37,11.73L22.2,8.9L15.1,1.81M17.93,10.28L16.55,8.9L15.11,7.46L13.71,6.06L15.12,4.65L19.35,8.88L17.93,10.28Z" /></g><g id="shovel-off"><path d="M15.1,1.81L12.27,4.65C11.5,5.43 11.5,6.69 12.27,7.47L13.68,8.89L13,9.62L14.44,11.06L15.17,10.33L16.56,11.72C17.34,12.5 18.61,12.5 19.39,11.72L22.22,8.88L15.1,1.81M17.93,10.28L13.7,6.06L15.11,4.65L19.34,8.88L17.93,10.28M20.7,20.24L19.29,21.65L11.5,13.88L10.5,14.88L13.33,17.69L12,19.09C7,24 3.5,20.5 3.5,20.5C3.5,20.5 -0.06,17 4.89,12L6.31,10.6L9.13,13.43L10.13,12.43L2.35,4.68L3.77,3.26L20.7,20.24Z" /></g><g id="shredder"><path d="M6,3V7H8V5H16V7H18V3H6M5,8A3,3 0 0,0 2,11V17H5V14H19V17H22V11A3,3 0 0,0 19,8H5M18,10A1,1 0 0,1 19,11A1,1 0 0,1 18,12A1,1 0 0,1 17,11A1,1 0 0,1 18,10M7,16V21H9V16H7M11,16V20H13V16H11M15,16V21H17V16H15Z" /></g><g id="shuffle"><path d="M14.83,13.41L13.42,14.82L16.55,17.95L14.5,20H20V14.5L17.96,16.54L14.83,13.41M14.5,4L16.54,6.04L4,18.59L5.41,20L17.96,7.46L20,9.5V4M10.59,9.17L5.41,4L4,5.41L9.17,10.58L10.59,9.17Z" /></g><g id="shuffle-disabled"><path d="M16,4.5V7H5V9H16V11.5L19.5,8M16,12.5V15H5V17H16V19.5L19.5,16" /></g><g id="shuffle-variant"><path d="M17,3L22.25,7.5L17,12L22.25,16.5L17,21V18H14.26L11.44,15.18L13.56,13.06L15.5,15H17V12L17,9H15.5L6.5,18H2V15H5.26L14.26,6H17V3M2,6H6.5L9.32,8.82L7.2,10.94L5.26,9H2V6Z" /></g><g id="sigma"><path d="M5,4H18V9H17L16,6H10.06L13.65,11.13L9.54,17H16L17,15H18V20H5L10.6,12L5,4Z" /></g><g id="sigma-lower"><path d="M19,12C19,16.42 15.64,20 11.5,20C7.36,20 4,16.42 4,12C4,7.58 7.36,4 11.5,4H20V6H16.46C18,7.47 19,9.61 19,12M11.5,6C8.46,6 6,8.69 6,12C6,15.31 8.46,18 11.5,18C14.54,18 17,15.31 17,12C17,8.69 14.54,6 11.5,6Z" /></g><g id="sign-caution"><path d="M2,3H22V13H18V21H16V13H8V21H6V13H2V3M18.97,11L20,9.97V7.15L16.15,11H18.97M13.32,11L19.32,5H16.5L10.5,11H13.32M7.66,11L13.66,5H10.83L4.83,11H7.66M5.18,5L4,6.18V9L8,5H5.18Z" /></g><g id="signal"><path d="M3,21H6V18H3M8,21H11V14H8M13,21H16V9H13M18,21H21V3H18V21Z" /></g><g id="signal-2g"><path d="M11,19.5H2V13.5A3,3 0 0,1 5,10.5H8V7.5H2V4.5H8A3,3 0 0,1 11,7.5V10.5A3,3 0 0,1 8,13.5H5V16.5H11M22,10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5" /></g><g id="signal-3g"><path d="M11,16.5V14.25C11,13 10,12 8.75,12C10,12 11,11 11,9.75V7.5A3,3 0 0,0 8,4.5H2V7.5H8V10.5H5V13.5H8V16.5H2V19.5H8A3,3 0 0,0 11,16.5M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5Z" /></g><g id="signal-4g"><path d="M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M8,19.5H11V4.5H8V10.5H5V4.5H2V13.5H8V19.5Z" /></g><g id="signal-hspa"><path d="M10.5,10.5H13.5V4.5H16.5V19.5H13.5V13.5H10.5V19.5H7.5V4.5H10.5V10.5Z" /></g><g id="signal-hspa-plus"><path d="M19,8V11H22V14H19V17H16V14H13V11H16V8H19M5,10.5H8V4.5H11V19.5H8V13.5H5V19.5H2V4.5H5V10.5Z" /></g><g id="signal-variant"><path d="M4,6V4H4.1C12.9,4 20,11.1 20,19.9V20H18V19.9C18,12.2 11.8,6 4,6M4,10V8A12,12 0 0,1 16,20H14A10,10 0 0,0 4,10M4,14V12A8,8 0 0,1 12,20H10A6,6 0 0,0 4,14M4,16A4,4 0 0,1 8,20H4V16Z" /></g><g id="silverware"><path d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M14.88,11.53L13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z" /></g><g id="silverware-fork"><path d="M5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L5.12,21.29Z" /></g><g id="silverware-spoon"><path d="M14.88,11.53L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z" /></g><g id="silverware-variant"><path d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L13.41,13Z" /></g><g id="sim"><path d="M20,4A2,2 0 0,0 18,2H10L4,8V20A2,2 0 0,0 6,22H18C19.11,22 20,21.1 20,20V4M9,19H7V17H9V19M17,19H15V17H17V19M9,15H7V11H9V15M13,19H11V15H13V19M13,13H11V11H13V13M17,15H15V11H17V15Z" /></g><g id="sim-alert"><path d="M13,13H11V8H13M13,17H11V15H13M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="sim-off"><path d="M19,5A2,2 0 0,0 17,3H10L7.66,5.34L19,16.68V5M3.65,3.88L2.38,5.15L5,7.77V19A2,2 0 0,0 7,21H17C17.36,21 17.68,20.9 17.97,20.74L19.85,22.62L21.12,21.35L3.65,3.88Z" /></g><g id="sitemap"><path d="M9,2V8H11V11H5C3.89,11 3,11.89 3,13V16H1V22H7V16H5V13H11V16H9V22H15V16H13V13H19V16H17V22H23V16H21V13C21,11.89 20.11,11 19,11H13V8H15V2H9Z" /></g><g id="skip-backward"><path d="M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12" /></g><g id="skip-forward"><path d="M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12" /></g><g id="skip-next"><path d="M16,18H18V6H16M6,18L14.5,12L6,6V18Z" /></g><g id="skip-next-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8L13,12L8,16M14,8H16V16H14" /></g><g id="skip-next-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M8,8V16L13,12M14,8V16H16V8" /></g><g id="skip-previous"><path d="M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z" /></g><g id="skip-previous-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8H10V16H8M16,8V16L11,12" /></g><g id="skip-previous-circle-outline"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.59,4 4,7.59 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12C20,7.59 16.41,4 12,4M16,8V16L11,12M10,8V16H8V8" /></g><g id="skull"><path d="M12,2A9,9 0 0,0 3,11C3,14.03 4.53,16.82 7,18.47V22H9V19H11V22H13V19H15V22H17V18.46C19.47,16.81 21,14 21,11A9,9 0 0,0 12,2M8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11M16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11M12,14L13.5,17H10.5L12,14Z" /></g><g id="skype"><path d="M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M12.04,17.16C14.91,17.16 16.34,15.78 16.34,13.92C16.34,12.73 15.78,11.46 13.61,10.97L11.62,10.53C10.86,10.36 10,10.13 10,9.42C10,8.7 10.6,8.2 11.7,8.2C13.93,8.2 13.72,9.73 14.83,9.73C15.41,9.73 15.91,9.39 15.91,8.8C15.91,7.43 13.72,6.4 11.86,6.4C9.85,6.4 7.7,7.26 7.7,9.54C7.7,10.64 8.09,11.81 10.25,12.35L12.94,13.03C13.75,13.23 13.95,13.68 13.95,14.1C13.95,14.78 13.27,15.45 12.04,15.45C9.63,15.45 9.96,13.6 8.67,13.6C8.09,13.6 7.67,14 7.67,14.57C7.67,15.68 9,17.16 12.04,17.16Z" /></g><g id="skype-business"><path d="M12.03,16.53C9.37,16.53 8.18,15.22 8.18,14.24C8.18,13.74 8.55,13.38 9.06,13.38C10.2,13.38 9.91,15 12.03,15C13.12,15 13.73,14.43 13.73,13.82C13.73,13.46 13.55,13.06 12.83,12.88L10.46,12.29C8.55,11.81 8.2,10.78 8.2,9.81C8.2,7.79 10.1,7.03 11.88,7.03C13.5,7.03 15.46,7.94 15.46,9.15C15.46,9.67 15,9.97 14.5,9.97C13.5,9.97 13.7,8.62 11.74,8.62C10.77,8.62 10.23,9.06 10.23,9.69C10.23,10.32 11,10.5 11.66,10.68L13.42,11.07C15.34,11.5 15.83,12.62 15.83,13.67C15.83,15.31 14.57,16.53 12.03,16.53M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M8,5A3,3 0 0,0 5,8C5,8.79 5.3,9.5 5.8,10.04C5.1,12.28 5.63,14.82 7.4,16.6C9.18,18.37 11.72,18.9 13.96,18.2C14.5,18.7 15.21,19 16,19A3,3 0 0,0 19,16C19,15.21 18.7,14.5 18.2,13.96C18.9,11.72 18.37,9.18 16.6,7.4C14.82,5.63 12.28,5.1 10.04,5.8C9.5,5.3 8.79,5 8,5Z" /></g><g id="slack"><path d="M10.23,11.16L12.91,10.27L13.77,12.84L11.09,13.73L10.23,11.16M17.69,13.71C18.23,13.53 18.5,12.94 18.34,12.4C18.16,11.86 17.57,11.56 17.03,11.75L15.73,12.18L14.87,9.61L16.17,9.17C16.71,9 17,8.4 16.82,7.86C16.64,7.32 16.05,7 15.5,7.21L14.21,7.64L13.76,6.3C13.58,5.76 13,5.46 12.45,5.65C11.91,5.83 11.62,6.42 11.8,6.96L12.25,8.3L9.57,9.19L9.12,7.85C8.94,7.31 8.36,7 7.81,7.2C7.27,7.38 7,7.97 7.16,8.5L7.61,9.85L6.31,10.29C5.77,10.47 5.5,11.06 5.66,11.6C5.8,12 6.19,12.3 6.61,12.31L6.97,12.25L8.27,11.82L9.13,14.39L7.83,14.83C7.29,15 7,15.6 7.18,16.14C7.32,16.56 7.71,16.84 8.13,16.85L8.5,16.79L9.79,16.36L10.24,17.7C10.38,18.13 10.77,18.4 11.19,18.41L11.55,18.35C12.09,18.17 12.38,17.59 12.2,17.04L11.75,15.7L14.43,14.81L14.88,16.15C15,16.57 15.41,16.84 15.83,16.85L16.19,16.8C16.73,16.62 17,16.03 16.84,15.5L16.39,14.15L17.69,13.71M21.17,9.25C23.23,16.12 21.62,19.1 14.75,21.17C7.88,23.23 4.9,21.62 2.83,14.75C0.77,7.88 2.38,4.9 9.25,2.83C16.12,0.77 19.1,2.38 21.17,9.25Z" /></g><g id="sleep"><path d="M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M15,16H9V14L12.39,10H9V8H15V10L11.62,14H15V16M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z" /></g><g id="sleep-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H9V14L9.79,13.06L2,5.27M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M9.82,8H15V10L13.54,11.72L9.82,8M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z" /></g><g id="smoking"><path d="M7,19H22V15H7M2,19H5V15H2M10,4V5A3,3 0 0,1 7,8A5,5 0 0,0 2,13H4A3,3 0 0,1 7,10A5,5 0 0,0 12,5V4H10Z" /></g><g id="smoking-off"><path d="M15.82,14L19.82,18H22V14M2,18H5V14H2M3.28,4L2,5.27L4.44,7.71C2.93,8.61 2,10.24 2,12H4C4,10.76 4.77,9.64 5.93,9.2L10.73,14H7V18H14.73L18.73,22L20,20.72M10,3V4C10,5.09 9.4,6.1 8.45,6.62L9.89,8.07C11.21,7.13 12,5.62 12,4V3H10Z" /></g><g id="snapchat"><path d="M12,20.45C10.81,20.45 10.1,19.94 9.47,19.5C9,19.18 8.58,18.87 8.08,18.79C6.93,18.73 6.59,18.79 5.97,18.9C5.86,18.9 5.73,18.87 5.68,18.69C5.5,17.94 5.45,17.73 5.32,17.71C4,17.5 3.19,17.2 3.03,16.83C3,16.6 3.07,16.5 3.18,16.5C4.25,16.31 5.2,15.75 6,14.81C6.63,14.09 6.93,13.39 6.96,13.32C7.12,13 7.15,12.72 7.06,12.5C6.89,12.09 6.31,11.91 5.68,11.7C5.34,11.57 4.79,11.29 4.86,10.9C4.92,10.62 5.29,10.42 5.81,10.46C6.16,10.62 6.46,10.7 6.73,10.7C7.06,10.7 7.21,10.58 7.25,10.54C7.14,8.78 7.05,7.25 7.44,6.38C8.61,3.76 11.08,3.55 12,3.55C12.92,3.55 15.39,3.76 16.56,6.38C16.95,7.25 16.86,8.78 16.75,10.54C16.79,10.58 16.94,10.7 17.27,10.7C17.54,10.7 17.84,10.62 18.19,10.46C18.71,10.42 19.08,10.62 19.14,10.9C19.21,11.29 18.66,11.57 18.32,11.7C17.69,11.91 17.11,12.09 16.94,12.5C16.85,12.72 16.88,13 17.04,13.32C17.07,13.39 17.37,14.09 18,14.81C18.8,15.75 19.75,16.31 20.82,16.5C20.93,16.5 21,16.6 20.97,16.83C20.81,17.2 20,17.5 18.68,17.71C18.55,17.73 18.5,17.94 18.32,18.69C18.27,18.87 18.14,18.9 18.03,18.9C17.41,18.79 17.07,18.73 15.92,18.79C15.42,18.87 15,19.18 14.53,19.5C13.9,19.94 13.19,20.45 12,20.45Z" /></g><g id="snowman"><path d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.5 7.65,14.17 8.69,13.25C8.26,12.61 8,11.83 8,11C8,10.86 8,10.73 8,10.59L5.04,8.87L4.83,8.71L2.29,9.39L2.03,8.43L4.24,7.84L2.26,6.69L2.76,5.82L4.74,6.97L4.15,4.75L5.11,4.5L5.8,7.04L6.04,7.14L8.73,8.69C9.11,8.15 9.62,7.71 10.22,7.42C9.5,6.87 9,6 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6 14.5,6.87 13.78,7.42C14.38,7.71 14.89,8.15 15.27,8.69L17.96,7.14L18.2,7.04L18.89,4.5L19.85,4.75L19.26,6.97L21.24,5.82L21.74,6.69L19.76,7.84L21.97,8.43L21.71,9.39L19.17,8.71L18.96,8.87L16,10.59V11C16,11.83 15.74,12.61 15.31,13.25C16.35,14.17 17,15.5 17,17Z" /></g><g id="soccer"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,3C13.76,3 15.4,3.53 16.78,4.41L16.5,5H13L12,5L10.28,4.16L10.63,3.13C11.08,3.05 11.53,3 12,3M9.53,3.38L9.19,4.41L6.63,5.69L5.38,5.94C6.5,4.73 7.92,3.84 9.53,3.38M13,6H16L18.69,9.59L17.44,12.16L14.81,12.78L11.53,8.94L13,6M6.16,6.66L7,10L5.78,13.06L3.22,13.94C3.08,13.31 3,12.67 3,12C3,10.1 3.59,8.36 4.59,6.91L6.16,6.66M20.56,9.22C20.85,10.09 21,11.03 21,12C21,13.44 20.63,14.79 20.03,16H19L18.16,12.66L19.66,9.66L20.56,9.22M8,10H11L13.81,13.28L12,16L8.84,16.78L6.53,13.69L8,10M12,17L15,19L14.13,20.72C13.44,20.88 12.73,21 12,21C10.25,21 8.63,20.5 7.25,19.63L8.41,17.91L12,17M19,17H19.5C18.5,18.5 17,19.67 15.31,20.34L16,19L19,17Z" /></g><g id="sofa"><path d="M7,6H9A2,2 0 0,1 11,8V12H5V8A2,2 0 0,1 7,6M15,6H17A2,2 0 0,1 19,8V12H13V8A2,2 0 0,1 15,6M1,9H2A1,1 0 0,1 3,10V12A2,2 0 0,0 5,14H19A2,2 0 0,0 21,12V11L21,10A1,1 0 0,1 22,9H23A1,1 0 0,1 24,10V19H21V17H3V19H0V10A1,1 0 0,1 1,9Z" /></g><g id="solid"><path d="M0,0H24V24H0" /></g><g id="sort"><path d="M10,13V11H18V13H10M10,19V17H14V19H10M10,7V5H22V7H10M6,17H8.5L5,20.5L1.5,17H4V7H1.5L5,3.5L8.5,7H6V17Z" /></g><g id="sort-alphabetical"><path d="M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75M8.89,14.3H6L5.28,17H2.91L6,7H9L12.13,17H9.67L8.89,14.3M6.33,12.68H8.56L7.93,10.56L7.67,9.59L7.42,8.63H7.39L7.17,9.6L6.93,10.58L6.33,12.68M13.05,17V15.74L17.8,8.97V8.91H13.5V7H20.73V8.34L16.09,15V15.08H20.8V17H13.05Z" /></g><g id="sort-ascending"><path d="M10,11V13H18V11H10M10,5V7H14V5H10M10,17V19H22V17H10M6,7H8.5L5,3.5L1.5,7H4V20H6V7Z" /></g><g id="sort-descending"><path d="M10,13V11H18V13H10M10,19V17H14V19H10M10,7V5H22V7H10M6,17H8.5L5,20.5L1.5,17H4V4H6V17Z" /></g><g id="sort-numeric"><path d="M7.78,7C9.08,7.04 10,7.53 10.57,8.46C11.13,9.4 11.41,10.56 11.39,11.95C11.4,13.5 11.09,14.73 10.5,15.62C9.88,16.5 8.95,16.97 7.71,17C6.45,16.96 5.54,16.5 4.96,15.56C4.38,14.63 4.09,13.45 4.09,12C4.09,10.55 4.39,9.36 5,8.44C5.59,7.5 6.5,7.04 7.78,7M7.75,8.63C7.31,8.63 6.96,8.9 6.7,9.46C6.44,10 6.32,10.87 6.32,12C6.31,13.15 6.44,14 6.69,14.54C6.95,15.1 7.31,15.37 7.77,15.37C8.69,15.37 9.16,14.24 9.17,12C9.17,9.77 8.7,8.65 7.75,8.63M13.33,17V15.22L13.76,15.24L14.3,15.22L15.34,15.03C15.68,14.92 16,14.78 16.26,14.58C16.59,14.35 16.86,14.08 17.07,13.76C17.29,13.45 17.44,13.12 17.53,12.78L17.5,12.77C17.05,13.19 16.38,13.4 15.47,13.41C14.62,13.4 13.91,13.15 13.34,12.65C12.77,12.15 12.5,11.43 12.46,10.5C12.47,9.5 12.81,8.69 13.47,8.03C14.14,7.37 15,7.03 16.12,7C17.37,7.04 18.29,7.45 18.88,8.24C19.47,9 19.76,10 19.76,11.19C19.75,12.15 19.61,13 19.32,13.76C19.03,14.5 18.64,15.13 18.12,15.64C17.66,16.06 17.11,16.38 16.47,16.61C15.83,16.83 15.12,16.96 14.34,17H13.33M16.06,8.63C15.65,8.64 15.32,8.8 15.06,9.11C14.81,9.42 14.68,9.84 14.68,10.36C14.68,10.8 14.8,11.16 15.03,11.46C15.27,11.77 15.63,11.92 16.11,11.93C16.43,11.93 16.7,11.86 16.92,11.74C17.14,11.61 17.3,11.46 17.41,11.28C17.5,11.17 17.53,10.97 17.53,10.71C17.54,10.16 17.43,9.69 17.2,9.28C16.97,8.87 16.59,8.65 16.06,8.63M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75Z" /></g><g id="sort-variant"><path d="M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z" /></g><g id="soundcloud"><path d="M11.56,8.87V17H20.32V17C22.17,16.87 23,15.73 23,14.33C23,12.85 21.88,11.66 20.38,11.66C20,11.66 19.68,11.74 19.35,11.88C19.11,9.54 17.12,7.71 14.67,7.71C13.5,7.71 12.39,8.15 11.56,8.87M10.68,9.89C10.38,9.71 10.06,9.57 9.71,9.5V17H11.1V9.34C10.95,9.5 10.81,9.7 10.68,9.89M8.33,9.35V17H9.25V9.38C9.06,9.35 8.87,9.34 8.67,9.34C8.55,9.34 8.44,9.34 8.33,9.35M6.5,10V17H7.41V9.54C7.08,9.65 6.77,9.81 6.5,10M4.83,12.5C4.77,12.5 4.71,12.44 4.64,12.41V17H5.56V10.86C5.19,11.34 4.94,11.91 4.83,12.5M2.79,12.22V16.91C3,16.97 3.24,17 3.5,17H3.72V12.14C3.64,12.13 3.56,12.12 3.5,12.12C3.24,12.12 3,12.16 2.79,12.22M1,14.56C1,15.31 1.34,15.97 1.87,16.42V12.71C1.34,13.15 1,13.82 1,14.56Z" /></g><g id="source-branch"><path d="M13,14C9.64,14 8.54,15.35 8.18,16.24C9.25,16.7 10,17.76 10,19A3,3 0 0,1 7,22A3,3 0 0,1 4,19C4,17.69 4.83,16.58 6,16.17V7.83C4.83,7.42 4,6.31 4,5A3,3 0 0,1 7,2A3,3 0 0,1 10,5C10,6.31 9.17,7.42 8,7.83V13.12C8.88,12.47 10.16,12 12,12C14.67,12 15.56,10.66 15.85,9.77C14.77,9.32 14,8.25 14,7A3,3 0 0,1 17,4A3,3 0 0,1 20,7C20,8.34 19.12,9.5 17.91,9.86C17.65,11.29 16.68,14 13,14M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M17,6A1,1 0 0,0 16,7A1,1 0 0,0 17,8A1,1 0 0,0 18,7A1,1 0 0,0 17,6Z" /></g><g id="source-commit"><path d="M17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-end"><path d="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-end-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11Z" /></g><g id="source-commit-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11M11,21V19H13V21H11Z" /></g><g id="source-commit-next-local"><path d="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z" /></g><g id="source-commit-start"><path d="M12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-start-next-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z" /></g><g id="source-fork"><path d="M6,2A3,3 0 0,1 9,5C9,6.28 8.19,7.38 7.06,7.81C7.15,8.27 7.39,8.83 8,9.63C9,10.92 11,12.83 12,14.17C13,12.83 15,10.92 16,9.63C16.61,8.83 16.85,8.27 16.94,7.81C15.81,7.38 15,6.28 15,5A3,3 0 0,1 18,2A3,3 0 0,1 21,5C21,6.32 20.14,7.45 18.95,7.85C18.87,8.37 18.64,9 18,9.83C17,11.17 15,13.08 14,14.38C13.39,15.17 13.15,15.73 13.06,16.19C14.19,16.62 15,17.72 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.72 9.81,16.62 10.94,16.19C10.85,15.73 10.61,15.17 10,14.38C9,13.08 7,11.17 6,9.83C5.36,9 5.13,8.37 5.05,7.85C3.86,7.45 3,6.32 3,5A3,3 0 0,1 6,2M6,4A1,1 0 0,0 5,5A1,1 0 0,0 6,6A1,1 0 0,0 7,5A1,1 0 0,0 6,4M18,4A1,1 0 0,0 17,5A1,1 0 0,0 18,6A1,1 0 0,0 19,5A1,1 0 0,0 18,4M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z" /></g><g id="source-merge"><path d="M7,3A3,3 0 0,1 10,6C10,7.29 9.19,8.39 8.04,8.81C8.58,13.81 13.08,14.77 15.19,14.96C15.61,13.81 16.71,13 18,13A3,3 0 0,1 21,16A3,3 0 0,1 18,19C16.69,19 15.57,18.16 15.16,17C10.91,16.8 9.44,15.19 8,13.39V15.17C9.17,15.58 10,16.69 10,18A3,3 0 0,1 7,21A3,3 0 0,1 4,18C4,16.69 4.83,15.58 6,15.17V8.83C4.83,8.42 4,7.31 4,6A3,3 0 0,1 7,3M7,5A1,1 0 0,0 6,6A1,1 0 0,0 7,7A1,1 0 0,0 8,6A1,1 0 0,0 7,5M7,17A1,1 0 0,0 6,18A1,1 0 0,0 7,19A1,1 0 0,0 8,18A1,1 0 0,0 7,17M18,15A1,1 0 0,0 17,16A1,1 0 0,0 18,17A1,1 0 0,0 19,16A1,1 0 0,0 18,15Z" /></g><g id="source-pull"><path d="M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V15.17C8.17,15.58 9,16.69 9,18A3,3 0 0,1 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M21,18A3,3 0 0,1 18,21A3,3 0 0,1 15,18C15,16.69 15.83,15.58 17,15.17V7H15V10.25L10.75,6L15,1.75V5H17A2,2 0 0,1 19,7V15.17C20.17,15.58 21,16.69 21,18M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17Z" /></g><g id="speaker"><path d="M12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M17,2H7C5.89,2 5,2.89 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4C19,2.89 18.1,2 17,2Z" /></g><g id="speaker-off"><path d="M2,5.27L3.28,4L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.89,22 5,21.1 5,20V8.27L2,5.27M12,18A3,3 0 0,1 9,15C9,14.24 9.28,13.54 9.75,13L8.33,11.6C7.5,12.5 7,13.69 7,15A5,5 0 0,0 12,20C13.31,20 14.5,19.5 15.4,18.67L14,17.25C13.45,17.72 12.76,18 12,18M17,15A5,5 0 0,0 12,10H11.82L5.12,3.3C5.41,2.54 6.14,2 7,2H17A2,2 0 0,1 19,4V17.18L17,15.17V15M12,4C10.89,4 10,4.89 10,6A2,2 0 0,0 12,8A2,2 0 0,0 14,6C14,4.89 13.1,4 12,4Z" /></g><g id="speaker-wireless"><path d="M20.07,19.07L18.66,17.66C20.11,16.22 21,14.21 21,12C21,9.78 20.11,7.78 18.66,6.34L20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07M17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24M4,3H12A2,2 0 0,1 14,5V19A2,2 0 0,1 12,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M8,5A2,2 0 0,0 6,7A2,2 0 0,0 8,9A2,2 0 0,0 10,7A2,2 0 0,0 8,5M8,11A4,4 0 0,0 4,15A4,4 0 0,0 8,19A4,4 0 0,0 12,15A4,4 0 0,0 8,11M8,13A2,2 0 0,1 10,15A2,2 0 0,1 8,17A2,2 0 0,1 6,15A2,2 0 0,1 8,13Z" /></g><g id="speedometer"><path d="M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z" /></g><g id="spellcheck"><path d="M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z" /></g><g id="spotify"><path d="M17.9,10.9C14.7,9 9.35,8.8 6.3,9.75C5.8,9.9 5.3,9.6 5.15,9.15C5,8.65 5.3,8.15 5.75,8C9.3,6.95 15.15,7.15 18.85,9.35C19.3,9.6 19.45,10.2 19.2,10.65C18.95,11 18.35,11.15 17.9,10.9M17.8,13.7C17.55,14.05 17.1,14.2 16.75,13.95C14.05,12.3 9.95,11.8 6.8,12.8C6.4,12.9 5.95,12.7 5.85,12.3C5.75,11.9 5.95,11.45 6.35,11.35C10,10.25 14.5,10.8 17.6,12.7C17.9,12.85 18.05,13.35 17.8,13.7M16.6,16.45C16.4,16.75 16.05,16.85 15.75,16.65C13.4,15.2 10.45,14.9 6.95,15.7C6.6,15.8 6.3,15.55 6.2,15.25C6.1,14.9 6.35,14.6 6.65,14.5C10.45,13.65 13.75,14 16.35,15.6C16.7,15.75 16.75,16.15 16.6,16.45M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="spotlight"><path d="M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="spotlight-beam"><path d="M9,16.5L9.91,15.59L15.13,20.8L14.21,21.71L9,16.5M15.5,10L16.41,9.09L21.63,14.3L20.71,15.21L15.5,10M6.72,2.72L10.15,6.15L6.15,10.15L2.72,6.72C1.94,5.94 1.94,4.67 2.72,3.89L3.89,2.72C4.67,1.94 5.94,1.94 6.72,2.72M14.57,7.5L15.28,8.21L8.21,15.28L7.5,14.57L6.64,11.07L11.07,6.64L14.57,7.5Z" /></g><g id="spray"><path d="M10,4H12V6H10V4M7,3H9V5H7V3M7,6H9V8H7V6M6,8V10H4V8H6M6,5V7H4V5H6M6,2V4H4V2H6M13,22A2,2 0 0,1 11,20V10A2,2 0 0,1 13,8V7H14V4H17V7H18V8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H13M13,10V20H18V10H13Z" /></g><g id="square-inc"><path d="M6,3H18A3,3 0 0,1 21,6V18A3,3 0 0,1 18,21H6A3,3 0 0,1 3,18V6A3,3 0 0,1 6,3M7,6A1,1 0 0,0 6,7V17A1,1 0 0,0 7,18H17A1,1 0 0,0 18,17V7A1,1 0 0,0 17,6H7M9.5,9H14.5A0.5,0.5 0 0,1 15,9.5V14.5A0.5,0.5 0 0,1 14.5,15H9.5A0.5,0.5 0 0,1 9,14.5V9.5A0.5,0.5 0 0,1 9.5,9Z" /></g><g id="square-inc-cash"><path d="M5.5,0H18.5A5.5,5.5 0 0,1 24,5.5V18.5A5.5,5.5 0 0,1 18.5,24H5.5A5.5,5.5 0 0,1 0,18.5V5.5A5.5,5.5 0 0,1 5.5,0M15.39,15.18C15.39,16.76 14.5,17.81 12.85,17.95V12.61C14.55,13.13 15.39,13.66 15.39,15.18M11.65,6V10.88C10.34,10.5 9.03,9.93 9.03,8.43C9.03,6.94 10.18,6.12 11.65,6M15.5,7.6L16.5,6.8C15.62,5.66 14.4,4.92 12.85,4.77V3.8H11.65V3.8L11.65,4.75C9.5,4.89 7.68,6.17 7.68,8.5C7.68,11 9.74,11.78 11.65,12.29V17.96C10.54,17.84 9.29,17.31 8.43,16.03L7.3,16.78C8.2,18.12 9.76,19 11.65,19.14V20.2H12.07L12.85,20.2V19.16C15.35,19 16.7,17.34 16.7,15.14C16.7,12.58 14.81,11.76 12.85,11.19V6.05C14,6.22 14.85,6.76 15.5,7.6Z" /></g><g id="stackexchange"><path d="M4,14.04V11H20V14.04H4M4,10V7H20V10H4M17.46,2C18.86,2 20,3.18 20,4.63V6H4V4.63C4,3.18 5.14,2 6.54,2H17.46M4,15H20V16.35C20,17.81 18.86,19 17.46,19H16.5L13,22V19H6.54C5.14,19 4,17.81 4,16.35V15Z" /></g><g id="stackoverflow"><path d="M17.36,20.2V14.82H19.15V22H3V14.82H4.8V20.2H17.36M6.77,14.32L7.14,12.56L15.93,14.41L15.56,16.17L6.77,14.32M7.93,10.11L8.69,8.5L16.83,12.28L16.07,13.9L7.93,10.11M10.19,6.12L11.34,4.74L18.24,10.5L17.09,11.87L10.19,6.12M14.64,1.87L20,9.08L18.56,10.15L13.2,2.94L14.64,1.87M6.59,18.41V16.61H15.57V18.41H6.59Z" /></g><g id="stadium"><path d="M5,3H7L10,5L7,7V8.33C8.47,8.12 10.18,8 12,8C13.82,8 15.53,8.12 17,8.33V3H19L22,5L19,7V8.71C20.85,9.17 22,9.8 22,10.5C22,11.88 17.5,13 12,13C6.5,13 2,11.88 2,10.5C2,9.8 3.15,9.17 5,8.71V3M12,9.5C8.69,9.5 7,9.67 7,10.5C7,11.33 8.69,11.5 12,11.5C15.31,11.5 17,11.33 17,10.5C17,9.67 15.31,9.5 12,9.5M12,14.75C15.81,14.75 19.2,14.08 21.4,13.05L20,21H15V19A2,2 0 0,0 13,17H11A2,2 0 0,0 9,19V21H4L2.6,13.05C4.8,14.08 8.19,14.75 12,14.75Z" /></g><g id="stairs"><path d="M15,5V9H11V13H7V17H3V20H10V16H14V12H18V8H22V5H15Z" /></g><g id="star"><path d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z" /></g><g id="star-circle"><path d="M16.23,18L12,15.45L7.77,18L8.89,13.19L5.16,9.96L10.08,9.54L12,5L13.92,9.53L18.84,9.95L15.11,13.18L16.23,18M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="star-half"><path d="M12,15.89V6.59L13.71,10.63L18.09,11L14.77,13.88L15.76,18.16M22,9.74L14.81,9.13L12,2.5L9.19,9.13L2,9.74L7.45,14.47L5.82,21.5L12,17.77L18.18,21.5L16.54,14.47L22,9.74Z" /></g><g id="star-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.05,20.31L12,17.27L5.82,21L7.45,13.97L2,9.24L5.66,8.93L2,5.27M12,2L14.81,8.62L22,9.24L16.54,13.97L16.77,14.95L9.56,7.74L12,2Z" /></g><g id="star-outline"><path d="M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" /></g><g id="steam"><path d="M20.14,7.79C21.33,7.79 22.29,8.75 22.29,9.93C22.29,11.11 21.33,12.07 20.14,12.07A2.14,2.14 0 0,1 18,9.93C18,8.75 18.96,7.79 20.14,7.79M3,6.93A3,3 0 0,1 6,9.93V10.24L12.33,13.54C12.84,13.15 13.46,12.93 14.14,12.93L16.29,9.93C16.29,7.8 18,6.07 20.14,6.07A3.86,3.86 0 0,1 24,9.93A3.86,3.86 0 0,1 20.14,13.79L17.14,15.93A3,3 0 0,1 14.14,18.93C12.5,18.93 11.14,17.59 11.14,15.93C11.14,15.89 11.14,15.85 11.14,15.82L4.64,12.44C4.17,12.75 3.6,12.93 3,12.93A3,3 0 0,1 0,9.93A3,3 0 0,1 3,6.93M15.03,14.94C15.67,15.26 15.92,16.03 15.59,16.67C15.27,17.3 14.5,17.55 13.87,17.23L12.03,16.27C12.19,17.29 13.08,18.07 14.14,18.07C15.33,18.07 16.29,17.11 16.29,15.93C16.29,14.75 15.33,13.79 14.14,13.79C13.81,13.79 13.5,13.86 13.22,14L15.03,14.94M3,7.79C1.82,7.79 0.86,8.75 0.86,9.93C0.86,11.11 1.82,12.07 3,12.07C3.24,12.07 3.5,12.03 3.7,11.95L2.28,11.22C1.64,10.89 1.39,10.12 1.71,9.5C2.04,8.86 2.81,8.6 3.44,8.93L5.14,9.81C5.08,8.68 4.14,7.79 3,7.79M20.14,6.93C18.5,6.93 17.14,8.27 17.14,9.93A3,3 0 0,0 20.14,12.93A3,3 0 0,0 23.14,9.93A3,3 0 0,0 20.14,6.93Z" /></g><g id="steering"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.1,4 19.5,7.1 20,11H17C16.5,9.9 14.4,9 12,9C9.6,9 7.5,9.9 7,11H4C4.5,7.1 7.9,4 12,4M4,13H7C7.2,14.3 8.2,16.6 11,17V20C7.4,19.6 4.4,16.6 4,13M13,20V17C15.8,16.6 16.7,14.3 17,13H20C19.6,16.6 16.6,19.6 13,20Z" /></g><g id="step-backward"><path d="M19,5V19H16V5M14,5V19L3,12" /></g><g id="step-backward-2"><path d="M17,5H14V19H17V5M12,5L1,12L12,19V5M22,5H19V19H22V5Z" /></g><g id="step-forward"><path d="M5,5V19H8V5M10,5V19L21,12" /></g><g id="step-forward-2"><path d="M7,5H10V19H7V5M12,5L23,12L12,19V5M2,5H5V19H2V5Z" /></g><g id="stethoscope"><path d="M19,8C19.56,8 20,8.43 20,9A1,1 0 0,1 19,10C18.43,10 18,9.55 18,9C18,8.43 18.43,8 19,8M2,2V11C2,13.96 4.19,16.5 7.14,16.91C7.76,19.92 10.42,22 13.5,22A6.5,6.5 0 0,0 20,15.5V11.81C21.16,11.39 22,10.29 22,9A3,3 0 0,0 19,6A3,3 0 0,0 16,9C16,10.29 16.84,11.4 18,11.81V15.41C18,17.91 16,19.91 13.5,19.91C11.5,19.91 9.82,18.7 9.22,16.9C12,16.3 14,13.8 14,11V2H10V5H12V11A4,4 0 0,1 8,15A4,4 0 0,1 4,11V5H6V2H2Z" /></g><g id="sticker"><path d="M12.12,18.46L18.3,12.28C16.94,12.59 15.31,13.2 14.07,14.46C13.04,15.5 12.39,16.83 12.12,18.46M20.75,10H21.05C21.44,10 21.79,10.27 21.93,10.64C22.07,11 22,11.43 21.7,11.71L11.7,21.71C11.5,21.9 11.26,22 11,22L10.64,21.93C10.27,21.79 10,21.44 10,21.05C9.84,17.66 10.73,14.96 12.66,13.03C15.5,10.2 19.62,10 20.75,10M12,2C16.5,2 20.34,5 21.58,9.11L20,9H19.42C18.24,6.07 15.36,4 12,4A8,8 0 0,0 4,12C4,15.36 6.07,18.24 9,19.42C8.97,20.13 9,20.85 9.11,21.57C5,20.33 2,16.5 2,12C2,6.47 6.5,2 12,2Z" /></g><g id="stocking"><path d="M17,2A2,2 0 0,1 19,4V7A2,2 0 0,1 17,9V17C17,17.85 16.5,18.57 15.74,18.86L9.5,21.77C8.5,22.24 7.29,21.81 6.83,20.81L6,19C5.5,18 5.95,16.8 6.95,16.34L10,14.91V9A2,2 0 0,1 8,7V4A2,2 0 0,1 10,2H17M10,4V7H17V4H10Z" /></g><g id="stop"><path d="M18,18H6V6H18V18Z" /></g><g id="stop-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9,9H15V15H9" /></g><g id="stop-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M9,9V15H15V9" /></g><g id="store"><path d="M12,18H6V14H12M21,14V12L20,7H4L3,12V14H4V20H14V14H18V20H20V14M20,4H4V6H20V4Z" /></g><g id="store-24-hour"><path d="M16,12H15V10H13V7H14V9H15V7H16M11,10H9V11H11V12H8V9H10V8H8V7H11M19,7V4H5V7H2V20H10V16H14V20H22V7H19Z" /></g><g id="stove"><path d="M6,14H8L11,17H9L6,14M4,4H5V3A1,1 0 0,1 6,2H10A1,1 0 0,1 11,3V4H13V3A1,1 0 0,1 14,2H18A1,1 0 0,1 19,3V4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21V22H17V21H7V22H4V21A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M18,7A1,1 0 0,1 19,8A1,1 0 0,1 18,9A1,1 0 0,1 17,8A1,1 0 0,1 18,7M14,7A1,1 0 0,1 15,8A1,1 0 0,1 14,9A1,1 0 0,1 13,8A1,1 0 0,1 14,7M20,6H4V10H20V6M4,19H20V12H4V19M6,7A1,1 0 0,1 7,8A1,1 0 0,1 6,9A1,1 0 0,1 5,8A1,1 0 0,1 6,7M13,14H15L18,17H16L13,14Z" /></g><g id="subdirectory-arrow-left"><path d="M11,9L12.42,10.42L8.83,14H18V4H20V16H8.83L12.42,19.58L11,21L5,15L11,9Z" /></g><g id="subdirectory-arrow-right"><path d="M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z" /></g><g id="subway"><path d="M8.5,15A1,1 0 0,1 9.5,16A1,1 0 0,1 8.5,17A1,1 0 0,1 7.5,16A1,1 0 0,1 8.5,15M7,9H17V14H7V9M15.5,15A1,1 0 0,1 16.5,16A1,1 0 0,1 15.5,17A1,1 0 0,1 14.5,16A1,1 0 0,1 15.5,15M18,15.88V9C18,6.38 15.32,6 12,6C9,6 6,6.37 6,9V15.88A2.62,2.62 0 0,0 8.62,18.5L7.5,19.62V20H9.17L10.67,18.5H13.5L15,20H16.5V19.62L15.37,18.5C16.82,18.5 18,17.33 18,15.88M17.8,2.8C20.47,3.84 22,6.05 22,8.86V22H2V8.86C2,6.05 3.53,3.84 6.2,2.8C8,2.09 10.14,2 12,2C13.86,2 16,2.09 17.8,2.8Z" /></g><g id="subway-variant"><path d="M18,11H13V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M11,11H6V6H11M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M12,2C7.58,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2Z" /></g><g id="sunglasses"><path d="M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17Z" /></g><g id="surround-sound"><path d="M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M7.76,16.24L6.35,17.65C4.78,16.1 4,14.05 4,12C4,9.95 4.78,7.9 6.34,6.34L7.75,7.75C6.59,8.93 6,10.46 6,12C6,13.54 6.59,15.07 7.76,16.24M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M17.66,17.66L16.25,16.25C17.41,15.07 18,13.54 18,12C18,10.46 17.41,8.93 16.24,7.76L17.65,6.35C19.22,7.9 20,9.95 20,12C20,14.05 19.22,16.1 17.66,17.66M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="swap-horizontal"><path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z" /></g><g id="swap-vertical"><path d="M9,3L5,7H8V14H10V7H13M16,17V10H14V17H11L15,21L19,17H16Z" /></g><g id="swim"><path d="M2,18C4.22,17 6.44,16 8.67,16C10.89,16 13.11,18 15.33,18C17.56,18 19.78,16 22,16V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V18M8.67,13C7.89,13 7.12,13.12 6.35,13.32L11.27,9.88L10.23,8.64C10.09,8.47 10,8.24 10,8C10,7.66 10.17,7.35 10.44,7.17L16.16,3.17L17.31,4.8L12.47,8.19L17.7,14.42C16.91,14.75 16.12,15 15.33,15C13.11,15 10.89,13 8.67,13M18,7A2,2 0 0,1 20,9A2,2 0 0,1 18,11A2,2 0 0,1 16,9A2,2 0 0,1 18,7Z" /></g><g id="switch"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H8A1,1 0 0,1 7,15V3A1,1 0 0,1 8,2H16A1,1 0 0,1 17,3V15A1,1 0 0,1 16,16H13V18M13,6H14V4H13V6M9,4V6H11V4H9M9,8V10H11V8H9M9,12V14H11V12H9Z" /></g><g id="sword"><path d="M6.92,5H5L14,14L15,13.06M19.96,19.12L19.12,19.96C18.73,20.35 18.1,20.35 17.71,19.96L14.59,16.84L11.91,19.5L10.5,18.09L11.92,16.67L3,7.75V3H7.75L16.67,11.92L18.09,10.5L19.5,11.91L16.83,14.58L19.95,17.7C20.35,18.1 20.35,18.73 19.96,19.12Z" /></g><g id="sync"><path d="M12,18A6,6 0 0,1 6,12C6,11 6.25,10.03 6.7,9.2L5.24,7.74C4.46,8.97 4,10.43 4,12A8,8 0 0,0 12,20V23L16,19L12,15M12,4V1L8,5L12,9V6A6,6 0 0,1 18,12C18,13 17.75,13.97 17.3,14.8L18.76,16.26C19.54,15.03 20,13.57 20,12A8,8 0 0,0 12,4Z" /></g><g id="sync-alert"><path d="M11,13H13V7H11M21,4H15V10L17.24,7.76C18.32,8.85 19,10.34 19,12C19,14.61 17.33,16.83 15,17.65V19.74C18.45,18.85 21,15.73 21,12C21,9.79 20.09,7.8 18.64,6.36M11,17H13V15H11M3,12C3,14.21 3.91,16.2 5.36,17.64L3,20H9V14L6.76,16.24C5.68,15.15 5,13.66 5,12C5,9.39 6.67,7.17 9,6.35V4.26C5.55,5.15 3,8.27 3,12Z" /></g><g id="sync-off"><path d="M20,4H14V10L16.24,7.76C17.32,8.85 18,10.34 18,12C18,13 17.75,13.94 17.32,14.77L18.78,16.23C19.55,15 20,13.56 20,12C20,9.79 19.09,7.8 17.64,6.36L20,4M2.86,5.41L5.22,7.77C4.45,9 4,10.44 4,12C4,14.21 4.91,16.2 6.36,17.64L4,20H10V14L7.76,16.24C6.68,15.15 6,13.66 6,12C6,11 6.25,10.06 6.68,9.23L14.76,17.31C14.5,17.44 14.26,17.56 14,17.65V19.74C14.79,19.53 15.54,19.2 16.22,18.78L18.58,21.14L19.85,19.87L4.14,4.14L2.86,5.41M10,6.35V4.26C9.2,4.47 8.45,4.8 7.77,5.22L9.23,6.68C9.5,6.56 9.73,6.44 10,6.35Z" /></g><g id="tab"><path d="M19,19H5V5H12V9H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="tab-unselected"><path d="M15,21H17V19H15M11,21H13V19H11M19,13H21V11H19M19,21A2,2 0 0,0 21,19H19M7,5H9V3H7M19,17H21V15H19M19,3H11V9H21V5C21,3.89 20.1,3 19,3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M7,21H9V19H7M3,5H5V3C3.89,3 3,3.89 3,5M3,13H5V11H3M3,9H5V7H3V9Z" /></g><g id="table"><path d="M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z" /></g><g id="table-column-plus-after"><path d="M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z" /></g><g id="table-column-plus-before"><path d="M13,2A2,2 0 0,0 11,4V20A2,2 0 0,0 13,22H22V2H13M20,10V14H13V10H20M20,16V20H13V16H20M20,4V8H13V4H20M9,11H6V8H4V11H1V13H4V16H6V13H9V11Z" /></g><g id="table-column-remove"><path d="M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z" /></g><g id="table-column-width"><path d="M5,8H19A2,2 0 0,1 21,10V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V10A2,2 0 0,1 5,8M5,12V15H11V12H5M13,12V15H19V12H13M5,17V20H11V17H5M13,17V20H19V17H13M11,2H21V6H19V4H13V6H11V2Z" /></g><g id="table-edit"><path d="M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.08 20.21,11.08 20.42,11.3L21.7,12.58C21.92,12.79 21.92,13.14 21.7,13.35M12,18.94L18.07,12.88L20.12,14.93L14.06,21H12V18.94M4,2H18A2,2 0 0,1 20,4V8.17L16.17,12H12V16.17L10.17,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,6V10H10V6H4M12,6V10H18V6H12M4,12V16H10V12H4Z" /></g><g id="table-large"><path d="M4,3H20A2,2 0 0,1 22,5V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V5A2,2 0 0,1 4,3M4,7V10H8V7H4M10,7V10H14V7H10M20,10V7H16V10H20M4,12V15H8V12H4M4,20H8V17H4V20M10,12V15H14V12H10M10,20H14V17H10V20M20,20V17H16V20H20M20,12H16V15H20V12Z" /></g><g id="table-row-height"><path d="M3,5H15A2,2 0 0,1 17,7V17A2,2 0 0,1 15,19H3A2,2 0 0,1 1,17V7A2,2 0 0,1 3,5M3,9V12H8V9H3M10,9V12H15V9H10M3,14V17H8V14H3M10,14V17H15V14H10M23,14V7H19V9H21V12H19V14H23Z" /></g><g id="table-row-plus-after"><path d="M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z" /></g><g id="table-row-plus-before"><path d="M22,14A2,2 0 0,0 20,12H4A2,2 0 0,0 2,14V21H4V19H8V21H10V19H14V21H16V19H20V21H22V14M4,14H8V17H4V14M10,14H14V17H10V14M20,14V17H16V14H20M11,10H13V7H16V5H13V2H11V5H8V7H11V10Z" /></g><g id="table-row-remove"><path d="M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z" /></g><g id="tablet"><path d="M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4Z" /></g><g id="tablet-android"><path d="M19.25,19H4.75V3H19.25M14,22H10V21H14M18,0H6A3,3 0 0,0 3,3V21A3,3 0 0,0 6,24H18A3,3 0 0,0 21,21V3A3,3 0 0,0 18,0Z" /></g><g id="tablet-ipad"><path d="M19,19H4V3H19M11.5,23A1.5,1.5 0 0,1 10,21.5A1.5,1.5 0 0,1 11.5,20A1.5,1.5 0 0,1 13,21.5A1.5,1.5 0 0,1 11.5,23M18.5,0H4.5A2.5,2.5 0 0,0 2,2.5V21.5A2.5,2.5 0 0,0 4.5,24H18.5A2.5,2.5 0 0,0 21,21.5V2.5A2.5,2.5 0 0,0 18.5,0Z" /></g><g id="tag"><path d="M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z" /></g><g id="tag-faces"><path d="M15,18C11.68,18 9,15.31 9,12C9,8.68 11.68,6 15,6A6,6 0 0,1 21,12A6,6 0 0,1 15,18M4,13A1,1 0 0,1 3,12A1,1 0 0,1 4,11A1,1 0 0,1 5,12A1,1 0 0,1 4,13M22,3H7.63C6.97,3 6.38,3.32 6,3.81L0,12L6,20.18C6.38,20.68 6.97,21 7.63,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3M13,11A1,1 0 0,0 14,10A1,1 0 0,0 13,9A1,1 0 0,0 12,10A1,1 0 0,0 13,11M15,16C16.86,16 18.35,14.72 18.8,13H11.2C11.65,14.72 13.14,16 15,16M17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11Z" /></g><g id="tag-heart"><path d="M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M17.27,15.27L13,19.54L8.73,15.27C8.28,14.81 8,14.19 8,13.5A2.5,2.5 0 0,1 10.5,11C11.19,11 11.82,11.28 12.27,11.74L13,12.46L13.73,11.73C14.18,11.28 14.81,11 15.5,11A2.5,2.5 0 0,1 18,13.5C18,14.19 17.72,14.82 17.27,15.27Z" /></g><g id="tag-multiple"><path d="M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z" /></g><g id="tag-outline"><path d="M5.5,7A1.5,1.5 0 0,0 7,5.5A1.5,1.5 0 0,0 5.5,4A1.5,1.5 0 0,0 4,5.5A1.5,1.5 0 0,0 5.5,7M21.41,11.58C21.77,11.94 22,12.44 22,13C22,13.55 21.78,14.05 21.41,14.41L14.41,21.41C14.05,21.77 13.55,22 13,22C12.45,22 11.95,21.77 11.58,21.41L2.59,12.41C2.22,12.05 2,11.55 2,11V4C2,2.89 2.89,2 4,2H11C11.55,2 12.05,2.22 12.41,2.58L21.41,11.58M13,20L20,13L11.5,4.5L4.5,11.5L13,20Z" /></g><g id="tag-text-outline"><path d="M5.5,7A1.5,1.5 0 0,0 7,5.5A1.5,1.5 0 0,0 5.5,4A1.5,1.5 0 0,0 4,5.5A1.5,1.5 0 0,0 5.5,7M21.41,11.58C21.77,11.94 22,12.44 22,13C22,13.55 21.78,14.05 21.41,14.41L14.41,21.41C14.05,21.77 13.55,22 13,22C12.45,22 11.95,21.77 11.58,21.41L2.59,12.41C2.22,12.05 2,11.55 2,11V4C2,2.89 2.89,2 4,2H11C11.55,2 12.05,2.22 12.41,2.58L21.41,11.58M13,20L20,13L11.5,4.5L4.5,11.5L13,20M10.09,8.91L11.5,7.5L17,13L15.59,14.41L10.09,8.91M7.59,11.41L9,10L13,14L11.59,15.41L7.59,11.41Z" /></g><g id="target"><path d="M11,2V4.07C7.38,4.53 4.53,7.38 4.07,11H2V13H4.07C4.53,16.62 7.38,19.47 11,19.93V22H13V19.93C16.62,19.47 19.47,16.62 19.93,13H22V11H19.93C19.47,7.38 16.62,4.53 13,4.07V2M11,6.08V8H13V6.09C15.5,6.5 17.5,8.5 17.92,11H16V13H17.91C17.5,15.5 15.5,17.5 13,17.92V16H11V17.91C8.5,17.5 6.5,15.5 6.08,13H8V11H6.09C6.5,8.5 8.5,6.5 11,6.08M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11Z" /></g><g id="taxi"><path d="M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H15V3H9V5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z" /></g><g id="teamviewer"><path d="M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M7,12L10,9V11H14V9L17,12L14,15V13H10V15L7,12Z" /></g><g id="telegram"><path d="M9.78,18.65L10.06,14.42L17.74,7.5C18.08,7.19 17.67,7.04 17.22,7.31L7.74,13.3L3.64,12C2.76,11.75 2.75,11.14 3.84,10.7L19.81,4.54C20.54,4.21 21.24,4.72 20.96,5.84L18.24,18.65C18.05,19.56 17.5,19.78 16.74,19.36L12.6,16.3L10.61,18.23C10.38,18.46 10.19,18.65 9.78,18.65Z" /></g><g id="television"><path d="M20,17H4V5H20M20,3H4C2.89,3 2,3.89 2,5V17A2,2 0 0,0 4,19H8V21H16V19H20A2,2 0 0,0 22,17V5C22,3.89 21.1,3 20,3Z" /></g><g id="television-guide"><path d="M21,17V5H3V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H16V21H8V19H3A2,2 0 0,1 1,17V5A2,2 0 0,1 3,3H21M5,7H11V11H5V7M5,13H11V15H5V13M13,7H19V9H13V7M13,11H19V15H13V11Z" /></g><g id="temperature-celsius"><path d="M16.5,5C18.05,5 19.5,5.47 20.69,6.28L19.53,9.17C18.73,8.44 17.67,8 16.5,8C14,8 12,10 12,12.5C12,15 14,17 16.5,17C17.53,17 18.47,16.66 19.23,16.08L20.37,18.93C19.24,19.61 17.92,20 16.5,20A7.5,7.5 0 0,1 9,12.5A7.5,7.5 0 0,1 16.5,5M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z" /></g><g id="temperature-fahrenheit"><path d="M11,20V5H20V8H14V11H19V14H14V20H11M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z" /></g><g id="temperature-kelvin"><path d="M7,5H10V11L15,5H19L13.88,10.78L19,20H15.38L11.76,13.17L10,15.15V20H7V5Z" /></g><g id="tennis"><path d="M12,2C14.5,2 16.75,2.9 18.5,4.4C16.36,6.23 15,8.96 15,12C15,15.04 16.36,17.77 18.5,19.6C16.75,21.1 14.5,22 12,22C9.5,22 7.25,21.1 5.5,19.6C7.64,17.77 9,15.04 9,12C9,8.96 7.64,6.23 5.5,4.4C7.25,2.9 9.5,2 12,2M22,12C22,14.32 21.21,16.45 19.88,18.15C18.12,16.68 17,14.47 17,12C17,9.53 18.12,7.32 19.88,5.85C21.21,7.55 22,9.68 22,12M2,12C2,9.68 2.79,7.55 4.12,5.85C5.88,7.32 7,9.53 7,12C7,14.47 5.88,16.68 4.12,18.15C2.79,16.45 2,14.32 2,12Z" /></g><g id="tent"><path d="M4,6C4,7.19 4.39,8.27 5,9A3,3 0 0,1 2,6A3,3 0 0,1 5,3C4.39,3.73 4,4.81 4,6M2,21V19H4.76L12,4.78L19.24,19H22V21H2M12,9.19L7,19H17L12,9.19Z" /></g><g id="terrain"><path d="M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z" /></g><g id="test-tube"><path d="M7,2V4H8V18A4,4 0 0,0 12,22A4,4 0 0,0 16,18V4H17V2H7M11,16C10.4,16 10,15.6 10,15C10,14.4 10.4,14 11,14C11.6,14 12,14.4 12,15C12,15.6 11.6,16 11,16M13,12C12.4,12 12,11.6 12,11C12,10.4 12.4,10 13,10C13.6,10 14,10.4 14,11C14,11.6 13.6,12 13,12M14,7H10V4H14V7Z" /></g><g id="text-shadow"><path d="M3,3H16V6H11V18H8V6H3V3M12,7H14V9H12V7M15,7H17V9H15V7M18,7H20V9H18V7M12,10H14V12H12V10M12,13H14V15H12V13M12,16H14V18H12V16M12,19H14V21H12V19Z" /></g><g id="text-to-speech"><path d="M8,7A2,2 0 0,1 10,9V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9A2,2 0 0,1 8,7M14,14C14,16.97 11.84,19.44 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18A4,4 0 0,0 12,14H14M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z" /></g><g id="text-to-speech-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L13.38,16.65C12.55,18.35 10.93,19.59 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18C9.82,18 11.36,16.78 11.84,15.11L10,13.27V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9.27L2,5.27M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z" /></g><g id="textbox"><path d="M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20Z" /></g><g id="texture"><path d="M9.29,21H12.12L21,12.12V9.29M19,21C19.55,21 20.05,20.78 20.41,20.41C20.78,20.05 21,19.55 21,19V17L17,21M5,3A2,2 0 0,0 3,5V7L7,3M11.88,3L3,11.88V14.71L14.71,3M19.5,3.08L3.08,19.5C3.17,19.85 3.35,20.16 3.59,20.41C3.84,20.65 4.15,20.83 4.5,20.92L20.93,4.5C20.74,3.8 20.2,3.26 19.5,3.08Z" /></g><g id="theater"><path d="M4,15H6A2,2 0 0,1 8,17V19H9V17A2,2 0 0,1 11,15H13A2,2 0 0,1 15,17V19H16V17A2,2 0 0,1 18,15H20A2,2 0 0,1 22,17V19H23V22H1V19H2V17A2,2 0 0,1 4,15M11,7L15,10L11,13V7M4,2H20A2,2 0 0,1 22,4V13.54C21.41,13.19 20.73,13 20,13V4H4V13C3.27,13 2.59,13.19 2,13.54V4A2,2 0 0,1 4,2Z" /></g><g id="theme-light-dark"><path d="M7.5,2C5.71,3.15 4.5,5.18 4.5,7.5C4.5,9.82 5.71,11.85 7.53,13C4.46,13 2,10.54 2,7.5A5.5,5.5 0 0,1 7.5,2M19.07,3.5L20.5,4.93L4.93,20.5L3.5,19.07L19.07,3.5M12.89,5.93L11.41,5L9.97,6L10.39,4.3L9,3.24L10.75,3.12L11.33,1.47L12,3.1L13.73,3.13L12.38,4.26L12.89,5.93M9.59,9.54L8.43,8.81L7.31,9.59L7.65,8.27L6.56,7.44L7.92,7.35L8.37,6.06L8.88,7.33L10.24,7.36L9.19,8.23L9.59,9.54M19,13.5A5.5,5.5 0 0,1 13.5,19C12.28,19 11.15,18.6 10.24,17.93L17.93,10.24C18.6,11.15 19,12.28 19,13.5M14.6,20.08L17.37,18.93L17.13,22.28L14.6,20.08M18.93,17.38L20.08,14.61L22.28,17.15L18.93,17.38M20.08,12.42L18.94,9.64L22.28,9.88L20.08,12.42M9.63,18.93L12.4,20.08L9.87,22.27L9.63,18.93Z" /></g><g id="thermometer"><path d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11Z" /></g><g id="thermometer-lines"><path d="M17,3H21V5H17V3M17,7H21V9H17V7M17,11H21V13H17.75L17,12.1V11M21,15V17H19C19,16.31 18.9,15.63 18.71,15H21M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11M7,3V5H3V3H7M7,7V9H3V7H7M7,11V12.1L6.25,13H3V11H7M3,15H5.29C5.1,15.63 5,16.31 5,17H3V15Z" /></g><g id="thumb-down"><path d="M19,15H23V3H19M15,3H6C5.17,3 4.46,3.5 4.16,4.22L1.14,11.27C1.05,11.5 1,11.74 1,12V13.91L1,14A2,2 0 0,0 3,16H9.31L8.36,20.57C8.34,20.67 8.33,20.77 8.33,20.88C8.33,21.3 8.5,21.67 8.77,21.94L9.83,23L16.41,16.41C16.78,16.05 17,15.55 17,15V5C17,3.89 16.1,3 15,3Z" /></g><g id="thumb-down-outline"><path d="M19,15V3H23V15H19M15,3A2,2 0 0,1 17,5V15C17,15.55 16.78,16.05 16.41,16.41L9.83,23L8.77,21.94C8.5,21.67 8.33,21.3 8.33,20.88L8.36,20.57L9.31,16H3C1.89,16 1,15.1 1,14V13.91L1,12C1,11.74 1.05,11.5 1.14,11.27L4.16,4.22C4.46,3.5 5.17,3 6,3H15M15,5H5.97L3,12V14H11.78L10.65,19.32L15,14.97V5Z" /></g><g id="thumb-up"><path d="M23,10C23,8.89 22.1,8 21,8H14.68L15.64,3.43C15.66,3.33 15.67,3.22 15.67,3.11C15.67,2.7 15.5,2.32 15.23,2.05L14.17,1L7.59,7.58C7.22,7.95 7,8.45 7,9V19A2,2 0 0,0 9,21H18C18.83,21 19.54,20.5 19.84,19.78L22.86,12.73C22.95,12.5 23,12.26 23,12V10.08L23,10M1,21H5V9H1V21Z" /></g><g id="thumb-up-outline"><path d="M5,9V21H1V9H5M9,21A2,2 0 0,1 7,19V9C7,8.45 7.22,7.95 7.59,7.59L14.17,1L15.23,2.06C15.5,2.33 15.67,2.7 15.67,3.11L15.64,3.43L14.69,8H21C22.11,8 23,8.9 23,10V10.09L23,12C23,12.26 22.95,12.5 22.86,12.73L19.84,19.78C19.54,20.5 18.83,21 18,21H9M9,19H18.03L21,12V10H12.21L13.34,4.68L9,9.03V19Z" /></g><g id="thumbs-up-down"><path d="M22.5,10.5H15.75C15.13,10.5 14.6,10.88 14.37,11.41L12.11,16.7C12.04,16.87 12,17.06 12,17.25V18.5A1,1 0 0,0 13,19.5H18.18L17.5,22.68V22.92C17.5,23.23 17.63,23.5 17.83,23.72L18.62,24.5L23.56,19.56C23.83,19.29 24,18.91 24,18.5V12A1.5,1.5 0 0,0 22.5,10.5M12,6.5A1,1 0 0,0 11,5.5H5.82L6.5,2.32V2.09C6.5,1.78 6.37,1.5 6.17,1.29L5.38,0.5L0.44,5.44C0.17,5.71 0,6.09 0,6.5V13A1.5,1.5 0 0,0 1.5,14.5H8.25C8.87,14.5 9.4,14.12 9.63,13.59L11.89,8.3C11.96,8.13 12,7.94 12,7.75V6.5Z" /></g><g id="ticket"><path d="M15.58,16.8L12,14.5L8.42,16.8L9.5,12.68L6.21,10L10.46,9.74L12,5.8L13.54,9.74L17.79,10L14.5,12.68M20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12Z" /></g><g id="ticket-account"><path d="M20,12A2,2 0 0,0 22,14V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V14C3.11,14 4,13.1 4,12A2,2 0 0,0 2,10V6C2,4.89 2.9,4 4,4H20A2,2 0 0,1 22,6V10A2,2 0 0,0 20,12M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5V16.25M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z" /></g><g id="ticket-confirmation"><path d="M13,8.5H11V6.5H13V8.5M13,13H11V11H13V13M13,17.5H11V15.5H13V17.5M22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10Z" /></g><g id="ticket-percent"><path d="M4,4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4M15.5,7L17,8.5L8.5,17L7,15.5L15.5,7M8.81,7.04C9.79,7.04 10.58,7.83 10.58,8.81A1.77,1.77 0 0,1 8.81,10.58C7.83,10.58 7.04,9.79 7.04,8.81A1.77,1.77 0 0,1 8.81,7.04M15.19,13.42C16.17,13.42 16.96,14.21 16.96,15.19A1.77,1.77 0 0,1 15.19,16.96C14.21,16.96 13.42,16.17 13.42,15.19A1.77,1.77 0 0,1 15.19,13.42Z" /></g><g id="tie"><path d="M6,2L10,6L7,17L12,22L17,17L14,6L18,2Z" /></g><g id="tilde"><path d="M2,15C2,15 2,9 8,9C12,9 12.5,12.5 15.5,12.5C19.5,12.5 19.5,9 19.5,9H22C22,9 22,15 16,15C12,15 10.5,11.5 8.5,11.5C4.5,11.5 4.5,15 4.5,15H2" /></g><g id="timelapse"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.24,7.76C15.07,6.58 13.53,6 12,6V12L7.76,16.24C10.1,18.58 13.9,18.58 16.24,16.24C18.59,13.9 18.59,10.1 16.24,7.76Z" /></g><g id="timer"><path d="M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M19.03,7.39L20.45,5.97C20,5.46 19.55,5 19.04,4.56L17.62,6C16.07,4.74 14.12,4 12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C17,22 21,17.97 21,13C21,10.88 20.26,8.93 19.03,7.39M11,14H13V8H11M15,1H9V3H15V1Z" /></g><g id="timer-10"><path d="M12.9,13.22C12.9,13.82 12.86,14.33 12.78,14.75C12.7,15.17 12.58,15.5 12.42,15.77C12.26,16.03 12.06,16.22 11.83,16.34C11.6,16.46 11.32,16.5 11,16.5C10.71,16.5 10.43,16.46 10.19,16.34C9.95,16.22 9.75,16.03 9.59,15.77C9.43,15.5 9.3,15.17 9.21,14.75C9.12,14.33 9.08,13.82 9.08,13.22V10.72C9.08,10.12 9.12,9.61 9.21,9.2C9.3,8.79 9.42,8.46 9.59,8.2C9.75,7.95 9.95,7.77 10.19,7.65C10.43,7.54 10.7,7.5 11,7.5C11.31,7.5 11.58,7.54 11.81,7.65C12.05,7.76 12.25,7.94 12.41,8.2C12.57,8.45 12.7,8.78 12.78,9.19C12.86,9.6 12.91,10.11 12.91,10.71V13.22M13.82,7.05C13.5,6.65 13.07,6.35 12.59,6.17C12.12,6 11.58,5.9 11,5.9C10.42,5.9 9.89,6 9.41,6.17C8.93,6.35 8.5,6.64 8.18,7.05C7.84,7.46 7.58,8 7.39,8.64C7.21,9.29 7.11,10.09 7.11,11.03V12.95C7.11,13.89 7.2,14.69 7.39,15.34C7.58,16 7.84,16.53 8.19,16.94C8.53,17.35 8.94,17.65 9.42,17.83C9.9,18 10.43,18.11 11,18.11C11.6,18.11 12.13,18 12.6,17.83C13.08,17.65 13.5,17.35 13.82,16.94C14.16,16.53 14.42,16 14.6,15.34C14.78,14.69 14.88,13.89 14.88,12.95V11.03C14.88,10.09 14.79,9.29 14.6,8.64C14.42,8 14.16,7.45 13.82,7.05M23.78,14.37C23.64,14.09 23.43,13.84 23.15,13.63C22.87,13.42 22.54,13.24 22.14,13.1C21.74,12.96 21.29,12.83 20.79,12.72C20.44,12.65 20.15,12.57 19.92,12.5C19.69,12.41 19.5,12.33 19.37,12.24C19.23,12.15 19.14,12.05 19.09,11.94C19.04,11.83 19,11.7 19,11.55C19,11.41 19.04,11.27 19.1,11.14C19.16,11 19.25,10.89 19.37,10.8C19.5,10.7 19.64,10.62 19.82,10.56C20,10.5 20.22,10.47 20.46,10.47C20.71,10.47 20.93,10.5 21.12,10.58C21.31,10.65 21.47,10.75 21.6,10.87C21.73,11 21.82,11.13 21.89,11.29C21.95,11.45 22,11.61 22,11.78H23.94C23.94,11.39 23.86,11.03 23.7,10.69C23.54,10.35 23.31,10.06 23,9.81C22.71,9.56 22.35,9.37 21.92,9.22C21.5,9.07 21,9 20.46,9C19.95,9 19.5,9.07 19.07,9.21C18.66,9.35 18.3,9.54 18,9.78C17.72,10 17.5,10.3 17.34,10.62C17.18,10.94 17.11,11.27 17.11,11.63C17.11,12 17.19,12.32 17.34,12.59C17.5,12.87 17.7,13.11 18,13.32C18.25,13.53 18.58,13.7 18.96,13.85C19.34,14 19.77,14.11 20.23,14.21C20.62,14.29 20.94,14.38 21.18,14.47C21.42,14.56 21.61,14.66 21.75,14.76C21.88,14.86 21.97,15 22,15.1C22.07,15.22 22.09,15.35 22.09,15.5C22.09,15.81 21.96,16.06 21.69,16.26C21.42,16.46 21.03,16.55 20.5,16.55C20.3,16.55 20.09,16.53 19.88,16.47C19.67,16.42 19.5,16.34 19.32,16.23C19.15,16.12 19,15.97 18.91,15.79C18.8,15.61 18.74,15.38 18.73,15.12H16.84C16.84,15.5 16.92,15.83 17.08,16.17C17.24,16.5 17.47,16.82 17.78,17.1C18.09,17.37 18.47,17.59 18.93,17.76C19.39,17.93 19.91,18 20.5,18C21.04,18 21.5,17.95 21.95,17.82C22.38,17.69 22.75,17.5 23.06,17.28C23.37,17.05 23.6,16.77 23.77,16.45C23.94,16.13 24,15.78 24,15.39C24,15 23.93,14.65 23.78,14.37M0,7.72V9.4L3,8.4V18H5V6H4.75L0,7.72Z" /></g><g id="timer-3"><path d="M20.87,14.37C20.73,14.09 20.5,13.84 20.24,13.63C19.96,13.42 19.63,13.24 19.23,13.1C18.83,12.96 18.38,12.83 17.88,12.72C17.53,12.65 17.24,12.57 17,12.5C16.78,12.41 16.6,12.33 16.46,12.24C16.32,12.15 16.23,12.05 16.18,11.94C16.13,11.83 16.1,11.7 16.1,11.55C16.1,11.4 16.13,11.27 16.19,11.14C16.25,11 16.34,10.89 16.46,10.8C16.58,10.7 16.73,10.62 16.91,10.56C17.09,10.5 17.31,10.47 17.55,10.47C17.8,10.47 18,10.5 18.21,10.58C18.4,10.65 18.56,10.75 18.69,10.87C18.82,11 18.91,11.13 19,11.29C19.04,11.45 19.08,11.61 19.08,11.78H21.03C21.03,11.39 20.95,11.03 20.79,10.69C20.63,10.35 20.4,10.06 20.1,9.81C19.8,9.56 19.44,9.37 19,9.22C18.58,9.07 18.09,9 17.55,9C17.04,9 16.57,9.07 16.16,9.21C15.75,9.35 15.39,9.54 15.1,9.78C14.81,10 14.59,10.3 14.43,10.62C14.27,10.94 14.2,11.27 14.2,11.63C14.2,12 14.28,12.31 14.43,12.59C14.58,12.87 14.8,13.11 15.07,13.32C15.34,13.53 15.67,13.7 16.05,13.85C16.43,14 16.86,14.11 17.32,14.21C17.71,14.29 18.03,14.38 18.27,14.47C18.5,14.56 18.7,14.66 18.84,14.76C18.97,14.86 19.06,15 19.11,15.1C19.16,15.22 19.18,15.35 19.18,15.5C19.18,15.81 19.05,16.06 18.78,16.26C18.5,16.46 18.12,16.55 17.61,16.55C17.39,16.55 17.18,16.53 16.97,16.47C16.76,16.42 16.57,16.34 16.41,16.23C16.24,16.12 16.11,15.97 16,15.79C15.89,15.61 15.83,15.38 15.82,15.12H13.93C13.93,15.5 14,15.83 14.17,16.17C14.33,16.5 14.56,16.82 14.87,17.1C15.18,17.37 15.56,17.59 16,17.76C16.5,17.93 17,18 17.6,18C18.13,18 18.61,17.95 19.04,17.82C19.47,17.69 19.84,17.5 20.15,17.28C20.46,17.05 20.69,16.77 20.86,16.45C21.03,16.13 21.11,15.78 21.11,15.39C21.09,15 21,14.65 20.87,14.37M11.61,12.97C11.45,12.73 11.25,12.5 11,12.32C10.74,12.13 10.43,11.97 10.06,11.84C10.36,11.7 10.63,11.54 10.86,11.34C11.09,11.14 11.28,10.93 11.43,10.7C11.58,10.47 11.7,10.24 11.77,10C11.85,9.75 11.88,9.5 11.88,9.26C11.88,8.71 11.79,8.22 11.6,7.8C11.42,7.38 11.16,7.03 10.82,6.74C10.5,6.46 10.09,6.24 9.62,6.1C9.17,5.97 8.65,5.9 8.09,5.9C7.54,5.9 7.03,6 6.57,6.14C6.1,6.31 5.7,6.54 5.37,6.83C5.04,7.12 4.77,7.46 4.59,7.86C4.39,8.25 4.3,8.69 4.3,9.15H6.28C6.28,8.89 6.33,8.66 6.42,8.46C6.5,8.26 6.64,8.08 6.8,7.94C6.97,7.8 7.16,7.69 7.38,7.61C7.6,7.53 7.84,7.5 8.11,7.5C8.72,7.5 9.17,7.65 9.47,7.96C9.77,8.27 9.91,8.71 9.91,9.28C9.91,9.55 9.87,9.8 9.79,10C9.71,10.24 9.58,10.43 9.41,10.59C9.24,10.75 9.03,10.87 8.78,10.96C8.53,11.05 8.23,11.09 7.89,11.09H6.72V12.66H7.9C8.24,12.66 8.54,12.7 8.81,12.77C9.08,12.85 9.31,12.96 9.5,13.12C9.69,13.28 9.84,13.5 9.94,13.73C10.04,13.97 10.1,14.27 10.1,14.6C10.1,15.22 9.92,15.69 9.57,16C9.22,16.35 8.73,16.5 8.12,16.5C7.83,16.5 7.56,16.47 7.32,16.38C7.08,16.3 6.88,16.18 6.71,16C6.54,15.86 6.41,15.68 6.32,15.46C6.23,15.24 6.18,15 6.18,14.74H4.19C4.19,15.29 4.3,15.77 4.5,16.19C4.72,16.61 5,16.96 5.37,17.24C5.73,17.5 6.14,17.73 6.61,17.87C7.08,18 7.57,18.08 8.09,18.08C8.66,18.08 9.18,18 9.67,17.85C10.16,17.7 10.58,17.47 10.93,17.17C11.29,16.87 11.57,16.5 11.77,16.07C11.97,15.64 12.07,15.14 12.07,14.59C12.07,14.3 12.03,14 11.96,13.73C11.88,13.5 11.77,13.22 11.61,12.97Z" /></g><g id="timer-off"><path d="M12,20A7,7 0 0,1 5,13C5,11.72 5.35,10.5 5.95,9.5L15.5,19.04C14.5,19.65 13.28,20 12,20M3,4L1.75,5.27L4.5,8.03C3.55,9.45 3,11.16 3,13A9,9 0 0,0 12,22C13.84,22 15.55,21.45 17,20.5L19.5,23L20.75,21.73L13.04,14L3,4M11,9.44L13,11.44V8H11M15,1H9V3H15M19.04,4.55L17.62,5.97C16.07,4.74 14.12,4 12,4C10.17,4 8.47,4.55 7.05,5.5L8.5,6.94C9.53,6.35 10.73,6 12,6A7,7 0 0,1 19,13C19,14.27 18.65,15.47 18.06,16.5L19.5,17.94C20.45,16.53 21,14.83 21,13C21,10.88 20.26,8.93 19.03,7.39L20.45,5.97L19.04,4.55Z" /></g><g id="timer-sand"><path d="M20,2V4H18V8.41L14.41,12L18,15.59V20H20V22H4V20H6V15.59L9.59,12L6,8.41V4H4V2H20M16,16.41L13,13.41V10.59L16,7.59V4H8V7.59L11,10.59V13.41L8,16.41V17H10L12,15L14,17H16V16.41M12,9L10,7H14L12,9Z" /></g><g id="timer-sand-empty"><path d="M20,2V4H18V8.41L14.41,12L18,15.59V20H20V22H4V20H6V15.59L9.59,12L6,8.41V4H4V2H20M16,16.41L13,13.41V10.59L16,7.59V4H8V7.59L11,10.59V13.41L8,16.41V20H16V16.41Z" /></g><g id="timetable"><path d="M14,12H15.5V14.82L17.94,16.23L17.19,17.53L14,15.69V12M4,2H18A2,2 0 0,1 20,4V10.1C21.24,11.36 22,13.09 22,15A7,7 0 0,1 15,22C13.09,22 11.36,21.24 10.1,20H4A2,2 0 0,1 2,18V4A2,2 0 0,1 4,2M4,15V18H8.67C8.24,17.09 8,16.07 8,15H4M4,8H10V5H4V8M18,8V5H12V8H18M4,13H8.29C8.63,11.85 9.26,10.82 10.1,10H4V13M15,10.15A4.85,4.85 0 0,0 10.15,15C10.15,17.68 12.32,19.85 15,19.85A4.85,4.85 0 0,0 19.85,15C19.85,12.32 17.68,10.15 15,10.15Z" /></g><g id="toggle-switch"><path d="M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17A5,5 0 0,1 12,12A5,5 0 0,1 17,7M4,14A2,2 0 0,1 2,12A2,2 0 0,1 4,10H10V14H4Z" /></g><g id="toggle-switch-off"><path d="M7,7A5,5 0 0,1 12,12A5,5 0 0,1 7,17A5,5 0 0,1 2,12A5,5 0 0,1 7,7M20,14H14V10H20A2,2 0 0,1 22,12A2,2 0 0,1 20,14M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15A3,3 0 0,0 10,12A3,3 0 0,0 7,9Z" /></g><g id="tooltip"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2Z" /></g><g id="tooltip-edit"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M18,14V12H12.5L10.5,14H18M6,14H8.5L15.35,7.12C15.55,6.93 15.55,6.61 15.35,6.41L13.59,4.65C13.39,4.45 13.07,4.45 12.88,4.65L6,11.53V14Z" /></g><g id="tooltip-image"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M19,15V7L15,11L13,9L7,15H19M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z" /></g><g id="tooltip-outline"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4Z" /></g><g id="tooltip-outline-plus"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z" /></g><g id="tooltip-text"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M5,5V7H19V5H5M5,9V11H15V9H5M5,13V15H17V13H5Z" /></g><g id="tooth"><path d="M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2M7,4C9,4 10,5 12,5C14,5 15,4 17,4C18.67,4 20,6 20,8C20,9.75 19.14,12.11 18.19,13.06C17.33,13.92 16.06,19.94 15.5,19.94C15.29,19.94 15,18.88 15,17.59C15,15.55 14.43,13 12,13C9.57,13 9,15.55 9,17.59C9,18.88 8.71,19.94 8.5,19.94C7.94,19.94 6.67,13.92 5.81,13.06C4.86,12.11 4,9.75 4,8C4,6 5.33,4 7,4Z" /></g><g id="tor"><path d="M12,14C11,14 9,15 9,16C9,18 12,18 12,18V17A1,1 0 0,1 11,16A1,1 0 0,1 12,15V14M12,19C12,19 8,18.5 8,16.5C8,13.5 11,12.75 12,12.75V11.5C11,11.5 7,13 7,16C7,20 12,20 12,20V19M10.07,7.03L11.26,7.56C11.69,5.12 12.84,3.5 12.84,3.5C12.41,4.53 12.13,5.38 11.95,6.05C13.16,3.55 15.61,2 15.61,2C14.43,3.18 13.56,4.46 12.97,5.53C14.55,3.85 16.74,2.75 16.74,2.75C14.05,4.47 12.84,7.2 12.54,7.96L13.09,8.04C13.09,8.56 13.09,9.04 13.34,9.42C14.1,11.31 18,11.47 18,16C18,20.53 13.97,22 11.83,22C9.69,22 5,21.03 5,16C5,10.97 9.95,10.93 10.83,8.92C10.95,8.54 10.07,7.03 10.07,7.03Z" /></g><g id="tower-beach"><path d="M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L18,1V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z" /></g><g id="tower-fire"><path d="M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L12,1L18,3V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z" /></g><g id="traffic-light"><path d="M12,9A2,2 0 0,1 10,7C10,5.89 10.9,5 12,5C13.11,5 14,5.89 14,7A2,2 0 0,1 12,9M12,14A2,2 0 0,1 10,12C10,10.89 10.9,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,19A2,2 0 0,1 10,17C10,15.89 10.9,15 12,15C13.11,15 14,15.89 14,17A2,2 0 0,1 12,19M20,10H17V8.86C18.72,8.41 20,6.86 20,5H17V4A1,1 0 0,0 16,3H8A1,1 0 0,0 7,4V5H4C4,6.86 5.28,8.41 7,8.86V10H4C4,11.86 5.28,13.41 7,13.86V15H4C4,16.86 5.28,18.41 7,18.86V20A1,1 0 0,0 8,21H16A1,1 0 0,0 17,20V18.86C18.72,18.41 20,16.86 20,15H17V13.86C18.72,13.41 20,11.86 20,10Z" /></g><g id="train"><path d="M18,10H6V5H18M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M4,15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V5C20,1.5 16.42,1 12,1C7.58,1 4,1.5 4,5V15.5Z" /></g><g id="tram"><path d="M17,18C16.4,18 16,17.6 16,17C16,16.4 16.4,16 17,16C17.6,16 18,16.4 18,17C18,17.6 17.6,18 17,18M6.7,10.7L7,7.3C7,6.6 7.6,6 8.3,6H15.6C16.4,6 17,6.6 17,7.3L17.3,10.6C17.3,11.3 16.7,11.9 16,11.9H8C7.3,12 6.7,11.4 6.7,10.7M7,18C6.4,18 6,17.6 6,17C6,16.4 6.4,16 7,16C7.6,16 8,16.4 8,17C8,17.6 7.6,18 7,18M19,6A2,2 0 0,0 17,4H15A2,2 0 0,0 13,2H11A2,2 0 0,0 9,4H7A2,2 0 0,0 5,6L4,18A2,2 0 0,0 6,20H8L7,22H17.1L16.1,20H18A2,2 0 0,0 20,18L19,6Z" /></g><g id="transcribe"><path d="M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M18,17V15H12.5L10.5,17H18M6,17H8.5L15.35,10.12C15.55,9.93 15.55,9.61 15.35,9.41L13.59,7.65C13.39,7.45 13.07,7.45 12.88,7.65L6,14.53V17Z" /></g><g id="transcribe-close"><path d="M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M18,15V13H12.5L10.5,15H18M6,15H8.5L15.35,8.12C15.55,7.93 15.55,7.61 15.35,7.42L13.59,5.65C13.39,5.45 13.07,5.45 12.88,5.65L6,12.53V15Z" /></g><g id="transfer"><path d="M3,8H5V16H3V8M7,8H9V16H7V8M11,8H13V16H11V8M15,19.25V4.75L22.25,12L15,19.25Z" /></g><g id="transit-transfer"><path d="M16.5,15.5H22V17H16.5V18.75L14,16.25L16.5,13.75V15.5M19.5,19.75V18L22,20.5L19.5,23V21.25H14V19.75H19.5M9.5,5.5A2,2 0 0,1 7.5,3.5A2,2 0 0,1 9.5,1.5A2,2 0 0,1 11.5,3.5A2,2 0 0,1 9.5,5.5M5.75,8.9L4,9.65V13H2V8.3L7.25,6.15C7.5,6.05 7.75,6 8,6C8.7,6 9.35,6.35 9.7,6.95L10.65,8.55C11.55,10 13.15,11 15,11V13C12.8,13 10.85,12 9.55,10.4L8.95,13.4L11,15.45V23H9V17L6.85,15L5.1,23H3L5.75,8.9Z" /></g><g id="translate"><path d="M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z" /></g><g id="treasure-chest"><path d="M5,4H19A3,3 0 0,1 22,7V11H15V10H9V11H2V7A3,3 0 0,1 5,4M11,11H13V13H11V11M2,12H9V13L11,15H13L15,13V12H22V20H2V12Z" /></g><g id="tree"><path d="M11,21V16.74C10.53,16.91 10.03,17 9.5,17C7,17 5,15 5,12.5C5,11.23 5.5,10.09 6.36,9.27C6.13,8.73 6,8.13 6,7.5C6,5 8,3 10.5,3C12.06,3 13.44,3.8 14.25,5C14.33,5 14.41,5 14.5,5A5.5,5.5 0 0,1 20,10.5A5.5,5.5 0 0,1 14.5,16C14,16 13.5,15.93 13,15.79V21H11Z" /></g><g id="trello"><path d="M4,3H20A1,1 0 0,1 21,4V20A1,1 0 0,1 20,21H4A1,1 0 0,1 3,20V4A1,1 0 0,1 4,3M5.5,5A0.5,0.5 0 0,0 5,5.5V17.5A0.5,0.5 0 0,0 5.5,18H10.5A0.5,0.5 0 0,0 11,17.5V5.5A0.5,0.5 0 0,0 10.5,5H5.5M13.5,5A0.5,0.5 0 0,0 13,5.5V11.5A0.5,0.5 0 0,0 13.5,12H18.5A0.5,0.5 0 0,0 19,11.5V5.5A0.5,0.5 0 0,0 18.5,5H13.5Z" /></g><g id="trending-down"><path d="M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z" /></g><g id="trending-neutral"><path d="M22,12L18,8V11H3V13H18V16L22,12Z" /></g><g id="trending-up"><path d="M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z" /></g><g id="triangle"><path d="M1,21H23L12,2" /></g><g id="triangle-outline"><path d="M12,2L1,21H23M12,6L19.53,19H4.47" /></g><g id="trophy"><path d="M20.2,2H19.5H18C17.1,2 16,3 16,4H8C8,3 6.9,2 6,2H4.5H3.8H2V11C2,12 3,13 4,13H6.2C6.6,15 7.9,16.7 11,17V19.1C8.8,19.3 8,20.4 8,21.7V22H16V21.7C16,20.4 15.2,19.3 13,19.1V17C16.1,16.7 17.4,15 17.8,13H20C21,13 22,12 22,11V2H20.2M4,11V4H6V6V11C5.1,11 4.3,11 4,11M20,11C19.7,11 18.9,11 18,11V6V4H20V11Z" /></g><g id="trophy-award"><path d="M15.2,10.7L16.6,16L12,12.2L7.4,16L8.8,10.8L4.6,7.3L10,7L12,2L14,7L19.4,7.3L15.2,10.7M14,19.1H13V16L12,15L11,16V19.1H10A2,2 0 0,0 8,21.1V22.1H16V21.1A2,2 0 0,0 14,19.1Z" /></g><g id="trophy-outline"><path d="M2,2V11C2,12 3,13 4,13H6.2C6.6,15 7.9,16.7 11,17V19.1C8.8,19.3 8,20.4 8,21.7V22H16V21.7C16,20.4 15.2,19.3 13,19.1V17C16.1,16.7 17.4,15 17.8,13H20C21,13 22,12 22,11V2H18C17.1,2 16,3 16,4H8C8,3 6.9,2 6,2H2M4,4H6V6L6,11H4V4M18,4H20V11H18V6L18,4M8,6H16V11.5C16,13.43 15.42,15 12,15C8.59,15 8,13.43 8,11.5V6Z" /></g><g id="trophy-variant"><path d="M20.2,4H20H17V2H7V4H4.5H3.8H2V11C2,12 3,13 4,13H7.2C7.6,14.9 8.6,16.6 11,16.9V19C8,19.2 8,20.3 8,21.6V22H16V21.7C16,20.4 16,19.3 13,19.1V17C15.5,16.7 16.5,15 16.8,13.1H20C21,13.1 22,12.1 22,11.1V4H20.2M4,11V6H7V8V11C5.6,11 4.4,11 4,11M20,11C19.6,11 18.4,11 17,11V6H18H20V11Z" /></g><g id="trophy-variant-outline"><path d="M7,2V4H2V11C2,12 3,13 4,13H7.2C7.6,14.9 8.6,16.6 11,16.9V19C8,19.2 8,20.3 8,21.6V22H16V21.7C16,20.4 16,19.3 13,19.1V17C15.5,16.7 16.5,15 16.8,13.1H20C21,13.1 22,12.1 22,11.1V4H17V2H7M9,4H15V12A3,3 0 0,1 12,15C10,15 9,13.66 9,12V4M4,6H7V8L7,11H4V6M17,6H20V11H17V6Z" /></g><g id="truck"><path d="M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M19.5,9.5L21.46,12H17V9.5M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M20,8H17V4H3C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8Z" /></g><g id="truck-delivery"><path d="M3,4A2,2 0 0,0 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8H17V4M10,6L14,10L10,14V11H4V9H10M17,9.5H19.5L21.47,12H17M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z" /></g><g id="truck-trailer"><path d="M22,15V17H10A3,3 0 0,1 7,20A3,3 0 0,1 4,17H2V6A2,2 0 0,1 4,4H17A2,2 0 0,1 19,6V15H22M7,16A1,1 0 0,0 6,17A1,1 0 0,0 7,18A1,1 0 0,0 8,17A1,1 0 0,0 7,16Z" /></g><g id="tshirt-crew"><path d="M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15.8,5.63 15.43,5.94 15,6.2C14.16,6.7 13.13,7 12,7C10.3,7 8.79,6.32 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z" /></g><g id="tshirt-v"><path d="M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10,6 12,7.25C14,6 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15,7 14,8.25 12,9.25C10,8.25 9,7 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z" /></g><g id="tumblr"><path d="M16,11H13V14.9C13,15.63 13.14,16 14.1,16H16V19C16,19 14.97,19.1 13.9,19.1C11.25,19.1 10,17.5 10,15.7V11H8V8.2C10.41,8 10.62,6.16 10.8,5H13V8H16M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="tumblr-reblog"><path d="M3.75,17L8,12.75V16H18V11.5L20,9.5V16A2,2 0 0,1 18,18H8V21.25L3.75,17M20.25,7L16,11.25V8H6V12.5L4,14.5V8A2,2 0 0,1 6,6H16V2.75L20.25,7Z" /></g><g id="tune"><path d="M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z" /></g><g id="tune-vertical"><path d="M5,3V12H3V14H5V21H7V14H9V12H7V3M11,3V8H9V10H11V21H13V10H15V8H13V3M17,3V14H15V16H17V21H19V16H21V14H19V3" /></g><g id="twitch"><path d="M4,2H22V14L17,19H13L10,22H7V19H2V6L4,2M20,13V4H6V16H9V19L12,16H17L20,13M15,7H17V12H15V7M12,7V12H10V7H12Z" /></g><g id="twitter"><path d="M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.7,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z" /></g><g id="twitter-box"><path d="M17.71,9.33C17.64,13.95 14.69,17.11 10.28,17.31C8.46,17.39 7.15,16.81 6,16.08C7.34,16.29 9,15.76 9.9,15C8.58,14.86 7.81,14.19 7.44,13.12C7.82,13.18 8.22,13.16 8.58,13.09C7.39,12.69 6.54,11.95 6.5,10.41C6.83,10.57 7.18,10.71 7.64,10.74C6.75,10.23 6.1,8.38 6.85,7.16C8.17,8.61 9.76,9.79 12.37,9.95C11.71,7.15 15.42,5.63 16.97,7.5C17.63,7.38 18.16,7.14 18.68,6.86C18.47,7.5 18.06,7.97 17.56,8.33C18.1,8.26 18.59,8.13 19,7.92C18.75,8.45 18.19,8.93 17.71,9.33M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="twitter-circle"><path d="M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="twitter-retweet"><path d="M6,5.75L10.25,10H7V16H13.5L15.5,18H7A2,2 0 0,1 5,16V10H1.75L6,5.75M18,18.25L13.75,14H17V8H10.5L8.5,6H17A2,2 0 0,1 19,8V14H22.25L18,18.25Z" /></g><g id="ubuntu"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14.34,7.74C14.92,8.07 15.65,7.87 16,7.3C16.31,6.73 16.12,6 15.54,5.66C14.97,5.33 14.23,5.5 13.9,6.1C13.57,6.67 13.77,7.41 14.34,7.74M11.88,15.5C11.35,15.5 10.85,15.39 10.41,15.18L9.57,16.68C10.27,17 11.05,17.22 11.88,17.22C12.37,17.22 12.83,17.15 13.28,17.03C13.36,16.54 13.64,16.1 14.1,15.84C14.56,15.57 15.08,15.55 15.54,15.72C16.43,14.85 17,13.66 17.09,12.33L15.38,12.31C15.22,14.1 13.72,15.5 11.88,15.5M11.88,8.5C13.72,8.5 15.22,9.89 15.38,11.69L17.09,11.66C17,10.34 16.43,9.15 15.54,8.28C15.08,8.45 14.55,8.42 14.1,8.16C13.64,7.9 13.36,7.45 13.28,6.97C12.83,6.85 12.37,6.78 11.88,6.78C11.05,6.78 10.27,6.97 9.57,7.32L10.41,8.82C10.85,8.61 11.35,8.5 11.88,8.5M8.37,12C8.37,10.81 8.96,9.76 9.86,9.13L9,7.65C7.94,8.36 7.15,9.43 6.83,10.69C7.21,11 7.45,11.47 7.45,12C7.45,12.53 7.21,13 6.83,13.31C7.15,14.56 7.94,15.64 9,16.34L9.86,14.87C8.96,14.24 8.37,13.19 8.37,12M14.34,16.26C13.77,16.59 13.57,17.32 13.9,17.9C14.23,18.47 14.97,18.67 15.54,18.34C16.12,18 16.31,17.27 16,16.7C15.65,16.12 14.92,15.93 14.34,16.26M5.76,10.8C5.1,10.8 4.56,11.34 4.56,12C4.56,12.66 5.1,13.2 5.76,13.2C6.43,13.2 6.96,12.66 6.96,12C6.96,11.34 6.43,10.8 5.76,10.8Z" /></g><g id="umbraco"><path d="M8.6,8.6L7.17,8.38C6.5,11.67 6.46,14.24 7.61,15.5C8.6,16.61 11.89,16.61 11.89,16.61C11.89,16.61 15.29,16.61 16.28,15.5C17.43,14.24 17.38,11.67 16.72,8.38L15.29,8.6C15.29,8.6 16.54,13.88 14.69,14.69C13.81,15.07 11.89,15.07 11.89,15.07C11.89,15.07 10.08,15.07 9.2,14.69C7.35,13.88 8.6,8.6 8.6,8.6M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3Z" /></g><g id="umbrella"><path d="M12,2A9,9 0 0,0 3,11H11V19A1,1 0 0,1 10,20A1,1 0 0,1 9,19H7A3,3 0 0,0 10,22A3,3 0 0,0 13,19V11H21A9,9 0 0,0 12,2Z" /></g><g id="umbrella-outline"><path d="M12,4C15.09,4 17.82,6.04 18.7,9H5.3C6.18,6.03 8.9,4 12,4M12,2A9,9 0 0,0 3,11H11V19A1,1 0 0,1 10,20A1,1 0 0,1 9,19H7A3,3 0 0,0 10,22A3,3 0 0,0 13,19V11H21A9,9 0 0,0 12,2Z" /></g><g id="undo"><path d="M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z" /></g><g id="undo-variant"><path d="M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z" /></g><g id="unfold-less"><path d="M16.59,5.41L15.17,4L12,7.17L8.83,4L7.41,5.41L12,10M7.41,18.59L8.83,20L12,16.83L15.17,20L16.58,18.59L12,14L7.41,18.59Z" /></g><g id="unfold-more"><path d="M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z" /></g><g id="ungroup"><path d="M2,2H6V3H13V2H17V6H16V9H18V8H22V12H21V18H22V22H18V21H12V22H8V18H9V16H6V17H2V13H3V6H2V2M18,12V11H16V13H17V17H13V16H11V18H12V19H18V18H19V12H18M13,6V5H6V6H5V13H6V14H9V12H8V8H12V9H14V6H13M12,12H11V14H13V13H14V11H12V12Z" /></g><g id="unity"><path d="M9.11,17H6.5L1.59,12L6.5,7H9.11L10.42,4.74L17.21,3L19.08,9.74L17.77,12L19.08,14.26L17.21,21L10.42,19.26L9.11,17M9.25,16.75L14.38,18.13L11.42,13H5.5L9.25,16.75M16.12,17.13L17.5,12L16.12,6.87L13.15,12L16.12,17.13M9.25,7.25L5.5,11H11.42L14.38,5.87L9.25,7.25Z" /></g><g id="untappd"><path d="M14.41,4C14.41,4 14.94,4.39 14.97,4.71C14.97,4.81 14.73,4.85 14.68,4.93C14.62,5 14.7,5.15 14.65,5.21C14.59,5.26 14.5,5.26 14.41,5.41C14.33,5.56 12.07,10.09 11.73,10.63C11.59,11.03 11.47,12.46 11.37,12.66C11.26,12.85 6.34,19.84 6.16,20.05C5.67,20.63 4.31,20.3 3.28,19.56C2.3,18.86 1.74,17.7 2.11,17.16C2.27,16.93 7.15,9.92 7.29,9.75C7.44,9.58 8.75,9 9.07,8.71C9.47,8.22 12.96,4.54 13.07,4.42C13.18,4.3 13.15,4.2 13.18,4.13C13.22,4.06 13.38,4.08 13.43,4C13.5,3.93 13.39,3.71 13.5,3.68C13.59,3.64 13.96,3.67 14.41,4M10.85,4.44L11.74,5.37L10.26,6.94L9.46,5.37C9.38,5.22 9.28,5.22 9.22,5.17C9.17,5.11 9.24,4.97 9.19,4.89C9.13,4.81 8.9,4.83 8.9,4.73C8.9,4.62 9.05,4.28 9.5,3.96C9.5,3.96 10.06,3.6 10.37,3.68C10.47,3.71 10.43,3.95 10.5,4C10.54,4.1 10.7,4.08 10.73,4.15C10.77,4.21 10.73,4.32 10.85,4.44M21.92,17.15C22.29,17.81 21.53,19 20.5,19.7C19.5,20.39 18.21,20.54 17.83,20C17.66,19.78 12.67,12.82 12.56,12.62C12.45,12.43 12.32,11 12.18,10.59L12.15,10.55C12.45,10 13.07,8.77 13.73,7.47C14.3,8.06 14.75,8.56 14.88,8.72C15.21,9 16.53,9.58 16.68,9.75C16.82,9.92 21.78,16.91 21.92,17.15Z" /></g><g id="update"><path d="M21,10.12H14.22L16.96,7.3C14.23,4.6 9.81,4.5 7.08,7.2C4.35,9.91 4.35,14.28 7.08,17C9.81,19.7 14.23,19.7 16.96,17C18.32,15.65 19,14.08 19,12.1H21C21,14.08 20.12,16.65 18.36,18.39C14.85,21.87 9.15,21.87 5.64,18.39C2.14,14.92 2.11,9.28 5.62,5.81C9.13,2.34 14.76,2.34 18.27,5.81L21,3V10.12M12.5,8V12.25L16,14.33L15.28,15.54L11,13V8H12.5Z" /></g><g id="upload"><path d="M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z" /></g><g id="usb"><path d="M15,7V11H16V13H13V5H15L12,1L9,5H11V13H8V10.93C8.7,10.56 9.2,9.85 9.2,9C9.2,7.78 8.21,6.8 7,6.8C5.78,6.8 4.8,7.78 4.8,9C4.8,9.85 5.3,10.56 6,10.93V13A2,2 0 0,0 8,15H11V18.05C10.29,18.41 9.8,19.15 9.8,20A2.2,2.2 0 0,0 12,22.2A2.2,2.2 0 0,0 14.2,20C14.2,19.15 13.71,18.41 13,18.05V15H16A2,2 0 0,0 18,13V11H19V7H15Z" /></g><g id="vector-arrange-above"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C6.67,16 10.33,16 14,16C15.11,16 16,15.11 16,14C16,10.33 16,6.67 16,3C16,1.89 15.11,1 14,1H3M3,3H14V14H3V3M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18Z" /></g><g id="vector-arrange-below"><path d="M20,22C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C16.33,7 12.67,7 9,7C7.89,7 7,7.89 7,9C7,12.67 7,16.33 7,20C7,21.11 7.89,22 9,22H20M20,20H9V9H20V20M5,16V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5Z" /></g><g id="vector-circle"><path d="M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11" /></g><g id="vector-circle-variant"><path d="M22,9H19.97C18.7,5.41 15.31,3 11.5,3A9,9 0 0,0 2.5,12C2.5,17 6.53,21 11.5,21C15.31,21 18.7,18.6 20,15H22M20,11V13H18V11M17.82,15C16.66,17.44 14.2,19 11.5,19C7.64,19 4.5,15.87 4.5,12C4.5,8.14 7.64,5 11.5,5C14.2,5 16.66,6.57 17.81,9H16V15" /></g><g id="vector-combine"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C4.33,16 7,16 7,16C7,16 7,18.67 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18.67,7 16,7 16,7C16,7 16,4.33 16,3C16,1.89 15.11,1 14,1H3M3,3H14C14,4.33 14,7 14,7H9C7.89,7 7,7.89 7,9V14C7,14 4.33,14 3,14V3M9,9H14V14H9V9M16,9C16,9 18.67,9 20,9V20H9C9,18.67 9,16 9,16H14C15.11,16 16,15.11 16,14V9Z" /></g><g id="vector-curve"><path d="M18.5,2A1.5,1.5 0 0,1 20,3.5A1.5,1.5 0 0,1 18.5,5C18.27,5 18.05,4.95 17.85,4.85L14.16,8.55L14.5,9C16.69,7.74 19.26,7 22,7L23,7.03V9.04L22,9C19.42,9 17,9.75 15,11.04A3.96,3.96 0 0,1 11.04,15C9.75,17 9,19.42 9,22L9.04,23H7.03L7,22C7,19.26 7.74,16.69 9,14.5L8.55,14.16L4.85,17.85C4.95,18.05 5,18.27 5,18.5A1.5,1.5 0 0,1 3.5,20A1.5,1.5 0 0,1 2,18.5A1.5,1.5 0 0,1 3.5,17C3.73,17 3.95,17.05 4.15,17.15L7.84,13.45C7.31,12.78 7,11.92 7,11A4,4 0 0,1 11,7C11.92,7 12.78,7.31 13.45,7.84L17.15,4.15C17.05,3.95 17,3.73 17,3.5A1.5,1.5 0 0,1 18.5,2M11,9A2,2 0 0,0 9,11A2,2 0 0,0 11,13A2,2 0 0,0 13,11A2,2 0 0,0 11,9Z" /></g><g id="vector-difference"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3M9,7C7.89,7 7,7.89 7,9V11H9V9H11V7H9M13,7V9H14V10H16V7H13M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18M14,12V14H12V16H14C15.11,16 16,15.11 16,14V12H14M7,13V16H10V14H9V13H7Z" /></g><g id="vector-difference-ab"><path d="M3,1C1.89,1 1,1.89 1,3V5H3V3H5V1H3M7,1V3H10V1H7M12,1V3H14V5H16V3C16,1.89 15.11,1 14,1H12M1,7V10H3V7H1M14,7C14,7 14,11.67 14,14C11.67,14 7,14 7,14C7,14 7,18 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18,7 14,7 14,7M16,9H20V20H9V16H14C15.11,16 16,15.11 16,14V9M1,12V14C1,15.11 1.89,16 3,16H5V14H3V12H1Z" /></g><g id="vector-difference-ba"><path d="M20,22C21.11,22 22,21.11 22,20V18H20V20H18V22H20M16,22V20H13V22H16M11,22V20H9V18H7V20C7,21.11 7.89,22 9,22H11M22,16V13H20V16H22M9,16C9,16 9,11.33 9,9C11.33,9 16,9 16,9C16,9 16,5 16,3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C5,16 9,16 9,16M7,14H3V3H14V7H9C7.89,7 7,7.89 7,9V14M22,11V9C22,7.89 21.11,7 20,7H18V9H20V11H22Z" /></g><g id="vector-intersection"><path d="M3.14,1A2.14,2.14 0 0,0 1,3.14V5H3V3H5V1H3.14M7,1V3H10V1H7M12,1V3H14V5H16V3.14C16,1.96 15.04,1 13.86,1H12M1,7V10H3V7H1M9,7C7.89,7 7,7.89 7,9C7,11.33 7,16 7,16C7,16 11.57,16 13.86,16A2.14,2.14 0 0,0 16,13.86C16,11.57 16,7 16,7C16,7 11.33,7 9,7M18,7V9H20V11H22V9C22,7.89 21.11,7 20,7H18M9,9H14V14H9V9M1,12V13.86C1,15.04 1.96,16 3.14,16H5V14H3V12H1M20,13V16H22V13H20M7,18V20C7,21.11 7.89,22 9,22H11V20H9V18H7M20,18V20H18V22H20C21.11,22 22,21.11 22,20V18H20M13,20V22H16V20H13Z" /></g><g id="vector-line"><path d="M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5" /></g><g id="vector-point"><path d="M12,20L7,22L12,11L17,22L12,20M8,2H16V5H22V7H16V10H8V7H2V5H8V2M10,4V8H14V4H10Z" /></g><g id="vector-polygon"><path d="M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17" /></g><g id="vector-polyline"><path d="M16,2V8H17.08L14.95,13H14.26L12,9.97V5H6V11H6.91L4.88,16H2V22H8V16H7.04L9.07,11H10.27L12,13.32V19H18V13H17.12L19.25,8H22V2M18,4H20V6H18M8,7H10V9H8M14,15H16V17H14M4,18H6V20H4" /></g><g id="vector-rectangle"><path d="M2,4H8V6H16V4H22V10H20V14H22V20H16V18H8V20H2V14H4V10H2V4M16,10V8H8V10H6V14H8V16H16V14H18V10H16M4,6V8H6V6H4M18,6V8H20V6H18M4,16V18H6V16H4M18,16V18H20V16H18Z" /></g><g id="vector-selection"><path d="M3,1H5V3H3V5H1V3A2,2 0 0,1 3,1M14,1A2,2 0 0,1 16,3V5H14V3H12V1H14M20,7A2,2 0 0,1 22,9V11H20V9H18V7H20M22,20A2,2 0 0,1 20,22H18V20H20V18H22V20M20,13H22V16H20V13M13,9V7H16V10H14V9H13M13,22V20H16V22H13M9,22A2,2 0 0,1 7,20V18H9V20H11V22H9M7,16V13H9V14H10V16H7M7,3V1H10V3H7M3,16A2,2 0 0,1 1,14V12H3V14H5V16H3M1,7H3V10H1V7M9,7H11V9H9V11H7V9A2,2 0 0,1 9,7M16,14A2,2 0 0,1 14,16H12V14H14V12H16V14Z" /></g><g id="vector-square"><path d="M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z" /></g><g id="vector-triangle"><path d="M9,3V9H9.73L5.79,16H2V22H8V20H16V22H22V16H18.21L14.27,9H15V3M11,5H13V7H11M12,9.04L16,16.15V18H8V16.15M4,18H6V20H4M18,18H20V20H18" /></g><g id="vector-union"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H16V3C16,1.89 15.11,1 14,1H3M3,3H14V9H20V20H9V14H3V3Z" /></g><g id="verified"><path d="M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z" /></g><g id="vibrate"><path d="M16,19H8V5H16M16.5,3H7.5A1.5,1.5 0 0,0 6,4.5V19.5A1.5,1.5 0 0,0 7.5,21H16.5A1.5,1.5 0 0,0 18,19.5V4.5A1.5,1.5 0 0,0 16.5,3M19,17H21V7H19M22,9V15H24V9M3,17H5V7H3M0,15H2V9H0V15Z" /></g><g id="video"><path d="M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z" /></g><g id="video-off"><path d="M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z" /></g><g id="video-switch"><path d="M13,15.5V13H7V15.5L3.5,12L7,8.5V11H13V8.5L16.5,12M18,9.5V6A1,1 0 0,0 17,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H17A1,1 0 0,0 18,18V14.5L22,18.5V5.5L18,9.5Z" /></g><g id="view-agenda"><path d="M20,3H3A1,1 0 0,0 2,4V10A1,1 0 0,0 3,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M20,13H3A1,1 0 0,0 2,14V20A1,1 0 0,0 3,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z" /></g><g id="view-array"><path d="M8,18H17V5H8M18,5V18H21V5M4,18H7V5H4V18Z" /></g><g id="view-carousel"><path d="M18,6V17H22V6M2,17H6V6H2M7,19H17V4H7V19Z" /></g><g id="view-column"><path d="M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z" /></g><g id="view-dashboard"><path d="M13,3V9H21V3M13,21H21V11H13M3,21H11V15H3M3,13H11V3H3V13Z" /></g><g id="view-day"><path d="M2,3V6H21V3M20,8H3A1,1 0 0,0 2,9V15A1,1 0 0,0 3,16H20A1,1 0 0,0 21,15V9A1,1 0 0,0 20,8M2,21H21V18H2V21Z" /></g><g id="view-grid"><path d="M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3" /></g><g id="view-headline"><path d="M4,5V7H21V5M4,11H21V9H4M4,19H21V17H4M4,15H21V13H4V15Z" /></g><g id="view-list"><path d="M9,5V9H21V5M9,19H21V15H9M9,14H21V10H9M4,9H8V5H4M4,19H8V15H4M4,14H8V10H4V14Z" /></g><g id="view-module"><path d="M16,5V11H21V5M10,11H15V5H10M16,18H21V12H16M10,18H15V12H10M4,18H9V12H4M4,11H9V5H4V11Z" /></g><g id="view-parallel"><path d="M4,21V3H8V21H4M10,21V3H14V21H10M16,21V3H20V21H16Z" /></g><g id="view-quilt"><path d="M10,5V11H21V5M16,18H21V12H16M4,18H9V5H4M10,18H15V12H10V18Z" /></g><g id="view-sequential"><path d="M3,4H21V8H3V4M3,10H21V14H3V10M3,16H21V20H3V16Z" /></g><g id="view-stream"><path d="M4,5V11H21V5M4,18H21V12H4V18Z" /></g><g id="view-week"><path d="M13,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H13A1,1 0 0,0 14,18V6A1,1 0 0,0 13,5M20,5H17A1,1 0 0,0 16,6V18A1,1 0 0,0 17,19H20A1,1 0 0,0 21,18V6A1,1 0 0,0 20,5M6,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H6A1,1 0 0,0 7,18V6A1,1 0 0,0 6,5Z" /></g><g id="vimeo"><path d="M22,7.42C21.91,9.37 20.55,12.04 17.92,15.44C15.2,19 12.9,20.75 11,20.75C9.85,20.75 8.86,19.67 8.05,17.5C7.5,15.54 7,13.56 6.44,11.58C5.84,9.42 5.2,8.34 4.5,8.34C4.36,8.34 3.84,8.66 2.94,9.29L2,8.07C3,7.2 3.96,6.33 4.92,5.46C6.24,4.32 7.23,3.72 7.88,3.66C9.44,3.5 10.4,4.58 10.76,6.86C11.15,9.33 11.42,10.86 11.57,11.46C12,13.5 12.5,14.5 13.05,14.5C13.47,14.5 14.1,13.86 14.94,12.53C15.78,11.21 16.23,10.2 16.29,9.5C16.41,8.36 15.96,7.79 14.94,7.79C14.46,7.79 13.97,7.9 13.46,8.12C14.44,4.89 16.32,3.32 19.09,3.41C21.15,3.47 22.12,4.81 22,7.42Z" /></g><g id="vine"><path d="M19.89,11.95C19.43,12.06 19,12.1 18.57,12.1C16.3,12.1 14.55,10.5 14.55,7.76C14.55,6.41 15.08,5.7 15.82,5.7C16.5,5.7 17,6.33 17,7.61C17,8.34 16.79,9.14 16.65,9.61C16.65,9.61 17.35,10.83 19.26,10.46C19.67,9.56 19.89,8.39 19.89,7.36C19.89,4.6 18.5,3 15.91,3C13.26,3 11.71,5.04 11.71,7.72C11.71,10.38 12.95,12.67 15,13.71C14.14,15.43 13.04,16.95 11.9,18.1C9.82,15.59 7.94,12.24 7.17,5.7H4.11C5.53,16.59 9.74,20.05 10.86,20.72C11.5,21.1 12.03,21.08 12.61,20.75C13.5,20.24 16.23,17.5 17.74,14.34C18.37,14.33 19.13,14.26 19.89,14.09V11.95Z" /></g><g id="violin"><path d="M11,2A1,1 0 0,0 10,3V5L10,9A0.5,0.5 0 0,0 10.5,9.5H12A0.5,0.5 0 0,1 12.5,10A0.5,0.5 0 0,1 12,10.5H10.5C9.73,10.5 9,9.77 9,9V5.16C7.27,5.6 6,7.13 6,9V10.5A2.5,2.5 0 0,1 8.5,13A2.5,2.5 0 0,1 6,15.5V17C6,19.77 8.23,22 11,22H13C15.77,22 18,19.77 18,17V15.5A2.5,2.5 0 0,1 15.5,13A2.5,2.5 0 0,1 18,10.5V9C18,6.78 16.22,5 14,5V3A1,1 0 0,0 13,2H11M10.75,16.5H13.25L12.75,20H11.25L10.75,16.5Z" /></g><g id="visualstudio"><path d="M17,8.5L12.25,12.32L17,16V8.5M4.7,18.4L2,16.7V7.7L5,6.7L9.3,10.03L18,2L22,4.5V20L17,22L9.34,14.66L4.7,18.4M5,14L6.86,12.28L5,10.5V14Z" /></g><g id="vk"><path d="M19.54,14.6C21.09,16.04 21.41,16.73 21.46,16.82C22.1,17.88 20.76,17.96 20.76,17.96L18.18,18C18.18,18 17.62,18.11 16.9,17.61C15.93,16.95 15,15.22 14.31,15.45C13.6,15.68 13.62,17.23 13.62,17.23C13.62,17.23 13.62,17.45 13.46,17.62C13.28,17.81 12.93,17.74 12.93,17.74H11.78C11.78,17.74 9.23,18 7,15.67C4.55,13.13 2.39,8.13 2.39,8.13C2.39,8.13 2.27,7.83 2.4,7.66C2.55,7.5 2.97,7.5 2.97,7.5H5.73C5.73,7.5 6,7.5 6.17,7.66C6.32,7.77 6.41,8 6.41,8C6.41,8 6.85,9.11 7.45,10.13C8.6,12.12 9.13,12.55 9.5,12.34C10.1,12.03 9.93,9.53 9.93,9.53C9.93,9.53 9.94,8.62 9.64,8.22C9.41,7.91 8.97,7.81 8.78,7.79C8.62,7.77 8.88,7.41 9.21,7.24C9.71,7 10.58,7 11.62,7C12.43,7 12.66,7.06 12.97,7.13C13.93,7.36 13.6,8.25 13.6,10.37C13.6,11.06 13.5,12 13.97,12.33C14.18,12.47 14.7,12.35 16,10.16C16.6,9.12 17.06,7.89 17.06,7.89C17.06,7.89 17.16,7.68 17.31,7.58C17.47,7.5 17.69,7.5 17.69,7.5H20.59C20.59,7.5 21.47,7.4 21.61,7.79C21.76,8.2 21.28,9.17 20.09,10.74C18.15,13.34 17.93,13.1 19.54,14.6Z" /></g><g id="vk-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M17.24,14.03C16.06,12.94 16.22,13.11 17.64,11.22C18.5,10.07 18.85,9.37 18.74,9.07C18.63,8.79 18,8.86 18,8.86L15.89,8.88C15.89,8.88 15.73,8.85 15.62,8.92C15.5,9 15.43,9.15 15.43,9.15C15.43,9.15 15.09,10.04 14.65,10.8C13.71,12.39 13.33,12.47 13.18,12.38C12.83,12.15 12.91,11.45 12.91,10.95C12.91,9.41 13.15,8.76 12.46,8.6C12.23,8.54 12.06,8.5 11.47,8.5C10.72,8.5 10.08,8.5 9.72,8.68C9.5,8.8 9.29,9.06 9.41,9.07C9.55,9.09 9.86,9.16 10.03,9.39C10.25,9.68 10.24,10.34 10.24,10.34C10.24,10.34 10.36,12.16 9.95,12.39C9.66,12.54 9.27,12.22 8.44,10.78C8,10.04 7.68,9.22 7.68,9.22L7.5,9L7.19,8.85H5.18C5.18,8.85 4.88,8.85 4.77,9C4.67,9.1 4.76,9.32 4.76,9.32C4.76,9.32 6.33,12.96 8.11,14.8C9.74,16.5 11.59,16.31 11.59,16.31H12.43C12.43,16.31 12.68,16.36 12.81,16.23C12.93,16.1 12.93,15.94 12.93,15.94C12.93,15.94 12.91,14.81 13.43,14.65C13.95,14.5 14.61,15.73 15.31,16.22C15.84,16.58 16.24,16.5 16.24,16.5L18.12,16.47C18.12,16.47 19.1,16.41 18.63,15.64C18.6,15.58 18.36,15.07 17.24,14.03Z" /></g><g id="vk-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M17.24,14.03C16.06,12.94 16.22,13.11 17.64,11.22C18.5,10.07 18.85,9.37 18.74,9.07C18.63,8.79 18,8.86 18,8.86L15.89,8.88C15.89,8.88 15.73,8.85 15.62,8.92C15.5,9 15.43,9.15 15.43,9.15C15.43,9.15 15.09,10.04 14.65,10.8C13.71,12.39 13.33,12.47 13.18,12.38C12.83,12.15 12.91,11.45 12.91,10.95C12.91,9.41 13.15,8.76 12.46,8.6C12.23,8.54 12.06,8.5 11.47,8.5C10.72,8.5 10.08,8.5 9.72,8.68C9.5,8.8 9.29,9.06 9.41,9.07C9.55,9.09 9.86,9.16 10.03,9.39C10.25,9.68 10.24,10.34 10.24,10.34C10.24,10.34 10.36,12.16 9.95,12.39C9.66,12.54 9.27,12.22 8.44,10.78C8,10.04 7.68,9.22 7.68,9.22L7.5,9L7.19,8.85H5.18C5.18,8.85 4.88,8.85 4.77,9C4.67,9.1 4.76,9.32 4.76,9.32C4.76,9.32 6.33,12.96 8.11,14.8C9.74,16.5 11.59,16.31 11.59,16.31H12.43C12.43,16.31 12.68,16.36 12.81,16.23C12.93,16.1 12.93,15.94 12.93,15.94C12.93,15.94 12.91,14.81 13.43,14.65C13.95,14.5 14.61,15.73 15.31,16.22C15.84,16.58 16.24,16.5 16.24,16.5L18.12,16.47C18.12,16.47 19.1,16.41 18.63,15.64C18.6,15.58 18.36,15.07 17.24,14.03Z" /></g><g id="vlc"><path d="M12,1C11.58,1 11.19,1.23 11,1.75L9.88,4.88C10.36,5.4 11.28,5.5 12,5.5C12.72,5.5 13.64,5.4 14.13,4.88L13,1.75C12.82,1.25 12.42,1 12,1M8.44,8.91L7,12.91C8.07,14.27 10.26,14.5 12,14.5C13.74,14.5 15.93,14.27 17,12.91L15.56,8.91C14.76,9.83 13.24,10 12,10C10.76,10 9.24,9.83 8.44,8.91M5.44,15C4.62,15 3.76,15.65 3.53,16.44L2.06,21.56C1.84,22.35 2.3,23 3.13,23H20.88C21.7,23 22.16,22.35 21.94,21.56L20.47,16.44C20.24,15.65 19.38,15 18.56,15H17.75L18.09,15.97C18.21,16.29 18.29,16.69 18.09,16.97C16.84,18.7 14.14,19 12,19C9.86,19 7.16,18.7 5.91,16.97C5.71,16.69 5.79,16.29 5.91,15.97L6.25,15H5.44Z" /></g><g id="voice"><path d="M9,5A4,4 0 0,1 13,9A4,4 0 0,1 9,13A4,4 0 0,1 5,9A4,4 0 0,1 9,5M9,15C11.67,15 17,16.34 17,19V21H1V19C1,16.34 6.33,15 9,15M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z" /></g><g id="voicemail"><path d="M18.5,15A3.5,3.5 0 0,1 15,11.5A3.5,3.5 0 0,1 18.5,8A3.5,3.5 0 0,1 22,11.5A3.5,3.5 0 0,1 18.5,15M5.5,15A3.5,3.5 0 0,1 2,11.5A3.5,3.5 0 0,1 5.5,8A3.5,3.5 0 0,1 9,11.5A3.5,3.5 0 0,1 5.5,15M18.5,6A5.5,5.5 0 0,0 13,11.5C13,12.83 13.47,14.05 14.26,15H9.74C10.53,14.05 11,12.83 11,11.5A5.5,5.5 0 0,0 5.5,6A5.5,5.5 0 0,0 0,11.5A5.5,5.5 0 0,0 5.5,17H18.5A5.5,5.5 0 0,0 24,11.5A5.5,5.5 0 0,0 18.5,6Z" /></g><g id="volume-high"><path d="M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z" /></g><g id="volume-low"><path d="M7,9V15H11L16,20V4L11,9H7Z" /></g><g id="volume-medium"><path d="M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z" /></g><g id="volume-off"><path d="M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z" /></g><g id="vpn"><path d="M9,5H15L12,8L9,5M10.5,14.66C10.2,15 10,15.5 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.45 13.78,14.95 13.41,14.59L14.83,13.17C15.55,13.9 16,14.9 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16C8,14.93 8.42,13.96 9.1,13.25L9.09,13.24L16.17,6.17V6.17C16.89,5.45 17.89,5 19,5A4,4 0 0,1 23,9A4,4 0 0,1 19,13C17.9,13 16.9,12.55 16.17,11.83L17.59,10.41C17.95,10.78 18.45,11 19,11A2,2 0 0,0 21,9A2,2 0 0,0 19,7C18.45,7 17.95,7.22 17.59,7.59L10.5,14.66M6.41,7.59C6.05,7.22 5.55,7 5,7A2,2 0 0,0 3,9A2,2 0 0,0 5,11C5.55,11 6.05,10.78 6.41,10.41L7.83,11.83C7.1,12.55 6.1,13 5,13A4,4 0 0,1 1,9A4,4 0 0,1 5,5C6.11,5 7.11,5.45 7.83,6.17V6.17L10.59,8.93L9.17,10.35L6.41,7.59Z" /></g><g id="walk"><path d="M14.12,10H19V8.2H15.38L13.38,4.87C13.08,4.37 12.54,4.03 11.92,4.03C11.74,4.03 11.58,4.06 11.42,4.11L6,5.8V11H7.8V7.33L9.91,6.67L6,22H7.8L10.67,13.89L13,17V22H14.8V15.59L12.31,11.05L13.04,8.18M14,3.8C15,3.8 15.8,3 15.8,2C15.8,1 15,0.2 14,0.2C13,0.2 12.2,1 12.2,2C12.2,3 13,3.8 14,3.8Z" /></g><g id="wallet"><path d="M21,18V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V6H12C10.89,6 10,6.9 10,8V16A2,2 0 0,0 12,18M12,16H22V8H12M16,13.5A1.5,1.5 0 0,1 14.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 16,13.5Z" /></g><g id="wallet-giftcard"><path d="M20,14H4V8H9.08L7,10.83L8.62,12L11,8.76L12,7.4L13,8.76L15.38,12L17,10.83L14.92,8H20M20,19H4V17H20M9,4A1,1 0 0,1 10,5A1,1 0 0,1 9,6A1,1 0 0,1 8,5A1,1 0 0,1 9,4M15,4A1,1 0 0,1 16,5A1,1 0 0,1 15,6A1,1 0 0,1 14,5A1,1 0 0,1 15,4M20,6H17.82C17.93,5.69 18,5.35 18,5A3,3 0 0,0 15,2C13.95,2 13.04,2.54 12.5,3.35L12,4L11.5,3.34C10.96,2.54 10.05,2 9,2A3,3 0 0,0 6,5C6,5.35 6.07,5.69 6.18,6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="wallet-membership"><path d="M20,10H4V4H20M20,15H4V13H20M20,2H4C2.89,2 2,2.89 2,4V15C2,16.11 2.89,17 4,17H8V22L12,20L16,22V17H20C21.11,17 22,16.11 22,15V4C22,2.89 21.11,2 20,2Z" /></g><g id="wallet-travel"><path d="M20,14H4V8H7V10H9V8H15V10H17V8H20M20,19H4V17H20M9,4H15V6H9M20,6H17V4C17,2.89 16.11,2 15,2H9C7.89,2 7,2.89 7,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="wan"><path d="M12,2A8,8 0 0,0 4,10C4,14.03 7,17.42 11,17.93V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17.93C17,17.43 20,14.03 20,10A8,8 0 0,0 12,2M12,4C12,4 12.74,5.28 13.26,7H10.74C11.26,5.28 12,4 12,4M9.77,4.43C9.5,4.93 9.09,5.84 8.74,7H6.81C7.5,5.84 8.5,4.93 9.77,4.43M14.23,4.44C15.5,4.94 16.5,5.84 17.19,7H15.26C14.91,5.84 14.5,4.93 14.23,4.44M6.09,9H8.32C8.28,9.33 8.25,9.66 8.25,10C8.25,10.34 8.28,10.67 8.32,11H6.09C6.03,10.67 6,10.34 6,10C6,9.66 6.03,9.33 6.09,9M10.32,9H13.68C13.72,9.33 13.75,9.66 13.75,10C13.75,10.34 13.72,10.67 13.68,11H10.32C10.28,10.67 10.25,10.34 10.25,10C10.25,9.66 10.28,9.33 10.32,9M15.68,9H17.91C17.97,9.33 18,9.66 18,10C18,10.34 17.97,10.67 17.91,11H15.68C15.72,10.67 15.75,10.34 15.75,10C15.75,9.66 15.72,9.33 15.68,9M6.81,13H8.74C9.09,14.16 9.5,15.07 9.77,15.56C8.5,15.06 7.5,14.16 6.81,13M10.74,13H13.26C12.74,14.72 12,16 12,16C12,16 11.26,14.72 10.74,13M15.26,13H17.19C16.5,14.16 15.5,15.07 14.23,15.57C14.5,15.07 14.91,14.16 15.26,13Z" /></g><g id="washing-machine"><path d="M14.83,11.17C16.39,12.73 16.39,15.27 14.83,16.83C13.27,18.39 10.73,18.39 9.17,16.83L14.83,11.17M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8Z" /></g><g id="watch"><path d="M6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12M20,12C20,9.45 18.81,7.19 16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.45 4,12C4,14.54 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27C18.81,16.81 20,14.54 20,12Z" /></g><g id="watch-export"><path d="M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.4,6 14.69,6.5 15.71,7.29L17.13,5.87L16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.46 4,12C4,14.55 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27L17.13,18.13L15.71,16.71C14.69,17.5 13.4,18 12,18Z" /></g><g id="watch-import"><path d="M2,11H7L4.5,8.5L5.92,7.08L10.84,12L5.92,16.92L4.5,15.5L7,13H2V11M12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6C10.6,6 9.31,6.5 8.29,7.29L6.87,5.87L7.05,5.73L8,0H16L16.95,5.73C18.81,7.19 20,9.45 20,12C20,14.54 18.81,16.81 16.95,18.27L16,24H8L7.05,18.27L6.87,18.13L8.29,16.71C9.31,17.5 10.6,18 12,18Z" /></g><g id="watch-vibrate"><path d="M3,17V7H5V17H3M19,17V7H21V17H19M22,9H24V15H22V9M0,15V9H2V15H0M17.96,11.97C17.96,13.87 17.07,15.57 15.68,16.67L14.97,20.95H9L8.27,16.67C6.88,15.57 6,13.87 6,11.97C6,10.07 6.88,8.37 8.27,7.28L9,3H14.97L15.68,7.28C17.07,8.37 17.96,10.07 17.96,11.97M7.5,11.97C7.5,14.45 9.5,16.46 11.97,16.46A4.49,4.49 0 0,0 16.46,11.97C16.46,9.5 14.45,7.5 11.97,7.5A4.47,4.47 0 0,0 7.5,11.97Z" /></g><g id="water"><path d="M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z" /></g><g id="water-off"><path d="M17.12,17.12L12.5,12.5L5.27,5.27L4,6.55L7.32,9.87C6.55,11.32 6,12.79 6,14A6,6 0 0,0 12,20C13.5,20 14.9,19.43 15.96,18.5L18.59,21.13L19.86,19.86L17.12,17.12M18,14C18,10 12,3.2 12,3.2C12,3.2 10.67,4.71 9.27,6.72L17.86,15.31C17.95,14.89 18,14.45 18,14Z" /></g><g id="water-percent"><path d="M12,3.25C12,3.25 6,10 6,14C6,17.32 8.69,20 12,20A6,6 0 0,0 18,14C18,10 12,3.25 12,3.25M14.47,9.97L15.53,11.03L9.53,17.03L8.47,15.97M9.75,10A1.25,1.25 0 0,1 11,11.25A1.25,1.25 0 0,1 9.75,12.5A1.25,1.25 0 0,1 8.5,11.25A1.25,1.25 0 0,1 9.75,10M14.25,14.5A1.25,1.25 0 0,1 15.5,15.75A1.25,1.25 0 0,1 14.25,17A1.25,1.25 0 0,1 13,15.75A1.25,1.25 0 0,1 14.25,14.5Z" /></g><g id="water-pump"><path d="M19,14.5C19,14.5 21,16.67 21,18A2,2 0 0,1 19,20A2,2 0 0,1 17,18C17,16.67 19,14.5 19,14.5M5,18V9A2,2 0 0,1 3,7A2,2 0 0,1 5,5V4A2,2 0 0,1 7,2H9A2,2 0 0,1 11,4V5H19A2,2 0 0,1 21,7V9L21,11A1,1 0 0,1 22,12A1,1 0 0,1 21,13H17A1,1 0 0,1 16,12A1,1 0 0,1 17,11V9H11V18H12A2,2 0 0,1 14,20V22H2V20A2,2 0 0,1 4,18H5Z" /></g><g id="watermark"><path d="M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H12V13H21V19Z" /></g><g id="weather-cloudy"><path d="M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13Z" /></g><g id="weather-fog"><path d="M3,15H13A1,1 0 0,1 14,16A1,1 0 0,1 13,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15M16,15H21A1,1 0 0,1 22,16A1,1 0 0,1 21,17H16A1,1 0 0,1 15,16A1,1 0 0,1 16,15M1,12A5,5 0 0,1 6,7C7,4.65 9.3,3 12,3C15.43,3 18.24,5.66 18.5,9.03L19,9C21.19,9 22.97,10.76 23,13H21A2,2 0 0,0 19,11H17V10A5,5 0 0,0 12,5C9.5,5 7.45,6.82 7.06,9.19C6.73,9.07 6.37,9 6,9A3,3 0 0,0 3,12C3,12.35 3.06,12.69 3.17,13H1.1L1,12M3,19H5A1,1 0 0,1 6,20A1,1 0 0,1 5,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19M8,19H21A1,1 0 0,1 22,20A1,1 0 0,1 21,21H8A1,1 0 0,1 7,20A1,1 0 0,1 8,19Z" /></g><g id="weather-hail"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M10,18A2,2 0 0,1 12,20A2,2 0 0,1 10,22A2,2 0 0,1 8,20A2,2 0 0,1 10,18M14.5,16A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 14.5,19A1.5,1.5 0 0,1 13,17.5A1.5,1.5 0 0,1 14.5,16M10.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,15A1.5,1.5 0 0,1 9,13.5A1.5,1.5 0 0,1 10.5,12Z" /></g><g id="weather-lightning"><path d="M6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14H7A1,1 0 0,1 8,15A1,1 0 0,1 7,16H6M12,11H15L13,15H15L11.25,22L12,17H9.5L12,11Z" /></g><g id="weather-lightning-rainy"><path d="M4.5,13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.44 4,15.6 3.5,15.33V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59M9.5,11H12.5L10.5,15H12.5L8.75,22L9.5,17H7L9.5,11M17.5,18.67C17.5,19.96 16.5,21 15.25,21C14,21 13,19.96 13,18.67C13,17.12 15.25,14.5 15.25,14.5C15.25,14.5 17.5,17.12 17.5,18.67Z" /></g><g id="weather-night"><path d="M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z" /></g><g id="weather-partlycloudy"><path d="M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16A3,3 0 0,1 22,19A3,3 0 0,1 19,22H6A4,4 0 0,1 2,18A4,4 0 0,1 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16A4,4 0 0,0 12,12A4,4 0 0,0 8,16H6A2,2 0 0,0 4,18A2,2 0 0,0 6,20H19A1,1 0 0,0 20,19A1,1 0 0,0 19,18Z" /></g><g id="weather-pouring"><path d="M9,12C9.53,12.14 9.85,12.69 9.71,13.22L8.41,18.05C8.27,18.59 7.72,18.9 7.19,18.76C6.65,18.62 6.34,18.07 6.5,17.54L7.78,12.71C7.92,12.17 8.47,11.86 9,12M13,12C13.53,12.14 13.85,12.69 13.71,13.22L11.64,20.95C11.5,21.5 10.95,21.8 10.41,21.66C9.88,21.5 9.56,20.97 9.7,20.43L11.78,12.71C11.92,12.17 12.47,11.86 13,12M17,12C17.53,12.14 17.85,12.69 17.71,13.22L16.41,18.05C16.27,18.59 15.72,18.9 15.19,18.76C14.65,18.62 14.34,18.07 14.5,17.54L15.78,12.71C15.92,12.17 16.47,11.86 17,12M17,10V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.43 4,15.6 3.5,15.32V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12C23,13.5 22.2,14.77 21,15.46V15.46C20.5,15.73 19.91,15.57 19.63,15.09C19.36,14.61 19.5,14 20,13.72V13.73C20.6,13.39 21,12.74 21,12A2,2 0 0,0 19,10H17Z" /></g><g id="weather-rainy"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M14.83,15.67C16.39,17.23 16.39,19.5 14.83,21.08C14.05,21.86 13,22 12,22C11,22 9.95,21.86 9.17,21.08C7.61,19.5 7.61,17.23 9.17,15.67L12,11L14.83,15.67M13.41,16.69L12,14.25L10.59,16.69C9.8,17.5 9.8,18.7 10.59,19.5C11,19.93 11.5,20 12,20C12.5,20 13,19.93 13.41,19.5C14.2,18.7 14.2,17.5 13.41,16.69Z" /></g><g id="weather-snowy"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M7.88,18.07L10.07,17.5L8.46,15.88C8.07,15.5 8.07,14.86 8.46,14.46C8.85,14.07 9.5,14.07 9.88,14.46L11.5,16.07L12.07,13.88C12.21,13.34 12.76,13.03 13.29,13.17C13.83,13.31 14.14,13.86 14,14.4L13.41,16.59L15.6,16C16.14,15.86 16.69,16.17 16.83,16.71C16.97,17.24 16.66,17.79 16.12,17.93L13.93,18.5L15.54,20.12C15.93,20.5 15.93,21.15 15.54,21.54C15.15,21.93 14.5,21.93 14.12,21.54L12.5,19.93L11.93,22.12C11.79,22.66 11.24,22.97 10.71,22.83C10.17,22.69 9.86,22.14 10,21.6L10.59,19.41L8.4,20C7.86,20.14 7.31,19.83 7.17,19.29C7.03,18.76 7.34,18.21 7.88,18.07Z" /></g><g id="weather-snowy-rainy"><path d="M18.5,18.67C18.5,19.96 17.5,21 16.25,21C15,21 14,19.96 14,18.67C14,17.12 16.25,14.5 16.25,14.5C16.25,14.5 18.5,17.12 18.5,18.67M4,17.36C3.86,16.82 4.18,16.25 4.73,16.11L7,15.5L5.33,13.86C4.93,13.46 4.93,12.81 5.33,12.4C5.73,12 6.4,12 6.79,12.4L8.45,14.05L9.04,11.8C9.18,11.24 9.75,10.92 10.29,11.07C10.85,11.21 11.17,11.78 11,12.33L10.42,14.58L12.67,14C13.22,13.83 13.79,14.15 13.93,14.71C14.08,15.25 13.76,15.82 13.2,15.96L10.95,16.55L12.6,18.21C13,18.6 13,19.27 12.6,19.67C12.2,20.07 11.54,20.07 11.15,19.67L9.5,18L8.89,20.27C8.75,20.83 8.18,21.14 7.64,21C7.08,20.86 6.77,20.29 6.91,19.74L7.5,17.5L5.26,18.09C4.71,18.23 4.14,17.92 4,17.36M1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,11.85 3.35,12.61 3.91,13.16C4.27,13.55 4.26,14.16 3.88,14.54C3.5,14.93 2.85,14.93 2.47,14.54C1.56,13.63 1,12.38 1,11Z" /></g><g id="weather-sunny"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z" /></g><g id="weather-sunset"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M5,16H19A1,1 0 0,1 20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17A1,1 0 0,1 5,16M17,20A1,1 0 0,1 18,21A1,1 0 0,1 17,22H7A1,1 0 0,1 6,21A1,1 0 0,1 7,20H17M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7Z" /></g><g id="weather-sunset-down"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,20.71L15.82,17.6C16.21,17.21 16.21,16.57 15.82,16.18C15.43,15.79 14.8,15.79 14.41,16.18L12,18.59L9.59,16.18C9.2,15.79 8.57,15.79 8.18,16.18C7.79,16.57 7.79,17.21 8.18,17.6L11.29,20.71C11.5,20.9 11.74,21 12,21C12.26,21 12.5,20.9 12.71,20.71Z" /></g><g id="weather-sunset-up"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,16.3L15.82,19.41C16.21,19.8 16.21,20.43 15.82,20.82C15.43,21.21 14.8,21.21 14.41,20.82L12,18.41L9.59,20.82C9.2,21.21 8.57,21.21 8.18,20.82C7.79,20.43 7.79,19.8 8.18,19.41L11.29,16.3C11.5,16.1 11.74,16 12,16C12.26,16 12.5,16.1 12.71,16.3Z" /></g><g id="weather-windy"><path d="M4,10A1,1 0 0,1 3,9A1,1 0 0,1 4,8H12A2,2 0 0,0 14,6A2,2 0 0,0 12,4C11.45,4 10.95,4.22 10.59,4.59C10.2,5 9.56,5 9.17,4.59C8.78,4.2 8.78,3.56 9.17,3.17C9.9,2.45 10.9,2 12,2A4,4 0 0,1 16,6A4,4 0 0,1 12,10H4M19,12A1,1 0 0,0 20,11A1,1 0 0,0 19,10C18.72,10 18.47,10.11 18.29,10.29C17.9,10.68 17.27,10.68 16.88,10.29C16.5,9.9 16.5,9.27 16.88,8.88C17.42,8.34 18.17,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H5A1,1 0 0,1 4,13A1,1 0 0,1 5,12H19M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z" /></g><g id="weather-windy-variant"><path d="M6,6L6.69,6.06C7.32,3.72 9.46,2 12,2A5.5,5.5 0 0,1 17.5,7.5L17.42,8.45C17.88,8.16 18.42,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H6A4,4 0 0,1 2,10A4,4 0 0,1 6,6M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12H19A1,1 0 0,0 20,11A1,1 0 0,0 19,10H15.5V7.5A3.5,3.5 0 0,0 12,4A3.5,3.5 0 0,0 8.5,7.5V8H6M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z" /></g><g id="web"><path d="M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="webcam"><path d="M12,2A7,7 0 0,1 19,9A7,7 0 0,1 12,16A7,7 0 0,1 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9A5,5 0 0,0 12,14A5,5 0 0,0 17,9A5,5 0 0,0 12,4M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M6,22A2,2 0 0,1 4,20C4,19.62 4.1,19.27 4.29,18.97L6.11,15.81C7.69,17.17 9.75,18 12,18C14.25,18 16.31,17.17 17.89,15.81L19.71,18.97C19.9,19.27 20,19.62 20,20A2,2 0 0,1 18,22H6Z" /></g><g id="webhook"><path d="M10.46,19C9,21.07 6.15,21.59 4.09,20.15C2.04,18.71 1.56,15.84 3,13.75C3.87,12.5 5.21,11.83 6.58,11.77L6.63,13.2C5.72,13.27 4.84,13.74 4.27,14.56C3.27,16 3.58,17.94 4.95,18.91C6.33,19.87 8.26,19.5 9.26,18.07C9.57,17.62 9.75,17.13 9.82,16.63V15.62L15.4,15.58L15.47,15.47C16,14.55 17.15,14.23 18.05,14.75C18.95,15.27 19.26,16.43 18.73,17.35C18.2,18.26 17.04,18.58 16.14,18.06C15.73,17.83 15.44,17.46 15.31,17.04L11.24,17.06C11.13,17.73 10.87,18.38 10.46,19M17.74,11.86C20.27,12.17 22.07,14.44 21.76,16.93C21.45,19.43 19.15,21.2 16.62,20.89C15.13,20.71 13.9,19.86 13.19,18.68L14.43,17.96C14.92,18.73 15.75,19.28 16.75,19.41C18.5,19.62 20.05,18.43 20.26,16.76C20.47,15.09 19.23,13.56 17.5,13.35C16.96,13.29 16.44,13.36 15.97,13.53L15.12,13.97L12.54,9.2H12.32C11.26,9.16 10.44,8.29 10.47,7.25C10.5,6.21 11.4,5.4 12.45,5.44C13.5,5.5 14.33,6.35 14.3,7.39C14.28,7.83 14.11,8.23 13.84,8.54L15.74,12.05C16.36,11.85 17.04,11.78 17.74,11.86M8.25,9.14C7.25,6.79 8.31,4.1 10.62,3.12C12.94,2.14 15.62,3.25 16.62,5.6C17.21,6.97 17.09,8.47 16.42,9.67L15.18,8.95C15.6,8.14 15.67,7.15 15.27,6.22C14.59,4.62 12.78,3.85 11.23,4.5C9.67,5.16 8.97,7 9.65,8.6C9.93,9.26 10.4,9.77 10.97,10.11L11.36,10.32L8.29,15.31C8.32,15.36 8.36,15.42 8.39,15.5C8.88,16.41 8.54,17.56 7.62,18.05C6.71,18.54 5.56,18.18 5.06,17.24C4.57,16.31 4.91,15.16 5.83,14.67C6.22,14.46 6.65,14.41 7.06,14.5L9.37,10.73C8.9,10.3 8.5,9.76 8.25,9.14Z" /></g><g id="wechat"><path d="M9.5,4C5.36,4 2,6.69 2,10C2,11.89 3.08,13.56 4.78,14.66L4,17L6.5,15.5C7.39,15.81 8.37,16 9.41,16C9.15,15.37 9,14.7 9,14C9,10.69 12.13,8 16,8C16.19,8 16.38,8 16.56,8.03C15.54,5.69 12.78,4 9.5,4M6.5,6.5A1,1 0 0,1 7.5,7.5A1,1 0 0,1 6.5,8.5A1,1 0 0,1 5.5,7.5A1,1 0 0,1 6.5,6.5M11.5,6.5A1,1 0 0,1 12.5,7.5A1,1 0 0,1 11.5,8.5A1,1 0 0,1 10.5,7.5A1,1 0 0,1 11.5,6.5M16,9C12.69,9 10,11.24 10,14C10,16.76 12.69,19 16,19C16.67,19 17.31,18.92 17.91,18.75L20,20L19.38,18.13C20.95,17.22 22,15.71 22,14C22,11.24 19.31,9 16,9M14,11.5A1,1 0 0,1 15,12.5A1,1 0 0,1 14,13.5A1,1 0 0,1 13,12.5A1,1 0 0,1 14,11.5M18,11.5A1,1 0 0,1 19,12.5A1,1 0 0,1 18,13.5A1,1 0 0,1 17,12.5A1,1 0 0,1 18,11.5Z" /></g><g id="weight"><path d="M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5Z" /></g><g id="weight-kilogram"><path d="M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M9.04,15.44L10.4,18H12.11L10.07,14.66L11.95,11.94H10.2L8.87,14.33H8.39V11.94H6.97V18H8.39V15.44H9.04M17.31,17.16V14.93H14.95V16.04H15.9V16.79L15.55,16.93L14.94,17C14.59,17 14.31,16.85 14.11,16.6C13.92,16.34 13.82,16 13.82,15.59V14.34C13.82,13.93 13.92,13.6 14.12,13.35C14.32,13.09 14.58,12.97 14.91,12.97C15.24,12.97 15.5,13.05 15.64,13.21C15.8,13.37 15.9,13.61 15.95,13.93H17.27L17.28,13.9C17.23,13.27 17,12.77 16.62,12.4C16.23,12.04 15.64,11.86 14.86,11.86C14.14,11.86 13.56,12.09 13.1,12.55C12.64,13 12.41,13.61 12.41,14.34V15.6C12.41,16.34 12.65,16.94 13.12,17.4C13.58,17.86 14.19,18.09 14.94,18.09C15.53,18.09 16.03,18 16.42,17.81C16.81,17.62 17.11,17.41 17.31,17.16Z" /></g><g id="whatsapp"><path d="M16.75,13.96C17,14.09 17.16,14.16 17.21,14.26C17.27,14.37 17.25,14.87 17,15.44C16.8,16 15.76,16.54 15.3,16.56C14.84,16.58 14.83,16.92 12.34,15.83C9.85,14.74 8.35,12.08 8.23,11.91C8.11,11.74 7.27,10.53 7.31,9.3C7.36,8.08 8,7.5 8.26,7.26C8.5,7 8.77,6.97 8.94,7H9.41C9.56,7 9.77,6.94 9.96,7.45L10.65,9.32C10.71,9.45 10.75,9.6 10.66,9.76L10.39,10.17L10,10.59C9.88,10.71 9.74,10.84 9.88,11.09C10,11.35 10.5,12.18 11.2,12.87C12.11,13.75 12.91,14.04 13.15,14.17C13.39,14.31 13.54,14.29 13.69,14.13L14.5,13.19C14.69,12.94 14.85,13 15.08,13.08L16.75,13.96M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C10.03,22 8.2,21.43 6.65,20.45L2,22L3.55,17.35C2.57,15.8 2,13.97 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.72 4.54,15.31 5.46,16.61L4.5,19.5L7.39,18.54C8.69,19.46 10.28,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="wheelchair-accessibility"><path d="M18.4,11.2L14.3,11.4L16.6,8.8C16.8,8.5 16.9,8 16.8,7.5C16.7,7.2 16.6,6.9 16.3,6.7L10.9,3.5C10.5,3.2 9.9,3.3 9.5,3.6L6.8,6.1C6.3,6.6 6.2,7.3 6.7,7.8C7.1,8.3 7.9,8.3 8.4,7.9L10.4,6.1L12.3,7.2L8.1,11.5C8,11.6 8,11.7 7.9,11.7C7.4,11.9 6.9,12.1 6.5,12.4L8,13.9C8.5,13.7 9,13.5 9.5,13.5C11.4,13.5 13,15.1 13,17C13,17.6 12.9,18.1 12.6,18.5L14.1,20C14.7,19.1 15,18.1 15,17C15,15.8 14.6,14.6 13.9,13.7L17.2,13.4L17,18.2C16.9,18.9 17.4,19.4 18.1,19.5H18.2C18.8,19.5 19.3,19 19.4,18.4L19.6,12.5C19.6,12.2 19.5,11.8 19.3,11.6C19,11.3 18.7,11.2 18.4,11.2M18,5.5A2,2 0 0,0 20,3.5A2,2 0 0,0 18,1.5A2,2 0 0,0 16,3.5A2,2 0 0,0 18,5.5M12.5,21.6C11.6,22.2 10.6,22.5 9.5,22.5C6.5,22.5 4,20 4,17C4,15.9 4.3,14.9 4.9,14L6.4,15.5C6.2,16 6,16.5 6,17C6,18.9 7.6,20.5 9.5,20.5C10.1,20.5 10.6,20.4 11,20.1L12.5,21.6Z" /></g><g id="white-balance-auto"><path d="M10.3,16L9.6,14H6.4L5.7,16H3.8L7,7H9L12.2,16M22,7L20.8,13.29L19.3,7H17.7L16.21,13.29L15,7H14.24C12.77,5.17 10.5,4 8,4A8,8 0 0,0 0,12A8,8 0 0,0 8,20C11.13,20 13.84,18.19 15.15,15.57L15.25,16H17L18.5,9.9L20,16H21.75L23.8,7M6.85,12.65H9.15L8,9L6.85,12.65Z" /></g><g id="white-balance-incandescent"><path d="M17.24,18.15L19.04,19.95L20.45,18.53L18.66,16.74M20,12.5H23V10.5H20M15,6.31V1.5H9V6.31C7.21,7.35 6,9.28 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,9.28 16.79,7.35 15,6.31M4,10.5H1V12.5H4M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M3.55,18.53L4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53Z" /></g><g id="white-balance-iridescent"><path d="M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z" /></g><g id="white-balance-sunny"><path d="M3.55,18.54L4.96,19.95L6.76,18.16L5.34,16.74M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M12,5.5A6,6 0 0,0 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,8.18 15.31,5.5 12,5.5M20,12.5H23V10.5H20M17.24,18.16L19.04,19.95L20.45,18.54L18.66,16.74M20.45,4.46L19.04,3.05L17.24,4.84L18.66,6.26M13,0.55H11V3.5H13M4,10.5H1V12.5H4M6.76,4.84L4.96,3.05L3.55,4.46L5.34,6.26L6.76,4.84Z" /></g><g id="widgets"><path d="M3,3H11V7.34L16.66,1.69L22.31,7.34L16.66,13H21V21H13V13H16.66L11,7.34V11H3V3M3,13H11V21H3V13Z" /></g><g id="wifi"><path d="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z" /></g><g id="wifi-off"><path d="M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z" /></g><g id="wii"><path d="M17.84,16.94H15.97V10.79H17.84V16.94M18,8.58C18,9.19 17.5,9.69 16.9,9.69A1.11,1.11 0 0,1 15.79,8.58C15.79,7.96 16.29,7.46 16.9,7.46C17.5,7.46 18,7.96 18,8.58M21.82,16.94H19.94V10.79H21.82V16.94M22,8.58C22,9.19 21.5,9.69 20.88,9.69A1.11,1.11 0 0,1 19.77,8.58C19.77,7.96 20.27,7.46 20.88,7.46C21.5,7.46 22,7.96 22,8.58M12.9,8.05H14.9L12.78,15.5C12.78,15.5 12.5,17.04 11.28,17.04C10.07,17.04 9.79,15.5 9.79,15.5L8.45,10.64L7.11,15.5C7.11,15.5 6.82,17.04 5.61,17.04C4.4,17.04 4.12,15.5 4.12,15.5L2,8.05H4L5.72,14.67L7.11,9.3C7.43,7.95 8.45,7.97 8.45,7.97C8.45,7.97 9.47,7.95 9.79,9.3L11.17,14.67L12.9,8.05Z" /></g><g id="wiiu"><path d="M2,15.96C2,18.19 3.54,19.5 5.79,19.5H18.57C20.47,19.5 22,18.2 22,16.32V6.97C22,5.83 21.15,4.6 20.11,4.6H17.15V12.3C17.15,18.14 6.97,18.09 6.97,12.41V4.5H4.72C3.26,4.5 2,5.41 2,6.85V15.96M9.34,11.23C9.34,15.74 14.66,15.09 14.66,11.94V4.5H9.34V11.23Z" /></g><g id="wikipedia"><path d="M14.97,18.95L12.41,12.92C11.39,14.91 10.27,17 9.31,18.95C9.3,18.96 8.84,18.95 8.84,18.95C7.37,15.5 5.85,12.1 4.37,8.68C4.03,7.84 2.83,6.5 2,6.5C2,6.4 2,6.18 2,6.05H7.06V6.5C6.46,6.5 5.44,6.9 5.7,7.55C6.42,9.09 8.94,15.06 9.63,16.58C10.1,15.64 11.43,13.16 12,12.11C11.55,11.23 10.13,7.93 9.71,7.11C9.39,6.57 8.58,6.5 7.96,6.5C7.96,6.35 7.97,6.25 7.96,6.06L12.42,6.07V6.47C11.81,6.5 11.24,6.71 11.5,7.29C12.1,8.53 12.45,9.42 13,10.57C13.17,10.23 14.07,8.38 14.5,7.41C14.76,6.76 14.37,6.5 13.29,6.5C13.3,6.38 13.3,6.17 13.3,6.07C14.69,6.06 16.78,6.06 17.15,6.05V6.47C16.44,6.5 15.71,6.88 15.33,7.46L13.5,11.3C13.68,11.81 15.46,15.76 15.65,16.2L19.5,7.37C19.2,6.65 18.34,6.5 18,6.5C18,6.37 18,6.2 18,6.05L22,6.08V6.1L22,6.5C21.12,6.5 20.57,7 20.25,7.75C19.45,9.54 17,15.24 15.4,18.95C15.4,18.95 14.97,18.95 14.97,18.95Z" /></g><g id="window-close"><path d="M13.46,12L19,17.54V19H17.54L12,13.46L6.46,19H5V17.54L10.54,12L5,6.46V5H6.46L12,10.54L17.54,5H19V6.46L13.46,12Z" /></g><g id="window-closed"><path d="M6,11H10V9H14V11H18V4H6V11M18,13H6V20H18V13M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z" /></g><g id="window-maximize"><path d="M4,4H20V20H4V4M6,8V18H18V8H6Z" /></g><g id="window-minimize"><path d="M20,14H4V10H20" /></g><g id="window-open"><path d="M6,8H10V6H14V8H18V4H6V8M18,10H6V15H18V10M6,20H18V17H6V20M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z" /></g><g id="window-restore"><path d="M4,8H8V4H20V16H16V20H4V8M16,8V14H18V6H10V8H16M6,12V18H14V12H6Z" /></g><g id="windows"><path d="M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z" /></g><g id="wordpress"><path d="M12.2,15.5L9.65,21.72C10.4,21.9 11.19,22 12,22C12.84,22 13.66,21.9 14.44,21.7M20.61,7.06C20.8,7.96 20.76,9.05 20.39,10.25C19.42,13.37 17,19 16.1,21.13C19.58,19.58 22,16.12 22,12.1C22,10.26 21.5,8.53 20.61,7.06M4.31,8.64C4.31,8.64 3.82,8 3.31,8H2.78C2.28,9.13 2,10.62 2,12C2,16.09 4.5,19.61 8.12,21.11M3.13,7.14C4.8,4.03 8.14,2 12,2C14.5,2 16.78,3.06 18.53,4.56C18.03,4.46 17.5,4.57 16.93,4.89C15.64,5.63 15.22,7.71 16.89,8.76C17.94,9.41 18.31,11.04 18.27,12.04C18.24,13.03 15.85,17.61 15.85,17.61L13.5,9.63C13.5,9.63 13.44,9.07 13.44,8.91C13.44,8.71 13.5,8.46 13.63,8.31C13.72,8.22 13.85,8 14,8H15.11V7.14H9.11V8H9.3C9.5,8 9.69,8.29 9.87,8.47C10.09,8.7 10.37,9.55 10.7,10.43L11.57,13.3L9.69,17.63L7.63,8.97C7.63,8.97 7.69,8.37 7.82,8.27C7.9,8.2 8,8 8.17,8H8.22V7.14H3.13Z" /></g><g id="worker"><path d="M12,15C7.58,15 4,16.79 4,19V21H20V19C20,16.79 16.42,15 12,15M8,9A4,4 0 0,0 12,13A4,4 0 0,0 16,9M11.5,2C11.2,2 11,2.21 11,2.5V5.5H10V3C10,3 7.75,3.86 7.75,6.75C7.75,6.75 7,6.89 7,8H17C16.95,6.89 16.25,6.75 16.25,6.75C16.25,3.86 14,3 14,3V5.5H13V2.5C13,2.21 12.81,2 12.5,2H11.5Z" /></g><g id="wrap"><path d="M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z" /></g><g id="wrench"><path d="M22.7,19L13.6,9.9C14.5,7.6 14,4.9 12.1,3C10.1,1 7.1,0.6 4.7,1.7L9,6L6,9L1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1C4.8,14 7.5,14.5 9.8,13.6L18.9,22.7C19.3,23.1 19.9,23.1 20.3,22.7L22.6,20.4C23.1,20 23.1,19.3 22.7,19Z" /></g><g id="wunderlist"><path d="M17,17.5L12,15L7,17.5V5H5V19H19V5H17V17.5M12,12.42L14.25,13.77L13.65,11.22L15.64,9.5L13,9.27L12,6.86L11,9.27L8.36,9.5L10.35,11.22L9.75,13.77L12,12.42M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" /></g><g id="xaml"><path d="M18.93,12L15.46,18H8.54L5.07,12L8.54,6H15.46L18.93,12M23.77,12L19.73,19L18,18L21.46,12L18,6L19.73,5L23.77,12M0.23,12L4.27,5L6,6L2.54,12L6,18L4.27,19L0.23,12Z" /></g><g id="xbox"><path d="M6.43,3.72C6.5,3.66 6.57,3.6 6.62,3.56C8.18,2.55 10,2 12,2C13.88,2 15.64,2.5 17.14,3.42C17.25,3.5 17.54,3.69 17.7,3.88C16.25,2.28 12,5.7 12,5.7C10.5,4.57 9.17,3.8 8.16,3.5C7.31,3.29 6.73,3.5 6.46,3.7M19.34,5.21C19.29,5.16 19.24,5.11 19.2,5.06C18.84,4.66 18.38,4.56 18,4.59C17.61,4.71 15.9,5.32 13.8,7.31C13.8,7.31 16.17,9.61 17.62,11.96C19.07,14.31 19.93,16.16 19.4,18.73C21,16.95 22,14.59 22,12C22,9.38 21,7 19.34,5.21M15.73,12.96C15.08,12.24 14.13,11.21 12.86,9.95C12.59,9.68 12.3,9.4 12,9.1C12,9.1 11.53,9.56 10.93,10.17C10.16,10.94 9.17,11.95 8.61,12.54C7.63,13.59 4.81,16.89 4.65,18.74C4.65,18.74 4,17.28 5.4,13.89C6.3,11.68 9,8.36 10.15,7.28C10.15,7.28 9.12,6.14 7.82,5.35L7.77,5.32C7.14,4.95 6.46,4.66 5.8,4.62C5.13,4.67 4.71,5.16 4.71,5.16C3.03,6.95 2,9.35 2,12A10,10 0 0,0 12,22C14.93,22 17.57,20.74 19.4,18.73C19.4,18.73 19.19,17.4 17.84,15.5C17.53,15.07 16.37,13.69 15.73,12.96Z" /></g><g id="xbox-controller"><path d="M8.75,15.75C6.75,15.75 6,18 4,19C2,19 0.5,16 4.5,7.5H4.75L5.19,6.67C5.19,6.67 8,5 9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23.5,16 22,19 20,19C18,18 17.25,15.75 15.25,15.75H8.75M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z" /></g><g id="xbox-controller-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.5,15.75H8.75C6.75,15.75 6,18 4,19C2,19 0.5,16.04 4.42,7.69L2,5.27M9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23,15 22.28,18.2 20.69,18.87L7.62,5.8C8.25,5.73 8.87,5.81 9.33,6.23M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z" /></g><g id="xda"><path d="M-0.05,16.79L3.19,12.97L-0.05,9.15L1.5,7.86L4.5,11.41L7.5,7.86L9.05,9.15L5.81,12.97L9.05,16.79L7.5,18.07L4.5,14.5L1.5,18.07L-0.05,16.79M24,17A1,1 0 0,1 23,18H20A2,2 0 0,1 18,16V14A2,2 0 0,1 20,12H22V10H18V8H23A1,1 0 0,1 24,9M22,14H20V16H22V14M16,17A1,1 0 0,1 15,18H12A2,2 0 0,1 10,16V10A2,2 0 0,1 12,8H14V5H16V17M14,16V10H12V16H14Z" /></g><g id="xing"><path d="M17.67,2C17.24,2 17.05,2.27 16.9,2.55C16.9,2.55 10.68,13.57 10.5,13.93L14.58,21.45C14.72,21.71 14.94,22 15.38,22H18.26C18.44,22 18.57,21.93 18.64,21.82C18.72,21.69 18.72,21.53 18.64,21.37L14.57,13.92L20.96,2.63C21.04,2.47 21.04,2.31 20.97,2.18C20.89,2.07 20.76,2 20.58,2M5.55,5.95C5.38,5.95 5.23,6 5.16,6.13C5.08,6.26 5.09,6.41 5.18,6.57L7.12,9.97L4.06,15.37C4,15.53 4,15.69 4.06,15.82C4.13,15.94 4.26,16 4.43,16H7.32C7.75,16 7.96,15.72 8.11,15.45C8.11,15.45 11.1,10.16 11.22,9.95L9.24,6.5C9.1,6.24 8.88,5.95 8.43,5.95" /></g><g id="xing-box"><path d="M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z" /></g><g id="xing-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.85,6H17.74C17.86,6 17.94,6.04 18,6.12C18.04,6.2 18.04,6.3 18,6.41L13.84,13.76L16.5,18.59C16.53,18.69 16.53,18.8 16.5,18.88C16.43,18.96 16.35,19 16.24,19H14.36C14.07,19 13.93,18.81 13.84,18.64L11.17,13.76C11.31,13.5 15.35,6.36 15.35,6.36C15.45,6.18 15.57,6 15.85,6M7.5,8.57H9.39C9.67,8.57 9.81,8.75 9.9,8.92L11.19,11.17C11.12,11.3 9.17,14.75 9.17,14.75C9.07,14.92 8.94,15.11 8.66,15.11H6.78C6.67,15.11 6.59,15.06 6.54,15C6.5,14.9 6.5,14.8 6.54,14.69L8.53,11.17L7.27,9C7.21,8.87 7.2,8.77 7.25,8.69C7.3,8.61 7.39,8.57 7.5,8.57Z" /></g><g id="xml"><path d="M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z" /></g><g id="yeast"><path d="M18,14A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18L14.09,17.15C14.05,16.45 13.92,15.84 13.55,15.5C13.35,15.3 13.07,15.19 12.75,15.13C11.79,15.68 10.68,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,10.68 15.68,11.79 15.13,12.75C15.19,13.07 15.3,13.35 15.5,13.55C15.84,13.92 16.45,14.05 17.15,14.09L18,14M7.5,10A1.5,1.5 0 0,1 9,11.5A1.5,1.5 0 0,1 7.5,13A1.5,1.5 0 0,1 6,11.5A1.5,1.5 0 0,1 7.5,10M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></g><g id="yelp"><path d="M10.59,2C11.23,2 11.5,2.27 11.58,2.97L11.79,6.14L12.03,10.29C12.05,10.64 12,11 11.86,11.32C11.64,11.77 11.14,11.89 10.73,11.58C10.5,11.39 10.31,11.14 10.15,10.87L6.42,4.55C6.06,3.94 6.17,3.54 6.77,3.16C7.5,2.68 9.73,2 10.59,2M14.83,14.85L15.09,14.91L18.95,16.31C19.61,16.55 19.79,16.92 19.5,17.57C19.06,18.7 18.34,19.66 17.42,20.45C16.96,20.85 16.5,20.78 16.21,20.28L13.94,16.32C13.55,15.61 14.03,14.8 14.83,14.85M4.5,14C4.5,13.26 4.5,12.55 4.75,11.87C4.97,11.2 5.33,11 6,11.27L9.63,12.81C10.09,13 10.35,13.32 10.33,13.84C10.3,14.36 9.97,14.58 9.53,14.73L5.85,15.94C5.15,16.17 4.79,15.96 4.64,15.25C4.55,14.83 4.47,14.4 4.5,14M11.97,21C11.95,21.81 11.6,22.12 10.81,22C9.77,21.8 8.81,21.4 7.96,20.76C7.54,20.44 7.45,19.95 7.76,19.53L10.47,15.97C10.7,15.67 11.03,15.6 11.39,15.74C11.77,15.88 11.97,16.18 11.97,16.59V21M14.45,13.32C13.73,13.33 13.23,12.5 13.64,11.91C14.47,10.67 15.35,9.46 16.23,8.26C16.5,7.85 16.94,7.82 17.31,8.16C18.24,9 18.91,10 19.29,11.22C19.43,11.67 19.25,12.08 18.83,12.2L15.09,13.17L14.45,13.32Z" /></g><g id="yin-yang"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,6.5A1.5,1.5 0 0,1 13.5,8A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 10.5,8A1.5,1.5 0 0,1 12,6.5M12,14.5A1.5,1.5 0 0,0 10.5,16A1.5,1.5 0 0,0 12,17.5A1.5,1.5 0 0,0 13.5,16A1.5,1.5 0 0,0 12,14.5Z" /></g><g id="youtube-play"><path d="M10,16.5V7.5L16,12M20,4.4C19.4,4.2 15.7,4 12,4C8.3,4 4.6,4.19 4,4.38C2.44,4.9 2,8.4 2,12C2,15.59 2.44,19.1 4,19.61C4.6,19.81 8.3,20 12,20C15.7,20 19.4,19.81 20,19.61C21.56,19.1 22,15.59 22,12C22,8.4 21.56,4.91 20,4.4Z" /></g><g id="zip-box"><path d="M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g></defs></svg></iron-iconset-svg> \ No newline at end of file +<iron-iconset-svg name="mdi" iconSize="24"><svg><defs><g id="access-point"><path d="M4.93,4.93C3.12,6.74 2,9.24 2,12C2,14.76 3.12,17.26 4.93,19.07L6.34,17.66C4.89,16.22 4,14.22 4,12C4,9.79 4.89,7.78 6.34,6.34L4.93,4.93M19.07,4.93L17.66,6.34C19.11,7.78 20,9.79 20,12C20,14.22 19.11,16.22 17.66,17.66L19.07,19.07C20.88,17.26 22,14.76 22,12C22,9.24 20.88,6.74 19.07,4.93M7.76,7.76C6.67,8.85 6,10.35 6,12C6,13.65 6.67,15.15 7.76,16.24L9.17,14.83C8.45,14.11 8,13.11 8,12C8,10.89 8.45,9.89 9.17,9.17L7.76,7.76M16.24,7.76L14.83,9.17C15.55,9.89 16,10.89 16,12C16,13.11 15.55,14.11 14.83,14.83L16.24,16.24C17.33,15.15 18,13.65 18,12C18,10.35 17.33,8.85 16.24,7.76M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="access-point-network"><path d="M4.93,2.93C3.12,4.74 2,7.24 2,10C2,12.76 3.12,15.26 4.93,17.07L6.34,15.66C4.89,14.22 4,12.22 4,10C4,7.79 4.89,5.78 6.34,4.34L4.93,2.93M19.07,2.93L17.66,4.34C19.11,5.78 20,7.79 20,10C20,12.22 19.11,14.22 17.66,15.66L19.07,17.07C20.88,15.26 22,12.76 22,10C22,7.24 20.88,4.74 19.07,2.93M7.76,5.76C6.67,6.85 6,8.35 6,10C6,11.65 6.67,13.15 7.76,14.24L9.17,12.83C8.45,12.11 8,11.11 8,10C8,8.89 8.45,7.89 9.17,7.17L7.76,5.76M16.24,5.76L14.83,7.17C15.55,7.89 16,8.89 16,10C16,11.11 15.55,12.11 14.83,12.83L16.24,14.24C17.33,13.15 18,11.65 18,10C18,8.35 17.33,6.85 16.24,5.76M12,8A2,2 0 0,0 10,10A2,2 0 0,0 12,12A2,2 0 0,0 14,10A2,2 0 0,0 12,8M11,14V18H10A1,1 0 0,0 9,19H2V21H9A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21H22V19H15A1,1 0 0,0 14,18H13V14H11Z" /></g><g id="account"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z" /></g><g id="account-alert"><path d="M10,4A4,4 0 0,1 14,8A4,4 0 0,1 10,12A4,4 0 0,1 6,8A4,4 0 0,1 10,4M10,14C14.42,14 18,15.79 18,18V20H2V18C2,15.79 5.58,14 10,14M20,12V7H22V12H20M20,16V14H22V16H20Z" /></g><g id="account-box"><path d="M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9M3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5C3.89,3 3,3.9 3,5Z" /></g><g id="account-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z" /></g><g id="account-card-details"><path d="M2,3H22C23.05,3 24,3.95 24,5V19C24,20.05 23.05,21 22,21H2C0.95,21 0,20.05 0,19V5C0,3.95 0.95,3 2,3M14,6V7H22V6H14M14,8V9H21.5L22,9V8H14M14,10V11H21V10H14M8,13.91C6,13.91 2,15 2,17V18H14V17C14,15 10,13.91 8,13.91M8,6A3,3 0 0,0 5,9A3,3 0 0,0 8,12A3,3 0 0,0 11,9A3,3 0 0,0 8,6Z" /></g><g id="account-check"><path d="M9,5A3.5,3.5 0 0,1 12.5,8.5A3.5,3.5 0 0,1 9,12A3.5,3.5 0 0,1 5.5,8.5A3.5,3.5 0 0,1 9,5M9,13.75C12.87,13.75 16,15.32 16,17.25V19H2V17.25C2,15.32 5.13,13.75 9,13.75M17,12.66L14.25,9.66L15.41,8.5L17,10.09L20.59,6.5L21.75,7.91L17,12.66Z" /></g><g id="account-circle"><path d="M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="account-convert"><path d="M7.5,21.5L8.85,20.16L12.66,23.97L12,24C5.71,24 0.56,19.16 0.05,13H1.55C1.91,16.76 4.25,19.94 7.5,21.5M16.5,2.5L15.15,3.84L11.34,0.03L12,0C18.29,0 23.44,4.84 23.95,11H22.45C22.09,7.24 19.75,4.07 16.5,2.5M6,17C6,15 10,13.9 12,13.9C14,13.9 18,15 18,17V18H6V17M15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6A3,3 0 0,1 15,9Z" /></g><g id="account-key"><path d="M11,10V12H10V14H8V12H5.83C5.42,13.17 4.31,14 3,14A3,3 0 0,1 0,11A3,3 0 0,1 3,8C4.31,8 5.42,8.83 5.83,10H11M3,10A1,1 0 0,0 2,11A1,1 0 0,0 3,12A1,1 0 0,0 4,11A1,1 0 0,0 3,10M16,14C18.67,14 24,15.34 24,18V20H8V18C8,15.34 13.33,14 16,14M16,12A4,4 0 0,1 12,8A4,4 0 0,1 16,4A4,4 0 0,1 20,8A4,4 0 0,1 16,12Z" /></g><g id="account-location"><path d="M18,16H6V15.1C6,13.1 10,12 12,12C14,12 18,13.1 18,15.1M12,5.3C13.5,5.3 14.7,6.5 14.7,8C14.7,9.5 13.5,10.7 12,10.7C10.5,10.7 9.3,9.5 9.3,8C9.3,6.5 10.5,5.3 12,5.3M19,2H5C3.89,2 3,2.89 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4C21,2.89 20.1,2 19,2Z" /></g><g id="account-minus"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M1,10V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" /></g><g id="account-multiple"><path d="M16,13C15.71,13 15.38,13 15.03,13.05C16.19,13.89 17,15 17,16.5V19H23V16.5C23,14.17 18.33,13 16,13M8,13C5.67,13 1,14.17 1,16.5V19H15V16.5C15,14.17 10.33,13 8,13M8,11A3,3 0 0,0 11,8A3,3 0 0,0 8,5A3,3 0 0,0 5,8A3,3 0 0,0 8,11M16,11A3,3 0 0,0 19,8A3,3 0 0,0 16,5A3,3 0 0,0 13,8A3,3 0 0,0 16,11Z" /></g><g id="account-multiple-minus"><path d="M13,13C11,13 7,14 7,16V18H19V16C19,14 15,13 13,13M19.62,13.16C20.45,13.88 21,14.82 21,16V18H24V16C24,14.46 21.63,13.5 19.62,13.16M13,11A3,3 0 0,0 16,8A3,3 0 0,0 13,5A3,3 0 0,0 10,8A3,3 0 0,0 13,11M18,11A3,3 0 0,0 21,8A3,3 0 0,0 18,5C17.68,5 17.37,5.05 17.08,5.14C17.65,5.95 18,6.94 18,8C18,9.06 17.65,10.04 17.08,10.85C17.37,10.95 17.68,11 18,11M8,10H0V12H8V10Z" /></g><g id="account-multiple-outline"><path d="M16.5,6.5A2,2 0 0,1 18.5,8.5A2,2 0 0,1 16.5,10.5A2,2 0 0,1 14.5,8.5A2,2 0 0,1 16.5,6.5M16.5,12A3.5,3.5 0 0,0 20,8.5A3.5,3.5 0 0,0 16.5,5A3.5,3.5 0 0,0 13,8.5A3.5,3.5 0 0,0 16.5,12M7.5,6.5A2,2 0 0,1 9.5,8.5A2,2 0 0,1 7.5,10.5A2,2 0 0,1 5.5,8.5A2,2 0 0,1 7.5,6.5M7.5,12A3.5,3.5 0 0,0 11,8.5A3.5,3.5 0 0,0 7.5,5A3.5,3.5 0 0,0 4,8.5A3.5,3.5 0 0,0 7.5,12M21.5,17.5H14V16.25C14,15.79 13.8,15.39 13.5,15.03C14.36,14.73 15.44,14.5 16.5,14.5C18.94,14.5 21.5,15.71 21.5,16.25M12.5,17.5H2.5V16.25C2.5,15.71 5.06,14.5 7.5,14.5C9.94,14.5 12.5,15.71 12.5,16.25M16.5,13C15.3,13 13.43,13.34 12,14C10.57,13.33 8.7,13 7.5,13C5.33,13 1,14.08 1,16.25V19H23V16.25C23,14.08 18.67,13 16.5,13Z" /></g><g id="account-multiple-plus"><path d="M13,13C11,13 7,14 7,16V18H19V16C19,14 15,13 13,13M19.62,13.16C20.45,13.88 21,14.82 21,16V18H24V16C24,14.46 21.63,13.5 19.62,13.16M13,11A3,3 0 0,0 16,8A3,3 0 0,0 13,5A3,3 0 0,0 10,8A3,3 0 0,0 13,11M18,11A3,3 0 0,0 21,8A3,3 0 0,0 18,5C17.68,5 17.37,5.05 17.08,5.14C17.65,5.95 18,6.94 18,8C18,9.06 17.65,10.04 17.08,10.85C17.37,10.95 17.68,11 18,11M8,10H5V7H3V10H0V12H3V15H5V12H8V10Z" /></g><g id="account-network"><path d="M13,16V18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H5V14.5C5,12.57 8.13,11 12,11C15.87,11 19,12.57 19,14.5V16H13M12,2A3.5,3.5 0 0,1 15.5,5.5A3.5,3.5 0 0,1 12,9A3.5,3.5 0 0,1 8.5,5.5A3.5,3.5 0 0,1 12,2Z" /></g><g id="account-off"><path d="M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z" /></g><g id="account-outline"><path d="M12,13C9.33,13 4,14.33 4,17V20H20V17C20,14.33 14.67,13 12,13M12,4A4,4 0 0,0 8,8A4,4 0 0,0 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,14.9C14.97,14.9 18.1,16.36 18.1,17V18.1H5.9V17C5.9,16.36 9,14.9 12,14.9M12,5.9A2.1,2.1 0 0,1 14.1,8A2.1,2.1 0 0,1 12,10.1A2.1,2.1 0 0,1 9.9,8A2.1,2.1 0 0,1 12,5.9Z" /></g><g id="account-plus"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" /></g><g id="account-remove"><path d="M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z" /></g><g id="account-search"><path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,14C11.11,14 12.5,13.15 13.32,11.88C12.5,10.75 11.11,10 9.5,10C7.89,10 6.5,10.75 5.68,11.88C6.5,13.15 7.89,14 9.5,14M9.5,5A1.75,1.75 0 0,0 7.75,6.75A1.75,1.75 0 0,0 9.5,8.5A1.75,1.75 0 0,0 11.25,6.75A1.75,1.75 0 0,0 9.5,5Z" /></g><g id="account-settings"><path d="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14M7,22H9V24H7V22M11,22H13V24H11V22M15,22H17V24H15V22Z" /></g><g id="account-settings-variant"><path d="M9,4A4,4 0 0,0 5,8A4,4 0 0,0 9,12A4,4 0 0,0 13,8A4,4 0 0,0 9,4M9,14C6.33,14 1,15.33 1,18V20H12.08C12.03,19.67 12,19.34 12,19C12,17.5 12.5,16 13.41,14.8C11.88,14.28 10.18,14 9,14M18,14C17.87,14 17.76,14.09 17.74,14.21L17.55,15.53C17.25,15.66 16.96,15.82 16.7,16L15.46,15.5C15.35,15.5 15.22,15.5 15.15,15.63L14.15,17.36C14.09,17.47 14.11,17.6 14.21,17.68L15.27,18.5C15.25,18.67 15.24,18.83 15.24,19C15.24,19.17 15.25,19.33 15.27,19.5L14.21,20.32C14.12,20.4 14.09,20.53 14.15,20.64L15.15,22.37C15.21,22.5 15.34,22.5 15.46,22.5L16.7,22C16.96,22.18 17.24,22.35 17.55,22.47L17.74,23.79C17.76,23.91 17.86,24 18,24H20C20.11,24 20.22,23.91 20.24,23.79L20.43,22.47C20.73,22.34 21,22.18 21.27,22L22.5,22.5C22.63,22.5 22.76,22.5 22.83,22.37L23.83,20.64C23.89,20.53 23.86,20.4 23.77,20.32L22.7,19.5C22.72,19.33 22.74,19.17 22.74,19C22.74,18.83 22.73,18.67 22.7,18.5L23.76,17.68C23.85,17.6 23.88,17.47 23.82,17.36L22.82,15.63C22.76,15.5 22.63,15.5 22.5,15.5L21.27,16C21,15.82 20.73,15.65 20.42,15.53L20.23,14.21C20.22,14.09 20.11,14 20,14M19,17.5A1.5,1.5 0 0,1 20.5,19A1.5,1.5 0 0,1 19,20.5C18.16,20.5 17.5,19.83 17.5,19A1.5,1.5 0 0,1 19,17.5Z" /></g><g id="account-star"><path d="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12M5,13.28L7.45,14.77L6.8,11.96L9,10.08L6.11,9.83L5,7.19L3.87,9.83L1,10.08L3.18,11.96L2.5,14.77L5,13.28Z" /></g><g id="account-star-variant"><path d="M9,14C11.67,14 17,15.33 17,18V20H1V18C1,15.33 6.33,14 9,14M9,12A4,4 0 0,1 5,8A4,4 0 0,1 9,4A4,4 0 0,1 13,8A4,4 0 0,1 9,12M19,13.28L16.54,14.77L17.2,11.96L15,10.08L17.89,9.83L19,7.19L20.13,9.83L23,10.08L20.82,11.96L21.5,14.77L19,13.28Z" /></g><g id="account-switch"><path d="M16,9C18.33,9 23,10.17 23,12.5V15H17V12.5C17,11 16.19,9.89 15.04,9.05L16,9M8,9C10.33,9 15,10.17 15,12.5V15H1V12.5C1,10.17 5.67,9 8,9M8,7A3,3 0 0,1 5,4A3,3 0 0,1 8,1A3,3 0 0,1 11,4A3,3 0 0,1 8,7M16,7A3,3 0 0,1 13,4A3,3 0 0,1 16,1A3,3 0 0,1 19,4A3,3 0 0,1 16,7M9,16.75V19H15V16.75L18.25,20L15,23.25V21H9V23.25L5.75,20L9,16.75Z" /></g><g id="adjust"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12Z" /></g><g id="air-conditioner"><path d="M6.59,0.66C8.93,-1.15 11.47,1.06 12.04,4.5C12.47,4.5 12.89,4.62 13.27,4.84C13.79,4.24 14.25,3.42 14.07,2.5C13.65,0.35 16.06,-1.39 18.35,1.58C20.16,3.92 17.95,6.46 14.5,7.03C14.5,7.46 14.39,7.89 14.16,8.27C14.76,8.78 15.58,9.24 16.5,9.06C18.63,8.64 20.38,11.04 17.41,13.34C15.07,15.15 12.53,12.94 11.96,9.5C11.53,9.5 11.11,9.37 10.74,9.15C10.22,9.75 9.75,10.58 9.93,11.5C10.35,13.64 7.94,15.39 5.65,12.42C3.83,10.07 6.05,7.53 9.5,6.97C9.5,6.54 9.63,6.12 9.85,5.74C9.25,5.23 8.43,4.76 7.5,4.94C5.37,5.36 3.62,2.96 6.59,0.66M5,16H7A2,2 0 0,1 9,18V24H7V22H5V24H3V18A2,2 0 0,1 5,16M5,18V20H7V18H5M12.93,16H15L12.07,24H10L12.93,16M18,16H21V18H18V22H21V24H18A2,2 0 0,1 16,22V18A2,2 0 0,1 18,16Z" /></g><g id="airballoon"><path d="M11,23A2,2 0 0,1 9,21V19H15V21A2,2 0 0,1 13,23H11M12,1C12.71,1 13.39,1.09 14.05,1.26C15.22,2.83 16,5.71 16,9C16,11.28 15.62,13.37 15,16A2,2 0 0,1 13,18H11A2,2 0 0,1 9,16C8.38,13.37 8,11.28 8,9C8,5.71 8.78,2.83 9.95,1.26C10.61,1.09 11.29,1 12,1M20,8C20,11.18 18.15,15.92 15.46,17.21C16.41,15.39 17,11.83 17,9C17,6.17 16.41,3.61 15.46,1.79C18.15,3.08 20,4.82 20,8M4,8C4,4.82 5.85,3.08 8.54,1.79C7.59,3.61 7,6.17 7,9C7,11.83 7.59,15.39 8.54,17.21C5.85,15.92 4,11.18 4,8Z" /></g><g id="airplane"><path d="M21,16V14L13,9V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V9L2,14V16L10,13.5V19L8,20.5V22L11.5,21L15,22V20.5L13,19V13.5L21,16Z" /></g><g id="airplane-landing"><path d="M2.5,19H21.5V21H2.5V19M9.68,13.27L14.03,14.43L19.34,15.85C20.14,16.06 20.96,15.59 21.18,14.79C21.39,14 20.92,13.17 20.12,12.95L14.81,11.53L12.05,2.5L10.12,2V10.28L5.15,8.95L4.22,6.63L2.77,6.24V11.41L4.37,11.84L9.68,13.27Z" /></g><g id="airplane-off"><path d="M3.15,5.27L8.13,10.26L2.15,14V16L10.15,13.5V19L8.15,20.5V22L11.65,21L15.15,22V20.5L13.15,19V15.27L18.87,21L20.15,19.73L4.42,4M13.15,9V3.5A1.5,1.5 0 0,0 11.65,2A1.5,1.5 0 0,0 10.15,3.5V7.18L17.97,15L21.15,16V14L13.15,9Z" /></g><g id="airplane-takeoff"><path d="M2.5,19H21.5V21H2.5V19M22.07,9.64C21.86,8.84 21.03,8.36 20.23,8.58L14.92,10L8,3.57L6.09,4.08L10.23,11.25L5.26,12.58L3.29,11.04L1.84,11.43L3.66,14.59L4.43,15.92L6.03,15.5L11.34,14.07L15.69,12.91L21,11.5C21.81,11.26 22.28,10.44 22.07,9.64Z" /></g><g id="airplay"><path d="M6,22H18L12,16M21,3H3A2,2 0 0,0 1,5V17A2,2 0 0,0 3,19H7V17H3V5H21V17H17V19H21A2,2 0 0,0 23,17V5A2,2 0 0,0 21,3Z" /></g><g id="alarm"><path d="M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12.5,8H11V14L15.75,16.85L16.5,15.62L12.5,13.25V8M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z" /></g><g id="alarm-check"><path d="M10.54,14.53L8.41,12.4L7.35,13.46L10.53,16.64L16.53,10.64L15.47,9.58L10.54,14.53M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72Z" /></g><g id="alarm-multiple"><path d="M9.29,3.25L5.16,6.72L4,5.34L8.14,1.87L9.29,3.25M22,5.35L20.84,6.73L16.7,3.25L17.86,1.87L22,5.35M13,4A8,8 0 0,1 21,12A8,8 0 0,1 13,20A8,8 0 0,1 5,12A8,8 0 0,1 13,4M13,6A6,6 0 0,0 7,12A6,6 0 0,0 13,18A6,6 0 0,0 19,12A6,6 0 0,0 13,6M12,7.5H13.5V12.03L16.72,13.5L16.1,14.86L12,13V7.5M1,14C1,11.5 2.13,9.3 3.91,7.83C3.33,9.1 3,10.5 3,12L3.06,13.13L3,14C3,16.28 4.27,18.26 6.14,19.28C7.44,20.5 9.07,21.39 10.89,21.78C10.28,21.92 9.65,22 9,22A8,8 0 0,1 1,14Z" /></g><g id="alarm-off"><path d="M8,3.28L6.6,1.86L5.74,2.57L7.16,4M16.47,18.39C15.26,19.39 13.7,20 12,20A7,7 0 0,1 5,13C5,11.3 5.61,9.74 6.61,8.53M2.92,2.29L1.65,3.57L3,4.9L1.87,5.83L3.29,7.25L4.4,6.31L5.2,7.11C3.83,8.69 3,10.75 3,13A9,9 0 0,0 12,22C14.25,22 16.31,21.17 17.89,19.8L20.09,22L21.36,20.73L3.89,3.27L2.92,2.29M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,6A7,7 0 0,1 19,13C19,13.84 18.84,14.65 18.57,15.4L20.09,16.92C20.67,15.73 21,14.41 21,13A9,9 0 0,0 12,4C10.59,4 9.27,4.33 8.08,4.91L9.6,6.43C10.35,6.16 11.16,6 12,6Z" /></g><g id="alarm-plus"><path d="M13,9H11V12H8V14H11V17H13V14H16V12H13M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39Z" /></g><g id="alarm-snooze"><path d="M7.88,3.39L6.6,1.86L2,5.71L3.29,7.24L7.88,3.39M22,5.72L17.4,1.86L16.11,3.39L20.71,7.25L22,5.72M12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22A9,9 0 0,0 21,13A9,9 0 0,0 12,4M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M9,11H12.63L9,15.2V17H15V15H11.37L15,10.8V9H9V11Z" /></g><g id="album"><path d="M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12,16.5C9.5,16.5 7.5,14.5 7.5,12C7.5,9.5 9.5,7.5 12,7.5C14.5,7.5 16.5,9.5 16.5,12C16.5,14.5 14.5,16.5 12,16.5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="alert"><path d="M13,14H11V10H13M13,18H11V16H13M1,21H23L12,2L1,21Z" /></g><g id="alert-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13,13V7H11V13H13M13,17V15H11V17H13Z" /></g><g id="alert-circle"><path d="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="alert-circle-outline"><path d="M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z" /></g><g id="alert-octagon"><path d="M13,13H11V7H13M12,17.3A1.3,1.3 0 0,1 10.7,16A1.3,1.3 0 0,1 12,14.7A1.3,1.3 0 0,1 13.3,16A1.3,1.3 0 0,1 12,17.3M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3Z" /></g><g id="alert-outline"><path d="M12,2L1,21H23M12,6L19.53,19H4.47M11,10V14H13V10M11,16V18H13V16" /></g><g id="all-inclusive"><path d="M18.6,6.62C17.16,6.62 15.8,7.18 14.83,8.15L7.8,14.39C7.16,15.03 6.31,15.38 5.4,15.38C3.53,15.38 2,13.87 2,12C2,10.13 3.53,8.62 5.4,8.62C6.31,8.62 7.16,8.97 7.84,9.65L8.97,10.65L10.5,9.31L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62C2.42,6.62 0,9.04 0,12C0,14.96 2.42,17.38 5.4,17.38C6.84,17.38 8.2,16.82 9.17,15.85L16.2,9.61C16.84,8.97 17.69,8.62 18.6,8.62C20.47,8.62 22,10.13 22,12C22,13.87 20.47,15.38 18.6,15.38C17.7,15.38 16.84,15.03 16.16,14.35L15,13.34L13.5,14.68L14.78,15.8C15.8,16.81 17.15,17.37 18.6,17.37C21.58,17.37 24,14.96 24,12C24,9 21.58,6.62 18.6,6.62Z" /></g><g id="alpha"><path d="M18.08,17.8C17.62,17.93 17.21,18 16.85,18C15.65,18 14.84,17.12 14.43,15.35H14.38C13.39,17.26 12,18.21 10.25,18.21C8.94,18.21 7.89,17.72 7.1,16.73C6.31,15.74 5.92,14.5 5.92,13C5.92,11.25 6.37,9.85 7.26,8.76C8.15,7.67 9.36,7.12 10.89,7.12C11.71,7.12 12.45,7.35 13.09,7.8C13.73,8.26 14.22,8.9 14.56,9.73H14.6L15.31,7.33H17.87L15.73,12.65C15.97,13.89 16.22,14.74 16.5,15.19C16.74,15.64 17.08,15.87 17.5,15.87C17.74,15.87 17.93,15.83 18.1,15.76L18.08,17.8M13.82,12.56C13.61,11.43 13.27,10.55 12.81,9.95C12.36,9.34 11.81,9.04 11.18,9.04C10.36,9.04 9.7,9.41 9.21,10.14C8.72,10.88 8.5,11.79 8.5,12.86C8.5,13.84 8.69,14.65 9.12,15.31C9.54,15.97 10.11,16.29 10.82,16.29C11.42,16.29 11.97,16 12.46,15.45C12.96,14.88 13.37,14.05 13.7,12.96L13.82,12.56Z" /></g><g id="alphabetical"><path d="M6,11A2,2 0 0,1 8,13V17H4A2,2 0 0,1 2,15V13A2,2 0 0,1 4,11H6M4,13V15H6V13H4M20,13V15H22V17H20A2,2 0 0,1 18,15V13A2,2 0 0,1 20,11H22V13H20M12,7V11H14A2,2 0 0,1 16,13V15A2,2 0 0,1 14,17H12A2,2 0 0,1 10,15V7H12M12,15H14V13H12V15Z" /></g><g id="altimeter"><path d="M7,3V5H17V3H7M9,7V9H15V7H9M2,7.96V16.04L6.03,12L2,7.96M22.03,7.96L18,12L22.03,16.04V7.96M7,11V13H17V11H7M9,15V17H15V15H9M7,19V21H17V19H7Z" /></g><g id="amazon"><path d="M15.93,17.09C15.75,17.25 15.5,17.26 15.3,17.15C14.41,16.41 14.25,16.07 13.76,15.36C12.29,16.86 11.25,17.31 9.34,17.31C7.09,17.31 5.33,15.92 5.33,13.14C5.33,10.96 6.5,9.5 8.19,8.76C9.65,8.12 11.68,8 13.23,7.83V7.5C13.23,6.84 13.28,6.09 12.9,5.54C12.58,5.05 11.95,4.84 11.4,4.84C10.38,4.84 9.47,5.37 9.25,6.45C9.2,6.69 9,6.93 8.78,6.94L6.18,6.66C5.96,6.61 5.72,6.44 5.78,6.1C6.38,2.95 9.23,2 11.78,2C13.08,2 14.78,2.35 15.81,3.33C17.11,4.55 17,6.18 17,7.95V12.12C17,13.37 17.5,13.93 18,14.6C18.17,14.85 18.21,15.14 18,15.31L15.94,17.09H15.93M13.23,10.56V10C11.29,10 9.24,10.39 9.24,12.67C9.24,13.83 9.85,14.62 10.87,14.62C11.63,14.62 12.3,14.15 12.73,13.4C13.25,12.47 13.23,11.6 13.23,10.56M20.16,19.54C18,21.14 14.82,22 12.1,22C8.29,22 4.85,20.59 2.25,18.24C2.05,18.06 2.23,17.81 2.5,17.95C5.28,19.58 8.75,20.56 12.33,20.56C14.74,20.56 17.4,20.06 19.84,19.03C20.21,18.87 20.5,19.27 20.16,19.54M21.07,18.5C20.79,18.14 19.22,18.33 18.5,18.42C18.31,18.44 18.28,18.26 18.47,18.12C19.71,17.24 21.76,17.5 22,17.79C22.24,18.09 21.93,20.14 20.76,21.11C20.58,21.27 20.41,21.18 20.5,21C20.76,20.33 21.35,18.86 21.07,18.5Z" /></g><g id="amazon-clouddrive"><path d="M4.94,11.12C5.23,11.12 5.5,11.16 5.76,11.23C5.77,9.09 7.5,7.35 9.65,7.35C11.27,7.35 12.67,8.35 13.24,9.77C13.83,9 14.74,8.53 15.76,8.53C17.5,8.53 18.94,9.95 18.94,11.71C18.94,11.95 18.91,12.2 18.86,12.43C19.1,12.34 19.37,12.29 19.65,12.29C20.95,12.29 22,13.35 22,14.65C22,15.95 20.95,17 19.65,17C18.35,17 6.36,17 4.94,17C3.32,17 2,15.68 2,14.06C2,12.43 3.32,11.12 4.94,11.12Z" /></g><g id="ambulance"><path d="M18,18.5A1.5,1.5 0 0,0 19.5,17A1.5,1.5 0 0,0 18,15.5A1.5,1.5 0 0,0 16.5,17A1.5,1.5 0 0,0 18,18.5M19.5,9.5H17V12H21.46L19.5,9.5M6,18.5A1.5,1.5 0 0,0 7.5,17A1.5,1.5 0 0,0 6,15.5A1.5,1.5 0 0,0 4.5,17A1.5,1.5 0 0,0 6,18.5M20,8L23,12V17H21A3,3 0 0,1 18,20A3,3 0 0,1 15,17H9A3,3 0 0,1 6,20A3,3 0 0,1 3,17H1V6C1,4.89 1.89,4 3,4H17V8H20M8,6V9H5V11H8V14H10V11H13V9H10V6H8Z" /></g><g id="amplifier"><path d="M10,2H14A1,1 0 0,1 15,3H21V21H19A1,1 0 0,1 18,22A1,1 0 0,1 17,21H7A1,1 0 0,1 6,22A1,1 0 0,1 5,21H3V3H9A1,1 0 0,1 10,2M5,5V9H19V5H5M7,6A1,1 0 0,1 8,7A1,1 0 0,1 7,8A1,1 0 0,1 6,7A1,1 0 0,1 7,6M12,6H14V7H12V6M15,6H16V8H15V6M17,6H18V8H17V6M12,11A4,4 0 0,0 8,15A4,4 0 0,0 12,19A4,4 0 0,0 16,15A4,4 0 0,0 12,11M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6Z" /></g><g id="anchor"><path d="M12,2A3,3 0 0,0 9,5C9,6.27 9.8,7.4 11,7.83V10H8V12H11V18.92C9.16,18.63 7.53,17.57 6.53,16H8V14H3V19H5V17.3C6.58,19.61 9.2,21 12,21C14.8,21 17.42,19.61 19,17.31V19H21V14H16V16H17.46C16.46,17.56 14.83,18.63 13,18.92V12H16V10H13V7.82C14.2,7.4 15,6.27 15,5A3,3 0 0,0 12,2M12,4A1,1 0 0,1 13,5A1,1 0 0,1 12,6A1,1 0 0,1 11,5A1,1 0 0,1 12,4Z" /></g><g id="android"><path d="M15,5H14V4H15M10,5H9V4H10M15.53,2.16L16.84,0.85C17.03,0.66 17.03,0.34 16.84,0.14C16.64,-0.05 16.32,-0.05 16.13,0.14L14.65,1.62C13.85,1.23 12.95,1 12,1C11.04,1 10.14,1.23 9.34,1.63L7.85,0.14C7.66,-0.05 7.34,-0.05 7.15,0.14C6.95,0.34 6.95,0.66 7.15,0.85L8.46,2.16C6.97,3.26 6,5 6,7H18C18,5 17,3.25 15.53,2.16M20.5,8A1.5,1.5 0 0,0 19,9.5V16.5A1.5,1.5 0 0,0 20.5,18A1.5,1.5 0 0,0 22,16.5V9.5A1.5,1.5 0 0,0 20.5,8M3.5,8A1.5,1.5 0 0,0 2,9.5V16.5A1.5,1.5 0 0,0 3.5,18A1.5,1.5 0 0,0 5,16.5V9.5A1.5,1.5 0 0,0 3.5,8M6,18A1,1 0 0,0 7,19H8V22.5A1.5,1.5 0 0,0 9.5,24A1.5,1.5 0 0,0 11,22.5V19H13V22.5A1.5,1.5 0 0,0 14.5,24A1.5,1.5 0 0,0 16,22.5V19H17A1,1 0 0,0 18,18V8H6V18Z" /></g><g id="android-debug-bridge"><path d="M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z" /></g><g id="android-studio"><path d="M11,2H13V4H13.5A1.5,1.5 0 0,1 15,5.5V9L14.56,9.44L16.2,12.28C17.31,11.19 18,9.68 18,8H20C20,10.42 18.93,12.59 17.23,14.06L20.37,19.5L20.5,21.72L18.63,20.5L15.56,15.17C14.5,15.7 13.28,16 12,16C10.72,16 9.5,15.7 8.44,15.17L5.37,20.5L3.5,21.72L3.63,19.5L9.44,9.44L9,9V5.5A1.5,1.5 0 0,1 10.5,4H11V2M9.44,13.43C10.22,13.8 11.09,14 12,14C12.91,14 13.78,13.8 14.56,13.43L13.1,10.9H13.09C12.47,11.5 11.53,11.5 10.91,10.9H10.9L9.44,13.43M12,6A1,1 0 0,0 11,7A1,1 0 0,0 12,8A1,1 0 0,0 13,7A1,1 0 0,0 12,6Z" /></g><g id="angular"><path d="M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.6L6.47,17H8.53L9.64,14.22H14.34L15.45,17H17.5L12,4.6M13.62,12.5H10.39L12,8.63L13.62,12.5Z" /></g><g id="angularjs"><path d="M12,2.5L20.84,5.65L19.5,17.35L12,21.5L4.5,17.35L3.16,5.65L12,2.5M12,4.5L5,7L6.08,16.22L12,19.5L17.92,16.22L19,7L12,4.5M12,5.72L16.58,16H14.87L13.94,13.72H10.04L9.12,16H7.41L12,5.72M13.34,12.3L12,9.07L10.66,12.3H13.34Z" /></g><g id="animation"><path d="M4,2C2.89,2 2,2.89 2,4V14H4V4H14V2H4M8,6C6.89,6 6,6.89 6,8V18H8V8H18V6H8M12,10C10.89,10 10,10.89 10,12V20C10,21.11 10.89,22 12,22H20C21.11,22 22,21.11 22,20V12C22,10.89 21.11,10 20,10H12Z" /></g><g id="apple"><path d="M18.71,19.5C17.88,20.74 17,21.95 15.66,21.97C14.32,22 13.89,21.18 12.37,21.18C10.84,21.18 10.37,21.95 9.1,22C7.79,22.05 6.8,20.68 5.96,19.47C4.25,17 2.94,12.45 4.7,9.39C5.57,7.87 7.13,6.91 8.82,6.88C10.1,6.86 11.32,7.75 12.11,7.75C12.89,7.75 14.37,6.68 15.92,6.84C16.57,6.87 18.39,7.1 19.56,8.82C19.47,8.88 17.39,10.1 17.41,12.63C17.44,15.65 20.06,16.66 20.09,16.67C20.06,16.74 19.67,18.11 18.71,19.5M13,3.5C13.73,2.67 14.94,2.04 15.94,2C16.07,3.17 15.6,4.35 14.9,5.19C14.21,6.04 13.07,6.7 11.95,6.61C11.8,5.46 12.36,4.26 13,3.5Z" /></g><g id="apple-finder"><path d="M4,4H11.89C12.46,2.91 13.13,1.88 13.93,1L15.04,2.11C14.61,2.7 14.23,3.34 13.89,4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21H14.93L15.26,22.23L13.43,22.95L12.93,21H4A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M4,6V19H12.54C12.5,18.67 12.44,18.34 12.4,18C12.27,18 12.13,18 12,18C9.25,18 6.78,17.5 5.13,16.76L6.04,15.12C7,15.64 9.17,16 12,16C12.08,16 12.16,16 12.24,16C12.21,15.33 12.22,14.66 12.27,14H9C9,14 9.4,9.97 11,6H4M20,19V6H13C12.1,8.22 11.58,10.46 11.3,12H14.17C14,13.28 13.97,14.62 14.06,15.93C15.87,15.8 17.25,15.5 17.96,15.12L18.87,16.76C17.69,17.3 16.1,17.7 14.29,17.89C14.35,18.27 14.41,18.64 14.5,19H20M6,8H8V11H6V8M16,8H18V11H16V8Z" /></g><g id="apple-ios"><path d="M20,9V7H16A2,2 0 0,0 14,9V11A2,2 0 0,0 16,13H18V15H14V17H18A2,2 0 0,0 20,15V13A2,2 0 0,0 18,11H16V9M11,15H9V9H11M11,7H9A2,2 0 0,0 7,9V15A2,2 0 0,0 9,17H11A2,2 0 0,0 13,15V9A2,2 0 0,0 11,7M4,17H6V11H4M4,9H6V7H4V9Z" /></g><g id="apple-keyboard-caps"><path d="M15,14V8H17.17L12,2.83L6.83,8H9V14H15M12,0L22,10H17V16H7V10H2L12,0M7,18H17V24H7V18M15,20H9V22H15V20Z" /></g><g id="apple-keyboard-command"><path d="M6,2A4,4 0 0,1 10,6V8H14V6A4,4 0 0,1 18,2A4,4 0 0,1 22,6A4,4 0 0,1 18,10H16V14H18A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18V16H10V18A4,4 0 0,1 6,22A4,4 0 0,1 2,18A4,4 0 0,1 6,14H8V10H6A4,4 0 0,1 2,6A4,4 0 0,1 6,2M16,18A2,2 0 0,0 18,20A2,2 0 0,0 20,18A2,2 0 0,0 18,16H16V18M14,10H10V14H14V10M6,16A2,2 0 0,0 4,18A2,2 0 0,0 6,20A2,2 0 0,0 8,18V16H6M8,6A2,2 0 0,0 6,4A2,2 0 0,0 4,6A2,2 0 0,0 6,8H8V6M18,8A2,2 0 0,0 20,6A2,2 0 0,0 18,4A2,2 0 0,0 16,6V8H18Z" /></g><g id="apple-keyboard-control"><path d="M19.78,11.78L18.36,13.19L12,6.83L5.64,13.19L4.22,11.78L12,4L19.78,11.78Z" /></g><g id="apple-keyboard-option"><path d="M3,4H9.11L16.15,18H21V20H14.88L7.84,6H3V4M14,4H21V6H14V4Z" /></g><g id="apple-keyboard-shift"><path d="M15,18V12H17.17L12,6.83L6.83,12H9V18H15M12,4L22,14H17V20H7V14H2L12,4Z" /></g><g id="apple-mobileme"><path d="M22,15.04C22,17.23 20.24,19 18.07,19H5.93C3.76,19 2,17.23 2,15.04C2,13.07 3.43,11.44 5.31,11.14C5.28,11 5.27,10.86 5.27,10.71C5.27,9.33 6.38,8.2 7.76,8.2C8.37,8.2 8.94,8.43 9.37,8.8C10.14,7.05 11.13,5.44 13.91,5.44C17.28,5.44 18.87,8.06 18.87,10.83C18.87,10.94 18.87,11.06 18.86,11.17C20.65,11.54 22,13.13 22,15.04Z" /></g><g id="apple-safari"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.09 4.8,16 6.11,17.41L9.88,9.88L17.41,6.11C16,4.8 14.09,4 12,4M12,20A8,8 0 0,0 20,12C20,9.91 19.2,8 17.89,6.59L14.12,14.12L6.59,17.89C8,19.2 9.91,20 12,20M12,12L11.23,11.23L9.7,14.3L12.77,12.77L12,12M12,17.5H13V19H12V17.5M15.88,15.89L16.59,15.18L17.65,16.24L16.94,16.95L15.88,15.89M17.5,12V11H19V12H17.5M12,6.5H11V5H12V6.5M8.12,8.11L7.41,8.82L6.35,7.76L7.06,7.05L8.12,8.11M6.5,12V13H5V12H6.5Z" /></g><g id="application"><path d="M19,4C20.11,4 21,4.9 21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V6A2,2 0 0,1 5,4H19M19,18V8H5V18H19Z" /></g><g id="appnet"><path d="M14.47,9.14C15.07,7.69 16.18,4.28 16.35,3.68C16.5,3.09 16.95,3 17.2,3H19.25C19.59,3 19.78,3.26 19.7,3.68C17.55,11.27 16.09,13.5 16.09,14C16.09,15.28 17.46,17.67 18.74,17.67C19.5,17.67 19.34,16.56 20.19,16.56H21.81C22.07,16.56 22.32,16.82 22.32,17.25C22.32,17.67 21.85,21 18.61,21C15.36,21 14.15,17.08 14.15,17.08C13.73,17.93 11.23,21 8.16,21C2.7,21 1.68,15.2 1.68,11.79C1.68,8.37 3.3,3 7.91,3C12.5,3 14.47,9.14 14.47,9.14M4.5,11.53C4.5,13.5 4.41,17.59 8,17.67C10.04,17.76 11.91,15.2 12.81,13.15C11.57,8.89 10.72,6.33 8,6.33C4.32,6.41 4.5,11.53 4.5,11.53Z" /></g><g id="apps"><path d="M16,20H20V16H16M16,14H20V10H16M10,8H14V4H10M16,8H20V4H16M10,14H14V10H10M4,14H8V10H4M4,20H8V16H4M10,20H14V16H10M4,8H8V4H4V8Z" /></g><g id="archive"><path d="M3,3H21V7H3V3M4,8H20V21H4V8M9.5,11A0.5,0.5 0 0,0 9,11.5V13H15V11.5A0.5,0.5 0 0,0 14.5,11H9.5Z" /></g><g id="arrange-bring-forward"><path d="M2,2H16V16H2V2M22,8V22H8V18H10V20H20V10H18V8H22Z" /></g><g id="arrange-bring-to-front"><path d="M2,2H11V6H9V4H4V9H6V11H2V2M22,13V22H13V18H15V20H20V15H18V13H22M8,8H16V16H8V8Z" /></g><g id="arrange-send-backward"><path d="M2,2H16V16H2V2M22,8V22H8V18H18V8H22M4,4V14H14V4H4Z" /></g><g id="arrange-send-to-back"><path d="M2,2H11V11H2V2M9,4H4V9H9V4M22,13V22H13V13H22M15,20H20V15H15V20M16,8V11H13V8H16M11,16H8V13H11V16Z" /></g><g id="arrow-all"><path d="M13,11H18L16.5,9.5L17.92,8.08L21.84,12L17.92,15.92L16.5,14.5L18,13H13V18L14.5,16.5L15.92,17.92L12,21.84L8.08,17.92L9.5,16.5L11,18V13H6L7.5,14.5L6.08,15.92L2.16,12L6.08,8.08L7.5,9.5L6,11H11V6L9.5,7.5L8.08,6.08L12,2.16L15.92,6.08L14.5,7.5L13,6V11Z" /></g><g id="arrow-bottom-left"><path d="M19,6.41L17.59,5L7,15.59V9H5V19H15V17H8.41L19,6.41Z" /></g><g id="arrow-bottom-right"><path d="M5,6.41L6.41,5L17,15.59V9H19V19H9V17H15.59L5,6.41Z" /></g><g id="arrow-compress"><path d="M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z" /></g><g id="arrow-compress-all"><path d="M19.5,3.09L20.91,4.5L16.41,9H20V11H13V4H15V7.59L19.5,3.09M20.91,19.5L19.5,20.91L15,16.41V20H13V13H20V15H16.41L20.91,19.5M4.5,3.09L9,7.59V4H11V11H4V9H7.59L3.09,4.5L4.5,3.09M3.09,19.5L7.59,15H4V13H11V20H9V16.41L4.5,20.91L3.09,19.5Z" /></g><g id="arrow-down"><path d="M11,4H13V16L18.5,10.5L19.92,11.92L12,19.84L4.08,11.92L5.5,10.5L11,16V4Z" /></g><g id="arrow-down-bold"><path d="M10,4H14V13L17.5,9.5L19.92,11.92L12,19.84L4.08,11.92L6.5,9.5L10,13V4Z" /></g><g id="arrow-down-bold-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,17L17,12H14V8H10V12H7L12,17Z" /></g><g id="arrow-down-bold-circle-outline"><path d="M12,17L7,12H10V8H14V12H17L12,17M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="arrow-down-bold-hexagon-outline"><path d="M12,17L7,12H10V8H14V12H17L12,17M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-down-box"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M11,6V14.5L7.5,11L6.08,12.42L12,18.34L17.92,12.42L16.5,11L13,14.5V6H11Z" /></g><g id="arrow-down-drop-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,10L12,15L17,10H7Z" /></g><g id="arrow-down-drop-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M7,10L12,15L17,10H7Z" /></g><g id="arrow-expand"><path d="M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z" /></g><g id="arrow-expand-all"><path d="M9.5,13.09L10.91,14.5L6.41,19H10V21H3V14H5V17.59L9.5,13.09M10.91,9.5L9.5,10.91L5,6.41V10H3V3H10V5H6.41L10.91,9.5M14.5,13.09L19,17.59V14H21V21H14V19H17.59L13.09,14.5L14.5,13.09M13.09,9.5L17.59,5H14V3H21V10H19V6.41L14.5,10.91L13.09,9.5Z" /></g><g id="arrow-left"><path d="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z" /></g><g id="arrow-left-bold"><path d="M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z" /></g><g id="arrow-left-bold-circle"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7,12L12,17V14H16V10H12V7L7,12Z" /></g><g id="arrow-left-bold-circle-outline"><path d="M7,12L12,7V10H16V14H12V17L7,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12Z" /></g><g id="arrow-left-bold-hexagon-outline"><path d="M7,12L12,7V10H16V14H12V17L7,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-left-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M18,11H9.5L13,7.5L11.58,6.08L5.66,12L11.58,17.92L13,16.5L9.5,13H18V11Z" /></g><g id="arrow-left-drop-circle"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14,7L9,12L14,17V7Z" /></g><g id="arrow-left-drop-circle-outline"><path d="M22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12M14,7L9,12L14,17V7Z" /></g><g id="arrow-right"><path d="M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z" /></g><g id="arrow-right-bold"><path d="M4,10V14H13L9.5,17.5L11.92,19.92L19.84,12L11.92,4.08L9.5,6.5L13,10H4Z" /></g><g id="arrow-right-bold-circle"><path d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M17,12L12,7V10H8V14H12V17L17,12Z" /></g><g id="arrow-right-bold-circle-outline"><path d="M17,12L12,17V14H8V10H12V7L17,12M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12Z" /></g><g id="arrow-right-bold-hexagon-outline"><path d="M17,12L12,17V14H8V10H12V7L17,12M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-right-box"><path d="M5,21A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5M6,13H14.5L11,16.5L12.42,17.92L18.34,12L12.42,6.08L11,7.5L14.5,11H6V13Z" /></g><g id="arrow-right-drop-circle"><path d="M2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12M10,17L15,12L10,7V17Z" /></g><g id="arrow-right-drop-circle-outline"><path d="M2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12M4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12M10,17L15,12L10,7V17Z" /></g><g id="arrow-top-left"><path d="M19,17.59L17.59,19L7,8.41V15H5V5H15V7H8.41L19,17.59Z" /></g><g id="arrow-top-right"><path d="M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z" /></g><g id="arrow-up"><path d="M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z" /></g><g id="arrow-up-bold"><path d="M14,20H10V11L6.5,14.5L4.08,12.08L12,4.16L19.92,12.08L17.5,14.5L14,11V20Z" /></g><g id="arrow-up-bold-circle"><path d="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,7L7,12H10V16H14V12H17L12,7Z" /></g><g id="arrow-up-bold-circle-outline"><path d="M12,7L17,12H14V16H10V12H7L12,7M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20Z" /></g><g id="arrow-up-bold-hexagon-outline"><path d="M12,7L17,12H14V16H10V12H7L12,7M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="arrow-up-box"><path d="M21,19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19C20.11,3 21,3.9 21,5V19M13,18V9.5L16.5,13L17.92,11.58L12,5.66L6.08,11.58L7.5,13L11,9.5V18H13Z" /></g><g id="arrow-up-drop-circle"><path d="M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22M17,14L12,9L7,14H17Z" /></g><g id="arrow-up-drop-circle-outline"><path d="M12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M17,14L12,9L7,14H17Z" /></g><g id="assistant"><path d="M19,2H5A2,2 0 0,0 3,4V18A2,2 0 0,0 5,20H9L12,23L15,20H19A2,2 0 0,0 21,18V4A2,2 0 0,0 19,2M13.88,12.88L12,17L10.12,12.88L6,11L10.12,9.12L12,5L13.88,9.12L18,11" /></g><g id="asterisk"><path d="M10,2H14L13.21,9.91L19.66,5.27L21.66,8.73L14.42,12L21.66,15.27L19.66,18.73L13.21,14.09L14,22H10L10.79,14.09L4.34,18.73L2.34,15.27L9.58,12L2.34,8.73L4.34,5.27L10.79,9.91L10,2Z" /></g><g id="at"><path d="M17.42,15C17.79,14.09 18,13.07 18,12C18,8.13 15.31,5 12,5C8.69,5 6,8.13 6,12C6,15.87 8.69,19 12,19C13.54,19 15,19 16,18.22V20.55C15,21 13.46,21 12,21C7.58,21 4,16.97 4,12C4,7.03 7.58,3 12,3C16.42,3 20,7.03 20,12C20,13.85 19.5,15.57 18.65,17H14V15.5C13.36,16.43 12.5,17 11.5,17C9.57,17 8,14.76 8,12C8,9.24 9.57,7 11.5,7C12.5,7 13.36,7.57 14,8.5V8H16V15H17.42M12,9C10.9,9 10,10.34 10,12C10,13.66 10.9,15 12,15C13.1,15 14,13.66 14,12C14,10.34 13.1,9 12,9Z" /></g><g id="attachment"><path d="M7.5,18A5.5,5.5 0 0,1 2,12.5A5.5,5.5 0 0,1 7.5,7H18A4,4 0 0,1 22,11A4,4 0 0,1 18,15H9.5A2.5,2.5 0 0,1 7,12.5A2.5,2.5 0 0,1 9.5,10H17V11.5H9.5A1,1 0 0,0 8.5,12.5A1,1 0 0,0 9.5,13.5H18A2.5,2.5 0 0,0 20.5,11A2.5,2.5 0 0,0 18,8.5H7.5A4,4 0 0,0 3.5,12.5A4,4 0 0,0 7.5,16.5H17V18H7.5Z" /></g><g id="audiobook"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M13,15A2,2 0 0,0 11,17A2,2 0 0,0 13,19A2,2 0 0,0 15,17V12H18V10H14V15.27C13.71,15.1 13.36,15 13,15Z" /></g><g id="auto-fix"><path d="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" /></g><g id="auto-upload"><path d="M5.35,12.65L6.5,9L7.65,12.65M5.5,7L2.3,16H4.2L4.9,14H8.1L8.8,16H10.7L7.5,7M11,20H22V18H11M14,16H19V11H22L16.5,5.5L11,11H14V16Z" /></g><g id="autorenew"><path d="M12,6V9L16,5L12,1V4A8,8 0 0,0 4,12C4,13.57 4.46,15.03 5.24,16.26L6.7,14.8C6.25,13.97 6,13 6,12A6,6 0 0,1 12,6M18.76,7.74L17.3,9.2C17.74,10.04 18,11 18,12A6,6 0 0,1 12,18V15L8,19L12,23V20A8,8 0 0,0 20,12C20,10.43 19.54,8.97 18.76,7.74Z" /></g><g id="av-timer"><path d="M11,17A1,1 0 0,0 12,18A1,1 0 0,0 13,17A1,1 0 0,0 12,16A1,1 0 0,0 11,17M11,3V7H13V5.08C16.39,5.57 19,8.47 19,12A7,7 0 0,1 12,19A7,7 0 0,1 5,12C5,10.32 5.59,8.78 6.58,7.58L12,13L13.41,11.59L6.61,4.79V4.81C4.42,6.45 3,9.05 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M18,12A1,1 0 0,0 17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12M6,12A1,1 0 0,0 7,13A1,1 0 0,0 8,12A1,1 0 0,0 7,11A1,1 0 0,0 6,12Z" /></g><g id="baby"><path d="M18.5,4A2.5,2.5 0 0,1 21,6.5A2.5,2.5 0 0,1 18.5,9A2.5,2.5 0 0,1 16,6.5A2.5,2.5 0 0,1 18.5,4M4.5,20A1.5,1.5 0 0,1 3,18.5A1.5,1.5 0 0,1 4.5,17H11.5A1.5,1.5 0 0,1 13,18.5A1.5,1.5 0 0,1 11.5,20H4.5M16.09,19L14.69,15H11L6.75,10.75C6.75,10.75 9,8.25 12.5,8.25C15.5,8.25 15.85,9.25 16.06,9.87L18.92,18C19.2,18.78 18.78,19.64 18,19.92C17.22,20.19 16.36,19.78 16.09,19Z" /></g><g id="baby-buggy"><path d="M13,2V10H21A8,8 0 0,0 13,2M19.32,15.89C20.37,14.54 21,12.84 21,11H6.44L5.5,9H2V11H4.22C4.22,11 6.11,15.07 6.34,15.42C5.24,16 4.5,17.17 4.5,18.5A3.5,3.5 0 0,0 8,22C9.76,22 11.22,20.7 11.46,19H13.54C13.78,20.7 15.24,22 17,22A3.5,3.5 0 0,0 20.5,18.5C20.5,17.46 20.04,16.53 19.32,15.89M8,20A1.5,1.5 0 0,1 6.5,18.5A1.5,1.5 0 0,1 8,17A1.5,1.5 0 0,1 9.5,18.5A1.5,1.5 0 0,1 8,20M17,20A1.5,1.5 0 0,1 15.5,18.5A1.5,1.5 0 0,1 17,17A1.5,1.5 0 0,1 18.5,18.5A1.5,1.5 0 0,1 17,20Z" /></g><g id="backburger"><path d="M5,13L9,17L7.6,18.42L1.18,12L7.6,5.58L9,7L5,11H21V13H5M21,6V8H11V6H21M21,16V18H11V16H21Z" /></g><g id="backspace"><path d="M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.31,21 7,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M19,15.59L17.59,17L14,13.41L10.41,17L9,15.59L12.59,12L9,8.41L10.41,7L14,10.59L17.59,7L19,8.41L15.41,12" /></g><g id="backup-restore"><path d="M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z" /></g><g id="bandcamp"><path d="M22,6L15.5,18H2L8.5,6H22Z" /></g><g id="bank"><path d="M11.5,1L2,6V8H21V6M16,10V17H19V10M2,22H21V19H2M10,10V17H13V10M4,10V17H7V10H4Z" /></g><g id="barcode"><path d="M2,6H4V18H2V6M5,6H6V18H5V6M7,6H10V18H7V6M11,6H12V18H11V6M14,6H16V18H14V6M17,6H20V18H17V6M21,6H22V18H21V6Z" /></g><g id="barcode-scan"><path d="M4,6H6V18H4V6M7,6H8V18H7V6M9,6H12V18H9V6M13,6H14V18H13V6M16,6H18V18H16V6M19,6H20V18H19V6M2,4V8H0V4A2,2 0 0,1 2,2H6V4H2M22,2A2,2 0 0,1 24,4V8H22V4H18V2H22M2,16V20H6V22H2A2,2 0 0,1 0,20V16H2M22,20V16H24V20A2,2 0 0,1 22,22H18V20H22Z" /></g><g id="barley"><path d="M7.33,18.33C6.5,17.17 6.5,15.83 6.5,14.5C8.17,15.5 9.83,16.5 10.67,17.67L11,18.23V15.95C9.5,15.05 8.08,14.13 7.33,13.08C6.5,11.92 6.5,10.58 6.5,9.25C8.17,10.25 9.83,11.25 10.67,12.42L11,13V10.7C9.5,9.8 8.08,8.88 7.33,7.83C6.5,6.67 6.5,5.33 6.5,4C8.17,5 9.83,6 10.67,7.17C10.77,7.31 10.86,7.46 10.94,7.62C10.77,7 10.66,6.42 10.65,5.82C10.64,4.31 11.3,2.76 11.96,1.21C12.65,2.69 13.34,4.18 13.35,5.69C13.36,6.32 13.25,6.96 13.07,7.59C13.15,7.45 13.23,7.31 13.33,7.17C14.17,6 15.83,5 17.5,4C17.5,5.33 17.5,6.67 16.67,7.83C15.92,8.88 14.5,9.8 13,10.7V13L13.33,12.42C14.17,11.25 15.83,10.25 17.5,9.25C17.5,10.58 17.5,11.92 16.67,13.08C15.92,14.13 14.5,15.05 13,15.95V18.23L13.33,17.67C14.17,16.5 15.83,15.5 17.5,14.5C17.5,15.83 17.5,17.17 16.67,18.33C15.92,19.38 14.5,20.3 13,21.2V23H11V21.2C9.5,20.3 8.08,19.38 7.33,18.33Z" /></g><g id="barrel"><path d="M18,19H19V21H5V19H6V13H5V11H6V5H5V3H19V5H18V11H19V13H18V19M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13C15,11 12,7.63 12,7.63C12,7.63 9,11 9,13Z" /></g><g id="basecamp"><path d="M3.39,15.64C3.4,15.55 3.42,15.45 3.45,15.36C3.5,15.18 3.54,15 3.6,14.84C3.82,14.19 4.16,13.58 4.5,13C4.7,12.7 4.89,12.41 5.07,12.12C5.26,11.83 5.45,11.54 5.67,11.26C6,10.81 6.45,10.33 7,10.15C7.79,9.9 8.37,10.71 8.82,11.22C9.08,11.5 9.36,11.8 9.71,11.97C9.88,12.04 10.06,12.08 10.24,12.07C10.5,12.05 10.73,11.87 10.93,11.71C11.46,11.27 11.9,10.7 12.31,10.15C12.77,9.55 13.21,8.93 13.73,8.38C13.95,8.15 14.18,7.85 14.5,7.75C14.62,7.71 14.77,7.72 14.91,7.78C15,7.82 15.05,7.87 15.1,7.92C15.17,8 15.25,8.04 15.32,8.09C15.88,8.5 16.4,9 16.89,9.5C17.31,9.93 17.72,10.39 18.1,10.86C18.5,11.32 18.84,11.79 19.15,12.3C19.53,12.93 19.85,13.58 20.21,14.21C20.53,14.79 20.86,15.46 20.53,16.12C20.5,16.15 20.5,16.19 20.5,16.22C19.91,17.19 18.88,17.79 17.86,18.18C16.63,18.65 15.32,18.88 14,18.97C12.66,19.07 11.3,19.06 9.95,18.94C8.73,18.82 7.5,18.6 6.36,18.16C5.4,17.79 4.5,17.25 3.84,16.43C3.69,16.23 3.56,16.03 3.45,15.81C3.43,15.79 3.42,15.76 3.41,15.74C3.39,15.7 3.38,15.68 3.39,15.64M2.08,16.5C2.22,16.73 2.38,16.93 2.54,17.12C2.86,17.5 3.23,17.85 3.62,18.16C4.46,18.81 5.43,19.28 6.44,19.61C7.6,20 8.82,20.19 10.04,20.29C11.45,20.41 12.89,20.41 14.3,20.26C15.6,20.12 16.91,19.85 18.13,19.37C19.21,18.94 20.21,18.32 21.08,17.54C21.31,17.34 21.53,17.13 21.7,16.88C21.86,16.67 22,16.44 22,16.18C22,15.88 22,15.57 21.92,15.27C21.85,14.94 21.76,14.62 21.68,14.3C21.65,14.18 21.62,14.06 21.59,13.94C21.27,12.53 20.78,11.16 20.12,9.87C19.56,8.79 18.87,7.76 18.06,6.84C17.31,6 16.43,5.22 15.43,4.68C14.9,4.38 14.33,4.15 13.75,4C13.44,3.88 13.12,3.81 12.8,3.74C12.71,3.73 12.63,3.71 12.55,3.71C12.44,3.71 12.33,3.71 12.23,3.71C12,3.71 11.82,3.71 11.61,3.71C11.5,3.71 11.43,3.7 11.33,3.71C11.25,3.72 11.16,3.74 11.08,3.75C10.91,3.78 10.75,3.81 10.59,3.85C10.27,3.92 9.96,4 9.65,4.14C9.04,4.38 8.47,4.7 7.93,5.08C6.87,5.8 5.95,6.73 5.18,7.75C4.37,8.83 3.71,10.04 3.21,11.3C2.67,12.64 2.3,14.04 2.07,15.47C2.04,15.65 2,15.84 2,16C2,16.12 2,16.22 2,16.32C2,16.37 2,16.4 2.03,16.44C2.04,16.46 2.06,16.5 2.08,16.5Z" /></g><g id="basket"><path d="M5.5,21C4.72,21 4.04,20.55 3.71,19.9V19.9L1.1,10.44L1,10A1,1 0 0,1 2,9H6.58L11.18,2.43C11.36,2.17 11.66,2 12,2C12.34,2 12.65,2.17 12.83,2.44L17.42,9H22A1,1 0 0,1 23,10L22.96,10.29L20.29,19.9C19.96,20.55 19.28,21 18.5,21H5.5M12,4.74L9,9H15L12,4.74M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13Z" /></g><g id="basket-fill"><path d="M3,2H6V5H3V2M6,7H9V10H6V7M8,2H11V5H8V2M17,11L12,6H15V2H19V6H22L17,11M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z" /></g><g id="basket-unfill"><path d="M3,10H6V7H3V10M5,5H8V2H5V5M8,10H11V7H8V10M17,1L12,6H15V10H19V6H22L17,1M7.5,22C6.72,22 6.04,21.55 5.71,20.9V20.9L3.1,13.44L3,13A1,1 0 0,1 4,12H20A1,1 0 0,1 21,13L20.96,13.29L18.29,20.9C17.96,21.55 17.28,22 16.5,22H7.5M7.61,20H16.39L18.57,14H5.42L7.61,20Z" /></g><g id="battery"><path d="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-10"><path d="M16,18H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-20"><path d="M16,17H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-30"><path d="M16,15H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-40"><path d="M16,14H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-50"><path d="M16,13H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-60"><path d="M16,12H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-70"><path d="M16,10H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-80"><path d="M16,9H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-90"><path d="M16,8H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-alert"><path d="M13,14H11V9H13M13,18H11V16H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-charging"><path d="M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.66C17.4,22 18,21.4 18,20.67V5.33C18,4.6 17.4,4 16.67,4M11,20V14.5H9L13,7V12.5H15" /></g><g id="battery-charging-100"><path d="M23,11H20V4L15,14H18V22M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-20"><path d="M23.05,11H20.05V4L15.05,14H18.05V22M12.05,17H4.05V6H12.05M12.72,4H11.05V2H5.05V4H3.38A1.33,1.33 0 0,0 2.05,5.33V20.67C2.05,21.4 2.65,22 3.38,22H12.72C13.45,22 14.05,21.4 14.05,20.67V5.33A1.33,1.33 0 0,0 12.72,4Z" /></g><g id="battery-charging-30"><path d="M12,15H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z" /></g><g id="battery-charging-40"><path d="M23,11H20V4L15,14H18V22M12,13H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-60"><path d="M12,11H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4M23,11H20V4L15,14H18V22L23,11Z" /></g><g id="battery-charging-80"><path d="M23,11H20V4L15,14H18V22M12,9H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-charging-90"><path d="M23,11H20V4L15,14H18V22M12,8H4V6H12M12.67,4H11V2H5V4H3.33A1.33,1.33 0 0,0 2,5.33V20.67C2,21.4 2.6,22 3.33,22H12.67C13.4,22 14,21.4 14,20.67V5.33A1.33,1.33 0 0,0 12.67,4Z" /></g><g id="battery-minus"><path d="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M8,12V14H16V12" /></g><g id="battery-negative"><path d="M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M15,12H23V14H15V12M3,13H11V6H3V13Z" /></g><g id="battery-outline"><path d="M16,20H8V6H16M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.67C6,21.4 6.6,22 7.33,22H16.67A1.33,1.33 0 0,0 18,20.67V5.33C18,4.6 17.4,4 16.67,4Z" /></g><g id="battery-plus"><path d="M16.67,4C17.4,4 18,4.6 18,5.33V20.67A1.33,1.33 0 0,1 16.67,22H7.33C6.6,22 6,21.4 6,20.67V5.33A1.33,1.33 0 0,1 7.33,4H9V2H15V4H16.67M16,14V12H13V9H11V12H8V14H11V17H13V14H16Z" /></g><g id="battery-positive"><path d="M11.67,4A1.33,1.33 0 0,1 13,5.33V20.67C13,21.4 12.4,22 11.67,22H2.33C1.6,22 1,21.4 1,20.67V5.33A1.33,1.33 0 0,1 2.33,4H4V2H10V4H11.67M23,14H20V17H18V14H15V12H18V9H20V12H23V14M3,13H11V6H3V13Z" /></g><g id="battery-unknown"><path d="M15.07,12.25L14.17,13.17C13.63,13.71 13.25,14.18 13.09,15H11.05C11.16,14.1 11.56,13.28 12.17,12.67L13.41,11.41C13.78,11.05 14,10.55 14,10C14,8.89 13.1,8 12,8A2,2 0 0,0 10,10H8A4,4 0 0,1 12,6A4,4 0 0,1 16,10C16,10.88 15.64,11.68 15.07,12.25M13,19H11V17H13M16.67,4H15V2H9V4H7.33A1.33,1.33 0 0,0 6,5.33V20.66C6,21.4 6.6,22 7.33,22H16.67C17.4,22 18,21.4 18,20.66V5.33C18,4.59 17.4,4 16.67,4Z" /></g><g id="beach"><path d="M15,18.54C17.13,18.21 19.5,18 22,18V22H5C5,21.35 8.2,19.86 13,18.9V12.4C12.16,12.65 11.45,13.21 11,13.95C10.39,12.93 9.27,12.25 8,12.25C6.73,12.25 5.61,12.93 5,13.95C5.03,10.37 8.5,7.43 13,7.04V7A1,1 0 0,1 14,6A1,1 0 0,1 15,7V7.04C19.5,7.43 22.96,10.37 23,13.95C22.39,12.93 21.27,12.25 20,12.25C18.73,12.25 17.61,12.93 17,13.95C16.55,13.21 15.84,12.65 15,12.39V18.54M7,2A5,5 0 0,1 2,7V2H7Z" /></g><g id="beaker"><path d="M3,3H21V5A2,2 0 0,0 19,7V19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V7A2,2 0 0,0 3,5V3M7,5V7H12V8H7V9H10V10H7V11H10V12H7V13H12V14H7V15H10V16H7V19H17V5H7Z" /></g><g id="beats"><path d="M7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7C10.87,7 9.84,7.37 9,8V2.46C9.95,2.16 10.95,2 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,8.3 4,5.07 7,3.34V12M14.5,12C14.5,12.37 14.3,12.68 14,12.86L12.11,14.29C11.94,14.42 11.73,14.5 11.5,14.5A1,1 0 0,1 10.5,13.5V10.5A1,1 0 0,1 11.5,9.5C11.73,9.5 11.94,9.58 12.11,9.71L14,11.14C14.3,11.32 14.5,11.63 14.5,12Z" /></g><g id="beer"><path d="M4,2H19L17,22H6L4,2M6.2,4L7.8,20H8.8L7.43,6.34C8.5,6 9.89,5.89 11,7C12.56,8.56 15.33,7.69 16.5,7.23L16.8,4H6.2Z" /></g><g id="behance"><path d="M19.58,12.27C19.54,11.65 19.33,11.18 18.96,10.86C18.59,10.54 18.13,10.38 17.58,10.38C17,10.38 16.5,10.55 16.19,10.89C15.86,11.23 15.65,11.69 15.57,12.27M21.92,12.04C22,12.45 22,13.04 22,13.81H15.5C15.55,14.71 15.85,15.33 16.44,15.69C16.79,15.92 17.22,16.03 17.73,16.03C18.26,16.03 18.69,15.89 19,15.62C19.2,15.47 19.36,15.27 19.5,15H21.88C21.82,15.54 21.53,16.07 21,16.62C20.22,17.5 19.1,17.92 17.66,17.92C16.47,17.92 15.43,17.55 14.5,16.82C13.62,16.09 13.16,14.9 13.16,13.25C13.16,11.7 13.57,10.5 14.39,9.7C15.21,8.87 16.27,8.46 17.58,8.46C18.35,8.46 19.05,8.6 19.67,8.88C20.29,9.16 20.81,9.59 21.21,10.2C21.58,10.73 21.81,11.34 21.92,12.04M9.58,14.07C9.58,13.42 9.31,12.97 8.79,12.73C8.5,12.6 8.08,12.53 7.54,12.5H4.87V15.84H7.5C8.04,15.84 8.46,15.77 8.76,15.62C9.31,15.35 9.58,14.83 9.58,14.07M4.87,10.46H7.5C8.04,10.46 8.5,10.36 8.82,10.15C9.16,9.95 9.32,9.58 9.32,9.06C9.32,8.5 9.1,8.1 8.66,7.91C8.27,7.78 7.78,7.72 7.19,7.72H4.87M11.72,12.42C12.04,12.92 12.2,13.53 12.2,14.24C12.2,15 12,15.64 11.65,16.23C11.41,16.62 11.12,16.94 10.77,17.21C10.37,17.5 9.9,17.72 9.36,17.83C8.82,17.94 8.24,18 7.61,18H2V5.55H8C9.53,5.58 10.6,6 11.23,6.88C11.61,7.41 11.8,8.04 11.8,8.78C11.8,9.54 11.61,10.15 11.23,10.61C11,10.87 10.7,11.11 10.28,11.32C10.91,11.55 11.39,11.92 11.72,12.42M20.06,7.32H15.05V6.07H20.06V7.32Z" /></g><g id="bell"><path d="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" /></g><g id="bell-off"><path d="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M19.74,21.57L17.17,19H3L6,16V10C6,9.35 6.1,8.72 6.3,8.13L3.47,5.3L4.89,3.89L7.29,6.29L21.15,20.15L19.74,21.57M11,4.08V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V14.17L8.77,4.94C9.44,4.5 10.19,4.22 11,4.08Z" /></g><g id="bell-outline"><path d="M16,17H7V10.5C7,8 9,6 11.5,6C14,6 16,8 16,10.5M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z" /></g><g id="bell-plus"><path d="M10,21C10,22.11 10.9,23 12,23A2,2 0 0,0 14,21M18.88,16.82V11C18.88,7.75 16.63,5.03 13.59,4.31V3.59A1.59,1.59 0 0,0 12,2A1.59,1.59 0 0,0 10.41,3.59V4.31C7.37,5.03 5.12,7.75 5.12,11V16.82L3,18.94V20H21V18.94M16,13H13V16H11V13H8V11H11V8H13V11H16" /></g><g id="bell-ring"><path d="M11.5,22C11.64,22 11.77,22 11.9,21.96C12.55,21.82 13.09,21.38 13.34,20.78C13.44,20.54 13.5,20.27 13.5,20H9.5A2,2 0 0,0 11.5,22M18,10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18L18,16M19.97,10H21.97C21.82,6.79 20.24,3.97 17.85,2.15L16.42,3.58C18.46,5 19.82,7.35 19.97,10M6.58,3.58L5.15,2.15C2.76,3.97 1.18,6.79 1,10H3C3.18,7.35 4.54,5 6.58,3.58Z" /></g><g id="bell-ring-outline"><path d="M16,17V10.5C16,8 14,6 11.5,6C9,6 7,8 7,10.5V17H16M18,16L20,18V19H3V18L5,16V10.5C5,7.43 7.13,4.86 10,4.18V3.5A1.5,1.5 0 0,1 11.5,2A1.5,1.5 0 0,1 13,3.5V4.18C15.86,4.86 18,7.43 18,10.5V16M11.5,22A2,2 0 0,1 9.5,20H13.5A2,2 0 0,1 11.5,22M19.97,10C19.82,7.35 18.46,5 16.42,3.58L17.85,2.15C20.24,3.97 21.82,6.79 21.97,10H19.97M6.58,3.58C4.54,5 3.18,7.35 3,10H1C1.18,6.79 2.76,3.97 5.15,2.15L6.58,3.58Z" /></g><g id="bell-sleep"><path d="M14,9.8L11.2,13.2H14V15H9V13.2L11.8,9.8H9V8H14M18,16V10.5C18,7.43 15.86,4.86 13,4.18V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V4.18C7.13,4.86 5,7.43 5,10.5V16L3,18V19H20V18M11.5,22A2,2 0 0,0 13.5,20H9.5A2,2 0 0,0 11.5,22Z" /></g><g id="beta"><path d="M9.23,17.59V23.12H6.88V6.72C6.88,5.27 7.31,4.13 8.16,3.28C9,2.43 10.17,2 11.61,2C13,2 14.07,2.34 14.87,3C15.66,3.68 16.05,4.62 16.05,5.81C16.05,6.63 15.79,7.4 15.27,8.11C14.75,8.82 14.08,9.31 13.25,9.58V9.62C14.5,9.82 15.47,10.27 16.13,11C16.79,11.71 17.12,12.62 17.12,13.74C17.12,15.06 16.66,16.14 15.75,16.97C14.83,17.8 13.63,18.21 12.13,18.21C11.07,18.21 10.1,18 9.23,17.59M10.72,10.75V8.83C11.59,8.72 12.3,8.4 12.87,7.86C13.43,7.31 13.71,6.7 13.71,6C13.71,4.62 13,3.92 11.6,3.92C10.84,3.92 10.25,4.16 9.84,4.65C9.43,5.14 9.23,5.82 9.23,6.71V15.5C10.14,16.03 11.03,16.29 11.89,16.29C12.73,16.29 13.39,16.07 13.86,15.64C14.33,15.2 14.56,14.58 14.56,13.79C14.56,12 13.28,11 10.72,10.75Z" /></g><g id="bible"><path d="M5.81,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20C20,21.05 19.05,22 18,22H6C4.95,22 4,21.05 4,20V4C4,3 4.83,2.09 5.81,2M13,10V13H10V15H13V20H15V15H18V13H15V10H13Z" /></g><g id="bike"><path d="M5,20.5A3.5,3.5 0 0,1 1.5,17A3.5,3.5 0 0,1 5,13.5A3.5,3.5 0 0,1 8.5,17A3.5,3.5 0 0,1 5,20.5M5,12A5,5 0 0,0 0,17A5,5 0 0,0 5,22A5,5 0 0,0 10,17A5,5 0 0,0 5,12M14.8,10H19V8.2H15.8L13.86,4.93C13.57,4.43 13,4.1 12.4,4.1C11.93,4.1 11.5,4.29 11.2,4.6L7.5,8.29C7.19,8.6 7,9 7,9.5C7,10.13 7.33,10.66 7.85,10.97L11.2,13V18H13V11.5L10.75,9.85L13.07,7.5M19,20.5A3.5,3.5 0 0,1 15.5,17A3.5,3.5 0 0,1 19,13.5A3.5,3.5 0 0,1 22.5,17A3.5,3.5 0 0,1 19,20.5M19,12A5,5 0 0,0 14,17A5,5 0 0,0 19,22A5,5 0 0,0 24,17A5,5 0 0,0 19,12M16,4.8C17,4.8 17.8,4 17.8,3C17.8,2 17,1.2 16,1.2C15,1.2 14.2,2 14.2,3C14.2,4 15,4.8 16,4.8Z" /></g><g id="bing"><path d="M5,3V19L8.72,21L18,15.82V11.73H18L9.77,8.95L11.38,12.84L13.94,14L8.7,16.92V4.27L5,3" /></g><g id="binoculars"><path d="M11,6H13V13H11V6M9,20A1,1 0 0,1 8,21H5A1,1 0 0,1 4,20V15L6,6H10V13A1,1 0 0,1 9,14V20M10,5H7V3H10V5M15,20V14A1,1 0 0,1 14,13V6H18L20,15V20A1,1 0 0,1 19,21H16A1,1 0 0,1 15,20M14,5V3H17V5H14Z" /></g><g id="bio"><path d="M17,12H20A2,2 0 0,1 22,14V17A2,2 0 0,1 20,19H17A2,2 0 0,1 15,17V14A2,2 0 0,1 17,12M17,14V17H20V14H17M2,7H7A2,2 0 0,1 9,9V11A2,2 0 0,1 7,13A2,2 0 0,1 9,15V17A2,2 0 0,1 7,19H2V13L2,7M4,9V12H7V9H4M4,17H7V14H4V17M11,13H13V19H11V13M11,9H13V11H11V9Z" /></g><g id="biohazard"><path d="M23,16.06C23,16.29 23,16.5 22.96,16.7C22.78,14.14 20.64,12.11 18,12.11C17.63,12.11 17.27,12.16 16.92,12.23C16.96,12.5 17,12.73 17,13C17,15.35 15.31,17.32 13.07,17.81C13.42,20.05 15.31,21.79 17.65,21.96C17.43,22 17.22,22 17,22C14.92,22 13.07,20.94 12,19.34C10.93,20.94 9.09,22 7,22C6.78,22 6.57,22 6.35,21.96C8.69,21.79 10.57,20.06 10.93,17.81C8.68,17.32 7,15.35 7,13C7,12.73 7.04,12.5 7.07,12.23C6.73,12.16 6.37,12.11 6,12.11C3.36,12.11 1.22,14.14 1.03,16.7C1,16.5 1,16.29 1,16.06C1,12.85 3.59,10.24 6.81,10.14C6.3,9.27 6,8.25 6,7.17C6,4.94 7.23,3 9.06,2C7.81,2.9 7,4.34 7,6C7,7.35 7.56,8.59 8.47,9.5C9.38,8.59 10.62,8.04 12,8.04C13.37,8.04 14.62,8.59 15.5,9.5C16.43,8.59 17,7.35 17,6C17,4.34 16.18,2.9 14.94,2C16.77,3 18,4.94 18,7.17C18,8.25 17.7,9.27 17.19,10.14C20.42,10.24 23,12.85 23,16.06M9.27,10.11C10.05,10.62 11,10.92 12,10.92C13,10.92 13.95,10.62 14.73,10.11C14,9.45 13.06,9.03 12,9.03C10.94,9.03 10,9.45 9.27,10.11M12,14.47C12.82,14.47 13.5,13.8 13.5,13A1.5,1.5 0 0,0 12,11.5A1.5,1.5 0 0,0 10.5,13C10.5,13.8 11.17,14.47 12,14.47M10.97,16.79C10.87,14.9 9.71,13.29 8.05,12.55C8.03,12.7 8,12.84 8,13C8,14.82 9.27,16.34 10.97,16.79M15.96,12.55C14.29,13.29 13.12,14.9 13,16.79C14.73,16.34 16,14.82 16,13C16,12.84 15.97,12.7 15.96,12.55Z" /></g><g id="bitbucket"><path d="M12,5.76C15.06,5.77 17.55,5.24 17.55,4.59C17.55,3.94 15.07,3.41 12,3.4C8.94,3.4 6.45,3.92 6.45,4.57C6.45,5.23 8.93,5.76 12,5.76M12,14.4C13.5,14.4 14.75,13.16 14.75,11.64A2.75,2.75 0 0,0 12,8.89C10.5,8.89 9.25,10.12 9.25,11.64C9.25,13.16 10.5,14.4 12,14.4M12,2C16.77,2 20.66,3.28 20.66,4.87C20.66,5.29 19.62,11.31 19.21,13.69C19.03,14.76 16.26,16.33 12,16.33V16.31L12,16.33C7.74,16.33 4.97,14.76 4.79,13.69C4.38,11.31 3.34,5.29 3.34,4.87C3.34,3.28 7.23,2 12,2M18.23,16.08C18.38,16.08 18.53,16.19 18.53,16.42V16.5C18.19,18.26 17.95,19.5 17.91,19.71C17.62,21 15.07,22 12,22V22C8.93,22 6.38,21 6.09,19.71C6.05,19.5 5.81,18.26 5.47,16.5V16.42C5.47,16.19 5.62,16.08 5.77,16.08C5.91,16.08 6,16.17 6,16.17C6,16.17 8.14,17.86 12,17.86C15.86,17.86 18,16.17 18,16.17C18,16.17 18.09,16.08 18.23,16.08M13.38,11.64C13.38,12.4 12.76,13 12,13C11.24,13 10.62,12.4 10.62,11.64A1.38,1.38 0 0,1 12,10.26A1.38,1.38 0 0,1 13.38,11.64Z" /></g><g id="black-mesa"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,14.39 5.05,16.53 6.71,18H9V12H17L19.15,15.59C19.69,14.5 20,13.29 20,12A8,8 0 0,0 12,4Z" /></g><g id="blackberry"><path d="M5.45,10.28C6.4,10.28 7.5,11.05 7.5,12C7.5,12.95 6.4,13.72 5.45,13.72H2L2.69,10.28H5.45M6.14,4.76C7.09,4.76 8.21,5.53 8.21,6.5C8.21,7.43 7.09,8.21 6.14,8.21H2.69L3.38,4.76H6.14M13.03,4.76C14,4.76 15.1,5.53 15.1,6.5C15.1,7.43 14,8.21 13.03,8.21H9.41L10.1,4.76H13.03M12.34,10.28C13.3,10.28 14.41,11.05 14.41,12C14.41,12.95 13.3,13.72 12.34,13.72H8.72L9.41,10.28H12.34M10.97,15.79C11.92,15.79 13.03,16.57 13.03,17.5C13.03,18.47 11.92,19.24 10.97,19.24H7.5L8.21,15.79H10.97M18.55,13.72C19.5,13.72 20.62,14.5 20.62,15.45C20.62,16.4 19.5,17.17 18.55,17.17H15.1L15.79,13.72H18.55M19.93,8.21C20.88,8.21 22,9 22,9.93C22,10.88 20.88,11.66 19.93,11.66H16.5L17.17,8.21H19.93Z" /></g><g id="blender"><path d="M8,3C8,3.34 8.17,3.69 8.5,3.88L12,6H2.5A1.5,1.5 0 0,0 1,7.5A1.5,1.5 0 0,0 2.5,9H8.41L2,13C1.16,13.5 1,14.22 1,15C1,16 1.77,17 3,17C3.69,17 4.39,16.5 5,16L7,14.38C7.2,18.62 10.71,22 15,22A8,8 0 0,0 23,14C23,11.08 21.43,8.5 19.09,7.13C19.06,7.11 19.03,7.08 19,7.06C19,7.06 18.92,7 18.86,6.97C15.76,4.88 13.03,3.72 9.55,2.13C9.34,2.04 9.16,2 9,2C8.4,2 8,2.46 8,3M15,9A5,5 0 0,1 20,14A5,5 0 0,1 15,19A5,5 0 0,1 10,14A5,5 0 0,1 15,9M15,10.5A3.5,3.5 0 0,0 11.5,14A3.5,3.5 0 0,0 15,17.5A3.5,3.5 0 0,0 18.5,14A3.5,3.5 0 0,0 15,10.5Z" /></g><g id="blinds"><path d="M3,2H21A1,1 0 0,1 22,3V5A1,1 0 0,1 21,6H20V13A1,1 0 0,1 19,14H13V16.17C14.17,16.58 15,17.69 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.69 9.83,16.58 11,16.17V14H5A1,1 0 0,1 4,13V6H3A1,1 0 0,1 2,5V3A1,1 0 0,1 3,2M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z" /></g><g id="block-helper"><path d="M12,0A12,12 0 0,1 24,12A12,12 0 0,1 12,24A12,12 0 0,1 0,12A12,12 0 0,1 12,0M12,2A10,10 0 0,0 2,12C2,14.4 2.85,16.6 4.26,18.33L18.33,4.26C16.6,2.85 14.4,2 12,2M12,22A10,10 0 0,0 22,12C22,9.6 21.15,7.4 19.74,5.67L5.67,19.74C7.4,21.15 9.6,22 12,22Z" /></g><g id="blogger"><path d="M14,13H9.95A1,1 0 0,0 8.95,14A1,1 0 0,0 9.95,15H14A1,1 0 0,0 15,14A1,1 0 0,0 14,13M9.95,10H12.55A1,1 0 0,0 13.55,9A1,1 0 0,0 12.55,8H9.95A1,1 0 0,0 8.95,9A1,1 0 0,0 9.95,10M16,9V10A1,1 0 0,0 17,11A1,1 0 0,1 18,12V15A3,3 0 0,1 15,18H9A3,3 0 0,1 6,15V8A3,3 0 0,1 9,5H13A3,3 0 0,1 16,8M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="bluetooth"><path d="M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12L17.71,7.71Z" /></g><g id="bluetooth-audio"><path d="M12.88,16.29L11,18.17V14.41M11,5.83L12.88,7.71L11,9.58M15.71,7.71L10,2H9V9.58L4.41,5L3,6.41L8.59,12L3,17.58L4.41,19L9,14.41V22H10L15.71,16.29L11.41,12M19.53,6.71L18.26,8C18.89,9.18 19.25,10.55 19.25,12C19.25,13.45 18.89,14.82 18.26,16L19.46,17.22C20.43,15.68 21,13.87 21,11.91C21,10 20.46,8.23 19.53,6.71M14.24,12L16.56,14.33C16.84,13.6 17,12.82 17,12C17,11.18 16.84,10.4 16.57,9.68L14.24,12Z" /></g><g id="bluetooth-connect"><path d="M19,10L17,12L19,14L21,12M14.88,16.29L13,18.17V14.41M13,5.83L14.88,7.71L13,9.58M17.71,7.71L12,2H11V9.58L6.41,5L5,6.41L10.59,12L5,17.58L6.41,19L11,14.41V22H12L17.71,16.29L13.41,12M7,12L5,10L3,12L5,14L7,12Z" /></g><g id="bluetooth-off"><path d="M13,5.83L14.88,7.71L13.28,9.31L14.69,10.72L17.71,7.7L12,2H11V7.03L13,9.03M5.41,4L4,5.41L10.59,12L5,17.59L6.41,19L11,14.41V22H12L16.29,17.71L18.59,20L20,18.59M13,18.17V14.41L14.88,16.29" /></g><g id="bluetooth-settings"><path d="M14.88,14.29L13,16.17V12.41L14.88,14.29M13,3.83L14.88,5.71L13,7.59M17.71,5.71L12,0H11V7.59L6.41,3L5,4.41L10.59,10L5,15.59L6.41,17L11,12.41V20H12L17.71,14.29L13.41,10L17.71,5.71M15,24H17V22H15M7,24H9V22H7M11,24H13V22H11V24Z" /></g><g id="bluetooth-transfer"><path d="M14.71,7.71L10.41,12L14.71,16.29L9,22H8V14.41L3.41,19L2,17.59L7.59,12L2,6.41L3.41,5L8,9.59V2H9L14.71,7.71M10,5.83V9.59L11.88,7.71L10,5.83M11.88,16.29L10,14.41V18.17L11.88,16.29M22,8H20V11H18V8H16L19,4L22,8M22,16L19,20L16,16H18V13H20V16H22Z" /></g><g id="blur"><path d="M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z" /></g><g id="blur-linear"><path d="M13,17A1,1 0 0,0 14,16A1,1 0 0,0 13,15A1,1 0 0,0 12,16A1,1 0 0,0 13,17M13,13A1,1 0 0,0 14,12A1,1 0 0,0 13,11A1,1 0 0,0 12,12A1,1 0 0,0 13,13M13,9A1,1 0 0,0 14,8A1,1 0 0,0 13,7A1,1 0 0,0 12,8A1,1 0 0,0 13,9M17,12.5A0.5,0.5 0 0,0 17.5,12A0.5,0.5 0 0,0 17,11.5A0.5,0.5 0 0,0 16.5,12A0.5,0.5 0 0,0 17,12.5M17,8.5A0.5,0.5 0 0,0 17.5,8A0.5,0.5 0 0,0 17,7.5A0.5,0.5 0 0,0 16.5,8A0.5,0.5 0 0,0 17,8.5M3,3V5H21V3M17,16.5A0.5,0.5 0 0,0 17.5,16A0.5,0.5 0 0,0 17,15.5A0.5,0.5 0 0,0 16.5,16A0.5,0.5 0 0,0 17,16.5M9,17A1,1 0 0,0 10,16A1,1 0 0,0 9,15A1,1 0 0,0 8,16A1,1 0 0,0 9,17M5,13.5A1.5,1.5 0 0,0 6.5,12A1.5,1.5 0 0,0 5,10.5A1.5,1.5 0 0,0 3.5,12A1.5,1.5 0 0,0 5,13.5M5,9.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 3.5,8A1.5,1.5 0 0,0 5,9.5M3,21H21V19H3M9,9A1,1 0 0,0 10,8A1,1 0 0,0 9,7A1,1 0 0,0 8,8A1,1 0 0,0 9,9M9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13M5,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,14.5A1.5,1.5 0 0,0 3.5,16A1.5,1.5 0 0,0 5,17.5Z" /></g><g id="blur-off"><path d="M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M2.5,5.27L6.28,9.05L6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10C7,9.9 6.97,9.81 6.94,9.72L9.75,12.53C9.04,12.64 8.5,13.26 8.5,14A1.5,1.5 0 0,0 10,15.5C10.74,15.5 11.36,14.96 11.47,14.25L14.28,17.06C14.19,17.03 14.1,17 14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18C15,17.9 14.97,17.81 14.94,17.72L18.72,21.5L20,20.23L3.77,4L2.5,5.27M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7M18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11M18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M13.8,11.5H14A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5A1.5,1.5 0 0,0 12.5,10V10.2C12.61,10.87 13.13,11.39 13.8,11.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7Z" /></g><g id="blur-radial"><path d="M14,13A1,1 0 0,0 13,14A1,1 0 0,0 14,15A1,1 0 0,0 15,14A1,1 0 0,0 14,13M14,16.5A0.5,0.5 0 0,0 13.5,17A0.5,0.5 0 0,0 14,17.5A0.5,0.5 0 0,0 14.5,17A0.5,0.5 0 0,0 14,16.5M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,9.5A0.5,0.5 0 0,0 16.5,10A0.5,0.5 0 0,0 17,10.5A0.5,0.5 0 0,0 17.5,10A0.5,0.5 0 0,0 17,9.5M17,13.5A0.5,0.5 0 0,0 16.5,14A0.5,0.5 0 0,0 17,14.5A0.5,0.5 0 0,0 17.5,14A0.5,0.5 0 0,0 17,13.5M14,7.5A0.5,0.5 0 0,0 14.5,7A0.5,0.5 0 0,0 14,6.5A0.5,0.5 0 0,0 13.5,7A0.5,0.5 0 0,0 14,7.5M14,9A1,1 0 0,0 13,10A1,1 0 0,0 14,11A1,1 0 0,0 15,10A1,1 0 0,0 14,9M10,7.5A0.5,0.5 0 0,0 10.5,7A0.5,0.5 0 0,0 10,6.5A0.5,0.5 0 0,0 9.5,7A0.5,0.5 0 0,0 10,7.5M7,13.5A0.5,0.5 0 0,0 6.5,14A0.5,0.5 0 0,0 7,14.5A0.5,0.5 0 0,0 7.5,14A0.5,0.5 0 0,0 7,13.5M10,16.5A0.5,0.5 0 0,0 9.5,17A0.5,0.5 0 0,0 10,17.5A0.5,0.5 0 0,0 10.5,17A0.5,0.5 0 0,0 10,16.5M7,9.5A0.5,0.5 0 0,0 6.5,10A0.5,0.5 0 0,0 7,10.5A0.5,0.5 0 0,0 7.5,10A0.5,0.5 0 0,0 7,9.5M10,13A1,1 0 0,0 9,14A1,1 0 0,0 10,15A1,1 0 0,0 11,14A1,1 0 0,0 10,13M10,9A1,1 0 0,0 9,10A1,1 0 0,0 10,11A1,1 0 0,0 11,10A1,1 0 0,0 10,9Z" /></g><g id="bomb"><path d="M11.25,6A3.25,3.25 0 0,1 14.5,2.75A3.25,3.25 0 0,1 17.75,6C17.75,6.42 18.08,6.75 18.5,6.75C18.92,6.75 19.25,6.42 19.25,6V5.25H20.75V6A2.25,2.25 0 0,1 18.5,8.25A2.25,2.25 0 0,1 16.25,6A1.75,1.75 0 0,0 14.5,4.25A1.75,1.75 0 0,0 12.75,6H14V7.29C16.89,8.15 19,10.83 19,14A7,7 0 0,1 12,21A7,7 0 0,1 5,14C5,10.83 7.11,8.15 10,7.29V6H11.25M22,6H24V7H22V6M19,4V2H20V4H19M20.91,4.38L22.33,2.96L23.04,3.67L21.62,5.09L20.91,4.38Z" /></g><g id="bomb-off"><path d="M14.5,2.75C12.7,2.75 11.25,4.2 11.25,6H10V7.29C9.31,7.5 8.67,7.81 8.08,8.2L17.79,17.91C18.58,16.76 19,15.39 19,14C19,10.83 16.89,8.15 14,7.29V6H12.75A1.75,1.75 0 0,1 14.5,4.25A1.75,1.75 0 0,1 16.25,6A2.25,2.25 0 0,0 18.5,8.25C19.74,8.25 20.74,7.24 20.74,6V5.25H19.25V6C19.25,6.42 18.91,6.75 18.5,6.75C18.08,6.75 17.75,6.42 17.75,6C17.75,4.2 16.29,2.75 14.5,2.75M3.41,6.36L2,7.77L5.55,11.32C5.2,12.14 5,13.04 5,14C5,17.86 8.13,21 12,21C12.92,21 13.83,20.81 14.68,20.45L18.23,24L19.64,22.59L3.41,6.36Z" /></g><g id="bone"><path d="M8,14A3,3 0 0,1 5,17A3,3 0 0,1 2,14C2,13.23 2.29,12.53 2.76,12C2.29,11.47 2,10.77 2,10A3,3 0 0,1 5,7A3,3 0 0,1 8,10C9.33,10.08 10.67,10.17 12,10.17C13.33,10.17 14.67,10.08 16,10A3,3 0 0,1 19,7A3,3 0 0,1 22,10C22,10.77 21.71,11.47 21.24,12C21.71,12.53 22,13.23 22,14A3,3 0 0,1 19,17A3,3 0 0,1 16,14C14.67,13.92 13.33,13.83 12,13.83C10.67,13.83 9.33,13.92 8,14Z" /></g><g id="book"><path d="M18,22A2,2 0 0,0 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18Z" /></g><g id="book-minus"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M18,18V16H12V18H18Z" /></g><g id="book-multiple"><path d="M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H10V7L12,5.5L14,7V2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z" /></g><g id="book-multiple-variant"><path d="M19,18H9A2,2 0 0,1 7,16V4A2,2 0 0,1 9,2H19A2,2 0 0,1 21,4V16A2,2 0 0,1 19,18M10,9L12,7.5L14,9V4H10V9M17,20V22H5A2,2 0 0,1 3,20V6H5V20H17Z" /></g><g id="book-open"><path d="M13,12H20V13.5H13M13,9.5H20V11H13M13,14.5H20V16H13M21,4H3A2,2 0 0,0 1,6V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V6A2,2 0 0,0 21,4M21,19H12V6H21" /></g><g id="book-open-page-variant"><path d="M19,2L14,6.5V17.5L19,13V2M6.5,5C4.55,5 2.45,5.4 1,6.5V21.16C1,21.41 1.25,21.66 1.5,21.66C1.6,21.66 1.65,21.59 1.75,21.59C3.1,20.94 5.05,20.5 6.5,20.5C8.45,20.5 10.55,20.9 12,22C13.35,21.15 15.8,20.5 17.5,20.5C19.15,20.5 20.85,20.81 22.25,21.56C22.35,21.61 22.4,21.59 22.5,21.59C22.75,21.59 23,21.34 23,21.09V6.5C22.4,6.05 21.75,5.75 21,5.5V7.5L21,13V19C19.9,18.65 18.7,18.5 17.5,18.5C15.8,18.5 13.35,19.15 12,20V13L12,8.5V6.5C10.55,5.4 8.45,5 6.5,5V5Z" /></g><g id="book-open-variant"><path d="M21,5C19.89,4.65 18.67,4.5 17.5,4.5C15.55,4.5 13.45,4.9 12,6C10.55,4.9 8.45,4.5 6.5,4.5C4.55,4.5 2.45,4.9 1,6V20.65C1,20.9 1.25,21.15 1.5,21.15C1.6,21.15 1.65,21.1 1.75,21.1C3.1,20.45 5.05,20 6.5,20C8.45,20 10.55,20.4 12,21.5C13.35,20.65 15.8,20 17.5,20C19.15,20 20.85,20.3 22.25,21.05C22.35,21.1 22.4,21.1 22.5,21.1C22.75,21.1 23,20.85 23,20.6V6C22.4,5.55 21.75,5.25 21,5M21,18.5C19.9,18.15 18.7,18 17.5,18C15.8,18 13.35,18.65 12,19.5V8C13.35,7.15 15.8,6.5 17.5,6.5C18.7,6.5 19.9,6.65 21,7V18.5Z" /></g><g id="book-plus"><path d="M18,22H6A2,2 0 0,1 4,20V4C4,2.89 4.9,2 6,2H7V9L9.5,7.5L12,9V2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22M14,20H16V18H18V16H16V14H14V16H12V18H14V20Z" /></g><g id="book-variant"><path d="M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="bookmark"><path d="M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z" /></g><g id="bookmark-check"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,14L17.25,7.76L15.84,6.34L11,11.18L8.41,8.59L7,10L11,14Z" /></g><g id="bookmark-music"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,11A2,2 0 0,0 9,13A2,2 0 0,0 11,15A2,2 0 0,0 13,13V8H16V6H12V11.27C11.71,11.1 11.36,11 11,11Z" /></g><g id="bookmark-outline"><path d="M17,18L12,15.82L7,18V5H17M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z" /></g><g id="bookmark-plus"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7V9H9V11H11V13H13V11H15V9H13V7H11Z" /></g><g id="bookmark-plus-outline"><path d="M17,18V5H7V18L12,15.82L17,18M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M11,7H13V9H15V11H13V13H11V11H9V9H11V7Z" /></g><g id="bookmark-remove"><path d="M17,3A2,2 0 0,1 19,5V21L12,18L5,21V5C5,3.89 5.9,3 7,3H17M8.17,8.58L10.59,11L8.17,13.41L9.59,14.83L12,12.41L14.41,14.83L15.83,13.41L13.41,11L15.83,8.58L14.41,7.17L12,9.58L9.59,7.17L8.17,8.58Z" /></g><g id="boombox"><path d="M7,5L5,7V8H3A1,1 0 0,0 2,9V17A1,1 0 0,0 3,18H21A1,1 0 0,0 22,17V9A1,1 0 0,0 21,8H19V7L17,5H7M7,7H17V8H7V7M11,9H13A0.5,0.5 0 0,1 13.5,9.5A0.5,0.5 0 0,1 13,10H11A0.5,0.5 0 0,1 10.5,9.5A0.5,0.5 0 0,1 11,9M7.5,10.5A3,3 0 0,1 10.5,13.5A3,3 0 0,1 7.5,16.5A3,3 0 0,1 4.5,13.5A3,3 0 0,1 7.5,10.5M16.5,10.5A3,3 0 0,1 19.5,13.5A3,3 0 0,1 16.5,16.5A3,3 0 0,1 13.5,13.5A3,3 0 0,1 16.5,10.5M7.5,12A1.5,1.5 0 0,0 6,13.5A1.5,1.5 0 0,0 7.5,15A1.5,1.5 0 0,0 9,13.5A1.5,1.5 0 0,0 7.5,12M16.5,12A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 16.5,15A1.5,1.5 0 0,0 18,13.5A1.5,1.5 0 0,0 16.5,12Z" /></g><g id="bootstrap"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7.5,6V18H12.5C14.75,18 16.5,16.75 16.5,14.5C16.5,12.5 14.77,11.5 13.25,11.5A2.75,2.75 0 0,0 16,8.75C16,7.23 14.27,6 12.75,6H7.5M10,11V8H11.5A1.5,1.5 0 0,1 13,9.5A1.5,1.5 0 0,1 11.5,11H10M10,13H12A1.5,1.5 0 0,1 13.5,14.5A1.5,1.5 0 0,1 12,16H10V13Z" /></g><g id="border-all"><path d="M19,11H13V5H19M19,19H13V13H19M11,11H5V5H11M11,19H5V13H11M3,21H21V3H3V21Z" /></g><g id="border-bottom"><path d="M5,15H3V17H5M3,21H21V19H3M5,11H3V13H5M19,9H21V7H19M19,5H21V3H19M5,7H3V9H5M19,17H21V15H19M19,13H21V11H19M17,3H15V5H17M13,3H11V5H13M17,11H15V13H17M13,7H11V9H13M5,3H3V5H5M13,11H11V13H13M9,3H7V5H9M13,15H11V17H13M9,11H7V13H9V11Z" /></g><g id="border-color"><path d="M20.71,4.04C21.1,3.65 21.1,3 20.71,2.63L18.37,0.29C18,-0.1 17.35,-0.1 16.96,0.29L15,2.25L18.75,6M17.75,7L14,3.25L4,13.25V17H7.75L17.75,7Z" /></g><g id="border-horizontal"><path d="M19,21H21V19H19M15,21H17V19H15M11,17H13V15H11M19,9H21V7H19M19,5H21V3H19M3,13H21V11H3M11,21H13V19H11M19,17H21V15H19M13,3H11V5H13M13,7H11V9H13M17,3H15V5H17M9,3H7V5H9M5,3H3V5H5M7,21H9V19H7M3,17H5V15H3M5,7H3V9H5M3,21H5V19H3V21Z" /></g><g id="border-inside"><path d="M19,17H21V15H19M19,21H21V19H19M13,3H11V11H3V13H11V21H13V13H21V11H13M15,21H17V19H15M19,5H21V3H19M19,9H21V7H19M17,3H15V5H17M5,3H3V5H5M9,3H7V5H9M3,17H5V15H3M5,7H3V9H5M7,21H9V19H7M3,21H5V19H3V21Z" /></g><g id="border-left"><path d="M15,5H17V3H15M15,13H17V11H15M19,21H21V19H19M19,13H21V11H19M19,5H21V3H19M19,17H21V15H19M15,21H17V19H15M19,9H21V7H19M3,21H5V3H3M7,13H9V11H7M7,5H9V3H7M7,21H9V19H7M11,13H13V11H11M11,9H13V7H11M11,5H13V3H11M11,17H13V15H11M11,21H13V19H11V21Z" /></g><g id="border-none"><path d="M15,5H17V3H15M15,13H17V11H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M11,9H13V7H11M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M11,13H13V11H11M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M11,17H13V15H11M7,21H9V19H7M7,13H9V11H7M7,5H9V3H7V5Z" /></g><g id="border-outside"><path d="M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z" /></g><g id="border-right"><path d="M11,9H13V7H11M11,5H13V3H11M11,13H13V11H11M15,5H17V3H15M15,21H17V19H15M19,21H21V3H19M15,13H17V11H15M11,17H13V15H11M3,9H5V7H3M3,17H5V15H3M3,13H5V11H3M11,21H13V19H11M3,21H5V19H3M7,13H9V11H7M7,5H9V3H7M3,5H5V3H3M7,21H9V19H7V21Z" /></g><g id="border-style"><path d="M15,21H17V19H15M19,21H21V19H19M7,21H9V19H7M11,21H13V19H11M19,17H21V15H19M19,13H21V11H19M3,3V21H5V5H21V3M19,9H21V7H19" /></g><g id="border-top"><path d="M15,13H17V11H15M19,21H21V19H19M11,9H13V7H11M15,21H17V19H15M19,17H21V15H19M3,5H21V3H3M19,13H21V11H19M19,9H21V7H19M11,17H13V15H11M3,9H5V7H3M3,13H5V11H3M3,21H5V19H3M3,17H5V15H3M11,21H13V19H11M11,13H13V11H11M7,13H9V11H7M7,21H9V19H7V21Z" /></g><g id="border-vertical"><path d="M15,13H17V11H15M15,21H17V19H15M15,5H17V3H15M19,9H21V7H19M19,5H21V3H19M19,13H21V11H19M19,21H21V19H19M11,21H13V3H11M19,17H21V15H19M7,5H9V3H7M3,17H5V15H3M3,21H5V19H3M3,13H5V11H3M7,13H9V11H7M7,21H9V19H7M3,5H5V3H3M3,9H5V7H3V9Z" /></g><g id="bow-tie"><path d="M15,14L21,17V7L15,10V14M9,14L3,17V7L9,10V14M10,10H14V14H10V10Z" /></g><g id="bowl"><path d="M22,15A7,7 0 0,1 15,22H9A7,7 0 0,1 2,15V12H15.58L20.3,4.44L22,5.5L17.94,12H22V15Z" /></g><g id="bowling"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12.5,11A1.5,1.5 0 0,0 11,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,12.5A1.5,1.5 0 0,0 12.5,11M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M5.93,8.5C5.38,9.45 5.71,10.67 6.66,11.22C7.62,11.78 8.84,11.45 9.4,10.5C9.95,9.53 9.62,8.31 8.66,7.76C7.71,7.21 6.5,7.53 5.93,8.5Z" /></g><g id="box"><path d="M15.39,14.04V14.04C15.39,12.62 14.24,11.47 12.82,11.47C11.41,11.47 10.26,12.62 10.26,14.04V14.04C10.26,15.45 11.41,16.6 12.82,16.6C14.24,16.6 15.39,15.45 15.39,14.04M17.1,14.04C17.1,16.4 15.18,18.31 12.82,18.31C11.19,18.31 9.77,17.39 9.05,16.04C8.33,17.39 6.91,18.31 5.28,18.31C2.94,18.31 1.04,16.43 1,14.11V14.11H1V7H1V7C1,6.56 1.39,6.18 1.86,6.18C2.33,6.18 2.7,6.56 2.71,7V7H2.71V10.62C3.43,10.08 4.32,9.76 5.28,9.76C6.91,9.76 8.33,10.68 9.05,12.03C9.77,10.68 11.19,9.76 12.82,9.76C15.18,9.76 17.1,11.68 17.1,14.04V14.04M7.84,14.04V14.04C7.84,12.62 6.69,11.47 5.28,11.47C3.86,11.47 2.71,12.62 2.71,14.04V14.04C2.71,15.45 3.86,16.6 5.28,16.6C6.69,16.6 7.84,15.45 7.84,14.04M22.84,16.96V16.96C22.95,17.12 23,17.3 23,17.47C23,17.73 22.88,18 22.66,18.15C22.5,18.26 22.33,18.32 22.15,18.32C21.9,18.32 21.65,18.21 21.5,18L19.59,15.47L17.7,18V18C17.53,18.21 17.28,18.32 17.03,18.32C16.85,18.32 16.67,18.26 16.5,18.15C16.29,18 16.17,17.72 16.17,17.46C16.17,17.29 16.23,17.11 16.33,16.96V16.96H16.33V16.96L18.5,14.04L16.33,11.11V11.11H16.33V11.11C16.22,10.96 16.17,10.79 16.17,10.61C16.17,10.35 16.29,10.1 16.5,9.93C16.89,9.65 17.41,9.72 17.7,10.09V10.09L19.59,12.61L21.5,10.09C21.76,9.72 22.29,9.65 22.66,9.93C22.89,10.1 23,10.36 23,10.63C23,10.8 22.95,10.97 22.84,11.11V11.11H22.84V11.11L20.66,14.04L22.84,16.96V16.96H22.84Z" /></g><g id="box-cutter"><path d="M7.22,11.91C6.89,12.24 6.71,12.65 6.66,13.08L12.17,15.44L20.66,6.96C21.44,6.17 21.44,4.91 20.66,4.13L19.24,2.71C18.46,1.93 17.2,1.93 16.41,2.71L7.22,11.91M5,16V21.75L10.81,16.53L5.81,14.53L5,16M17.12,4.83C17.5,4.44 18.15,4.44 18.54,4.83C18.93,5.23 18.93,5.86 18.54,6.25C18.15,6.64 17.5,6.64 17.12,6.25C16.73,5.86 16.73,5.23 17.12,4.83Z" /></g><g id="box-shadow"><path d="M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z" /></g><g id="bridge"><path d="M7,14V10.91C6.28,10.58 5.61,10.18 5,9.71V14H7M5,18H3V16H1V14H3V7H5V8.43C6.8,10 9.27,11 12,11C14.73,11 17.2,10 19,8.43V7H21V14H23V16H21V18H19V16H5V18M17,10.91V14H19V9.71C18.39,10.18 17.72,10.58 17,10.91M16,14V11.32C15.36,11.55 14.69,11.72 14,11.84V14H16M13,14V11.96L12,12L11,11.96V14H13M10,14V11.84C9.31,11.72 8.64,11.55 8,11.32V14H10Z" /></g><g id="briefcase"><path d="M14,6H10V4H14M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8C22,6.89 21.1,6 20,6Z" /></g><g id="briefcase-check"><path d="M10.5,17.5L7,14L8.41,12.59L10.5,14.67L15.68,9.5L17.09,10.91M10,4H14V6H10M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="briefcase-download"><path d="M12,19L7,14H10V10H14V14H17M10,4H14V6H10M20,6H16V4L14,2H10L8,4V6H4C2.89,6 2,6.89 2,8V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V8C22,6.89 21.1,6 20,6Z" /></g><g id="briefcase-upload"><path d="M20,6A2,2 0 0,1 22,8V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V8C2,6.89 2.89,6 4,6H8V4L10,2H14L16,4V6H20M10,4V6H14V4H10M12,9L7,14H10V18H14V14H17L12,9Z" /></g><g id="brightness-1"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="brightness-2"><path d="M10,2C8.18,2 6.47,2.5 5,3.35C8,5.08 10,8.3 10,12C10,15.7 8,18.92 5,20.65C6.47,21.5 8.18,22 10,22A10,10 0 0,0 20,12A10,10 0 0,0 10,2Z" /></g><g id="brightness-3"><path d="M9,2C7.95,2 6.95,2.16 6,2.46C10.06,3.73 13,7.5 13,12C13,16.5 10.06,20.27 6,21.54C6.95,21.84 7.95,22 9,22A10,10 0 0,0 19,12A10,10 0 0,0 9,2Z" /></g><g id="brightness-4"><path d="M12,18C11.11,18 10.26,17.8 9.5,17.45C11.56,16.5 13,14.42 13,12C13,9.58 11.56,7.5 9.5,6.55C10.26,6.2 11.11,6 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></g><g id="brightness-5"><path d="M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z" /></g><g id="brightness-6"><path d="M12,18V6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,15.31L23.31,12L20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31Z" /></g><g id="brightness-7"><path d="M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></g><g id="brightness-auto"><path d="M14.3,16L13.6,14H10.4L9.7,16H7.8L11,7H13L16.2,16H14.3M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69M10.85,12.65H13.15L12,9L10.85,12.65Z" /></g><g id="broom"><path d="M19.36,2.72L20.78,4.14L15.06,9.85C16.13,11.39 16.28,13.24 15.38,14.44L9.06,8.12C10.26,7.22 12.11,7.37 13.65,8.44L19.36,2.72M5.93,17.57C3.92,15.56 2.69,13.16 2.35,10.92L7.23,8.83L14.67,16.27L12.58,21.15C10.34,20.81 7.94,19.58 5.93,17.57Z" /></g><g id="brush"><path d="M20.71,4.63L19.37,3.29C19,2.9 18.35,2.9 17.96,3.29L9,12.25L11.75,15L20.71,6.04C21.1,5.65 21.1,5 20.71,4.63M7,14A3,3 0 0,0 4,17C4,18.31 2.84,19 2,19C2.92,20.22 4.5,21 6,21A4,4 0 0,0 10,17A3,3 0 0,0 7,14Z" /></g><g id="buffer"><path d="M12.6,2.86C15.27,4.1 18,5.39 20.66,6.63C20.81,6.7 21,6.75 21,6.95C21,7.15 20.81,7.19 20.66,7.26C18,8.5 15.3,9.77 12.62,11C12.21,11.21 11.79,11.21 11.38,11C8.69,9.76 6,8.5 3.32,7.25C3.18,7.19 3,7.14 3,6.94C3,6.76 3.18,6.71 3.31,6.65C6,5.39 8.74,4.1 11.44,2.85C11.73,2.72 12.3,2.73 12.6,2.86M12,21.15C11.8,21.15 11.66,21.07 11.38,20.97C8.69,19.73 6,18.47 3.33,17.22C3.19,17.15 3,17.11 3,16.9C3,16.7 3.19,16.66 3.34,16.59C3.78,16.38 4.23,16.17 4.67,15.96C5.12,15.76 5.56,15.76 6,15.97C7.79,16.8 9.57,17.63 11.35,18.46C11.79,18.67 12.23,18.66 12.67,18.46C14.45,17.62 16.23,16.79 18,15.96C18.44,15.76 18.87,15.75 19.29,15.95C19.77,16.16 20.24,16.39 20.71,16.61C20.78,16.64 20.85,16.68 20.91,16.73C21.04,16.83 21.04,17 20.91,17.08C20.83,17.14 20.74,17.19 20.65,17.23C18,18.5 15.33,19.72 12.66,20.95C12.46,21.05 12.19,21.15 12,21.15M12,16.17C11.9,16.17 11.55,16.07 11.36,16C8.68,14.74 6,13.5 3.34,12.24C3.2,12.18 3,12.13 3,11.93C3,11.72 3.2,11.68 3.35,11.61C3.8,11.39 4.25,11.18 4.7,10.97C5.13,10.78 5.56,10.78 6,11C7.78,11.82 9.58,12.66 11.38,13.5C11.79,13.69 12.21,13.69 12.63,13.5C14.43,12.65 16.23,11.81 18.04,10.97C18.45,10.78 18.87,10.78 19.29,10.97C19.76,11.19 20.24,11.41 20.71,11.63C20.77,11.66 20.84,11.69 20.9,11.74C21.04,11.85 21.04,12 20.89,12.12C20.84,12.16 20.77,12.19 20.71,12.22C18,13.5 15.31,14.75 12.61,16C12.42,16.09 12.08,16.17 12,16.17Z" /></g><g id="bug"><path d="M14,12H10V10H14M14,16H10V14H14M20,8H17.19C16.74,7.22 16.12,6.55 15.37,6.04L17,4.41L15.59,3L13.42,5.17C12.96,5.06 12.5,5 12,5C11.5,5 11.04,5.06 10.59,5.17L8.41,3L7,4.41L8.62,6.04C7.88,6.55 7.26,7.22 6.81,8H4V10H6.09C6.04,10.33 6,10.66 6,11V12H4V14H6V15C6,15.34 6.04,15.67 6.09,16H4V18H6.81C7.85,19.79 9.78,21 12,21C14.22,21 16.15,19.79 17.19,18H20V16H17.91C17.96,15.67 18,15.34 18,15V14H20V12H18V11C18,10.66 17.96,10.33 17.91,10H20V8Z" /></g><g id="bulletin-board"><path d="M12.04,2.5L9.53,5H14.53L12.04,2.5M4,7V20H20V7H4M12,0L17,5V5H20A2,2 0 0,1 22,7V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V7A2,2 0 0,1 4,5H7V5L12,0M7,18V14H12V18H7M14,17V10H18V17H14M6,12V9H11V12H6Z" /></g><g id="bullhorn"><path d="M16,12V16A1,1 0 0,1 15,17C14.83,17 14.67,17 14.06,16.5C13.44,16 12.39,15 11.31,14.5C10.31,14.04 9.28,14 8.26,14L9.47,17.32L9.5,17.5A0.5,0.5 0 0,1 9,18H7C6.78,18 6.59,17.86 6.53,17.66L5.19,14H5A1,1 0 0,1 4,13A2,2 0 0,1 2,11A2,2 0 0,1 4,9A1,1 0 0,1 5,8H8C9.11,8 10.22,8 11.31,7.5C12.39,7 13.44,6 14.06,5.5C14.67,5 14.83,5 15,5A1,1 0 0,1 16,6V10A1,1 0 0,1 17,11A1,1 0 0,1 16,12M21,11C21,12.38 20.44,13.63 19.54,14.54L18.12,13.12C18.66,12.58 19,11.83 19,11C19,10.17 18.66,9.42 18.12,8.88L19.54,7.46C20.44,8.37 21,9.62 21,11Z" /></g><g id="bullseye"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="burst-mode"><path d="M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z" /></g><g id="bus"><path d="M18,11H6V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M4,16C4,16.88 4.39,17.67 5,18.22V20A1,1 0 0,0 6,21H7A1,1 0 0,0 8,20V19H16V20A1,1 0 0,0 17,21H18A1,1 0 0,0 19,20V18.22C19.61,17.67 20,16.88 20,16V6C20,2.5 16.42,2 12,2C7.58,2 4,2.5 4,6V16Z" /></g><g id="cached"><path d="M19,8L15,12H18A6,6 0 0,1 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20A8,8 0 0,0 20,12H23M6,12A6,6 0 0,1 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4A8,8 0 0,0 4,12H1L5,16L9,12" /></g><g id="cake"><path d="M11.5,0.5C12,0.75 13,2.4 13,3.5C13,4.6 12.33,5 11.5,5C10.67,5 10,4.85 10,3.75C10,2.65 11,2 11.5,0.5M18.5,9C21,9 23,11 23,13.5C23,15.06 22.21,16.43 21,17.24V23H12L3,23V17.24C1.79,16.43 1,15.06 1,13.5C1,11 3,9 5.5,9H10V6H13V9H18.5M12,16A2.5,2.5 0 0,0 14.5,13.5H16A2.5,2.5 0 0,0 18.5,16A2.5,2.5 0 0,0 21,13.5A2.5,2.5 0 0,0 18.5,11H5.5A2.5,2.5 0 0,0 3,13.5A2.5,2.5 0 0,0 5.5,16A2.5,2.5 0 0,0 8,13.5H9.5A2.5,2.5 0 0,0 12,16Z" /></g><g id="cake-layered"><path d="M21,21V17C21,15.89 20.1,15 19,15H18V12C18,10.89 17.1,10 16,10H13V8H11V10H8C6.89,10 6,10.89 6,12V15H5C3.89,15 3,15.89 3,17V21H1V23H23V21M12,7A2,2 0 0,0 14,5C14,4.62 13.9,4.27 13.71,3.97L12,1L10.28,3.97C10.1,4.27 10,4.62 10,5A2,2 0 0,0 12,7Z" /></g><g id="cake-variant"><path d="M12,6C13.11,6 14,5.1 14,4C14,3.62 13.9,3.27 13.71,2.97L12,0L10.29,2.97C10.1,3.27 10,3.62 10,4A2,2 0 0,0 12,6M16.6,16L15.53,14.92L14.45,16C13.15,17.29 10.87,17.3 9.56,16L8.5,14.92L7.4,16C6.75,16.64 5.88,17 4.96,17C4.23,17 3.56,16.77 3,16.39V21A1,1 0 0,0 4,22H20A1,1 0 0,0 21,21V16.39C20.44,16.77 19.77,17 19.04,17C18.12,17 17.25,16.64 16.6,16M18,9H13V7H11V9H6A3,3 0 0,0 3,12V13.54C3,14.62 3.88,15.5 4.96,15.5C5.5,15.5 6,15.3 6.34,14.93L8.5,12.8L10.61,14.93C11.35,15.67 12.64,15.67 13.38,14.93L15.5,12.8L17.65,14.93C18,15.3 18.5,15.5 19.03,15.5C20.11,15.5 21,14.62 21,13.54V12A3,3 0 0,0 18,9Z" /></g><g id="calculator"><path d="M7,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V4A2,2 0 0,1 7,2M7,4V8H17V4H7M7,10V12H9V10H7M11,10V12H13V10H11M15,10V12H17V10H15M7,14V16H9V14H7M11,14V16H13V14H11M15,14V16H17V14H15M7,18V20H9V18H7M11,18V20H13V18H11M15,18V20H17V18H15Z" /></g><g id="calendar"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z" /></g><g id="calendar-blank"><path d="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1" /></g><g id="calendar-check"><path d="M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M16.53,11.06L15.47,10L10.59,14.88L8.47,12.76L7.41,13.82L10.59,17L16.53,11.06Z" /></g><g id="calendar-clock"><path d="M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z" /></g><g id="calendar-multiple"><path d="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z" /></g><g id="calendar-multiple-check"><path d="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M17.53,11.06L13.09,15.5L10.41,12.82L11.47,11.76L13.09,13.38L16.47,10L17.53,11.06M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21Z" /></g><g id="calendar-plus"><path d="M19,19V7H5V19H19M16,1H18V3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1M11,9H13V12H16V14H13V17H11V14H8V12H11V9Z" /></g><g id="calendar-question"><path d="M6,1V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H18V1H16V3H8V1H6M5,8H19V19H5V8M12.19,9C11.32,9 10.62,9.2 10.08,9.59C9.56,10 9.3,10.57 9.31,11.36L9.32,11.39H11.25C11.26,11.09 11.35,10.86 11.53,10.7C11.71,10.55 11.93,10.47 12.19,10.47C12.5,10.47 12.76,10.57 12.94,10.75C13.12,10.94 13.2,11.2 13.2,11.5C13.2,11.82 13.13,12.09 12.97,12.32C12.83,12.55 12.62,12.75 12.36,12.91C11.85,13.25 11.5,13.55 11.31,13.82C11.11,14.08 11,14.5 11,15H13C13,14.69 13.04,14.44 13.13,14.26C13.22,14.08 13.39,13.9 13.64,13.74C14.09,13.5 14.46,13.21 14.75,12.81C15.04,12.41 15.19,12 15.19,11.5C15.19,10.74 14.92,10.13 14.38,9.68C13.85,9.23 13.12,9 12.19,9M11,16V18H13V16H11Z" /></g><g id="calendar-range"><path d="M9,11H7V13H9V11M13,11H11V13H13V11M17,11H15V13H17V11M19,4H18V2H16V4H8V2H6V4H5C3.89,4 3,4.9 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M19,20H5V9H19V20Z" /></g><g id="calendar-remove"><path d="M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9.31,17L11.75,14.56L14.19,17L15.25,15.94L12.81,13.5L15.25,11.06L14.19,10L11.75,12.44L9.31,10L8.25,11.06L10.69,13.5L8.25,15.94L9.31,17Z" /></g><g id="calendar-text"><path d="M14,14H7V16H14M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M17,10H7V12H17V10Z" /></g><g id="calendar-today"><path d="M7,10H12V15H7M19,19H5V8H19M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="call-made"><path d="M9,5V7H15.59L4,18.59L5.41,20L17,8.41V15H19V5" /></g><g id="call-merge"><path d="M17,20.41L18.41,19L15,15.59L13.59,17M7.5,8H11V13.59L5.59,19L7,20.41L13,14.41V8H16.5L12,3.5" /></g><g id="call-missed"><path d="M19.59,7L12,14.59L6.41,9H11V7H3V15H5V10.41L12,17.41L21,8.41" /></g><g id="call-received"><path d="M20,5.41L18.59,4L7,15.59V9H5V19H15V17H8.41" /></g><g id="call-split"><path d="M14,4L16.29,6.29L13.41,9.17L14.83,10.59L17.71,7.71L20,10V4M10,4H4V10L6.29,7.71L11,12.41V20H13V11.59L7.71,6.29" /></g><g id="camcorder"><path d="M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z" /></g><g id="camcorder-box"><path d="M18,16L14,12.8V16H6V8H14V11.2L18,8M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camcorder-box-off"><path d="M6,8H6.73L14,15.27V16H6M2.27,1L1,2.27L3,4.28C2.41,4.62 2,5.26 2,6V18A2,2 0 0,0 4,20H18.73L20.73,22L22,20.73M20,4H7.82L11.82,8H14V10.18L14.57,10.75L18,8V14.18L22,18.17C22,18.11 22,18.06 22,18V6A2,2 0 0,0 20,4Z" /></g><g id="camcorder-off"><path d="M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z" /></g><g id="camera"><path d="M4,4H7L9,2H15L17,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z" /></g><g id="camera-burst"><path d="M1,5H3V19H1V5M5,5H7V19H5V5M22,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H22A1,1 0 0,0 23,18V6A1,1 0 0,0 22,5M11,17L13.5,13.85L15.29,16L17.79,12.78L21,17H11Z" /></g><g id="camera-enhance"><path d="M9,3L7.17,5H4A2,2 0 0,0 2,7V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V7A2,2 0 0,0 20,5H16.83L15,3M12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18M12,17L13.25,14.25L16,13L13.25,11.75L12,9L10.75,11.75L8,13L10.75,14.25" /></g><g id="camera-front"><path d="M7,2H17V12.5C17,10.83 13.67,10 12,10C10.33,10 7,10.83 7,12.5M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M12,8A2,2 0 0,0 14,6A2,2 0 0,0 12,4A2,2 0 0,0 10,6A2,2 0 0,0 12,8M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z" /></g><g id="camera-front-variant"><path d="M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M11,1V3H13V1H11M6,4V16.5C6,15.12 8.69,14 12,14C15.31,14 18,15.12 18,16.5V4H6M13,18H9V20H13V22L16,19L13,16V18Z" /></g><g id="camera-iris"><path d="M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z" /></g><g id="camera-off"><path d="M1.2,4.47L2.5,3.2L20,20.72L18.73,22L16.73,20H4A2,2 0 0,1 2,18V6C2,5.78 2.04,5.57 2.1,5.37L1.2,4.47M7,4L9,2H15L17,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L16.33,14.5C16.76,13.77 17,12.91 17,12A5,5 0 0,0 12,7C11.09,7 10.23,7.24 9.5,7.67L5.82,4H7M7,12A5,5 0 0,0 12,17C12.5,17 13.03,16.92 13.5,16.77L11.72,15C10.29,14.85 9.15,13.71 9,12.28L7.23,10.5C7.08,10.97 7,11.5 7,12M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9Z" /></g><g id="camera-party-mode"><path d="M12,17C10.37,17 8.94,16.21 8,15H12A3,3 0 0,0 15,12C15,11.65 14.93,11.31 14.82,11H16.9C16.96,11.32 17,11.66 17,12A5,5 0 0,1 12,17M12,7C13.63,7 15.06,7.79 16,9H12A3,3 0 0,0 9,12C9,12.35 9.07,12.68 9.18,13H7.1C7.03,12.68 7,12.34 7,12A5,5 0 0,1 12,7M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camera-rear"><path d="M12,6C10.89,6 10,5.1 10,4A2,2 0 0,1 12,2C13.09,2 14,2.9 14,4A2,2 0 0,1 12,6M17,0H7A2,2 0 0,0 5,2V16A2,2 0 0,0 7,18H17A2,2 0 0,0 19,16V2A2,2 0 0,0 17,0M14,20V22H19V20M10,20H5V22H10V24L13,21L10,18V20Z" /></g><g id="camera-rear-variant"><path d="M6,0H18A2,2 0 0,1 20,2V22A2,2 0 0,1 18,24H6A2,2 0 0,1 4,22V2A2,2 0 0,1 6,0M12,2A2,2 0 0,0 10,4A2,2 0 0,0 12,6A2,2 0 0,0 14,4A2,2 0 0,0 12,2M13,18H9V20H13V22L16,19L13,16V18Z" /></g><g id="camera-switch"><path d="M15,15.5V13H9V15.5L5.5,12L9,8.5V11H15V8.5L18.5,12M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="camera-timer"><path d="M4.94,6.35C4.55,5.96 4.55,5.32 4.94,4.93C5.33,4.54 5.96,4.54 6.35,4.93L13.07,10.31L13.42,10.59C14.2,11.37 14.2,12.64 13.42,13.42C12.64,14.2 11.37,14.2 10.59,13.42L10.31,13.07L4.94,6.35M12,20A8,8 0 0,0 20,12C20,9.79 19.1,7.79 17.66,6.34L19.07,4.93C20.88,6.74 22,9.24 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12H4A8,8 0 0,0 12,20M12,1A2,2 0 0,1 14,3A2,2 0 0,1 12,5A2,2 0 0,1 10,3A2,2 0 0,1 12,1Z" /></g><g id="candle"><path d="M12.5,2C10.84,2 9.5,5.34 9.5,7A3,3 0 0,0 12.5,10A3,3 0 0,0 15.5,7C15.5,5.34 14.16,2 12.5,2M12.5,6.5A1,1 0 0,1 13.5,7.5A1,1 0 0,1 12.5,8.5A1,1 0 0,1 11.5,7.5A1,1 0 0,1 12.5,6.5M10,11A1,1 0 0,0 9,12V20H7A1,1 0 0,1 6,19V18A1,1 0 0,0 5,17A1,1 0 0,0 4,18V19A3,3 0 0,0 7,22H19A1,1 0 0,0 20,21A1,1 0 0,0 19,20H16V12A1,1 0 0,0 15,11H10Z" /></g><g id="candycane"><path d="M10,10A2,2 0 0,1 8,12A2,2 0 0,1 6,10V8C6,7.37 6.1,6.77 6.27,6.2L10,9.93V10M12,2C12.74,2 13.44,2.13 14.09,2.38L11.97,6C11.14,6 10.44,6.5 10.15,7.25L7.24,4.34C8.34,2.92 10.06,2 12,2M17.76,6.31L14,10.07V8C14,7.62 13.9,7.27 13.72,6.97L15.83,3.38C16.74,4.13 17.42,5.15 17.76,6.31M18,13.09L14,17.09V12.9L18,8.9V13.09M18,20A2,2 0 0,1 16,22A2,2 0 0,1 14,20V19.91L18,15.91V20Z" /></g><g id="car"><path d="M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z" /></g><g id="car-battery"><path d="M4,3V6H1V20H23V6H20V3H14V6H10V3H4M3,8H21V18H3V8M15,10V12H13V14H15V16H17V14H19V12H17V10H15M5,12V14H11V12H5Z" /></g><g id="car-connected"><path d="M5,14H19L17.5,9.5H6.5L5,14M17.5,19A1.5,1.5 0 0,0 19,17.5A1.5,1.5 0 0,0 17.5,16A1.5,1.5 0 0,0 16,17.5A1.5,1.5 0 0,0 17.5,19M6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19M18.92,9L21,15V23A1,1 0 0,1 20,24H19A1,1 0 0,1 18,23V22H6V23A1,1 0 0,1 5,24H4A1,1 0 0,1 3,23V15L5.08,9C5.28,8.42 5.85,8 6.5,8H17.5C18.15,8 18.72,8.42 18.92,9M12,0C14.12,0 16.15,0.86 17.65,2.35L16.23,3.77C15.11,2.65 13.58,2 12,2C10.42,2 8.89,2.65 7.77,3.77L6.36,2.35C7.85,0.86 9.88,0 12,0M12,4C13.06,4 14.07,4.44 14.82,5.18L13.4,6.6C13.03,6.23 12.53,6 12,6C11.5,6 10.97,6.23 10.6,6.6L9.18,5.18C9.93,4.44 10.94,4 12,4Z" /></g><g id="car-wash"><path d="M5,13L6.5,8.5H17.5L19,13M17.5,18A1.5,1.5 0 0,1 16,16.5A1.5,1.5 0 0,1 17.5,15A1.5,1.5 0 0,1 19,16.5A1.5,1.5 0 0,1 17.5,18M6.5,18A1.5,1.5 0 0,1 5,16.5A1.5,1.5 0 0,1 6.5,15A1.5,1.5 0 0,1 8,16.5A1.5,1.5 0 0,1 6.5,18M18.92,8C18.72,7.42 18.16,7 17.5,7H6.5C5.84,7 5.28,7.42 5.08,8L3,14V22A1,1 0 0,0 4,23H5A1,1 0 0,0 6,22V21H18V22A1,1 0 0,0 19,23H20A1,1 0 0,0 21,22V14M7,5A1.5,1.5 0 0,0 8.5,3.5C8.5,2.5 7,0.8 7,0.8C7,0.8 5.5,2.5 5.5,3.5A1.5,1.5 0 0,0 7,5M12,5A1.5,1.5 0 0,0 13.5,3.5C13.5,2.5 12,0.8 12,0.8C12,0.8 10.5,2.5 10.5,3.5A1.5,1.5 0 0,0 12,5M17,5A1.5,1.5 0 0,0 18.5,3.5C18.5,2.5 17,0.8 17,0.8C17,0.8 15.5,2.5 15.5,3.5A1.5,1.5 0 0,0 17,5Z" /></g><g id="cards"><path d="M21.47,4.35L20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.77 21.47,4.35M1.97,8.05L6.93,20C7.24,20.77 7.97,21.24 8.74,21.26C9,21.26 9.27,21.21 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.26C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05M18.12,4.25A2,2 0 0,0 16.12,2.25H14.67L18.12,10.59" /></g><g id="cards-outline"><path d="M11.19,2.25C10.93,2.25 10.67,2.31 10.42,2.4L3.06,5.45C2.04,5.87 1.55,7.04 1.97,8.05L6.93,20C7.24,20.77 7.97,21.23 8.74,21.25C9,21.25 9.27,21.22 9.53,21.1L16.9,18.05C17.65,17.74 18.11,17 18.13,16.25C18.14,16 18.09,15.71 18,15.45L13,3.5C12.71,2.73 11.97,2.26 11.19,2.25M14.67,2.25L18.12,10.6V4.25A2,2 0 0,0 16.12,2.25M20.13,3.79V12.82L22.56,6.96C22.97,5.94 22.5,4.78 21.47,4.36M11.19,4.22L16.17,16.24L8.78,19.3L3.8,7.29" /></g><g id="cards-playing-outline"><path d="M11.19,2.25C11.97,2.26 12.71,2.73 13,3.5L18,15.45C18.09,15.71 18.14,16 18.13,16.25C18.11,17 17.65,17.74 16.9,18.05L9.53,21.1C9.27,21.22 9,21.25 8.74,21.25C7.97,21.23 7.24,20.77 6.93,20L1.97,8.05C1.55,7.04 2.04,5.87 3.06,5.45L10.42,2.4C10.67,2.31 10.93,2.25 11.19,2.25M14.67,2.25H16.12A2,2 0 0,1 18.12,4.25V10.6L14.67,2.25M20.13,3.79L21.47,4.36C22.5,4.78 22.97,5.94 22.56,6.96L20.13,12.82V3.79M11.19,4.22L3.8,7.29L8.77,19.3L16.17,16.24L11.19,4.22M8.65,8.54L11.88,10.95L11.44,14.96L8.21,12.54L8.65,8.54Z" /></g><g id="cards-variant"><path d="M5,2H19A1,1 0 0,1 20,3V13A1,1 0 0,1 19,14H5A1,1 0 0,1 4,13V3A1,1 0 0,1 5,2M6,4V12H18V4H6M20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17V16H20V17M20,21A1,1 0 0,1 19,22H5A1,1 0 0,1 4,21V20H20V21Z" /></g><g id="carrot"><path d="M16,10L15.8,11H13.5A0.5,0.5 0 0,0 13,11.5A0.5,0.5 0 0,0 13.5,12H15.6L14.6,17H12.5A0.5,0.5 0 0,0 12,17.5A0.5,0.5 0 0,0 12.5,18H14.4L14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20L9,15H10.5A0.5,0.5 0 0,0 11,14.5A0.5,0.5 0 0,0 10.5,14H8.8L8,10C8,8.8 8.93,7.77 10.29,7.29L8.9,5.28C8.59,4.82 8.7,4.2 9.16,3.89C9.61,3.57 10.23,3.69 10.55,4.14L11,4.8V3A1,1 0 0,1 12,2A1,1 0 0,1 13,3V5.28L14.5,3.54C14.83,3.12 15.47,3.07 15.89,3.43C16.31,3.78 16.36,4.41 16,4.84L13.87,7.35C15.14,7.85 16,8.85 16,10Z" /></g><g id="cart"><path d="M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z" /></g><g id="cart-off"><path d="M22.73,22.73L1.27,1.27L0,2.54L4.39,6.93L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H14.46L15.84,18.38C15.34,18.74 15,19.33 15,20A2,2 0 0,0 17,22C17.67,22 18.26,21.67 18.62,21.16L21.46,24L22.73,22.73M7.42,15A0.25,0.25 0 0,1 7.17,14.75L7.2,14.63L8.1,13H10.46L12.46,15H7.42M15.55,13C16.3,13 16.96,12.59 17.3,11.97L20.88,5.5C20.96,5.34 21,5.17 21,5A1,1 0 0,0 20,4H6.54L15.55,13M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18Z" /></g><g id="cart-outline"><path d="M17,18A2,2 0 0,1 19,20A2,2 0 0,1 17,22C15.89,22 15,21.1 15,20C15,18.89 15.89,18 17,18M1,2H4.27L5.21,4H20A1,1 0 0,1 21,5C21,5.17 20.95,5.34 20.88,5.5L17.3,11.97C16.96,12.58 16.3,13 15.55,13H8.1L7.2,14.63L7.17,14.75A0.25,0.25 0 0,0 7.42,15H19V17H7C5.89,17 5,16.1 5,15C5,14.65 5.09,14.32 5.24,14.04L6.6,11.59L3,4H1V2M7,18A2,2 0 0,1 9,20A2,2 0 0,1 7,22C5.89,22 5,21.1 5,20C5,18.89 5.89,18 7,18M16,11L18.78,6H6.14L8.5,11H16Z" /></g><g id="cart-plus"><path d="M11,9H13V6H16V4H13V1H11V4H8V6H11M7,18A2,2 0 0,0 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20A2,2 0 0,0 7,18M17,18A2,2 0 0,0 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20A2,2 0 0,0 17,18M7.17,14.75L7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.59 17.3,11.97L21.16,4.96L19.42,4H19.41L18.31,6L15.55,11H8.53L8.4,10.73L6.16,6L5.21,4L4.27,2H1V4H3L6.6,11.59L5.25,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42C7.29,15 7.17,14.89 7.17,14.75Z" /></g><g id="case-sensitive-alt"><path d="M20,14C20,12.5 19.5,12 18,12H16V11C16,10 16,10 14,10V15.4L14,19H16L18,19C19.5,19 20,18.47 20,17V14M12,12C12,10.5 11.47,10 10,10H6C4.5,10 4,10.5 4,12V19H6V16H10V19H12V12M10,7H14V5H10V7M22,9V20C22,21.11 21.11,22 20,22H4A2,2 0 0,1 2,20V9C2,7.89 2.89,7 4,7H8V5L10,3H14L16,5V7H20A2,2 0 0,1 22,9H22M16,17H18V14H16V17M6,12H10V14H6V12Z" /></g><g id="cash"><path d="M3,6H21V18H3V6M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M7,8A2,2 0 0,1 5,10V14A2,2 0 0,1 7,16H17A2,2 0 0,1 19,14V10A2,2 0 0,1 17,8H7Z" /></g><g id="cash-100"><path d="M2,5H22V20H2V5M20,18V7H4V18H20M17,8A2,2 0 0,0 19,10V15A2,2 0 0,0 17,17H7A2,2 0 0,0 5,15V10A2,2 0 0,0 7,8H17M17,13V12C17,10.9 16.33,10 15.5,10C14.67,10 14,10.9 14,12V13C14,14.1 14.67,15 15.5,15C16.33,15 17,14.1 17,13M15.5,11A0.5,0.5 0 0,1 16,11.5V13.5A0.5,0.5 0 0,1 15.5,14A0.5,0.5 0 0,1 15,13.5V11.5A0.5,0.5 0 0,1 15.5,11M13,13V12C13,10.9 12.33,10 11.5,10C10.67,10 10,10.9 10,12V13C10,14.1 10.67,15 11.5,15C12.33,15 13,14.1 13,13M11.5,11A0.5,0.5 0 0,1 12,11.5V13.5A0.5,0.5 0 0,1 11.5,14A0.5,0.5 0 0,1 11,13.5V11.5A0.5,0.5 0 0,1 11.5,11M8,15H9V10H8L7,10.5V11.5L8,11V15Z" /></g><g id="cash-multiple"><path d="M5,6H23V18H5V6M14,9A3,3 0 0,1 17,12A3,3 0 0,1 14,15A3,3 0 0,1 11,12A3,3 0 0,1 14,9M9,8A2,2 0 0,1 7,10V14A2,2 0 0,1 9,16H19A2,2 0 0,1 21,14V10A2,2 0 0,1 19,8H9M1,10H3V20H19V22H1V10Z" /></g><g id="cash-usd"><path d="M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M11,17H13V16H14A1,1 0 0,0 15,15V12A1,1 0 0,0 14,11H11V10H15V8H13V7H11V8H10A1,1 0 0,0 9,9V12A1,1 0 0,0 10,13H13V14H9V16H11V17Z" /></g><g id="cast"><path d="M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3Z" /></g><g id="cast-connected"><path d="M21,3H3C1.89,3 1,3.89 1,5V8H3V5H21V19H14V21H21A2,2 0 0,0 23,19V5C23,3.89 22.1,3 21,3M1,10V12A9,9 0 0,1 10,21H12C12,14.92 7.07,10 1,10M19,7H5V8.63C8.96,9.91 12.09,13.04 13.37,17H19M1,14V16A5,5 0 0,1 6,21H8A7,7 0 0,0 1,14M1,18V21H4A3,3 0 0,0 1,18Z" /></g><g id="castle"><path d="M2,13H4V15H6V13H8V15H10V13H12V15H14V10L17,7V1H19L23,3L19,5V7L22,10V22H11V19A2,2 0 0,0 9,17A2,2 0 0,0 7,19V22H2V13M18,10C17.45,10 17,10.54 17,11.2V13H19V11.2C19,10.54 18.55,10 18,10Z" /></g><g id="cat"><path d="M12,8L10.67,8.09C9.81,7.07 7.4,4.5 5,4.5C5,4.5 3.03,7.46 4.96,11.41C4.41,12.24 4.07,12.67 4,13.66L2.07,13.95L2.28,14.93L4.04,14.67L4.18,15.38L2.61,16.32L3.08,17.21L4.53,16.32C5.68,18.76 8.59,20 12,20C15.41,20 18.32,18.76 19.47,16.32L20.92,17.21L21.39,16.32L19.82,15.38L19.96,14.67L21.72,14.93L21.93,13.95L20,13.66C19.93,12.67 19.59,12.24 19.04,11.41C20.97,7.46 19,4.5 19,4.5C16.6,4.5 14.19,7.07 13.33,8.09L12,8M9,11A1,1 0 0,1 10,12A1,1 0 0,1 9,13A1,1 0 0,1 8,12A1,1 0 0,1 9,11M15,11A1,1 0 0,1 16,12A1,1 0 0,1 15,13A1,1 0 0,1 14,12A1,1 0 0,1 15,11M11,14H13L12.3,15.39C12.5,16.03 13.06,16.5 13.75,16.5A1.5,1.5 0 0,0 15.25,15H15.75A2,2 0 0,1 13.75,17C13,17 12.35,16.59 12,16V16H12C11.65,16.59 11,17 10.25,17A2,2 0 0,1 8.25,15H8.75A1.5,1.5 0 0,0 10.25,16.5C10.94,16.5 11.5,16.03 11.7,15.39L11,14Z" /></g><g id="cellphone"><path d="M17,19H7V5H17M17,1H7C5.89,1 5,1.89 5,3V21A2,2 0 0,0 7,23H17A2,2 0 0,0 19,21V3C19,1.89 18.1,1 17,1Z" /></g><g id="cellphone-android"><path d="M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z" /></g><g id="cellphone-basic"><path d="M15,2A1,1 0 0,0 14,3V6H10C8.89,6 8,6.89 8,8V20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V8C17,7.26 16.6,6.62 16,6.28V3A1,1 0 0,0 15,2M10,8H15V13H10V8M10,15H11V16H10V15M12,15H13V16H12V15M14,15H15V16H14V15M10,17H11V18H10V17M12,17H13V18H12V17M14,17H15V18H14V17M10,19H11V20H10V19M12,19H13V20H12V19M14,19H15V20H14V19Z" /></g><g id="cellphone-dock"><path d="M16,15H8V5H16M16,1H8C6.89,1 6,1.89 6,3V17A2,2 0 0,0 8,19H16A2,2 0 0,0 18,17V3C18,1.89 17.1,1 16,1M8,23H16V21H8V23Z" /></g><g id="cellphone-iphone"><path d="M16,18H7V4H16M11.5,22A1.5,1.5 0 0,1 10,20.5A1.5,1.5 0 0,1 11.5,19A1.5,1.5 0 0,1 13,20.5A1.5,1.5 0 0,1 11.5,22M15.5,1H7.5A2.5,2.5 0 0,0 5,3.5V20.5A2.5,2.5 0 0,0 7.5,23H15.5A2.5,2.5 0 0,0 18,20.5V3.5A2.5,2.5 0 0,0 15.5,1Z" /></g><g id="cellphone-link"><path d="M22,17H18V10H22M23,8H17A1,1 0 0,0 16,9V19A1,1 0 0,0 17,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6H22V4H4A2,2 0 0,0 2,6V17H0V20H14V17H4V6Z" /></g><g id="cellphone-link-off"><path d="M23,8H17A1,1 0 0,0 16,9V13.18L18,15.18V10H22V17H19.82L22.82,20H23A1,1 0 0,0 24,19V9A1,1 0 0,0 23,8M4,6.27L14.73,17H4V6.27M1.92,1.65L0.65,2.92L2.47,4.74C2.18,5.08 2,5.5 2,6V17H0V20H17.73L20.08,22.35L21.35,21.08L3.89,3.62L1.92,1.65M22,6V4H6.82L8.82,6H22Z" /></g><g id="cellphone-settings"><path d="M16,16H8V4H16M16,0H8A2,2 0 0,0 6,2V18A2,2 0 0,0 8,20H16A2,2 0 0,0 18,18V2A2,2 0 0,0 16,0M15,24H17V22H15M11,24H13V22H11M7,24H9V22H7V24Z" /></g><g id="certificate"><path d="M4,3C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H12V22L15,19L18,22V17H20A2,2 0 0,0 22,15V8L22,6V5A2,2 0 0,0 20,3H16V3H4M12,5L15,7L18,5V8.5L21,10L18,11.5V15L15,13L12,15V11.5L9,10L12,8.5V5M4,5H9V7H4V5M4,9H7V11H4V9M4,13H9V15H4V13Z" /></g><g id="chair-school"><path d="M22,5V7H17L13.53,12H16V14H14.46L18.17,22H15.97L15.04,20H6.38L5.35,22H3.1L7.23,14H7C6.55,14 6.17,13.7 6.04,13.3L2.87,3.84L3.82,3.5C4.34,3.34 4.91,3.63 5.08,4.15L7.72,12H12.1L15.57,7H12V5H22M9.5,14L7.42,18H14.11L12.26,14H9.5Z" /></g><g id="chart-arc"><path d="M16.18,19.6L14.17,16.12C15.15,15.4 15.83,14.28 15.97,13H20C19.83,15.76 18.35,18.16 16.18,19.6M13,7.03V3C17.3,3.26 20.74,6.7 21,11H16.97C16.74,8.91 15.09,7.26 13,7.03M7,12.5C7,13.14 7.13,13.75 7.38,14.3L3.9,16.31C3.32,15.16 3,13.87 3,12.5C3,7.97 6.54,4.27 11,4V8.03C8.75,8.28 7,10.18 7,12.5M11.5,21C8.53,21 5.92,19.5 4.4,17.18L7.88,15.17C8.7,16.28 10,17 11.5,17C12.14,17 12.75,16.87 13.3,16.62L15.31,20.1C14.16,20.68 12.87,21 11.5,21Z" /></g><g id="chart-areaspline"><path d="M17.45,15.18L22,7.31V19L22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L16.74,12.5L10.23,8.75L4.31,19H6.57L10.96,11.44L17.45,15.18Z" /></g><g id="chart-bar"><path d="M22,21H2V3H4V19H6V10H10V19H12V6H16V19H18V14H22V21Z" /></g><g id="chart-bubble"><path d="M7.2,11.2C8.97,11.2 10.4,12.63 10.4,14.4C10.4,16.17 8.97,17.6 7.2,17.6C5.43,17.6 4,16.17 4,14.4C4,12.63 5.43,11.2 7.2,11.2M14.8,16A2,2 0 0,1 16.8,18A2,2 0 0,1 14.8,20A2,2 0 0,1 12.8,18A2,2 0 0,1 14.8,16M15.2,4A4.8,4.8 0 0,1 20,8.8C20,11.45 17.85,13.6 15.2,13.6A4.8,4.8 0 0,1 10.4,8.8C10.4,6.15 12.55,4 15.2,4Z" /></g><g id="chart-gantt"><path d="M2,5H10V2H12V22H10V18H6V15H10V13H4V10H10V8H2V5M14,5H17V8H14V5M14,10H19V13H14V10M14,15H22V18H14V15Z" /></g><g id="chart-histogram"><path d="M3,3H5V13H9V7H13V11H17V15H21V21H3V3Z" /></g><g id="chart-line"><path d="M16,11.78L20.24,4.45L21.97,5.45L16.74,14.5L10.23,10.75L5.46,19H22V21H2V3H4V17.54L9.5,8L16,11.78Z" /></g><g id="chart-pie"><path d="M21,11H13V3A8,8 0 0,1 21,11M19,13C19,15.78 17.58,18.23 15.43,19.67L11.58,13H19M11,21C8.22,21 5.77,19.58 4.33,17.43L10.82,13.68L14.56,20.17C13.5,20.7 12.28,21 11,21M3,13A8,8 0 0,1 11,5V12.42L3.83,16.56C3.3,15.5 3,14.28 3,13Z" /></g><g id="chart-scatterplot-hexbin"><path d="M2,2H4V20H22V22H2V2M14,14.5L12,18H7.94L5.92,14.5L7.94,11H12L14,14.5M14.08,6.5L12.06,10H8L6,6.5L8,3H12.06L14.08,6.5M21.25,10.5L19.23,14H15.19L13.17,10.5L15.19,7H19.23L21.25,10.5Z" /></g><g id="chart-timeline"><path d="M2,2H4V20H22V22H2V2M7,10H17V13H7V10M11,15H21V18H11V15M6,4H22V8H20V6H8V8H6V4Z" /></g><g id="check"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" /></g><g id="check-all"><path d="M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z" /></g><g id="check-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z" /></g><g id="check-circle-outline"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,16.5L6.5,12L7.91,10.59L11,13.67L16.59,8.09L18,9.5L11,16.5Z" /></g><g id="checkbox-blank"><path d="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="checkbox-blank-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-blank-circle-outline"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-blank-outline"><path d="M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z" /></g><g id="checkbox-marked"><path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="checkbox-marked-circle"><path d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="checkbox-marked-circle-outline"><path d="M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></g><g id="checkbox-marked-outline"><path d="M19,19H5V5H15V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V11H19M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></g><g id="checkbox-multiple-blank"><path d="M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkbox-multiple-blank-circle"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-blank-circle-outline"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M14,4C17.32,4 20,6.69 20,10C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-blank-outline"><path d="M20,16V4H8V16H20M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkbox-multiple-marked"><path d="M22,16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H20A2,2 0 0,1 22,4V16M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16M13,14L20,7L18.59,5.59L13,11.17L9.91,8.09L8.5,9.5L13,14Z" /></g><g id="checkbox-multiple-marked-circle"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10A8,8 0 0,0 14,2M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82M18.09,6.08L19.5,7.5L13,14L9.21,10.21L10.63,8.79L13,11.17" /></g><g id="checkbox-multiple-marked-circle-outline"><path d="M14,2A8,8 0 0,0 6,10A8,8 0 0,0 14,18A8,8 0 0,0 22,10H20C20,13.32 17.32,16 14,16A6,6 0 0,1 8,10A6,6 0 0,1 14,4C14.43,4 14.86,4.05 15.27,4.14L16.88,2.54C15.96,2.18 15,2 14,2M20.59,3.58L14,10.17L11.62,7.79L10.21,9.21L14,13L22,5M4.93,5.82C3.08,7.34 2,9.61 2,12A8,8 0 0,0 10,20C10.64,20 11.27,19.92 11.88,19.77C10.12,19.38 8.5,18.5 7.17,17.29C5.22,16.25 4,14.21 4,12C4,11.7 4.03,11.41 4.07,11.11C4.03,10.74 4,10.37 4,10C4,8.56 4.32,7.13 4.93,5.82Z" /></g><g id="checkbox-multiple-marked-outline"><path d="M20,16V10H22V16A2,2 0 0,1 20,18H8C6.89,18 6,17.1 6,16V4C6,2.89 6.89,2 8,2H16V4H8V16H20M10.91,7.08L14,10.17L20.59,3.58L22,5L14,13L9.5,8.5L10.91,7.08M16,20V22H4A2,2 0 0,1 2,20V7H4V20H16Z" /></g><g id="checkerboard"><path d="M3,3H21V21H3V3M5,5V12H12V19H19V12H12V5H5Z" /></g><g id="chemical-weapon"><path d="M11,7.83C9.83,7.42 9,6.3 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6.31 14.16,7.42 13,7.83V10.64C12.68,10.55 12.35,10.5 12,10.5C11.65,10.5 11.32,10.55 11,10.64V7.83M18.3,21.1C17.16,20.45 16.62,19.18 16.84,17.96L14.4,16.55C14.88,16.09 15.24,15.5 15.4,14.82L17.84,16.23C18.78,15.42 20.16,15.26 21.29,15.91C22.73,16.74 23.22,18.57 22.39,20C21.56,21.44 19.73,21.93 18.3,21.1M2.7,15.9C3.83,15.25 5.21,15.42 6.15,16.22L8.6,14.81C8.76,15.5 9.11,16.08 9.6,16.54L7.15,17.95C7.38,19.17 6.83,20.45 5.7,21.1C4.26,21.93 2.43,21.44 1.6,20C0.77,18.57 1.26,16.73 2.7,15.9M14,14A2,2 0 0,1 12,16C10.89,16 10,15.1 10,14A2,2 0 0,1 12,12C13.11,12 14,12.9 14,14M17,14L16.97,14.57L15.5,13.71C15.4,12.64 14.83,11.71 14,11.12V9.41C15.77,10.19 17,11.95 17,14M14.97,18.03C14.14,18.64 13.11,19 12,19C10.89,19 9.86,18.64 9.03,18L10.5,17.17C10.96,17.38 11.47,17.5 12,17.5C12.53,17.5 13.03,17.38 13.5,17.17L14.97,18.03M7.03,14.56L7,14C7,11.95 8.23,10.19 10,9.42V11.13C9.17,11.71 8.6,12.64 8.5,13.7L7.03,14.56Z" /></g><g id="chevron-double-down"><path d="M16.59,5.59L18,7L12,13L6,7L7.41,5.59L12,10.17L16.59,5.59M16.59,11.59L18,13L12,19L6,13L7.41,11.59L12,16.17L16.59,11.59Z" /></g><g id="chevron-double-left"><path d="M18.41,7.41L17,6L11,12L17,18L18.41,16.59L13.83,12L18.41,7.41M12.41,7.41L11,6L5,12L11,18L12.41,16.59L7.83,12L12.41,7.41Z" /></g><g id="chevron-double-right"><path d="M5.59,7.41L7,6L13,12L7,18L5.59,16.59L10.17,12L5.59,7.41M11.59,7.41L13,6L19,12L13,18L11.59,16.59L16.17,12L11.59,7.41Z" /></g><g id="chevron-double-up"><path d="M7.41,18.41L6,17L12,11L18,17L16.59,18.41L12,13.83L7.41,18.41M7.41,12.41L6,11L12,5L18,11L16.59,12.41L12,7.83L7.41,12.41Z" /></g><g id="chevron-down"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></g><g id="chevron-left"><path d="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z" /></g><g id="chevron-right"><path d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z" /></g><g id="chevron-up"><path d="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" /></g><g id="chip"><path d="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z" /></g><g id="church"><path d="M11,2H13V4H15V6H13V9.4L22,13V15L20,14.2V22H14V17A2,2 0 0,0 12,15A2,2 0 0,0 10,17V22H4V14.2L2,15V13L11,9.4V6H9V4H11V2M6,20H8V15L7,14L6,15V20M16,20H18V15L17,14L16,15V20Z" /></g><g id="cisco-webex"><path d="M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M5.94,8.5C4,11.85 5.15,16.13 8.5,18.06C11.85,20 18.85,7.87 15.5,5.94C12.15,4 7.87,5.15 5.94,8.5Z" /></g><g id="city"><path d="M19,15H17V13H19M19,19H17V17H19M13,7H11V5H13M13,11H11V9H13M13,15H11V13H13M13,19H11V17H13M7,11H5V9H7M7,15H5V13H7M7,19H5V17H7M15,11V5L12,2L9,5V7H3V21H21V11H15Z" /></g><g id="clipboard"><path d="M9,4A3,3 0 0,1 12,1A3,3 0 0,1 15,4H19A2,2 0 0,1 21,6V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6A2,2 0 0,1 5,4H9M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z" /></g><g id="clipboard-account"><path d="M18,19H6V17.6C6,15.6 10,14.5 12,14.5C14,14.5 18,15.6 18,17.6M12,7A3,3 0 0,1 15,10A3,3 0 0,1 12,13A3,3 0 0,1 9,10A3,3 0 0,1 12,7M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-alert"><path d="M12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5M13,14H11V8H13M13,18H11V16H13M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-arrow-down"><path d="M12,18L7,13H10V9H14V13H17M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-arrow-left"><path d="M16,15H12V18L7,13L12,8V11H16M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-check"><path d="M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clipboard-flow"><path d="M19,4H14.82C14.25,2.44 12.53,1.64 11,2.2C10.14,2.5 9.5,3.16 9.18,4H5A2,2 0 0,0 3,6V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V6A2,2 0 0,0 19,4M12,4A1,1 0 0,1 13,5A1,1 0 0,1 12,6A1,1 0 0,1 11,5A1,1 0 0,1 12,4M10,17H8V10H5L9,6L13,10H10V17M15,20L11,16H14V9H16V16H19L15,20Z" /></g><g id="clipboard-outline"><path d="M7,8V6H5V19H19V6H17V8H7M9,4A3,3 0 0,1 12,1A3,3 0 0,1 15,4H19A2,2 0 0,1 21,6V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6A2,2 0 0,1 5,4H9M12,3A1,1 0 0,0 11,4A1,1 0 0,0 12,5A1,1 0 0,0 13,4A1,1 0 0,0 12,3Z" /></g><g id="clipboard-text"><path d="M17,9H7V7H17M17,13H7V11H17M14,17H7V15H14M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="clippy"><path d="M15,15.5A2.5,2.5 0 0,1 12.5,18A2.5,2.5 0 0,1 10,15.5V13.75A0.75,0.75 0 0,1 10.75,13A0.75,0.75 0 0,1 11.5,13.75V15.5A1,1 0 0,0 12.5,16.5A1,1 0 0,0 13.5,15.5V11.89C12.63,11.61 12,10.87 12,10C12,8.9 13,8 14.25,8C15.5,8 16.5,8.9 16.5,10C16.5,10.87 15.87,11.61 15,11.89V15.5M8.25,8C9.5,8 10.5,8.9 10.5,10C10.5,10.87 9.87,11.61 9,11.89V17.25A3.25,3.25 0 0,0 12.25,20.5A3.25,3.25 0 0,0 15.5,17.25V13.75A0.75,0.75 0 0,1 16.25,13A0.75,0.75 0 0,1 17,13.75V17.25A4.75,4.75 0 0,1 12.25,22A4.75,4.75 0 0,1 7.5,17.25V11.89C6.63,11.61 6,10.87 6,10C6,8.9 7,8 8.25,8M10.06,6.13L9.63,7.59C9.22,7.37 8.75,7.25 8.25,7.25C7.34,7.25 6.53,7.65 6.03,8.27L4.83,7.37C5.46,6.57 6.41,6 7.5,5.81V5.75A3.75,3.75 0 0,1 11.25,2A3.75,3.75 0 0,1 15,5.75V5.81C16.09,6 17.04,6.57 17.67,7.37L16.47,8.27C15.97,7.65 15.16,7.25 14.25,7.25C13.75,7.25 13.28,7.37 12.87,7.59L12.44,6.13C12.77,6 13.13,5.87 13.5,5.81V5.75C13.5,4.5 12.5,3.5 11.25,3.5C10,3.5 9,4.5 9,5.75V5.81C9.37,5.87 9.73,6 10.06,6.13M14.25,9.25C13.7,9.25 13.25,9.59 13.25,10C13.25,10.41 13.7,10.75 14.25,10.75C14.8,10.75 15.25,10.41 15.25,10C15.25,9.59 14.8,9.25 14.25,9.25M8.25,9.25C7.7,9.25 7.25,9.59 7.25,10C7.25,10.41 7.7,10.75 8.25,10.75C8.8,10.75 9.25,10.41 9.25,10C9.25,9.59 8.8,9.25 8.25,9.25Z" /></g><g id="clock"><path d="M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z" /></g><g id="clock-alert"><path d="M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22C14.25,22 16.33,21.24 18,20V17.28C16.53,18.94 14.39,20 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C15.36,4 18.23,6.07 19.41,9H21.54C20.27,4.94 16.5,2 12,2M11,7V13L16.25,16.15L17,14.92L12.5,12.25V7H11M20,11V18H22V11H20M20,20V22H22V20H20Z" /></g><g id="clock-end"><path d="M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M15,16V19H3V21H15V24L19,20M19,20V24H21V16H19" /></g><g id="clock-fast"><path d="M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6M14,8H15.5V11.78L17.83,14.11L16.77,15.17L14,12.4V8M2,18A1,1 0 0,1 1,17A1,1 0 0,1 2,16H5.83C6.14,16.71 6.54,17.38 7,18H2M3,13A1,1 0 0,1 2,12A1,1 0 0,1 3,11H5.05L5,12L5.05,13H3M4,8A1,1 0 0,1 3,7A1,1 0 0,1 4,6H7C6.54,6.62 6.14,7.29 5.83,8H4Z" /></g><g id="clock-in"><path d="M2.21,0.79L0.79,2.21L4.8,6.21L3,8H8V3L6.21,4.8M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12" /></g><g id="clock-out"><path d="M18,1L19.8,2.79L15.79,6.79L17.21,8.21L21.21,4.21L23,6V1M12,8C8.14,8 5,11.13 5,15A7,7 0 0,0 12,22C15.86,22 19,18.87 19,15A7,7 0 0,0 12,8M12,10.15C14.67,10.15 16.85,12.32 16.85,15A4.85,4.85 0 0,1 12,19.85C9.32,19.85 7.15,17.68 7.15,15A4.85,4.85 0 0,1 12,10.15M11,12V15.69L14.19,17.53L14.94,16.23L12.5,14.82V12" /></g><g id="clock-start"><path d="M12,1C8.14,1 5,4.14 5,8A7,7 0 0,0 12,15C15.86,15 19,11.87 19,8C19,4.14 15.86,1 12,1M12,3.15C14.67,3.15 16.85,5.32 16.85,8C16.85,10.68 14.67,12.85 12,12.85A4.85,4.85 0 0,1 7.15,8A4.85,4.85 0 0,1 12,3.15M11,5V8.69L14.19,10.53L14.94,9.23L12.5,7.82V5M4,16V24H6V21H18V24L22,20L18,16V19H6V16" /></g><g id="close"><path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" /></g><g id="close-box"><path d="M19,3H16.3H7.7H5A2,2 0 0,0 3,5V7.7V16.4V19A2,2 0 0,0 5,21H7.7H16.4H19A2,2 0 0,0 21,19V16.3V7.7V5A2,2 0 0,0 19,3M15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4L13.4,12L17,15.6L15.6,17Z" /></g><g id="close-box-outline"><path d="M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V5H19V19M17,8.4L13.4,12L17,15.6L15.6,17L12,13.4L8.4,17L7,15.6L10.6,12L7,8.4L8.4,7L12,10.6L15.6,7L17,8.4Z" /></g><g id="close-circle"><path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z" /></g><g id="close-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z" /></g><g id="close-network"><path d="M14.59,6L12,8.59L9.41,6L8,7.41L10.59,10L8,12.59L9.41,14L12,11.41L14.59,14L16,12.59L13.41,10L16,7.41L14.59,6M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="close-octagon"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27L15.73,3M8.41,7L12,10.59L15.59,7L17,8.41L13.41,12L17,15.59L15.59,17L12,13.41L8.41,17L7,15.59L10.59,12L7,8.41" /></g><g id="close-octagon-outline"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1M9.12,7.71L7.71,9.12L10.59,12L7.71,14.88L9.12,16.29L12,13.41L14.88,16.29L16.29,14.88L13.41,12L16.29,9.12L14.88,7.71L12,10.59" /></g><g id="close-outline"><path d="M3,16.74L7.76,12L3,7.26L7.26,3L12,7.76L16.74,3L21,7.26L16.24,12L21,16.74L16.74,21L12,16.24L7.26,21L3,16.74M12,13.41L16.74,18.16L18.16,16.74L13.41,12L18.16,7.26L16.74,5.84L12,10.59L7.26,5.84L5.84,7.26L10.59,12L5.84,16.74L7.26,18.16L12,13.41Z" /></g><g id="closed-caption"><path d="M18,11H16.5V10.5H14.5V13.5H16.5V13H18V14A1,1 0 0,1 17,15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,11H9.5V10.5H7.5V13.5H9.5V13H11V14A1,1 0 0,1 10,15H7A1,1 0 0,1 6,14V10A1,1 0 0,1 7,9H10A1,1 0 0,1 11,10M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z" /></g><g id="cloud"><path d="M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-check"><path d="M10,17L6.5,13.5L7.91,12.08L10,14.17L15.18,9L16.59,10.41M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-circle"><path d="M16.5,16H8A3,3 0 0,1 5,13A3,3 0 0,1 8,10C8.05,10 8.09,10 8.14,10C8.58,8.28 10.13,7 12,7A4,4 0 0,1 16,11H16.5A2.5,2.5 0 0,1 19,13.5A2.5,2.5 0 0,1 16.5,16M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="cloud-download"><path d="M17,13L12,18L7,13H10V9H14V13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-outline"><path d="M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10H6.71C7.37,7.69 9.5,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-outline-off"><path d="M7.73,10L15.73,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10M3,5.27L5.75,8C2.56,8.15 0,10.77 0,14A6,6 0 0,0 6,20H17.73L19.73,22L21,20.73L4.27,4M19.35,10.03C18.67,6.59 15.64,4 12,4C10.5,4 9.15,4.43 8,5.17L9.45,6.63C10.21,6.23 11.08,6 12,6A5.5,5.5 0 0,1 17.5,11.5V12H19A3,3 0 0,1 22,15C22,16.13 21.36,17.11 20.44,17.62L21.89,19.07C23.16,18.16 24,16.68 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="cloud-print"><path d="M12,2C9.11,2 6.6,3.64 5.35,6.04C2.34,6.36 0,8.91 0,12A6,6 0 0,0 6,18V22H18V18H19A5,5 0 0,0 24,13C24,10.36 21.95,8.22 19.35,8.04C18.67,4.59 15.64,2 12,2M8,13H16V20H8V13M9,14V15H15V14H9M9,16V17H15V16H9M9,18V19H15V18H9Z" /></g><g id="cloud-print-outline"><path d="M19,16A3,3 0 0,0 22,13A3,3 0 0,0 19,10H17.5V9.5A5.5,5.5 0 0,0 12,4C9.5,4 7.37,5.69 6.71,8H6A4,4 0 0,0 2,12A4,4 0 0,0 6,16V11H18V16H19M19.36,8.04C21.95,8.22 24,10.36 24,13A5,5 0 0,1 19,18H18V22H6V18A6,6 0 0,1 0,12C0,8.91 2.34,6.36 5.35,6.04C6.6,3.64 9.11,2 12,2C15.64,2 18.67,4.6 19.36,8.04M8,13V20H16V13H8M9,18H15V19H9V18M15,17H9V16H15V17M9,14H15V15H9V14Z" /></g><g id="cloud-sync"><path d="M12,4C15.64,4 18.67,6.59 19.35,10.04C21.95,10.22 24,12.36 24,15A5,5 0 0,1 19,20H6A6,6 0 0,1 0,14C0,10.91 2.34,8.36 5.35,8.04C6.6,5.64 9.11,4 12,4M7.5,9.69C6.06,11.5 6.2,14.06 7.82,15.68C8.66,16.5 9.81,17 11,17V18.86L13.83,16.04L11,13.21V15C10.34,15 9.7,14.74 9.23,14.27C8.39,13.43 8.26,12.11 8.92,11.12L7.5,9.69M9.17,8.97L10.62,10.42L12,11.79V10C12.66,10 13.3,10.26 13.77,10.73C14.61,11.57 14.74,12.89 14.08,13.88L15.5,15.31C16.94,13.5 16.8,10.94 15.18,9.32C14.34,8.5 13.19,8 12,8V6.14L9.17,8.97Z" /></g><g id="cloud-upload"><path d="M14,13V17H10V13H7L12,8L17,13M19.35,10.03C18.67,6.59 15.64,4 12,4C9.11,4 6.6,5.64 5.35,8.03C2.34,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.03Z" /></g><g id="code-array"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M6,6V18H10V16H8V8H10V6H6M16,16H14V18H18V6H14V8H16V16Z" /></g><g id="code-braces"><path d="M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z" /></g><g id="code-brackets"><path d="M15,4V6H18V18H15V20H20V4M4,4V20H9V18H6V6H9V4H4Z" /></g><g id="code-equal"><path d="M6,13H11V15H6M13,13H18V15H13M13,9H18V11H13M6,9H11V11H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-greater-than"><path d="M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-greater-than-or-equal"><path d="M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-less-than"><path d="M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z" /></g><g id="code-less-than-or-equal"><path d="M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-not-equal"><path d="M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-not-equal-variant"><path d="M11,6.5V9.33L8.33,12L11,14.67V17.5L5.5,12M13,6.43L18.57,12L13,17.57V14.74L15.74,12L13,9.26M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z" /></g><g id="code-parentheses"><path d="M17.62,3C19.13,5.27 20,8.55 20,12C20,15.44 19.13,18.72 17.62,21L16,19.96C17.26,18.07 18,15.13 18,12C18,8.87 17.26,5.92 16,4.03L17.62,3M6.38,3L8,4.04C6.74,5.92 6,8.87 6,12C6,15.13 6.74,18.08 8,19.96L6.38,21C4.87,18.73 4,15.45 4,12C4,8.55 4.87,5.27 6.38,3Z" /></g><g id="code-string"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M12.5,11H11.5A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 11.5,8H12.5A1.5,1.5 0 0,1 14,9.5H16A3.5,3.5 0 0,0 12.5,6H11.5A3.5,3.5 0 0,0 8,9.5A3.5,3.5 0 0,0 11.5,13H12.5A1.5,1.5 0 0,1 14,14.5A1.5,1.5 0 0,1 12.5,16H11.5A1.5,1.5 0 0,1 10,14.5H8A3.5,3.5 0 0,0 11.5,18H12.5A3.5,3.5 0 0,0 16,14.5A3.5,3.5 0 0,0 12.5,11Z" /></g><g id="code-tags"><path d="M14.6,16.6L19.2,12L14.6,7.4L16,6L22,12L16,18L14.6,16.6M9.4,16.6L4.8,12L9.4,7.4L8,6L2,12L8,18L9.4,16.6Z" /></g><g id="code-tags-check"><path d="M6.59,3.41L2,8L6.59,12.6L8,11.18L4.82,8L8,4.82L6.59,3.41M12.41,3.41L11,4.82L14.18,8L11,11.18L12.41,12.6L17,8L12.41,3.41M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13L21.59,11.59Z" /></g><g id="codepen"><path d="M19.45,13.29L17.5,12L19.45,10.71M12.77,18.78V15.17L16.13,12.93L18.83,14.74M12,13.83L9.26,12L12,10.17L14.74,12M11.23,18.78L5.17,14.74L7.87,12.93L11.23,15.17M4.55,10.71L6.5,12L4.55,13.29M11.23,5.22V8.83L7.87,11.07L5.17,9.26M12.77,5.22L18.83,9.26L16.13,11.07L12.77,8.83M21,9.16C21,9.15 21,9.13 21,9.12C21,9.1 21,9.08 20.97,9.06C20.97,9.05 20.97,9.03 20.96,9C20.96,9 20.95,9 20.94,8.96C20.94,8.95 20.93,8.94 20.92,8.93C20.92,8.91 20.91,8.89 20.9,8.88C20.89,8.86 20.88,8.85 20.88,8.84C20.87,8.82 20.85,8.81 20.84,8.79C20.83,8.78 20.83,8.77 20.82,8.76A0.04,0.04 0 0,0 20.78,8.72C20.77,8.71 20.76,8.7 20.75,8.69C20.73,8.67 20.72,8.66 20.7,8.65C20.69,8.64 20.68,8.63 20.67,8.62C20.66,8.62 20.66,8.62 20.66,8.61L12.43,3.13C12.17,2.96 11.83,2.96 11.57,3.13L3.34,8.61C3.34,8.62 3.34,8.62 3.33,8.62C3.32,8.63 3.31,8.64 3.3,8.65C3.28,8.66 3.27,8.67 3.25,8.69C3.24,8.7 3.23,8.71 3.22,8.72C3.21,8.73 3.2,8.74 3.18,8.76C3.17,8.77 3.17,8.78 3.16,8.79C3.15,8.81 3.13,8.82 3.12,8.84C3.12,8.85 3.11,8.86 3.1,8.88C3.09,8.89 3.08,8.91 3.08,8.93C3.07,8.94 3.06,8.95 3.06,8.96C3.05,9 3.05,9 3.04,9C3.03,9.03 3.03,9.05 3.03,9.06C3,9.08 3,9.1 3,9.12C3,9.13 3,9.15 3,9.16C3,9.19 3,9.22 3,9.26V14.74C3,14.78 3,14.81 3,14.84C3,14.85 3,14.87 3,14.88C3,14.9 3,14.92 3.03,14.94C3.03,14.95 3.03,14.97 3.04,15C3.05,15 3.05,15 3.06,15.04C3.06,15.05 3.07,15.06 3.08,15.07C3.08,15.09 3.09,15.11 3.1,15.12C3.11,15.14 3.12,15.15 3.12,15.16C3.13,15.18 3.15,15.19 3.16,15.21C3.17,15.22 3.17,15.23 3.18,15.24C3.2,15.25 3.21,15.27 3.22,15.28C3.23,15.29 3.24,15.3 3.25,15.31C3.27,15.33 3.28,15.34 3.3,15.35C3.31,15.36 3.32,15.37 3.33,15.38C3.34,15.38 3.34,15.38 3.34,15.39L11.57,20.87C11.7,20.96 11.85,21 12,21C12.15,21 12.3,20.96 12.43,20.87L20.66,15.39C20.66,15.38 20.66,15.38 20.67,15.38C20.68,15.37 20.69,15.36 20.7,15.35C20.72,15.34 20.73,15.33 20.75,15.31C20.76,15.3 20.77,15.29 20.78,15.28C20.79,15.27 20.8,15.25 20.82,15.24C20.83,15.23 20.83,15.22 20.84,15.21C20.85,15.19 20.87,15.18 20.88,15.16C20.88,15.15 20.89,15.14 20.9,15.12C20.91,15.11 20.92,15.09 20.92,15.07C20.93,15.06 20.94,15.05 20.94,15.04C20.95,15 20.96,15 20.96,15C20.97,14.97 20.97,14.95 20.97,14.94C21,14.92 21,14.9 21,14.88C21,14.87 21,14.85 21,14.84C21,14.81 21,14.78 21,14.74V9.26C21,9.22 21,9.19 21,9.16Z" /></g><g id="coffee"><path d="M2,21H20V19H2M20,8H18V5H20M20,3H4V13A4,4 0 0,0 8,17H14A4,4 0 0,0 18,13V10H20A2,2 0 0,0 22,8V5C22,3.89 21.1,3 20,3Z" /></g><g id="coffee-outline"><path d="M2,21V19H20V21H2M20,8V5H18V8H20M20,3A2,2 0 0,1 22,5V8A2,2 0 0,1 20,10H18V13A4,4 0 0,1 14,17H8A4,4 0 0,1 4,13V3H20M16,5H6V13A2,2 0 0,0 8,15H14A2,2 0 0,0 16,13V5Z" /></g><g id="coffee-to-go"><path d="M3,19V17H17L15.26,15.24L16.67,13.83L20.84,18L16.67,22.17L15.26,20.76L17,19H3M17,8V5H15V8H17M17,3C18.11,3 19,3.9 19,5V8C19,9.11 18.11,10 17,10H15V11A4,4 0 0,1 11,15H7A4,4 0 0,1 3,11V3H17Z" /></g><g id="coin"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4M11,17V16H9V14H13V13H10A1,1 0 0,1 9,12V9A1,1 0 0,1 10,8H11V7H13V8H15V10H11V11H14A1,1 0 0,1 15,12V15A1,1 0 0,1 14,16H13V17H11Z" /></g><g id="coins"><path d="M15,4A8,8 0 0,1 23,12A8,8 0 0,1 15,20A8,8 0 0,1 7,12A8,8 0 0,1 15,4M15,18A6,6 0 0,0 21,12A6,6 0 0,0 15,6A6,6 0 0,0 9,12A6,6 0 0,0 15,18M3,12C3,14.61 4.67,16.83 7,17.65V19.74C3.55,18.85 1,15.73 1,12C1,8.27 3.55,5.15 7,4.26V6.35C4.67,7.17 3,9.39 3,12Z" /></g><g id="collage"><path d="M5,3C3.89,3 3,3.89 3,5V19C3,20.11 3.89,21 5,21H11V3M13,3V11H21V5C21,3.89 20.11,3 19,3M13,13V21H19C20.11,21 21,20.11 21,19V13" /></g><g id="color-helper"><path d="M0,24H24V20H0V24Z" /></g><g id="comment"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9Z" /></g><g id="comment-account"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M16,14V13C16,11.67 13.33,11 12,11C10.67,11 8,11.67 8,13V14H16M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6Z" /></g><g id="comment-account-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16,14H8V13C8,11.67 10.67,11 12,11C13.33,11 16,11.67 16,13V14M12,6A2,2 0 0,1 14,8A2,2 0 0,1 12,10A2,2 0 0,1 10,8A2,2 0 0,1 12,6Z" /></g><g id="comment-alert"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M13,10V6H11V10H13M13,14V12H11V14H13Z" /></g><g id="comment-alert-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M13,10H11V6H13V10M13,14H11V12H13V14Z" /></g><g id="comment-check"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,15L18,7L16.59,5.58L10,12.17L7.41,9.59L6,11L10,15Z" /></g><g id="comment-check-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M16.5,8L11,13.5L7.5,10L8.91,8.59L11,10.67L15.09,6.59L16.5,8Z" /></g><g id="comment-multiple-outline"><path d="M12,23A1,1 0 0,1 11,22V19H7A2,2 0 0,1 5,17V7C5,5.89 5.9,5 7,5H21A2,2 0 0,1 23,7V17A2,2 0 0,1 21,19H16.9L13.2,22.71C13,22.9 12.75,23 12.5,23V23H12M13,17V20.08L16.08,17H21V7H7V17H13M3,15H1V3A2,2 0 0,1 3,1H19V3H3V15Z" /></g><g id="comment-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10Z" /></g><g id="comment-plus-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z" /></g><g id="comment-processing"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M17,11V9H15V11H17M13,11V9H11V11H13M9,11V9H7V11H9Z" /></g><g id="comment-processing-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M17,11H15V9H17V11M13,11H11V9H13V11M9,11H7V9H9V11Z" /></g><g id="comment-question-outline"><path d="M4,2A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H8V21A1,1 0 0,0 9,22H9.5V22C9.75,22 10,21.9 10.2,21.71L13.9,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2H4M4,4H20V16H13.08L10,19.08V16H4V4M12.19,5.5C11.3,5.5 10.59,5.68 10.05,6.04C9.5,6.4 9.22,7 9.27,7.69C0.21,7.69 6.57,7.69 11.24,7.69C11.24,7.41 11.34,7.2 11.5,7.06C11.7,6.92 11.92,6.85 12.19,6.85C12.5,6.85 12.77,6.93 12.95,7.11C13.13,7.28 13.22,7.5 13.22,7.8C13.22,8.08 13.14,8.33 13,8.54C12.83,8.76 12.62,8.94 12.36,9.08C11.84,9.4 11.5,9.68 11.29,9.92C11.1,10.16 11,10.5 11,11H13C13,10.72 13.05,10.5 13.14,10.32C13.23,10.15 13.4,10 13.66,9.85C14.12,9.64 14.5,9.36 14.79,9C15.08,8.63 15.23,8.24 15.23,7.8C15.23,7.1 14.96,6.54 14.42,6.12C13.88,5.71 13.13,5.5 12.19,5.5M11,12V14H13V12H11Z" /></g><g id="comment-remove-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M9.41,6L12,8.59L14.59,6L16,7.41L13.41,10L16,12.59L14.59,14L12,11.41L9.41,14L8,12.59L10.59,10L8,7.41L9.41,6Z" /></g><g id="comment-text"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M5,5V7H19V5H5M5,9V11H13V9H5M5,13V15H15V13H5Z" /></g><g id="comment-text-outline"><path d="M9,22A1,1 0 0,1 8,21V18H4A2,2 0 0,1 2,16V4C2,2.89 2.9,2 4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H13.9L10.2,21.71C10,21.9 9.75,22 9.5,22V22H9M10,16V19.08L13.08,16H20V4H4V16H10M6,7H18V9H6V7M6,11H15V13H6V11Z" /></g><g id="compare"><path d="M19,3H14V5H19V18L14,12V21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,18H5L10,12M10,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H10V23H12V1H10V3Z" /></g><g id="compass"><path d="M14.19,14.19L6,18L9.81,9.81L18,6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,10.9A1.1,1.1 0 0,0 10.9,12A1.1,1.1 0 0,0 12,13.1A1.1,1.1 0 0,0 13.1,12A1.1,1.1 0 0,0 12,10.9Z" /></g><g id="compass-outline"><path d="M7,17L10.2,10.2L17,7L13.8,13.8L7,17M12,11.1A0.9,0.9 0 0,0 11.1,12A0.9,0.9 0 0,0 12,12.9A0.9,0.9 0 0,0 12.9,12A0.9,0.9 0 0,0 12,11.1M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="console"><path d="M20,19V7H4V19H20M20,3A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5C2,3.89 2.9,3 4,3H20M13,17V15H18V17H13M9.58,13L5.57,9H8.4L11.7,12.3C12.09,12.69 12.09,13.33 11.7,13.72L8.42,17H5.59L9.58,13Z" /></g><g id="contact-mail"><path d="M21,8V7L18,9L15,7V8L18,10M22,3H2A2,2 0 0,0 0,5V19A2,2 0 0,0 2,21H22A2,2 0 0,0 24,19V5A2,2 0 0,0 22,3M8,6A3,3 0 0,1 11,9A3,3 0 0,1 8,12A3,3 0 0,1 5,9A3,3 0 0,1 8,6M14,18H2V17C2,15 6,13.9 8,13.9C10,13.9 14,15 14,17M22,12H14V6H22" /></g><g id="contacts"><path d="M20,0H4V2H20V0M4,24H20V22H4V24M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M12,6.75A2.25,2.25 0 0,1 14.25,9A2.25,2.25 0 0,1 12,11.25A2.25,2.25 0 0,1 9.75,9A2.25,2.25 0 0,1 12,6.75M17,17H7V15.5C7,13.83 10.33,13 12,13C13.67,13 17,13.83 17,15.5V17Z" /></g><g id="content-copy"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" /></g><g id="content-cut"><path d="M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z" /></g><g id="content-duplicate"><path d="M11,17H4A2,2 0 0,1 2,15V3A2,2 0 0,1 4,1H16V3H4V15H11V13L15,16L11,19V17M19,21V7H8V13H6V7A2,2 0 0,1 8,5H19A2,2 0 0,1 21,7V21A2,2 0 0,1 19,23H8A2,2 0 0,1 6,21V19H8V21H19Z" /></g><g id="content-paste"><path d="M19,20H5V4H7V7H17V4H19M12,2A1,1 0 0,1 13,3A1,1 0 0,1 12,4A1,1 0 0,1 11,3A1,1 0 0,1 12,2M19,2H14.82C14.4,0.84 13.3,0 12,0C10.7,0 9.6,0.84 9.18,2H5A2,2 0 0,0 3,4V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V4A2,2 0 0,0 19,2Z" /></g><g id="content-save"><path d="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" /></g><g id="content-save-all"><path d="M17,7V3H7V7H17M14,17A3,3 0 0,0 17,14A3,3 0 0,0 14,11A3,3 0 0,0 11,14A3,3 0 0,0 14,17M19,1L23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V3A2,2 0 0,1 7,1H19M1,7H3V21H17V23H3A2,2 0 0,1 1,21V7Z" /></g><g id="content-save-settings"><path d="M15,8V4H5V8H15M12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18M17,2L21,6V18A2,2 0 0,1 19,20H5C3.89,20 3,19.1 3,18V4A2,2 0 0,1 5,2H17M11,22H13V24H11V22M7,22H9V24H7V22M15,22H17V24H15V22Z" /></g><g id="contrast"><path d="M4.38,20.9C3.78,20.71 3.3,20.23 3.1,19.63L19.63,3.1C20.23,3.3 20.71,3.78 20.9,4.38L4.38,20.9M20,16V18H13V16H20M3,6H6V3H8V6H11V8H8V11H6V8H3V6Z" /></g><g id="contrast-box"><path d="M17,15.5H12V17H17M19,19H5L19,5M5.5,7.5H7.5V5.5H9V7.5H11V9H9V11H7.5V9H5.5M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="contrast-circle"><path d="M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z" /></g><g id="cookie"><path d="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z" /></g><g id="copyright"><path d="M10.08,10.86C10.13,10.53 10.24,10.24 10.38,10C10.5,9.74 10.72,9.53 10.97,9.37C11.21,9.22 11.5,9.15 11.88,9.14C12.11,9.15 12.32,9.19 12.5,9.27C12.71,9.36 12.89,9.5 13.03,9.63C13.17,9.78 13.28,9.96 13.37,10.16C13.46,10.36 13.5,10.58 13.5,10.8H15.3C15.28,10.33 15.19,9.9 15,9.5C14.85,9.12 14.62,8.78 14.32,8.5C14,8.22 13.66,8 13.24,7.84C12.82,7.68 12.36,7.61 11.85,7.61C11.2,7.61 10.63,7.72 10.15,7.95C9.67,8.18 9.27,8.5 8.95,8.87C8.63,9.26 8.39,9.71 8.24,10.23C8.09,10.75 8,11.29 8,11.87V12.14C8,12.72 8.08,13.26 8.23,13.78C8.38,14.3 8.62,14.75 8.94,15.13C9.26,15.5 9.66,15.82 10.14,16.04C10.62,16.26 11.19,16.38 11.84,16.38C12.31,16.38 12.75,16.3 13.16,16.15C13.57,16 13.93,15.79 14.24,15.5C14.55,15.25 14.8,14.94 15,14.58C15.16,14.22 15.27,13.84 15.28,13.43H13.5C13.5,13.64 13.43,13.83 13.34,14C13.25,14.19 13.13,14.34 13,14.47C12.83,14.6 12.66,14.7 12.46,14.77C12.27,14.84 12.07,14.86 11.86,14.87C11.5,14.86 11.2,14.79 10.97,14.64C10.72,14.5 10.5,14.27 10.38,14C10.24,13.77 10.13,13.47 10.08,13.14C10.03,12.81 10,12.47 10,12.14V11.87C10,11.5 10.03,11.19 10.08,10.86M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20Z" /></g><g id="counter"><path d="M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H11V6H4M20,18V6H18.76C19,6.54 18.95,7.07 18.95,7.13C18.88,7.8 18.41,8.5 18.24,8.75L15.91,11.3L19.23,11.28L19.24,12.5L14.04,12.47L14,11.47C14,11.47 17.05,8.24 17.2,7.95C17.34,7.67 17.91,6 16.5,6C15.27,6.05 15.41,7.3 15.41,7.3L13.87,7.31C13.87,7.31 13.88,6.65 14.25,6H13V18H15.58L15.57,17.14L16.54,17.13C16.54,17.13 17.45,16.97 17.46,16.08C17.5,15.08 16.65,15.08 16.5,15.08C16.37,15.08 15.43,15.13 15.43,15.95H13.91C13.91,15.95 13.95,13.89 16.5,13.89C19.1,13.89 18.96,15.91 18.96,15.91C18.96,15.91 19,17.16 17.85,17.63L18.37,18H20M8.92,16H7.42V10.2L5.62,10.76V9.53L8.76,8.41H8.92V16Z" /></g><g id="cow"><path d="M10.5,18A0.5,0.5 0 0,1 11,18.5A0.5,0.5 0 0,1 10.5,19A0.5,0.5 0 0,1 10,18.5A0.5,0.5 0 0,1 10.5,18M13.5,18A0.5,0.5 0 0,1 14,18.5A0.5,0.5 0 0,1 13.5,19A0.5,0.5 0 0,1 13,18.5A0.5,0.5 0 0,1 13.5,18M10,11A1,1 0 0,1 11,12A1,1 0 0,1 10,13A1,1 0 0,1 9,12A1,1 0 0,1 10,11M14,11A1,1 0 0,1 15,12A1,1 0 0,1 14,13A1,1 0 0,1 13,12A1,1 0 0,1 14,11M18,18C18,20.21 15.31,22 12,22C8.69,22 6,20.21 6,18C6,17.1 6.45,16.27 7.2,15.6C6.45,14.6 6,13.35 6,12L6.12,10.78C5.58,10.93 4.93,10.93 4.4,10.78C3.38,10.5 1.84,9.35 2.07,8.55C2.3,7.75 4.21,7.6 5.23,7.9C5.82,8.07 6.45,8.5 6.82,8.96L7.39,8.15C6.79,7.05 7,4 10,3L9.91,3.14V3.14C9.63,3.58 8.91,4.97 9.67,6.47C10.39,6.17 11.17,6 12,6C12.83,6 13.61,6.17 14.33,6.47C15.09,4.97 14.37,3.58 14.09,3.14L14,3C17,4 17.21,7.05 16.61,8.15L17.18,8.96C17.55,8.5 18.18,8.07 18.77,7.9C19.79,7.6 21.7,7.75 21.93,8.55C22.16,9.35 20.62,10.5 19.6,10.78C19.07,10.93 18.42,10.93 17.88,10.78L18,12C18,13.35 17.55,14.6 16.8,15.6C17.55,16.27 18,17.1 18,18M12,16C9.79,16 8,16.9 8,18C8,19.1 9.79,20 12,20C14.21,20 16,19.1 16,18C16,16.9 14.21,16 12,16M12,14C13.12,14 14.17,14.21 15.07,14.56C15.65,13.87 16,13 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13 8.35,13.87 8.93,14.56C9.83,14.21 10.88,14 12,14M14.09,3.14V3.14Z" /></g><g id="creation"><path d="M19,1L17.74,3.75L15,5L17.74,6.26L19,9L20.25,6.26L23,5L20.25,3.75M9,4L6.5,9.5L1,12L6.5,14.5L9,20L11.5,14.5L17,12L11.5,9.5M19,15L17.74,17.74L15,19L17.74,20.25L19,23L20.25,20.25L23,19L20.25,17.74" /></g><g id="credit-card"><path d="M20,8H4V6H20M20,18H4V12H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="credit-card-multiple"><path d="M21,8V6H7V8H21M21,16V11H7V16H21M21,4A2,2 0 0,1 23,6V16A2,2 0 0,1 21,18H7C5.89,18 5,17.1 5,16V6C5,4.89 5.89,4 7,4H21M3,20H18V22H3A2,2 0 0,1 1,20V9H3V20Z" /></g><g id="credit-card-off"><path d="M0.93,4.2L2.21,2.93L20,20.72L18.73,22L16.73,20H4C2.89,20 2,19.1 2,18V6C2,5.78 2.04,5.57 2.11,5.38L0.93,4.2M20,8V6H7.82L5.82,4H20A2,2 0 0,1 22,6V18C22,18.6 21.74,19.13 21.32,19.5L19.82,18H20V12H13.82L9.82,8H20M4,8H4.73L4,7.27V8M4,12V18H14.73L8.73,12H4Z" /></g><g id="credit-card-plus"><path d="M21,18H24V20H21V23H19V20H16V18H19V15H21V18M19,8V6H3V8H19M19,12H3V18H14V20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H19A2,2 0 0,1 21,6V13H19V12Z" /></g><g id="credit-card-scan"><path d="M2,4H6V2H2A2,2 0 0,0 0,4V8H2V4M22,2H18V4H22V8H24V4A2,2 0 0,0 22,2M2,16H0V20A2,2 0 0,0 2,22H6V20H2V16M22,20H18V22H22A2,2 0 0,0 24,20V16H22V20M4,8V16A2,2 0 0,0 6,18H18A2,2 0 0,0 20,16V8A2,2 0 0,0 18,6H6A2,2 0 0,0 4,8M6,16V12H18V16H6M18,8V10H6V8H18Z" /></g><g id="crop"><path d="M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z" /></g><g id="crop-free"><path d="M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z" /></g><g id="crop-landscape"><path d="M19,17H5V7H19M19,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H19A2,2 0 0,0 21,17V7C21,5.89 20.1,5 19,5Z" /></g><g id="crop-portrait"><path d="M17,19H7V5H17M17,3H7A2,2 0 0,0 5,5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V5C19,3.89 18.1,3 17,3Z" /></g><g id="crop-rotate"><path d="M7.47,21.5C4.2,19.93 1.86,16.76 1.5,13H0C0.5,19.16 5.66,24 11.95,24C12.18,24 12.39,24 12.61,23.97L8.8,20.15L7.47,21.5M12.05,0C11.82,0 11.61,0 11.39,0.04L15.2,3.85L16.53,2.5C19.8,4.07 22.14,7.24 22.5,11H24C23.5,4.84 18.34,0 12.05,0M16,14H18V8C18,6.89 17.1,6 16,6H10V8H16V14M8,16V4H6V6H4V8H6V16A2,2 0 0,0 8,18H16V20H18V18H20V16H8Z" /></g><g id="crop-square"><path d="M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z" /></g><g id="crosshairs"><path d="M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="crosshairs-gps"><path d="M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M3.05,13H1V11H3.05C3.5,6.83 6.83,3.5 11,3.05V1H13V3.05C17.17,3.5 20.5,6.83 20.95,11H23V13H20.95C20.5,17.17 17.17,20.5 13,20.95V23H11V20.95C6.83,20.5 3.5,17.17 3.05,13M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="crown"><path d="M5,16L3,5L8.5,12L12,5L15.5,12L21,5L19,16H5M19,19A1,1 0 0,1 18,20H6A1,1 0 0,1 5,19V18H19V19Z" /></g><g id="cube"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15Z" /></g><g id="cube-outline"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L6.04,7.5L12,10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z" /></g><g id="cube-send"><path d="M16,4L9,8.04V15.96L16,20L23,15.96V8.04M16,6.31L19.8,8.5L16,10.69L12.21,8.5M0,7V9H7V7M11,10.11L15,12.42V17.11L11,14.81M21,10.11V14.81L17,17.11V12.42M2,11V13H7V11M4,15V17H7V15" /></g><g id="cube-unfolded"><path d="M6,9V4H13V9H23V16H18V21H11V16H1V9H6M16,16H13V19H16V16M8,9H11V6H8V9M6,14V11H3V14H6M18,11V14H21V11H18M13,11V14H16V11H13M8,11V14H11V11H8Z" /></g><g id="cup"><path d="M18.32,8H5.67L5.23,4H18.77M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z" /></g><g id="cup-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.97,22 5.13,21.23 5,20.23L3.53,6.8L1,4.27M18.32,8L18.77,4H5.82L3.82,2H21L19.29,17.47L9.82,8H18.32Z" /></g><g id="cup-water"><path d="M18.32,8H5.67L5.23,4H18.77M12,19A3,3 0 0,1 9,16C9,14 12,10.6 12,10.6C12,10.6 15,14 15,16A3,3 0 0,1 12,19M3,2L5,20.23C5.13,21.23 5.97,22 7,22H17C18,22 18.87,21.23 19,20.23L21,2H3Z" /></g><g id="currency-btc"><path d="M4.5,5H8V2H10V5H11.5V2H13.5V5C19,5 19,11 16,11.25C20,11 21,19 13.5,19V22H11.5V19H10V22H8V19H4.5L5,17H6A1,1 0 0,0 7,16V8A1,1 0 0,0 6,7H4.5V5M10,7V11C10,11 14.5,11.25 14.5,9C14.5,6.75 10,7 10,7M10,12.5V17C10,17 15.5,17 15.5,14.75C15.5,12.5 10,12.5 10,12.5Z" /></g><g id="currency-eur"><path d="M7.07,11L7,12L7.07,13H17.35L16.5,15H7.67C8.8,17.36 11.21,19 14,19C16.23,19 18.22,17.96 19.5,16.33V19.12C18,20.3 16.07,21 14,21C10.08,21 6.75,18.5 5.5,15H2L3,13H5.05L5,12L5.05,11H2L3,9H5.5C6.75,5.5 10.08,3 14,3C16.5,3 18.8,4.04 20.43,5.71L19.57,7.75C18.29,6.08 16.27,5 14,5C11.21,5 8.8,6.64 7.67,9H19.04L18.19,11H7.07Z" /></g><g id="currency-gbp"><path d="M6.5,21V19.75C7.44,19.29 8.24,18.57 8.81,17.7C9.38,16.83 9.67,15.85 9.68,14.75L9.66,13.77L9.57,13H7V11H9.4C9.25,10.17 9.16,9.31 9.13,8.25C9.16,6.61 9.64,5.33 10.58,4.41C11.5,3.5 12.77,3 14.32,3C15.03,3 15.64,3.07 16.13,3.2C16.63,3.32 17,3.47 17.31,3.65L16.76,5.39C16.5,5.25 16.19,5.12 15.79,5C15.38,4.9 14.89,4.85 14.32,4.84C13.25,4.86 12.5,5.19 12,5.83C11.5,6.46 11.29,7.28 11.3,8.28L11.4,9.77L11.6,11H15.5V13H11.79C11.88,14 11.84,15 11.65,15.96C11.35,17.16 10.74,18.18 9.83,19H18V21H6.5Z" /></g><g id="currency-inr"><path d="M8,3H18L17,5H13.74C14.22,5.58 14.58,6.26 14.79,7H18L17,9H15C14.75,11.57 12.74,13.63 10.2,13.96V14H9.5L15.5,21H13L7,14V12H9.5V12C11.26,12 12.72,10.7 12.96,9H7L8,7H12.66C12.1,5.82 10.9,5 9.5,5H7L8,3Z" /></g><g id="currency-ngn"><path d="M4,9H6V3H8L11.42,9H16V3H18V9H20V11H18V13H20V15H18V21H16L12.57,15H8V21H6V15H4V13H6V11H4V9M8,9H9.13L8,7.03V9M8,11V13H11.42L10.28,11H8M16,17V15H14.85L16,17M12.56,11L13.71,13H16V11H12.56Z" /></g><g id="currency-rub"><path d="M6,10H7V3H14.5C17,3 19,5 19,7.5C19,10 17,12 14.5,12H9V14H15V16H9V21H7V16H6V14H7V12H6V10M14.5,5H9V10H14.5A2.5,2.5 0 0,0 17,7.5A2.5,2.5 0 0,0 14.5,5Z" /></g><g id="currency-try"><path d="M19,12A9,9 0 0,1 10,21H8V12.77L5,13.87V11.74L8,10.64V8.87L5,9.96V7.84L8,6.74V3H10V6L15,4.2V6.32L10,8.14V9.92L15,8.1V10.23L10,12.05V19A7,7 0 0,0 17,12H19Z" /></g><g id="currency-usd"><path d="M11.8,10.9C9.53,10.31 8.8,9.7 8.8,8.75C8.8,7.66 9.81,6.9 11.5,6.9C13.28,6.9 13.94,7.75 14,9H16.21C16.14,7.28 15.09,5.7 13,5.19V3H10V5.16C8.06,5.58 6.5,6.84 6.5,8.77C6.5,11.08 8.41,12.23 11.2,12.9C13.7,13.5 14.2,14.38 14.2,15.31C14.2,16 13.71,17.1 11.5,17.1C9.44,17.1 8.63,16.18 8.5,15H6.32C6.44,17.19 8.08,18.42 10,18.83V21H13V18.85C14.95,18.5 16.5,17.35 16.5,15.3C16.5,12.46 14.07,11.5 11.8,10.9Z" /></g><g id="currency-usd-off"><path d="M12.5,6.9C14.28,6.9 14.94,7.75 15,9H17.21C17.14,7.28 16.09,5.7 14,5.19V3H11V5.16C10.47,5.28 9.97,5.46 9.5,5.7L11,7.17C11.4,7 11.9,6.9 12.5,6.9M5.33,4.06L4.06,5.33L7.5,8.77C7.5,10.85 9.06,12 11.41,12.68L14.92,16.19C14.58,16.67 13.87,17.1 12.5,17.1C10.44,17.1 9.63,16.18 9.5,15H7.32C7.44,17.19 9.08,18.42 11,18.83V21H14V18.85C14.96,18.67 15.82,18.3 16.45,17.73L18.67,19.95L19.94,18.68L5.33,4.06Z" /></g><g id="cursor-default"><path d="M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z" /></g><g id="cursor-default-outline"><path d="M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z" /></g><g id="cursor-move"><path d="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z" /></g><g id="cursor-pointer"><path d="M10,2A2,2 0 0,1 12,4V8.5C12,8.5 14,8.25 14,9.25C14,9.25 16,9 16,10C16,10 18,9.75 18,10.75C18,10.75 20,10.5 20,11.5V15C20,16 17,21 17,22H9C9,22 7,15 4,13C4,13 3,7 8,12V4A2,2 0 0,1 10,2Z" /></g><g id="cursor-text"><path d="M13,19A1,1 0 0,0 14,20H16V22H13.5C12.95,22 12,21.55 12,21C12,21.55 11.05,22 10.5,22H8V20H10A1,1 0 0,0 11,19V5A1,1 0 0,0 10,4H8V2H10.5C11.05,2 12,2.45 12,3C12,2.45 12.95,2 13.5,2H16V4H14A1,1 0 0,0 13,5V19Z" /></g><g id="database"><path d="M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M4,9V12C4,14.21 7.58,16 12,16C16.42,16 20,14.21 20,12V9C20,11.21 16.42,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C16.42,21 20,19.21 20,17V14C20,16.21 16.42,18 12,18C7.58,18 4,16.21 4,14Z" /></g><g id="database-minus"><path d="M9,3C4.58,3 1,4.79 1,7C1,9.21 4.58,11 9,11C13.42,11 17,9.21 17,7C17,4.79 13.42,3 9,3M1,9V12C1,14.21 4.58,16 9,16C13.42,16 17,14.21 17,12V9C17,11.21 13.42,13 9,13C4.58,13 1,11.21 1,9M1,14V17C1,19.21 4.58,21 9,21C10.41,21 11.79,20.81 13,20.46V17.46C11.79,17.81 10.41,18 9,18C4.58,18 1,16.21 1,14M15,17V19H23V17" /></g><g id="database-plus"><path d="M9,3C4.58,3 1,4.79 1,7C1,9.21 4.58,11 9,11C13.42,11 17,9.21 17,7C17,4.79 13.42,3 9,3M1,9V12C1,14.21 4.58,16 9,16C13.42,16 17,14.21 17,12V9C17,11.21 13.42,13 9,13C4.58,13 1,11.21 1,9M1,14V17C1,19.21 4.58,21 9,21C10.41,21 11.79,20.81 13,20.46V17.46C11.79,17.81 10.41,18 9,18C4.58,18 1,16.21 1,14M18,14V17H15V19H18V22H20V19H23V17H20V14" /></g><g id="debug-step-into"><path d="M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,2V13L17.5,8.5L18.92,9.92L12,16.84L5.08,9.92L6.5,8.5L11,13V2H13Z" /></g><g id="debug-step-out"><path d="M12,22A2,2 0 0,1 10,20A2,2 0 0,1 12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22M13,16H11V6L6.5,10.5L5.08,9.08L12,2.16L18.92,9.08L17.5,10.5L13,6V16Z" /></g><g id="debug-step-over"><path d="M12,14A2,2 0 0,1 14,16A2,2 0 0,1 12,18A2,2 0 0,1 10,16A2,2 0 0,1 12,14M23.46,8.86L21.87,15.75L15,14.16L18.8,11.78C17.39,9.5 14.87,8 12,8C8.05,8 4.77,10.86 4.12,14.63L2.15,14.28C2.96,9.58 7.06,6 12,6C15.58,6 18.73,7.89 20.5,10.72L23.46,8.86Z" /></g><g id="decimal-decrease"><path d="M12,17L15,20V18H21V16H15V14L12,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z" /></g><g id="decimal-increase"><path d="M22,17L19,20V18H13V16H19V14L22,17M9,5A3,3 0 0,1 12,8V11A3,3 0 0,1 9,14A3,3 0 0,1 6,11V8A3,3 0 0,1 9,5M9,7A1,1 0 0,0 8,8V11A1,1 0 0,0 9,12A1,1 0 0,0 10,11V8A1,1 0 0,0 9,7M16,5A3,3 0 0,1 19,8V11A3,3 0 0,1 16,14A3,3 0 0,1 13,11V8A3,3 0 0,1 16,5M16,7A1,1 0 0,0 15,8V11A1,1 0 0,0 16,12A1,1 0 0,0 17,11V8A1,1 0 0,0 16,7M4,12A1,1 0 0,1 5,13A1,1 0 0,1 4,14A1,1 0 0,1 3,13A1,1 0 0,1 4,12Z" /></g><g id="delete"><path d="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" /></g><g id="delete-circle"><path d="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M17,7H14.5L13.5,6H10.5L9.5,7H7V9H17V7M9,18H15A1,1 0 0,0 16,17V10H8V17A1,1 0 0,0 9,18Z" /></g><g id="delete-empty"><path d="M20.37,8.91L19.37,10.64L7.24,3.64L8.24,1.91L11.28,3.66L12.64,3.29L16.97,5.79L17.34,7.16L20.37,8.91M6,19V7H11.07L18,11V19A2,2 0 0,1 16,21H8A2,2 0 0,1 6,19Z" /></g><g id="delete-forever"><path d="M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19M8.46,11.88L9.87,10.47L12,12.59L14.12,10.47L15.53,11.88L13.41,14L15.53,16.12L14.12,17.53L12,15.41L9.88,17.53L8.47,16.12L10.59,14L8.46,11.88M15.5,4L14.5,3H9.5L8.5,4H5V6H19V4H15.5Z" /></g><g id="delete-sweep"><path d="M15,16H19V18H15V16M15,8H22V10H15V8M15,12H21V14H15V12M3,18A2,2 0 0,0 5,20H11A2,2 0 0,0 13,18V8H3V18M14,5H11L10,4H6L5,5H2V7H14V5Z" /></g><g id="delete-variant"><path d="M21.03,3L18,20.31C17.83,21.27 17,22 16,22H8C7,22 6.17,21.27 6,20.31L2.97,3H21.03M5.36,5L8,20H16L18.64,5H5.36M9,18V14H13V18H9M13,13.18L9.82,10L13,6.82L16.18,10L13,13.18Z" /></g><g id="delta"><path d="M12,7.77L18.39,18H5.61L12,7.77M12,4L2,20H22" /></g><g id="deskphone"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15,5V19H19V5H15M5,5V9H13V5H5M5,11V13H7V11H5M8,11V13H10V11H8M11,11V13H13V11H11M5,14V16H7V14H5M8,14V16H10V14H8M11,14V16H13V14H11M11,17V19H13V17H11M8,17V19H10V17H8M5,17V19H7V17H5Z" /></g><g id="desktop-mac"><path d="M21,14H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10L8,21V22H16V21L14,18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z" /></g><g id="desktop-tower"><path d="M8,2H16A2,2 0 0,1 18,4V20A2,2 0 0,1 16,22H8A2,2 0 0,1 6,20V4A2,2 0 0,1 8,2M8,4V6H16V4H8M16,8H8V10H16V8M16,18H14V20H16V18Z" /></g><g id="details"><path d="M6.38,6H17.63L12,16L6.38,6M3,4L12,20L21,4H3Z" /></g><g id="developer-board"><path d="M22,9V7H20V5A2,2 0 0,0 18,3H4A2,2 0 0,0 2,5V19A2,2 0 0,0 4,21H18A2,2 0 0,0 20,19V17H22V15H20V13H22V11H20V9H22M18,19H4V5H18V19M6,13H11V17H6V13M12,7H16V10H12V7M6,7H11V12H6V7M12,11H16V17H12V11Z" /></g><g id="deviantart"><path d="M6,6H12L14,2H18V6L14.5,13H18V18H12L10,22H6V18L9.5,11H6V6Z" /></g><g id="dialpad"><path d="M12,19A2,2 0 0,0 10,21A2,2 0 0,0 12,23A2,2 0 0,0 14,21A2,2 0 0,0 12,19M6,1A2,2 0 0,0 4,3A2,2 0 0,0 6,5A2,2 0 0,0 8,3A2,2 0 0,0 6,1M6,7A2,2 0 0,0 4,9A2,2 0 0,0 6,11A2,2 0 0,0 8,9A2,2 0 0,0 6,7M6,13A2,2 0 0,0 4,15A2,2 0 0,0 6,17A2,2 0 0,0 8,15A2,2 0 0,0 6,13M18,5A2,2 0 0,0 20,3A2,2 0 0,0 18,1A2,2 0 0,0 16,3A2,2 0 0,0 18,5M12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13M18,13A2,2 0 0,0 16,15A2,2 0 0,0 18,17A2,2 0 0,0 20,15A2,2 0 0,0 18,13M18,7A2,2 0 0,0 16,9A2,2 0 0,0 18,11A2,2 0 0,0 20,9A2,2 0 0,0 18,7M12,7A2,2 0 0,0 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9A2,2 0 0,0 12,7M12,1A2,2 0 0,0 10,3A2,2 0 0,0 12,5A2,2 0 0,0 14,3A2,2 0 0,0 12,1Z" /></g><g id="diamond"><path d="M16,9H19L14,16M10,9H14L12,17M5,9H8L10,16M15,4H17L19,7H16M11,4H13L14,7H10M7,4H9L8,7H5M6,2L2,8L12,22L22,8L18,2H6Z" /></g><g id="dice-1"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="dice-2"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="dice-3"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="dice-4"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-5"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-6"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15M17,10A2,2 0 0,0 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10M17,5A2,2 0 0,0 15,7A2,2 0 0,0 17,9A2,2 0 0,0 19,7A2,2 0 0,0 17,5M7,10A2,2 0 0,0 5,12A2,2 0 0,0 7,14A2,2 0 0,0 9,12A2,2 0 0,0 7,10M7,15A2,2 0 0,0 5,17A2,2 0 0,0 7,19A2,2 0 0,0 9,17A2,2 0 0,0 7,15Z" /></g><g id="dice-d20"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M14.93,8.27A2.57,2.57 0 0,1 17.5,10.84V13.5C17.5,14.9 16.35,16.05 14.93,16.05C13.5,16.05 12.36,14.9 12.36,13.5V10.84A2.57,2.57 0 0,1 14.93,8.27M14.92,9.71C14.34,9.71 13.86,10.18 13.86,10.77V13.53C13.86,14.12 14.34,14.6 14.92,14.6C15.5,14.6 16,14.12 16,13.53V10.77C16,10.18 15.5,9.71 14.92,9.71M11.45,14.76V15.96L6.31,15.93V14.91C6.31,14.91 9.74,11.58 9.75,10.57C9.75,9.33 8.73,9.46 8.73,9.46C8.73,9.46 7.75,9.5 7.64,10.71L6.14,10.76C6.14,10.76 6.18,8.26 8.83,8.26C11.2,8.26 11.23,10.04 11.23,10.5C11.23,12.18 8.15,14.77 8.15,14.77L11.45,14.76Z" /></g><g id="dice-d4"><path d="M13.43,15.15H14.29V16.36H13.43V18H11.92V16.36H8.82L8.75,15.41L11.91,10.42H13.43V15.15M10.25,15.15H11.92V12.47L10.25,15.15M22,21H2C1.64,21 1.31,20.81 1.13,20.5C0.95,20.18 0.96,19.79 1.15,19.5L11.15,3C11.5,2.38 12.5,2.38 12.86,3L22.86,19.5C23.04,19.79 23.05,20.18 22.87,20.5C22.69,20.81 22.36,21 22,21M3.78,19H20.23L12,5.43L3.78,19Z" /></g><g id="dice-d6"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5M13.39,9.53C10.89,9.5 10.86,11.53 10.86,11.53C10.86,11.53 11.41,10.87 12.53,10.87C13.19,10.87 14.5,11.45 14.55,13.41C14.61,15.47 12.77,16 12.77,16C12.77,16 9.27,16.86 9.3,12.66C9.33,7.94 13.39,8.33 13.39,8.33V9.53M11.95,12.1C11.21,12 10.83,12.78 10.83,12.78L10.85,13.5C10.85,14.27 11.39,14.83 12,14.83C12.61,14.83 13.05,14.27 13.05,13.5C13.05,12.73 12.56,12.1 11.95,12.1Z" /></g><g id="dice-d8"><path d="M12,23C11.67,23 11.37,22.84 11.18,22.57L4.18,12.57C3.94,12.23 3.94,11.77 4.18,11.43L11.18,1.43C11.55,0.89 12.45,0.89 12.82,1.43L19.82,11.43C20.06,11.77 20.06,12.23 19.82,12.57L12.82,22.57C12.63,22.84 12.33,23 12,23M6.22,12L12,20.26L17.78,12L12,3.74L6.22,12M12,8.25C13.31,8.25 14.38,9.2 14.38,10.38C14.38,11.07 14,11.68 13.44,12.07C14.14,12.46 14.6,13.13 14.6,13.9C14.6,15.12 13.44,16.1 12,16.1C10.56,16.1 9.4,15.12 9.4,13.9C9.4,13.13 9.86,12.46 10.56,12.07C10,11.68 9.63,11.07 9.63,10.38C9.63,9.2 10.69,8.25 12,8.25M12,12.65A1.1,1.1 0 0,0 10.9,13.75A1.1,1.1 0 0,0 12,14.85A1.1,1.1 0 0,0 13.1,13.75A1.1,1.1 0 0,0 12,12.65M12,9.5C11.5,9.5 11.1,9.95 11.1,10.5C11.1,11.05 11.5,11.5 12,11.5C12.5,11.5 12.9,11.05 12.9,10.5C12.9,9.95 12.5,9.5 12,9.5Z" /></g><g id="dictionary"><path d="M5.81,2C4.83,2.09 4,3 4,4V20C4,21.05 4.95,22 6,22H18C19.05,22 20,21.05 20,20V4C20,2.89 19.1,2 18,2H12V9L9.5,7.5L7,9V2H6C5.94,2 5.87,2 5.81,2M12,13H13A1,1 0 0,1 14,14V18H13V16H12V18H11V14A1,1 0 0,1 12,13M12,14V15H13V14H12M15,15H18V16L16,19H18V20H15V19L17,16H15V15Z" /></g><g id="directions"><path d="M14,14.5V12H10V15H8V11A1,1 0 0,1 9,10H14V7.5L17.5,11M21.71,11.29L12.71,2.29H12.7C12.31,1.9 11.68,1.9 11.29,2.29L2.29,11.29C1.9,11.68 1.9,12.32 2.29,12.71L11.29,21.71C11.68,22.09 12.31,22.1 12.71,21.71L21.71,12.71C22.1,12.32 22.1,11.68 21.71,11.29Z" /></g><g id="directions-fork"><path d="M3,4V12.5L6,9.5L9,13C10,14 10,15 10,15V21H14V14C14,14 14,13 13.47,12C12.94,11 12,10 12,10L9,6.58L11.5,4M18,4L13.54,8.47L14,9C14,9 14.93,10 15.47,11C15.68,11.4 15.8,11.79 15.87,12.13L21,7" /></g><g id="discord"><path d="M22,24L16.75,19L17.38,21H4.5A2.5,2.5 0 0,1 2,18.5V3.5A2.5,2.5 0 0,1 4.5,1H19.5A2.5,2.5 0 0,1 22,3.5V24M12,6.8C9.32,6.8 7.44,7.95 7.44,7.95C8.47,7.03 10.27,6.5 10.27,6.5L10.1,6.33C8.41,6.36 6.88,7.53 6.88,7.53C5.16,11.12 5.27,14.22 5.27,14.22C6.67,16.03 8.75,15.9 8.75,15.9L9.46,15C8.21,14.73 7.42,13.62 7.42,13.62C7.42,13.62 9.3,14.9 12,14.9C14.7,14.9 16.58,13.62 16.58,13.62C16.58,13.62 15.79,14.73 14.54,15L15.25,15.9C15.25,15.9 17.33,16.03 18.73,14.22C18.73,14.22 18.84,11.12 17.12,7.53C17.12,7.53 15.59,6.36 13.9,6.33L13.73,6.5C13.73,6.5 15.53,7.03 16.56,7.95C16.56,7.95 14.68,6.8 12,6.8M9.93,10.59C10.58,10.59 11.11,11.16 11.1,11.86C11.1,12.55 10.58,13.13 9.93,13.13C9.29,13.13 8.77,12.55 8.77,11.86C8.77,11.16 9.28,10.59 9.93,10.59M14.1,10.59C14.75,10.59 15.27,11.16 15.27,11.86C15.27,12.55 14.75,13.13 14.1,13.13C13.46,13.13 12.94,12.55 12.94,11.86C12.94,11.16 13.45,10.59 14.1,10.59Z" /></g><g id="disk"><path d="M12,14C10.89,14 10,13.1 10,12C10,10.89 10.89,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="disk-alert"><path d="M10,14C8.89,14 8,13.1 8,12C8,10.89 8.89,10 10,10A2,2 0 0,1 12,12A2,2 0 0,1 10,14M10,4A8,8 0 0,0 2,12A8,8 0 0,0 10,20A8,8 0 0,0 18,12A8,8 0 0,0 10,4M20,12H22V7H20M20,16H22V14H20V16Z" /></g><g id="disqus"><path d="M12.08,22C9.63,22 7.39,21.11 5.66,19.63L1.41,20.21L3.05,16.15C2.5,14.88 2.16,13.5 2.16,12C2.16,6.5 6.6,2 12.08,2C17.56,2 22,6.5 22,12C22,17.5 17.56,22 12.08,22M17.5,11.97V11.94C17.5,9.06 15.46,7 11.95,7H8.16V17H11.9C15.43,17 17.5,14.86 17.5,11.97M12,14.54H10.89V9.46H12C13.62,9.46 14.7,10.39 14.7,12V12C14.7,13.63 13.62,14.54 12,14.54Z" /></g><g id="disqus-outline"><path d="M11.9,14.5H10.8V9.5H11.9C13.5,9.5 14.6,10.4 14.6,12C14.6,13.6 13.5,14.5 11.9,14.5M11.9,7H8.1V17H11.8C15.3,17 17.4,14.9 17.4,12V12C17.4,9.1 15.4,7 11.9,7M12,20C10.1,20 8.3,19.3 6.9,18.1L6.2,17.5L4.5,17.7L5.2,16.1L4.9,15.3C4.4,14.2 4.2,13.1 4.2,11.9C4.2,7.5 7.8,3.9 12.1,3.9C16.4,3.9 19.9,7.6 19.9,12C19.9,16.4 16.3,20 12,20M12,2C6.5,2 2.1,6.5 2.1,12C2.1,13.5 2.4,14.9 3,16.2L1.4,20.3L5.7,19.7C7.4,21.2 9.7,22.1 12.1,22.1C17.6,22.1 22,17.6 22,12.1C22,6.6 17.5,2 12,2Z" /></g><g id="division"><path d="M19,13H5V11H19V13M12,5A2,2 0 0,1 14,7A2,2 0 0,1 12,9A2,2 0 0,1 10,7A2,2 0 0,1 12,5M12,15A2,2 0 0,1 14,17A2,2 0 0,1 12,19A2,2 0 0,1 10,17A2,2 0 0,1 12,15Z" /></g><g id="division-box"><path d="M17,13V11H7V13H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7M12,15A1,1 0 0,0 11,16A1,1 0 0,0 12,17A1,1 0 0,0 13,16A1,1 0 0,0 12,15Z" /></g><g id="dna"><path d="M4,2H6V4C6,5.44 6.68,6.61 7.88,7.78C8.74,8.61 9.89,9.41 11.09,10.2L9.26,11.39C8.27,10.72 7.31,10 6.5,9.21C5.07,7.82 4,6.1 4,4V2M18,2H20V4C20,6.1 18.93,7.82 17.5,9.21C16.09,10.59 14.29,11.73 12.54,12.84C10.79,13.96 9.09,15.05 7.88,16.22C6.68,17.39 6,18.56 6,20V22H4V20C4,17.9 5.07,16.18 6.5,14.79C7.91,13.41 9.71,12.27 11.46,11.16C13.21,10.04 14.91,8.95 16.12,7.78C17.32,6.61 18,5.44 18,4V2M14.74,12.61C15.73,13.28 16.69,14 17.5,14.79C18.93,16.18 20,17.9 20,20V22H18V20C18,18.56 17.32,17.39 16.12,16.22C15.26,15.39 14.11,14.59 12.91,13.8L14.74,12.61M7,3H17V4L16.94,4.5H7.06L7,4V3M7.68,6H16.32C16.08,6.34 15.8,6.69 15.42,7.06L14.91,7.5H9.07L8.58,7.06C8.2,6.69 7.92,6.34 7.68,6M9.09,16.5H14.93L15.42,16.94C15.8,17.31 16.08,17.66 16.32,18H7.68C7.92,17.66 8.2,17.31 8.58,16.94L9.09,16.5M7.06,19.5H16.94L17,20V21H7V20L7.06,19.5Z" /></g><g id="dns"><path d="M7,9A2,2 0 0,1 5,7A2,2 0 0,1 7,5A2,2 0 0,1 9,7A2,2 0 0,1 7,9M20,3H4A1,1 0 0,0 3,4V10A1,1 0 0,0 4,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M7,19A2,2 0 0,1 5,17A2,2 0 0,1 7,15A2,2 0 0,1 9,17A2,2 0 0,1 7,19M20,13H4A1,1 0 0,0 3,14V20A1,1 0 0,0 4,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z" /></g><g id="do-not-disturb"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,13H7V11H17V13Z" /></g><g id="do-not-disturb-off"><path d="M17,11V13H15.54L20.22,17.68C21.34,16.07 22,14.11 22,12A10,10 0 0,0 12,2C9.89,2 7.93,2.66 6.32,3.78L13.54,11H17M2.27,2.27L1,3.54L3.78,6.32C2.66,7.93 2,9.89 2,12A10,10 0 0,0 12,22C14.11,22 16.07,21.34 17.68,20.22L20.46,23L21.73,21.73L2.27,2.27M7,13V11H8.46L10.46,13H7Z" /></g><g id="dolby"><path d="M2,5V19H22V5H2M6,17H4V7H6C8.86,7.09 11.1,9.33 11,12C11.1,14.67 8.86,16.91 6,17M20,17H18C15.14,16.91 12.9,14.67 13,12C12.9,9.33 15.14,7.09 18,7H20V17Z" /></g><g id="domain"><path d="M18,15H16V17H18M18,11H16V13H18M20,19H12V17H14V15H12V13H14V11H12V9H20M10,7H8V5H10M10,11H8V9H10M10,15H8V13H10M10,19H8V17H10M6,7H4V5H6M6,11H4V9H6M6,15H4V13H6M6,19H4V17H6M12,7V3H2V21H22V7H12Z" /></g><g id="dots-horizontal"><path d="M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z" /></g><g id="dots-vertical"><path d="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" /></g><g id="douban"><path d="M20,6H4V4H20V6M20,18V20H4V18H7.33L6.26,14H5V8H19V14H17.74L16.67,18H20M7,12H17V10H7V12M9.4,18H14.6L15.67,14H8.33L9.4,18Z" /></g><g id="download"><path d="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z" /></g><g id="drag"><path d="M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z" /></g><g id="drag-horizontal"><path d="M3,15V13H5V15H3M3,11V9H5V11H3M7,15V13H9V15H7M7,11V9H9V11H7M11,15V13H13V15H11M11,11V9H13V11H11M15,15V13H17V15H15M15,11V9H17V11H15M19,15V13H21V15H19M19,11V9H21V11H19Z" /></g><g id="drag-vertical"><path d="M9,3H11V5H9V3M13,3H15V5H13V3M9,7H11V9H9V7M13,7H15V9H13V7M9,11H11V13H9V11M13,11H15V13H13V11M9,15H11V17H9V15M13,15H15V17H13V15M9,19H11V21H9V19M13,19H15V21H13V19Z" /></g><g id="drawing"><path d="M8.5,3A5.5,5.5 0 0,1 14,8.5C14,9.83 13.53,11.05 12.74,12H21V21H12V12.74C11.05,13.53 9.83,14 8.5,14A5.5,5.5 0 0,1 3,8.5A5.5,5.5 0 0,1 8.5,3Z" /></g><g id="drawing-box"><path d="M18,18H12V12.21C11.34,12.82 10.47,13.2 9.5,13.2C7.46,13.2 5.8,11.54 5.8,9.5A3.7,3.7 0 0,1 9.5,5.8C11.54,5.8 13.2,7.46 13.2,9.5C13.2,10.47 12.82,11.34 12.21,12H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="dribbble"><path d="M16.42,18.42C16,16.5 15.5,14.73 15,13.17C15.5,13.1 16,13.06 16.58,13.06H16.6V13.06H16.6C17.53,13.06 18.55,13.18 19.66,13.43C19.28,15.5 18.08,17.27 16.42,18.42M12,19.8C10.26,19.8 8.66,19.23 7.36,18.26C7.64,17.81 8.23,16.94 9.18,16.04C10.14,15.11 11.5,14.15 13.23,13.58C13.82,15.25 14.36,17.15 14.77,19.29C13.91,19.62 13,19.8 12,19.8M4.2,12C4.2,11.96 4.2,11.93 4.2,11.89C4.42,11.9 4.71,11.9 5.05,11.9H5.06C6.62,11.89 9.36,11.76 12.14,10.89C12.29,11.22 12.44,11.56 12.59,11.92C10.73,12.54 9.27,13.53 8.19,14.5C7.16,15.46 6.45,16.39 6.04,17C4.9,15.66 4.2,13.91 4.2,12M8.55,5C9.1,5.65 10.18,7.06 11.34,9.25C9,9.96 6.61,10.12 5.18,10.12C5.14,10.12 5.1,10.12 5.06,10.12H5.05C4.81,10.12 4.6,10.12 4.43,10.11C5,7.87 6.5,6 8.55,5M12,4.2C13.84,4.2 15.53,4.84 16.86,5.91C15.84,7.14 14.5,8 13.03,8.65C12,6.67 11,5.25 10.34,4.38C10.88,4.27 11.43,4.2 12,4.2M18.13,7.18C19.1,8.42 19.71,9.96 19.79,11.63C18.66,11.39 17.6,11.28 16.6,11.28V11.28H16.59C15.79,11.28 15.04,11.35 14.33,11.47C14.16,11.05 14,10.65 13.81,10.26C15.39,9.57 16.9,8.58 18.13,7.18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="dribbble-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15.09,16.5C14.81,15.14 14.47,13.91 14.08,12.82L15.2,12.74H15.22V12.74C15.87,12.74 16.59,12.82 17.36,13C17.09,14.44 16.26,15.69 15.09,16.5M12,17.46C10.79,17.46 9.66,17.06 8.76,16.39C8.95,16.07 9.36,15.46 10,14.83C10.7,14.18 11.64,13.5 12.86,13.11C13.28,14.27 13.65,15.6 13.94,17.1C13.33,17.33 12.68,17.46 12,17.46M6.54,12V11.92L7.14,11.93V11.93C8.24,11.93 10.15,11.83 12.1,11.22L12.41,11.94C11.11,12.38 10.09,13.07 9.34,13.76C8.61,14.42 8.12,15.08 7.83,15.5C7.03,14.56 6.54,13.34 6.54,12M9.59,7.11C9.97,7.56 10.73,8.54 11.54,10.08C9.89,10.57 8.23,10.68 7.22,10.68H7.14V10.68H6.7C7.09,9.11 8.17,7.81 9.59,7.11M12,6.54C13.29,6.54 14.47,7 15.41,7.74C14.69,8.6 13.74,9.22 12.72,9.66C12,8.27 11.31,7.28 10.84,6.67C11.21,6.59 11.6,6.54 12,6.54M16.29,8.63C16.97,9.5 17.4,10.57 17.45,11.74C16.66,11.58 15.92,11.5 15.22,11.5V11.5C14.66,11.5 14.13,11.54 13.63,11.63L13.27,10.78C14.37,10.3 15.43,9.61 16.29,8.63M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z" /></g><g id="drone"><path d="M22,11H21L20,9H13.75L16,12.5H14L10.75,9H4C3.45,9 2,8.55 2,8C2,7.45 3.5,5.5 5.5,5.5C7.5,5.5 7.67,6.5 9,7H21A1,1 0 0,1 22,8V9L22,11M10.75,6.5L14,3H16L13.75,6.5H10.75M18,11V9.5H19.75L19,11H18M3,19A1,1 0 0,1 2,18A1,1 0 0,1 3,17A4,4 0 0,1 7,21A1,1 0 0,1 6,22A1,1 0 0,1 5,21A2,2 0 0,0 3,19M11,21A1,1 0 0,1 10,22A1,1 0 0,1 9,21A6,6 0 0,0 3,15A1,1 0 0,1 2,14A1,1 0 0,1 3,13A8,8 0 0,1 11,21Z" /></g><g id="dropbox"><path d="M12,14.56L16.35,18.16L18.2,16.95V18.3L12,22L5.82,18.3V16.95L7.68,18.16L12,14.56M7.68,2.5L12,6.09L16.32,2.5L22.5,6.5L18.23,9.94L22.5,13.36L16.32,17.39L12,13.78L7.68,17.39L1.5,13.36L5.77,9.94L1.5,6.5L7.68,2.5M12,13.68L18.13,9.94L12,6.19L5.87,9.94L12,13.68Z" /></g><g id="drupal"><path d="M20.47,14.65C20.47,15.29 20.25,16.36 19.83,17.1C19.4,17.85 19.08,18.06 18.44,18.06C17.7,17.95 16.31,15.82 15.36,15.72C14.18,15.72 11.73,18.17 9.71,18.17C8.54,18.17 8.11,17.95 7.79,17.74C7.15,17.31 6.94,16.67 6.94,15.82C6.94,14.22 8.43,12.84 10.24,12.84C12.59,12.84 14.18,15.18 15.36,15.08C16.31,15.08 18.23,13.16 19.19,13.16C20.15,12.95 20.47,14 20.47,14.65M16.63,5.28C15.57,4.64 14.61,4.32 13.54,3.68C12.91,3.25 12.05,2.3 11.31,1.44C11,2.83 10.78,3.36 10.24,3.79C9.18,4.53 8.64,4.85 7.69,5.28C6.94,5.7 3,8.05 3,13.16C3,18.27 7.37,22 12.05,22C16.85,22 21,18.5 21,13.27C21.21,8.05 17.27,5.7 16.63,5.28Z" /></g><g id="duck"><path d="M8.5,5A1.5,1.5 0 0,0 7,6.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 10,6.5A1.5,1.5 0 0,0 8.5,5M10,2A5,5 0 0,1 15,7C15,8.7 14.15,10.2 12.86,11.1C14.44,11.25 16.22,11.61 18,12.5C21,14 22,12 22,12C22,12 21,21 15,21H9C9,21 4,21 4,16C4,13 7,12 6,10C2,10 2,6.5 2,6.5C3,7 4.24,7 5,6.65C5.19,4.05 7.36,2 10,2Z" /></g><g id="dumbbell"><path d="M4.22,14.12L3.5,13.41C2.73,12.63 2.73,11.37 3.5,10.59C4.3,9.8 5.56,9.8 6.34,10.59L8.92,13.16L13.16,8.92L10.59,6.34C9.8,5.56 9.8,4.3 10.59,3.5C11.37,2.73 12.63,2.73 13.41,3.5L14.12,4.22L19.78,9.88L20.5,10.59C21.27,11.37 21.27,12.63 20.5,13.41C19.7,14.2 18.44,14.2 17.66,13.41L15.08,10.84L10.84,15.08L13.41,17.66C14.2,18.44 14.2,19.7 13.41,20.5C12.63,21.27 11.37,21.27 10.59,20.5L9.88,19.78L4.22,14.12M3.16,19.42L4.22,18.36L2.81,16.95C2.42,16.56 2.42,15.93 2.81,15.54C3.2,15.15 3.83,15.15 4.22,15.54L8.46,19.78C8.85,20.17 8.85,20.8 8.46,21.19C8.07,21.58 7.44,21.58 7.05,21.19L5.64,19.78L4.58,20.84L3.16,19.42M19.42,3.16L20.84,4.58L19.78,5.64L21.19,7.05C21.58,7.44 21.58,8.07 21.19,8.46C20.8,8.86 20.17,8.86 19.78,8.46L15.54,4.22C15.15,3.83 15.15,3.2 15.54,2.81C15.93,2.42 16.56,2.42 16.95,2.81L18.36,4.22L19.42,3.16Z" /></g><g id="earth"><path d="M17.9,17.39C17.64,16.59 16.89,16 16,16H15V13A1,1 0 0,0 14,12H8V10H10A1,1 0 0,0 11,9V7H13A2,2 0 0,0 15,5V4.59C17.93,5.77 20,8.64 20,12C20,14.08 19.2,15.97 17.9,17.39M11,19.93C7.05,19.44 4,16.08 4,12C4,11.38 4.08,10.78 4.21,10.21L9,15V16A2,2 0 0,0 11,18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="earth-box"><path d="M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H5M15.78,5H19V17.18C18.74,16.38 17.69,15.79 16.8,15.79H15.8V12.79A1,1 0 0,0 14.8,11.79H8.8V9.79H10.8A1,1 0 0,0 11.8,8.79V6.79H13.8C14.83,6.79 15.67,6 15.78,5M5,10.29L9.8,14.79V15.79C9.8,16.9 10.7,17.79 11.8,17.79V19H5V10.29Z" /></g><g id="earth-box-off"><path d="M23,4.27L21,6.27V19A2,2 0 0,1 19,21H6.27L4.27,23L3,21.72L21.72,3L23,4.27M5,3H19.18L17.18,5H15.78C15.67,6 14.83,6.79 13.8,6.79H11.8V8.79C11.8,9.35 11.35,9.79 10.8,9.79H8.8V11.79H10.38L8.55,13.62L5,10.29V17.18L3,19.18V5C3,3.89 3.89,3 5,3M11.8,19V17.79C11.17,17.79 10.6,17.5 10.23,17.04L8.27,19H11.8M15.8,12.79V15.79H16.8C17.69,15.79 18.74,16.38 19,17.18V8.27L15.33,11.94C15.61,12.12 15.8,12.43 15.8,12.79Z" /></g><g id="earth-off"><path d="M22,5.27L20.5,6.75C21.46,8.28 22,10.07 22,12A10,10 0 0,1 12,22C10.08,22 8.28,21.46 6.75,20.5L5.27,22L4,20.72L20.72,4L22,5.27M17.9,17.39C19.2,15.97 20,14.08 20,12C20,10.63 19.66,9.34 19.05,8.22L14.83,12.44C14.94,12.6 15,12.79 15,13V16H16C16.89,16 17.64,16.59 17.9,17.39M11,19.93V18C10.5,18 10.07,17.83 9.73,17.54L8.22,19.05C9.07,19.5 10,19.8 11,19.93M15,4.59V5A2,2 0 0,1 13,7H11V9A1,1 0 0,1 10,10H8V12H10.18L8.09,14.09L4.21,10.21C4.08,10.78 4,11.38 4,12C4,13.74 4.56,15.36 5.5,16.67L4.08,18.1C2.77,16.41 2,14.3 2,12A10,10 0 0,1 12,2C14.3,2 16.41,2.77 18.1,4.08L16.67,5.5C16.16,5.14 15.6,4.83 15,4.59Z" /></g><g id="edge"><path d="M2.74,10.81C3.83,-1.36 22.5,-1.36 21.2,13.56H8.61C8.61,17.85 14.42,19.21 19.54,16.31V20.53C13.25,23.88 5,21.43 5,14.09C5,8.58 9.97,6.81 9.97,6.81C9.97,6.81 8.58,8.58 8.54,10.05H15.7C15.7,2.93 5.9,5.57 2.74,10.81Z" /></g><g id="eject"><path d="M12,5L5.33,15H18.67M5,17H19V19H5V17Z" /></g><g id="elevation-decline"><path d="M21,21H3V11.25L9.45,15L13.22,12.8L21,17.29V21M3,8.94V6.75L9.45,10.5L13.22,8.3L21,12.79V15L13.22,10.5L9.45,12.67L3,8.94Z" /></g><g id="elevation-rise"><path d="M3,21V17.29L10.78,12.8L14.55,15L21,11.25V21H3M21,8.94L14.55,12.67L10.78,10.5L3,15V12.79L10.78,8.3L14.55,10.5L21,6.75V8.94Z" /></g><g id="elevator"><path d="M7,2L11,6H8V10H6V6H3L7,2M17,10L13,6H16V2H18V6H21L17,10M7,12H17A2,2 0 0,1 19,14V20A2,2 0 0,1 17,22H7A2,2 0 0,1 5,20V14A2,2 0 0,1 7,12M7,14V20H17V14H7Z" /></g><g id="email"><path d="M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="email-alert"><path d="M16,9V7L10,11L4,7V9L10,13L16,9M16,5A2,2 0 0,1 18,7V16A2,2 0 0,1 16,18H4C2.89,18 2,17.1 2,16V7A2,2 0 0,1 4,5H16M20,12V7H22V12H20M20,16V14H22V16H20Z" /></g><g id="email-open"><path d="M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z" /></g><g id="email-open-outline"><path d="M12,15.36L4,10.36V18H20V10.36L12,15.36M4,8L12,13L20,8V8L12,3L4,8V8M22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V8C2,7.27 2.39,6.64 2.97,6.29L12,0.64L21.03,6.29C21.61,6.64 22,7.27 22,8Z" /></g><g id="email-outline"><path d="M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M20,18H4V8L12,13L20,8V18M20,6L12,11L4,6V6H20V6Z" /></g><g id="email-secure"><path d="M20.5,0A2.5,2.5 0 0,1 23,2.5V3A1,1 0 0,1 24,4V8A1,1 0 0,1 23,9H18A1,1 0 0,1 17,8V4A1,1 0 0,1 18,3V2.5A2.5,2.5 0 0,1 20.5,0M12,11L4,6V8L12,13L16.18,10.39C16.69,10.77 17.32,11 18,11H22V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H15V8C15,8.36 15.06,8.7 15.18,9L12,11M20.5,1A1.5,1.5 0 0,0 19,2.5V3H22V2.5A1.5,1.5 0 0,0 20.5,1Z" /></g><g id="email-variant"><path d="M12,13L2,6.76V6C2,4.89 2.89,4 4,4H20A2,2 0 0,1 22,6V6.75L12,13M22,18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V9.11L4,10.36V18H20V10.36L22,9.11V18Z" /></g><g id="emby"><path d="M11,2L6,7L7,8L2,13L7,18L8,17L13,22L18,17L17,16L22,11L17,6L16,7L11,2M10,8.5L16,12L10,15.5V8.5Z" /></g><g id="emoticon"><path d="M12,17.5C14.33,17.5 16.3,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5M8.5,11A1.5,1.5 0 0,0 10,9.5A1.5,1.5 0 0,0 8.5,8A1.5,1.5 0 0,0 7,9.5A1.5,1.5 0 0,0 8.5,11M15.5,11A1.5,1.5 0 0,0 17,9.5A1.5,1.5 0 0,0 15.5,8A1.5,1.5 0 0,0 14,9.5A1.5,1.5 0 0,0 15.5,11M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="emoticon-cool"><path d="M19,10C19,11.38 16.88,12.5 15.5,12.5C14.12,12.5 12.75,11.38 12.75,10H11.25C11.25,11.38 9.88,12.5 8.5,12.5C7.12,12.5 5,11.38 5,10H4.25C4.09,10.64 4,11.31 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,11.31 19.91,10.64 19.75,10H19M12,4C9.04,4 6.45,5.61 5.07,8H18.93C17.55,5.61 14.96,4 12,4M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-dead"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M16.18,7.76L15.12,8.82L14.06,7.76L13,8.82L14.06,9.88L13,10.94L14.06,12L15.12,10.94L16.18,12L17.24,10.94L16.18,9.88L17.24,8.82L16.18,7.76M7.82,12L8.88,10.94L9.94,12L11,10.94L9.94,9.88L11,8.82L9.94,7.76L8.88,8.82L7.82,7.76L6.76,8.82L7.82,9.88L6.76,10.94L7.82,12M12,14C9.67,14 7.69,15.46 6.89,17.5H17.11C16.31,15.46 14.33,14 12,14Z" /></g><g id="emoticon-devil"><path d="M1.5,2.09C2.4,3 3.87,3.73 5.69,4.25C7.41,2.84 9.61,2 12,2C14.39,2 16.59,2.84 18.31,4.25C20.13,3.73 21.6,3 22.5,2.09C22.47,3.72 21.65,5.21 20.28,6.4C21.37,8 22,9.92 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,9.92 2.63,8 3.72,6.4C2.35,5.21 1.53,3.72 1.5,2.09M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M10.5,10C10.5,10.8 9.8,11.5 9,11.5C8.2,11.5 7.5,10.8 7.5,10V8.5L10.5,10M16.5,10C16.5,10.8 15.8,11.5 15,11.5C14.2,11.5 13.5,10.8 13.5,10L16.5,8.5V10M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-excited"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M13,9.94L14.06,11L15.12,9.94L16.18,11L17.24,9.94L15.12,7.82L13,9.94M8.88,9.94L9.94,11L11,9.94L8.88,7.82L6.76,9.94L7.82,11L8.88,9.94M12,17.5C14.33,17.5 16.31,16.04 17.11,14H6.89C7.69,16.04 9.67,17.5 12,17.5Z" /></g><g id="emoticon-happy"><path d="M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z" /></g><g id="emoticon-neutral"><path d="M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,14H15A1,1 0 0,1 16,15A1,1 0 0,1 15,16H9A1,1 0 0,1 8,15A1,1 0 0,1 9,14Z" /></g><g id="emoticon-poop"><path d="M9,11C9.55,11 10,11.9 10,13C10,14.1 9.55,15 9,15C8.45,15 8,14.1 8,13C8,11.9 8.45,11 9,11M15,11C15.55,11 16,11.9 16,13C16,14.1 15.55,15 15,15C14.45,15 14,14.1 14,13C14,11.9 14.45,11 15,11M9.75,1.75C9.75,1.75 16,4 15,8C15,8 19,8 17.25,11.5C17.25,11.5 21.46,11.94 20.28,15.34C19,16.53 18.7,16.88 17.5,17.75L20.31,16.14C21.35,16.65 24.37,18.47 21,21C17,24 11,21.25 9,21.25C7,21.25 5,22 4,22C3,22 2,21 2,19C2,17 4,16 5,16C5,16 2,13 7,11C7,11 5,8 9,7C9,7 8,6 9,5C10,4 9.75,2.75 9.75,1.75M8,17C9.33,18.17 10.67,19.33 12,19.33C13.33,19.33 14.67,18.17 16,17H8M9,10C7.9,10 7,11.34 7,13C7,14.66 7.9,16 9,16C10.1,16 11,14.66 11,13C11,11.34 10.1,10 9,10M15,10C13.9,10 13,11.34 13,13C13,14.66 13.9,16 15,16C16.1,16 17,14.66 17,13C17,11.34 16.1,10 15,10Z" /></g><g id="emoticon-sad"><path d="M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z" /></g><g id="emoticon-tongue"><path d="M9,8A2,2 0 0,1 11,10C11,10.36 10.9,10.71 10.73,11C10.39,10.4 9.74,10 9,10C8.26,10 7.61,10.4 7.27,11C7.1,10.71 7,10.36 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10C17,10.36 16.9,10.71 16.73,11C16.39,10.4 15.74,10 15,10C14.26,10 13.61,10.4 13.27,11C13.1,10.71 13,10.36 13,10A2,2 0 0,1 15,8M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,13H15A1,1 0 0,1 16,14A1,1 0 0,1 15,15C15,17 14.1,18 13,18C11.9,18 11,17 11,15H9A1,1 0 0,1 8,14A1,1 0 0,1 9,13Z" /></g><g id="engine"><path d="M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z" /></g><g id="engine-outline"><path d="M8,10H16V18H11L9,16H7V11M7,4V6H10V8H7L5,10V13H3V10H1V18H3V15H5V18H8L10,20H18V16H20V19H23V9H20V12H18V8H12V6H15V4H7Z" /></g><g id="equal"><path d="M19,10H5V8H19V10M19,16H5V14H19V16Z" /></g><g id="equal-box"><path d="M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z" /></g><g id="eraser"><path d="M16.24,3.56L21.19,8.5C21.97,9.29 21.97,10.55 21.19,11.34L12,20.53C10.44,22.09 7.91,22.09 6.34,20.53L2.81,17C2.03,16.21 2.03,14.95 2.81,14.16L13.41,3.56C14.2,2.78 15.46,2.78 16.24,3.56M4.22,15.58L7.76,19.11C8.54,19.9 9.8,19.9 10.59,19.11L14.12,15.58L9.17,10.63L4.22,15.58Z" /></g><g id="eraser-variant"><path d="M15.14,3C14.63,3 14.12,3.2 13.73,3.59L2.59,14.73C1.81,15.5 1.81,16.77 2.59,17.56L5.03,20H12.69L21.41,11.27C22.2,10.5 22.2,9.23 21.41,8.44L16.56,3.59C16.17,3.2 15.65,3 15.14,3M17,18L15,20H22V18" /></g><g id="escalator"><path d="M20,8H18.95L6.95,20H4A2,2 0 0,1 2,18A2,2 0 0,1 4,16H5.29L7,14.29V10A1,1 0 0,1 8,9H9A1,1 0 0,1 10,10V11.29L17.29,4H20A2,2 0 0,1 22,6A2,2 0 0,1 20,8M8.5,5A1.5,1.5 0 0,1 10,6.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 7,6.5A1.5,1.5 0 0,1 8.5,5Z" /></g><g id="ethernet"><path d="M7,15H9V18H11V15H13V18H15V15H17V18H19V9H15V6H9V9H5V18H7V15M4.38,3H19.63C20.94,3 22,4.06 22,5.38V19.63A2.37,2.37 0 0,1 19.63,22H4.38C3.06,22 2,20.94 2,19.63V5.38C2,4.06 3.06,3 4.38,3Z" /></g><g id="ethernet-cable"><path d="M11,3V7H13V3H11M8,4V11H16V4H14V8H10V4H8M10,12V22H14V12H10Z" /></g><g id="ethernet-cable-off"><path d="M11,3H13V7H11V3M8,4H10V8H14V4H16V11H12.82L8,6.18V4M20,20.72L18.73,22L14,17.27V22H10V13.27L2,5.27L3.28,4L20,20.72Z" /></g><g id="etsy"><path d="M6.72,20.78C8.23,20.71 10.07,20.78 11.87,20.78C13.72,20.78 15.62,20.66 17.12,20.78C17.72,20.83 18.28,21.19 18.77,20.87C19.16,20.38 18.87,19.71 18.96,19.05C19.12,17.78 20.28,16.27 18.59,15.95C17.87,16.61 18.35,17.23 17.95,18.05C17.45,19.03 15.68,19.37 14,19.5C12.54,19.62 10,19.76 9.5,18.77C9.04,17.94 9.29,16.65 9.29,15.58C9.29,14.38 9.16,13.22 9.5,12.3C11.32,12.43 13.7,11.69 15,12.5C15.87,13 15.37,14.06 16.38,14.4C17.07,14.21 16.7,13.32 16.66,12.5C16.63,11.94 16.63,11.19 16.66,10.57C16.69,9.73 17,8.76 16.1,8.74C15.39,9.3 15.93,10.23 15.18,10.75C14.95,10.92 14.43,11 14.08,11C12.7,11.17 10.54,11.05 9.38,10.84C9.23,9.16 9.24,6.87 9.38,5.19C10,4.57 11.45,4.54 12.42,4.55C14.13,4.55 16.79,4.7 17.3,5.55C17.58,6 17.36,7 17.85,7.1C18.85,7.33 18.36,5.55 18.41,4.73C18.44,4.11 18.71,3.72 18.59,3.27C18.27,2.83 17.79,3.05 17.5,3.09C14.35,3.5 9.6,3.27 6.26,3.27C5.86,3.27 5.16,3.07 4.88,3.54C4.68,4.6 6.12,4.16 6.62,4.73C6.79,4.91 7.03,5.73 7.08,6.28C7.23,7.74 7.08,9.97 7.08,12.12C7.08,14.38 7.26,16.67 7.08,18.05C7,18.53 6.73,19.3 6.62,19.41C6,20.04 4.34,19.35 4.5,20.69C5.09,21.08 5.93,20.82 6.72,20.78Z" /></g><g id="ev-station"><path d="M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7.03 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14A2,2 0 0,0 15,12H14V5A2,2 0 0,0 12,3H6A2,2 0 0,0 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M8,18V13.5H6L10,6V11H12L8,18Z" /></g><g id="evernote"><path d="M15.09,11.63C15.09,11.63 15.28,10.35 16,10.35C16.76,10.35 17.78,12.06 17.78,12.06C17.78,12.06 15.46,11.63 15.09,11.63M19,4.69C18.64,4.09 16.83,3.41 15.89,3.41C14.96,3.41 13.5,3.41 13.5,3.41C13.5,3.41 12.7,2 10.88,2C9.05,2 9.17,2.81 9.17,3.5V6.32L8.34,7.19H4.5C4.5,7.19 3.44,7.91 3.44,9.44C3.44,11 3.92,16.35 7.13,16.85C10.93,17.43 11.58,15.67 11.58,15.46C11.58,14.56 11.6,13.21 11.6,13.21C11.6,13.21 12.71,15.33 14.39,15.33C16.07,15.33 17.04,16.3 17.04,17.29C17.04,18.28 17.04,19.13 17.04,19.13C17.04,19.13 17,20.28 16,20.28C15,20.28 13.89,20.28 13.89,20.28C13.89,20.28 13.2,19.74 13.2,19C13.2,18.25 13.53,18.05 13.93,18.05C14.32,18.05 14.65,18.09 14.65,18.09V16.53C14.65,16.53 11.47,16.5 11.47,18.94C11.47,21.37 13.13,22 14.46,22C15.8,22 16.63,22 16.63,22C16.63,22 20.56,21.5 20.56,13.75C20.56,6 19.33,5.28 19,4.69M7.5,6.31H4.26L8.32,2.22V5.5L7.5,6.31Z" /></g><g id="exclamation"><path d="M11,4.5H13V15.5H11V4.5M13,17.5V19.5H11V17.5H13Z" /></g><g id="exit-to-app"><path d="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z" /></g><g id="export"><path d="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" /></g><g id="eye"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z" /></g><g id="eye-off"><path d="M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z" /></g><g id="eye-outline"><path d="M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M3.93,12C5.5,14.97 8.58,16.83 12,16.83C15.42,16.83 18.5,14.97 20.07,12C18.5,9.03 15.42,7.17 12,7.17C8.58,7.17 5.5,9.03 3.93,12M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5Z" /></g><g id="eye-outline-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M3.93,12C5.5,14.97 8.58,16.83 12,16.83C12.5,16.83 13,16.79 13.45,16.72L11.72,15C10.29,14.85 9.15,13.71 9,12.28L6.07,9.34C5.21,10.07 4.5,10.97 3.93,12M20.07,12C18.5,9.03 15.42,7.17 12,7.17C11.09,7.17 10.21,7.3 9.37,7.55L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.11,15.29C18.33,14.46 19.35,13.35 20.07,12Z" /></g><g id="eyedropper"><path d="M19.35,11.72L17.22,13.85L15.81,12.43L8.1,20.14L3.5,22L2,20.5L3.86,15.9L11.57,8.19L10.15,6.78L12.28,4.65L19.35,11.72M16.76,3C17.93,1.83 19.83,1.83 21,3C22.17,4.17 22.17,6.07 21,7.24L19.08,9.16L14.84,4.92L16.76,3M5.56,17.03L4.5,19.5L6.97,18.44L14.4,11L13,9.6L5.56,17.03Z" /></g><g id="eyedropper-variant"><path d="M6.92,19L5,17.08L13.06,9L15,10.94M20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L13.84,6.41L11.91,4.5L10.5,5.91L11.92,7.33L3,16.25V21H7.75L16.67,12.08L18.09,13.5L19.5,12.09L17.58,10.17L20.7,7.05C21.1,6.65 21.1,6 20.71,5.63Z" /></g><g id="face"><path d="M9,11.75A1.25,1.25 0 0,0 7.75,13A1.25,1.25 0 0,0 9,14.25A1.25,1.25 0 0,0 10.25,13A1.25,1.25 0 0,0 9,11.75M15,11.75A1.25,1.25 0 0,0 13.75,13A1.25,1.25 0 0,0 15,14.25A1.25,1.25 0 0,0 16.25,13A1.25,1.25 0 0,0 15,11.75M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,11.71 4,11.42 4.05,11.14C6.41,10.09 8.28,8.16 9.26,5.77C11.07,8.33 14.05,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20Z" /></g><g id="face-profile"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,8.39C13.57,9.4 15.42,10 17.42,10C18.2,10 18.95,9.91 19.67,9.74C19.88,10.45 20,11.21 20,12C20,16.41 16.41,20 12,20C9,20 6.39,18.34 5,15.89L6.75,14V13A1.25,1.25 0 0,1 8,11.75A1.25,1.25 0 0,1 9.25,13V14H12M16,11.75A1.25,1.25 0 0,0 14.75,13A1.25,1.25 0 0,0 16,14.25A1.25,1.25 0 0,0 17.25,13A1.25,1.25 0 0,0 16,11.75Z" /></g><g id="facebook"><path d="M17,2V2H17V6H15C14.31,6 14,6.81 14,7.5V10H14L17,10V14H14V22H10V14H7V10H10V6A4,4 0 0,1 14,2H17Z" /></g><g id="facebook-box"><path d="M19,4V7H17A1,1 0 0,0 16,8V10H19V13H16V20H13V13H11V10H13V7.5C13,5.56 14.57,4 16.5,4M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="facebook-messenger"><path d="M12,2C6.5,2 2,6.14 2,11.25C2,14.13 3.42,16.7 5.65,18.4L5.71,22L9.16,20.12L9.13,20.11C10.04,20.36 11,20.5 12,20.5C17.5,20.5 22,16.36 22,11.25C22,6.14 17.5,2 12,2M13.03,14.41L10.54,11.78L5.5,14.41L10.88,8.78L13.46,11.25L18.31,8.78L13.03,14.41Z" /></g><g id="factory"><path d="M4,18V20H8V18H4M4,14V16H14V14H4M10,18V20H14V18H10M16,14V16H20V14H16M16,18V20H20V18H16M2,22V8L7,12V8L12,12V8L17,12L18,2H21L22,12V22H2Z" /></g><g id="fan"><path d="M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11M12.5,2C17,2 17.11,5.57 14.75,6.75C13.76,7.24 13.32,8.29 13.13,9.22C13.61,9.42 14.03,9.73 14.35,10.13C18.05,8.13 22.03,8.92 22.03,12.5C22.03,17 18.46,17.1 17.28,14.73C16.78,13.74 15.72,13.3 14.79,13.11C14.59,13.59 14.28,14 13.88,14.34C15.87,18.03 15.08,22 11.5,22C7,22 6.91,18.42 9.27,17.24C10.25,16.75 10.69,15.71 10.89,14.79C10.4,14.59 9.97,14.27 9.65,13.87C5.96,15.85 2,15.07 2,11.5C2,7 5.56,6.89 6.74,9.26C7.24,10.25 8.29,10.68 9.22,10.87C9.41,10.39 9.73,9.97 10.14,9.65C8.15,5.96 8.94,2 12.5,2Z" /></g><g id="fast-forward"><path d="M13,6V18L21.5,12M4,18L12.5,12L4,6V18Z" /></g><g id="fast-forward-outline"><path d="M15,9.9L18,12L15,14.1V9.9M6,9.9L9,12L6,14.1V9.9M13,6V18L21.5,12L13,6M4,6V18L12.5,12L4,6Z" /></g><g id="fax"><path d="M6,2A1,1 0 0,0 5,3V7H6V5H8V4H6V3H8V2H6M11,2A1,1 0 0,0 10,3V7H11V5H12V7H13V3A1,1 0 0,0 12,2H11M15,2L16.42,4.5L15,7H16.13L17,5.5L17.87,7H19L17.58,4.5L19,2H17.87L17,3.5L16.13,2H15M11,3H12V4H11V3M5,9A3,3 0 0,0 2,12V18H6V22H18V18H22V12A3,3 0 0,0 19,9H5M19,11A1,1 0 0,1 20,12A1,1 0 0,1 19,13A1,1 0 0,1 18,12A1,1 0 0,1 19,11M8,15H16V20H8V15Z" /></g><g id="feather"><path d="M22,2C22,2 14.36,1.63 8.34,9.88C3.72,16.21 2,22 2,22L3.94,21C5.38,18.5 6.13,17.47 7.54,16C10.07,16.74 12.71,16.65 15,14C13,13.44 11.4,13.57 9.04,13.81C11.69,12 13.5,11.6 16,12L17,10C15.2,9.66 14,9.63 12.22,10.04C14.19,8.65 15.56,7.87 18,8L19.21,6.07C17.65,5.96 16.71,6.13 14.92,6.57C16.53,5.11 18,4.45 20.14,4.32C20.14,4.32 21.19,2.43 22,2Z" /></g><g id="ferry"><path d="M6,6H18V9.96L12,8L6,9.96M3.94,19H4C5.6,19 7,18.12 8,17C9,18.12 10.4,19 12,19C13.6,19 15,18.12 16,17C17,18.12 18.4,19 20,19H20.05L21.95,12.31C22.03,12.06 22,11.78 21.89,11.54C21.76,11.3 21.55,11.12 21.29,11.04L20,10.62V6C20,4.89 19.1,4 18,4H15V1H9V4H6A2,2 0 0,0 4,6V10.62L2.71,11.04C2.45,11.12 2.24,11.3 2.11,11.54C2,11.78 1.97,12.06 2.05,12.31M20,21C18.61,21 17.22,20.53 16,19.67C13.56,21.38 10.44,21.38 8,19.67C6.78,20.53 5.39,21 4,21H2V23H4C5.37,23 6.74,22.65 8,22C10.5,23.3 13.5,23.3 16,22C17.26,22.65 18.62,23 20,23H22V21H20Z" /></g><g id="file"><path d="M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z" /></g><g id="file-chart"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M7,20H9V14H7V20M11,20H13V12H11V20M15,20H17V16H15V20Z" /></g><g id="file-check"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M10.45,18.46L15.2,13.71L14.03,12.3L10.45,15.88L8.86,14.3L7.7,15.46L10.45,18.46Z" /></g><g id="file-cloud"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15.68,15C15.34,13.3 13.82,12 12,12C10.55,12 9.3,12.82 8.68,14C7.17,14.18 6,15.45 6,17A3,3 0 0,0 9,20H15.5A2.5,2.5 0 0,0 18,17.5C18,16.18 16.97,15.11 15.68,15Z" /></g><g id="file-delimited"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M14,15V11H10V15H12.3C12.6,17 12,18 9.7,19.38L10.85,20.2C13,19 14,16 14,15Z" /></g><g id="file-document"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z" /></g><g id="file-document-box"><path d="M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-excel"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M17,11H13V13H14L12,14.67L10,13H11V11H7V13H8L11,15.5L8,18H7V20H11V18H10L12,16.33L14,18H13V20H17V18H16L13,15.5L16,13H17V11Z" /></g><g id="file-excel-box"><path d="M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-export"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M8.93,12.22H16V19.29L13.88,17.17L11.05,20L8.22,17.17L11.05,14.35" /></g><g id="file-find"><path d="M9,13A3,3 0 0,0 12,16A3,3 0 0,0 15,13A3,3 0 0,0 12,10A3,3 0 0,0 9,13M20,19.59V8L14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18C18.45,22 18.85,21.85 19.19,21.6L14.76,17.17C13.96,17.69 13,18 12,18A5,5 0 0,1 7,13A5,5 0 0,1 12,8A5,5 0 0,1 17,13C17,14 16.69,14.96 16.17,15.75L20,19.59Z" /></g><g id="file-hidden"><path d="M13,9H14V11H11V7H13V9M18.5,9L16.38,6.88L17.63,5.63L20,8V10H18V11H15V9H18.5M13,3.5V2H12V4H13V6H11V4H9V2H8V4H6V5H4V4C4,2.89 4.89,2 6,2H14L16.36,4.36L15.11,5.61L13,3.5M20,20A2,2 0 0,1 18,22H16V20H18V19H20V20M18,15H20V18H18V15M12,22V20H15V22H12M8,22V20H11V22H8M6,22C4.89,22 4,21.1 4,20V18H6V20H7V22H6M4,14H6V17H4V14M4,10H6V13H4V10M18,11H20V14H18V11M4,6H6V9H4V6Z" /></g><g id="file-image"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z" /></g><g id="file-import"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M13,3.5L18.5,9H13M10.05,11.22L12.88,14.05L15,11.93V19H7.93L10.05,16.88L7.22,14.05" /></g><g id="file-lock"><path d="M6,2C4.89,2 4,2.9 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6M13,3.5L18.5,9H13V3.5M12,11A3,3 0 0,1 15,14V15H16V19H8V15H9V14C9,12.36 10.34,11 12,11M12,13A1,1 0 0,0 11,14V15H13V14C13,13.47 12.55,13 12,13Z" /></g><g id="file-multiple"><path d="M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z" /></g><g id="file-music"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M9,16A2,2 0 0,0 7,18A2,2 0 0,0 9,20A2,2 0 0,0 11,18V13H14V11H10V16.27C9.71,16.1 9.36,16 9,16Z" /></g><g id="file-outline"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M11,4H6V20H11L18,20V11H11V4Z" /></g><g id="file-pdf"><path d="M14,9H19.5L14,3.5V9M7,2H15L21,8V20A2,2 0 0,1 19,22H7C5.89,22 5,21.1 5,20V4A2,2 0 0,1 7,2M11.93,12.44C12.34,13.34 12.86,14.08 13.46,14.59L13.87,14.91C13,15.07 11.8,15.35 10.53,15.84V15.84L10.42,15.88L10.92,14.84C11.37,13.97 11.7,13.18 11.93,12.44M18.41,16.25C18.59,16.07 18.68,15.84 18.69,15.59C18.72,15.39 18.67,15.2 18.57,15.04C18.28,14.57 17.53,14.35 16.29,14.35L15,14.42L14.13,13.84C13.5,13.32 12.93,12.41 12.53,11.28L12.57,11.14C12.9,9.81 13.21,8.2 12.55,7.54C12.39,7.38 12.17,7.3 11.94,7.3H11.7C11.33,7.3 11,7.69 10.91,8.07C10.54,9.4 10.76,10.13 11.13,11.34V11.35C10.88,12.23 10.56,13.25 10.05,14.28L9.09,16.08L8.2,16.57C7,17.32 6.43,18.16 6.32,18.69C6.28,18.88 6.3,19.05 6.37,19.23L6.4,19.28L6.88,19.59L7.32,19.7C8.13,19.7 9.05,18.75 10.29,16.63L10.47,16.56C11.5,16.23 12.78,16 14.5,15.81C15.53,16.32 16.74,16.55 17.5,16.55C17.94,16.55 18.24,16.44 18.41,16.25M18,15.54L18.09,15.65C18.08,15.75 18.05,15.76 18,15.78H17.96L17.77,15.8C17.31,15.8 16.6,15.61 15.87,15.29C15.96,15.19 16,15.19 16.1,15.19C17.5,15.19 17.9,15.44 18,15.54M8.83,17C8.18,18.19 7.59,18.85 7.14,19C7.19,18.62 7.64,17.96 8.35,17.31L8.83,17M11.85,10.09C11.62,9.19 11.61,8.46 11.78,8.04L11.85,7.92L12,7.97C12.17,8.21 12.19,8.53 12.09,9.07L12.06,9.23L11.9,10.05L11.85,10.09Z" /></g><g id="file-pdf-box"><path d="M11.43,10.94C11.2,11.68 10.87,12.47 10.42,13.34C10.22,13.72 10,14.08 9.92,14.38L10.03,14.34V14.34C11.3,13.85 12.5,13.57 13.37,13.41C13.22,13.31 13.08,13.2 12.96,13.09C12.36,12.58 11.84,11.84 11.43,10.94M17.91,14.75C17.74,14.94 17.44,15.05 17,15.05C16.24,15.05 15,14.82 14,14.31C12.28,14.5 11,14.73 9.97,15.06C9.92,15.08 9.86,15.1 9.79,15.13C8.55,17.25 7.63,18.2 6.82,18.2C6.66,18.2 6.5,18.16 6.38,18.09L5.9,17.78L5.87,17.73C5.8,17.55 5.78,17.38 5.82,17.19C5.93,16.66 6.5,15.82 7.7,15.07C7.89,14.93 8.19,14.77 8.59,14.58C8.89,14.06 9.21,13.45 9.55,12.78C10.06,11.75 10.38,10.73 10.63,9.85V9.84C10.26,8.63 10.04,7.9 10.41,6.57C10.5,6.19 10.83,5.8 11.2,5.8H11.44C11.67,5.8 11.89,5.88 12.05,6.04C12.71,6.7 12.4,8.31 12.07,9.64C12.05,9.7 12.04,9.75 12.03,9.78C12.43,10.91 13,11.82 13.63,12.34C13.89,12.54 14.18,12.74 14.5,12.92C14.95,12.87 15.38,12.85 15.79,12.85C17.03,12.85 17.78,13.07 18.07,13.54C18.17,13.7 18.22,13.89 18.19,14.09C18.18,14.34 18.09,14.57 17.91,14.75M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M17.5,14.04C17.4,13.94 17,13.69 15.6,13.69C15.53,13.69 15.46,13.69 15.37,13.79C16.1,14.11 16.81,14.3 17.27,14.3C17.34,14.3 17.4,14.29 17.46,14.28H17.5C17.55,14.26 17.58,14.25 17.59,14.15C17.57,14.12 17.55,14.08 17.5,14.04M8.33,15.5C8.12,15.62 7.95,15.73 7.85,15.81C7.14,16.46 6.69,17.12 6.64,17.5C7.09,17.35 7.68,16.69 8.33,15.5M11.35,8.59L11.4,8.55C11.47,8.23 11.5,7.95 11.56,7.73L11.59,7.57C11.69,7 11.67,6.71 11.5,6.47L11.35,6.42C11.33,6.45 11.3,6.5 11.28,6.54C11.11,6.96 11.12,7.69 11.35,8.59Z" /></g><g id="file-powerpoint"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M8,11V13H9V19H8V20H12V19H11V17H13A3,3 0 0,0 16,14A3,3 0 0,0 13,11H8M13,13A1,1 0 0,1 14,14A1,1 0 0,1 13,15H11V13H13Z" /></g><g id="file-powerpoint-box"><path d="M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z" /></g><g id="file-presentation-box"><path d="M19,16H5V8H19M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-restore"><path d="M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12,18C9.95,18 8.19,16.76 7.42,15H9.13C9.76,15.9 10.81,16.5 12,16.5A3.5,3.5 0 0,0 15.5,13A3.5,3.5 0 0,0 12,9.5C10.65,9.5 9.5,10.28 8.9,11.4L10.5,13H6.5V9L7.8,10.3C8.69,8.92 10.23,8 12,8A5,5 0 0,1 17,13A5,5 0 0,1 12,18Z" /></g><g id="file-send"><path d="M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z" /></g><g id="file-tree"><path d="M3,3H9V7H3V3M15,10H21V14H15V10M15,17H21V21H15V17M13,13H7V18H13V20H7L5,20V9H7V11H13V13Z" /></g><g id="file-video"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M17,19V13L14,15.2V13H7V19H14V16.8L17,19Z" /></g><g id="file-word"><path d="M6,2H14L20,8V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M13,3.5V9H18.5L13,3.5M7,13L8.5,20H10.5L12,17L13.5,20H15.5L17,13H18V11H14V13H15L14.1,17.2L13,15V15H11V15L9.9,17.2L9,13H10V11H6V13H7Z" /></g><g id="file-word-box"><path d="M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="file-xml"><path d="M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6.12,15.5L9.86,19.24L11.28,17.83L8.95,15.5L11.28,13.17L9.86,11.76L6.12,15.5M17.28,15.5L13.54,11.76L12.12,13.17L14.45,15.5L12.12,17.83L13.54,19.24L17.28,15.5Z" /></g><g id="film"><path d="M3.5,3H5V1.8C5,1.36 5.36,1 5.8,1H10.2C10.64,1 11,1.36 11,1.8V3H12.5A1.5,1.5 0 0,1 14,4.5V5H22V20H14V20.5A1.5,1.5 0 0,1 12.5,22H3.5A1.5,1.5 0 0,1 2,20.5V4.5A1.5,1.5 0 0,1 3.5,3M18,7V9H20V7H18M14,7V9H16V7H14M10,7V9H12V7H10M14,16V18H16V16H14M18,16V18H20V16H18M10,16V18H12V16H10Z" /></g><g id="filmstrip"><path d="M18,9H16V7H18M18,13H16V11H18M18,17H16V15H18M8,9H6V7H8M8,13H6V11H8M8,17H6V15H8M18,3V5H16V3H8V5H6V3H4V21H6V19H8V21H16V19H18V21H20V3H18Z" /></g><g id="filmstrip-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L16,19.27V21H8V19H6V21H4V7.27L1,4.27M18,9V7H16V9H18M18,13V11H16V13H18M18,15H16.82L6.82,5H8V3H16V5H18V3H20V18.18L18,16.18V15M8,13V11.27L7.73,11H6V13H8M8,17V15H6V17H8M6,3V4.18L4.82,3H6Z" /></g><g id="filter"><path d="M3,2H21V2H21V4H20.92L14,10.92V22.91L10,18.91V10.91L3.09,4H3V2Z" /></g><g id="filter-outline"><path d="M3,2H21V2H21V4H20.92L15,9.92V22.91L9,16.91V9.91L3.09,4H3V2M11,16.08L13,18.08V9H13.09L18.09,4H5.92L10.92,9H11V16.08Z" /></g><g id="filter-remove"><path d="M14.76,20.83L17.6,18L14.76,15.17L16.17,13.76L19,16.57L21.83,13.76L23.24,15.17L20.43,18L23.24,20.83L21.83,22.24L19,19.4L16.17,22.24L14.76,20.83M2,2H20V2H20V4H19.92L13,10.92V22.91L9,18.91V10.91L2.09,4H2V2Z" /></g><g id="filter-remove-outline"><path d="M14.73,20.83L17.58,18L14.73,15.17L16.15,13.76L19,16.57L21.8,13.76L23.22,15.17L20.41,18L23.22,20.83L21.8,22.24L19,19.4L16.15,22.24L14.73,20.83M2,2H20V2H20V4H19.92L14,9.92V22.91L8,16.91V9.91L2.09,4H2V2M10,16.08L12,18.08V9H12.09L17.09,4H4.92L9.92,9H10V16.08Z" /></g><g id="filter-variant"><path d="M6,13H18V11H6M3,6V8H21V6M10,18H14V16H10V18Z" /></g><g id="fingerprint"><path d="M11.83,1.73C8.43,1.79 6.23,3.32 6.23,3.32C5.95,3.5 5.88,3.91 6.07,4.19C6.27,4.5 6.66,4.55 6.96,4.34C6.96,4.34 11.27,1.15 17.46,4.38C17.75,4.55 18.14,4.45 18.31,4.15C18.5,3.85 18.37,3.47 18.03,3.28C16.36,2.4 14.78,1.96 13.36,1.8C12.83,1.74 12.32,1.72 11.83,1.73M12.22,4.34C6.26,4.26 3.41,9.05 3.41,9.05C3.22,9.34 3.3,9.72 3.58,9.91C3.87,10.1 4.26,10 4.5,9.68C4.5,9.68 6.92,5.5 12.2,5.59C17.5,5.66 19.82,9.65 19.82,9.65C20,9.94 20.38,10.04 20.68,9.87C21,9.69 21.07,9.31 20.9,9C20.9,9 18.15,4.42 12.22,4.34M11.5,6.82C9.82,6.94 8.21,7.55 7,8.56C4.62,10.53 3.1,14.14 4.77,19C4.88,19.33 5.24,19.5 5.57,19.39C5.89,19.28 6.07,18.92 5.95,18.6V18.6C4.41,14.13 5.78,11.2 7.8,9.5C9.77,7.89 13.25,7.5 15.84,9.1C17.11,9.9 18.1,11.28 18.6,12.64C19.11,14 19.08,15.32 18.67,15.94C18.25,16.59 17.4,16.83 16.65,16.64C15.9,16.45 15.29,15.91 15.26,14.77C15.23,13.06 13.89,12 12.5,11.84C11.16,11.68 9.61,12.4 9.21,14C8.45,16.92 10.36,21.07 14.78,22.45C15.11,22.55 15.46,22.37 15.57,22.04C15.67,21.71 15.5,21.35 15.15,21.25C11.32,20.06 9.87,16.43 10.42,14.29C10.66,13.33 11.5,13 12.38,13.08C13.25,13.18 14,13.7 14,14.79C14.05,16.43 15.12,17.54 16.34,17.85C17.56,18.16 18.97,17.77 19.72,16.62C20.5,15.45 20.37,13.8 19.78,12.21C19.18,10.61 18.07,9.03 16.5,8.04C14.96,7.08 13.19,6.7 11.5,6.82M11.86,9.25V9.26C10.08,9.32 8.3,10.24 7.28,12.18C5.96,14.67 6.56,17.21 7.44,19.04C8.33,20.88 9.54,22.1 9.54,22.1C9.78,22.35 10.17,22.35 10.42,22.11C10.67,21.87 10.67,21.5 10.43,21.23C10.43,21.23 9.36,20.13 8.57,18.5C7.78,16.87 7.3,14.81 8.38,12.77C9.5,10.67 11.5,10.16 13.26,10.67C15.04,11.19 16.53,12.74 16.5,15.03C16.46,15.38 16.71,15.68 17.06,15.7C17.4,15.73 17.7,15.47 17.73,15.06C17.79,12.2 15.87,10.13 13.61,9.47C13.04,9.31 12.45,9.23 11.86,9.25M12.08,14.25C11.73,14.26 11.46,14.55 11.47,14.89C11.47,14.89 11.5,16.37 12.31,17.8C13.15,19.23 14.93,20.59 18.03,20.3C18.37,20.28 18.64,20 18.62,19.64C18.6,19.29 18.3,19.03 17.91,19.06C15.19,19.31 14.04,18.28 13.39,17.17C12.74,16.07 12.72,14.88 12.72,14.88C12.72,14.53 12.44,14.25 12.08,14.25Z" /></g><g id="fire"><path d="M11.71,19C9.93,19 8.5,17.59 8.5,15.86C8.5,14.24 9.53,13.1 11.3,12.74C13.07,12.38 14.9,11.53 15.92,10.16C16.31,11.45 16.5,12.81 16.5,14.2C16.5,16.84 14.36,19 11.71,19M13.5,0.67C13.5,0.67 14.24,3.32 14.24,5.47C14.24,7.53 12.89,9.2 10.83,9.2C8.76,9.2 7.2,7.53 7.2,5.47L7.23,5.1C5.21,7.5 4,10.61 4,14A8,8 0 0,0 12,22A8,8 0 0,0 20,14C20,8.6 17.41,3.8 13.5,0.67Z" /></g><g id="firefox"><path d="M21,11.7C21,11.3 20.9,10.7 20.8,10.3C20.5,8.6 19.6,7.1 18.5,5.9C18.3,5.6 17.9,5.3 17.5,5C16.4,4.1 15.1,3.5 13.6,3.2C10.6,2.7 7.6,3.7 5.6,5.8C5.6,5.8 5.6,5.7 5.6,5.7C5.5,5.5 5.5,5.5 5.4,5.5C5.4,5.5 5.4,5.5 5.4,5.5C5.3,5.3 5.3,5.2 5.2,5.1C5.2,5.1 5.2,5.1 5.2,5.1C5.2,4.9 5.1,4.7 5.1,4.5C4.8,4.6 4.8,4.9 4.7,5.1C4.7,5.1 4.7,5.1 4.7,5.1C4.5,5.3 4.3,5.6 4.3,5.9C4.3,5.9 4.3,5.9 4.3,5.9C4.2,6.1 4,7 4.2,7.1C4.2,7.1 4.2,7.1 4.3,7.1C4.3,7.2 4.3,7.3 4.3,7.4C4.1,7.6 4,7.7 4,7.8C3.7,8.4 3.4,8.9 3.3,9.5C3.3,9.7 3.3,9.8 3.3,9.9C3.3,9.9 3.3,9.9 3.3,9.9C3.3,9.9 3.3,9.8 3.3,9.8C3.1,10 3.1,10.3 3,10.5C3.1,10.5 3.1,10.4 3.2,10.4C2.7,13 3.4,15.7 5,17.7C7.4,20.6 11.5,21.8 15.1,20.5C18.6,19.2 21,15.8 21,12C21,11.9 21,11.8 21,11.7M13.5,4.1C15,4.4 16.4,5.1 17.5,6.1C17.6,6.2 17.7,6.4 17.7,6.4C17.4,6.1 16.7,5.6 16.3,5.8C16.4,6.1 17.6,7.6 17.7,7.7C17.7,7.7 18,9 18.1,9.1C18.1,9.1 18.1,9.1 18.1,9.1C18.1,9.1 18.1,9.1 18.1,9.1C18.1,9.3 17.4,11.9 17.4,12.3C17.4,12.4 16.5,14.2 16.6,14.2C16.3,14.9 16,14.9 15.9,15C15.8,15 15.2,15.2 14.5,15.4C13.9,15.5 13.2,15.7 12.7,15.6C12.4,15.6 12,15.6 11.7,15.4C11.6,15.3 10.8,14.9 10.6,14.8C10.3,14.7 10.1,14.5 9.9,14.3C10.2,14.3 10.8,14.3 11,14.3C11.6,14.2 14.2,13.3 14.1,12.9C14.1,12.6 13.6,12.4 13.4,12.2C13.1,12.1 11.9,12.3 11.4,12.5C11.4,12.5 9.5,12 9,11.6C9,11.5 8.9,10.9 8.9,10.8C8.8,10.7 9.2,10.4 9.2,10.4C9.2,10.4 10.2,9.4 10.2,9.3C10.4,9.3 10.6,9.1 10.7,9C10.6,9 10.8,8.9 11.1,8.7C11.1,8.7 11.1,8.7 11.1,8.7C11.4,8.5 11.6,8.5 11.6,8.2C11.6,8.2 12.1,7.3 11.5,7.4C11.5,7.4 10.6,7.3 10.3,7.3C10,7.5 9.9,7.4 9.6,7.3C9.6,7.3 9.4,7.1 9.4,7C9.5,6.8 10.2,5.3 10.5,5.2C10.3,4.8 9.3,5.1 9.1,5.4C9.1,5.4 8.3,6 7.9,6.1C7.9,6.1 7.9,6.1 7.9,6.1C7.9,6 7.4,5.9 6.9,5.9C8.7,4.4 11.1,3.7 13.5,4.1Z" /></g><g id="fish"><path d="M12,20L12.76,17C9.5,16.79 6.59,15.4 5.75,13.58C5.66,14.06 5.53,14.5 5.33,14.83C4.67,16 3.33,16 2,16C3.1,16 3.5,14.43 3.5,12.5C3.5,10.57 3.1,9 2,9C3.33,9 4.67,9 5.33,10.17C5.53,10.5 5.66,10.94 5.75,11.42C6.4,10 8.32,8.85 10.66,8.32L9,5C11,5 13,5 14.33,5.67C15.46,6.23 16.11,7.27 16.69,8.38C19.61,9.08 22,10.66 22,12.5C22,14.38 19.5,16 16.5,16.66C15.67,17.76 14.86,18.78 14.17,19.33C13.33,20 12.67,20 12,20M17,11A1,1 0 0,0 16,12A1,1 0 0,0 17,13A1,1 0 0,0 18,12A1,1 0 0,0 17,11Z" /></g><g id="flag"><path d="M14.4,6L14,4H5V21H7V14H12.6L13,16H20V6H14.4Z" /></g><g id="flag-checkered"><path d="M14.4,6H20V16H13L12.6,14H7V21H5V4H14L14.4,6M14,14H16V12H18V10H16V8H14V10L13,8V6H11V8H9V6H7V8H9V10H7V12H9V10H11V12H13V10L14,12V14M11,10V8H13V10H11M14,10H16V12H14V10Z" /></g><g id="flag-outline"><path d="M14.5,6H20V16H13L12.5,14H7V21H5V4H14L14.5,6M7,6V12H13L13.5,14H18V8H14L13.5,6H7Z" /></g><g id="flag-outline-variant"><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3M7,7.25V11.5C7,11.5 9,10 11,10C13,10 14,12 16,12C18,12 18,11 18,11V7.5C18,7.5 17,8 16,8C14,8 13,6 11,6C9,6 7,7.25 7,7.25Z" /></g><g id="flag-triangle"><path d="M7,2H9V22H7V2M19,9L11,14.6V3.4L19,9Z" /></g><g id="flag-variant"><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3Z" /></g><g id="flash"><path d="M7,2V13H10V22L17,10H13L17,2H7Z" /></g><g id="flash-auto"><path d="M16.85,7.65L18,4L19.15,7.65M19,2H17L13.8,11H15.7L16.4,9H19.6L20.3,11H22.2M3,2V14H6V23L13,11H9L13,2H3Z" /></g><g id="flash-off"><path d="M17,10H13L17,2H7V4.18L15.46,12.64M3.27,3L2,4.27L7,9.27V13H10V22L13.58,15.86L17.73,20L19,18.73L3.27,3Z" /></g><g id="flash-outline"><path d="M7,2H17L13.5,9H17L10,22V14H7V2M9,4V12H12V14.66L14,11H10.24L13.76,4H9Z" /></g><g id="flash-red-eye"><path d="M16,5C15.44,5 15,5.44 15,6C15,6.56 15.44,7 16,7C16.56,7 17,6.56 17,6C17,5.44 16.56,5 16,5M16,2C13.27,2 10.94,3.66 10,6C10.94,8.34 13.27,10 16,10C18.73,10 21.06,8.34 22,6C21.06,3.66 18.73,2 16,2M16,3.5A2.5,2.5 0 0,1 18.5,6A2.5,2.5 0 0,1 16,8.5A2.5,2.5 0 0,1 13.5,6A2.5,2.5 0 0,1 16,3.5M3,2V14H6V23L13,11H9L10.12,8.5C9.44,7.76 8.88,6.93 8.5,6C9.19,4.29 10.5,2.88 12.11,2H3Z" /></g><g id="flashlight"><path d="M9,10L6,5H18L15,10H9M18,4H6V2H18V4M9,22V11H15V22H9M12,13A1,1 0 0,0 11,14A1,1 0 0,0 12,15A1,1 0 0,0 13,14A1,1 0 0,0 12,13Z" /></g><g id="flashlight-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15,18.27V22H9V12.27L2,5.27M18,5L15,10H11.82L6.82,5H18M18,4H6V2H18V4M15,11V13.18L12.82,11H15Z" /></g><g id="flask"><path d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z" /></g><g id="flask-empty"><path d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z" /></g><g id="flask-empty-outline"><path d="M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6Z" /></g><g id="flask-outline"><path d="M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L13,8.35V4H11V8.35L5.18,18.43C5.07,18.59 5,18.79 5,19M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M13,16L14.34,14.66L16.27,18H7.73L10.39,13.39L13,16M12.5,12A0.5,0.5 0 0,1 13,12.5A0.5,0.5 0 0,1 12.5,13A0.5,0.5 0 0,1 12,12.5A0.5,0.5 0 0,1 12.5,12Z" /></g><g id="flattr"><path d="M21,9V15A6,6 0 0,1 15,21H4.41L11.07,14.35C11.38,14.04 11.69,13.73 11.84,13.75C12,13.78 12,14.14 12,14.5V17H14A3,3 0 0,0 17,14V8.41L21,4.41V9M3,15V9A6,6 0 0,1 9,3H19.59L12.93,9.65C12.62,9.96 12.31,10.27 12.16,10.25C12,10.22 12,9.86 12,9.5V7H10A3,3 0 0,0 7,10V15.59L3,19.59V15Z" /></g><g id="flip-to-back"><path d="M15,17H17V15H15M15,5H17V3H15M5,7H3V19A2,2 0 0,0 5,21H17V19H5M19,17A2,2 0 0,0 21,15H19M19,9H21V7H19M19,13H21V11H19M9,17V15H7A2,2 0 0,0 9,17M13,3H11V5H13M19,3V5H21C21,3.89 20.1,3 19,3M13,15H11V17H13M9,3C7.89,3 7,3.89 7,5H9M9,11H7V13H9M9,7H7V9H9V7Z" /></g><g id="flip-to-front"><path d="M7,21H9V19H7M11,21H13V19H11M19,15H9V5H19M19,3H9C7.89,3 7,3.89 7,5V15A2,2 0 0,0 9,17H14L18,17H19A2,2 0 0,0 21,15V5C21,3.89 20.1,3 19,3M15,21H17V19H15M3,9H5V7H3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M3,13H5V11H3V13Z" /></g><g id="floppy"><path d="M4.5,22L2,19.5V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17V15A1,1 0 0,0 16,14H7A1,1 0 0,0 6,15V22H4.5M5,4V10A1,1 0 0,0 6,11H18A1,1 0 0,0 19,10V4H5M8,16H11V20H8V16M20,4V5H21V4H20Z" /></g><g id="flower"><path d="M3,13A9,9 0 0,0 12,22C12,17 7.97,13 3,13M12,5.5A2.5,2.5 0 0,1 14.5,8A2.5,2.5 0 0,1 12,10.5A2.5,2.5 0 0,1 9.5,8A2.5,2.5 0 0,1 12,5.5M5.6,10.25A2.5,2.5 0 0,0 8.1,12.75C8.63,12.75 9.12,12.58 9.5,12.31C9.5,12.37 9.5,12.43 9.5,12.5A2.5,2.5 0 0,0 12,15A2.5,2.5 0 0,0 14.5,12.5C14.5,12.43 14.5,12.37 14.5,12.31C14.88,12.58 15.37,12.75 15.9,12.75C17.28,12.75 18.4,11.63 18.4,10.25C18.4,9.25 17.81,8.4 16.97,8C17.81,7.6 18.4,6.74 18.4,5.75C18.4,4.37 17.28,3.25 15.9,3.25C15.37,3.25 14.88,3.41 14.5,3.69C14.5,3.63 14.5,3.56 14.5,3.5A2.5,2.5 0 0,0 12,1A2.5,2.5 0 0,0 9.5,3.5C9.5,3.56 9.5,3.63 9.5,3.69C9.12,3.41 8.63,3.25 8.1,3.25A2.5,2.5 0 0,0 5.6,5.75C5.6,6.74 6.19,7.6 7.03,8C6.19,8.4 5.6,9.25 5.6,10.25M12,22A9,9 0 0,0 21,13C16,13 12,17 12,22Z" /></g><g id="folder"><path d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" /></g><g id="folder-account"><path d="M19,17H11V16C11,14.67 13.67,14 15,14C16.33,14 19,14.67 19,16M15,9A2,2 0 0,1 17,11A2,2 0 0,1 15,13A2,2 0 0,1 13,11C13,9.89 13.9,9 15,9M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-download"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19.25,13H16V9H14V13H10.75L15,17.25" /></g><g id="folder-google-drive"><path d="M13.75,9H16.14L19,14H16.05L13.5,9.46M18.3,17H12.75L14.15,14.5H19.27L19.53,14.96M11.5,17L10.4,14.86L13.24,9.9L14.74,12.56L12.25,17M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-image"><path d="M5,17L9.5,11L13,15.5L15.5,12.5L19,17M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6Z" /></g><g id="folder-lock"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18V12A3,3 0 0,0 15,9A3,3 0 0,0 12,12V13H11V17H19M15,11A1,1 0 0,1 16,12V13H14V12A1,1 0 0,1 15,11Z" /></g><g id="folder-lock-open"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H20M19,17V13H18L16,13H14V11A1,1 0 0,1 15,10A1,1 0 0,1 16,11H18A3,3 0 0,0 15,8A3,3 0 0,0 12,11V13H11V17H19Z" /></g><g id="folder-move"><path d="M9,18V15H5V11H9V8L14,13M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-multiple"><path d="M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z" /></g><g id="folder-multiple-image"><path d="M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z" /></g><g id="folder-multiple-outline"><path d="M22,4A2,2 0 0,1 24,6V16A2,2 0 0,1 22,18H6A2,2 0 0,1 4,16V4A2,2 0 0,1 6,2H12L14,4H22M2,6V20H20V22H2A2,2 0 0,1 0,20V11H0V6H2M6,6V16H22V6H6Z" /></g><g id="folder-outline"><path d="M20,18H4V8H20M20,6H12L10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6Z" /></g><g id="folder-plus"><path d="M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M15,9V12H12V14H15V17H17V14H20V12H17V9H15Z" /></g><g id="folder-remove"><path d="M10,4L12,6H20A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10M12.46,10.88L14.59,13L12.46,15.12L13.88,16.54L16,14.41L18.12,16.54L19.54,15.12L17.41,13L19.54,10.88L18.12,9.46L16,11.59L13.88,9.46L12.46,10.88Z" /></g><g id="folder-star"><path d="M20,6H12L10,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8A2,2 0 0,0 20,6M17.94,17L15,15.28L12.06,17L12.84,13.67L10.25,11.43L13.66,11.14L15,8L16.34,11.14L19.75,11.43L17.16,13.67L17.94,17Z" /></g><g id="folder-upload"><path d="M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75" /></g><g id="food"><path d="M15.5,21L14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.5,21H15.5M5,11H10A3,3 0 0,1 13,14H2A3,3 0 0,1 5,11M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13M3,15H8L9.5,16.5L11,15H12A1,1 0 0,1 13,16A1,1 0 0,1 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15Z" /></g><g id="food-apple"><path d="M20,10C22,13 17,22 15,22C13,22 13,21 12,21C11,21 11,22 9,22C7,22 2,13 4,10C6,7 9,7 11,8V5C5.38,8.07 4.11,3.78 4.11,3.78C4.11,3.78 6.77,0.19 11,5V3H13V8C15,7 18,7 20,10Z" /></g><g id="food-fork-drink"><path d="M3,3A1,1 0 0,0 2,4V8L2,9.5C2,11.19 3.03,12.63 4.5,13.22V19.5A1.5,1.5 0 0,0 6,21A1.5,1.5 0 0,0 7.5,19.5V13.22C8.97,12.63 10,11.19 10,9.5V8L10,4A1,1 0 0,0 9,3A1,1 0 0,0 8,4V8A0.5,0.5 0 0,1 7.5,8.5A0.5,0.5 0 0,1 7,8V4A1,1 0 0,0 6,3A1,1 0 0,0 5,4V8A0.5,0.5 0 0,1 4.5,8.5A0.5,0.5 0 0,1 4,8V4A1,1 0 0,0 3,3M19.88,3C19.75,3 19.62,3.09 19.5,3.16L16,5.25V9H12V11H13L14,21H20L21,11H22V9H18V6.34L20.5,4.84C21,4.56 21.13,4 20.84,3.5C20.63,3.14 20.26,2.95 19.88,3Z" /></g><g id="food-off"><path d="M2,5.27L3.28,4L21,21.72L19.73,23L17.73,21H15.5L15.21,18.5L12.97,16.24C12.86,16.68 12.47,17 12,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15H8L9.5,16.5L11,15H11.73L10.73,14H2A3,3 0 0,1 5,11H7.73L2,5.27M14,8H16.23L15.1,3.46L16.84,3L18.09,8H22L20.74,18.92L14.54,12.72L14,8M13,18A3,3 0 0,1 10,21H5A3,3 0 0,1 2,18H13Z" /></g><g id="food-variant"><path d="M22,18A4,4 0 0,1 18,22H15A4,4 0 0,1 11,18V16H17.79L20.55,11.23L22.11,12.13L19.87,16H22V18M9,22H2C2,19 2,16 2.33,12.83C2.6,10.3 3.08,7.66 3.6,5H3V3H4L7,3H8V5H7.4C7.92,7.66 8.4,10.3 8.67,12.83C9,16 9,19 9,22Z" /></g><g id="football"><path d="M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C15.46,3.67 17.5,3.83 18.6,4C19.71,4.15 19.87,4.31 20.03,5.41C20.18,6.5 20.33,8.55 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C8.55,20.33 6.5,20.18 5.41,20.03C4.31,19.87 4.15,19.71 4,18.6C3.83,17.5 3.67,15.46 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M7.3,15.79L8.21,16.7L9.42,15.5L10.63,16.7L11.54,15.79L10.34,14.58L12,12.91L13.21,14.12L14.12,13.21L12.91,12L14.58,10.34L15.79,11.54L16.7,10.63L15.5,9.42L16.7,8.21L15.79,7.3L14.58,8.5L13.37,7.3L12.46,8.21L13.66,9.42L12,11.09L10.79,9.88L9.88,10.79L11.09,12L9.42,13.66L8.21,12.46L7.3,13.37L8.5,14.58L7.3,15.79Z" /></g><g id="football-australian"><path d="M7.5,7.5C9.17,5.87 11.29,4.69 13.37,4.18C18,3 21,6 19.82,10.63C19.31,12.71 18.13,14.83 16.5,16.5C14.83,18.13 12.71,19.31 10.63,19.82C6,21 3,18 4.18,13.37C4.69,11.29 5.87,9.17 7.5,7.5M10.62,11.26L10.26,11.62L12.38,13.74L12.74,13.38L10.62,11.26M11.62,10.26L11.26,10.62L13.38,12.74L13.74,12.38L11.62,10.26M9.62,12.26L9.26,12.62L11.38,14.74L11.74,14.38L9.62,12.26M12.63,9.28L12.28,9.63L14.4,11.75L14.75,11.4L12.63,9.28M8.63,13.28L8.28,13.63L10.4,15.75L10.75,15.4L8.63,13.28M13.63,8.28L13.28,8.63L15.4,10.75L15.75,10.4L13.63,8.28Z" /></g><g id="football-helmet"><path d="M13.5,12A1.5,1.5 0 0,0 12,13.5A1.5,1.5 0 0,0 13.5,15A1.5,1.5 0 0,0 15,13.5A1.5,1.5 0 0,0 13.5,12M13.5,3C18.19,3 22,6.58 22,11C22,12.62 22,14 21.09,16C17,16 16,20 12.5,20C10.32,20 9.27,18.28 9.05,16H9L8.24,16L6.96,20.3C6.81,20.79 6.33,21.08 5.84,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19V16A1,1 0 0,1 2,15A1,1 0 0,1 3,14H6.75L7.23,12.39C6.72,12.14 6.13,12 5.5,12H5.07L5,11C5,6.58 8.81,3 13.5,3M5,16V19H5.26L6.15,16H5Z" /></g><g id="format-align-center"><path d="M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z" /></g><g id="format-align-justify"><path d="M3,3H21V5H3V3M3,7H21V9H3V7M3,11H21V13H3V11M3,15H21V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-align-left"><path d="M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-align-right"><path d="M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z" /></g><g id="format-annotation-plus"><path d="M8.5,7H10.5L16,21H13.6L12.5,18H6.3L5.2,21H3L8.5,7M7.1,16H11.9L9.5,9.7L7.1,16M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z" /></g><g id="format-bold"><path d="M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z" /></g><g id="format-clear"><path d="M6,5V5.18L8.82,8H11.22L10.5,9.68L12.6,11.78L14.21,8H20V5H6M3.27,5L2,6.27L8.97,13.24L6.5,19H9.5L11.07,15.34L16.73,21L18,19.73L3.55,5.27L3.27,5Z" /></g><g id="format-color-fill"><path d="M19,11.5C19,11.5 17,13.67 17,15A2,2 0 0,0 19,17A2,2 0 0,0 21,15C21,13.67 19,11.5 19,11.5M5.21,10L10,5.21L14.79,10M16.56,8.94L7.62,0L6.21,1.41L8.59,3.79L3.44,8.94C2.85,9.5 2.85,10.47 3.44,11.06L8.94,16.56C9.23,16.85 9.62,17 10,17C10.38,17 10.77,16.85 11.06,16.56L16.56,11.06C17.15,10.47 17.15,9.5 16.56,8.94Z" /></g><g id="format-color-text"><path d="M9.62,12L12,5.67L14.37,12M11,3L5.5,17H7.75L8.87,14H15.12L16.25,17H18.5L13,3H11Z" /></g><g id="format-float-center"><path d="M9,7H15V13H9V7M3,3H21V5H3V3M3,15H21V17H3V15M3,19H17V21H3V19Z" /></g><g id="format-float-left"><path d="M3,7H9V13H3V7M3,3H21V5H3V3M21,7V9H11V7H21M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-float-none"><path d="M3,7H9V13H3V7M3,3H21V5H3V3M21,11V13H11V11H21M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-float-right"><path d="M15,7H21V13H15V7M3,3H21V5H3V3M13,7V9H3V7H13M9,11V13H3V11H9M3,15H17V17H3V15M3,19H21V21H3V19Z" /></g><g id="format-header-1"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M14,18V16H16V6.31L13.5,7.75V5.44L16,4H18V16H20V18H14Z" /></g><g id="format-header-2"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M21,18H15A2,2 0 0,1 13,16C13,15.47 13.2,15 13.54,14.64L18.41,9.41C18.78,9.05 19,8.55 19,8A2,2 0 0,0 17,6A2,2 0 0,0 15,8H13A4,4 0 0,1 17,4A4,4 0 0,1 21,8C21,9.1 20.55,10.1 19.83,10.83L15,16H21V18Z" /></g><g id="format-header-3"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V15H15V16H19V12H15V10H19V6H15V7H13V6A2,2 0 0,1 15,4Z" /></g><g id="format-header-4"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M18,18V13H13V11L18,4H20V11H21V13H20V18H18M18,11V7.42L15.45,11H18Z" /></g><g id="format-header-5"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H20V6H15V10H17A4,4 0 0,1 21,14A4,4 0 0,1 17,18H15A2,2 0 0,1 13,16V15H15V16H17A2,2 0 0,0 19,14A2,2 0 0,0 17,12H15A2,2 0 0,1 13,10V6A2,2 0 0,1 15,4Z" /></g><g id="format-header-6"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M15,4H19A2,2 0 0,1 21,6V7H19V6H15V10H19A2,2 0 0,1 21,12V16A2,2 0 0,1 19,18H15A2,2 0 0,1 13,16V6A2,2 0 0,1 15,4M15,12V16H19V12H15Z" /></g><g id="format-header-decrease"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M20.42,7.41L16.83,11L20.42,14.59L19,16L14,11L19,6L20.42,7.41Z" /></g><g id="format-header-equal"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14,10V8H21V10H14M14,12H21V14H14V12Z" /></g><g id="format-header-increase"><path d="M4,4H6V10H10V4H12V18H10V12H6V18H4V4M14.59,7.41L18.17,11L14.59,14.59L16,16L21,11L16,6L14.59,7.41Z" /></g><g id="format-header-pound"><path d="M3,4H5V10H9V4H11V18H9V12H5V18H3V4M13,8H15.31L15.63,5H17.63L17.31,8H19.31L19.63,5H21.63L21.31,8H23V10H21.1L20.9,12H23V14H20.69L20.37,17H18.37L18.69,14H16.69L16.37,17H14.37L14.69,14H13V12H14.9L15.1,10H13V8M17.1,10L16.9,12H18.9L19.1,10H17.1Z" /></g><g id="format-horizontal-align-center"><path d="M19,16V13H23V11H19V8L15,12L19,16M5,8V11H1V13H5V16L9,12L5,8M11,20H13V4H11V20Z" /></g><g id="format-horizontal-align-left"><path d="M11,16V13H21V11H11V8L7,12L11,16M3,20H5V4H3V20Z" /></g><g id="format-horizontal-align-right"><path d="M13,8V11H3V13H13V16L17,12L13,8M19,20H21V4H19V20Z" /></g><g id="format-indent-decrease"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M3,21H21V19H3M3,12L7,16V8M11,17H21V15H11V17Z" /></g><g id="format-indent-increase"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M11,17H21V15H11M3,8V16L7,12M3,21H21V19H3V21Z" /></g><g id="format-italic"><path d="M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z" /></g><g id="format-line-spacing"><path d="M10,13H22V11H10M10,19H22V17H10M10,7H22V5H10M6,7H8.5L5,3.5L1.5,7H4V17H1.5L5,20.5L8.5,17H6V7Z" /></g><g id="format-line-style"><path d="M3,16H8V14H3V16M9.5,16H14.5V14H9.5V16M16,16H21V14H16V16M3,20H5V18H3V20M7,20H9V18H7V20M11,20H13V18H11V20M15,20H17V18H15V20M19,20H21V18H19V20M3,12H11V10H3V12M13,12H21V10H13V12M3,4V8H21V4H3Z" /></g><g id="format-line-weight"><path d="M3,17H21V15H3V17M3,20H21V19H3V20M3,13H21V10H3V13M3,4V8H21V4H3Z" /></g><g id="format-list-bulleted"><path d="M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z" /></g><g id="format-list-bulleted-type"><path d="M5,9.5L7.5,14H2.5L5,9.5M3,4H7V8H3V4M5,20A2,2 0 0,0 7,18A2,2 0 0,0 5,16A2,2 0 0,0 3,18A2,2 0 0,0 5,20M9,5V7H21V5H9M9,19H21V17H9V19M9,13H21V11H9V13Z" /></g><g id="format-list-numbers"><path d="M7,13H21V11H7M7,19H21V17H7M7,7H21V5H7M2,11H3.8L2,13.1V14H5V13H3.2L5,10.9V10H2M3,8H4V4H2V5H3M2,17H4V17.5H3V18.5H4V19H2V20H5V16H2V17Z" /></g><g id="format-page-break"><path d="M7,11H9V13H7V11M11,11H13V13H11V11M19,17H15V11.17L21,17.17V22H3V13H5V20H19V17M3,2H21V11H19V4H5V11H3V2Z" /></g><g id="format-paint"><path d="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z" /></g><g id="format-paragraph"><path d="M13,4A4,4 0 0,1 17,8A4,4 0 0,1 13,12H11V18H9V4H13M13,10A2,2 0 0,0 15,8A2,2 0 0,0 13,6H11V10H13Z" /></g><g id="format-pilcrow"><path d="M10,11A4,4 0 0,1 6,7A4,4 0 0,1 10,3H18V5H16V21H14V5H12V21H10V11Z" /></g><g id="format-quote"><path d="M14,17H17L19,13V7H13V13H16M6,17H9L11,13V7H5V13H8L6,17Z" /></g><g id="format-rotate-90"><path d="M7.34,6.41L0.86,12.9L7.35,19.38L13.84,12.9L7.34,6.41M3.69,12.9L7.35,9.24L11,12.9L7.34,16.56L3.69,12.9M19.36,6.64C17.61,4.88 15.3,4 13,4V0.76L8.76,5L13,9.24V6C14.79,6 16.58,6.68 17.95,8.05C20.68,10.78 20.68,15.22 17.95,17.95C16.58,19.32 14.79,20 13,20C12.03,20 11.06,19.79 10.16,19.39L8.67,20.88C10,21.62 11.5,22 13,22C15.3,22 17.61,21.12 19.36,19.36C22.88,15.85 22.88,10.15 19.36,6.64Z" /></g><g id="format-section"><path d="M15.67,4.42C14.7,3.84 13.58,3.54 12.45,3.56C10.87,3.56 9.66,4.34 9.66,5.56C9.66,6.96 11,7.47 13,8.14C15.5,8.95 17.4,9.97 17.4,12.38C17.36,13.69 16.69,14.89 15.6,15.61C16.25,16.22 16.61,17.08 16.6,17.97C16.6,20.79 14,21.97 11.5,21.97C10.04,22.03 8.59,21.64 7.35,20.87L8,19.34C9.04,20.05 10.27,20.43 11.53,20.44C13.25,20.44 14.53,19.66 14.53,18.24C14.53,17 13.75,16.31 11.25,15.45C8.5,14.5 6.6,13.5 6.6,11.21C6.67,9.89 7.43,8.69 8.6,8.07C7.97,7.5 7.61,6.67 7.6,5.81C7.6,3.45 9.77,2 12.53,2C13.82,2 15.09,2.29 16.23,2.89L15.67,4.42M11.35,13.42C12.41,13.75 13.44,14.18 14.41,14.71C15.06,14.22 15.43,13.45 15.41,12.64C15.41,11.64 14.77,10.76 13,10.14C11.89,9.77 10.78,9.31 9.72,8.77C8.97,9.22 8.5,10.03 8.5,10.91C8.5,11.88 9.23,12.68 11.35,13.42Z" /></g><g id="format-size"><path d="M3,12H6V19H9V12H12V9H3M9,4V7H14V19H17V7H22V4H9Z" /></g><g id="format-strikethrough"><path d="M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z" /></g><g id="format-strikethrough-variant"><path d="M23,12V14H18.61C19.61,16.14 19.56,22 12.38,22C4.05,22.05 4.37,15.5 4.37,15.5L8.34,15.55C8.37,18.92 11.5,18.92 12.12,18.88C12.76,18.83 15.15,18.84 15.34,16.5C15.42,15.41 14.32,14.58 13.12,14H1V12H23M19.41,7.89L15.43,7.86C15.43,7.86 15.6,5.09 12.15,5.08C8.7,5.06 9,7.28 9,7.56C9.04,7.84 9.34,9.22 12,9.88H5.71C5.71,9.88 2.22,3.15 10.74,2C19.45,0.8 19.43,7.91 19.41,7.89Z" /></g><g id="format-subscript"><path d="M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,21.03H16.97V20.03L17.86,19.23C18.62,18.58 19.18,18.04 19.56,17.6C19.93,17.16 20.12,16.75 20.13,16.36C20.14,16.08 20.05,15.85 19.86,15.66C19.68,15.5 19.39,15.38 19,15.38C18.69,15.38 18.42,15.44 18.16,15.56L17.5,15.94L17.05,14.77C17.32,14.56 17.64,14.38 18.03,14.24C18.42,14.1 18.85,14 19.32,14C20.1,14.04 20.7,14.25 21.1,14.66C21.5,15.07 21.72,15.59 21.72,16.23C21.71,16.79 21.53,17.31 21.18,17.78C20.84,18.25 20.42,18.7 19.91,19.14L19.27,19.66V19.68H21.85V21.03Z" /></g><g id="format-superscript"><path d="M16,7.41L11.41,12L16,16.59L14.59,18L10,13.41L5.41,18L4,16.59L8.59,12L4,7.41L5.41,6L10,10.59L14.59,6L16,7.41M21.85,9H16.97V8L17.86,7.18C18.62,6.54 19.18,6 19.56,5.55C19.93,5.11 20.12,4.7 20.13,4.32C20.14,4.04 20.05,3.8 19.86,3.62C19.68,3.43 19.39,3.34 19,3.33C18.69,3.34 18.42,3.4 18.16,3.5L17.5,3.89L17.05,2.72C17.32,2.5 17.64,2.33 18.03,2.19C18.42,2.05 18.85,2 19.32,2C20.1,2 20.7,2.2 21.1,2.61C21.5,3 21.72,3.54 21.72,4.18C21.71,4.74 21.53,5.26 21.18,5.73C20.84,6.21 20.42,6.66 19.91,7.09L19.27,7.61V7.63H21.85V9Z" /></g><g id="format-text"><path d="M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z" /></g><g id="format-textdirection-l-to-r"><path d="M21,18L17,14V17H5V19H17V22M9,10V15H11V4H13V15H15V4H17V2H9A4,4 0 0,0 5,6A4,4 0 0,0 9,10Z" /></g><g id="format-textdirection-r-to-l"><path d="M8,17V14L4,18L8,22V19H20V17M10,10V15H12V4H14V15H16V4H18V2H10A4,4 0 0,0 6,6A4,4 0 0,0 10,10Z" /></g><g id="format-title"><path d="M5,4V7H10.5V19H13.5V7H19V4H5Z" /></g><g id="format-underline"><path d="M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z" /></g><g id="format-vertical-align-bottom"><path d="M16,13H13V3H11V13H8L12,17L16,13M4,19V21H20V19H4Z" /></g><g id="format-vertical-align-center"><path d="M8,19H11V23H13V19H16L12,15L8,19M16,5H13V1H11V5H8L12,9L16,5M4,11V13H20V11H4Z" /></g><g id="format-vertical-align-top"><path d="M8,11H11V21H13V11H16L12,7L8,11M4,3V5H20V3H4Z" /></g><g id="format-wrap-inline"><path d="M8,7L13,17H3L8,7M3,3H21V5H3V3M21,15V17H14V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-square"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H6V9H3V7M21,7V9H18V7H21M3,11H6V13H3V11M21,11V13H18V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-tight"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,7H9V9H3V7M21,7V9H15V7H21M3,11H7V13H3V11M21,11V13H17V11H21M3,15H6V17H3V15M21,15V17H18V15H21M3,19H21V21H3V19Z" /></g><g id="format-wrap-top-bottom"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,19H21V21H3V19Z" /></g><g id="forum"><path d="M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z" /></g><g id="forward"><path d="M12,8V4L20,12L12,20V16H4V8H12Z" /></g><g id="foursquare"><path d="M17,5L16.57,7.5C16.5,7.73 16.2,8 15.91,8C15.61,8 12,8 12,8C11.53,8 10.95,8.32 10.95,8.79V9.2C10.95,9.67 11.53,10 12,10C12,10 14.95,10 15.28,10C15.61,10 15.93,10.36 15.86,10.71C15.79,11.07 14.94,13.28 14.9,13.5C14.86,13.67 14.64,14 14.25,14C13.92,14 11.37,14 11.37,14C10.85,14 10.69,14.07 10.34,14.5C10,14.94 7.27,18.1 7.27,18.1C7.24,18.13 7,18.04 7,18V5C7,4.7 7.61,4 8,4C8,4 16.17,4 16.5,4C16.82,4 17.08,4.61 17,5M17,14.45C17.11,13.97 18.78,6.72 19.22,4.55M17.58,2C17.58,2 8.38,2 6.91,2C5.43,2 5,3.11 5,3.8C5,4.5 5,20.76 5,20.76C5,21.54 5.42,21.84 5.66,21.93C5.9,22.03 6.55,22.11 6.94,21.66C6.94,21.66 11.65,16.22 11.74,16.13C11.87,16 11.87,16 12,16C12.26,16 14.2,16 15.26,16C16.63,16 16.85,15 17,14.45C17.11,13.97 18.78,6.72 19.22,4.55C19.56,2.89 19.14,2 17.58,2Z" /></g><g id="fridge"><path d="M9,21V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9M7,4V9H17V4H7M7,19H17V11H7V19M8,12H10V15H8V12M8,6H10V8H8V6Z" /></g><g id="fridge-filled"><path d="M7,2H17A2,2 0 0,1 19,4V9H5V4A2,2 0 0,1 7,2M19,19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V10H19V19M8,5V7H10V5H8M8,12V15H10V12H8Z" /></g><g id="fridge-filled-bottom"><path d="M8,8V6H10V8H8M7,2H17A2,2 0 0,1 19,4V19A2,2 0 0,1 17,21V22H15V21H9V22H7V21A2,2 0 0,1 5,19V4A2,2 0 0,1 7,2M7,4V9H17V4H7M8,12V15H10V12H8Z" /></g><g id="fridge-filled-top"><path d="M7,2A2,2 0 0,0 5,4V19A2,2 0 0,0 7,21V22H9V21H15V22H17V21A2,2 0 0,0 19,19V4A2,2 0 0,0 17,2H7M8,6H10V8H8V6M7,11H17V19H7V11M8,12V15H10V12H8Z" /></g><g id="fullscreen"><path d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z" /></g><g id="fullscreen-exit"><path d="M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z" /></g><g id="function"><path d="M15.6,5.29C14.5,5.19 13.53,6 13.43,7.11L13.18,10H16V12H13L12.56,17.07C12.37,19.27 10.43,20.9 8.23,20.7C6.92,20.59 5.82,19.86 5.17,18.83L6.67,17.33C6.91,18.07 7.57,18.64 8.4,18.71C9.5,18.81 10.47,18 10.57,16.89L11,12H8V10H11.17L11.44,6.93C11.63,4.73 13.57,3.1 15.77,3.3C17.08,3.41 18.18,4.14 18.83,5.17L17.33,6.67C17.09,5.93 16.43,5.36 15.6,5.29Z" /></g><g id="gamepad"><path d="M16.5,9L13.5,12L16.5,15H22V9M9,16.5V22H15V16.5L12,13.5M7.5,9H2V15H7.5L10.5,12M15,7.5V2H9V7.5L12,10.5L15,7.5Z" /></g><g id="gamepad-variant"><path d="M7,6H17A6,6 0 0,1 23,12A6,6 0 0,1 17,18C15.22,18 13.63,17.23 12.53,16H11.47C10.37,17.23 8.78,18 7,18A6,6 0 0,1 1,12A6,6 0 0,1 7,6M6,9V11H4V13H6V15H8V13H10V11H8V9H6M15.5,12A1.5,1.5 0 0,0 14,13.5A1.5,1.5 0 0,0 15.5,15A1.5,1.5 0 0,0 17,13.5A1.5,1.5 0 0,0 15.5,12M18.5,9A1.5,1.5 0 0,0 17,10.5A1.5,1.5 0 0,0 18.5,12A1.5,1.5 0 0,0 20,10.5A1.5,1.5 0 0,0 18.5,9Z" /></g><g id="garage"><path d="M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12M8,15H16V17H8V15M16,18V20H8V18H16Z" /></g><g id="garage-open"><path d="M19,20H17V11H7V20H5V9L12,5L19,9V20M8,12H16V14H8V12Z" /></g><g id="gas-cylinder"><path d="M16,9V14L16,20A2,2 0 0,1 14,22H10A2,2 0 0,1 8,20V14L8,9C8,7.14 9.27,5.57 11,5.13V4H9V2H15V4H13V5.13C14.73,5.57 16,7.14 16,9Z" /></g><g id="gas-station"><path d="M18,10A1,1 0 0,1 17,9A1,1 0 0,1 18,8A1,1 0 0,1 19,9A1,1 0 0,1 18,10M12,10H6V5H12M19.77,7.23L19.78,7.22L16.06,3.5L15,4.56L17.11,6.67C16.17,7 15.5,7.93 15.5,9A2.5,2.5 0 0,0 18,11.5C18.36,11.5 18.69,11.42 19,11.29V18.5A1,1 0 0,1 18,19.5A1,1 0 0,1 17,18.5V14C17,12.89 16.1,12 15,12H14V5C14,3.89 13.1,3 12,3H6C4.89,3 4,3.89 4,5V21H14V13.5H15.5V18.5A2.5,2.5 0 0,0 18,21A2.5,2.5 0 0,0 20.5,18.5V9C20.5,8.31 20.22,7.68 19.77,7.23Z" /></g><g id="gate"><path d="M9,5V10H7V6H5V10H3V8H1V20H3V18H5V20H7V18H9V20H11V18H13V20H15V18H17V20H19V18H21V20H23V8H21V10H19V6H17V10H15V5H13V10H11V5H9M3,12H5V16H3V12M7,12H9V16H7V12M11,12H13V16H11V12M15,12H17V16H15V12M19,12H21V16H19V12Z" /></g><g id="gauge"><path d="M17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.2,16.7 10,16 12,16C14,16 15.9,16.7 17.3,18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M14.4,6.1C14.9,6.3 15.1,6.9 15,7.4L13.6,10.8C13.8,11.1 14,11.5 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12C10,11 10.7,10.1 11.7,10L13.1,6.7C13.3,6.1 13.9,5.9 14.4,6.1Z" /></g><g id="gavel"><path d="M2.3,20.28L11.9,10.68L10.5,9.26L9.78,9.97C9.39,10.36 8.76,10.36 8.37,9.97L7.66,9.26C7.27,8.87 7.27,8.24 7.66,7.85L13.32,2.19C13.71,1.8 14.34,1.8 14.73,2.19L15.44,2.9C15.83,3.29 15.83,3.92 15.44,4.31L14.73,5L16.15,6.43C16.54,6.04 17.17,6.04 17.56,6.43C17.95,6.82 17.95,7.46 17.56,7.85L18.97,9.26L19.68,8.55C20.07,8.16 20.71,8.16 21.1,8.55L21.8,9.26C22.19,9.65 22.19,10.29 21.8,10.68L16.15,16.33C15.76,16.72 15.12,16.72 14.73,16.33L14.03,15.63C13.63,15.24 13.63,14.6 14.03,14.21L14.73,13.5L13.32,12.09L3.71,21.7C3.32,22.09 2.69,22.09 2.3,21.7C1.91,21.31 1.91,20.67 2.3,20.28M20,19A2,2 0 0,1 22,21V22H12V21A2,2 0 0,1 14,19H20Z" /></g><g id="gender-female"><path d="M12,4A6,6 0 0,1 18,10C18,12.97 15.84,15.44 13,15.92V18H15V20H13V22H11V20H9V18H11V15.92C8.16,15.44 6,12.97 6,10A6,6 0 0,1 12,4M12,6A4,4 0 0,0 8,10A4,4 0 0,0 12,14A4,4 0 0,0 16,10A4,4 0 0,0 12,6Z" /></g><g id="gender-male"><path d="M9,9C10.29,9 11.5,9.41 12.47,10.11L17.58,5H13V3H21V11H19V6.41L13.89,11.5C14.59,12.5 15,13.7 15,15A6,6 0 0,1 9,21A6,6 0 0,1 3,15A6,6 0 0,1 9,9M9,11A4,4 0 0,0 5,15A4,4 0 0,0 9,19A4,4 0 0,0 13,15A4,4 0 0,0 9,11Z" /></g><g id="gender-male-female"><path d="M17.58,4H14V2H21V9H19V5.41L15.17,9.24C15.69,10.03 16,11 16,12C16,14.42 14.28,16.44 12,16.9V19H14V21H12V23H10V21H8V19H10V16.9C7.72,16.44 6,14.42 6,12A5,5 0 0,1 11,7C12,7 12.96,7.3 13.75,7.83L17.58,4M11,9A3,3 0 0,0 8,12A3,3 0 0,0 11,15A3,3 0 0,0 14,12A3,3 0 0,0 11,9Z" /></g><g id="gender-transgender"><path d="M19.58,3H15V1H23V9H21V4.41L16.17,9.24C16.69,10.03 17,11 17,12C17,14.42 15.28,16.44 13,16.9V19H15V21H13V23H11V21H9V19H11V16.9C8.72,16.44 7,14.42 7,12C7,11 7.3,10.04 7.82,9.26L6.64,8.07L5.24,9.46L3.83,8.04L5.23,6.65L3,4.42V8H1V1H8V3H4.41L6.64,5.24L8.08,3.81L9.5,5.23L8.06,6.66L9.23,7.84C10,7.31 11,7 12,7C13,7 13.96,7.3 14.75,7.83L19.58,3M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="ghost"><path d="M12,2A9,9 0 0,0 3,11V22L6,19L9,22L12,19L15,22L18,19L21,22V11A9,9 0 0,0 12,2M9,8A2,2 0 0,1 11,10A2,2 0 0,1 9,12A2,2 0 0,1 7,10A2,2 0 0,1 9,8M15,8A2,2 0 0,1 17,10A2,2 0 0,1 15,12A2,2 0 0,1 13,10A2,2 0 0,1 15,8Z" /></g><g id="gift"><path d="M22,12V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V12A1,1 0 0,1 1,11V8A2,2 0 0,1 3,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H21A2,2 0 0,1 23,8V11A1,1 0 0,1 22,12M4,20H11V12H4V20M20,20V12H13V20H20M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M3,8V10H11V8H3M13,8V10H21V8H13Z" /></g><g id="git"><path d="M2.6,10.59L8.38,4.8L10.07,6.5C9.83,7.35 10.22,8.28 11,8.73V14.27C10.4,14.61 10,15.26 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.26 13.6,14.61 13,14.27V9.41L15.07,11.5C15,11.65 15,11.82 15,12A2,2 0 0,0 17,14A2,2 0 0,0 19,12A2,2 0 0,0 17,10C16.82,10 16.65,10 16.5,10.07L13.93,7.5C14.19,6.57 13.71,5.55 12.78,5.16C12.35,5 11.9,4.96 11.5,5.07L9.8,3.38L10.59,2.6C11.37,1.81 12.63,1.81 13.41,2.6L21.4,10.59C22.19,11.37 22.19,12.63 21.4,13.41L13.41,21.4C12.63,22.19 11.37,22.19 10.59,21.4L2.6,13.41C1.81,12.63 1.81,11.37 2.6,10.59Z" /></g><g id="github-box"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H14.85C14.5,21.92 14.5,21.24 14.5,21V18.26C14.5,17.33 14.17,16.72 13.81,16.41C16.04,16.16 18.38,15.32 18.38,11.5C18.38,10.39 18,9.5 17.35,8.79C17.45,8.54 17.8,7.5 17.25,6.15C17.25,6.15 16.41,5.88 14.5,7.17C13.71,6.95 12.85,6.84 12,6.84C11.15,6.84 10.29,6.95 9.5,7.17C7.59,5.88 6.75,6.15 6.75,6.15C6.2,7.5 6.55,8.54 6.65,8.79C6,9.5 5.62,10.39 5.62,11.5C5.62,15.31 7.95,16.17 10.17,16.42C9.89,16.67 9.63,17.11 9.54,17.76C8.97,18 7.5,18.45 6.63,16.93C6.63,16.93 6.1,15.97 5.1,15.9C5.1,15.9 4.12,15.88 5,16.5C5,16.5 5.68,16.81 6.14,17.97C6.14,17.97 6.73,19.91 9.5,19.31V21C9.5,21.24 9.5,21.92 9.14,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2Z" /></g><g id="github-circle"><path d="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z" /></g><g id="github-face"><path d="M20.38,8.53C20.54,8.13 21.06,6.54 20.21,4.39C20.21,4.39 18.9,4 15.91,6C14.66,5.67 13.33,5.62 12,5.62C10.68,5.62 9.34,5.67 8.09,6C5.1,3.97 3.79,4.39 3.79,4.39C2.94,6.54 3.46,8.13 3.63,8.53C2.61,9.62 2,11 2,12.72C2,19.16 6.16,20.61 12,20.61C17.79,20.61 22,19.16 22,12.72C22,11 21.39,9.62 20.38,8.53M12,19.38C7.88,19.38 4.53,19.19 4.53,15.19C4.53,14.24 5,13.34 5.8,12.61C7.14,11.38 9.43,12.03 12,12.03C14.59,12.03 16.85,11.38 18.2,12.61C19,13.34 19.5,14.23 19.5,15.19C19.5,19.18 16.13,19.38 12,19.38M8.86,13.12C8.04,13.12 7.36,14.12 7.36,15.34C7.36,16.57 8.04,17.58 8.86,17.58C9.69,17.58 10.36,16.58 10.36,15.34C10.36,14.11 9.69,13.12 8.86,13.12M15.14,13.12C14.31,13.12 13.64,14.11 13.64,15.34C13.64,16.58 14.31,17.58 15.14,17.58C15.96,17.58 16.64,16.58 16.64,15.34C16.64,14.11 16,13.12 15.14,13.12Z" /></g><g id="glass-flute"><path d="M8,2H16C15.67,5 15.33,8 14.75,9.83C14.17,11.67 13.33,12.33 12.92,14.08C12.5,15.83 12.5,18.67 13.08,20C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,20C11.5,18.67 11.5,15.83 11.08,14.08C10.67,12.33 9.83,11.67 9.25,9.83C8.67,8 8.33,5 8,2M10,4C10.07,5.03 10.15,6.07 10.24,7H13.76C13.85,6.07 13.93,5.03 14,4H10Z" /></g><g id="glass-mug"><path d="M10,4V7H18V4H10M8,2H20L21,2V3L20,4V20L21,21V22H20L8,22H7V21L8,20V18.6L4.2,16.83C3.5,16.5 3,15.82 3,15V8A2,2 0 0,1 5,6H8V4L7,3V2H8M5,15L8,16.39V8H5V15Z" /></g><g id="glass-stange"><path d="M8,2H16V22H8V2M10,4V7H14V4H10Z" /></g><g id="glass-tulip"><path d="M8,2H16C15.67,2.67 15.33,3.33 15.58,5C15.83,6.67 16.67,9.33 16.25,10.74C15.83,12.14 14.17,12.28 13.33,13.86C12.5,15.44 12.5,18.47 13.08,19.9C13.67,21.33 14.83,21.17 15.42,21.25C16,21.33 16,21.67 16,22H8C8,21.67 8,21.33 8.58,21.25C9.17,21.17 10.33,21.33 10.92,19.9C11.5,18.47 11.5,15.44 10.67,13.86C9.83,12.28 8.17,12.14 7.75,10.74C7.33,9.33 8.17,6.67 8.42,5C8.67,3.33 8.33,2.67 8,2M10,4C10,5.19 9.83,6.17 9.64,7H14.27C14.13,6.17 14,5.19 14,4H10Z" /></g><g id="glassdoor"><path d="M18,6H16V15C16,16 15.82,16.64 15,16.95L9.5,19V6C9.5,5.3 9.74,4.1 11,4.24L18,5V3.79L9,2.11C8.64,2.04 8.36,2 8,2C6.72,2 6,2.78 6,4V20.37C6,21.95 7.37,22.26 8,22L17,18.32C18,17.91 18,17 18,16V6Z" /></g><g id="glasses"><path d="M3,10C2.76,10 2.55,10.09 2.41,10.25C2.27,10.4 2.21,10.62 2.24,10.86L2.74,13.85C2.82,14.5 3.4,15 4,15H7C7.64,15 8.36,14.44 8.5,13.82L9.56,10.63C9.6,10.5 9.57,10.31 9.5,10.19C9.39,10.07 9.22,10 9,10H3M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17M15,10C14.78,10 14.61,10.07 14.5,10.19C14.42,10.31 14.4,10.5 14.45,10.7L15.46,13.75C15.64,14.44 16.36,15 17,15H20C20.59,15 21.18,14.5 21.25,13.89L21.76,10.82C21.79,10.62 21.73,10.4 21.59,10.25C21.45,10.09 21.24,10 21,10H15Z" /></g><g id="gmail"><path d="M20,18H18V9.25L12,13L6,9.25V18H4V6H5.2L12,10.25L18.8,6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z" /></g><g id="gnome"><path d="M18.42,2C14.26,2 13.5,7.93 15.82,7.93C18.16,7.93 22.58,2 18.42,2M12,2.73C11.92,2.73 11.85,2.73 11.78,2.74C9.44,3.04 10.26,7.12 11.5,7.19C12.72,7.27 14.04,2.73 12,2.73M7.93,4.34C7.81,4.34 7.67,4.37 7.53,4.43C5.65,5.21 7.24,8.41 8.3,8.2C9.27,8 9.39,4.3 7.93,4.34M4.93,6.85C4.77,6.84 4.59,6.9 4.41,7.03C2.9,8.07 4.91,10.58 5.8,10.19C6.57,9.85 6.08,6.89 4.93,6.85M13.29,8.77C10.1,8.8 6.03,10.42 5.32,13.59C4.53,17.11 8.56,22 12.76,22C14.83,22 17.21,20.13 17.66,17.77C18,15.97 13.65,16.69 13.81,17.88C14,19.31 12.76,20 11.55,19.1C7.69,16.16 17.93,14.7 17.25,10.69C17.03,9.39 15.34,8.76 13.29,8.77Z" /></g><g id="gondola"><path d="M18,10H13V7.59L22.12,6.07L21.88,4.59L16.41,5.5C16.46,5.35 16.5,5.18 16.5,5A1.5,1.5 0 0,0 15,3.5A1.5,1.5 0 0,0 13.5,5C13.5,5.35 13.63,5.68 13.84,5.93L13,6.07V5H11V6.41L10.41,6.5C10.46,6.35 10.5,6.18 10.5,6A1.5,1.5 0 0,0 9,4.5A1.5,1.5 0 0,0 7.5,6C7.5,6.36 7.63,6.68 7.83,6.93L1.88,7.93L2.12,9.41L11,7.93V10H6C4.89,10 4,10.9 4,12V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V12A2,2 0 0,0 18,10M6,12H8.25V16H6V12M9.75,16V12H14.25V16H9.75M18,16H15.75V12H18V16Z" /></g><g id="google"><path d="M21.35,11.1H12.18V13.83H18.69C18.36,17.64 15.19,19.27 12.19,19.27C8.36,19.27 5,16.25 5,12C5,7.9 8.2,4.73 12.2,4.73C15.29,4.73 17.1,6.7 17.1,6.7L19,4.72C19,4.72 16.56,2 12.1,2C6.42,2 2.03,6.8 2.03,12C2.03,17.05 6.16,22 12.25,22C17.6,22 21.5,18.33 21.5,12.91C21.5,11.76 21.35,11.1 21.35,11.1V11.1Z" /></g><g id="google-cardboard"><path d="M20.74,6H3.2C2.55,6 2,6.57 2,7.27V17.73C2,18.43 2.55,19 3.23,19H8C8.54,19 9,18.68 9.16,18.21L10.55,14.74C10.79,14.16 11.35,13.75 12,13.75C12.65,13.75 13.21,14.16 13.45,14.74L14.84,18.21C15.03,18.68 15.46,19 15.95,19H20.74C21.45,19 22,18.43 22,17.73V7.27C22,6.57 21.45,6 20.74,6M7.22,14.58C6,14.58 5,13.55 5,12.29C5,11 6,10 7.22,10C8.44,10 9.43,11 9.43,12.29C9.43,13.55 8.44,14.58 7.22,14.58M16.78,14.58C15.56,14.58 14.57,13.55 14.57,12.29C14.57,11.03 15.56,10 16.78,10C18,10 19,11.03 19,12.29C19,13.55 18,14.58 16.78,14.58Z" /></g><g id="google-chrome"><path d="M12,20L15.46,14H15.45C15.79,13.4 16,12.73 16,12C16,10.8 15.46,9.73 14.62,9H19.41C19.79,9.93 20,10.94 20,12A8,8 0 0,1 12,20M4,12C4,10.54 4.39,9.18 5.07,8L8.54,14H8.55C9.24,15.19 10.5,16 12,16C12.45,16 12.88,15.91 13.29,15.77L10.89,19.91C7,19.37 4,16.04 4,12M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12M12,4C14.96,4 17.54,5.61 18.92,8H12C10.06,8 8.45,9.38 8.08,11.21L5.7,7.08C7.16,5.21 9.44,4 12,4M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="google-circles"><path d="M16.66,15H17C18,15 19,14.8 19.87,14.46C19.17,18.73 15.47,22 11,22C6,22 2,17.97 2,13C2,8.53 5.27,4.83 9.54,4.13C9.2,5 9,6 9,7V7.34C6.68,8.16 5,10.38 5,13A6,6 0 0,0 11,19C13.62,19 15.84,17.32 16.66,15M17,10A3,3 0 0,0 20,7A3,3 0 0,0 17,4A3,3 0 0,0 14,7A3,3 0 0,0 17,10M17,1A6,6 0 0,1 23,7A6,6 0 0,1 17,13A6,6 0 0,1 11,7C11,3.68 13.69,1 17,1Z" /></g><g id="google-circles-communities"><path d="M15,12C13.89,12 13,12.89 13,14A2,2 0 0,0 15,16A2,2 0 0,0 17,14C17,12.89 16.1,12 15,12M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M14,9C14,7.89 13.1,7 12,7C10.89,7 10,7.89 10,9A2,2 0 0,0 12,11A2,2 0 0,0 14,9M9,12A2,2 0 0,0 7,14A2,2 0 0,0 9,16A2,2 0 0,0 11,14C11,12.89 10.1,12 9,12Z" /></g><g id="google-circles-extended"><path d="M18,19C16.89,19 16,18.1 16,17C16,15.89 16.89,15 18,15A2,2 0 0,1 20,17A2,2 0 0,1 18,19M18,13A4,4 0 0,0 14,17A4,4 0 0,0 18,21A4,4 0 0,0 22,17A4,4 0 0,0 18,13M12,11.1A1.9,1.9 0 0,0 10.1,13A1.9,1.9 0 0,0 12,14.9A1.9,1.9 0 0,0 13.9,13A1.9,1.9 0 0,0 12,11.1M6,19C4.89,19 4,18.1 4,17C4,15.89 4.89,15 6,15A2,2 0 0,1 8,17A2,2 0 0,1 6,19M6,13A4,4 0 0,0 2,17A4,4 0 0,0 6,21A4,4 0 0,0 10,17A4,4 0 0,0 6,13M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M12,10A4,4 0 0,0 16,6A4,4 0 0,0 12,2A4,4 0 0,0 8,6A4,4 0 0,0 12,10Z" /></g><g id="google-circles-group"><path d="M5,10A2,2 0 0,0 3,12C3,13.11 3.9,14 5,14C6.11,14 7,13.11 7,12A2,2 0 0,0 5,10M5,16A4,4 0 0,1 1,12A4,4 0 0,1 5,8A4,4 0 0,1 9,12A4,4 0 0,1 5,16M10.5,11H14V8L18,12L14,16V13H10.5V11M5,6C4.55,6 4.11,6.05 3.69,6.14C5.63,3.05 9.08,1 13,1C19.08,1 24,5.92 24,12C24,18.08 19.08,23 13,23C9.08,23 5.63,20.95 3.69,17.86C4.11,17.95 4.55,18 5,18C5.8,18 6.56,17.84 7.25,17.56C8.71,19.07 10.74,20 13,20A8,8 0 0,0 21,12A8,8 0 0,0 13,4C10.74,4 8.71,4.93 7.25,6.44C6.56,6.16 5.8,6 5,6Z" /></g><g id="google-controller"><path d="M7.97,16L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.21,7.81 5.14,6 7.5,6H16.5C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75A1.75,1.75 0 0,1 20.25,19.5C19.77,19.5 19.33,19.3 19,19L16.03,16H7.97M7,8V10H5V11H7V13H8V11H10V10H8V8H7M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></g><g id="google-controller-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H7.97L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.1,9.09 3.53,8.17 4.19,7.46L2,5.27M5,10V11H7V13H8V11.27L6.73,10H5M16.5,6C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75C22,18.41 21.64,19 21.1,19.28L7.82,6H16.5M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></g><g id="google-drive"><path d="M7.71,3.5L1.15,15L4.58,21L11.13,9.5M9.73,15L6.3,21H19.42L22.85,15M22.28,14L15.42,2H8.58L8.57,2L15.43,14H22.28Z" /></g><g id="google-earth"><path d="M12.4,7.56C9.6,4.91 7.3,5.65 6.31,6.1C7.06,5.38 7.94,4.8 8.92,4.4C11.7,4.3 14.83,4.84 16.56,7.31C16.56,7.31 19,11.5 19.86,9.65C20.08,10.4 20.2,11.18 20.2,12C20.2,12.3 20.18,12.59 20.15,12.88C18.12,12.65 15.33,10.32 12.4,7.56M19.1,16.1C18.16,16.47 17,17.1 15.14,17.1C13.26,17.1 11.61,16.35 9.56,15.7C7.7,15.11 7,14.2 5.72,14.2C5.06,14.2 4.73,14.86 4.55,15.41C4.07,14.37 3.8,13.22 3.8,12C3.8,11.19 3.92,10.42 4.14,9.68C5.4,8.1 7.33,7.12 10.09,9.26C10.09,9.26 16.32,13.92 19.88,14.23C19.7,14.89 19.43,15.5 19.1,16.1M12,20.2C10.88,20.2 9.81,19.97 8.83,19.56C8.21,18.08 8.22,16.92 9.95,17.5C9.95,17.5 13.87,19 18,17.58C16.5,19.19 14.37,20.2 12,20.2M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="google-glass"><path d="M13,11V13.5H18.87C18.26,17 15.5,19.5 12,19.5A7.5,7.5 0 0,1 4.5,12A7.5,7.5 0 0,1 12,4.5C14.09,4.5 15.9,5.39 17.16,6.84L18.93,5.06C17.24,3.18 14.83,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22C17.5,22 21.5,17.5 21.5,12V11H13Z" /></g><g id="google-keep"><path d="M4,2H20A2,2 0 0,1 22,4V17.33L17.33,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M17,17V20.25L20.25,17H17M10,19H14V18H15V13C16.21,12.09 17,10.64 17,9A5,5 0 0,0 12,4A5,5 0 0,0 7,9C7,10.64 7.79,12.09 9,13V18H10V19M14,17H10V16H14V17M14,15H10V14H14V15M12,5A4,4 0 0,1 16,9C16,10.5 15.2,11.77 14,12.46V13H10V12.46C8.8,11.77 8,10.5 8,9A4,4 0 0,1 12,5Z" /></g><g id="google-maps"><path d="M5,4A2,2 0 0,0 3,6V16.29L11.18,8.11C11.06,7.59 11,7.07 11,6.53C11,5.62 11.2,4.76 11.59,4H5M18,21A2,2 0 0,0 20,19V11.86C19.24,13 18.31,14.21 17.29,15.5L16.5,16.5L15.72,15.5C14.39,13.85 13.22,12.32 12.39,10.91C12.05,10.33 11.76,9.76 11.53,9.18L7.46,13.25L15.21,21H18M3,19A2,2 0 0,0 5,21H13.79L6.75,13.96L3,17.71V19M16.5,15C19.11,11.63 21,9.1 21,6.57C21,4.05 19,2 16.5,2C14,2 12,4.05 12,6.57C12,9.1 13.87,11.63 16.5,15M18.5,6.5A2,2 0 0,1 16.5,8.5A2,2 0 0,1 14.5,6.5A2,2 0 0,1 16.5,4.5A2,2 0 0,1 18.5,6.5Z" /></g><g id="google-nearby"><path d="M4.2,3C3.57,3 3.05,3.5 3,4.11C3,8.66 3,13.24 3,17.8C3,18.46 3.54,19 4.2,19C4.31,19 4.42,19 4.53,18.95C8.5,16.84 12.56,14.38 16.5,12.08C16.94,11.89 17.21,11.46 17.21,11C17.21,10.57 17,10.17 16.6,9.96C12.5,7.56 8.21,5.07 4.53,3.05C4.42,3 4.31,3 4.2,3M19.87,6C19.76,6 19.65,6 19.54,6.05C18.6,6.57 17.53,7.18 16.5,7.75C16.85,7.95 17.19,8.14 17.5,8.33C18.5,8.88 19.07,9.9 19.07,11V11C19.07,12.18 18.38,13.27 17.32,13.77C15.92,14.59 12.92,16.36 11.32,17.29C14.07,18.89 16.82,20.5 19.54,21.95C19.65,22 19.76,22 19.87,22C20.54,22 21.07,21.46 21.07,20.8C21.07,16.24 21.08,11.66 21.07,7.11C21,6.5 20.5,6 19.87,6Z" /></g><g id="google-pages"><path d="M19,3H13V8L17,7L16,11H21V5C21,3.89 20.1,3 19,3M17,17L13,16V21H19A2,2 0 0,0 21,19V13H16M8,13H3V19A2,2 0 0,0 5,21H11V16L7,17M3,5V11H8L7,7L11,8V3H5C3.89,3 3,3.89 3,5Z" /></g><g id="google-photos"><path d="M17,12V7L12,2V7H7L2,12H7V17L12,22V17H17L22,12H17M12.88,12.88L12,15.53L11.12,12.88L8.47,12L11.12,11.12L12,8.46L12.88,11.11L15.53,12L12.88,12.88Z" /></g><g id="google-physical-web"><path d="M12,1.5A9,9 0 0,1 21,10.5C21,13.11 19.89,15.47 18.11,17.11L17.05,16.05C18.55,14.68 19.5,12.7 19.5,10.5A7.5,7.5 0 0,0 12,3A7.5,7.5 0 0,0 4.5,10.5C4.5,12.7 5.45,14.68 6.95,16.05L5.89,17.11C4.11,15.47 3,13.11 3,10.5A9,9 0 0,1 12,1.5M12,4.5A6,6 0 0,1 18,10.5C18,12.28 17.22,13.89 16,15L14.92,13.92C15.89,13.1 16.5,11.87 16.5,10.5C16.5,8 14.5,6 12,6C9.5,6 7.5,8 7.5,10.5C7.5,11.87 8.11,13.1 9.08,13.92L8,15C6.78,13.89 6,12.28 6,10.5A6,6 0 0,1 12,4.5M8.11,17.65L11.29,14.46C11.68,14.07 12.32,14.07 12.71,14.46L15.89,17.65C16.28,18.04 16.28,18.67 15.89,19.06L12.71,22.24C12.32,22.63 11.68,22.63 11.29,22.24L8.11,19.06C7.72,18.67 7.72,18.04 8.11,17.65Z" /></g><g id="google-play"><path d="M3,20.5V3.5C3,2.91 3.34,2.39 3.84,2.15L13.69,12L3.84,21.85C3.34,21.6 3,21.09 3,20.5M16.81,15.12L6.05,21.34L14.54,12.85L16.81,15.12M20.16,10.81C20.5,11.08 20.75,11.5 20.75,12C20.75,12.5 20.53,12.9 20.18,13.18L17.89,14.5L15.39,12L17.89,9.5L20.16,10.81M6.05,2.66L16.81,8.88L14.54,11.15L6.05,2.66Z" /></g><g id="google-plus"><path d="M23,11H21V9H19V11H17V13H19V15H21V13H23M8,11V13.4H12C11.8,14.4 10.8,16.4 8,16.4C5.6,16.4 3.7,14.4 3.7,12C3.7,9.6 5.6,7.6 8,7.6C9.4,7.6 10.3,8.2 10.8,8.7L12.7,6.9C11.5,5.7 9.9,5 8,5C4.1,5 1,8.1 1,12C1,15.9 4.1,19 8,19C12,19 14.7,16.2 14.7,12.2C14.7,11.7 14.7,11.4 14.6,11H8Z" /></g><g id="google-plus-box"><path d="M20,2A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4C2,2.89 2.9,2 4,2H20M20,12H18V10H17V12H15V13H17V15H18V13H20V12M9,11.29V13H11.86C11.71,13.71 11,15.14 9,15.14C7.29,15.14 5.93,13.71 5.93,12C5.93,10.29 7.29,8.86 9,8.86C10,8.86 10.64,9.29 11,9.64L12.36,8.36C11.5,7.5 10.36,7 9,7C6.21,7 4,9.21 4,12C4,14.79 6.21,17 9,17C11.86,17 13.79,15 13.79,12.14C13.79,11.79 13.79,11.57 13.71,11.29H9Z" /></g><g id="google-translate"><path d="M3,1C1.89,1 1,1.89 1,3V17C1,18.11 1.89,19 3,19H15L9,1H3M12.34,5L13,7H21V21H12.38L13.03,23H21C22.11,23 23,22.11 23,21V7C23,5.89 22.11,5 21,5H12.34M7.06,5.91C8.16,5.91 9.09,6.31 9.78,7L8.66,8.03C8.37,7.74 7.87,7.41 7.06,7.41C5.67,7.41 4.56,8.55 4.56,9.94C4.56,11.33 5.67,12.5 7.06,12.5C8.68,12.5 9.26,11.33 9.38,10.75H7.06V9.38H10.88C10.93,9.61 10.94,9.77 10.94,10.06C10.94,12.38 9.38,14 7.06,14C4.81,14 3,12.19 3,9.94C3,7.68 4.81,5.91 7.06,5.91M16,10V11H14.34L14.66,12H18C17.73,12.61 17.63,13.17 16.81,14.13C16.41,13.66 16.09,13.25 16,13H15C15.12,13.43 15.62,14.1 16.22,14.78C16.09,14.91 15.91,15.08 15.75,15.22L16.03,16.06C16.28,15.84 16.53,15.61 16.78,15.38C17.8,16.45 18.88,17.44 18.88,17.44L19.44,16.84C19.44,16.84 18.37,15.79 17.41,14.75C18.04,14.05 18.6,13.2 19,12H20V11H17V10H16Z" /></g><g id="google-wallet"><path d="M9.89,11.08C9.76,9.91 9.39,8.77 8.77,7.77C8.5,7.29 8.46,6.7 8.63,6.25C8.71,6 8.83,5.8 9.03,5.59C9.24,5.38 9.46,5.26 9.67,5.18C9.88,5.09 10,5.06 10.31,5.06C10.66,5.06 11,5.17 11.28,5.35L11.72,5.76L11.83,5.92C12.94,7.76 13.53,9.86 13.53,12L13.5,12.79C13.38,14.68 12.8,16.5 11.82,18.13C11.5,18.67 10.92,19 10.29,19L9.78,18.91L9.37,18.73C8.86,18.43 8.57,17.91 8.5,17.37C8.5,17.05 8.54,16.72 8.69,16.41L8.77,16.28C9.54,15 9.95,13.53 9.95,12L9.89,11.08M20.38,7.88C20.68,9.22 20.84,10.62 20.84,12C20.84,13.43 20.68,14.82 20.38,16.16L20.11,17.21C19.78,18.4 19.4,19.32 19,20C18.7,20.62 18.06,21 17.38,21C17.1,21 16.83,20.94 16.58,20.82C16,20.55 15.67,20.07 15.55,19.54L15.5,19.11C15.5,18.7 15.67,18.35 15.68,18.32C16.62,16.34 17.09,14.23 17.09,12C17.09,9.82 16.62,7.69 15.67,5.68C15.22,4.75 15.62,3.63 16.55,3.18C16.81,3.06 17.08,3 17.36,3C18.08,3 18.75,3.42 19.05,4.07C19.63,5.29 20.08,6.57 20.38,7.88M16.12,9.5C16.26,10.32 16.34,11.16 16.34,12C16.34,14 15.95,15.92 15.2,17.72C15.11,16.21 14.75,14.76 14.16,13.44L14.22,12.73L14.25,11.96C14.25,9.88 13.71,7.85 12.67,6.07C14,7.03 15.18,8.21 16.12,9.5M4,10.5C3.15,10.03 2.84,9 3.28,8.18C3.58,7.63 4.15,7.28 4.78,7.28C5.06,7.28 5.33,7.35 5.58,7.5C6.87,8.17 8.03,9.1 8.97,10.16L9.12,11.05L9.18,12C9.18,13.43 8.81,14.84 8.1,16.07C7.6,13.66 6.12,11.62 4,10.5Z" /></g><g id="gradient"><path d="M11,9H13V11H11V9M9,11H11V13H9V11M13,11H15V13H13V11M15,9H17V11H15V9M7,9H9V11H7V9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,18H7V16H9V18M13,18H11V16H13V18M17,18H15V16H17V18M19,11H17V13H19V15H17V13H15V15H13V13H11V15H9V13H7V15H5V13H7V11H5V5H19V11Z" /></g><g id="grease-pencil"><path d="M18.62,1.5C18.11,1.5 17.6,1.69 17.21,2.09L10.75,8.55L14.95,12.74L21.41,6.29C22.2,5.5 22.2,4.24 21.41,3.46L20.04,2.09C19.65,1.69 19.14,1.5 18.62,1.5M9.8,9.5L3.23,16.07L3.93,16.77C3.4,17.24 2.89,17.78 2.38,18.29C1.6,19.08 1.6,20.34 2.38,21.12C3.16,21.9 4.42,21.9 5.21,21.12C5.72,20.63 6.25,20.08 6.73,19.58L7.43,20.27L14,13.7" /></g><g id="grid"><path d="M10,4V8H14V4H10M16,4V8H20V4H16M16,10V14H20V10H16M16,16V20H20V16H16M14,20V16H10V20H14M8,20V16H4V20H8M8,14V10H4V14H8M8,8V4H4V8H8M10,14H14V10H10V14M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4C2.92,22 2,21.1 2,20V4A2,2 0 0,1 4,2Z" /></g><g id="grid-off"><path d="M0,2.77L1.28,1.5L22.5,22.72L21.23,24L19.23,22H4C2.92,22 2,21.1 2,20V4.77L0,2.77M10,4V7.68L8,5.68V4H6.32L4.32,2H20A2,2 0 0,1 22,4V19.7L20,17.7V16H18.32L16.32,14H20V10H16V13.68L14,11.68V10H12.32L10.32,8H14V4H10M16,4V8H20V4H16M16,20H17.23L16,18.77V20M4,8H5.23L4,6.77V8M10,14H11.23L10,12.77V14M14,20V16.77L13.23,16H10V20H14M8,20V16H4V20H8M8,14V10.77L7.23,10H4V14H8Z" /></g><g id="group"><path d="M8,8V12H13V8H8M1,1H5V2H19V1H23V5H22V19H23V23H19V22H5V23H1V19H2V5H1V1M5,19V20H19V19H20V5H19V4H5V5H4V19H5M6,6H15V10H18V18H8V14H6V6M15,14H10V16H16V12H15V14Z" /></g><g id="guitar-electric"><path d="M20.5,2L18.65,4.08L18.83,4.26L10.45,12.16C10.23,12.38 9.45,12.75 9.26,12.28C8.81,11.12 10.23,11 10,10.8C8.94,10.28 7.73,11.18 7.67,11.23C6.94,11.78 6.5,12.43 6.26,13.13C5.96,14.04 5.17,14.15 4.73,14.17C3.64,14.24 3,14.53 2.5,15.23C2.27,15.54 1.9,16 2,16.96C2.16,18 2.95,19.33 3.56,20C4.21,20.69 5.05,21.38 5.81,21.75C6.35,22 6.68,22.08 7.47,21.88C8.17,21.7 8.86,21.14 9.15,20.4C9.39,19.76 9.42,19.3 9.53,18.78C9.67,18.11 9.76,18 10.47,17.68C11.14,17.39 11.5,17.35 12.05,16.78C12.44,16.37 12.64,15.93 12.76,15.46C12.86,15.06 12.93,14.56 12.74,14.5C12.57,14.35 12.27,15.31 11.56,14.86C11.05,14.54 11.11,13.74 11.55,13.29C14.41,10.38 16.75,8 19.63,5.09L19.86,5.32L22,3.5Z" /></g><g id="guitar-pick"><path d="M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1Z" /></g><g id="guitar-pick-outline"><path d="M19,4.1C18.1,3.3 17,2.8 15.8,2.5C15.5,2.4 13.6,2 12.2,2C12.2,2 12.1,2 12,2C12,2 11.9,2 11.8,2C10.4,2 8.4,2.4 8.1,2.5C7,2.8 5.9,3.3 5,4.1C3,5.9 3,8.7 4,11C5,13.5 6.1,15.7 7.6,17.9C8.8,19.6 10.1,22 12,22C13.9,22 15.2,19.6 16.5,17.9C18,15.8 19.1,13.5 20.1,11C21,8.7 21,5.9 19,4.1M18.2,10.2C17.1,12.9 16.1,14.9 14.8,16.7C14.6,16.9 14.5,17.2 14.3,17.4C13.8,18.2 12.6,20 12,20C12,20 12,20 12,20C11.3,20 10.2,18.3 9.6,17.4C9.4,17.2 9.3,16.9 9.1,16.7C7.9,14.9 6.8,12.9 5.7,10.2C5.5,9.5 4.7,7 6.3,5.5C6.8,5 7.6,4.7 8.6,4.4C9,4.4 10.7,4 11.8,4C11.8,4 12.1,4 12.1,4C13.2,4 14.9,4.3 15.3,4.4C16.3,4.7 17.1,5 17.6,5.5C19.3,7 18.5,9.5 18.2,10.2Z" /></g><g id="hackernews"><path d="M2,2H22V22H2V2M11.25,17.5H12.75V13.06L16,7H14.5L12,11.66L9.5,7H8L11.25,13.06V17.5Z" /></g><g id="hamburger"><path d="M2,16H22V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V16M6,4H18C20.22,4 22,5.78 22,8V10H2V8C2,5.78 3.78,4 6,4M4,11H15L17,13L19,11H20C21.11,11 22,11.89 22,13C22,14.11 21.11,15 20,15H4C2.89,15 2,14.11 2,13C2,11.89 2.89,11 4,11Z" /></g><g id="hand-pointing-right"><path d="M21,9A1,1 0 0,1 22,10A1,1 0 0,1 21,11H16.53L16.4,12.21L14.2,17.15C14,17.65 13.47,18 12.86,18H8.5C7.7,18 7,17.27 7,16.5V10C7,9.61 7.16,9.26 7.43,9L11.63,4.1L12.4,4.84C12.6,5.03 12.72,5.29 12.72,5.58L12.69,5.8L11,9H21M2,18V10H5V18H2Z" /></g><g id="hanger"><path d="M20.76,16.34H20.75C21.5,16.77 22,17.58 22,18.5A2.5,2.5 0 0,1 19.5,21H4.5A2.5,2.5 0 0,1 2,18.5C2,17.58 2.5,16.77 3.25,16.34H3.24L11,11.86C11,11.86 11,11 12,10C13,10 14,9.1 14,8A2,2 0 0,0 12,6A2,2 0 0,0 10,8H8A4,4 0 0,1 12,4A4,4 0 0,1 16,8C16,9.86 14.73,11.42 13,11.87L20.76,16.34M4.5,19V19H19.5V19C19.67,19 19.84,18.91 19.93,18.75C20.07,18.5 20,18.21 19.75,18.07L12,13.59L4.25,18.07C4,18.21 3.93,18.5 4.07,18.75C4.16,18.91 4.33,19 4.5,19Z" /></g><g id="hangouts"><path d="M15,11L14,13H12.5L13.5,11H12V8H15M11,11L10,13H8.5L9.5,11H8V8H11M11.5,2A8.5,8.5 0 0,0 3,10.5A8.5,8.5 0 0,0 11.5,19H12V22.5C16.86,20.15 20,15 20,10.5C20,5.8 16.19,2 11.5,2Z" /></g><g id="harddisk"><path d="M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z" /></g><g id="headphones"><path d="M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H18A3,3 0 0,0 21,17V10C21,5 16.97,1 12,1Z" /></g><g id="headphones-box"><path d="M7.2,18C6.54,18 6,17.46 6,16.8V13.2L6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12V13.2L18,16.8A1.2,1.2 0 0,1 16.8,18H14V14H16V12A4,4 0 0,0 12,8A4,4 0 0,0 8,12V14H10V18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="headphones-settings"><path d="M12,1A9,9 0 0,1 21,10V17A3,3 0 0,1 18,20H15V12H19V10A7,7 0 0,0 12,3A7,7 0 0,0 5,10V12H9V20H6A3,3 0 0,1 3,17V10A9,9 0 0,1 12,1M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z" /></g><g id="headset"><path d="M12,1C7,1 3,5 3,10V17A3,3 0 0,0 6,20H9V12H5V10A7,7 0 0,1 12,3A7,7 0 0,1 19,10V12H15V20H19V21H12V23H18A3,3 0 0,0 21,20V10C21,5 16.97,1 12,1Z" /></g><g id="headset-dock"><path d="M2,18H9V6.13C7.27,6.57 6,8.14 6,10V11H8V17H6A2,2 0 0,1 4,15V10A6,6 0 0,1 10,4H11A6,6 0 0,1 17,10V12H18V9H20V12A2,2 0 0,1 18,14H17V15A2,2 0 0,1 15,17H13V11H15V10C15,8.14 13.73,6.57 12,6.13V18H22V20H2V18Z" /></g><g id="headset-off"><path d="M22.5,4.77L20.43,6.84C20.8,7.82 21,8.89 21,10V20A3,3 0 0,1 18,23H12V21H19V20H15V12.27L9,18.27V20H7.27L4.77,22.5L3.5,21.22L21.22,3.5L22.5,4.77M12,1C14.53,1 16.82,2.04 18.45,3.72L17.04,5.14C15.77,3.82 14,3 12,3A7,7 0 0,0 5,10V12H9V13.18L3.5,18.67C3.19,18.19 3,17.62 3,17V10A9,9 0 0,1 12,1M19,12V10C19,9.46 18.94,8.94 18.83,8.44L15.27,12H19Z" /></g><g id="heart"><path d="M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z" /></g><g id="heart-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M12,17L12.72,16.34C15.3,14 17,12.46 17,10.57C17,9.03 15.79,7.82 14.25,7.82C13.38,7.82 12.55,8.23 12,8.87C11.45,8.23 10.62,7.82 9.75,7.82C8.21,7.82 7,9.03 7,10.57C7,12.46 8.7,14 11.28,16.34L12,17Z" /></g><g id="heart-box-outline"><path d="M12,17L11.28,16.34C8.7,14 7,12.46 7,10.57C7,9.03 8.21,7.82 9.75,7.82C10.62,7.82 11.45,8.23 12,8.87C12.55,8.23 13.38,7.82 14.25,7.82C15.79,7.82 17,9.03 17,10.57C17,12.46 15.3,14 12.72,16.34L12,17M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M5,5V19H19V5H5Z" /></g><g id="heart-broken"><path d="M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C8.17,3 8.82,3.12 9.44,3.33L13,9.35L9,14.35L12,21.35V21.35M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L11,14.35L15.5,9.35L12.85,4.27C13.87,3.47 15.17,3 16.5,3Z" /></g><g id="heart-half-outline"><path d="M16.5,5C15,5 13.58,5.91 13,7.2V17.74C17.25,13.87 20,11.2 20,8.5C20,6.5 18.5,5 16.5,5M16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3Z" /></g><g id="heart-half-part"><path d="M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z" /></g><g id="heart-half-part-outline"><path d="M4,8.5C4,11.2 6.75,13.87 11,17.74V7.2C10.42,5.91 9,5 7.5,5C5.5,5 4,6.5 4,8.5M13,7.2V17.74L13,20.44L12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C10,3 13,5 13,7.2Z" /></g><g id="heart-outline"><path d="M12.1,18.55L12,18.65L11.89,18.55C7.14,14.24 4,11.39 4,8.5C4,6.5 5.5,5 7.5,5C9.04,5 10.54,6 11.07,7.36H12.93C13.46,6 14.96,5 16.5,5C18.5,5 20,6.5 20,8.5C20,11.39 16.86,14.24 12.1,18.55M16.5,3C14.76,3 13.09,3.81 12,5.08C10.91,3.81 9.24,3 7.5,3C4.42,3 2,5.41 2,8.5C2,12.27 5.4,15.36 10.55,20.03L12,21.35L13.45,20.03C18.6,15.36 22,12.27 22,8.5C22,5.41 19.58,3 16.5,3Z" /></g><g id="heart-pulse"><path d="M7.5,4A5.5,5.5 0 0,0 2,9.5C2,10 2.09,10.5 2.22,11H6.3L7.57,7.63C7.87,6.83 9.05,6.75 9.43,7.63L11.5,13L12.09,11.58C12.22,11.25 12.57,11 13,11H21.78C21.91,10.5 22,10 22,9.5A5.5,5.5 0 0,0 16.5,4C14.64,4 13,4.93 12,6.34C11,4.93 9.36,4 7.5,4V4M3,12.5A1,1 0 0,0 2,13.5A1,1 0 0,0 3,14.5H5.44L11,20C12,20.9 12,20.9 13,20L18.56,14.5H21A1,1 0 0,0 22,13.5A1,1 0 0,0 21,12.5H13.4L12.47,14.8C12.07,15.81 10.92,15.67 10.55,14.83L8.5,9.5L7.54,11.83C7.39,12.21 7.05,12.5 6.6,12.5H3Z" /></g><g id="help"><path d="M10,19H13V22H10V19M12,2C17.35,2.22 19.68,7.62 16.5,11.67C15.67,12.67 14.33,13.33 13.67,14.17C13,15 13,16 13,17H10C10,15.33 10,13.92 10.67,12.92C11.33,11.92 12.67,11.33 13.5,10.67C15.92,8.43 15.32,5.26 12,5A3,3 0 0,0 9,8H6A6,6 0 0,1 12,2Z" /></g><g id="help-circle"><path d="M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="help-circle-outline"><path d="M11,18H13V16H11V18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,6A4,4 0 0,0 8,10H10A2,2 0 0,1 12,8A2,2 0 0,1 14,10C14,12 11,11.75 11,15H13C13,12.75 16,12.5 16,10A4,4 0 0,0 12,6Z" /></g><g id="hexagon"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5Z" /></g><g id="hexagon-outline"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15Z" /></g><g id="highway"><path d="M10,2L8,8H11V2H10M13,2V8H16L14,2H13M2,9V10H4V11H6V10H18L18.06,11H20V10H22V9H2M7,11L3.34,22H11V11H7M13,11V22H20.66L17,11H13Z" /></g><g id="history"><path d="M11,7V12.11L15.71,14.9L16.5,13.62L12.5,11.25V7M12.5,2C8.97,2 5.91,3.92 4.27,6.77L2,4.5V11H8.5L5.75,8.25C6.96,5.73 9.5,4 12.5,4A7.5,7.5 0 0,1 20,11.5A7.5,7.5 0 0,1 12.5,19C9.23,19 6.47,16.91 5.44,14H3.34C4.44,18.03 8.11,21 12.5,21C17.74,21 22,16.75 22,11.5A9.5,9.5 0 0,0 12.5,2Z" /></g><g id="hololens"><path d="M12,8C12,8 22,8 22,11C22,11 22.09,14.36 21.75,14.25C21,11 12,11 12,11C12,11 3,11 2.25,14.25C1.91,14.36 2,11 2,11C2,8 12,8 12,8M12,12C20,12 20.75,14.25 20.75,14.25C19.75,17.25 19,18 15,18C12,18 13,16.5 12,16.5C11,16.5 12,18 9,18C5,18 4.25,17.25 3.25,14.25C3.25,14.25 4,12 12,12Z" /></g><g id="home"><path d="M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z" /></g><g id="home-map-marker"><path d="M12,3L2,12H5V20H19V12H22L12,3M12,7.7C14.1,7.7 15.8,9.4 15.8,11.5C15.8,14.5 12,18 12,18C12,18 8.2,14.5 8.2,11.5C8.2,9.4 9.9,7.7 12,7.7M12,10A1.5,1.5 0 0,0 10.5,11.5A1.5,1.5 0 0,0 12,13A1.5,1.5 0 0,0 13.5,11.5A1.5,1.5 0 0,0 12,10Z" /></g><g id="home-modern"><path d="M6,21V8A2,2 0 0,1 8,6L16,3V6A2,2 0 0,1 18,8V21H12V16H8V21H6M14,19H16V16H14V19M8,13H10V9H8V13M12,13H16V9H12V13Z" /></g><g id="home-outline"><path d="M9,19V13H11L13,13H15V19H18V10.91L12,4.91L6,10.91V19H9M12,2.09L21.91,12H20V21H13V15H11V21H4V12H2.09L12,2.09Z" /></g><g id="home-variant"><path d="M8,20H5V12H2L12,3L22,12H19V20H12V14H8V20M14,14V17H17V14H14Z" /></g><g id="hook"><path d="M18,6C18,7.82 16.76,9.41 15,9.86V17A5,5 0 0,1 10,22A5,5 0 0,1 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V9.86C11.23,9.4 10,7.8 10,5.97C10,3.76 11.8,2 14,2C16.22,2 18,3.79 18,6M14,8A2,2 0 0,0 16,6A2,2 0 0,0 14,4A2,2 0 0,0 12,6A2,2 0 0,0 14,8Z" /></g><g id="hook-off"><path d="M13,9.86V11.18L15,13.18V9.86C17.14,9.31 18.43,7.13 17.87,5C17.32,2.85 15.14,1.56 13,2.11C10.86,2.67 9.57,4.85 10.13,7C10.5,8.4 11.59,9.5 13,9.86M14,4A2,2 0 0,1 16,6A2,2 0 0,1 14,8A2,2 0 0,1 12,6A2,2 0 0,1 14,4M18.73,22L14.86,18.13C14.21,20.81 11.5,22.46 8.83,21.82C6.6,21.28 5,19.29 5,17V12L10,17H7A3,3 0 0,0 10,20A3,3 0 0,0 13,17V16.27L2,5.27L3.28,4L13,13.72L15,15.72L20,20.72L18.73,22Z" /></g><g id="hops"><path d="M21,12C21,12 12.5,10 12.5,2C12.5,2 21,2 21,12M3,12C3,2 11.5,2 11.5,2C11.5,10 3,12 3,12M12,6.5C12,6.5 13,8.66 15,10.5C14.76,14.16 12,16 12,16C12,16 9.24,14.16 9,10.5C11,8.66 12,6.5 12,6.5M20.75,13.25C20.75,13.25 20,17 18,19C18,19 15.53,17.36 14.33,14.81C15.05,13.58 15.5,12.12 15.75,11.13C17.13,12.18 18.75,13 20.75,13.25M15.5,18.25C14.5,20.25 12,21.75 12,21.75C12,21.75 9.5,20.25 8.5,18.25C8.5,18.25 9.59,17.34 10.35,15.8C10.82,16.35 11.36,16.79 12,17C12.64,16.79 13.18,16.35 13.65,15.8C14.41,17.34 15.5,18.25 15.5,18.25M3.25,13.25C5.25,13 6.87,12.18 8.25,11.13C8.5,12.12 8.95,13.58 9.67,14.81C8.47,17.36 6,19 6,19C4,17 3.25,13.25 3.25,13.25Z" /></g><g id="hospital"><path d="M18,14H14V18H10V14H6V10H10V6H14V10H18M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="hospital-building"><path d="M2,22V7A1,1 0 0,1 3,6H7V2H17V6H21A1,1 0 0,1 22,7V22H14V17H10V22H2M9,4V10H11V8H13V10H15V4H13V6H11V4H9M4,20H8V17H4V20M4,15H8V12H4V15M16,20H20V17H16V20M16,15H20V12H16V15M10,15H14V12H10V15Z" /></g><g id="hospital-marker"><path d="M12,2C15.86,2 19,5.13 19,9C19,14.25 12,22 12,22C12,22 5,14.25 5,9A7,7 0 0,1 12,2M9,6V12H11V10H13V12H15V6H13V8H11V6H9Z" /></g><g id="hotel"><path d="M19,7H11V14H3V5H1V20H3V17H21V20H23V11A4,4 0 0,0 19,7M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13Z" /></g><g id="houzz"><path d="M12,24V16L5.1,20V12H5.1V4L12,0V8L5.1,12L12,16V8L18.9,4V12H18.9V20L12,24Z" /></g><g id="houzz-box"><path d="M12,4L7.41,6.69V12L12,9.3V4M12,9.3V14.7L12,20L16.59,17.31V12L16.59,6.6L12,9.3M12,14.7L7.41,12V17.4L12,14.7M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" /></g><g id="human"><path d="M21,9H15V22H13V16H11V22H9V9H3V7H21M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6C10.89,6 10,5.1 10,4C10,2.89 10.89,2 12,2Z" /></g><g id="human-child"><path d="M12,2A3,3 0 0,1 15,5A3,3 0 0,1 12,8A3,3 0 0,1 9,5A3,3 0 0,1 12,2M11,22H8V16H6V9H18V16H16V22H13V18H11V22Z" /></g><g id="human-female"><path d="M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,22V16H7.5L10.09,8.41C10.34,7.59 11.1,7 12,7C12.9,7 13.66,7.59 13.91,8.41L16.5,16H13.5V22H10.5Z" /></g><g id="human-greeting"><path d="M1.5,4V5.5C1.5,9.65 3.71,13.28 7,15.3V20H22V18C22,15.34 16.67,14 14,14C14,14 13.83,14 13.75,14C9,14 5,10 5,5.5V4M14,4A4,4 0 0,0 10,8A4,4 0 0,0 14,12A4,4 0 0,0 18,8A4,4 0 0,0 14,4Z" /></g><g id="human-handsdown"><path d="M12,1C10.89,1 10,1.9 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3A2,2 0 0,0 12,1M10,6C9.73,6 9.5,6.11 9.31,6.28H9.3L4,11.59L5.42,13L9,9.41V22H11V15H13V22H15V9.41L18.58,13L20,11.59L14.7,6.28C14.5,6.11 14.27,6 14,6" /></g><g id="human-handsup"><path d="M5,1C5,3.7 6.56,6.16 9,7.32V22H11V15H13V22H15V7.31C17.44,6.16 19,3.7 19,1H17A5,5 0 0,1 12,6A5,5 0 0,1 7,1M12,1C10.89,1 10,1.89 10,3C10,4.11 10.89,5 12,5C13.11,5 14,4.11 14,3C14,1.89 13.11,1 12,1Z" /></g><g id="human-male"><path d="M12,2A2,2 0 0,1 14,4A2,2 0 0,1 12,6A2,2 0 0,1 10,4A2,2 0 0,1 12,2M10.5,7H13.5A2,2 0 0,1 15.5,9V14.5H14V22H10V14.5H8.5V9A2,2 0 0,1 10.5,7Z" /></g><g id="human-male-female"><path d="M7.5,2A2,2 0 0,1 9.5,4A2,2 0 0,1 7.5,6A2,2 0 0,1 5.5,4A2,2 0 0,1 7.5,2M6,7H9A2,2 0 0,1 11,9V14.5H9.5V22H5.5V14.5H4V9A2,2 0 0,1 6,7M16.5,2A2,2 0 0,1 18.5,4A2,2 0 0,1 16.5,6A2,2 0 0,1 14.5,4A2,2 0 0,1 16.5,2M15,22V16H12L14.59,8.41C14.84,7.59 15.6,7 16.5,7C17.4,7 18.16,7.59 18.41,8.41L21,16H18V22H15Z" /></g><g id="human-pregnant"><path d="M9,4C9,2.89 9.89,2 11,2C12.11,2 13,2.89 13,4C13,5.11 12.11,6 11,6C9.89,6 9,5.11 9,4M16,13C16,11.66 15.17,10.5 14,10A3,3 0 0,0 11,7A3,3 0 0,0 8,10V17H10V22H13V17H16V13Z" /></g><g id="image"><path d="M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z" /></g><g id="image-album"><path d="M6,19L9,15.14L11.14,17.72L14.14,13.86L18,19H6M6,4H11V12L8.5,10.5L6,12M18,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="image-area"><path d="M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M5,16H19L14.5,10L11,14.5L8.5,11.5L5,16Z" /></g><g id="image-area-close"><path d="M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M5,14H19L14.5,8L11,12.5L8.5,9.5L5,14Z" /></g><g id="image-broken"><path d="M19,3A2,2 0 0,1 21,5V11H19V13H19L17,13V15H15V17H13V19H11V21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19M21,15V19A2,2 0 0,1 19,21H19L15,21V19H17V17H19V15H21M19,8.5A0.5,0.5 0 0,0 18.5,8H5.5A0.5,0.5 0 0,0 5,8.5V15.5A0.5,0.5 0 0,0 5.5,16H11V15H13V13H15V11H17V9H19V8.5Z" /></g><g id="image-broken-variant"><path d="M21,5V11.59L18,8.58L14,12.59L10,8.59L6,12.59L3,9.58V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M18,11.42L21,14.43V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V12.42L6,15.41L10,11.41L14,15.41" /></g><g id="image-filter"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3M15.96,10.29L13.21,13.83L11.25,11.47L8.5,15H19.5L15.96,10.29Z" /></g><g id="image-filter-black-white"><path d="M19,19L12,11V19H5L12,11V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="image-filter-center-focus"><path d="M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z" /></g><g id="image-filter-center-focus-weak"><path d="M5,15H3V19A2,2 0 0,0 5,21H9V19H5M5,5H9V3H5A2,2 0 0,0 3,5V9H5M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14Z" /></g><g id="image-filter-drama"><path d="M19,18H6A4,4 0 0,1 2,14A4,4 0 0,1 6,10A4,4 0 0,1 10,14H12C12,11.24 10.14,8.92 7.6,8.22C8.61,6.88 10.2,6 12,6C15.03,6 17.5,8.47 17.5,11.5V12H19A3,3 0 0,1 22,15A3,3 0 0,1 19,18M19.35,10.04C18.67,6.59 15.64,4 12,4C9.11,4 6.61,5.64 5.36,8.04C2.35,8.36 0,10.9 0,14A6,6 0 0,0 6,20H19A5,5 0 0,0 24,15C24,12.36 21.95,10.22 19.35,10.04Z" /></g><g id="image-filter-frames"><path d="M18,8H6V18H18M20,20H4V6H8.5L12.04,2.5L15.5,6H20M20,4H16L12,0L8,4H4A2,2 0 0,0 2,6V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V6A2,2 0 0,0 20,4Z" /></g><g id="image-filter-hdr"><path d="M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z" /></g><g id="image-filter-none"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="image-filter-tilt-shift"><path d="M5.68,19.74C7.16,20.95 9,21.75 11,21.95V19.93C9.54,19.75 8.21,19.17 7.1,18.31M13,19.93V21.95C15,21.75 16.84,20.95 18.32,19.74L16.89,18.31C15.79,19.17 14.46,19.75 13,19.93M18.31,16.9L19.74,18.33C20.95,16.85 21.75,15 21.95,13H19.93C19.75,14.46 19.17,15.79 18.31,16.9M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12M4.07,13H2.05C2.25,15 3.05,16.84 4.26,18.32L5.69,16.89C4.83,15.79 4.25,14.46 4.07,13M5.69,7.1L4.26,5.68C3.05,7.16 2.25,9 2.05,11H4.07C4.25,9.54 4.83,8.21 5.69,7.1M19.93,11H21.95C21.75,9 20.95,7.16 19.74,5.68L18.31,7.1C19.17,8.21 19.75,9.54 19.93,11M18.32,4.26C16.84,3.05 15,2.25 13,2.05V4.07C14.46,4.25 15.79,4.83 16.9,5.69M11,4.07V2.05C9,2.25 7.16,3.05 5.68,4.26L7.1,5.69C8.21,4.83 9.54,4.25 11,4.07Z" /></g><g id="image-filter-vintage"><path d="M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M18.7,12.4C18.42,12.24 18.13,12.11 17.84,12C18.13,11.89 18.42,11.76 18.7,11.6C20.62,10.5 21.69,8.5 21.7,6.41C19.91,5.38 17.63,5.3 15.7,6.41C15.42,6.57 15.16,6.76 14.92,6.95C14.97,6.64 15,6.32 15,6C15,3.78 13.79,1.85 12,0.81C10.21,1.85 9,3.78 9,6C9,6.32 9.03,6.64 9.08,6.95C8.84,6.75 8.58,6.56 8.3,6.4C6.38,5.29 4.1,5.37 2.3,6.4C2.3,8.47 3.37,10.5 5.3,11.59C5.58,11.75 5.87,11.88 6.16,12C5.87,12.1 5.58,12.23 5.3,12.39C3.38,13.5 2.31,15.5 2.3,17.58C4.09,18.61 6.37,18.69 8.3,17.58C8.58,17.42 8.84,17.23 9.08,17.04C9.03,17.36 9,17.68 9,18C9,20.22 10.21,22.15 12,23.19C13.79,22.15 15,20.22 15,18C15,17.68 14.97,17.36 14.92,17.05C15.16,17.25 15.42,17.43 15.7,17.59C17.62,18.7 19.9,18.62 21.7,17.59C21.69,15.5 20.62,13.5 18.7,12.4Z" /></g><g id="image-multiple"><path d="M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6" /></g><g id="import"><path d="M14,12L10,8V11H2V13H10V16M20,18V6C20,4.89 19.1,4 18,4H6A2,2 0 0,0 4,6V9H6V6H18V18H6V15H4V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18Z" /></g><g id="inbox"><path d="M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="inbox-arrow-down"><path d="M16,10H14V7H10V10H8L12,14M19,15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5V5H19M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="inbox-arrow-up"><path d="M14,14H10V11H8L12,7L16,11H14V14M16,11M5,15V5H19V15H15A3,3 0 0,1 12,18A3,3 0 0,1 9,15H5M19,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3" /></g><g id="incognito"><path d="M12,3C9.31,3 7.41,4.22 7.41,4.22L6,9H18L16.59,4.22C16.59,4.22 14.69,3 12,3M12,11C9.27,11 5.39,11.54 5.13,11.59C4.09,11.87 3.25,12.15 2.59,12.41C1.58,12.75 1,13 1,13H23C23,13 22.42,12.75 21.41,12.41C20.75,12.15 19.89,11.87 18.84,11.59C18.84,11.59 14.82,11 12,11M7.5,14A3.5,3.5 0 0,0 4,17.5A3.5,3.5 0 0,0 7.5,21A3.5,3.5 0 0,0 11,17.5C11,17.34 11,17.18 10.97,17.03C11.29,16.96 11.63,16.9 12,16.91C12.37,16.91 12.71,16.96 13.03,17.03C13,17.18 13,17.34 13,17.5A3.5,3.5 0 0,0 16.5,21A3.5,3.5 0 0,0 20,17.5A3.5,3.5 0 0,0 16.5,14C15.03,14 13.77,14.9 13.25,16.19C12.93,16.09 12.55,16 12,16C11.45,16 11.07,16.09 10.75,16.19C10.23,14.9 8.97,14 7.5,14M7.5,15A2.5,2.5 0 0,1 10,17.5A2.5,2.5 0 0,1 7.5,20A2.5,2.5 0 0,1 5,17.5A2.5,2.5 0 0,1 7.5,15M16.5,15A2.5,2.5 0 0,1 19,17.5A2.5,2.5 0 0,1 16.5,20A2.5,2.5 0 0,1 14,17.5A2.5,2.5 0 0,1 16.5,15Z" /></g><g id="infinity"><path d="M18.6,6.62C21.58,6.62 24,9 24,12C24,14.96 21.58,17.37 18.6,17.37C17.15,17.37 15.8,16.81 14.78,15.8L12,13.34L9.17,15.85C8.2,16.82 6.84,17.38 5.4,17.38C2.42,17.38 0,14.96 0,12C0,9.04 2.42,6.62 5.4,6.62C6.84,6.62 8.2,7.18 9.22,8.2L12,10.66L14.83,8.15C15.8,7.18 17.16,6.62 18.6,6.62M7.8,14.39L10.5,12L7.84,9.65C7.16,8.97 6.31,8.62 5.4,8.62C3.53,8.62 2,10.13 2,12C2,13.87 3.53,15.38 5.4,15.38C6.31,15.38 7.16,15.03 7.8,14.39M16.2,9.61L13.5,12L16.16,14.35C16.84,15.03 17.7,15.38 18.6,15.38C20.47,15.38 22,13.87 22,12C22,10.13 20.47,8.62 18.6,8.62C17.69,8.62 16.84,8.97 16.2,9.61Z" /></g><g id="information"><path d="M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="information-outline"><path d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" /></g><g id="information-variant"><path d="M13.5,4A1.5,1.5 0 0,0 12,5.5A1.5,1.5 0 0,0 13.5,7A1.5,1.5 0 0,0 15,5.5A1.5,1.5 0 0,0 13.5,4M13.14,8.77C11.95,8.87 8.7,11.46 8.7,11.46C8.5,11.61 8.56,11.6 8.72,11.88C8.88,12.15 8.86,12.17 9.05,12.04C9.25,11.91 9.58,11.7 10.13,11.36C12.25,10 10.47,13.14 9.56,18.43C9.2,21.05 11.56,19.7 12.17,19.3C12.77,18.91 14.38,17.8 14.54,17.69C14.76,17.54 14.6,17.42 14.43,17.17C14.31,17 14.19,17.12 14.19,17.12C13.54,17.55 12.35,18.45 12.19,17.88C12,17.31 13.22,13.4 13.89,10.71C14,10.07 14.3,8.67 13.14,8.77Z" /></g><g id="instagram"><path d="M7.8,2H16.2C19.4,2 22,4.6 22,7.8V16.2A5.8,5.8 0 0,1 16.2,22H7.8C4.6,22 2,19.4 2,16.2V7.8A5.8,5.8 0 0,1 7.8,2M7.6,4A3.6,3.6 0 0,0 4,7.6V16.4C4,18.39 5.61,20 7.6,20H16.4A3.6,3.6 0 0,0 20,16.4V7.6C20,5.61 18.39,4 16.4,4H7.6M17.25,5.5A1.25,1.25 0 0,1 18.5,6.75A1.25,1.25 0 0,1 17.25,8A1.25,1.25 0 0,1 16,6.75A1.25,1.25 0 0,1 17.25,5.5M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="instapaper"><path d="M10,5A1,1 0 0,0 9,4H8V2H16V4H15A1,1 0 0,0 14,5V19A1,1 0 0,0 15,20H16V22H8V20H9A1,1 0 0,0 10,19V5Z" /></g><g id="internet-explorer"><path d="M13,3L14,3.06C16.8,1.79 19.23,1.64 20.5,2.92C21.5,3.93 21.58,5.67 20.92,7.72C21.61,9 22,10.45 22,12L21.95,13H9.08C9.45,15.28 11.06,17 13,17C14.31,17 15.47,16.21 16.2,15H21.5C20.25,18.5 16.92,21 13,21C11.72,21 10.5,20.73 9.41,20.25C6.5,21.68 3.89,21.9 2.57,20.56C1,18.96 1.68,15.57 4,12C4.93,10.54 6.14,9.06 7.57,7.65L8.38,6.88C7.21,7.57 5.71,8.62 4.19,10.17C5.03,6.08 8.66,3 13,3M13,7C11.21,7 9.69,8.47 9.18,10.5H16.82C16.31,8.47 14.79,7 13,7M20.06,4.06C19.4,3.39 18.22,3.35 16.74,3.81C18.22,4.5 19.5,5.56 20.41,6.89C20.73,5.65 20.64,4.65 20.06,4.06M3.89,20C4.72,20.84 6.4,20.69 8.44,19.76C6.59,18.67 5.17,16.94 4.47,14.88C3.27,17.15 3,19.07 3.89,20Z" /></g><g id="invert-colors"><path d="M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z" /></g><g id="itunes"><path d="M7.85,17.07C7.03,17.17 3.5,17.67 4.06,20.26C4.69,23.3 9.87,22.59 9.83,19C9.81,16.57 9.83,9.2 9.83,9.2C9.83,9.2 9.76,8.53 10.43,8.39L18.19,6.79C18.19,6.79 18.83,6.65 18.83,7.29C18.83,7.89 18.83,14.2 18.83,14.2C18.83,14.2 18.9,14.83 18.12,15C17.34,15.12 13.91,15.4 14.19,18C14.5,21.07 20,20.65 20,17.07V2.61C20,2.61 20.04,1.62 18.9,1.87L9.5,3.78C9.5,3.78 8.66,3.96 8.66,4.77C8.66,5.5 8.66,16.11 8.66,16.11C8.66,16.11 8.66,16.96 7.85,17.07Z" /></g><g id="jeepney"><path d="M19,13V7H20V4H4V7H5V13H2C2,13.93 2.5,14.71 3.5,14.93V20A1,1 0 0,0 4.5,21H5.5A1,1 0 0,0 6.5,20V19H17.5V20A1,1 0 0,0 18.5,21H19.5A1,1 0 0,0 20.5,20V14.93C21.5,14.7 22,13.93 22,13H19M8,15A1.5,1.5 0 0,1 6.5,13.5A1.5,1.5 0 0,1 8,12A1.5,1.5 0 0,1 9.5,13.5A1.5,1.5 0 0,1 8,15M16,15A1.5,1.5 0 0,1 14.5,13.5A1.5,1.5 0 0,1 16,12A1.5,1.5 0 0,1 17.5,13.5A1.5,1.5 0 0,1 16,15M17.5,10.5C15.92,10.18 14.03,10 12,10C9.97,10 8,10.18 6.5,10.5V7H17.5V10.5Z" /></g><g id="jira"><path d="M12,2A1.58,1.58 0 0,1 13.58,3.58A1.58,1.58 0 0,1 12,5.16A1.58,1.58 0 0,1 10.42,3.58A1.58,1.58 0 0,1 12,2M7.79,3.05C8.66,3.05 9.37,3.76 9.37,4.63C9.37,5.5 8.66,6.21 7.79,6.21A1.58,1.58 0 0,1 6.21,4.63A1.58,1.58 0 0,1 7.79,3.05M16.21,3.05C17.08,3.05 17.79,3.76 17.79,4.63C17.79,5.5 17.08,6.21 16.21,6.21A1.58,1.58 0 0,1 14.63,4.63A1.58,1.58 0 0,1 16.21,3.05M11.8,10.95C9.7,8.84 10.22,7.79 10.22,7.79H13.91C13.91,9.37 11.8,10.95 11.8,10.95M13.91,21.47C13.91,21.47 13.91,19.37 9.7,15.16C5.5,10.95 4.96,9.89 4.43,6.74C4.43,6.74 4.83,6.21 5.36,6.74C5.88,7.26 7.07,7.66 8.12,7.66C8.12,7.66 9.17,10.95 12.07,13.05C12.07,13.05 15.88,9.11 15.88,7.53C15.88,7.53 17.07,7.79 18.5,6.74C18.5,6.74 19.5,6.21 19.57,6.74C19.7,7.79 18.64,11.47 14.3,15.16C14.3,15.16 17.07,18.32 16.8,21.47H13.91M9.17,16.21L11.41,18.71C10.36,19.76 10.22,22 10.22,22H7.07C7.59,17.79 9.17,16.21 9.17,16.21Z" /></g><g id="jsfiddle"><path d="M20.33,10.79C21.9,11.44 23,12.96 23,14.73C23,17.09 21.06,19 18.67,19H5.4C3,18.96 1,17 1,14.62C1,13.03 1.87,11.63 3.17,10.87C3.08,10.59 3.04,10.29 3.04,10C3.04,8.34 4.39,7 6.06,7C6.75,7 7.39,7.25 7.9,7.64C8.96,5.47 11.2,3.96 13.81,3.96C17.42,3.96 20.35,6.85 20.35,10.41C20.35,10.54 20.34,10.67 20.33,10.79M9.22,10.85C7.45,10.85 6,12.12 6,13.67C6,15.23 7.45,16.5 9.22,16.5C10.25,16.5 11.17,16.06 11.76,15.39L10.75,14.25C10.42,14.68 9.77,15 9.22,15C8.43,15 7.79,14.4 7.79,13.67C7.79,12.95 8.43,12.36 9.22,12.36C9.69,12.36 10.12,12.59 10.56,12.88C11,13.16 11.73,14.17 12.31,14.82C13.77,16.29 14.53,16.42 15.4,16.42C17.17,16.42 18.6,15.15 18.6,13.6C18.6,12.04 17.17,10.78 15.4,10.78C14.36,10.78 13.44,11.21 12.85,11.88L13.86,13C14.19,12.59 14.84,12.28 15.4,12.28C16.19,12.28 16.83,12.87 16.83,13.6C16.83,14.32 16.19,14.91 15.4,14.91C14.93,14.91 14.5,14.68 14.05,14.39C13.61,14.11 12.88,13.1 12.31,12.45C10.84,11 10.08,10.85 9.22,10.85Z" /></g><g id="json"><path d="M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z" /></g><g id="keg"><path d="M5,22V20H6V16H5V14H6V11H5V7H11V3H10V2H11L13,2H14V3H13V7H19V11H18V14H19V16H18V20H19V22H5M17,9A1,1 0 0,0 16,8H14A1,1 0 0,0 13,9A1,1 0 0,0 14,10H16A1,1 0 0,0 17,9Z" /></g><g id="kettle"><path d="M12.5,3C7.81,3 4,5.69 4,9V9C4,10.19 4.5,11.34 5.44,12.33C4.53,13.5 4,14.96 4,16.5C4,17.64 4,18.83 4,20C4,21.11 4.89,22 6,22H19C20.11,22 21,21.11 21,20C21,18.85 21,17.61 21,16.5C21,15.28 20.66,14.07 20,13L22,11L19,8L16.9,10.1C15.58,9.38 14.05,9 12.5,9C10.65,9 8.95,9.53 7.55,10.41C7.19,9.97 7,9.5 7,9C7,7.21 9.46,5.75 12.5,5.75V5.75C13.93,5.75 15.3,6.08 16.33,6.67L18.35,4.65C16.77,3.59 14.68,3 12.5,3M12.5,11C12.84,11 13.17,11.04 13.5,11.09C10.39,11.57 8,14.25 8,17.5V20H6V17.5A6.5,6.5 0 0,1 12.5,11Z" /></g><g id="key"><path d="M7,14A2,2 0 0,1 5,12A2,2 0 0,1 7,10A2,2 0 0,1 9,12A2,2 0 0,1 7,14M12.65,10C11.83,7.67 9.61,6 7,6A6,6 0 0,0 1,12A6,6 0 0,0 7,18C9.61,18 11.83,16.33 12.65,14H17V18H21V14H23V10H12.65Z" /></g><g id="key-change"><path d="M6.5,2C8.46,2 10.13,3.25 10.74,5H22V8H18V11H15V8H10.74C10.13,9.75 8.46,11 6.5,11C4,11 2,9 2,6.5C2,4 4,2 6.5,2M6.5,5A1.5,1.5 0 0,0 5,6.5A1.5,1.5 0 0,0 6.5,8A1.5,1.5 0 0,0 8,6.5A1.5,1.5 0 0,0 6.5,5M6.5,13C8.46,13 10.13,14.25 10.74,16H22V19H20V22H18V19H16V22H13V19H10.74C10.13,20.75 8.46,22 6.5,22C4,22 2,20 2,17.5C2,15 4,13 6.5,13M6.5,16A1.5,1.5 0 0,0 5,17.5A1.5,1.5 0 0,0 6.5,19A1.5,1.5 0 0,0 8,17.5A1.5,1.5 0 0,0 6.5,16Z" /></g><g id="key-minus"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H16V19H8V17Z" /></g><g id="key-plus"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M8,17H11V14H13V17H16V19H13V22H11V19H8V17Z" /></g><g id="key-remove"><path d="M6.5,3C8.46,3 10.13,4.25 10.74,6H22V9H18V12H15V9H10.74C10.13,10.75 8.46,12 6.5,12C4,12 2,10 2,7.5C2,5 4,3 6.5,3M6.5,6A1.5,1.5 0 0,0 5,7.5A1.5,1.5 0 0,0 6.5,9A1.5,1.5 0 0,0 8,7.5A1.5,1.5 0 0,0 6.5,6M14.59,14L16,15.41L13.41,18L16,20.59L14.59,22L12,19.41L9.41,22L8,20.59L10.59,18L8,15.41L9.41,14L12,16.59L14.59,14Z" /></g><g id="key-variant"><path d="M22,18V22H18V19H15V16H12L9.74,13.74C9.19,13.91 8.61,14 8,14A6,6 0 0,1 2,8A6,6 0 0,1 8,2A6,6 0 0,1 14,8C14,8.61 13.91,9.19 13.74,9.74L22,18M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z" /></g><g id="keyboard"><path d="M19,10H17V8H19M19,13H17V11H19M16,10H14V8H16M16,13H14V11H16M16,17H8V15H16M7,10H5V8H7M7,13H5V11H7M8,11H10V13H8M8,8H10V10H8M11,11H13V13H11M11,8H13V10H11M20,5H4C2.89,5 2,5.89 2,7V17A2,2 0 0,0 4,19H20A2,2 0 0,0 22,17V7C22,5.89 21.1,5 20,5Z" /></g><g id="keyboard-backspace"><path d="M21,11H6.83L10.41,7.41L9,6L3,12L9,18L10.41,16.58L6.83,13H21V11Z" /></g><g id="keyboard-caps"><path d="M6,18H18V16H6M12,8.41L16.59,13L18,11.58L12,5.58L6,11.58L7.41,13L12,8.41Z" /></g><g id="keyboard-close"><path d="M12,23L16,19H8M19,8H17V6H19M19,11H17V9H19M16,8H14V6H16M16,11H14V9H16M16,15H8V13H16M7,8H5V6H7M7,11H5V9H7M8,9H10V11H8M8,6H10V8H8M11,9H13V11H11M11,6H13V8H11M20,3H4C2.89,3 2,3.89 2,5V15A2,2 0 0,0 4,17H20A2,2 0 0,0 22,15V5C22,3.89 21.1,3 20,3Z" /></g><g id="keyboard-off"><path d="M1,4.27L2.28,3L20,20.72L18.73,22L15.73,19H4C2.89,19 2,18.1 2,17V7C2,6.5 2.18,6.07 2.46,5.73L1,4.27M19,10V8H17V10H19M19,13V11H17V13H19M16,10V8H14V10H16M16,13V11H14V12.18L11.82,10H13V8H11V9.18L9.82,8L6.82,5H20A2,2 0 0,1 22,7V17C22,17.86 21.46,18.59 20.7,18.87L14.82,13H16M8,15V17H13.73L11.73,15H8M5,10H6.73L5,8.27V10M7,13V11H5V13H7M8,13H9.73L8,11.27V13Z" /></g><g id="keyboard-return"><path d="M19,7V11H5.83L9.41,7.41L8,6L2,12L8,18L9.41,16.58L5.83,13H21V7H19Z" /></g><g id="keyboard-tab"><path d="M20,18H22V6H20M11.59,7.41L15.17,11H1V13H15.17L11.59,16.58L13,18L19,12L13,6L11.59,7.41Z" /></g><g id="keyboard-variant"><path d="M6,16H18V18H6V16M6,13V15H2V13H6M7,15V13H10V15H7M11,15V13H13V15H11M14,15V13H17V15H14M18,15V13H22V15H18M2,10H5V12H2V10M19,12V10H22V12H19M18,12H16V10H18V12M8,12H6V10H8V12M12,12H9V10H12V12M15,12H13V10H15V12M2,9V7H4V9H2M5,9V7H7V9H5M8,9V7H10V9H8M11,9V7H13V9H11M14,9V7H16V9H14M17,9V7H22V9H17Z" /></g><g id="kodi"><path d="M12.03,1C11.82,1 11.6,1.11 11.41,1.31C10.56,2.16 9.72,3 8.88,3.84C8.66,4.06 8.6,4.18 8.38,4.38C8.09,4.62 7.96,4.91 7.97,5.28C8,6.57 8,7.84 8,9.13C8,10.46 8,11.82 8,13.16C8,13.26 8,13.34 8.03,13.44C8.11,13.75 8.31,13.82 8.53,13.59C9.73,12.39 10.8,11.3 12,10.09C13.36,8.73 14.73,7.37 16.09,6C16.5,5.6 16.5,5.15 16.09,4.75C14.94,3.6 13.77,2.47 12.63,1.31C12.43,1.11 12.24,1 12.03,1M18.66,7.66C18.45,7.66 18.25,7.75 18.06,7.94C16.91,9.1 15.75,10.24 14.59,11.41C14.2,11.8 14.2,12.23 14.59,12.63C15.74,13.78 16.88,14.94 18.03,16.09C18.43,16.5 18.85,16.5 19.25,16.09C20.36,15 21.5,13.87 22.59,12.75C22.76,12.58 22.93,12.42 23,12.19V11.88C22.93,11.64 22.76,11.5 22.59,11.31C21.47,10.19 20.37,9.06 19.25,7.94C19.06,7.75 18.86,7.66 18.66,7.66M4.78,8.09C4.65,8.04 4.58,8.14 4.5,8.22C3.35,9.39 2.34,10.43 1.19,11.59C0.93,11.86 0.93,12.24 1.19,12.5C1.81,13.13 2.44,13.75 3.06,14.38C3.6,14.92 4,15.33 4.56,15.88C4.72,16.03 4.86,16 4.94,15.81C5,15.71 5,15.58 5,15.47C5,14.29 5,13.37 5,12.19C5,11 5,9.81 5,8.63C5,8.55 5,8.45 4.97,8.38C4.95,8.25 4.9,8.14 4.78,8.09M12.09,14.25C11.89,14.25 11.66,14.34 11.47,14.53C10.32,15.69 9.18,16.87 8.03,18.03C7.63,18.43 7.63,18.85 8.03,19.25C9.14,20.37 10.26,21.47 11.38,22.59C11.54,22.76 11.71,22.93 11.94,23H12.22C12.44,22.94 12.62,22.79 12.78,22.63C13.9,21.5 15.03,20.38 16.16,19.25C16.55,18.85 16.5,18.4 16.13,18C14.97,16.84 13.84,15.69 12.69,14.53C12.5,14.34 12.3,14.25 12.09,14.25Z" /></g><g id="label"><path d="M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z" /></g><g id="label-outline"><path d="M16,17H5V7H16L19.55,12M17.63,5.84C17.27,5.33 16.67,5 16,5H5A2,2 0 0,0 3,7V17A2,2 0 0,0 5,19H16C16.67,19 17.27,18.66 17.63,18.15L22,12L17.63,5.84Z" /></g><g id="lambda"><path d="M6,20L10.16,7.91L9.34,6H8V4H10C10.42,4 10.78,4.26 10.93,4.63L16.66,18H18V20H16C15.57,20 15.21,19.73 15.07,19.36L11.33,10.65L8.12,20H6Z" /></g><g id="lamp"><path d="M8,2H16L20,14H4L8,2M11,15H13V20H18V22H6V20H11V15Z" /></g><g id="lan"><path d="M10,2C8.89,2 8,2.89 8,4V7C8,8.11 8.89,9 10,9H11V11H2V13H6V15H5C3.89,15 3,15.89 3,17V20C3,21.11 3.89,22 5,22H9C10.11,22 11,21.11 11,20V17C11,15.89 10.11,15 9,15H8V13H16V15H15C13.89,15 13,15.89 13,17V20C13,21.11 13.89,22 15,22H19C20.11,22 21,21.11 21,20V17C21,15.89 20.11,15 19,15H18V13H22V11H13V9H14C15.11,9 16,8.11 16,7V4C16,2.89 15.11,2 14,2H10M10,4H14V7H10V4M5,17H9V20H5V17M15,17H19V20H15V17Z" /></g><g id="lan-connect"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,13V18L3,20H10V18H5V13H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M14,15H20V19H14V15Z" /></g><g id="lan-disconnect"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3.88,13.46L2.46,14.88L4.59,17L2.46,19.12L3.88,20.54L6,18.41L8.12,20.54L9.54,19.12L7.41,17L9.54,14.88L8.12,13.46L6,15.59L3.88,13.46M14,15H20V19H14V15Z" /></g><g id="lan-pending"><path d="M4,1C2.89,1 2,1.89 2,3V7C2,8.11 2.89,9 4,9H1V11H13V9H10C11.11,9 12,8.11 12,7V3C12,1.89 11.11,1 10,1H4M4,3H10V7H4V3M3,12V14H5V12H3M14,13C12.89,13 12,13.89 12,15V19C12,20.11 12.89,21 14,21H11V23H23V21H20C21.11,21 22,20.11 22,19V15C22,13.89 21.11,13 20,13H14M3,15V17H5V15H3M14,15H20V19H14V15M3,18V20H5V18H3M6,18V20H8V18H6M9,18V20H11V18H9Z" /></g><g id="language-c"><path d="M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z" /></g><g id="language-cpp"><path d="M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z" /></g><g id="language-csharp"><path d="M11.5,15.97L11.91,18.41C11.65,18.55 11.23,18.68 10.67,18.8C10.1,18.93 9.43,19 8.66,19C6.45,18.96 4.79,18.3 3.68,17.04C2.56,15.77 2,14.16 2,12.21C2.05,9.9 2.72,8.13 4,6.89C5.32,5.64 6.96,5 8.94,5C9.69,5 10.34,5.07 10.88,5.19C11.42,5.31 11.82,5.44 12.08,5.59L11.5,8.08L10.44,7.74C10.04,7.64 9.58,7.59 9.05,7.59C7.89,7.58 6.93,7.95 6.18,8.69C5.42,9.42 5.03,10.54 5,12.03C5,13.39 5.37,14.45 6.08,15.23C6.79,16 7.79,16.4 9.07,16.41L10.4,16.29C10.83,16.21 11.19,16.1 11.5,15.97M13.89,19L14.5,15H13L13.34,13H14.84L15.16,11H13.66L14,9H15.5L16.11,5H18.11L17.5,9H18.5L19.11,5H21.11L20.5,9H22L21.66,11H20.16L19.84,13H21.34L21,15H19.5L18.89,19H16.89L17.5,15H16.5L15.89,19H13.89M16.84,13H17.84L18.16,11H17.16L16.84,13Z" /></g><g id="language-css3"><path d="M5,3L4.35,6.34H17.94L17.5,8.5H3.92L3.26,11.83H16.85L16.09,15.64L10.61,17.45L5.86,15.64L6.19,14H2.85L2.06,18L9.91,21L18.96,18L20.16,11.97L20.4,10.76L21.94,3H5Z" /></g><g id="language-html5"><path d="M12,17.56L16.07,16.43L16.62,10.33H9.38L9.2,8.3H16.8L17,6.31H7L7.56,12.32H14.45L14.22,14.9L12,15.5L9.78,14.9L9.64,13.24H7.64L7.93,16.43L12,17.56M4.07,3H19.93L18.5,19.2L12,21L5.5,19.2L4.07,3Z" /></g><g id="language-javascript"><path d="M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z" /></g><g id="language-php"><path d="M12,18.08C5.37,18.08 0,15.36 0,12C0,8.64 5.37,5.92 12,5.92C18.63,5.92 24,8.64 24,12C24,15.36 18.63,18.08 12,18.08M6.81,10.13C7.35,10.13 7.72,10.23 7.9,10.44C8.08,10.64 8.12,11 8.03,11.47C7.93,12 7.74,12.34 7.45,12.56C7.17,12.78 6.74,12.89 6.16,12.89H5.29L5.82,10.13H6.81M3.31,15.68H4.75L5.09,13.93H6.32C6.86,13.93 7.3,13.87 7.65,13.76C8,13.64 8.32,13.45 8.61,13.18C8.85,12.96 9.04,12.72 9.19,12.45C9.34,12.19 9.45,11.89 9.5,11.57C9.66,10.79 9.55,10.18 9.17,9.75C8.78,9.31 8.18,9.1 7.35,9.1H4.59L3.31,15.68M10.56,7.35L9.28,13.93H10.7L11.44,10.16H12.58C12.94,10.16 13.18,10.22 13.29,10.34C13.4,10.46 13.42,10.68 13.36,11L12.79,13.93H14.24L14.83,10.86C14.96,10.24 14.86,9.79 14.56,9.5C14.26,9.23 13.71,9.1 12.91,9.1H11.64L12,7.35H10.56M18,10.13C18.55,10.13 18.91,10.23 19.09,10.44C19.27,10.64 19.31,11 19.22,11.47C19.12,12 18.93,12.34 18.65,12.56C18.36,12.78 17.93,12.89 17.35,12.89H16.5L17,10.13H18M14.5,15.68H15.94L16.28,13.93H17.5C18.05,13.93 18.5,13.87 18.85,13.76C19.2,13.64 19.5,13.45 19.8,13.18C20.04,12.96 20.24,12.72 20.38,12.45C20.53,12.19 20.64,11.89 20.7,11.57C20.85,10.79 20.74,10.18 20.36,9.75C20,9.31 19.37,9.1 18.54,9.1H15.79L14.5,15.68Z" /></g><g id="language-python"><path d="M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z" /></g><g id="language-python-text"><path d="M2,5.69C8.92,1.07 11.1,7 11.28,10.27C11.46,13.53 8.29,17.64 4.31,14.92V20.3L2,18.77V5.69M4.22,7.4V12.78C7.84,14.95 9.08,13.17 9.08,10.09C9.08,5.74 6.57,5.59 4.22,7.4M15.08,4.15C15.08,4.15 14.9,7.64 15.08,11.07C15.44,14.5 19.69,11.84 19.69,11.84V4.92L22,5.2V14.44C22,20.6 15.85,20.3 15.85,20.3L15.08,18C20.46,18 19.78,14.43 19.78,14.43C13.27,16.97 12.77,12.61 12.77,12.61V5.69L15.08,4.15Z" /></g><g id="language-swift"><path d="M17.09,19.72C14.73,21.08 11.5,21.22 8.23,19.82C5.59,18.7 3.4,16.74 2,14.5C2.67,15.05 3.46,15.5 4.3,15.9C7.67,17.47 11.03,17.36 13.4,15.9C10.03,13.31 7.16,9.94 5.03,7.19C4.58,6.74 4.25,6.18 3.91,5.68C12.19,11.73 11.83,13.27 6.32,4.67C11.21,9.61 15.75,12.41 15.75,12.41C15.91,12.5 16,12.57 16.11,12.63C16.21,12.38 16.3,12.12 16.37,11.85C17.16,9 16.26,5.73 14.29,3.04C18.84,5.79 21.54,10.95 20.41,15.28C20.38,15.39 20.35,15.5 20.36,15.67C22.6,18.5 22,21.45 21.71,20.89C20.5,18.5 18.23,19.24 17.09,19.72V19.72Z" /></g><g id="language-typescript"><path d="M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z" /></g><g id="laptop"><path d="M4,6H20V16H4M20,18A2,2 0 0,0 22,16V6C22,4.89 21.1,4 20,4H4C2.89,4 2,4.89 2,6V16A2,2 0 0,0 4,18H0V20H24V18H20Z" /></g><g id="laptop-chromebook"><path d="M20,15H4V5H20M14,18H10V17H14M22,18V3H2V18H0V20H24V18H22Z" /></g><g id="laptop-mac"><path d="M12,19A1,1 0 0,1 11,18A1,1 0 0,1 12,17A1,1 0 0,1 13,18A1,1 0 0,1 12,19M4,5H20V16H4M20,18A2,2 0 0,0 22,16V5C22,3.89 21.1,3 20,3H4C2.89,3 2,3.89 2,5V16A2,2 0 0,0 4,18H0A2,2 0 0,0 2,20H22A2,2 0 0,0 24,18H20Z" /></g><g id="laptop-off"><path d="M1,4.27L2.28,3L20,20.72L18.73,22L16.73,20H0V18H4C2.89,18 2,17.1 2,16V6C2,5.78 2.04,5.57 2.1,5.37L1,4.27M4,16H12.73L4,7.27V16M20,16V6H7.82L5.82,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H21.82L17.82,16H20Z" /></g><g id="laptop-windows"><path d="M3,4H21A1,1 0 0,1 22,5V16A1,1 0 0,1 21,17H22L24,20V21H0V20L2,17H3A1,1 0 0,1 2,16V5A1,1 0 0,1 3,4M4,6V15H20V6H4Z" /></g><g id="lastfm"><path d="M18,17.93C15.92,17.92 14.81,16.9 14.04,15.09L13.82,14.6L11.92,10.23C11.29,8.69 9.72,7.64 7.96,7.64C5.57,7.64 3.63,9.59 3.63,12C3.63,14.41 5.57,16.36 7.96,16.36C9.62,16.36 11.08,15.41 11.8,14L12.57,15.81C11.5,17.15 9.82,18 7.96,18C4.67,18 2,15.32 2,12C2,8.69 4.67,6 7.96,6C10.44,6 12.45,7.34 13.47,9.7C13.54,9.89 14.54,12.24 15.42,14.24C15.96,15.5 16.42,16.31 17.91,16.36C19.38,16.41 20.39,15.5 20.39,14.37C20.39,13.26 19.62,13 18.32,12.56C16,11.79 14.79,11 14.79,9.15C14.79,7.33 16,6.12 18,6.12C19.31,6.12 20.24,6.7 20.89,7.86L19.62,8.5C19.14,7.84 18.61,7.57 17.94,7.57C17,7.57 16.33,8.23 16.33,9.1C16.33,10.34 17.43,10.53 18.97,11.03C21.04,11.71 22,12.5 22,14.42C22,16.45 20.27,17.93 18,17.93Z" /></g><g id="launch"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" /></g><g id="layers"><path d="M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z" /></g><g id="layers-off"><path d="M3.27,1L2,2.27L6.22,6.5L3,9L4.63,10.27L12,16L14.1,14.37L15.53,15.8L12,18.54L4.63,12.81L3,14.07L12,21.07L16.95,17.22L20.73,21L22,19.73L3.27,1M19.36,10.27L21,9L12,2L9.09,4.27L16.96,12.15L19.36,10.27M19.81,15L21,14.07L19.57,12.64L18.38,13.56L19.81,15Z" /></g><g id="lead-pencil"><path d="M16.84,2.73C16.45,2.73 16.07,2.88 15.77,3.17L13.65,5.29L18.95,10.6L21.07,8.5C21.67,7.89 21.67,6.94 21.07,6.36L17.9,3.17C17.6,2.88 17.22,2.73 16.84,2.73M12.94,6L4.84,14.11L7.4,14.39L7.58,16.68L9.86,16.85L10.15,19.41L18.25,11.3M4.25,15.04L2.5,21.73L9.2,19.94L8.96,17.78L6.65,17.61L6.47,15.29" /></g><g id="leaf"><path d="M17,8C8,10 5.9,16.17 3.82,21.34L5.71,22L6.66,19.7C7.14,19.87 7.64,20 8,20C19,20 22,3 22,3C21,5 14,5.25 9,6.25C4,7.25 2,11.5 2,13.5C2,15.5 3.75,17.25 3.75,17.25C7,8 17,8 17,8Z" /></g><g id="led-off"><path d="M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6Z" /></g><g id="led-on"><path d="M11,0V4H13V0H11M18.3,2.29L15.24,5.29L16.64,6.71L19.7,3.71L18.3,2.29M5.71,2.29L4.29,3.71L7.29,6.71L8.71,5.29L5.71,2.29M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M2,9V11H6V9H2M18,9V11H22V9H18Z" /></g><g id="led-outline"><path d="M12,6A4,4 0 0,0 8,10V16H6V18H9V23H11V18H13V23H15V18H18V16H16V10A4,4 0 0,0 12,6M12,8A2,2 0 0,1 14,10V15H10V10A2,2 0 0,1 12,8Z" /></g><g id="led-variant-off"><path d="M12,3C10.05,3 8.43,4.4 8.08,6.25L16.82,15H18V13H16V7A4,4 0 0,0 12,3M3.28,4L2,5.27L8,11.27V13H6V15H9V21H11V15H11.73L13,16.27V21H15V18.27L18.73,22L20,20.72L15,15.72L8,8.72L3.28,4Z" /></g><g id="led-variant-on"><path d="M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3Z" /></g><g id="led-variant-outline"><path d="M12,3A4,4 0 0,0 8,7V13H6V15H9V21H11V15H13V21H15V15H18V13H16V7A4,4 0 0,0 12,3M12,5A2,2 0 0,1 14,7V12H10V7A2,2 0 0,1 12,5Z" /></g><g id="library"><path d="M12,8A3,3 0 0,0 15,5A3,3 0 0,0 12,2A3,3 0 0,0 9,5A3,3 0 0,0 12,8M12,11.54C9.64,9.35 6.5,8 3,8V19C6.5,19 9.64,20.35 12,22.54C14.36,20.35 17.5,19 21,19V8C17.5,8 14.36,9.35 12,11.54Z" /></g><g id="library-books"><path d="M19,7H9V5H19M15,15H9V13H15M19,11H9V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z" /></g><g id="library-music"><path d="M4,6H2V20A2,2 0 0,0 4,22H18V20H4M18,7H15V12.5A2.5,2.5 0 0,1 12.5,15A2.5,2.5 0 0,1 10,12.5A2.5,2.5 0 0,1 12.5,10C13.07,10 13.58,10.19 14,10.5V5H18M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2Z" /></g><g id="library-plus"><path d="M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z" /></g><g id="lightbulb"><path d="M12,2A7,7 0 0,0 5,9C5,11.38 6.19,13.47 8,14.74V17A1,1 0 0,0 9,18H15A1,1 0 0,0 16,17V14.74C17.81,13.47 19,11.38 19,9A7,7 0 0,0 12,2M9,21A1,1 0 0,0 10,22H14A1,1 0 0,0 15,21V20H9V21Z" /></g><g id="lightbulb-on"><path d="M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z" /></g><g id="lightbulb-on-outline"><path d="M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M11,18H13V15.87C14.73,15.43 16,13.86 16,12A4,4 0 0,0 12,8A4,4 0 0,0 8,12C8,13.86 9.27,15.43 11,15.87V18Z" /></g><g id="lightbulb-outline"><path d="M12,2A7,7 0 0,1 19,9C19,11.38 17.81,13.47 16,14.74V17A1,1 0 0,1 15,18H9A1,1 0 0,1 8,17V14.74C6.19,13.47 5,11.38 5,9A7,7 0 0,1 12,2M9,21V20H15V21A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21M12,4A5,5 0 0,0 7,9C7,11.05 8.23,12.81 10,13.58V16H14V13.58C15.77,12.81 17,11.05 17,9A5,5 0 0,0 12,4Z" /></g><g id="link"><path d="M16,6H13V7.9H16C18.26,7.9 20.1,9.73 20.1,12A4.1,4.1 0 0,1 16,16.1H13V18H16A6,6 0 0,0 22,12C22,8.68 19.31,6 16,6M3.9,12C3.9,9.73 5.74,7.9 8,7.9H11V6H8A6,6 0 0,0 2,12A6,6 0 0,0 8,18H11V16.1H8C5.74,16.1 3.9,14.26 3.9,12M8,13H16V11H8V13Z" /></g><g id="link-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L14.73,18H13V16.27L9.73,13H8V11.27L5.5,8.76C4.5,9.5 3.9,10.68 3.9,12C3.9,14.26 5.74,16.1 8,16.1H11V18H8A6,6 0 0,1 2,12C2,10.16 2.83,8.5 4.14,7.41L2,5.27M16,6A6,6 0 0,1 22,12C22,14.21 20.8,16.15 19,17.19L17.6,15.77C19.07,15.15 20.1,13.7 20.1,12C20.1,9.73 18.26,7.9 16,7.9H13V6H16M8,6H11V7.9H9.72L7.82,6H8M16,11V13H14.82L12.82,11H16Z" /></g><g id="link-variant"><path d="M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></g><g id="link-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L13.9,17.17L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L12.5,15.76L10.88,14.15C10.87,14.39 10.77,14.64 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C8.12,13.77 7.63,12.37 7.72,11L2,5.27M12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.79,8.97L9.38,7.55L12.71,4.22M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.2,10.54 16.61,12.5 16.06,14.23L14.28,12.46C14.23,11.78 13.94,11.11 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z" /></g><g id="linkedin"><path d="M21,21H17V14.25C17,13.19 15.81,12.31 14.75,12.31C13.69,12.31 13,13.19 13,14.25V21H9V9H13V11C13.66,9.93 15.36,9.24 16.5,9.24C19,9.24 21,11.28 21,13.75V21M7,21H3V9H7V21M5,3A2,2 0 0,1 7,5A2,2 0 0,1 5,7A2,2 0 0,1 3,5A2,2 0 0,1 5,3Z" /></g><g id="linkedin-box"><path d="M19,19H16V13.7A1.5,1.5 0 0,0 14.5,12.2A1.5,1.5 0 0,0 13,13.7V19H10V10H13V11.2C13.5,10.36 14.59,9.8 15.5,9.8A3.5,3.5 0 0,1 19,13.3M6.5,8.31C5.5,8.31 4.69,7.5 4.69,6.5A1.81,1.81 0 0,1 6.5,4.69C7.5,4.69 8.31,5.5 8.31,6.5A1.81,1.81 0 0,1 6.5,8.31M8,19H5V10H8M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="linux"><path d="M13.18,14.5C12.53,15.26 11.47,15.26 10.82,14.5L7.44,10.5C7.16,11.28 7,12.12 7,13C7,14.67 7.57,16.18 8.5,17.27C10,17.37 11.29,17.96 11.78,19C11.85,19 11.93,19 12.22,19C12.71,18 13.95,17.44 15.46,17.33C16.41,16.24 17,14.7 17,13C17,12.12 16.84,11.28 16.56,10.5L13.18,14.5M20,20.75C20,21.3 19.3,22 18.75,22H13.25C12.7,22 12,21.3 12,20.75C12,21.3 11.3,22 10.75,22H5.25C4.7,22 4,21.3 4,20.75C4,19.45 4.94,18.31 6.3,17.65C5.5,16.34 5,14.73 5,13C4,15 2.7,15.56 2.09,15C1.5,14.44 1.79,12.83 3.1,11.41C3.84,10.6 5,9.62 5.81,9.25C6.13,8.56 6.54,7.93 7,7.38V7A5,5 0 0,1 12,2A5,5 0 0,1 17,7V7.38C17.46,7.93 17.87,8.56 18.19,9.25C19,9.62 20.16,10.6 20.9,11.41C22.21,12.83 22.5,14.44 21.91,15C21.3,15.56 20,15 19,13C19,14.75 18.5,16.37 17.67,17.69C19.05,18.33 20,19.44 20,20.75M9.88,9C9.46,9.5 9.46,10.27 9.88,10.75L11.13,12.25C11.54,12.73 12.21,12.73 12.63,12.25L13.88,10.75C14.29,10.27 14.29,9.5 13.88,9H9.88M10,5.25C9.45,5.25 9,5.9 9,7C9,8.1 9.45,8.75 10,8.75C10.55,8.75 11,8.1 11,7C11,5.9 10.55,5.25 10,5.25M14,5.25C13.45,5.25 13,5.9 13,7C13,8.1 13.45,8.75 14,8.75C14.55,8.75 15,8.1 15,7C15,5.9 14.55,5.25 14,5.25Z" /></g><g id="lock"><path d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></g><g id="lock-open"><path d="M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z" /></g><g id="lock-open-outline"><path d="M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,1 10,15A2,2 0 0,1 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17Z" /></g><g id="lock-outline"><path d="M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M18,20V10H6V20H18M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10C4,8.89 4.89,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></g><g id="lock-pattern"><path d="M7,3A4,4 0 0,1 11,7C11,8.86 9.73,10.43 8,10.87V13.13C8.37,13.22 8.72,13.37 9.04,13.56L13.56,9.04C13.2,8.44 13,7.75 13,7A4,4 0 0,1 17,3A4,4 0 0,1 21,7A4,4 0 0,1 17,11C16.26,11 15.57,10.8 15,10.45L10.45,15C10.8,15.57 11,16.26 11,17A4,4 0 0,1 7,21A4,4 0 0,1 3,17C3,15.14 4.27,13.57 6,13.13V10.87C4.27,10.43 3,8.86 3,7A4,4 0 0,1 7,3M17,13A4,4 0 0,1 21,17A4,4 0 0,1 17,21A4,4 0 0,1 13,17A4,4 0 0,1 17,13M17,15A2,2 0 0,0 15,17A2,2 0 0,0 17,19A2,2 0 0,0 19,17A2,2 0 0,0 17,15Z" /></g><g id="lock-plus"><path d="M18,8H17V6A5,5 0 0,0 12,1A5,5 0 0,0 7,6V8H6A2,2 0 0,0 4,10V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V10A2,2 0 0,0 18,8M8.9,6C8.9,4.29 10.29,2.9 12,2.9C13.71,2.9 15.1,4.29 15.1,6V8H8.9V6M16,16H13V19H11V16H8V14H11V11H13V14H16V16Z" /></g><g id="login"><path d="M10,17.25V14H3V10H10V6.75L15.25,12L10,17.25M8,2H17A2,2 0 0,1 19,4V20A2,2 0 0,1 17,22H8A2,2 0 0,1 6,20V16H8V20H17V4H8V8H6V4A2,2 0 0,1 8,2Z" /></g><g id="login-variant"><path d="M19,3H5C3.89,3 3,3.89 3,5V9H5V5H19V19H5V15H3V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10.08,15.58L11.5,17L16.5,12L11.5,7L10.08,8.41L12.67,11H3V13H12.67L10.08,15.58Z" /></g><g id="logout"><path d="M17,17.25V14H10V10H17V6.75L22.25,12L17,17.25M13,2A2,2 0 0,1 15,4V8H13V4H4V20H13V16H15V20A2,2 0 0,1 13,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2H13Z" /></g><g id="logout-variant"><path d="M14.08,15.59L16.67,13H7V11H16.67L14.08,8.41L15.5,7L20.5,12L15.5,17L14.08,15.59M19,3A2,2 0 0,1 21,5V9.67L19,7.67V5H5V19H19V16.33L21,14.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19Z" /></g><g id="looks"><path d="M12,6A11,11 0 0,0 1,17H3C3,12.04 7.04,8 12,8C16.96,8 21,12.04 21,17H23A11,11 0 0,0 12,6M12,10C8.14,10 5,13.14 5,17H7A5,5 0 0,1 12,12A5,5 0 0,1 17,17H19C19,13.14 15.86,10 12,10Z" /></g><g id="loop"><path d="M9,14V21H2V19H5.57C4,17.3 3,15 3,12.5A9.5,9.5 0 0,1 12.5,3A9.5,9.5 0 0,1 22,12.5A9.5,9.5 0 0,1 12.5,22H12V20H12.5A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5A7.5,7.5 0 0,0 5,12.5C5,14.47 5.76,16.26 7,17.6V14H9Z" /></g><g id="loupe"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22H20A2,2 0 0,0 22,20V12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z" /></g><g id="lumx"><path d="M12.35,1.75L20.13,9.53L13.77,15.89L12.35,14.47L17.3,9.53L10.94,3.16L12.35,1.75M15.89,9.53L14.47,10.94L10.23,6.7L5.28,11.65L3.87,10.23L10.23,3.87L15.89,9.53M10.23,8.11L11.65,9.53L6.7,14.47L13.06,20.84L11.65,22.25L3.87,14.47L10.23,8.11M8.11,14.47L9.53,13.06L13.77,17.3L18.72,12.35L20.13,13.77L13.77,20.13L8.11,14.47Z" /></g><g id="magnet"><path d="M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3" /></g><g id="magnet-on"><path d="M3,7V13A9,9 0 0,0 12,22A9,9 0 0,0 21,13V7H17V13A5,5 0 0,1 12,18A5,5 0 0,1 7,13V7M17,5H21V2H17M3,5H7V2H3M13,1.5L9,9H11V14.5L15,7H13V1.5Z" /></g><g id="magnify"><path d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></g><g id="magnify-minus"><path d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M5,8V10H13V8H5Z" /></g><g id="magnify-plus"><path d="M9,2A7,7 0 0,1 16,9C16,10.57 15.5,12 14.61,13.19L15.41,14H16L22,20L20,22L14,16V15.41L13.19,14.61C12,15.5 10.57,16 9,16A7,7 0 0,1 2,9A7,7 0 0,1 9,2M8,5V8H5V10H8V13H10V10H13V8H10V5H8Z" /></g><g id="mail-ru"><path d="M15.45,11.91C15.34,9.7 13.7,8.37 11.72,8.37H11.64C9.35,8.37 8.09,10.17 8.09,12.21C8.09,14.5 9.62,15.95 11.63,15.95C13.88,15.95 15.35,14.3 15.46,12.36M11.65,6.39C13.18,6.39 14.62,7.07 15.67,8.13V8.13C15.67,7.62 16,7.24 16.5,7.24H16.61C17.35,7.24 17.5,7.94 17.5,8.16V16.06C17.46,16.58 18.04,16.84 18.37,16.5C19.64,15.21 21.15,9.81 17.58,6.69C14.25,3.77 9.78,4.25 7.4,5.89C4.88,7.63 3.26,11.5 4.83,15.11C6.54,19.06 11.44,20.24 14.35,19.06C15.83,18.47 16.5,20.46 15,21.11C12.66,22.1 6.23,22 3.22,16.79C1.19,13.27 1.29,7.08 6.68,3.87C10.81,1.42 16.24,2.1 19.5,5.5C22.95,9.1 22.75,15.8 19.4,18.41C17.89,19.59 15.64,18.44 15.66,16.71L15.64,16.15C14.59,17.2 13.18,17.81 11.65,17.81C8.63,17.81 6,15.15 6,12.13C6,9.08 8.63,6.39 11.65,6.39Z" /></g><g id="mailbox"><path d="M20,6H10V12H8V4H14V0H6V6H4A2,2 0 0,0 2,8V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V8A2,2 0 0,0 20,6Z" /></g><g id="map"><path d="M15,19L9,16.89V5L15,7.11M20.5,3C20.44,3 20.39,3 20.34,3L15,5.1L9,3L3.36,4.9C3.15,4.97 3,5.15 3,5.38V20.5A0.5,0.5 0 0,0 3.5,21C3.55,21 3.61,21 3.66,20.97L9,18.9L15,21L20.64,19.1C20.85,19 21,18.85 21,18.62V3.5A0.5,0.5 0 0,0 20.5,3Z" /></g><g id="map-marker"><path d="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z" /></g><g id="map-marker-circle"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,12.5A1.5,1.5 0 0,1 10.5,11A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 13.5,11A1.5,1.5 0 0,1 12,12.5M12,7.2C9.9,7.2 8.2,8.9 8.2,11C8.2,14 12,17.5 12,17.5C12,17.5 15.8,14 15.8,11C15.8,8.9 14.1,7.2 12,7.2Z" /></g><g id="map-marker-minus"><path d="M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H23V19H15V17Z" /></g><g id="map-marker-multiple"><path d="M14,11.5A2.5,2.5 0 0,0 16.5,9A2.5,2.5 0 0,0 14,6.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 14,11.5M14,2C17.86,2 21,5.13 21,9C21,14.25 14,22 14,22C14,22 7,14.25 7,9A7,7 0 0,1 14,2M5,9C5,13.5 10.08,19.66 11,20.81L10,22C10,22 3,14.25 3,9C3,5.83 5.11,3.15 8,2.29C6.16,3.94 5,6.33 5,9Z" /></g><g id="map-marker-off"><path d="M16.37,16.1L11.75,11.47L11.64,11.36L3.27,3L2,4.27L5.18,7.45C5.06,7.95 5,8.46 5,9C5,14.25 12,22 12,22C12,22 13.67,20.15 15.37,17.65L18.73,21L20,19.72M12,6.5A2.5,2.5 0 0,1 14.5,9C14.5,9.73 14.17,10.39 13.67,10.85L17.3,14.5C18.28,12.62 19,10.68 19,9A7,7 0 0,0 12,2C10,2 8.24,2.82 6.96,4.14L10.15,7.33C10.61,6.82 11.26,6.5 12,6.5Z" /></g><g id="map-marker-plus"><path d="M9,11.5A2.5,2.5 0 0,0 11.5,9A2.5,2.5 0 0,0 9,6.5A2.5,2.5 0 0,0 6.5,9A2.5,2.5 0 0,0 9,11.5M9,2C12.86,2 16,5.13 16,9C16,14.25 9,22 9,22C9,22 2,14.25 2,9A7,7 0 0,1 9,2M15,17H18V14H20V17H23V19H20V22H18V19H15V17Z" /></g><g id="map-marker-radius"><path d="M12,2C15.31,2 18,4.66 18,7.95C18,12.41 12,19 12,19C12,19 6,12.41 6,7.95C6,4.66 8.69,2 12,2M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M20,19C20,21.21 16.42,23 12,23C7.58,23 4,21.21 4,19C4,17.71 5.22,16.56 7.11,15.83L7.75,16.74C6.67,17.19 6,17.81 6,18.5C6,19.88 8.69,21 12,21C15.31,21 18,19.88 18,18.5C18,17.81 17.33,17.19 16.25,16.74L16.89,15.83C18.78,16.56 20,17.71 20,19Z" /></g><g id="margin"><path d="M14.63,6.78L12.9,5.78L18.5,2.08L18.1,8.78L16.37,7.78L8.73,21H6.42L14.63,6.78M17.5,12C19.43,12 21,13.74 21,16.5C21,19.26 19.43,21 17.5,21C15.57,21 14,19.26 14,16.5C14,13.74 15.57,12 17.5,12M17.5,14C16.67,14 16,14.84 16,16.5C16,18.16 16.67,19 17.5,19C18.33,19 19,18.16 19,16.5C19,14.84 18.33,14 17.5,14M7.5,5C9.43,5 11,6.74 11,9.5C11,12.26 9.43,14 7.5,14C5.57,14 4,12.26 4,9.5C4,6.74 5.57,5 7.5,5M7.5,7C6.67,7 6,7.84 6,9.5C6,11.16 6.67,12 7.5,12C8.33,12 9,11.16 9,9.5C9,7.84 8.33,7 7.5,7Z" /></g><g id="markdown"><path d="M2,16V8H4L7,11L10,8H12V16H10V10.83L7,13.83L4,10.83V16H2M16,8H19V12H21.5L17.5,16.5L13.5,12H16V8Z" /></g><g id="marker"><path d="M18.5,1.15C17.97,1.15 17.46,1.34 17.07,1.73L11.26,7.55L16.91,13.2L22.73,7.39C23.5,6.61 23.5,5.35 22.73,4.56L19.89,1.73C19.5,1.34 19,1.15 18.5,1.15M10.3,8.5L4.34,14.46C3.56,15.24 3.56,16.5 4.36,17.31C3.14,18.54 1.9,19.77 0.67,21H6.33L7.19,20.14C7.97,20.9 9.22,20.89 10,20.12L15.95,14.16" /></g><g id="marker-check"><path d="M10,16L5,11L6.41,9.58L10,13.17L17.59,5.58L19,7M19,1H5C3.89,1 3,1.89 3,3V15.93C3,16.62 3.35,17.23 3.88,17.59L12,23L20.11,17.59C20.64,17.23 21,16.62 21,15.93V3C21,1.89 20.1,1 19,1Z" /></g><g id="martini"><path d="M7.5,7L5.5,5H18.5L16.5,7M11,13V19H6V21H18V19H13V13L21,5V3H3V5L11,13Z" /></g><g id="material-ui"><path d="M8,16.61V15.37L14,11.91V7.23L9,10.12L4,7.23V13L3,13.58L2,13V5L3.07,4.38L9,7.81L12.93,5.54L14.93,4.38L16,5V13.06L10.92,16L14.97,18.33L20,15.43V11L21,10.42L22,11V16.58L14.97,20.64L8,16.61M22,9.75L21,10.33L20,9.75V8.58L21,8L22,8.58V9.75Z" /></g><g id="math-compass"><path d="M13,4.2V3C13,2.4 12.6,2 12,2V4.2C9.8,4.6 9,5.7 9,7C9,7.8 9.3,8.5 9.8,9L4,19.9V22L6.2,20L11.6,10C11.7,10 11.9,10 12,10C13.7,10 15,8.7 15,7C15,5.7 14.2,4.6 13,4.2M12.9,7.5C12.7,7.8 12.4,8 12,8C11.4,8 11,7.6 11,7C11,6.8 11.1,6.7 11.1,6.5C11.3,6.2 11.6,6 12,6C12.6,6 13,6.4 13,7C13,7.2 12.9,7.3 12.9,7.5M20,19.9V22H20L17.8,20L13.4,11.8C14.1,11.6 14.7,11.3 15.2,10.9L20,19.9Z" /></g><g id="matrix"><path d="M2,2H6V4H4V20H6V22H2V2M20,4H18V2H22V22H18V20H20V4M9,5H10V10H11V11H8V10H9V6L8,6.5V5.5L9,5M15,13H16V18H17V19H14V18H15V14L14,14.5V13.5L15,13M9,13C10.1,13 11,14.34 11,16C11,17.66 10.1,19 9,19C7.9,19 7,17.66 7,16C7,14.34 7.9,13 9,13M9,14C8.45,14 8,14.9 8,16C8,17.1 8.45,18 9,18C9.55,18 10,17.1 10,16C10,14.9 9.55,14 9,14M15,5C16.1,5 17,6.34 17,8C17,9.66 16.1,11 15,11C13.9,11 13,9.66 13,8C13,6.34 13.9,5 15,5M15,6C14.45,6 14,6.9 14,8C14,9.1 14.45,10 15,10C15.55,10 16,9.1 16,8C16,6.9 15.55,6 15,6Z" /></g><g id="maxcdn"><path d="M20.6,6.69C19.73,5.61 18.38,5 16.9,5H2.95L4.62,8.57L2.39,19H6.05L8.28,8.57H11.4L9.17,19H12.83L15.06,8.57H16.9C17.3,8.57 17.63,8.7 17.82,8.94C18,9.17 18.07,9.5 18,9.9L16.04,19H19.69L21.5,10.65C21.78,9.21 21.46,7.76 20.6,6.69Z" /></g><g id="medical-bag"><path d="M10,3L8,5V7H5C3.85,7 3.12,8 3,9L2,19C1.88,20 2.54,21 4,21H20C21.46,21 22.12,20 22,19L21,9C20.88,8 20.06,7 19,7H16V5L14,3H10M10,5H14V7H10V5M11,10H13V13H16V15H13V18H11V15H8V13H11V10Z" /></g><g id="medium"><path d="M21.93,6.62L15.89,16.47L11.57,9.43L15,3.84C15.17,3.58 15.5,3.47 15.78,3.55L21.93,6.62M22,19.78C22,20.35 21.5,20.57 20.89,20.26L16.18,17.91L22,8.41V19.78M9,19.94C9,20.5 8.57,20.76 8.07,20.5L2.55,17.76C2.25,17.6 2,17.2 2,16.86V4.14C2,3.69 2.33,3.5 2.74,3.68L8.7,6.66L9,7.12V19.94M15.29,17.46L10,14.81V8.81L15.29,17.46Z" /></g><g id="memory"><path d="M17,17H7V7H17M21,11V9H19V7C19,5.89 18.1,5 17,5H15V3H13V5H11V3H9V5H7C5.89,5 5,5.89 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11M13,13H11V11H13M15,9H9V15H15V9Z" /></g><g id="menu"><path d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z" /></g><g id="menu-down"><path d="M7,10L12,15L17,10H7Z" /></g><g id="menu-down-outline"><path d="M18,9V10.5L12,16.5L6,10.5V9H18M12,13.67L14.67,11H9.33L12,13.67Z" /></g><g id="menu-left"><path d="M14,7L9,12L14,17V7Z" /></g><g id="menu-right"><path d="M10,17L15,12L10,7V17Z" /></g><g id="menu-up"><path d="M7,15L12,10L17,15H7Z" /></g><g id="menu-up-outline"><path d="M18,16V14.5L12,8.5L6,14.5V16H18M12,11.33L14.67,14H9.33L12,11.33Z" /></g><g id="message"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-alert"><path d="M13,10H11V6H13M13,14H11V12H13M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-bulleted"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M8,14H6V12H8V14M8,11H6V9H8V11M8,8H6V6H8V8M15,14H10V12H15V14M18,11H10V9H18V11M18,8H10V6H18V8Z" /></g><g id="message-bulleted-off"><path d="M1.27,1.73L0,3L2,5V22L6,18H15L20.73,23.73L22,22.46L1.27,1.73M8,14H6V12H8V14M6,11V9L8,11H6M20,2H4.08L10,7.92V6H18V8H10.08L11.08,9H18V11H13.08L20.07,18C21.14,17.95 22,17.08 22,16V4A2,2 0 0,0 20,2Z" /></g><g id="message-draw"><path d="M18,14H10.5L12.5,12H18M6,14V11.5L12.88,4.64C13.07,4.45 13.39,4.45 13.59,4.64L15.35,6.41C15.55,6.61 15.55,6.92 15.35,7.12L8.47,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-image"><path d="M5,14L8.5,9.5L11,12.5L14.5,8L19,14M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-outline"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M20,16H6L4,18V4H20" /></g><g id="message-plus"><path d="M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M11,6V9H8V11H11V14H13V11H16V9H13V6H11Z" /></g><g id="message-processing"><path d="M17,11H15V9H17M13,11H11V9H13M9,11H7V9H9M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="message-reply"><path d="M22,4C22,2.89 21.1,2 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z" /></g><g id="message-reply-text"><path d="M18,8H6V6H18V8M18,11H6V9H18V11M18,14H6V12H18V14M22,4A2,2 0 0,0 20,2H4A2,2 0 0,0 2,4V16A2,2 0 0,0 4,18H18L22,22V4Z" /></g><g id="message-settings"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M11,24H13V22H11V24M7,24H9V22H7V24M15,24H17V22H15V24Z" /></g><g id="message-settings-variant"><path d="M13.5,10A1.5,1.5 0 0,1 12,11.5C11.16,11.5 10.5,10.83 10.5,10A1.5,1.5 0 0,1 12,8.5A1.5,1.5 0 0,1 13.5,10M22,4V16A2,2 0 0,1 20,18H6L2,22V4A2,2 0 0,1 4,2H20A2,2 0 0,1 22,4M16.77,11.32L15.7,10.5C15.71,10.33 15.71,10.16 15.7,10C15.72,9.84 15.72,9.67 15.7,9.5L16.76,8.68C16.85,8.6 16.88,8.47 16.82,8.36L15.82,6.63C15.76,6.5 15.63,6.47 15.5,6.5L14.27,7C14,6.8 13.73,6.63 13.42,6.5L13.23,5.19C13.21,5.08 13.11,5 13,5H11C10.88,5 10.77,5.09 10.75,5.21L10.56,6.53C10.26,6.65 9.97,6.81 9.7,7L8.46,6.5C8.34,6.46 8.21,6.5 8.15,6.61L7.15,8.34C7.09,8.45 7.11,8.58 7.21,8.66L8.27,9.5C8.23,9.82 8.23,10.16 8.27,10.5L7.21,11.32C7.12,11.4 7.09,11.53 7.15,11.64L8.15,13.37C8.21,13.5 8.34,13.53 8.46,13.5L9.7,13C9.96,13.2 10.24,13.37 10.55,13.5L10.74,14.81C10.77,14.93 10.88,15 11,15H13C13.12,15 13.23,14.91 13.25,14.79L13.44,13.47C13.74,13.34 14,13.18 14.28,13L15.53,13.5C15.65,13.5 15.78,13.5 15.84,13.37L16.84,11.64C16.9,11.53 16.87,11.4 16.77,11.32Z" /></g><g id="message-text"><path d="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18" /></g><g id="message-text-outline"><path d="M20,2A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H6L2,22V4C2,2.89 2.9,2 4,2H20M4,4V17.17L5.17,16H20V4H4M6,7H18V9H6V7M6,11H15V13H6V11Z" /></g><g id="message-video"><path d="M18,14L14,10.8V14H6V6H14V9.2L18,6M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z" /></g><g id="meteor"><path d="M2.8,3L19.67,18.82C19.67,18.82 20,19.27 19.58,19.71C19.17,20.15 18.63,19.77 18.63,19.77L2.8,3M7.81,4.59L20.91,16.64C20.91,16.64 21.23,17.08 20.82,17.5C20.4,17.97 19.86,17.59 19.86,17.59L7.81,4.59M4.29,8L17.39,20.03C17.39,20.03 17.71,20.47 17.3,20.91C16.88,21.36 16.34,21 16.34,21L4.29,8M12.05,5.96L21.2,14.37C21.2,14.37 21.42,14.68 21.13,15C20.85,15.3 20.47,15.03 20.47,15.03L12.05,5.96M5.45,11.91L14.6,20.33C14.6,20.33 14.82,20.64 14.54,20.95C14.25,21.26 13.87,21 13.87,21L5.45,11.91M16.38,7.92L20.55,11.74C20.55,11.74 20.66,11.88 20.5,12.03C20.38,12.17 20.19,12.05 20.19,12.05L16.38,7.92M7.56,16.1L11.74,19.91C11.74,19.91 11.85,20.06 11.7,20.2C11.56,20.35 11.37,20.22 11.37,20.22L7.56,16.1Z" /></g><g id="microphone"><path d="M12,2A3,3 0 0,1 15,5V11A3,3 0 0,1 12,14A3,3 0 0,1 9,11V5A3,3 0 0,1 12,2M19,11C19,14.53 16.39,17.44 13,17.93V21H11V17.93C7.61,17.44 5,14.53 5,11H7A5,5 0 0,0 12,16A5,5 0 0,0 17,11H19Z" /></g><g id="microphone-off"><path d="M19,11C19,12.19 18.66,13.3 18.1,14.28L16.87,13.05C17.14,12.43 17.3,11.74 17.3,11H19M15,11.16L9,5.18V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V11L15,11.16M4.27,3L21,19.73L19.73,21L15.54,16.81C14.77,17.27 13.91,17.58 13,17.72V21H11V17.72C7.72,17.23 5,14.41 5,11H6.7C6.7,14 9.24,16.1 12,16.1C12.81,16.1 13.6,15.91 14.31,15.58L12.65,13.92L12,14A3,3 0 0,1 9,11V10.28L3,4.27L4.27,3Z" /></g><g id="microphone-outline"><path d="M17.3,11C17.3,14 14.76,16.1 12,16.1C9.24,16.1 6.7,14 6.7,11H5C5,14.41 7.72,17.23 11,17.72V21H13V17.72C16.28,17.23 19,14.41 19,11M10.8,4.9C10.8,4.24 11.34,3.7 12,3.7C12.66,3.7 13.2,4.24 13.2,4.9L13.19,11.1C13.19,11.76 12.66,12.3 12,12.3C11.34,12.3 10.8,11.76 10.8,11.1M12,14A3,3 0 0,0 15,11V5A3,3 0 0,0 12,2A3,3 0 0,0 9,5V11A3,3 0 0,0 12,14Z" /></g><g id="microphone-settings"><path d="M19,10H17.3C17.3,13 14.76,15.1 12,15.1C9.24,15.1 6.7,13 6.7,10H5C5,13.41 7.72,16.23 11,16.72V20H13V16.72C16.28,16.23 19,13.41 19,10M15,24H17V22H15M11,24H13V22H11M12,13A3,3 0 0,0 15,10V4A3,3 0 0,0 12,1A3,3 0 0,0 9,4V10A3,3 0 0,0 12,13M7,24H9V22H7V24Z" /></g><g id="microphone-variant"><path d="M9,3A4,4 0 0,1 13,7H5A4,4 0 0,1 9,3M11.84,9.82L11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V14A4,4 0 0,1 18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V19A4,4 0 0,1 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.67,9.32 5.31,8.7 5.13,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M9,11A1,1 0 0,0 8,12A1,1 0 0,0 9,13A1,1 0 0,0 10,12A1,1 0 0,0 9,11Z" /></g><g id="microphone-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L16,19.26C15.86,21.35 14.12,23 12,23A4,4 0 0,1 8,19V18H7L6.16,9.82C5.82,9.47 5.53,9.06 5.33,8.6L2,5.27M9,3A4,4 0 0,1 13,7H8.82L6.08,4.26C6.81,3.5 7.85,3 9,3M11.84,9.82L11.82,10L9.82,8H12.87C12.69,8.7 12.33,9.32 11.84,9.82M11,18H10V19A2,2 0 0,0 12,21A2,2 0 0,0 14,19V17.27L11.35,14.62L11,18M18,10H20L19,11L20,12H18A2,2 0 0,0 16,14V14.18L14.3,12.5C14.9,11 16.33,10 18,10M8,12A1,1 0 0,0 9,13C9.21,13 9.4,12.94 9.56,12.83L8.17,11.44C8.06,11.6 8,11.79 8,12Z" /></g><g id="microscope"><path d="M9.46,6.28L11.05,9C8.47,9.26 6.5,11.41 6.5,14A5,5 0 0,0 11.5,19C13.55,19 15.31,17.77 16.08,16H13.5V14H21.5V16H19.25C18.84,17.57 17.97,18.96 16.79,20H19.5V22H3.5V20H6.21C4.55,18.53 3.5,16.39 3.5,14C3.5,10.37 5.96,7.2 9.46,6.28M12.74,2.07L13.5,3.37L14.36,2.87L17.86,8.93L14.39,10.93L10.89,4.87L11.76,4.37L11,3.07L12.74,2.07Z" /></g><g id="microsoft"><path d="M2,3H11V12H2V3M11,22H2V13H11V22M21,3V12H12V3H21M21,22H12V13H21V22Z" /></g><g id="minecraft"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M6,6V10H10V12H8V18H10V16H14V18H16V12H14V10H18V6H14V10H10V6H6Z" /></g><g id="minus"><path d="M19,13H5V11H19V13Z" /></g><g id="minus-box"><path d="M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="minus-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M17,11V13H7V11H17Z" /></g><g id="minus-circle"><path d="M17,13H7V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="minus-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7" /></g><g id="minus-network"><path d="M16,11V9H8V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="mixcloud"><path d="M21.11,18.5C20.97,18.5 20.83,18.44 20.71,18.36C20.37,18.13 20.28,17.68 20.5,17.34C21.18,16.34 21.54,15.16 21.54,13.93C21.54,12.71 21.18,11.53 20.5,10.5C20.28,10.18 20.37,9.73 20.71,9.5C21.04,9.28 21.5,9.37 21.72,9.7C22.56,10.95 23,12.41 23,13.93C23,15.45 22.56,16.91 21.72,18.16C21.58,18.37 21.35,18.5 21.11,18.5M19,17.29C18.88,17.29 18.74,17.25 18.61,17.17C18.28,16.94 18.19,16.5 18.42,16.15C18.86,15.5 19.1,14.73 19.1,13.93C19.1,13.14 18.86,12.37 18.42,11.71C18.19,11.37 18.28,10.92 18.61,10.69C18.95,10.47 19.4,10.55 19.63,10.89C20.24,11.79 20.56,12.84 20.56,13.93C20.56,15 20.24,16.07 19.63,16.97C19.5,17.18 19.25,17.29 19,17.29M14.9,15.73C15.89,15.73 16.7,14.92 16.7,13.93C16.7,13.17 16.22,12.5 15.55,12.25C15.5,12.55 15.43,12.85 15.34,13.14C15.23,13.44 14.95,13.64 14.64,13.64C14.57,13.64 14.5,13.62 14.41,13.6C14.03,13.47 13.82,13.06 13.95,12.67C14.09,12.24 14.17,11.78 14.17,11.32C14.17,8.93 12.22,7 9.82,7C8.1,7 6.56,8 5.87,9.5C6.54,9.7 7.16,10.04 7.66,10.54C7.95,10.83 7.95,11.29 7.66,11.58C7.38,11.86 6.91,11.86 6.63,11.58C6.17,11.12 5.56,10.86 4.9,10.86C3.56,10.86 2.46,11.96 2.46,13.3C2.46,14.64 3.56,15.73 4.9,15.73H14.9M15.6,10.75C17.06,11.07 18.17,12.37 18.17,13.93C18.17,15.73 16.7,17.19 14.9,17.19H4.9C2.75,17.19 1,15.45 1,13.3C1,11.34 2.45,9.73 4.33,9.45C5.12,7.12 7.33,5.5 9.82,5.5C12.83,5.5 15.31,7.82 15.6,10.75Z" /></g><g id="monitor"><path d="M21,16H3V4H21M21,2H3C1.89,2 1,2.89 1,4V16A2,2 0 0,0 3,18H10V20H8V22H16V20H14V18H21A2,2 0 0,0 23,16V4C23,2.89 22.1,2 21,2Z" /></g><g id="monitor-multiple"><path d="M22,17V7H6V17H22M22,5A2,2 0 0,1 24,7V17C24,18.11 23.1,19 22,19H16V21H18V23H10V21H12V19H6C4.89,19 4,18.11 4,17V7A2,2 0 0,1 6,5H22M2,3V15H0V3A2,2 0 0,1 2,1H20V3H2Z" /></g><g id="more"><path d="M19,13.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 19,13.5M14,13.5A1.5,1.5 0 0,1 12.5,12A1.5,1.5 0 0,1 14,10.5A1.5,1.5 0 0,1 15.5,12A1.5,1.5 0 0,1 14,13.5M9,13.5A1.5,1.5 0 0,1 7.5,12A1.5,1.5 0 0,1 9,10.5A1.5,1.5 0 0,1 10.5,12A1.5,1.5 0 0,1 9,13.5M22,3H7C6.31,3 5.77,3.35 5.41,3.88L0,12L5.41,20.11C5.77,20.64 6.37,21 7.06,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3Z" /></g><g id="motorbike"><path d="M16.36,4.27H18.55V2.13H16.36V1.07H18.22C17.89,0.43 17.13,0 16.36,0C15.16,0 14.18,0.96 14.18,2.13C14.18,3.31 15.16,4.27 16.36,4.27M10.04,9.39L13,6.93L17.45,9.6H10.25M19.53,12.05L21.05,10.56C21.93,9.71 21.93,8.43 21.05,7.57L19.2,9.39L13.96,4.27C13.64,3.73 13,3.41 12.33,3.41C11.78,3.41 11.35,3.63 11,3.95L7,7.89C6.65,8.21 6.44,8.64 6.44,9.17V9.71H5.13C4.04,9.71 3.16,10.67 3.16,11.84V12.27C3.5,12.16 3.93,12.16 4.25,12.16C7.09,12.16 9.5,14.4 9.5,17.28C9.5,17.6 9.5,18.03 9.38,18.35H14.5C14.4,18.03 14.4,17.6 14.4,17.28C14.4,14.29 16.69,12.05 19.53,12.05M4.36,19.73C2.84,19.73 1.64,18.56 1.64,17.07C1.64,15.57 2.84,14.4 4.36,14.4C5.89,14.4 7.09,15.57 7.09,17.07C7.09,18.56 5.89,19.73 4.36,19.73M4.36,12.8C1.96,12.8 0,14.72 0,17.07C0,19.41 1.96,21.33 4.36,21.33C6.76,21.33 8.73,19.41 8.73,17.07C8.73,14.72 6.76,12.8 4.36,12.8M19.64,19.73C18.11,19.73 16.91,18.56 16.91,17.07C16.91,15.57 18.11,14.4 19.64,14.4C21.16,14.4 22.36,15.57 22.36,17.07C22.36,18.56 21.16,19.73 19.64,19.73M19.64,12.8C17.24,12.8 15.27,14.72 15.27,17.07C15.27,19.41 17.24,21.33 19.64,21.33C22.04,21.33 24,19.41 24,17.07C24,14.72 22.04,12.8 19.64,12.8Z" /></g><g id="mouse"><path d="M11,1.07C7.05,1.56 4,4.92 4,9H11M4,15A8,8 0 0,0 12,23A8,8 0 0,0 20,15V11H4M13,1.07V9H20C20,4.92 16.94,1.56 13,1.07Z" /></g><g id="mouse-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.5,20.79C16.08,22.16 14.14,23 12,23A8,8 0 0,1 4,15V11H7.73L5.73,9H4C4,8.46 4.05,7.93 4.15,7.42L2,5.27M11,1.07V9H10.82L5.79,3.96C7.05,2.4 8.9,1.33 11,1.07M20,11V15C20,15.95 19.83,16.86 19.53,17.71L12.82,11H20M13,1.07C16.94,1.56 20,4.92 20,9H13V1.07Z" /></g><g id="mouse-variant"><path d="M14,7H10V2.1C12.28,2.56 14,4.58 14,7M4,7C4,4.58 5.72,2.56 8,2.1V7H4M14,12C14,14.42 12.28,16.44 10,16.9V18A3,3 0 0,0 13,21A3,3 0 0,0 16,18V13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13H18V18A5,5 0 0,1 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H14V12Z" /></g><g id="mouse-variant-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.29,20.56C16.42,22 14.82,23 13,23A5,5 0 0,1 8,18V16.9C5.72,16.44 4,14.42 4,12V9H5.73L2,5.27M14,7H10V2.1C12.28,2.56 14,4.58 14,7M8,2.1V6.18L5.38,3.55C6.07,2.83 7,2.31 8,2.1M14,12V12.17L10.82,9H14V12M10,16.9V18A3,3 0 0,0 13,21C14.28,21 15.37,20.2 15.8,19.07L12.4,15.67C11.74,16.28 10.92,16.71 10,16.9M16,13A4,4 0 0,1 20,9H22L21,10L22,11H20A2,2 0 0,0 18,13V16.18L16,14.18V13Z" /></g><g id="move-resize"><path d="M9,1V2H10V5H9V6H12V5H11V2H12V1M9,7C7.89,7 7,7.89 7,9V21C7,22.11 7.89,23 9,23H21C22.11,23 23,22.11 23,21V9C23,7.89 22.11,7 21,7M1,9V12H2V11H5V12H6V9H5V10H2V9M9,9H21V21H9M14,10V11H15V16H11V15H10V18H11V17H15V19H14V20H17V19H16V17H19V18H20V15H19V16H16V11H17V10" /></g><g id="move-resize-variant"><path d="M1.88,0.46L0.46,1.88L5.59,7H2V9H9V2H7V5.59M11,7V9H21V15H23V9A2,2 0 0,0 21,7M7,11V21A2,2 0 0,0 9,23H15V21H9V11M15.88,14.46L14.46,15.88L19.6,21H17V23H23V17H21V19.59" /></g><g id="movie"><path d="M18,4L20,8H17L15,4H13L15,8H12L10,4H8L10,8H7L5,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V4H18Z" /></g><g id="multiplication"><path d="M11,3H13V10.27L19.29,6.64L20.29,8.37L14,12L20.3,15.64L19.3,17.37L13,13.72V21H11V13.73L4.69,17.36L3.69,15.63L10,12L3.72,8.36L4.72,6.63L11,10.26V3Z" /></g><g id="multiplication-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M11,17H13V13.73L15.83,15.36L16.83,13.63L14,12L16.83,10.36L15.83,8.63L13,10.27V7H11V10.27L8.17,8.63L7.17,10.36L10,12L7.17,13.63L8.17,15.36L11,13.73V17Z" /></g><g id="music-box"><path d="M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="music-box-outline"><path d="M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16V9M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M5,5V19H19V5H5Z" /></g><g id="music-circle"><path d="M16,9V7H12V12.5C11.58,12.19 11.07,12 10.5,12A2.5,2.5 0 0,0 8,14.5A2.5,2.5 0 0,0 10.5,17A2.5,2.5 0 0,0 13,14.5V9H16M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="music-note"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8,12 6,14 6,16.5C6,19 8,21 10.5,21C13,21 15,19 15,16.5V6H19V3H12Z" /></g><g id="music-note-bluetooth"><path d="M10,3V12.26C9.5,12.09 9,12 8.5,12C6,12 4,14 4,16.5C4,19 6,21 8.5,21C11,21 13,19 13,16.5V6H17V3H10M20,7V10.79L17.71,8.5L17,9.21L19.79,12L17,14.79L17.71,15.5L20,13.21V17H20.5L23.35,14.15L21.21,12L23.36,9.85L20.5,7H20M21,8.91L21.94,9.85L21,10.79V8.91M21,13.21L21.94,14.15L21,15.09V13.21Z" /></g><g id="music-note-bluetooth-off"><path d="M10,3V8.68L13,11.68V6H17V3H10M3.28,4.5L2,5.77L8.26,12.03C5.89,12.15 4,14.1 4,16.5C4,19 6,21 8.5,21C10.9,21 12.85,19.11 12.97,16.74L17.68,21.45L18.96,20.18L13,14.22L10,11.22L3.28,4.5M20,7V10.79L17.71,8.5L17,9.21L19.79,12L17,14.79L17.71,15.5L20,13.21V17H20.5L23.35,14.15L21.21,12L23.36,9.85L20.5,7H20M21,8.91L21.94,9.85L21,10.79V8.91M21,13.21L21.94,14.15L21,15.09V13.21Z" /></g><g id="music-note-eighth"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V6H19V3H12Z" /></g><g id="music-note-half"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V9L15,6V3H12M10.5,14.5A2,2 0 0,1 12.5,16.5A2,2 0 0,1 10.5,18.5A2,2 0 0,1 8.5,16.5A2,2 0 0,1 10.5,14.5Z" /></g><g id="music-note-off"><path d="M12,3V8.68L15,11.68V6H19V3H12M5.28,4.5L4,5.77L10.26,12.03C7.89,12.15 6,14.1 6,16.5C6,19 8,21 10.5,21C12.9,21 14.85,19.11 14.97,16.74L19.68,21.45L20.96,20.18L15,14.22L12,11.22L5.28,4.5Z" /></g><g id="music-note-quarter"><path d="M12,3H15V15H19V18H14.72C14.1,19.74 12.46,21 10.5,21C8.54,21 6.9,19.74 6.28,18H3V15H6.28C6.9,13.26 8.54,12 10.5,12C11,12 11.5,12.09 12,12.26V3Z" /></g><g id="music-note-sixteenth"><path d="M12,3V12.26C11.5,12.09 11,12 10.5,12C8.54,12 6.9,13.26 6.28,15H3V18H6.28C6.9,19.74 8.54,21 10.5,21C12.46,21 14.1,19.74 14.72,18H19V15H15V10H19V7H15V6H19V3H12Z" /></g><g id="music-note-whole"><path d="M10.5,12C8.6,12 6.9,13.2 6.26,15H3V18H6.26C6.9,19.8 8.6,21 10.5,21C12.4,21 14.1,19.8 14.74,18H19V15H14.74C14.1,13.2 12.4,12 10.5,12M10.5,14.5A2,2 0 0,1 12.5,16.5A2,2 0 0,1 10.5,18.5A2,2 0 0,1 8.5,16.5A2,2 0 0,1 10.5,14.5Z" /></g><g id="nature"><path d="M13,16.12C16.47,15.71 19.17,12.76 19.17,9.17C19.17,5.3 16.04,2.17 12.17,2.17A7,7 0 0,0 5.17,9.17C5.17,12.64 7.69,15.5 11,16.06V20H5V22H19V20H13V16.12Z" /></g><g id="nature-people"><path d="M4.5,11A1.5,1.5 0 0,0 6,9.5A1.5,1.5 0 0,0 4.5,8A1.5,1.5 0 0,0 3,9.5A1.5,1.5 0 0,0 4.5,11M22.17,9.17C22.17,5.3 19.04,2.17 15.17,2.17A7,7 0 0,0 8.17,9.17C8.17,12.64 10.69,15.5 14,16.06V20H6V17H7V13A1,1 0 0,0 6,12H3A1,1 0 0,0 2,13V17H3V22H19V20H16V16.12C19.47,15.71 22.17,12.76 22.17,9.17Z" /></g><g id="navigation"><path d="M12,2L4.5,20.29L5.21,21L12,18L18.79,21L19.5,20.29L12,2Z" /></g><g id="near-me"><path d="M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z" /></g><g id="needle"><path d="M11.15,15.18L9.73,13.77L11.15,12.35L12.56,13.77L13.97,12.35L12.56,10.94L13.97,9.53L15.39,10.94L16.8,9.53L13.97,6.7L6.9,13.77L9.73,16.6L11.15,15.18M3.08,19L6.2,15.89L4.08,13.77L13.97,3.87L16.1,6L17.5,4.58L16.1,3.16L17.5,1.75L21.75,6L20.34,7.4L18.92,6L17.5,7.4L19.63,9.53L9.73,19.42L7.61,17.3L3.08,21.84V19Z" /></g><g id="nest-protect"><path d="M12,18A6,6 0 0,0 18,12C18,8.68 15.31,6 12,6C8.68,6 6,8.68 6,12A6,6 0 0,0 12,18M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12Z" /></g><g id="nest-thermostat"><path d="M16.95,16.95L14.83,14.83C15.55,14.1 16,13.1 16,12C16,11.26 15.79,10.57 15.43,10L17.6,7.81C18.5,9 19,10.43 19,12C19,13.93 18.22,15.68 16.95,16.95M12,5C13.57,5 15,5.5 16.19,6.4L14,8.56C13.43,8.21 12.74,8 12,8A4,4 0 0,0 8,12C8,13.1 8.45,14.1 9.17,14.83L7.05,16.95C5.78,15.68 5,13.93 5,12A7,7 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z" /></g><g id="new-box"><path d="M20,4C21.11,4 22,4.89 22,6V18C22,19.11 21.11,20 20,20H4C2.89,20 2,19.11 2,18V6C2,4.89 2.89,4 4,4H20M8.5,15V9H7.25V12.5L4.75,9H3.5V15H4.75V11.5L7.3,15H8.5M13.5,10.26V9H9.5V15H13.5V13.75H11V12.64H13.5V11.38H11V10.26H13.5M20.5,14V9H19.25V13.5H18.13V10H16.88V13.5H15.75V9H14.5V14A1,1 0 0,0 15.5,15H19.5A1,1 0 0,0 20.5,14Z" /></g><g id="newspaper"><path d="M20,11H4V8H20M20,15H13V13H20M20,19H13V17H20M11,19H4V13H11M20.33,4.67L18.67,3L17,4.67L15.33,3L13.67,4.67L12,3L10.33,4.67L8.67,3L7,4.67L5.33,3L3.67,4.67L2,3V19A2,2 0 0,0 4,21H20A2,2 0 0,0 22,19V3L20.33,4.67Z" /></g><g id="nfc"><path d="M10.59,7.66C10.59,7.66 11.19,7.39 11.57,7.82C11.95,8.26 12.92,9.94 12.92,11.62C12.92,13.3 12.5,15.09 12.05,15.68C11.62,16.28 11.19,16.28 10.86,16.06C10.54,15.85 5.5,12 5.23,11.89C4.95,11.78 4.85,12.05 5.12,13.5C5.39,15 4.95,15.41 4.57,15.47C4.2,15.5 3.06,15.2 3,12.16C2.95,9.13 3.76,8.64 4.14,8.64C4.85,8.64 10.27,13.5 10.64,13.46C10.97,13.41 11.13,11.35 10.5,9.72C9.78,7.96 10.59,7.66 10.59,7.66M19.3,4.63C21.12,8.24 21,11.66 21,12C21,12.34 21.12,15.76 19.3,19.37C19.3,19.37 18.83,19.92 18.12,19.59C17.42,19.26 17.66,18.4 17.66,18.4C17.66,18.4 19.14,15.55 19.1,12.05V12C19.14,8.5 17.66,5.6 17.66,5.6C17.66,5.6 17.42,4.74 18.12,4.41C18.83,4.08 19.3,4.63 19.3,4.63M15.77,6.25C17.26,8.96 17.16,11.66 17.14,12C17.16,12.34 17.26,14.92 15.77,17.85C15.77,17.85 15.3,18.4 14.59,18.07C13.89,17.74 14.13,16.88 14.13,16.88C14.13,16.88 15.09,15.5 15.24,12.05V12C15.14,8.53 14.13,7.23 14.13,7.23C14.13,7.23 13.89,6.36 14.59,6.04C15.3,5.71 15.77,6.25 15.77,6.25Z" /></g><g id="nfc-tap"><path d="M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M4,4H11A2,2 0 0,1 13,6V9H11V6H4V11H6V9L9,12L6,15V13H4A2,2 0 0,1 2,11V6A2,2 0 0,1 4,4M20,20H13A2,2 0 0,1 11,18V15H13V18H20V13H18V15L15,12L18,9V11H20A2,2 0 0,1 22,13V18A2,2 0 0,1 20,20Z" /></g><g id="nfc-variant"><path d="M18,6H13A2,2 0 0,0 11,8V10.28C10.41,10.62 10,11.26 10,12A2,2 0 0,0 12,14C13.11,14 14,13.1 14,12C14,11.26 13.6,10.62 13,10.28V8H16V16H8V8H10V6H8L6,6V18H18M20,20H4V4H20M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20C21.11,22 22,21.1 22,20V4C22,2.89 21.11,2 20,2Z" /></g><g id="nodejs"><path d="M12,1.85C11.73,1.85 11.45,1.92 11.22,2.05L3.78,6.35C3.3,6.63 3,7.15 3,7.71V16.29C3,16.85 3.3,17.37 3.78,17.65L5.73,18.77C6.68,19.23 7,19.24 7.44,19.24C8.84,19.24 9.65,18.39 9.65,16.91V8.44C9.65,8.32 9.55,8.22 9.43,8.22H8.5C8.37,8.22 8.27,8.32 8.27,8.44V16.91C8.27,17.57 7.59,18.22 6.5,17.67L4.45,16.5C4.38,16.45 4.34,16.37 4.34,16.29V7.71C4.34,7.62 4.38,7.54 4.45,7.5L11.89,3.21C11.95,3.17 12.05,3.17 12.11,3.21L19.55,7.5C19.62,7.54 19.66,7.62 19.66,7.71V16.29C19.66,16.37 19.62,16.45 19.55,16.5L12.11,20.79C12.05,20.83 11.95,20.83 11.88,20.79L10,19.65C9.92,19.62 9.84,19.61 9.79,19.64C9.26,19.94 9.16,20 8.67,20.15C8.55,20.19 8.36,20.26 8.74,20.47L11.22,21.94C11.46,22.08 11.72,22.15 12,22.15C12.28,22.15 12.54,22.08 12.78,21.94L20.22,17.65C20.7,17.37 21,16.85 21,16.29V7.71C21,7.15 20.7,6.63 20.22,6.35L12.78,2.05C12.55,1.92 12.28,1.85 12,1.85M14,8C11.88,8 10.61,8.89 10.61,10.39C10.61,12 11.87,12.47 13.91,12.67C16.34,12.91 16.53,13.27 16.53,13.75C16.53,14.58 15.86,14.93 14.3,14.93C12.32,14.93 11.9,14.44 11.75,13.46C11.73,13.36 11.64,13.28 11.53,13.28H10.57C10.45,13.28 10.36,13.37 10.36,13.5C10.36,14.74 11.04,16.24 14.3,16.24C16.65,16.24 18,15.31 18,13.69C18,12.08 16.92,11.66 14.63,11.35C12.32,11.05 12.09,10.89 12.09,10.35C12.09,9.9 12.29,9.3 14,9.3C15.5,9.3 16.09,9.63 16.32,10.66C16.34,10.76 16.43,10.83 16.53,10.83H17.5C17.55,10.83 17.61,10.81 17.65,10.76C17.69,10.72 17.72,10.66 17.7,10.6C17.56,8.82 16.38,8 14,8Z" /></g><g id="note"><path d="M14,10V4.5L19.5,10M5,3C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V9L15,3H5Z" /></g><g id="note-multiple"><path d="M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3Z" /></g><g id="note-multiple-outline"><path d="M3,6V22H21V24H3A2,2 0 0,1 1,22V6H3M16,9H21.5L16,3.5V9M7,2H17L23,8V18A2,2 0 0,1 21,20H7C5.89,20 5,19.1 5,18V4A2,2 0 0,1 7,2M7,4V18H21V11H14V4H7Z" /></g><g id="note-outline"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,5V19H19V12H12V5H5Z" /></g><g id="note-plus"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M9,18H11V15H14V13H11V10H9V13H6V15H9V18Z" /></g><g id="note-plus-outline"><path d="M15,10H20.5L15,4.5V10M4,3H16L22,9V19A2,2 0 0,1 20,21H4C2.89,21 2,20.1 2,19V5C2,3.89 2.89,3 4,3M4,5V19H20V12H13V5H4M8,17V15H6V13H8V11H10V13H12V15H10V17H8Z" /></g><g id="note-text"><path d="M14,10H19.5L14,4.5V10M5,3H15L21,9V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3M5,12V14H19V12H5M5,16V18H14V16H5Z" /></g><g id="notification-clear-all"><path d="M5,13H19V11H5M3,17H17V15H3M7,7V9H21V7" /></g><g id="npm"><path d="M4,10V14H6V11H7V14H8V10H4M9,10V15H11V14H13V10H9M12,11V13H11V11H12M14,10V14H16V11H17V14H18V11H19V14H20V10H14M3,9H21V15H12V16H8V15H3V9Z" /></g><g id="nuke"><path d="M14.04,12H10V11H5.5A3.5,3.5 0 0,1 2,7.5A3.5,3.5 0 0,1 5.5,4C6.53,4 7.45,4.44 8.09,5.15C8.5,3.35 10.08,2 12,2C13.92,2 15.5,3.35 15.91,5.15C16.55,4.44 17.47,4 18.5,4A3.5,3.5 0 0,1 22,7.5A3.5,3.5 0 0,1 18.5,11H14.04V12M10,16.9V15.76H5V13.76H19V15.76H14.04V16.92L20,19.08C20.58,19.29 21,19.84 21,20.5A1.5,1.5 0 0,1 19.5,22H4.5A1.5,1.5 0 0,1 3,20.5C3,19.84 3.42,19.29 4,19.08L10,16.9Z" /></g><g id="numeric"><path d="M4,17V9H2V7H6V17H4M22,15C22,16.11 21.1,17 20,17H16V15H20V13H18V11H20V9H16V7H20A2,2 0 0,1 22,9V10.5A1.5,1.5 0 0,1 20.5,12A1.5,1.5 0 0,1 22,13.5V15M14,15V17H8V13C8,11.89 8.9,11 10,11H12V9H8V7H12A2,2 0 0,1 14,9V11C14,12.11 13.1,13 12,13H10V15H14Z" /></g><g id="numeric-0-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7A2,2 0 0,0 9,9V15A2,2 0 0,0 11,17H13A2,2 0 0,0 15,15V9A2,2 0 0,0 13,7H11M11,9H13V15H11V9Z" /></g><g id="numeric-0-box-multiple-outline"><path d="M21,17V3H7V17H21M21,1A2,2 0 0,1 23,3V17A2,2 0 0,1 21,19H7A2,2 0 0,1 5,17V3A2,2 0 0,1 7,1H21M3,5V21H19V23H3A2,2 0 0,1 1,21V5H3M13,5H15A2,2 0 0,1 17,7V13A2,2 0 0,1 15,15H13A2,2 0 0,1 11,13V7A2,2 0 0,1 13,5M13,7V13H15V7H13Z" /></g><g id="numeric-0-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,7H13A2,2 0 0,1 15,9V15A2,2 0 0,1 13,17H11A2,2 0 0,1 9,15V9A2,2 0 0,1 11,7M11,9V15H13V9H11Z" /></g><g id="numeric-1-box"><path d="M14,17H12V9H10V7H14M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-1-box-multiple-outline"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M14,15H16V5H12V7H14M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-1-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,17H14V7H10V9H12" /></g><g id="numeric-2-box"><path d="M15,11C15,12.11 14.1,13 13,13H11V15H15V17H9V13C9,11.89 9.9,11 11,11H13V9H9V7H13A2,2 0 0,1 15,9M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-2-box-multiple-outline"><path d="M17,13H13V11H15A2,2 0 0,0 17,9V7C17,5.89 16.1,5 15,5H11V7H15V9H13A2,2 0 0,0 11,11V15H17M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-2-box-outline"><path d="M15,15H11V13H13A2,2 0 0,0 15,11V9C15,7.89 14.1,7 13,7H9V9H13V11H11A2,2 0 0,0 9,13V17H15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-3-box"><path d="M15,10.5A1.5,1.5 0 0,1 13.5,12C14.34,12 15,12.67 15,13.5V15C15,16.11 14.11,17 13,17H9V15H13V13H11V11H13V9H9V7H13C14.11,7 15,7.89 15,9M19,3H5C3.91,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19C20.11,21 21,20.1 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-3-box-multiple-outline"><path d="M17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H11V7H15V9H13V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z" /></g><g id="numeric-3-box-outline"><path d="M15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H9V9H13V11H11V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-4-box"><path d="M15,17H13V13H9V7H11V11H13V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-4-box-multiple-outline"><path d="M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M15,15H17V5H15V9H13V5H11V11H15M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-4-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13,17H15V7H13V11H11V7H9V13H13" /></g><g id="numeric-5-box"><path d="M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H9V15H13V13H9V7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-5-box-multiple-outline"><path d="M17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H11V11H15V13H11V15H15A2,2 0 0,0 17,13M3,5H1V21A2,2 0 0,0 3,23H19V21H3M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1Z" /></g><g id="numeric-5-box-outline"><path d="M15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H9V13H13V15H9V17H13A2,2 0 0,0 15,15M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-6-box"><path d="M15,9H11V11H13A2,2 0 0,1 15,13V15C15,16.11 14.1,17 13,17H11A2,2 0 0,1 9,15V9C9,7.89 9.9,7 11,7H15M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M11,15H13V13H11V15Z" /></g><g id="numeric-6-box-multiple-outline"><path d="M13,11H15V13H13M13,15H15A2,2 0 0,0 17,13V11C17,9.89 16.1,9 15,9H13V7H17V5H13A2,2 0 0,0 11,7V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-6-box-outline"><path d="M11,13H13V15H11M11,17H13A2,2 0 0,0 15,15V13C15,11.89 14.1,11 13,11H11V9H15V7H11A2,2 0 0,0 9,9V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-7-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17L15,9V7H9V9H13L9,17H11Z" /></g><g id="numeric-7-box-multiple-outline"><path d="M13,15L17,7V5H11V7H15L11,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-7-box-outline"><path d="M11,17L15,9V7H9V9H13L9,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-8-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M11,13H13V15H11V13M11,9H13V11H11V9Z" /></g><g id="numeric-8-box-multiple-outline"><path d="M13,11H15V13H13M13,7H15V9H13M13,15H15A2,2 0 0,0 17,13V11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 17,8.5V7C17,5.89 16.1,5 15,5H13A2,2 0 0,0 11,7V8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 11,11.5V13C11,14.11 11.9,15 13,15M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-8-box-outline"><path d="M11,13H13V15H11M11,9H13V11H11M11,17H13A2,2 0 0,0 15,15V13.5A1.5,1.5 0 0,0 13.5,12A1.5,1.5 0 0,0 15,10.5V9C15,7.89 14.1,7 13,7H11A2,2 0 0,0 9,9V10.5A1.5,1.5 0 0,0 10.5,12A1.5,1.5 0 0,0 9,13.5V15C9,16.11 9.9,17 11,17M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-9-box"><path d="M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M13,11H11V9H13V11M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7Z" /></g><g id="numeric-9-box-multiple-outline"><path d="M15,9H13V7H15M15,5H13A2,2 0 0,0 11,7V9C11,10.11 11.9,11 13,11H15V13H11V15H15A2,2 0 0,0 17,13V7C17,5.89 16.1,5 15,5M21,17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-9-box-outline"><path d="M13,11H11V9H13M13,7H11A2,2 0 0,0 9,9V11C9,12.11 9.9,13 11,13H13V15H9V17H13A2,2 0 0,0 15,15V9C15,7.89 14.1,7 13,7M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z" /></g><g id="numeric-9-plus-box"><path d="M21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5M19,11H17V9H15V11H13V13H15V15H17V13H19V11M10,7H8A2,2 0 0,0 6,9V11C6,12.11 6.9,13 8,13H10V15H6V17H10A2,2 0 0,0 12,15V9C12,7.89 11.1,7 10,7M8,9H10V11H8V9Z" /></g><g id="numeric-9-plus-box-multiple-outline"><path d="M21,9H19V7H17V9H15V11H17V13H19V11H21V17H7V3H21M21,1H7A2,2 0 0,0 5,3V17A2,2 0 0,0 7,19H21A2,2 0 0,0 23,17V3A2,2 0 0,0 21,1M11,9V8H12V9M14,12V8C14,6.89 13.1,6 12,6H11A2,2 0 0,0 9,8V9C9,10.11 9.9,11 11,11H12V12H9V14H12A2,2 0 0,0 14,12M3,5H1V21A2,2 0 0,0 3,23H19V21H3V5Z" /></g><g id="numeric-9-plus-box-outline"><path d="M19,11H17V9H15V11H13V13H15V15H17V13H19V19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M9,11V10H10V11M12,14V10C12,8.89 11.1,8 10,8H9A2,2 0 0,0 7,10V11C7,12.11 7.9,13 9,13H10V14H7V16H10A2,2 0 0,0 12,14Z" /></g><g id="nutrition"><path d="M22,18A4,4 0 0,1 18,22H14A4,4 0 0,1 10,18V16H22V18M4,3H14A2,2 0 0,1 16,5V14H8V19H4A2,2 0 0,1 2,17V5A2,2 0 0,1 4,3M4,6V8H6V6H4M14,8V6H8V8H14M4,10V12H6V10H4M8,10V12H14V10H8M4,14V16H6V14H4Z" /></g><g id="oar"><path d="M20.23,15.21C18.77,13.75 14.97,10.2 12.77,11.27L4.5,3L3,4.5L11.28,12.79C10.3,15 13.88,18.62 15.35,20.08C17.11,21.84 18.26,20.92 19.61,19.57C21.1,18.08 21.61,16.61 20.23,15.21Z" /></g><g id="octagon"><path d="M15.73,3H8.27L3,8.27V15.73L8.27,21H15.73L21,15.73V8.27" /></g><g id="octagon-outline"><path d="M8.27,3L3,8.27V15.73L8.27,21H15.73C17.5,19.24 21,15.73 21,15.73V8.27L15.73,3M9.1,5H14.9L19,9.1V14.9L14.9,19H9.1L5,14.9V9.1" /></g><g id="odnoklassniki"><path d="M17.83,12.74C17.55,12.17 16.76,11.69 15.71,12.5C14.28,13.64 12,13.64 12,13.64C12,13.64 9.72,13.64 8.29,12.5C7.24,11.69 6.45,12.17 6.17,12.74C5.67,13.74 6.23,14.23 7.5,15.04C8.59,15.74 10.08,16 11.04,16.1L10.24,16.9C9.1,18.03 8,19.12 7.25,19.88C6.8,20.34 6.8,21.07 7.25,21.5L7.39,21.66C7.84,22.11 8.58,22.11 9.03,21.66L12,18.68C13.15,19.81 14.24,20.9 15,21.66C15.45,22.11 16.18,22.11 16.64,21.66L16.77,21.5C17.23,21.07 17.23,20.34 16.77,19.88L13.79,16.9L13,16.09C13.95,16 15.42,15.73 16.5,15.04C17.77,14.23 18.33,13.74 17.83,12.74M12,4.57C13.38,4.57 14.5,5.69 14.5,7.06C14.5,8.44 13.38,9.55 12,9.55C10.62,9.55 9.5,8.44 9.5,7.06C9.5,5.69 10.62,4.57 12,4.57M12,12.12C14.8,12.12 17.06,9.86 17.06,7.06C17.06,4.27 14.8,2 12,2C9.2,2 6.94,4.27 6.94,7.06C6.94,9.86 9.2,12.12 12,12.12Z" /></g><g id="office"><path d="M3,18L7,16.75V7L14,5V19.5L3.5,18.25L14,22L20,20.75V3.5L13.95,2L3,5.75V18Z" /></g><g id="oil"><path d="M22,12.5C22,12.5 24,14.67 24,16A2,2 0 0,1 22,18A2,2 0 0,1 20,16C20,14.67 22,12.5 22,12.5M6,6H10A1,1 0 0,1 11,7A1,1 0 0,1 10,8H9V10H11C11.74,10 12.39,10.4 12.73,11L19.24,7.24L22.5,9.13C23,9.4 23.14,10 22.87,10.5C22.59,10.97 22,11.14 21.5,10.86L19.4,9.65L15.75,15.97C15.41,16.58 14.75,17 14,17H5A2,2 0 0,1 3,15V12A2,2 0 0,1 5,10H7V8H6A1,1 0 0,1 5,7A1,1 0 0,1 6,6M5,12V15H14L16.06,11.43L12.6,13.43L11.69,12H5M0.38,9.21L2.09,7.5C2.5,7.11 3.11,7.11 3.5,7.5C3.89,7.89 3.89,8.5 3.5,8.91L1.79,10.62C1.4,11 0.77,11 0.38,10.62C0,10.23 0,9.6 0.38,9.21Z" /></g><g id="oil-temperature"><path d="M11.5,1A1.5,1.5 0 0,0 10,2.5V14.5C9.37,14.97 9,15.71 9,16.5A2.5,2.5 0 0,0 11.5,19A2.5,2.5 0 0,0 14,16.5C14,15.71 13.63,15 13,14.5V13H17V11H13V9H17V7H13V5H17V3H13V2.5A1.5,1.5 0 0,0 11.5,1M0,15V17C0.67,17 0.79,17.21 1.29,17.71C1.79,18.21 2.67,19 4,19C5.33,19 6.21,18.21 6.71,17.71C6.82,17.59 6.91,17.5 7,17.41V15.16C6.21,15.42 5.65,15.93 5.29,16.29C4.79,16.79 4.67,17 4,17C3.33,17 3.21,16.79 2.71,16.29C2.21,15.79 1.33,15 0,15M16,15V17C16.67,17 16.79,17.21 17.29,17.71C17.79,18.21 18.67,19 20,19C21.33,19 22.21,18.21 22.71,17.71C23.21,17.21 23.33,17 24,17V15C22.67,15 21.79,15.79 21.29,16.29C20.79,16.79 20.67,17 20,17C19.33,17 19.21,16.79 18.71,16.29C18.21,15.79 17.33,15 16,15M8,20C6.67,20 5.79,20.79 5.29,21.29C4.79,21.79 4.67,22 4,22C3.33,22 3.21,21.79 2.71,21.29C2.35,20.93 1.79,20.42 1,20.16V22.41C1.09,22.5 1.18,22.59 1.29,22.71C1.79,23.21 2.67,24 4,24C5.33,24 6.21,23.21 6.71,22.71C7.21,22.21 7.33,22 8,22C8.67,22 8.79,22.21 9.29,22.71C9.73,23.14 10.44,23.8 11.5,23.96C11.66,24 11.83,24 12,24C13.33,24 14.21,23.21 14.71,22.71C15.21,22.21 15.33,22 16,22C16.67,22 16.79,22.21 17.29,22.71C17.79,23.21 18.67,24 20,24C21.33,24 22.21,23.21 22.71,22.71C22.82,22.59 22.91,22.5 23,22.41V20.16C22.21,20.42 21.65,20.93 21.29,21.29C20.79,21.79 20.67,22 20,22C19.33,22 19.21,21.79 18.71,21.29C18.21,20.79 17.33,20 16,20C14.67,20 13.79,20.79 13.29,21.29C12.79,21.79 12.67,22 12,22C11.78,22 11.63,21.97 11.5,21.92C11.22,21.82 11.05,21.63 10.71,21.29C10.21,20.79 9.33,20 8,20Z" /></g><g id="omega"><path d="M19.15,19H13.39V16.87C15.5,15.25 16.59,13.24 16.59,10.84C16.59,9.34 16.16,8.16 15.32,7.29C14.47,6.42 13.37,6 12.03,6C10.68,6 9.57,6.42 8.71,7.3C7.84,8.17 7.41,9.37 7.41,10.88C7.41,13.26 8.5,15.26 10.61,16.87V19H4.85V16.87H8.41C6.04,15.32 4.85,13.23 4.85,10.6C4.85,8.5 5.5,6.86 6.81,5.66C8.12,4.45 9.84,3.85 11.97,3.85C14.15,3.85 15.89,4.45 17.19,5.64C18.5,6.83 19.15,8.5 19.15,10.58C19.15,13.21 17.95,15.31 15.55,16.87H19.15V19Z" /></g><g id="onedrive"><path d="M20.08,13.64C21.17,13.81 22,14.75 22,15.89C22,16.78 21.5,17.55 20.75,17.92L20.58,18H9.18L9.16,18V18C7.71,18 6.54,16.81 6.54,15.36C6.54,13.9 7.72,12.72 9.18,12.72L9.4,12.73L9.39,12.53A3.3,3.3 0 0,1 12.69,9.23C13.97,9.23 15.08,9.96 15.63,11C16.08,10.73 16.62,10.55 17.21,10.55A2.88,2.88 0 0,1 20.09,13.43L20.08,13.64M8.82,12.16C7.21,12.34 5.96,13.7 5.96,15.36C5.96,16.04 6.17,16.66 6.5,17.18H4.73A2.73,2.73 0 0,1 2,14.45C2,13 3.12,11.83 4.53,11.73L4.46,11.06C4.46,9.36 5.84,8 7.54,8C8.17,8 8.77,8.18 9.26,8.5C9.95,7.11 11.4,6.15 13.07,6.15C15.27,6.15 17.08,7.83 17.3,9.97H17.21C16.73,9.97 16.27,10.07 15.84,10.25C15.12,9.25 13.96,8.64 12.69,8.64C10.67,8.64 9,10.19 8.82,12.16Z" /></g><g id="opacity"><path d="M17.66,8L12,2.35L6.34,8C4.78,9.56 4,11.64 4,13.64C4,15.64 4.78,17.75 6.34,19.31C7.9,20.87 9.95,21.66 12,21.66C14.05,21.66 16.1,20.87 17.66,19.31C19.22,17.75 20,15.64 20,13.64C20,11.64 19.22,9.56 17.66,8M6,14C6,12 6.62,10.73 7.76,9.6L12,5.27L16.24,9.65C17.38,10.77 18,12 18,14H6Z" /></g><g id="open-in-app"><path d="M12,10L8,14H11V20H13V14H16M19,4H5C3.89,4 3,4.9 3,6V18A2,2 0 0,0 5,20H9V18H5V8H19V18H15V20H19A2,2 0 0,0 21,18V6A2,2 0 0,0 19,4Z" /></g><g id="open-in-new"><path d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" /></g><g id="openid"><path d="M14,2L11,3.5V19.94C7,19.5 4,17.46 4,15C4,12.75 6.5,10.85 10,10.22V8.19C4.86,8.88 1,11.66 1,15C1,18.56 5.36,21.5 11,21.94C11.03,21.94 11.06,21.94 11.09,21.94L14,20.5V2M15,8.19V10.22C16.15,10.43 17.18,10.77 18.06,11.22L16.5,12L23,13.5L22.5,9L20.5,10C19,9.12 17.12,8.47 15,8.19Z" /></g><g id="opera"><path d="M17.33,3.57C15.86,2.56 14.05,2 12,2C10.13,2 8.46,2.47 7.06,3.32C4.38,4.95 2.72,8 2.72,11.9C2.72,17.19 6.43,22 12,22C17.57,22 21.28,17.19 21.28,11.9C21.28,8.19 19.78,5.25 17.33,3.57M12,3.77C15,3.77 15.6,7.93 15.6,11.72C15.6,15.22 15.26,19.91 12.04,19.91C8.82,19.91 8.4,15.17 8.4,11.67C8.4,7.89 9,3.77 12,3.77Z" /></g><g id="ornament"><path d="M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M6.34,16H7.59L6,14.43C6.05,15 6.17,15.5 6.34,16M12.59,16L8.59,12H6.41L10.41,16H12.59M17.66,12H16.41L18,13.57C17.95,13 17.83,12.5 17.66,12M11.41,12L15.41,16H17.59L13.59,12H11.41M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20Z" /></g><g id="ornament-variant"><path d="M12,1A3,3 0 0,1 15,4V5A1,1 0 0,1 16,6V7.07C18.39,8.45 20,11.04 20,14A8,8 0 0,1 12,22A8,8 0 0,1 4,14C4,11.04 5.61,8.45 8,7.07V6A1,1 0 0,1 9,5V4A3,3 0 0,1 12,1M12,3A1,1 0 0,0 11,4V5H13V4A1,1 0 0,0 12,3M12,8C10.22,8 8.63,8.77 7.53,10H16.47C15.37,8.77 13.78,8 12,8M12,20C13.78,20 15.37,19.23 16.47,18H7.53C8.63,19.23 10.22,20 12,20M12,12A2,2 0 0,0 10,14A2,2 0 0,0 12,16A2,2 0 0,0 14,14A2,2 0 0,0 12,12M18,14C18,13.31 17.88,12.65 17.67,12C16.72,12.19 16,13 16,14C16,15 16.72,15.81 17.67,15.97C17.88,15.35 18,14.69 18,14M6,14C6,14.69 6.12,15.35 6.33,15.97C7.28,15.81 8,15 8,14C8,13 7.28,12.19 6.33,12C6.12,12.65 6,13.31 6,14Z" /></g><g id="owl"><path d="M12,16C12.56,16.84 13.31,17.53 14.2,18L12,20.2L9.8,18C10.69,17.53 11.45,16.84 12,16M17,11.2A2,2 0 0,0 15,13.2A2,2 0 0,0 17,15.2A2,2 0 0,0 19,13.2C19,12.09 18.1,11.2 17,11.2M7,11.2A2,2 0 0,0 5,13.2A2,2 0 0,0 7,15.2A2,2 0 0,0 9,13.2C9,12.09 8.1,11.2 7,11.2M17,8.7A4,4 0 0,1 21,12.7A4,4 0 0,1 17,16.7A4,4 0 0,1 13,12.7A4,4 0 0,1 17,8.7M7,8.7A4,4 0 0,1 11,12.7A4,4 0 0,1 7,16.7A4,4 0 0,1 3,12.7A4,4 0 0,1 7,8.7M2.24,1C4,4.7 2.73,7.46 1.55,10.2C1.19,11 1,11.83 1,12.7A6,6 0 0,0 7,18.7C7.21,18.69 7.42,18.68 7.63,18.65L10.59,21.61L12,23L13.41,21.61L16.37,18.65C16.58,18.68 16.79,18.69 17,18.7A6,6 0 0,0 23,12.7C23,11.83 22.81,11 22.45,10.2C21.27,7.46 20,4.7 21.76,1C19.12,3.06 15.36,4.69 12,4.7C8.64,4.69 4.88,3.06 2.24,1Z" /></g><g id="package"><path d="M5.12,5H18.87L17.93,4H5.93L5.12,5M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M6,18H12V15H6V18Z" /></g><g id="package-down"><path d="M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z" /></g><g id="package-up"><path d="M20.54,5.23C20.83,5.57 21,6 21,6.5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V6.5C3,6 3.17,5.57 3.46,5.23L4.84,3.55C5.12,3.21 5.53,3 6,3H18C18.47,3 18.88,3.21 19.15,3.55L20.54,5.23M5.12,5H18.87L17.93,4H5.93L5.12,5M12,9.5L6.5,15H10V17H14V15H17.5L12,9.5Z" /></g><g id="package-variant"><path d="M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z" /></g><g id="package-variant-closed"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L10.11,5.22L16,8.61L17.96,7.5L12,4.15M6.04,7.5L12,10.85L13.96,9.75L8.08,6.35L6.04,7.5M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V9.21L13,12.58V19.29L19,15.91Z" /></g><g id="page-first"><path d="M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z" /></g><g id="page-last"><path d="M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z" /></g><g id="palette"><path d="M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z" /></g><g id="palette-advanced"><path d="M22,22H10V20H22V22M2,22V20H9V22H2M18,18V10H22V18H18M18,3H22V9H18V3M2,18V3H16V18H2M9,14.56A3,3 0 0,0 12,11.56C12,9.56 9,6.19 9,6.19C9,6.19 6,9.56 6,11.56A3,3 0 0,0 9,14.56Z" /></g><g id="panda"><path d="M12,3C13.74,3 15.36,3.5 16.74,4.35C17.38,3.53 18.38,3 19.5,3A3.5,3.5 0 0,1 23,6.5C23,8 22.05,9.28 20.72,9.78C20.9,10.5 21,11.23 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12C3,11.23 3.1,10.5 3.28,9.78C1.95,9.28 1,8 1,6.5A3.5,3.5 0 0,1 4.5,3C5.62,3 6.62,3.53 7.26,4.35C8.64,3.5 10.26,3 12,3M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M16.19,10.3C16.55,11.63 16.08,12.91 15.15,13.16C14.21,13.42 13.17,12.54 12.81,11.2C12.45,9.87 12.92,8.59 13.85,8.34C14.79,8.09 15.83,8.96 16.19,10.3M7.81,10.3C8.17,8.96 9.21,8.09 10.15,8.34C11.08,8.59 11.55,9.87 11.19,11.2C10.83,12.54 9.79,13.42 8.85,13.16C7.92,12.91 7.45,11.63 7.81,10.3M12,14C12.6,14 13.13,14.19 13.5,14.5L12.5,15.5C12.5,15.92 12.84,16.25 13.25,16.25A0.75,0.75 0 0,0 14,15.5A0.5,0.5 0 0,1 14.5,15A0.5,0.5 0 0,1 15,15.5A1.75,1.75 0 0,1 13.25,17.25C12.76,17.25 12.32,17.05 12,16.72C11.68,17.05 11.24,17.25 10.75,17.25A1.75,1.75 0 0,1 9,15.5A0.5,0.5 0 0,1 9.5,15A0.5,0.5 0 0,1 10,15.5A0.75,0.75 0 0,0 10.75,16.25A0.75,0.75 0 0,0 11.5,15.5L10.5,14.5C10.87,14.19 11.4,14 12,14Z" /></g><g id="pandora"><path d="M16.87,7.73C16.87,9.9 15.67,11.7 13.09,11.7H10.45V3.66H13.09C15.67,3.66 16.87,5.5 16.87,7.73M10.45,15.67V13.41H13.09C17.84,13.41 20.5,10.91 20.5,7.73C20.5,4.45 17.84,2 13.09,2H3.5V2.92C6.62,2.92 7.17,3.66 7.17,8.28V15.67C7.17,20.29 6.62,21.08 3.5,21.08V22H14.1V21.08C11,21.08 10.45,20.29 10.45,15.67Z" /></g><g id="panorama"><path d="M8.5,12.5L11,15.5L14.5,11L19,17H5M23,18V6A2,2 0 0,0 21,4H3A2,2 0 0,0 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18Z" /></g><g id="panorama-fisheye"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2Z" /></g><g id="panorama-horizontal"><path d="M21.43,4C21.33,4 21.23,4 21.12,4.06C18.18,5.16 15.09,5.7 12,5.7C8.91,5.7 5.82,5.15 2.88,4.06C2.77,4 2.66,4 2.57,4C2.23,4 2,4.23 2,4.63V19.38C2,19.77 2.23,20 2.57,20C2.67,20 2.77,20 2.88,19.94C5.82,18.84 8.91,18.3 12,18.3C15.09,18.3 18.18,18.85 21.12,19.94C21.23,20 21.33,20 21.43,20C21.76,20 22,19.77 22,19.37V4.63C22,4.23 21.76,4 21.43,4M20,6.54V17.45C17.4,16.68 14.72,16.29 12,16.29C9.28,16.29 6.6,16.68 4,17.45V6.54C6.6,7.31 9.28,7.7 12,7.7C14.72,7.71 17.4,7.32 20,6.54Z" /></g><g id="panorama-vertical"><path d="M6.54,20C7.31,17.4 7.7,14.72 7.7,12C7.7,9.28 7.31,6.6 6.54,4H17.45C16.68,6.6 16.29,9.28 16.29,12C16.29,14.72 16.68,17.4 17.45,20M19.94,21.12C18.84,18.18 18.3,15.09 18.3,12C18.3,8.91 18.85,5.82 19.94,2.88C20,2.77 20,2.66 20,2.57C20,2.23 19.77,2 19.37,2H4.63C4.23,2 4,2.23 4,2.57C4,2.67 4,2.77 4.06,2.88C5.16,5.82 5.71,8.91 5.71,12C5.71,15.09 5.16,18.18 4.07,21.12C4,21.23 4,21.34 4,21.43C4,21.76 4.23,22 4.63,22H19.38C19.77,22 20,21.76 20,21.43C20,21.33 20,21.23 19.94,21.12Z" /></g><g id="panorama-wide-angle"><path d="M12,4C9.27,4 6.78,4.24 4.05,4.72L3.12,4.88L2.87,5.78C2.29,7.85 2,9.93 2,12C2,14.07 2.29,16.15 2.87,18.22L3.12,19.11L4.05,19.27C6.78,19.76 9.27,20 12,20C14.73,20 17.22,19.76 19.95,19.28L20.88,19.12L21.13,18.23C21.71,16.15 22,14.07 22,12C22,9.93 21.71,7.85 21.13,5.78L20.88,4.89L19.95,4.73C17.22,4.24 14.73,4 12,4M12,6C14.45,6 16.71,6.2 19.29,6.64C19.76,8.42 20,10.22 20,12C20,13.78 19.76,15.58 19.29,17.36C16.71,17.8 14.45,18 12,18C9.55,18 7.29,17.8 4.71,17.36C4.24,15.58 4,13.78 4,12C4,10.22 4.24,8.42 4.71,6.64C7.29,6.2 9.55,6 12,6Z" /></g><g id="paper-cut-vertical"><path d="M11.43,3.23L12,4L12.57,3.23V3.24C13.12,2.5 14,2 15,2A3,3 0 0,1 18,5C18,5.35 17.94,5.69 17.83,6H20A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8A2,2 0 0,1 4,6H6.17C6.06,5.69 6,5.35 6,5A3,3 0 0,1 9,2C10,2 10.88,2.5 11.43,3.24V3.23M4,8V20H11A1,1 0 0,1 12,19A1,1 0 0,1 13,20H20V8H15L14.9,8L17,10.92L15.4,12.1L12.42,8H11.58L8.6,12.1L7,10.92L9.1,8H9L4,8M9,4A1,1 0 0,0 8,5A1,1 0 0,0 9,6A1,1 0 0,0 10,5A1,1 0 0,0 9,4M15,4A1,1 0 0,0 14,5A1,1 0 0,0 15,6A1,1 0 0,0 16,5A1,1 0 0,0 15,4M12,16A1,1 0 0,1 13,17A1,1 0 0,1 12,18A1,1 0 0,1 11,17A1,1 0 0,1 12,16M12,13A1,1 0 0,1 13,14A1,1 0 0,1 12,15A1,1 0 0,1 11,14A1,1 0 0,1 12,13M12,10A1,1 0 0,1 13,11A1,1 0 0,1 12,12A1,1 0 0,1 11,11A1,1 0 0,1 12,10Z" /></g><g id="paperclip"><path d="M16.5,6V17.5A4,4 0 0,1 12.5,21.5A4,4 0 0,1 8.5,17.5V5A2.5,2.5 0 0,1 11,2.5A2.5,2.5 0 0,1 13.5,5V15.5A1,1 0 0,1 12.5,16.5A1,1 0 0,1 11.5,15.5V6H10V15.5A2.5,2.5 0 0,0 12.5,18A2.5,2.5 0 0,0 15,15.5V5A4,4 0 0,0 11,1A4,4 0 0,0 7,5V17.5A5.5,5.5 0 0,0 12.5,23A5.5,5.5 0 0,0 18,17.5V6H16.5Z" /></g><g id="parking"><path d="M13.2,11H10V7H13.2A2,2 0 0,1 15.2,9A2,2 0 0,1 13.2,11M13,3H6V21H10V15H13A6,6 0 0,0 19,9C19,5.68 16.31,3 13,3Z" /></g><g id="pause"><path d="M14,19H18V5H14M6,19H10V5H6V19Z" /></g><g id="pause-circle"><path d="M15,16H13V8H15M11,16H9V8H11M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="pause-circle-outline"><path d="M13,16V8H15V16H13M9,16V8H11V16H9M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="pause-octagon"><path d="M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M15,16V8H13V16H15M11,16V8H9V16H11Z" /></g><g id="pause-octagon-outline"><path d="M15,16H13V8H15V16M11,16H9V8H11V16M15.73,3L21,8.27V15.73L15.73,21H8.27L3,15.73V8.27L8.27,3H15.73M14.9,5H9.1L5,9.1V14.9L9.1,19H14.9L19,14.9V9.1L14.9,5Z" /></g><g id="paw"><path d="M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.5,7.67 10.85,9.25 9.67,9.43C8.5,9.61 7.24,8.32 6.87,6.54C6.5,4.77 7.17,3.19 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6M19.33,18.38C19.37,19.32 18.65,20.36 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.88,13.09 9.88,10.44 11.89,10.44C13.89,10.44 14.95,13.05 16.3,14.5C17.41,15.72 19.26,16.75 19.33,18.38Z" /></g><g id="paw-off"><path d="M2,4.27L3.28,3L21.5,21.22L20.23,22.5L18.23,20.5C18.09,20.6 17.94,20.68 17.79,20.75C16,21.57 13.88,19.87 11.89,19.87C9.9,19.87 7.76,21.64 6,20.75C5,20.26 4.31,18.96 4.44,17.88C4.62,16.39 6.41,15.59 7.47,14.5C8.21,13.77 8.84,12.69 9.55,11.82L2,4.27M8.35,3C9.53,2.83 10.78,4.12 11.14,5.9C11.32,6.75 11.26,7.56 11,8.19L7.03,4.2C7.29,3.55 7.75,3.1 8.35,3M15.5,3C16.69,3.19 17.35,4.77 17,6.54C16.62,8.32 15.37,9.61 14.19,9.43C13,9.25 12.35,7.67 12.72,5.9C13.08,4.12 14.33,2.83 15.5,3M3,7.6C4.14,7.11 5.69,8 6.5,9.55C7.26,11.13 7,12.79 5.87,13.28C4.74,13.77 3.2,12.89 2.41,11.32C1.62,9.75 1.9,8.08 3,7.6M21,7.6C22.1,8.08 22.38,9.75 21.59,11.32C20.8,12.89 19.26,13.77 18.13,13.28C17,12.79 16.74,11.13 17.5,9.55C18.31,8 19.86,7.11 21,7.6Z" /></g><g id="pen"><path d="M20.71,7.04C20.37,7.38 20.04,7.71 20.03,8.04C20,8.36 20.34,8.69 20.66,9C21.14,9.5 21.61,9.95 21.59,10.44C21.57,10.93 21.06,11.44 20.55,11.94L16.42,16.08L15,14.66L19.25,10.42L18.29,9.46L16.87,10.87L13.12,7.12L16.96,3.29C17.35,2.9 18,2.9 18.37,3.29L20.71,5.63C21.1,6 21.1,6.65 20.71,7.04M3,17.25L12.56,7.68L16.31,11.43L6.75,21H3V17.25Z" /></g><g id="pencil"><path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z" /></g><g id="pencil-box"><path d="M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35C16.92,9.14 16.92,8.79 16.7,8.58L15.42,7.3C15.21,7.08 14.86,7.08 14.65,7.3L13.65,8.3L15.7,10.35L16.7,9.35M7,14.94V17H9.06L15.12,10.94L13.06,8.88L7,14.94Z" /></g><g id="pencil-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M16.7,9.35L15.7,10.35L13.65,8.3L14.65,7.3C14.86,7.08 15.21,7.08 15.42,7.3L16.7,8.58C16.92,8.79 16.92,9.14 16.7,9.35M7,14.94L13.06,8.88L15.12,10.94L9.06,17H7V14.94Z" /></g><g id="pencil-circle"><path d="M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M15.1,7.07C15.24,7.07 15.38,7.12 15.5,7.23L16.77,8.5C17,8.72 17,9.07 16.77,9.28L15.77,10.28L13.72,8.23L14.72,7.23C14.82,7.12 14.96,7.07 15.1,7.07M13.13,8.81L15.19,10.87L9.13,16.93H7.07V14.87L13.13,8.81Z" /></g><g id="pencil-lock"><path d="M5.5,2A2.5,2.5 0 0,0 3,4.5V5A1,1 0 0,0 2,6V10A1,1 0 0,0 3,11H8A1,1 0 0,0 9,10V6A1,1 0 0,0 8,5V4.5A2.5,2.5 0 0,0 5.5,2M5.5,3A1.5,1.5 0 0,1 7,4.5V5H4V4.5A1.5,1.5 0 0,1 5.5,3M19.66,3C19.4,3 19.16,3.09 18.97,3.28L17.13,5.13L20.88,8.88L22.72,7.03C23.11,6.64 23.11,6 22.72,5.63L20.38,3.28C20.18,3.09 19.91,3 19.66,3M16.06,6.19L5,17.25V21H8.75L19.81,9.94L16.06,6.19Z" /></g><g id="pencil-off"><path d="M18.66,2C18.4,2 18.16,2.09 17.97,2.28L16.13,4.13L19.88,7.88L21.72,6.03C22.11,5.64 22.11,5 21.72,4.63L19.38,2.28C19.18,2.09 18.91,2 18.66,2M3.28,4L2,5.28L8.5,11.75L4,16.25V20H7.75L12.25,15.5L18.72,22L20,20.72L13.5,14.25L9.75,10.5L3.28,4M15.06,5.19L11.03,9.22L14.78,12.97L18.81,8.94L15.06,5.19Z" /></g><g id="pentagon"><path d="M12,2.5L2,9.8L5.8,21.5H18.2L22,9.8L12,2.5Z" /></g><g id="pentagon-outline"><path d="M12,5L19.6,10.5L16.7,19.4H7.3L4.4,10.5L12,5M12,2.5L2,9.8L5.8,21.5H18.1L22,9.8L12,2.5Z" /></g><g id="percent"><path d="M7,4A3,3 0 0,1 10,7A3,3 0 0,1 7,10A3,3 0 0,1 4,7A3,3 0 0,1 7,4M17,14A3,3 0 0,1 20,17A3,3 0 0,1 17,20A3,3 0 0,1 14,17A3,3 0 0,1 17,14M20,5.41L5.41,20L4,18.59L18.59,4L20,5.41Z" /></g><g id="pharmacy"><path d="M16,14H13V17H11V14H8V12H11V9H13V12H16M21,5H18.35L19.5,1.85L17.15,1L15.69,5H3V7L5,13L3,19V21H21V19L19,13L21,7V5Z" /></g><g id="phone"><path d="M6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.25 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.59L6.62,10.79Z" /></g><g id="phone-bluetooth"><path d="M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,7.21L18.94,8.14L18,9.08M18,2.91L18.94,3.85L18,4.79M14.71,9.5L17,7.21V11H17.5L20.35,8.14L18.21,6L20.35,3.85L17.5,1H17V4.79L14.71,2.5L14,3.21L16.79,6L14,8.79L14.71,9.5Z" /></g><g id="phone-classic"><path d="M12,3C7.46,3 3.34,4.78 0.29,7.67C0.11,7.85 0,8.1 0,8.38C0,8.66 0.11,8.91 0.29,9.09L2.77,11.57C2.95,11.75 3.2,11.86 3.5,11.86C3.75,11.86 4,11.75 4.18,11.58C4.97,10.84 5.87,10.22 6.84,9.73C7.17,9.57 7.4,9.23 7.4,8.83V5.73C8.85,5.25 10.39,5 12,5C13.59,5 15.14,5.25 16.59,5.72V8.82C16.59,9.21 16.82,9.56 17.15,9.72C18.13,10.21 19,10.84 19.82,11.57C20,11.75 20.25,11.85 20.5,11.85C20.8,11.85 21.05,11.74 21.23,11.56L23.71,9.08C23.89,8.9 24,8.65 24,8.37C24,8.09 23.88,7.85 23.7,7.67C20.65,4.78 16.53,3 12,3M9,7V10C9,10 3,15 3,18V22H21V18C21,15 15,10 15,10V7H13V9H11V7H9M12,12A4,4 0 0,1 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12M12,13.5A2.5,2.5 0 0,0 9.5,16A2.5,2.5 0 0,0 12,18.5A2.5,2.5 0 0,0 14.5,16A2.5,2.5 0 0,0 12,13.5Z" /></g><g id="phone-forward"><path d="M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M18,11L23,6L18,1V4H14V8H18V11Z" /></g><g id="phone-hangup"><path d="M12,9C10.4,9 8.85,9.25 7.4,9.72V12.82C7.4,13.22 7.17,13.56 6.84,13.72C5.86,14.21 4.97,14.84 4.17,15.57C4,15.75 3.75,15.86 3.5,15.86C3.2,15.86 2.95,15.74 2.77,15.56L0.29,13.08C0.11,12.9 0,12.65 0,12.38C0,12.1 0.11,11.85 0.29,11.67C3.34,8.77 7.46,7 12,7C16.54,7 20.66,8.77 23.71,11.67C23.89,11.85 24,12.1 24,12.38C24,12.65 23.89,12.9 23.71,13.08L21.23,15.56C21.05,15.74 20.8,15.86 20.5,15.86C20.25,15.86 20,15.75 19.82,15.57C19.03,14.84 18.14,14.21 17.16,13.72C16.83,13.56 16.6,13.22 16.6,12.82V9.72C15.15,9.25 13.6,9 12,9Z" /></g><g id="phone-in-talk"><path d="M15,12H17A5,5 0 0,0 12,7V9A3,3 0 0,1 15,12M19,12H21C21,7 16.97,3 12,3V5C15.86,5 19,8.13 19,12M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z" /></g><g id="phone-incoming"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M19,11V9.5H15.5L21,4L20,3L14.5,8.5V5H13V11H19Z" /></g><g id="phone-locked"><path d="M19.2,4H15.8V3.5C15.8,2.56 16.56,1.8 17.5,1.8C18.44,1.8 19.2,2.56 19.2,3.5M20,4V3.5A2.5,2.5 0 0,0 17.5,1A2.5,2.5 0 0,0 15,3.5V4A1,1 0 0,0 14,5V9A1,1 0 0,0 15,10H20A1,1 0 0,0 21,9V5A1,1 0 0,0 20,4M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5Z" /></g><g id="phone-log"><path d="M20,15.5A1,1 0 0,1 21,16.5V20A1,1 0 0,1 20,21A17,17 0 0,1 3,4A1,1 0 0,1 4,3H7.5A1,1 0 0,1 8.5,4C8.5,5.24 8.7,6.45 9.07,7.57C9.18,7.92 9.1,8.31 8.82,8.58L6.62,10.79C8.06,13.62 10.38,15.94 13.21,17.38L15.41,15.18C15.69,14.9 16.08,14.82 16.43,14.93C17.55,15.3 18.75,15.5 20,15.5M12,3H14V5H12M15,3H21V5H15M12,6H14V8H12M15,6H21V8H15M12,9H14V11H12M15,9H21V11H15" /></g><g id="phone-minus"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M13,6V8H21V6" /></g><g id="phone-missed"><path d="M23.71,16.67C20.66,13.77 16.54,12 12,12C7.46,12 3.34,13.77 0.29,16.67C0.11,16.85 0,17.1 0,17.38C0,17.65 0.11,17.9 0.29,18.08L2.77,20.56C2.95,20.74 3.2,20.86 3.5,20.86C3.75,20.86 4,20.75 4.18,20.57C4.97,19.83 5.86,19.21 6.84,18.72C7.17,18.56 7.4,18.22 7.4,17.82V14.72C8.85,14.25 10.39,14 12,14C13.6,14 15.15,14.25 16.6,14.72V17.82C16.6,18.22 16.83,18.56 17.16,18.72C18.14,19.21 19.03,19.83 19.82,20.57C20,20.75 20.25,20.86 20.5,20.86C20.8,20.86 21.05,20.74 21.23,20.56L23.71,18.08C23.89,17.9 24,17.65 24,17.38C24,17.1 23.89,16.85 23.71,16.67M6.5,5.5L12,11L19,4L18,3L12,9L7.5,4.5H11V3H5V9H6.5V5.5Z" /></g><g id="phone-outgoing"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.17L13.21,17.37C10.38,15.93 8.06,13.62 6.62,10.78L8.82,8.57C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4M15,3V4.5H18.5L13,10L14,11L19.5,5.5V9H21V3H15Z" /></g><g id="phone-paused"><path d="M19,10H21V3H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,3H15V10H17V3Z" /></g><g id="phone-plus"><path d="M4,3A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5C18.76,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.07,13.62 6.62,10.79L8.82,8.58C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.24 8.5,4A1,1 0 0,0 7.5,3M16,3V6H13V8H16V11H18V8H21V6H18V3" /></g><g id="phone-settings"><path d="M19,11H21V9H19M20,15.5C18.75,15.5 17.55,15.3 16.43,14.93C16.08,14.82 15.69,14.9 15.41,15.18L13.21,17.38C10.38,15.94 8.06,13.62 6.62,10.79L8.82,8.59C9.1,8.31 9.18,7.92 9.07,7.57C8.7,6.45 8.5,5.25 8.5,4A1,1 0 0,0 7.5,3H4A1,1 0 0,0 3,4A17,17 0 0,0 20,21A1,1 0 0,0 21,20V16.5A1,1 0 0,0 20,15.5M17,9H15V11H17M13,9H11V11H13V9Z" /></g><g id="phone-voip"><path d="M13,17V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H13M23.7,7.67C23.88,7.85 24,8.09 24,8.37C24,8.65 23.89,8.9 23.71,9.08L21.23,11.56C21.05,11.74 20.8,11.85 20.5,11.85C20.25,11.85 20,11.75 19.82,11.57C19,10.84 18.13,10.21 17.15,9.72C16.82,9.56 16.59,9.21 16.59,8.82V5.72C15.14,5.25 13.59,5 12,5C10.4,5 8.85,5.25 7.4,5.73V8.83C7.4,9.23 7.17,9.57 6.84,9.73C5.87,10.22 4.97,10.84 4.18,11.58C4,11.75 3.75,11.86 3.5,11.86C3.2,11.86 2.95,11.75 2.77,11.57L0.29,9.09C0.11,8.91 0,8.66 0,8.38C0,8.1 0.11,7.85 0.29,7.67C3.34,4.78 7.46,3 12,3C16.53,3 20.65,4.78 23.7,7.67M11,10V15H10V10H11M12,10H15V13H13V15H12V10M14,12V11H13V12H14Z" /></g><g id="pi"><path d="M4,5V7H6V19H8V7H14V16A3,3 0 0,0 17,19A3,3 0 0,0 20,16H18A1,1 0 0,1 17,17A1,1 0 0,1 16,16V7H18V5" /></g><g id="pi-box"><path d="M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M6,7H17V9H15V14A1,1 0 0,0 16,15A1,1 0 0,0 17,14H19A3,3 0 0,1 16,17A3,3 0 0,1 13,14V9H10V17H8V9H6" /></g><g id="piano"><path d="M4,3H20A2,2 0 0,1 22,5V19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M4,5V19H8V13H6.75V5H4M9,19H15V13H13.75V5H10.25V13H9V19M16,19H20V5H17.25V13H16V19Z" /></g><g id="pig"><path d="M9.5,9A1.5,1.5 0 0,0 8,10.5A1.5,1.5 0 0,0 9.5,12A1.5,1.5 0 0,0 11,10.5A1.5,1.5 0 0,0 9.5,9M14.5,9A1.5,1.5 0 0,0 13,10.5A1.5,1.5 0 0,0 14.5,12A1.5,1.5 0 0,0 16,10.5A1.5,1.5 0 0,0 14.5,9M12,4L12.68,4.03C13.62,3.24 14.82,2.59 15.72,2.35C17.59,1.85 20.88,2.23 21.31,3.83C21.62,5 20.6,6.45 19.03,7.38C20.26,8.92 21,10.87 21,13A9,9 0 0,1 12,22A9,9 0 0,1 3,13C3,10.87 3.74,8.92 4.97,7.38C3.4,6.45 2.38,5 2.69,3.83C3.12,2.23 6.41,1.85 8.28,2.35C9.18,2.59 10.38,3.24 11.32,4.03L12,4M10,16A1,1 0 0,1 11,17A1,1 0 0,1 10,18A1,1 0 0,1 9,17A1,1 0 0,1 10,16M14,16A1,1 0 0,1 15,17A1,1 0 0,1 14,18A1,1 0 0,1 13,17A1,1 0 0,1 14,16M12,13C9.24,13 7,15.34 7,17C7,18.66 9.24,20 12,20C14.76,20 17,18.66 17,17C17,15.34 14.76,13 12,13M7.76,4.28C7.31,4.16 4.59,4.35 4.59,4.35C4.59,4.35 6.8,6.1 7.24,6.22C7.69,6.34 9.77,6.43 9.91,5.9C10.06,5.36 8.2,4.4 7.76,4.28M16.24,4.28C15.8,4.4 13.94,5.36 14.09,5.9C14.23,6.43 16.31,6.34 16.76,6.22C17.2,6.1 19.41,4.35 19.41,4.35C19.41,4.35 16.69,4.16 16.24,4.28Z" /></g><g id="pill"><path d="M4.22,11.29L11.29,4.22C13.64,1.88 17.43,1.88 19.78,4.22C22.12,6.56 22.12,10.36 19.78,12.71L12.71,19.78C10.36,22.12 6.56,22.12 4.22,19.78C1.88,17.43 1.88,13.64 4.22,11.29M5.64,12.71C4.59,13.75 4.24,15.24 4.6,16.57L10.59,10.59L14.83,14.83L18.36,11.29C19.93,9.73 19.93,7.2 18.36,5.64C16.8,4.07 14.27,4.07 12.71,5.64L5.64,12.71Z" /></g><g id="pillar"><path d="M6,5H18A1,1 0 0,1 19,6A1,1 0 0,1 18,7H6A1,1 0 0,1 5,6A1,1 0 0,1 6,5M21,2V4H3V2H21M15,8H17V22H15V8M7,8H9V22H7V8M11,8H13V22H11V8Z" /></g><g id="pin"><path d="M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z" /></g><g id="pin-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z" /></g><g id="pine-tree"><path d="M10,21V18H3L8,13H5L10,8H7L12,3L17,8H14L19,13H16L21,18H14V21H10Z" /></g><g id="pine-tree-box"><path d="M4,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M11,19H13V17H18L14,13H17L13,9H16L12,5L8,9H11L7,13H10L6,17H11V19Z" /></g><g id="pinterest"><path d="M13.25,17.25C12.25,17.25 11.29,16.82 10.6,16.1L9.41,20.1L9.33,20.36L9.29,20.34C9.04,20.75 8.61,21 8.12,21C7.37,21 6.75,20.38 6.75,19.62C6.75,19.56 6.76,19.5 6.77,19.44L6.75,19.43L6.81,19.21L9.12,12.26C9.12,12.26 8.87,11.5 8.87,10.42C8.87,8.27 10.03,7.62 10.95,7.62C11.88,7.62 12.73,7.95 12.73,9.26C12.73,10.94 11.61,11.8 11.61,13C11.61,13.94 12.37,14.69 13.29,14.69C16.21,14.69 17.25,12.5 17.25,10.44C17.25,7.71 14.89,5.5 12,5.5C9.1,5.5 6.75,7.71 6.75,10.44C6.75,11.28 7,12.12 7.43,12.85C7.54,13.05 7.6,13.27 7.6,13.5A1.25,1.25 0 0,1 6.35,14.75C5.91,14.75 5.5,14.5 5.27,14.13C4.6,13 4.25,11.73 4.25,10.44C4.25,6.33 7.73,3 12,3C16.27,3 19.75,6.33 19.75,10.44C19.75,13.72 17.71,17.25 13.25,17.25Z" /></g><g id="pinterest-box"><path d="M13,16.2C12.2,16.2 11.43,15.86 10.88,15.28L9.93,18.5L9.86,18.69L9.83,18.67C9.64,19 9.29,19.2 8.9,19.2C8.29,19.2 7.8,18.71 7.8,18.1C7.8,18.05 7.81,18 7.81,17.95H7.8L7.85,17.77L9.7,12.21C9.7,12.21 9.5,11.59 9.5,10.73C9.5,9 10.42,8.5 11.16,8.5C11.91,8.5 12.58,8.76 12.58,9.81C12.58,11.15 11.69,11.84 11.69,12.81C11.69,13.55 12.29,14.16 13.03,14.16C15.37,14.16 16.2,12.4 16.2,10.75C16.2,8.57 14.32,6.8 12,6.8C9.68,6.8 7.8,8.57 7.8,10.75C7.8,11.42 8,12.09 8.34,12.68C8.43,12.84 8.5,13 8.5,13.2A1,1 0 0,1 7.5,14.2C7.13,14.2 6.79,14 6.62,13.7C6.08,12.81 5.8,11.79 5.8,10.75C5.8,7.47 8.58,4.8 12,4.8C15.42,4.8 18.2,7.47 18.2,10.75C18.2,13.37 16.57,16.2 13,16.2M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="pistol"><path d="M7,5H23V9H22V10H16A1,1 0 0,0 15,11V12A2,2 0 0,1 13,14H9.62C9.24,14 8.89,14.22 8.72,14.56L6.27,19.45C6.1,19.79 5.76,20 5.38,20H2C2,20 -1,20 3,14C3,14 6,10 2,10V5H3L3.5,4H6.5L7,5M14,12V11A1,1 0 0,0 13,10H12C12,10 11,11 12,12A2,2 0 0,1 10,10A1,1 0 0,0 9,11V12A1,1 0 0,0 10,13H13A1,1 0 0,0 14,12Z" /></g><g id="pizza"><path d="M12,15A2,2 0 0,1 10,13C10,11.89 10.9,11 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M7,7C7,5.89 7.89,5 9,5A2,2 0 0,1 11,7A2,2 0 0,1 9,9C7.89,9 7,8.1 7,7M12,2C8.43,2 5.23,3.54 3,6L12,22L21,6C18.78,3.54 15.57,2 12,2Z" /></g><g id="plane-shield"><path d="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5.68C12.5,5.68 12.95,6.11 12.95,6.63V10.11L18,13.26V14.53L12.95,12.95V16.42L14.21,17.37V18.32L12,17.68L9.79,18.32V17.37L11.05,16.42V12.95L6,14.53V13.26L11.05,10.11V6.63C11.05,6.11 11.5,5.68 12,5.68Z" /></g><g id="play"><path d="M8,5.14V19.14L19,12.14L8,5.14Z" /></g><g id="play-box-outline"><path d="M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M10,8V16L15,12L10,8Z" /></g><g id="play-circle"><path d="M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="play-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M10,16.5L16,12L10,7.5V16.5Z" /></g><g id="play-pause"><path d="M3,5V19L11,12M13,19H16V5H13M18,5V19H21V5" /></g><g id="play-protected-content"><path d="M2,5V18H11V16H4V7H17V11H19V5H2M9,9V14L12.5,11.5L9,9M21.04,11.67L16.09,16.62L13.96,14.5L12.55,15.91L16.09,19.45L22.45,13.09L21.04,11.67Z" /></g><g id="playlist-check"><path d="M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z" /></g><g id="playlist-minus"><path d="M2,16H10V14H2M12,14V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z" /></g><g id="playlist-play"><path d="M19,9H2V11H19V9M19,5H2V7H19V5M2,15H15V13H2V15M17,13V19L22,16L17,13Z" /></g><g id="playlist-plus"><path d="M2,16H10V14H2M18,14V10H16V14H12V16H16V20H18V16H22V14M14,6H2V8H14M14,10H2V12H14V10Z" /></g><g id="playlist-remove"><path d="M2,6V8H14V6H2M2,10V12H10V10H2M14.17,10.76L12.76,12.17L15.59,15L12.76,17.83L14.17,19.24L17,16.41L19.83,19.24L21.24,17.83L18.41,15L21.24,12.17L19.83,10.76L17,13.59L14.17,10.76M2,14V16H10V14H2Z" /></g><g id="playstation"><path d="M9.5,4.27C10.88,4.53 12.9,5.14 14,5.5C16.75,6.45 17.69,7.63 17.69,10.29C17.69,12.89 16.09,13.87 14.05,12.89V8.05C14.05,7.5 13.95,6.97 13.41,6.82C13,6.69 12.76,7.07 12.76,7.63V19.73L9.5,18.69V4.27M13.37,17.62L18.62,15.75C19.22,15.54 19.31,15.24 18.83,15.08C18.34,14.92 17.47,14.97 16.87,15.18L13.37,16.41V14.45L13.58,14.38C13.58,14.38 14.59,14 16,13.87C17.43,13.71 19.17,13.89 20.53,14.4C22.07,14.89 22.25,15.61 21.86,16.1C21.46,16.6 20.5,16.95 20.5,16.95L13.37,19.5V17.62M3.5,17.42C1.93,17 1.66,16.05 2.38,15.5C3.05,15 4.18,14.65 4.18,14.65L8.86,13V14.88L5.5,16.09C4.9,16.3 4.81,16.6 5.29,16.76C5.77,16.92 6.65,16.88 7.24,16.66L8.86,16.08V17.77L8.54,17.83C6.92,18.09 5.2,18 3.5,17.42Z" /></g><g id="plex"><path d="M4,2C2.89,2 2,2.89 2,4V20C2,21.11 2.89,22 4,22H20C21.11,22 22,21.11 22,20V4C22,2.89 21.11,2 20,2H4M8.56,6H12.06L15.5,12L12.06,18H8.56L12,12L8.56,6Z" /></g><g id="plus"><path d="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" /></g><g id="plus-box"><path d="M17,13H13V17H11V13H7V11H11V7H13V11H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="plus-box-outline"><path d="M19,19V5H5V19H19M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M11,7H13V11H17V13H13V17H11V13H7V11H11V7Z" /></g><g id="plus-circle"><path d="M17,13H13V17H11V13H7V11H11V7H13V11H17M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="plus-circle-multiple-outline"><path d="M16,8H14V11H11V13H14V16H16V13H19V11H16M2,12C2,9.21 3.64,6.8 6,5.68V3.5C2.5,4.76 0,8.09 0,12C0,15.91 2.5,19.24 6,20.5V18.32C3.64,17.2 2,14.79 2,12M15,3C10.04,3 6,7.04 6,12C6,16.96 10.04,21 15,21C19.96,21 24,16.96 24,12C24,7.04 19.96,3 15,3M15,19C11.14,19 8,15.86 8,12C8,8.14 11.14,5 15,5C18.86,5 22,8.14 22,12C22,15.86 18.86,19 15,19Z" /></g><g id="plus-circle-outline"><path d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z" /></g><g id="plus-network"><path d="M16,11V9H13V6H11V9H8V11H11V14H13V11H16M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z" /></g><g id="plus-one"><path d="M10,8V12H14V14H10V18H8V14H4V12H8V8H10M14.5,6.08L19,5V18H17V7.4L14.5,7.9V6.08Z" /></g><g id="plus-outline"><path d="M4,9H9V4H15V9H20V15H15V20H9V15H4V9M11,13V18H13V13H18V11H13V6H11V11H6V13H11Z" /></g><g id="pocket"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12V4.5A2.5,2.5 0 0,1 4.5,2H19.5A2.5,2.5 0 0,1 22,4.5V12M15.88,8.25L12,12.13L8.12,8.24C7.53,7.65 6.58,7.65 6,8.24C5.41,8.82 5.41,9.77 6,10.36L10.93,15.32C11.5,15.9 12.47,15.9 13.06,15.32L18,10.37C18.59,9.78 18.59,8.83 18,8.25C17.42,7.66 16.47,7.66 15.88,8.25Z" /></g><g id="pokeball"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.92,4 4.55,7.05 4.06,11H8.13C8.57,9.27 10.14,8 12,8C13.86,8 15.43,9.27 15.87,11H19.94C19.45,7.05 16.08,4 12,4M12,20C16.08,20 19.45,16.95 19.94,13H15.87C15.43,14.73 13.86,16 12,16C10.14,16 8.57,14.73 8.13,13H4.06C4.55,16.95 7.92,20 12,20M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="polaroid"><path d="M6,3H18A2,2 0 0,1 20,5V19A2,2 0 0,1 18,21H6A2,2 0 0,1 4,19V5A2,2 0 0,1 6,3M6,5V17H18V5H6Z" /></g><g id="poll"><path d="M3,22V8H7V22H3M10,22V2H14V22H10M17,22V14H21V22H17Z" /></g><g id="poll-box"><path d="M17,17H15V13H17M13,17H11V7H13M9,17H7V10H9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="polymer"><path d="M19,4H15L7.1,16.63L4.5,12L9,4H5L0.5,12L5,20H9L16.89,7.37L19.5,12L15,20H19L23.5,12L19,4Z" /></g><g id="pool"><path d="M2,15C3.67,14.25 5.33,13.5 7,13.17V5A3,3 0 0,1 10,2C11.31,2 12.42,2.83 12.83,4H10A1,1 0 0,0 9,5V6H14V5A3,3 0 0,1 17,2C18.31,2 19.42,2.83 19.83,4H17A1,1 0 0,0 16,5V14.94C18,14.62 20,13 22,13V15C19.78,15 17.56,17 15.33,17C13.11,17 10.89,15 8.67,15C6.44,15 4.22,16 2,17V15M14,8H9V10H14V8M14,12H9V13C10.67,13.16 12.33,14.31 14,14.79V12M2,19C4.22,18 6.44,17 8.67,17C10.89,17 13.11,19 15.33,19C17.56,19 19.78,17 22,17V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V19Z" /></g><g id="popcorn"><path d="M7,22H4.75C4.75,22 4,22 3.81,20.65L2.04,3.81L2,3.5C2,2.67 2.9,2 4,2C5.1,2 6,2.67 6,3.5C6,2.67 6.9,2 8,2C9.1,2 10,2.67 10,3.5C10,2.67 10.9,2 12,2C13.09,2 14,2.66 14,3.5V3.5C14,2.67 14.9,2 16,2C17.1,2 18,2.67 18,3.5C18,2.67 18.9,2 20,2C21.1,2 22,2.67 22,3.5L21.96,3.81L20.19,20.65C20,22 19.25,22 19.25,22H17L16.5,22H13.75L10.25,22H7.5L7,22M17.85,4.93C17.55,4.39 16.84,4 16,4C15.19,4 14.36,4.36 14,4.87L13.78,20H16.66L17.85,4.93M10,4.87C9.64,4.36 8.81,4 8,4C7.16,4 6.45,4.39 6.15,4.93L7.34,20H10.22L10,4.87Z" /></g><g id="pot"><path d="M19,19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V13H3V10H21V13H19V19M6,6H8V8H6V6M11,6H13V8H11V6M16,6H18V8H16V6M18,3H20V5H18V3M13,3H15V5H13V3M8,3H10V5H8V3Z" /></g><g id="pot-mix"><path d="M19,19A2,2 0 0,1 17,21H7A2,2 0 0,1 5,19V13H3V10H14L18,3.07L19.73,4.07L16.31,10H21V13H19V19Z" /></g><g id="pound"><path d="M5.41,21L6.12,17H2.12L2.47,15H6.47L7.53,9H3.53L3.88,7H7.88L8.59,3H10.59L9.88,7H15.88L16.59,3H18.59L17.88,7H21.88L21.53,9H17.53L16.47,15H20.47L20.12,17H16.12L15.41,21H13.41L14.12,17H8.12L7.41,21H5.41M9.53,9L8.47,15H14.47L15.53,9H9.53Z" /></g><g id="pound-box"><path d="M3,5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5M7,18H9L9.35,16H13.35L13,18H15L15.35,16H17.35L17.71,14H15.71L16.41,10H18.41L18.76,8H16.76L17.12,6H15.12L14.76,8H10.76L11.12,6H9.12L8.76,8H6.76L6.41,10H8.41L7.71,14H5.71L5.35,16H7.35L7,18M10.41,10H14.41L13.71,14H9.71L10.41,10Z" /></g><g id="power"><path d="M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13" /></g><g id="power-plug"><path d="M16,7V3H14V7H10V3H8V7H8C7,7 6,8 6,9V14.5L9.5,18V21H14.5V18L18,14.5V9C18,8 17,7 16,7Z" /></g><g id="power-plug-off"><path d="M8,3V6.18C11.1,9.23 14.1,12.3 17.2,15.3C17.4,15 17.8,14.8 18,14.4V8.8C18,7.68 16.7,7.16 16,6.84V3H14V7H10V3H8M3.28,4C2.85,4.42 2.43,4.85 2,5.27L6,9.27V14.5C7.17,15.65 8.33,16.83 9.5,18V21H14.5V18C14.72,17.73 14.95,18.33 15.17,18.44C16.37,19.64 17.47,20.84 18.67,22.04C19.17,21.64 19.57,21.14 19.97,20.74C14.37,15.14 8.77,9.64 3.27,4.04L3.28,4Z" /></g><g id="power-settings"><path d="M15,24H17V22H15M16.56,4.44L15.11,5.89C16.84,6.94 18,8.83 18,11A6,6 0 0,1 12,17A6,6 0 0,1 6,11C6,8.83 7.16,6.94 8.88,5.88L7.44,4.44C5.36,5.88 4,8.28 4,11A8,8 0 0,0 12,19A8,8 0 0,0 20,11C20,8.28 18.64,5.88 16.56,4.44M13,2H11V12H13M11,24H13V22H11M7,24H9V22H7V24Z" /></g><g id="power-socket"><path d="M15,15H17V11H15M7,15H9V11H7M11,13H13V9H11M8.83,7H15.2L19,10.8V17H5V10.8M8,5L3,10V19H21V10L16,5H8Z" /></g><g id="prescription"><path d="M4,4V10L4,14H6V10H8L13.41,15.41L9.83,19L11.24,20.41L14.83,16.83L18.41,20.41L19.82,19L16.24,15.41L19.82,11.83L18.41,10.41L14.83,14L10.83,10H11A3,3 0 0,0 14,7A3,3 0 0,0 11,4H4M6,6H11A1,1 0 0,1 12,7A1,1 0 0,1 11,8H6V6Z" /></g><g id="presentation"><path d="M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5Z" /></g><g id="presentation-play"><path d="M2,3H10A2,2 0 0,1 12,1A2,2 0 0,1 14,3H22V5H21V16H15.25L17,22H15L13.25,16H10.75L9,22H7L8.75,16H3V5H2V3M5,5V14H19V5H5M11.85,11.85C11.76,11.94 11.64,12 11.5,12A0.5,0.5 0 0,1 11,11.5V7.5A0.5,0.5 0 0,1 11.5,7C11.64,7 11.76,7.06 11.85,7.15L13.25,8.54C13.57,8.86 13.89,9.18 13.89,9.5C13.89,9.82 13.57,10.14 13.25,10.46L11.85,11.85Z" /></g><g id="printer"><path d="M18,3H6V7H18M19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12M16,19H8V14H16M19,8H5A3,3 0 0,0 2,11V17H6V21H18V17H22V11A3,3 0 0,0 19,8Z" /></g><g id="printer-3d"><path d="M19,6A1,1 0 0,0 20,5A1,1 0 0,0 19,4A1,1 0 0,0 18,5A1,1 0 0,0 19,6M19,2A3,3 0 0,1 22,5V11H18V7H6V11H2V5A3,3 0 0,1 5,2H19M18,18.25C18,18.63 17.79,18.96 17.47,19.13L12.57,21.82C12.4,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L6.53,19.13C6.21,18.96 6,18.63 6,18.25V13C6,12.62 6.21,12.29 6.53,12.12L11.43,9.68C11.59,9.56 11.79,9.5 12,9.5C12.21,9.5 12.4,9.56 12.57,9.68L17.47,12.12C17.79,12.29 18,12.62 18,13V18.25M12,11.65L9.04,13L12,14.6L14.96,13L12,11.65M8,17.66L11,19.29V16.33L8,14.71V17.66M16,17.66V14.71L13,16.33V19.29L16,17.66Z" /></g><g id="printer-alert"><path d="M14,4V8H6V4H14M15,13A1,1 0 0,0 16,12A1,1 0 0,0 15,11A1,1 0 0,0 14,12A1,1 0 0,0 15,13M13,19V15H7V19H13M15,9A3,3 0 0,1 18,12V17H15V21H5V17H2V12A3,3 0 0,1 5,9H15M22,7V12H20V7H22M22,14V16H20V14H22Z" /></g><g id="printer-settings"><path d="M18,2V6H6V2H18M19,11A1,1 0 0,0 20,10A1,1 0 0,0 19,9A1,1 0 0,0 18,10A1,1 0 0,0 19,11M16,18V13H8V18H16M19,7A3,3 0 0,1 22,10V16H18V20H6V16H2V10A3,3 0 0,1 5,7H19M15,24V22H17V24H15M11,24V22H13V24H11M7,24V22H9V24H7Z" /></g><g id="priority-high"><path d="M14,19H22V17H14V19M14,13.5H22V11.5H14V13.5M14,8H22V6H14V8M2,12.5C2,8.92 4.92,6 8.5,6H9V4L12,7L9,10V8H8.5C6,8 4,10 4,12.5C4,15 6,17 8.5,17H12V19H8.5C4.92,19 2,16.08 2,12.5Z" /></g><g id="priority-low"><path d="M14,5H22V7H14V5M14,10.5H22V12.5H14V10.5M14,16H22V18H14V16M2,11.5C2,15.08 4.92,18 8.5,18H9V20L12,17L9,14V16H8.5C6,16 4,14 4,11.5C4,9 6,7 8.5,7H12V5H8.5C4.92,5 2,7.92 2,11.5Z" /></g><g id="professional-hexagon"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M5,9V15H6.25V13H7A2,2 0 0,0 9,11A2,2 0 0,0 7,9H5M6.25,12V10H6.75A1,1 0 0,1 7.75,11A1,1 0 0,1 6.75,12H6.25M9.75,9V15H11V13H11.75L12.41,15H13.73L12.94,12.61C13.43,12.25 13.75,11.66 13.75,11A2,2 0 0,0 11.75,9H9.75M11,12V10H11.5A1,1 0 0,1 12.5,11A1,1 0 0,1 11.5,12H11M17,9C15.62,9 14.5,10.34 14.5,12C14.5,13.66 15.62,15 17,15C18.38,15 19.5,13.66 19.5,12C19.5,10.34 18.38,9 17,9M17,10.25C17.76,10.25 18.38,11.03 18.38,12C18.38,12.97 17.76,13.75 17,13.75C16.24,13.75 15.63,12.97 15.63,12C15.63,11.03 16.24,10.25 17,10.25Z" /></g><g id="projector"><path d="M16,6C14.87,6 13.77,6.35 12.84,7H4C2.89,7 2,7.89 2,9V15C2,16.11 2.89,17 4,17H5V18A1,1 0 0,0 6,19H8A1,1 0 0,0 9,18V17H15V18A1,1 0 0,0 16,19H18A1,1 0 0,0 19,18V17H20C21.11,17 22,16.11 22,15V9C22,7.89 21.11,7 20,7H19.15C18.23,6.35 17.13,6 16,6M16,7.5A3.5,3.5 0 0,1 19.5,11A3.5,3.5 0 0,1 16,14.5A3.5,3.5 0 0,1 12.5,11A3.5,3.5 0 0,1 16,7.5M4,9H8V10H4V9M16,9A2,2 0 0,0 14,11A2,2 0 0,0 16,13A2,2 0 0,0 18,11A2,2 0 0,0 16,9M4,11H8V12H4V11M4,13H8V14H4V13Z" /></g><g id="projector-screen"><path d="M4,2A1,1 0 0,0 3,3V4A1,1 0 0,0 4,5H5V14H11V16.59L6.79,20.79L8.21,22.21L11,19.41V22H13V19.41L15.79,22.21L17.21,20.79L13,16.59V14H19V5H20A1,1 0 0,0 21,4V3A1,1 0 0,0 20,2H4Z" /></g><g id="publish"><path d="M5,4V6H19V4H5M5,14H9V20H15V14H19L12,7L5,14Z" /></g><g id="pulse"><path d="M3,13H5.79L10.1,4.79L11.28,13.75L14.5,9.66L17.83,13H21V15H17L14.67,12.67L9.92,18.73L8.94,11.31L7,15H3V13Z" /></g><g id="puzzle"><path d="M20.5,11H19V7C19,5.89 18.1,5 17,5H13V3.5A2.5,2.5 0 0,0 10.5,1A2.5,2.5 0 0,0 8,3.5V5H4A2,2 0 0,0 2,7V10.8H3.5C5,10.8 6.2,12 6.2,13.5C6.2,15 5,16.2 3.5,16.2H2V20A2,2 0 0,0 4,22H7.8V20.5C7.8,19 9,17.8 10.5,17.8C12,17.8 13.2,19 13.2,20.5V22H17A2,2 0 0,0 19,20V16H20.5A2.5,2.5 0 0,0 23,13.5A2.5,2.5 0 0,0 20.5,11Z" /></g><g id="qqchat"><path d="M3.18,13.54C3.76,12.16 4.57,11.14 5.17,10.92C5.16,10.12 5.31,9.62 5.56,9.22C5.56,9.19 5.5,8.86 5.72,8.45C5.87,4.85 8.21,2 12,2C15.79,2 18.13,4.85 18.28,8.45C18.5,8.86 18.44,9.19 18.44,9.22C18.69,9.62 18.84,10.12 18.83,10.92C19.43,11.14 20.24,12.16 20.82,13.55C21.57,15.31 21.69,17 21.09,17.3C20.68,17.5 20.03,17 19.42,16.12C19.18,17.1 18.58,18 17.73,18.71C18.63,19.04 19.21,19.58 19.21,20.19C19.21,21.19 17.63,22 15.69,22C13.93,22 12.5,21.34 12.21,20.5H11.79C11.5,21.34 10.07,22 8.31,22C6.37,22 4.79,21.19 4.79,20.19C4.79,19.58 5.37,19.04 6.27,18.71C5.42,18 4.82,17.1 4.58,16.12C3.97,17 3.32,17.5 2.91,17.3C2.31,17 2.43,15.31 3.18,13.54Z" /></g><g id="qrcode"><path d="M3,11H5V13H3V11M11,5H13V9H11V5M9,11H13V15H11V13H9V11M15,11H17V13H19V11H21V13H19V15H21V19H19V21H17V19H13V21H11V17H15V15H17V13H15V11M19,19V15H17V19H19M15,3H21V9H15V3M17,5V7H19V5H17M3,3H9V9H3V3M5,5V7H7V5H5M3,15H9V21H3V15M5,17V19H7V17H5Z" /></g><g id="qrcode-scan"><path d="M4,4H10V10H4V4M20,4V10H14V4H20M14,15H16V13H14V11H16V13H18V11H20V13H18V15H20V18H18V20H16V18H13V20H11V16H14V15M16,15V18H18V15H16M4,20V14H10V20H4M6,6V8H8V6H6M16,6V8H18V6H16M6,16V18H8V16H6M4,11H6V13H4V11M9,11H13V15H11V13H9V11M11,6H13V10H11V6M2,2V6H0V2A2,2 0 0,1 2,0H6V2H2M22,0A2,2 0 0,1 24,2V6H22V2H18V0H22M2,18V22H6V24H2A2,2 0 0,1 0,22V18H2M22,22V18H24V22A2,2 0 0,1 22,24H18V22H22Z" /></g><g id="quadcopter"><path d="M5.5,1C8,1 10,3 10,5.5C10,6.38 9.75,7.2 9.31,7.9L9.41,8H14.59L14.69,7.9C14.25,7.2 14,6.38 14,5.5C14,3 16,1 18.5,1C21,1 23,3 23,5.5C23,8 21,10 18.5,10C17.62,10 16.8,9.75 16.1,9.31L15,10.41V13.59L16.1,14.69C16.8,14.25 17.62,14 18.5,14C21,14 23,16 23,18.5C23,21 21,23 18.5,23C16,23 14,21 14,18.5C14,17.62 14.25,16.8 14.69,16.1L14.59,16H9.41L9.31,16.1C9.75,16.8 10,17.62 10,18.5C10,21 8,23 5.5,23C3,23 1,21 1,18.5C1,16 3,14 5.5,14C6.38,14 7.2,14.25 7.9,14.69L9,13.59V10.41L7.9,9.31C7.2,9.75 6.38,10 5.5,10C3,10 1,8 1,5.5C1,3 3,1 5.5,1M5.5,3A2.5,2.5 0 0,0 3,5.5A2.5,2.5 0 0,0 5.5,8A2.5,2.5 0 0,0 8,5.5A2.5,2.5 0 0,0 5.5,3M5.5,16A2.5,2.5 0 0,0 3,18.5A2.5,2.5 0 0,0 5.5,21A2.5,2.5 0 0,0 8,18.5A2.5,2.5 0 0,0 5.5,16M18.5,3A2.5,2.5 0 0,0 16,5.5A2.5,2.5 0 0,0 18.5,8A2.5,2.5 0 0,0 21,5.5A2.5,2.5 0 0,0 18.5,3M18.5,16A2.5,2.5 0 0,0 16,18.5A2.5,2.5 0 0,0 18.5,21A2.5,2.5 0 0,0 21,18.5A2.5,2.5 0 0,0 18.5,16M3.91,17.25L5.04,17.91C5.17,17.81 5.33,17.75 5.5,17.75A0.75,0.75 0 0,1 6.25,18.5L6.24,18.6L7.37,19.25L7.09,19.75L5.96,19.09C5.83,19.19 5.67,19.25 5.5,19.25A0.75,0.75 0 0,1 4.75,18.5L4.76,18.4L3.63,17.75L3.91,17.25M3.63,6.25L4.76,5.6L4.75,5.5A0.75,0.75 0 0,1 5.5,4.75C5.67,4.75 5.83,4.81 5.96,4.91L7.09,4.25L7.37,4.75L6.24,5.4L6.25,5.5A0.75,0.75 0 0,1 5.5,6.25C5.33,6.25 5.17,6.19 5.04,6.09L3.91,6.75L3.63,6.25M16.91,4.25L18.04,4.91C18.17,4.81 18.33,4.75 18.5,4.75A0.75,0.75 0 0,1 19.25,5.5L19.24,5.6L20.37,6.25L20.09,6.75L18.96,6.09C18.83,6.19 18.67,6.25 18.5,6.25A0.75,0.75 0 0,1 17.75,5.5L17.76,5.4L16.63,4.75L16.91,4.25M16.63,19.25L17.75,18.5A0.75,0.75 0 0,1 18.5,17.75C18.67,17.75 18.83,17.81 18.96,17.91L20.09,17.25L20.37,17.75L19.25,18.5A0.75,0.75 0 0,1 18.5,19.25C18.33,19.25 18.17,19.19 18.04,19.09L16.91,19.75L16.63,19.25Z" /></g><g id="quality-high"><path d="M14.5,13.5H16.5V10.5H14.5M18,14A1,1 0 0,1 17,15H16.25V16.5H14.75V15H14A1,1 0 0,1 13,14V10A1,1 0 0,1 14,9H17A1,1 0 0,1 18,10M11,15H9.5V13H7.5V15H6V9H7.5V11.5H9.5V9H11M19,4H5C3.89,4 3,4.89 3,6V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V6C21,4.89 20.1,4 19,4Z" /></g><g id="quicktime"><path d="M12,3A9,9 0 0,1 21,12C21,13.76 20.5,15.4 19.62,16.79L21,18.17V20A1,1 0 0,1 20,21H18.18L16.79,19.62C15.41,20.5 13.76,21 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C12.65,17 13.26,16.88 13.83,16.65L10.95,13.77C10.17,13 10.17,11.72 10.95,10.94C11.73,10.16 13,10.16 13.78,10.94L16.66,13.82C16.88,13.26 17,12.64 17,12A5,5 0 0,0 12,7Z" /></g><g id="radar"><path d="M19.07,4.93L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12C4,7.92 7.05,4.56 11,4.07V6.09C8.16,6.57 6,9.03 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12C18,10.34 17.33,8.84 16.24,7.76L14.83,9.17C15.55,9.9 16,10.9 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12C8,10.14 9.28,8.59 11,8.14V10.28C10.4,10.63 10,11.26 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,11.26 13.6,10.62 13,10.28V2H12A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,9.24 20.88,6.74 19.07,4.93Z" /></g><g id="radiator"><path d="M7.95,3L6.53,5.19L7.95,7.4H7.94L5.95,10.5L4.22,9.6L5.64,7.39L4.22,5.19L6.22,2.09L7.95,3M13.95,2.89L12.53,5.1L13.95,7.3L13.94,7.31L11.95,10.4L10.22,9.5L11.64,7.3L10.22,5.1L12.22,2L13.95,2.89M20,2.89L18.56,5.1L20,7.3V7.31L18,10.4L16.25,9.5L17.67,7.3L16.25,5.1L18.25,2L20,2.89M2,22V14A2,2 0 0,1 4,12H20A2,2 0 0,1 22,14V22H20V20H4V22H2M6,14A1,1 0 0,0 5,15V17A1,1 0 0,0 6,18A1,1 0 0,0 7,17V15A1,1 0 0,0 6,14M10,14A1,1 0 0,0 9,15V17A1,1 0 0,0 10,18A1,1 0 0,0 11,17V15A1,1 0 0,0 10,14M14,14A1,1 0 0,0 13,15V17A1,1 0 0,0 14,18A1,1 0 0,0 15,17V15A1,1 0 0,0 14,14M18,14A1,1 0 0,0 17,15V17A1,1 0 0,0 18,18A1,1 0 0,0 19,17V15A1,1 0 0,0 18,14Z" /></g><g id="radio"><path d="M20,6A2,2 0 0,1 22,8V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V8C2,7.15 2.53,6.42 3.28,6.13L15.71,1L16.47,2.83L8.83,6H20M20,8H4V12H16V10H18V12H20V8M7,14A3,3 0 0,0 4,17A3,3 0 0,0 7,20A3,3 0 0,0 10,17A3,3 0 0,0 7,14Z" /></g><g id="radio-handheld"><path d="M9,2A1,1 0 0,0 8,3C8,8.67 8,14.33 8,20C8,21.11 8.89,22 10,22H15C16.11,22 17,21.11 17,20V9C17,7.89 16.11,7 15,7H10V3A1,1 0 0,0 9,2M10,9H15V13H10V9Z" /></g><g id="radio-tower"><path d="M12,10A2,2 0 0,1 14,12C14,12.5 13.82,12.94 13.53,13.29L16.7,22H14.57L12,14.93L9.43,22H7.3L10.47,13.29C10.18,12.94 10,12.5 10,12A2,2 0 0,1 12,10M12,8A4,4 0 0,0 8,12C8,12.5 8.1,13 8.28,13.46L7.4,15.86C6.53,14.81 6,13.47 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12C18,13.47 17.47,14.81 16.6,15.86L15.72,13.46C15.9,13 16,12.5 16,12A4,4 0 0,0 12,8M12,4A8,8 0 0,0 4,12C4,14.36 5,16.5 6.64,17.94L5.92,19.94C3.54,18.11 2,15.23 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12C22,15.23 20.46,18.11 18.08,19.94L17.36,17.94C19,16.5 20,14.36 20,12A8,8 0 0,0 12,4Z" /></g><g id="radioactive"><path d="M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,22C10.05,22 8.22,21.44 6.69,20.47L10,15.47C10.6,15.81 11.28,16 12,16C12.72,16 13.4,15.81 14,15.47L17.31,20.47C15.78,21.44 13.95,22 12,22M2,12C2,7.86 4.5,4.3 8.11,2.78L10.34,8.36C8.96,9 8,10.38 8,12H2M16,12C16,10.38 15.04,9 13.66,8.36L15.89,2.78C19.5,4.3 22,7.86 22,12H16Z" /></g><g id="radiobox-blank"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="radiobox-marked"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7Z" /></g><g id="raspberrypi"><path d="M20,8H22V10H20V8M4,5H20A2,2 0 0,1 22,7H19V9H5V13H8V16H19V17H22A2,2 0 0,1 20,19H16V20H14V19H11V20H7V19H4A2,2 0 0,1 2,17V7A2,2 0 0,1 4,5M19,15H9V10H19V11H22V13H19V15M13,12V14H15V12H13M5,6V8H6V6H5M7,6V8H8V6H7M9,6V8H10V6H9M11,6V8H12V6H11M13,6V8H14V6H13M15,6V8H16V6H15M20,14H22V16H20V14Z" /></g><g id="ray-end"><path d="M20,9C18.69,9 17.58,9.83 17.17,11H2V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9Z" /></g><g id="ray-end-arrow"><path d="M1,12L5,16V13H17.17C17.58,14.17 18.69,15 20,15A3,3 0 0,0 23,12A3,3 0 0,0 20,9C18.69,9 17.58,9.83 17.17,11H5V8L1,12Z" /></g><g id="ray-start"><path d="M4,9C5.31,9 6.42,9.83 6.83,11H22V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z" /></g><g id="ray-start-arrow"><path d="M23,12L19,16V13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9C5.31,9 6.42,9.83 6.83,11H19V8L23,12Z" /></g><g id="ray-start-end"><path d="M4,9C5.31,9 6.42,9.83 6.83,11H17.17C17.58,9.83 18.69,9 20,9A3,3 0 0,1 23,12A3,3 0 0,1 20,15C18.69,15 17.58,14.17 17.17,13H6.83C6.42,14.17 5.31,15 4,15A3,3 0 0,1 1,12A3,3 0 0,1 4,9Z" /></g><g id="ray-vertex"><path d="M2,11H9.17C9.58,9.83 10.69,9 12,9C13.31,9 14.42,9.83 14.83,11H22V13H14.83C14.42,14.17 13.31,15 12,15C10.69,15 9.58,14.17 9.17,13H2V11Z" /></g><g id="rdio"><path d="M19.29,10.84C19.35,11.22 19.38,11.61 19.38,12C19.38,16.61 15.5,20.35 10.68,20.35C5.87,20.35 2,16.61 2,12C2,7.39 5.87,3.65 10.68,3.65C11.62,3.65 12.53,3.79 13.38,4.06V9.11C13.38,9.11 10.79,7.69 8.47,9.35C6.15,11 6.59,12.76 6.59,12.76C6.59,12.76 6.7,15.5 9.97,15.5C13.62,15.5 14.66,12.19 14.66,12.19V4.58C15.36,4.93 16,5.36 16.65,5.85C18.2,6.82 19.82,7.44 21.67,7.39C21.67,7.39 22,7.31 22,8C22,8.4 21.88,8.83 21.5,9.25C21.5,9.25 20.78,10.33 19.29,10.84Z" /></g><g id="react"><path d="M12,10.11C13.03,10.11 13.87,10.95 13.87,12C13.87,13 13.03,13.85 12,13.85C10.97,13.85 10.13,13 10.13,12C10.13,10.95 10.97,10.11 12,10.11M7.37,20C8,20.38 9.38,19.8 10.97,18.3C10.45,17.71 9.94,17.07 9.46,16.4C8.64,16.32 7.83,16.2 7.06,16.04C6.55,18.18 6.74,19.65 7.37,20M8.08,14.26L7.79,13.75C7.68,14.04 7.57,14.33 7.5,14.61C7.77,14.67 8.07,14.72 8.38,14.77C8.28,14.6 8.18,14.43 8.08,14.26M14.62,13.5L15.43,12L14.62,10.5C14.32,9.97 14,9.5 13.71,9.03C13.17,9 12.6,9 12,9C11.4,9 10.83,9 10.29,9.03C10,9.5 9.68,9.97 9.38,10.5L8.57,12L9.38,13.5C9.68,14.03 10,14.5 10.29,14.97C10.83,15 11.4,15 12,15C12.6,15 13.17,15 13.71,14.97C14,14.5 14.32,14.03 14.62,13.5M12,6.78C11.81,7 11.61,7.23 11.41,7.5C11.61,7.5 11.8,7.5 12,7.5C12.2,7.5 12.39,7.5 12.59,7.5C12.39,7.23 12.19,7 12,6.78M12,17.22C12.19,17 12.39,16.77 12.59,16.5C12.39,16.5 12.2,16.5 12,16.5C11.8,16.5 11.61,16.5 11.41,16.5C11.61,16.77 11.81,17 12,17.22M16.62,4C16,3.62 14.62,4.2 13.03,5.7C13.55,6.29 14.06,6.93 14.54,7.6C15.36,7.68 16.17,7.8 16.94,7.96C17.45,5.82 17.26,4.35 16.62,4M15.92,9.74L16.21,10.25C16.32,9.96 16.43,9.67 16.5,9.39C16.23,9.33 15.93,9.28 15.62,9.23C15.72,9.4 15.82,9.57 15.92,9.74M17.37,2.69C18.84,3.53 19,5.74 18.38,8.32C20.92,9.07 22.75,10.31 22.75,12C22.75,13.69 20.92,14.93 18.38,15.68C19,18.26 18.84,20.47 17.37,21.31C15.91,22.15 13.92,21.19 12,19.36C10.08,21.19 8.09,22.15 6.62,21.31C5.16,20.47 5,18.26 5.62,15.68C3.08,14.93 1.25,13.69 1.25,12C1.25,10.31 3.08,9.07 5.62,8.32C5,5.74 5.16,3.53 6.62,2.69C8.09,1.85 10.08,2.81 12,4.64C13.92,2.81 15.91,1.85 17.37,2.69M17.08,12C17.42,12.75 17.72,13.5 17.97,14.26C20.07,13.63 21.25,12.73 21.25,12C21.25,11.27 20.07,10.37 17.97,9.74C17.72,10.5 17.42,11.25 17.08,12M6.92,12C6.58,11.25 6.28,10.5 6.03,9.74C3.93,10.37 2.75,11.27 2.75,12C2.75,12.73 3.93,13.63 6.03,14.26C6.28,13.5 6.58,12.75 6.92,12M15.92,14.26C15.82,14.43 15.72,14.6 15.62,14.77C15.93,14.72 16.23,14.67 16.5,14.61C16.43,14.33 16.32,14.04 16.21,13.75L15.92,14.26M13.03,18.3C14.62,19.8 16,20.38 16.62,20C17.26,19.65 17.45,18.18 16.94,16.04C16.17,16.2 15.36,16.32 14.54,16.4C14.06,17.07 13.55,17.71 13.03,18.3M8.08,9.74C8.18,9.57 8.28,9.4 8.38,9.23C8.07,9.28 7.77,9.33 7.5,9.39C7.57,9.67 7.68,9.96 7.79,10.25L8.08,9.74M10.97,5.7C9.38,4.2 8,3.62 7.37,4C6.74,4.35 6.55,5.82 7.06,7.96C7.83,7.8 8.64,7.68 9.46,7.6C9.94,6.93 10.45,6.29 10.97,5.7Z" /></g><g id="read"><path d="M21.59,11.59L23,13L13.5,22.5L8.42,17.41L9.83,16L13.5,19.68L21.59,11.59M4,16V3H6L9,3A4,4 0 0,1 13,7C13,8.54 12.13,9.88 10.85,10.55L14,16H12L9.11,11H6V16H4M6,9H9A2,2 0 0,0 11,7A2,2 0 0,0 9,5H6V9Z" /></g><g id="readability"><path d="M12,4C15.15,4 17.81,6.38 18.69,9.65C18,10.15 17.58,10.93 17.5,11.81L17.32,13.91C15.55,13 13.78,12.17 12,12.17C10.23,12.17 8.45,13 6.68,13.91L6.5,11.77C6.42,10.89 6,10.12 5.32,9.61C6.21,6.36 8.86,4 12,4M17.05,17H6.95L6.73,14.47C8.5,13.59 10.24,12.75 12,12.75C13.76,12.75 15.5,13.59 17.28,14.47L17.05,17M5,19V18L3.72,14.5H3.5A2.5,2.5 0 0,1 1,12A2.5,2.5 0 0,1 3.5,9.5C4.82,9.5 5.89,10.5 6,11.81L6.5,18V19H5M19,19H17.5V18L18,11.81C18.11,10.5 19.18,9.5 20.5,9.5A2.5,2.5 0 0,1 23,12A2.5,2.5 0 0,1 20.5,14.5H20.28L19,18V19Z" /></g><g id="receipt"><path d="M3,22L4.5,20.5L6,22L7.5,20.5L9,22L10.5,20.5L12,22L13.5,20.5L15,22L16.5,20.5L18,22L19.5,20.5L21,22V2L19.5,3.5L18,2L16.5,3.5L15,2L13.5,3.5L12,2L10.5,3.5L9,2L7.5,3.5L6,2L4.5,3.5L3,2M18,9H6V7H18M18,13H6V11H18M18,17H6V15H18V17Z" /></g><g id="record"><path d="M19,12C19,15.86 15.86,19 12,19C8.14,19 5,15.86 5,12C5,8.14 8.14,5 12,5C15.86,5 19,8.14 19,12Z" /></g><g id="record-rec"><path d="M12.5,5A7.5,7.5 0 0,0 5,12.5A7.5,7.5 0 0,0 12.5,20A7.5,7.5 0 0,0 20,12.5A7.5,7.5 0 0,0 12.5,5M7,10H9A1,1 0 0,1 10,11V12C10,12.5 9.62,12.9 9.14,12.97L10.31,15H9.15L8,13V15H7M12,10H14V11H12V12H14V13H12V14H14V15H12A1,1 0 0,1 11,14V11A1,1 0 0,1 12,10M16,10H18V11H16V14H18V15H16A1,1 0 0,1 15,14V11A1,1 0 0,1 16,10M8,11V12H9V11" /></g><g id="recycle"><path d="M21.82,15.42L19.32,19.75C18.83,20.61 17.92,21.06 17,21H15V23L12.5,18.5L15,14V16H17.82L15.6,12.15L19.93,9.65L21.73,12.77C22.25,13.54 22.32,14.57 21.82,15.42M9.21,3.06H14.21C15.19,3.06 16.04,3.63 16.45,4.45L17.45,6.19L19.18,5.19L16.54,9.6L11.39,9.69L13.12,8.69L11.71,6.24L9.5,10.09L5.16,7.59L6.96,4.47C7.37,3.64 8.22,3.06 9.21,3.06M5.05,19.76L2.55,15.43C2.06,14.58 2.13,13.56 2.64,12.79L3.64,11.06L1.91,10.06L7.05,10.14L9.7,14.56L7.97,13.56L6.56,16H11V21H7.4C6.47,21.07 5.55,20.61 5.05,19.76Z" /></g><g id="reddit"><path d="M22,11.5C22,10.1 20.9,9 19.5,9C18.9,9 18.3,9.2 17.9,9.6C16.4,8.7 14.6,8.1 12.5,8L13.6,4L17,5A2,2 0 0,0 19,7A2,2 0 0,0 21,5A2,2 0 0,0 19,3C18.3,3 17.6,3.4 17.3,4L13.3,3C13,2.9 12.8,3.1 12.7,3.4L11.5,8C9.5,8.1 7.6,8.7 6.1,9.6C5.7,9.2 5.1,9 4.5,9C3.1,9 2,10.1 2,11.5C2,12.4 2.4,13.1 3.1,13.6L3,14.5C3,18.1 7,21 12,21C17,21 21,18.1 21,14.5L20.9,13.6C21.6,13.1 22,12.4 22,11.5M9,11.8C9.7,11.8 10.2,12.4 10.2,13C10.2,13.6 9.7,14.2 9,14.2C8.3,14.2 7.8,13.7 7.8,13C7.8,12.3 8.3,11.8 9,11.8M15.8,17.2C14,18.3 10,18.3 8.2,17.2C8,17 7.9,16.7 8.1,16.5C8.3,16.3 8.6,16.2 8.8,16.4C10,17.3 14,17.3 15.2,16.4C15.4,16.2 15.7,16.3 15.9,16.5C16.1,16.7 16,17 15.8,17.2M15,14.2C14.3,14.2 13.8,13.6 13.8,13C13.8,12.3 14.4,11.8 15,11.8C15.7,11.8 16.2,12.4 16.2,13C16.2,13.7 15.7,14.2 15,14.2Z" /></g><g id="redo"><path d="M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z" /></g><g id="redo-variant"><path d="M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z" /></g><g id="refresh"><path d="M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z" /></g><g id="regex"><path d="M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76V6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24V15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92H16V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19H5Z" /></g><g id="relative-scale"><path d="M20,18H4V6H20M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4M12,10H10V12H12M8,10H6V12H8M16,14H14V16H16M16,10H14V12H16V10Z" /></g><g id="reload"><path d="M19,12H22.32L17.37,16.95L12.42,12H16.97C17,10.46 16.42,8.93 15.24,7.75C12.9,5.41 9.1,5.41 6.76,7.75C4.42,10.09 4.42,13.9 6.76,16.24C8.6,18.08 11.36,18.47 13.58,17.41L15.05,18.88C12,20.69 8,20.29 5.34,17.65C2.22,14.53 2.23,9.47 5.35,6.35C8.5,3.22 13.53,3.21 16.66,6.34C18.22,7.9 19,9.95 19,12Z" /></g><g id="remote"><path d="M12,0C8.96,0 6.21,1.23 4.22,3.22L5.63,4.63C7.26,3 9.5,2 12,2C14.5,2 16.74,3 18.36,4.64L19.77,3.23C17.79,1.23 15.04,0 12,0M7.05,6.05L8.46,7.46C9.37,6.56 10.62,6 12,6C13.38,6 14.63,6.56 15.54,7.46L16.95,6.05C15.68,4.78 13.93,4 12,4C10.07,4 8.32,4.78 7.05,6.05M12,15A2,2 0 0,1 10,13A2,2 0 0,1 12,11A2,2 0 0,1 14,13A2,2 0 0,1 12,15M15,9H9A1,1 0 0,0 8,10V22A1,1 0 0,0 9,23H15A1,1 0 0,0 16,22V10A1,1 0 0,0 15,9Z" /></g><g id="rename-box"><path d="M18,17H10.5L12.5,15H18M6,17V14.5L13.88,6.65C14.07,6.45 14.39,6.45 14.59,6.65L16.35,8.41C16.55,8.61 16.55,8.92 16.35,9.12L8.47,17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="reorder-horizontal"><path d="M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z" /></g><g id="reorder-vertical"><path d="M9,3V21H11V3H9M5,3V21H7V3H5M13,3V21H15V3H13M19,3H17V21H19V3Z" /></g><g id="repeat"><path d="M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></g><g id="repeat-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L15.73,19H7V22L3,18L7,14V17H13.73L7,10.27V11H5V8.27L2,5.27M17,13H19V17.18L17,15.18V13M17,5V2L21,6L17,10V7H8.82L6.82,5H17Z" /></g><g id="repeat-once"><path d="M13,15V9H12L10,10V11H11.5V15M17,17H7V14L3,18L7,22V19H19V13H17M7,7H17V10L21,6L17,2V5H5V11H7V7Z" /></g><g id="replay"><path d="M12,5V1L7,6L12,11V7A6,6 0 0,1 18,13A6,6 0 0,1 12,19A6,6 0 0,1 6,13H4A8,8 0 0,0 12,21A8,8 0 0,0 20,13A8,8 0 0,0 12,5Z" /></g><g id="reply"><path d="M10,9V5L3,12L10,19V14.9C15,14.9 18.5,16.5 21,20C20,15 17,10 10,9Z" /></g><g id="reply-all"><path d="M13,9V5L6,12L13,19V14.9C18,14.9 21.5,16.5 24,20C23,15 20,10 13,9M7,8V5L0,12L7,19V16L3,12L7,8Z" /></g><g id="reproduction"><path d="M12.72,13.15L13.62,12.26C13.6,11 14.31,9.44 15.62,8.14C17.57,6.18 20.11,5.55 21.28,6.72C22.45,7.89 21.82,10.43 19.86,12.38C18.56,13.69 17,14.4 15.74,14.38L14.85,15.28C14.5,15.61 14,15.66 13.6,15.41C12.76,15.71 12,16.08 11.56,16.8C11.03,17.68 11.03,19.1 10.47,19.95C9.91,20.81 8.79,21.1 7.61,21.1C6.43,21.1 5,21 3.95,19.5L6.43,19.92C7,20 8.5,19.39 9.05,18.54C9.61,17.68 9.61,16.27 10.14,15.38C10.61,14.6 11.5,14.23 12.43,13.91C12.42,13.64 12.5,13.36 12.72,13.15M7,2A5,5 0 0,1 12,7A5,5 0 0,1 7,12A5,5 0 0,1 2,7A5,5 0 0,1 7,2M7,4A3,3 0 0,0 4,7A3,3 0 0,0 7,10A3,3 0 0,0 10,7A3,3 0 0,0 7,4Z" /></g><g id="resize-bottom-right"><path d="M22,22H20V20H22V22M22,18H20V16H22V18M18,22H16V20H18V22M18,18H16V16H18V18M14,22H12V20H14V22M22,14H20V12H22V14Z" /></g><g id="responsive"><path d="M4,6V16H9V12A2,2 0 0,1 11,10H16A2,2 0 0,1 18,12V16H20V6H4M0,20V18H4A2,2 0 0,1 2,16V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V16A2,2 0 0,1 20,18H24V20H18V20C18,21.11 17.1,22 16,22H11A2,2 0 0,1 9,20H9L0,20M11.5,20A0.5,0.5 0 0,0 11,20.5A0.5,0.5 0 0,0 11.5,21A0.5,0.5 0 0,0 12,20.5A0.5,0.5 0 0,0 11.5,20M15.5,20A0.5,0.5 0 0,0 15,20.5A0.5,0.5 0 0,0 15.5,21A0.5,0.5 0 0,0 16,20.5A0.5,0.5 0 0,0 15.5,20M13,20V21H14V20H13M11,12V19H16V12H11Z" /></g><g id="restore"><path d="M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3M12,8V13L16.28,15.54L17,14.33L13.5,12.25V8H12Z" /></g><g id="rewind"><path d="M11.5,12L20,18V6M11,18V6L2.5,12L11,18Z" /></g><g id="rewind-outline"><path d="M10,9.9L7,12L10,14.1V9.9M19,9.9L16,12L19,14.1V9.9M12,6V18L3.5,12L12,6M21,6V18L12.5,12L21,6Z" /></g><g id="rhombus"><path d="M21.5,10.8L13.2,2.5C12.5,1.8 11.5,1.8 10.8,2.5L2.5,10.8C1.8,11.5 1.8,12.5 2.5,13.2L10.8,21.5C11.5,22.2 12.5,22.2 13.2,21.5L21.5,13.2C22.1,12.5 22.1,11.5 21.5,10.8Z" /></g><g id="rhombus-outline"><path d="M21.5,10.8L13.2,2.5C12.5,1.8 11.5,1.8 10.8,2.5L2.5,10.8C1.8,11.5 1.8,12.5 2.5,13.2L10.8,21.5C11.5,22.2 12.5,22.2 13.2,21.5L21.5,13.2C22.1,12.5 22.1,11.5 21.5,10.8M20.3,12L12,20.3L3.7,12L12,3.7L20.3,12Z" /></g><g id="ribbon"><path d="M13.41,19.31L16.59,22.5L18,21.07L14.83,17.9M15.54,11.53H15.53L12,15.07L8.47,11.53H8.46V11.53C7.56,10.63 7,9.38 7,8A5,5 0 0,1 12,3A5,5 0 0,1 17,8C17,9.38 16.44,10.63 15.54,11.53M16.9,13C18.2,11.73 19,9.96 19,8A7,7 0 0,0 12,1A7,7 0 0,0 5,8C5,9.96 5.81,11.73 7.1,13V13L10.59,16.5L6,21.07L7.41,22.5L16.9,13Z" /></g><g id="road"><path d="M11,16H13V20H11M11,10H13V14H11M11,4H13V8H11M4,22H20V2H4V22Z" /></g><g id="road-variant"><path d="M18.1,4.8C18,4.3 17.6,4 17.1,4H13L13.2,7H10.8L11,4H6.8C6.3,4 5.9,4.4 5.8,4.8L3.1,18.8C3,19.4 3.5,20 4.1,20H10L10.3,15H13.7L14,20H19.8C20.4,20 20.9,19.4 20.8,18.8L18.1,4.8M10.4,13L10.6,9H13.2L13.4,13H10.4Z" /></g><g id="robot"><path d="M12,2A2,2 0 0,1 14,4C14,4.74 13.6,5.39 13,5.73V7H14A7,7 0 0,1 21,14H22A1,1 0 0,1 23,15V18A1,1 0 0,1 22,19H21V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V19H2A1,1 0 0,1 1,18V15A1,1 0 0,1 2,14H3A7,7 0 0,1 10,7H11V5.73C10.4,5.39 10,4.74 10,4A2,2 0 0,1 12,2M7.5,13A2.5,2.5 0 0,0 5,15.5A2.5,2.5 0 0,0 7.5,18A2.5,2.5 0 0,0 10,15.5A2.5,2.5 0 0,0 7.5,13M16.5,13A2.5,2.5 0 0,0 14,15.5A2.5,2.5 0 0,0 16.5,18A2.5,2.5 0 0,0 19,15.5A2.5,2.5 0 0,0 16.5,13Z" /></g><g id="rocket"><path d="M2.81,14.12L5.64,11.29L8.17,10.79C11.39,6.41 17.55,4.22 19.78,4.22C19.78,6.45 17.59,12.61 13.21,15.83L12.71,18.36L9.88,21.19L9.17,17.66C7.76,17.66 7.76,17.66 7.05,16.95C6.34,16.24 6.34,16.24 6.34,14.83L2.81,14.12M5.64,16.95L7.05,18.36L4.39,21.03H2.97V19.61L5.64,16.95M4.22,15.54L5.46,15.71L3,18.16V16.74L4.22,15.54M8.29,18.54L8.46,19.78L7.26,21H5.84L8.29,18.54M13,9.5A1.5,1.5 0 0,0 11.5,11A1.5,1.5 0 0,0 13,12.5A1.5,1.5 0 0,0 14.5,11A1.5,1.5 0 0,0 13,9.5Z" /></g><g id="roomba"><path d="M12,2C14.65,2 17.19,3.06 19.07,4.93L17.65,6.35C16.15,4.85 14.12,4 12,4C9.88,4 7.84,4.84 6.35,6.35L4.93,4.93C6.81,3.06 9.35,2 12,2M3.66,6.5L5.11,7.94C4.39,9.17 4,10.57 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,10.57 19.61,9.17 18.88,7.94L20.34,6.5C21.42,8.12 22,10.04 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,10.04 2.58,8.12 3.66,6.5M12,6A6,6 0 0,1 18,12C18,13.59 17.37,15.12 16.24,16.24L14.83,14.83C14.08,15.58 13.06,16 12,16C10.94,16 9.92,15.58 9.17,14.83L7.76,16.24C6.63,15.12 6,13.59 6,12A6,6 0 0,1 12,6M12,8A1,1 0 0,0 11,9A1,1 0 0,0 12,10A1,1 0 0,0 13,9A1,1 0 0,0 12,8Z" /></g><g id="rotate-3d"><path d="M12,5C16.97,5 21,7.69 21,11C21,12.68 19.96,14.2 18.29,15.29C19.36,14.42 20,13.32 20,12.13C20,9.29 16.42,7 12,7V10L8,6L12,2V5M12,19C7.03,19 3,16.31 3,13C3,11.32 4.04,9.8 5.71,8.71C4.64,9.58 4,10.68 4,11.88C4,14.71 7.58,17 12,17V14L16,18L12,22V19Z" /></g><g id="rotate-left"><path d="M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z" /></g><g id="rotate-left-variant"><path d="M4,2H7A2,2 0 0,1 9,4V20A2,2 0 0,1 7,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M20,15A2,2 0 0,1 22,17V20A2,2 0 0,1 20,22H11V15H20M14,4A8,8 0 0,1 22,12L21.94,13H19.92L20,12A6,6 0 0,0 14,6V9L10,5L14,1V4Z" /></g><g id="rotate-right"><path d="M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z" /></g><g id="rotate-right-variant"><path d="M10,4V1L14,5L10,9V6A6,6 0 0,0 4,12L4.08,13H2.06L2,12A8,8 0 0,1 10,4M17,2H20A2,2 0 0,1 22,4V20A2,2 0 0,1 20,22H17A2,2 0 0,1 15,20V4A2,2 0 0,1 17,2M4,15H13V22H4A2,2 0 0,1 2,20V17A2,2 0 0,1 4,15Z" /></g><g id="rounded-corner"><path d="M19,19H21V21H19V19M19,17H21V15H19V17M3,13H5V11H3V13M3,17H5V15H3V17M3,9H5V7H3V9M3,5H5V3H3V5M7,5H9V3H7V5M15,21H17V19H15V21M11,21H13V19H11V21M15,21H17V19H15V21M7,21H9V19H7V21M3,21H5V19H3V21M21,8A5,5 0 0,0 16,3H11V5H16A3,3 0 0,1 19,8V13H21V8Z" /></g><g id="router-wireless"><path d="M4,13H20A1,1 0 0,1 21,14V18A1,1 0 0,1 20,19H4A1,1 0 0,1 3,18V14A1,1 0 0,1 4,13M9,17H10V15H9V17M5,15V17H7V15H5M19,6.93L17.6,8.34C16.15,6.89 14.15,6 11.93,6C9.72,6 7.72,6.89 6.27,8.34L4.87,6.93C6.68,5.12 9.18,4 11.93,4C14.69,4 17.19,5.12 19,6.93M16.17,9.76L14.77,11.17C14.04,10.45 13.04,10 11.93,10C10.82,10 9.82,10.45 9.1,11.17L7.7,9.76C8.78,8.67 10.28,8 11.93,8C13.58,8 15.08,8.67 16.17,9.76Z" /></g><g id="routes"><path d="M11,10H5L3,8L5,6H11V3L12,2L13,3V4H19L21,6L19,8H13V10H19L21,12L19,14H13V20A2,2 0 0,1 15,22H9A2,2 0 0,1 11,20V10Z" /></g><g id="rowing"><path d="M8.5,14.5L4,19L5.5,20.5L9,17H11L8.5,14.5M15,1A2,2 0 0,0 13,3A2,2 0 0,0 15,5A2,2 0 0,0 17,3A2,2 0 0,0 15,1M21,21L18,24L15,21V19.5L7.91,12.41C7.6,12.46 7.3,12.5 7,12.5V10.32C8.66,10.35 10.61,9.45 11.67,8.28L13.07,6.73C13.26,6.5 13.5,6.35 13.76,6.23C14.05,6.09 14.38,6 14.72,6H14.75C16,6 17,7 17,8.26V14C17,14.85 16.65,15.62 16.08,16.17L12.5,12.59V10.32C11.87,10.84 11.07,11.34 10.21,11.71L16.5,18H18L21,21Z" /></g><g id="rss"><path d="M6.18,15.64A2.18,2.18 0 0,1 8.36,17.82C8.36,19 7.38,20 6.18,20C5,20 4,19 4,17.82A2.18,2.18 0 0,1 6.18,15.64M4,4.44A15.56,15.56 0 0,1 19.56,20H16.73A12.73,12.73 0 0,0 4,7.27V4.44M4,10.1A9.9,9.9 0 0,1 13.9,20H11.07A7.07,7.07 0 0,0 4,12.93V10.1Z" /></g><g id="rss-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M7.5,15A1.5,1.5 0 0,0 6,16.5A1.5,1.5 0 0,0 7.5,18A1.5,1.5 0 0,0 9,16.5A1.5,1.5 0 0,0 7.5,15M6,10V12A6,6 0 0,1 12,18H14A8,8 0 0,0 6,10M6,6V8A10,10 0 0,1 16,18H18A12,12 0 0,0 6,6Z" /></g><g id="ruler"><path d="M1.39,18.36L3.16,16.6L4.58,18L5.64,16.95L4.22,15.54L5.64,14.12L8.11,16.6L9.17,15.54L6.7,13.06L8.11,11.65L9.53,13.06L10.59,12L9.17,10.59L10.59,9.17L13.06,11.65L14.12,10.59L11.65,8.11L13.06,6.7L14.47,8.11L15.54,7.05L14.12,5.64L15.54,4.22L18,6.7L19.07,5.64L16.6,3.16L18.36,1.39L22.61,5.64L5.64,22.61L1.39,18.36Z" /></g><g id="run"><path d="M17.12,10L16.04,8.18L15.31,11.05L17.8,15.59V22H16V17L13.67,13.89L12.07,18.4L7.25,20.5L6.2,19L10.39,16.53L12.91,6.67L10.8,7.33V11H9V5.8L14.42,4.11L14.92,4.03C15.54,4.03 16.08,4.37 16.38,4.87L18.38,8.2H22V10H17.12M17,3.8C16,3.8 15.2,3 15.2,2C15.2,1 16,0.2 17,0.2C18,0.2 18.8,1 18.8,2C18.8,3 18,3.8 17,3.8M7,9V11H4A1,1 0 0,1 3,10A1,1 0 0,1 4,9H7M9.25,13L8.75,15H5A1,1 0 0,1 4,14A1,1 0 0,1 5,13H9.25M7,5V7H3A1,1 0 0,1 2,6A1,1 0 0,1 3,5H7Z" /></g><g id="sale"><path d="M18.65,2.85L19.26,6.71L22.77,8.5L21,12L22.78,15.5L19.24,17.29L18.63,21.15L14.74,20.54L11.97,23.3L9.19,20.5L5.33,21.14L4.71,17.25L1.22,15.47L3,11.97L1.23,8.5L4.74,6.69L5.35,2.86L9.22,3.5L12,0.69L14.77,3.46L18.65,2.85M9.5,7A1.5,1.5 0 0,0 8,8.5A1.5,1.5 0 0,0 9.5,10A1.5,1.5 0 0,0 11,8.5A1.5,1.5 0 0,0 9.5,7M14.5,14A1.5,1.5 0 0,0 13,15.5A1.5,1.5 0 0,0 14.5,17A1.5,1.5 0 0,0 16,15.5A1.5,1.5 0 0,0 14.5,14M8.41,17L17,8.41L15.59,7L7,15.59L8.41,17Z" /></g><g id="satellite"><path d="M5,18L8.5,13.5L11,16.5L14.5,12L19,18M5,12V10A5,5 0 0,0 10,5H12A7,7 0 0,1 5,12M5,5H8A3,3 0 0,1 5,8M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="satellite-variant"><path d="M11.62,1L17.28,6.67L15.16,8.79L13.04,6.67L11.62,8.09L13.95,10.41L12.79,11.58L13.24,12.04C14.17,11.61 15.31,11.77 16.07,12.54L12.54,16.07C11.77,15.31 11.61,14.17 12.04,13.24L11.58,12.79L10.41,13.95L8.09,11.62L6.67,13.04L8.79,15.16L6.67,17.28L1,11.62L3.14,9.5L5.26,11.62L6.67,10.21L3.84,7.38C3.06,6.6 3.06,5.33 3.84,4.55L4.55,3.84C5.33,3.06 6.6,3.06 7.38,3.84L10.21,6.67L11.62,5.26L9.5,3.14L11.62,1M18,14A4,4 0 0,1 14,18V16A2,2 0 0,0 16,14H18M22,14A8,8 0 0,1 14,22V20A6,6 0 0,0 20,14H22Z" /></g><g id="saxophone"><path d="M4,2A1,1 0 0,0 3,3A1,1 0 0,0 4,4A3,3 0 0,1 7,7V8.66L7,15.5C7,19.1 9.9,22 13.5,22C17.1,22 20,19.1 20,15.5V13A1,1 0 0,0 21,12A1,1 0 0,0 20,11H14A1,1 0 0,0 13,12A1,1 0 0,0 14,13V15A1,1 0 0,1 13,16A1,1 0 0,1 12,15V11A1,1 0 0,0 13,10A1,1 0 0,0 12,9V8A1,1 0 0,0 13,7A1,1 0 0,0 12,6V5.5A3.5,3.5 0 0,0 8.5,2H4Z" /></g><g id="scale"><path d="M8.46,15.06L7.05,16.47L5.68,15.1C4.82,16.21 4.24,17.54 4.06,19H6V21H2V20C2,15.16 5.44,11.13 10,10.2V8.2L2,5V3H22V5L14,8.2V10.2C18.56,11.13 22,15.16 22,20V21H18V19H19.94C19.76,17.54 19.18,16.21 18.32,15.1L16.95,16.47L15.54,15.06L16.91,13.68C15.8,12.82 14.46,12.24 13,12.06V14H11V12.06C9.54,12.24 8.2,12.82 7.09,13.68L8.46,15.06M12,18A2,2 0 0,1 14,20A2,2 0 0,1 12,22C11.68,22 11.38,21.93 11.12,21.79L7.27,20L11.12,18.21C11.38,18.07 11.68,18 12,18Z" /></g><g id="scale-balance"><path d="M12,3C10.73,3 9.6,3.8 9.18,5H3V7H4.95L2,14C1.53,16 3,17 5.5,17C8,17 9.56,16 9,14L6.05,7H9.17C9.5,7.85 10.15,8.5 11,8.83V20H2V22H22V20H13V8.82C13.85,8.5 14.5,7.85 14.82,7H17.95L15,14C14.53,16 16,17 18.5,17C21,17 22.56,16 22,14L19.05,7H21V5H14.83C14.4,3.8 13.27,3 12,3M12,5A1,1 0 0,1 13,6A1,1 0 0,1 12,7A1,1 0 0,1 11,6A1,1 0 0,1 12,5M5.5,10.25L7,14H4L5.5,10.25M18.5,10.25L20,14H17L18.5,10.25Z" /></g><g id="scale-bathroom"><path d="M5,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2M12,4A4,4 0 0,0 8,8H11.26L10.85,5.23L12.9,8H16A4,4 0 0,0 12,4M5,10V20H19V10H5Z" /></g><g id="scanner"><path d="M19.8,10.7L4.2,5L3.5,6.9L17.6,12H5A2,2 0 0,0 3,14V18A2,2 0 0,0 5,20H19A2,2 0 0,0 21,18V12.5C21,11.7 20.5,10.9 19.8,10.7M7,17H5V15H7V17M19,17H9V15H19V17Z" /></g><g id="school"><path d="M12,3L1,9L12,15L21,10.09V17H23V9M5,13.18V17.18L12,21L19,17.18V13.18L12,17L5,13.18Z" /></g><g id="screen-rotation"><path d="M7.5,21.5C4.25,19.94 1.91,16.76 1.55,13H0.05C0.56,19.16 5.71,24 12,24L12.66,23.97L8.85,20.16M14.83,21.19L2.81,9.17L9.17,2.81L21.19,14.83M10.23,1.75C9.64,1.16 8.69,1.16 8.11,1.75L1.75,8.11C1.16,8.7 1.16,9.65 1.75,10.23L13.77,22.25C14.36,22.84 15.31,22.84 15.89,22.25L22.25,15.89C22.84,15.3 22.84,14.35 22.25,13.77L10.23,1.75M16.5,2.5C19.75,4.07 22.09,7.24 22.45,11H23.95C23.44,4.84 18.29,0 12,0L11.34,0.03L15.15,3.84L16.5,2.5Z" /></g><g id="screen-rotation-lock"><path d="M16.8,2.5C16.8,1.56 17.56,0.8 18.5,0.8C19.44,0.8 20.2,1.56 20.2,2.5V3H16.8V2.5M16,9H21A1,1 0 0,0 22,8V4A1,1 0 0,0 21,3V2.5A2.5,2.5 0 0,0 18.5,0A2.5,2.5 0 0,0 16,2.5V3A1,1 0 0,0 15,4V8A1,1 0 0,0 16,9M8.47,20.5C5.2,18.94 2.86,15.76 2.5,12H1C1.5,18.16 6.66,23 12.95,23L13.61,22.97L9.8,19.15L8.47,20.5M23.25,12.77L20.68,10.2L19.27,11.61L21.5,13.83L15.83,19.5L4.5,8.17L10.17,2.5L12.27,4.61L13.68,3.2L11.23,0.75C10.64,0.16 9.69,0.16 9.11,0.75L2.75,7.11C2.16,7.7 2.16,8.65 2.75,9.23L14.77,21.25C15.36,21.84 16.31,21.84 16.89,21.25L23.25,14.89C23.84,14.3 23.84,13.35 23.25,12.77Z" /></g><g id="screwdriver"><path d="M18,1.83C17.5,1.83 17,2 16.59,2.41C13.72,5.28 8,11 8,11L9.5,12.5L6,16H4L2,20L4,22L8,20V18L11.5,14.5L13,16C13,16 18.72,10.28 21.59,7.41C22.21,6.5 22.37,5.37 21.59,4.59L19.41,2.41C19,2 18.5,1.83 18,1.83M18,4L20,6L13,13L11,11L18,4Z" /></g><g id="script"><path d="M14,20A2,2 0 0,0 16,18V5H9A1,1 0 0,0 8,6V16H5V5A3,3 0 0,1 8,2H19A3,3 0 0,1 22,5V6H18V18L18,19A3,3 0 0,1 15,22H5A3,3 0 0,1 2,19V18H12A2,2 0 0,0 14,20Z" /></g><g id="sd"><path d="M18,8H16V4H18M15,8H13V4H15M12,8H10V4H12M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="seal"><path d="M20.39,19.37L16.38,18L15,22L11.92,16L9,22L7.62,18L3.61,19.37L6.53,13.37C5.57,12.17 5,10.65 5,9A7,7 0 0,1 12,2A7,7 0 0,1 19,9C19,10.65 18.43,12.17 17.47,13.37L20.39,19.37M7,9L9.69,10.34L9.5,13.34L12,11.68L14.5,13.33L14.33,10.34L17,9L14.32,7.65L14.5,4.67L12,6.31L9.5,4.65L9.67,7.66L7,9Z" /></g><g id="seat-flat"><path d="M22,11V13H9V7H18A4,4 0 0,1 22,11M2,14V16H8V18H16V16H22V14M7.14,12.1C8.3,10.91 8.28,9 7.1,7.86C5.91,6.7 4,6.72 2.86,7.9C1.7,9.09 1.72,11 2.9,12.14C4.09,13.3 6,13.28 7.14,12.1Z" /></g><g id="seat-flat-angled"><path d="M22.25,14.29L21.56,16.18L9.2,11.71L11.28,6.05L19.84,9.14C21.94,9.9 23,12.2 22.25,14.29M1.5,12.14L8,14.5V19H16V17.37L20.5,19L21.21,17.11L2.19,10.25M7.3,10.2C8.79,9.5 9.42,7.69 8.71,6.2C8,4.71 6.2,4.08 4.7,4.8C3.21,5.5 2.58,7.3 3.3,8.8C4,10.29 5.8,10.92 7.3,10.2Z" /></g><g id="seat-individual-suite"><path d="M7,13A3,3 0 0,0 10,10A3,3 0 0,0 7,7A3,3 0 0,0 4,10A3,3 0 0,0 7,13M19,7H11V14H3V7H1V17H23V11A4,4 0 0,0 19,7Z" /></g><g id="seat-legroom-extra"><path d="M4,12V3H2V12A5,5 0 0,0 7,17H13V15H7A3,3 0 0,1 4,12M22.83,17.24C22.45,16.5 21.54,16.27 20.8,16.61L19.71,17.11L16.3,10.13C15.96,9.45 15.27,9 14.5,9H11V3H5V11A3,3 0 0,0 8,14H15L18.41,21L22.13,19.3C22.9,18.94 23.23,18 22.83,17.24Z" /></g><g id="seat-legroom-normal"><path d="M5,12V3H3V12A5,5 0 0,0 8,17H14V15H8A3,3 0 0,1 5,12M20.5,18H19V11A2,2 0 0,0 17,9H12V3H6V11A3,3 0 0,0 9,14H16V21H20.5A1.5,1.5 0 0,0 22,19.5A1.5,1.5 0 0,0 20.5,18Z" /></g><g id="seat-legroom-reduced"><path d="M19.97,19.2C20.15,20.16 19.42,21 18.5,21H14V18L15,14H9A3,3 0 0,1 6,11V3H12V9H17A2,2 0 0,1 19,11L17,18H18.44C19.17,18 19.83,18.5 19.97,19.2M5,12V3H3V12A5,5 0 0,0 8,17H12V15H8A3,3 0 0,1 5,12Z" /></g><g id="seat-recline-extra"><path d="M5.35,5.64C4.45,5 4.23,3.76 4.86,2.85C5.5,1.95 6.74,1.73 7.65,2.36C8.55,3 8.77,4.24 8.14,5.15C7.5,6.05 6.26,6.27 5.35,5.64M16,19H8.93C7.45,19 6.19,17.92 5.97,16.46L4,7H2L4,16.76C4.37,19.2 6.47,21 8.94,21H16M16.23,15H11.35L10.32,10.9C11.9,11.79 13.6,12.44 15.47,12.12V10C13.84,10.3 12.03,9.72 10.78,8.74L9.14,7.47C8.91,7.29 8.65,7.17 8.38,7.09C8.06,7 7.72,6.97 7.39,7.03H7.37C6.14,7.25 5.32,8.42 5.53,9.64L6.88,15.56C7.16,17 8.39,18 9.83,18H16.68L20.5,21L22,19.5" /></g><g id="seat-recline-normal"><path d="M7.59,5.41C6.81,4.63 6.81,3.36 7.59,2.58C8.37,1.8 9.64,1.8 10.42,2.58C11.2,3.36 11.2,4.63 10.42,5.41C9.63,6.2 8.37,6.2 7.59,5.41M6,16V7H4V16A5,5 0 0,0 9,21H15V19H9A3,3 0 0,1 6,16M20,20.07L14.93,15H11.5V11.32C12.9,12.47 15.1,13.5 17,13.5V11.32C15.34,11.34 13.39,10.45 12.33,9.28L10.93,7.73C10.74,7.5 10.5,7.35 10.24,7.23C9.95,7.09 9.62,7 9.28,7H9.25C8,7 7,8 7,9.25V15A3,3 0 0,0 10,18H15.07L18.57,21.5" /></g><g id="security"><path d="M12,12H19C18.47,16.11 15.72,19.78 12,20.92V12H5V6.3L12,3.19M12,1L3,5V11C3,16.55 6.84,21.73 12,23C17.16,21.73 21,16.55 21,11V5L12,1Z" /></g><g id="security-home"><path d="M11,13H13V16H16V11H18L12,6L6,11H8V16H11V13M12,1L21,5V11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1Z" /></g><g id="security-network"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16.34C8.07,15.13 6,12 6,8.67V4.67L12,2L18,4.67V8.67C18,12 15.93,15.13 13,16.34V18M12,4L8,5.69V9H12V4M12,9V15C13.91,14.53 16,12.06 16,10V9H12Z" /></g><g id="select"><path d="M4,3H5V5H3V4A1,1 0 0,1 4,3M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M21,20A1,1 0 0,1 20,21H19V19H21V20M15,21V19H17V21H15M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M3,7H5V9H3V7M21,7V9H19V7H21Z" /></g><g id="select-all"><path d="M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z" /></g><g id="select-inverse"><path d="M5,3H7V5H9V3H11V5H13V3H15V5H17V3H19V5H21V7H19V9H21V11H19V13H21V15H19V17H21V19H19V21H17V19H15V21H13V19H11V21H9V19H7V21H5V19H3V17H5V15H3V13H5V11H3V9H5V7H3V5H5V3Z" /></g><g id="select-off"><path d="M1,4.27L2.28,3L21,21.72L19.73,23L17,20.27V21H15V19H15.73L5,8.27V9H3V7H3.73L1,4.27M20,3A1,1 0 0,1 21,4V5H19V3H20M15,5V3H17V5H15M11,5V3H13V5H11M7,5V3H9V5H7M11,21V19H13V21H11M7,21V19H9V21H7M4,21A1,1 0 0,1 3,20V19H5V21H4M3,15H5V17H3V15M21,15V17H19V15H21M3,11H5V13H3V11M21,11V13H19V11H21M21,7V9H19V7H21Z" /></g><g id="selection"><path d="M2,4V7H4V4H2M7,4H4C4,4 4,4 4,4H2C2,2.89 2.9,2 4,2H7V4M22,4V7H20V4H22M17,4H20C20,4 20,4 20,4H22C22,2.89 21.1,2 20,2H17V4M22,20V17H20V20H22M17,20H20C20,20 20,20 20,20H22C22,21.11 21.1,22 20,22H17V20M2,20V17H4V20H2M7,20H4C4,20 4,20 4,20H2C2,21.11 2.9,22 4,22H7V20M10,2H14V4H10V2M10,20H14V22H10V20M20,10H22V14H20V10M2,10H4V14H2V10Z" /></g><g id="send"><path d="M2,21L23,12L2,3V10L17,12L2,14V21Z" /></g><g id="serial-port"><path d="M7,3H17V5H19V8H16V14H8V8H5V5H7V3M17,9H19V14H17V9M11,15H13V22H11V15M5,9H7V14H5V9Z" /></g><g id="server"><path d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H20A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9M4,17H20A1,1 0 0,1 21,18V22A1,1 0 0,1 20,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17M9,5H10V3H9V5M9,13H10V11H9V13M9,21H10V19H9V21M5,3V5H7V3H5M5,11V13H7V11H5M5,19V21H7V19H5Z" /></g><g id="server-minus"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H16V18H8V16Z" /></g><g id="server-network"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H20A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H13V18M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H4A1,1 0 0,1 3,7V3A1,1 0 0,1 4,2M9,6H10V4H9V6M9,14H10V12H9V14M5,4V6H7V4H5M5,12V14H7V12H5Z" /></g><g id="server-network-off"><path d="M13,18H14A1,1 0 0,1 15,19H15.73L13,16.27V18M22,19V20.18L20.82,19H22M21,21.72L19.73,23L17.73,21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H4A1,1 0 0,1 3,15V11A1,1 0 0,1 4,10H6.73L4.73,8H4A1,1 0 0,1 3,7V6.27L1,4.27L2.28,3L21,21.72M4,2H20A1,1 0 0,1 21,3V7A1,1 0 0,1 20,8H9.82L7,5.18V4H5.82L3.84,2C3.89,2 3.94,2 4,2M20,10A1,1 0 0,1 21,11V15A1,1 0 0,1 20,16H17.82L11.82,10H20M9,6H10V4H9V6M9,14H10V13.27L9,12.27V14M5,12V14H7V12H5Z" /></g><g id="server-off"><path d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H8.82L6.82,5H7V3H5V3.18L3.21,1.39C3.39,1.15 3.68,1 4,1M22,22.72L20.73,24L19.73,23H4A1,1 0 0,1 3,22V18A1,1 0 0,1 4,17H13.73L11.73,15H4A1,1 0 0,1 3,14V10A1,1 0 0,1 4,9H5.73L3.68,6.95C3.38,6.85 3.15,6.62 3.05,6.32L1,4.27L2.28,3L22,22.72M20,9A1,1 0 0,1 21,10V14A1,1 0 0,1 20,15H16.82L10.82,9H20M20,17A1,1 0 0,1 21,18V19.18L18.82,17H20M9,5H10V3H9V5M9,13H9.73L9,12.27V13M9,21H10V19H9V21M5,11V13H7V11H5M5,19V21H7V19H5Z" /></g><g id="server-plus"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M8,16H11V13H13V16H16V18H13V21H11V18H8V16Z" /></g><g id="server-remove"><path d="M4,4H20A1,1 0 0,1 21,5V9A1,1 0 0,1 20,10H4A1,1 0 0,1 3,9V5A1,1 0 0,1 4,4M9,8H10V6H9V8M5,6V8H7V6H5M10.59,17L8,14.41L9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17Z" /></g><g id="server-security"><path d="M3,1H19A1,1 0 0,1 20,2V6A1,1 0 0,1 19,7H3A1,1 0 0,1 2,6V2A1,1 0 0,1 3,1M3,9H19A1,1 0 0,1 20,10V10.67L17.5,9.56L11,12.44V15H3A1,1 0 0,1 2,14V10A1,1 0 0,1 3,9M3,17H11C11.06,19.25 12,21.4 13.46,23H3A1,1 0 0,1 2,22V18A1,1 0 0,1 3,17M8,5H9V3H8V5M8,13H9V11H8V13M8,21H9V19H8V21M4,3V5H6V3H4M4,11V13H6V11H4M4,19V21H6V19H4M17.5,12L22,14V17C22,19.78 20.08,22.37 17.5,23C14.92,22.37 13,19.78 13,17V14L17.5,12M17.5,13.94L15,15.06V17.72C15,19.26 16.07,20.7 17.5,21.06V13.94Z" /></g><g id="settings"><path d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z" /></g><g id="settings-box"><path d="M17.25,12C17.25,12.23 17.23,12.46 17.2,12.68L18.68,13.84C18.81,13.95 18.85,14.13 18.76,14.29L17.36,16.71C17.27,16.86 17.09,16.92 16.93,16.86L15.19,16.16C14.83,16.44 14.43,16.67 14,16.85L13.75,18.7C13.72,18.87 13.57,19 13.4,19H10.6C10.43,19 10.28,18.87 10.25,18.7L10,16.85C9.56,16.67 9.17,16.44 8.81,16.16L7.07,16.86C6.91,16.92 6.73,16.86 6.64,16.71L5.24,14.29C5.15,14.13 5.19,13.95 5.32,13.84L6.8,12.68C6.77,12.46 6.75,12.23 6.75,12C6.75,11.77 6.77,11.54 6.8,11.32L5.32,10.16C5.19,10.05 5.15,9.86 5.24,9.71L6.64,7.29C6.73,7.13 6.91,7.07 7.07,7.13L8.81,7.84C9.17,7.56 9.56,7.32 10,7.15L10.25,5.29C10.28,5.13 10.43,5 10.6,5H13.4C13.57,5 13.72,5.13 13.75,5.29L14,7.15C14.43,7.32 14.83,7.56 15.19,7.84L16.93,7.13C17.09,7.07 17.27,7.13 17.36,7.29L18.76,9.71C18.85,9.86 18.81,10.05 18.68,10.16L17.2,11.32C17.23,11.54 17.25,11.77 17.25,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M12,10C10.89,10 10,10.89 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12C14,10.89 13.1,10 12,10Z" /></g><g id="shape-circle-plus"><path d="M11,19A6,6 0 0,0 17,13H19A8,8 0 0,1 11,21A8,8 0 0,1 3,13A8,8 0 0,1 11,5V7A6,6 0 0,0 5,13A6,6 0 0,0 11,19M19,5H22V7H19V10H17V7H14V5H17V2H19V5Z" /></g><g id="shape-plus"><path d="M2,2H11V11H2V2M17.5,2C20,2 22,4 22,6.5C22,9 20,11 17.5,11C15,11 13,9 13,6.5C13,4 15,2 17.5,2M6.5,14L11,22H2L6.5,14M19,17H22V19H19V22H17V19H14V17H17V14H19V17Z" /></g><g id="shape-polygon-plus"><path d="M17,15.7V13H19V17L10,21L3,14L7,5H11V7H8.3L5.4,13.6L10.4,18.6L17,15.7M22,5V7H19V10H17V7H14V5H17V2H19V5H22Z" /></g><g id="shape-rectangle-plus"><path d="M19,6H22V8H19V11H17V8H14V6H17V3H19V6M17,17V14H19V19H3V6H11V8H5V17H17Z" /></g><g id="shape-square-plus"><path d="M19,5H22V7H19V10H17V7H14V5H17V2H19V5M17,19V13H19V21H3V5H11V7H5V19H17Z" /></g><g id="share"><path d="M21,11L14,4V8C7,9 4,14 3,19C5.5,15.5 9,13.9 14,13.9V18L21,11Z" /></g><g id="share-variant"><path d="M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z" /></g><g id="shield"><path d="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z" /></g><g id="shield-outline"><path d="M21,11C21,16.55 17.16,21.74 12,23C6.84,21.74 3,16.55 3,11V5L12,1L21,5V11M12,21C15.75,20 19,15.54 19,11.22V6.3L12,3.18L5,6.3V11.22C5,15.54 8.25,20 12,21Z" /></g><g id="shopping"><path d="M12,13A5,5 0 0,1 7,8H9A3,3 0 0,0 12,11A3,3 0 0,0 15,8H17A5,5 0 0,1 12,13M12,3A3,3 0 0,1 15,6H9A3,3 0 0,1 12,3M19,6H17A5,5 0 0,0 12,1A5,5 0 0,0 7,6H5C3.89,6 3,6.89 3,8V20A2,2 0 0,0 5,22H19A2,2 0 0,0 21,20V8C21,6.89 20.1,6 19,6Z" /></g><g id="shopping-music"><path d="M12,3A3,3 0 0,0 9,6H15A3,3 0 0,0 12,3M19,6A2,2 0 0,1 21,8V20A2,2 0 0,1 19,22H5C3.89,22 3,21.1 3,20V8C3,6.89 3.89,6 5,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6H19M9,19L16.5,14L9,10V19Z" /></g><g id="shovel"><path d="M15.1,1.81L12.27,4.64C11.5,5.42 11.5,6.69 12.27,7.47L13.68,8.88L9.13,13.43L6.31,10.6L4.89,12C-0.06,17 3.5,20.5 3.5,20.5C3.5,20.5 7,24 12,19.09L13.41,17.68L10.61,14.88L15.15,10.34L16.54,11.73C17.32,12.5 18.59,12.5 19.37,11.73L22.2,8.9L15.1,1.81M17.93,10.28L16.55,8.9L15.11,7.46L13.71,6.06L15.12,4.65L19.35,8.88L17.93,10.28Z" /></g><g id="shovel-off"><path d="M15.1,1.81L12.27,4.65C11.5,5.43 11.5,6.69 12.27,7.47L13.68,8.89L13,9.62L14.44,11.06L15.17,10.33L16.56,11.72C17.34,12.5 18.61,12.5 19.39,11.72L22.22,8.88L15.1,1.81M17.93,10.28L13.7,6.06L15.11,4.65L19.34,8.88L17.93,10.28M20.7,20.24L19.29,21.65L11.5,13.88L10.5,14.88L13.33,17.69L12,19.09C7,24 3.5,20.5 3.5,20.5C3.5,20.5 -0.06,17 4.89,12L6.31,10.6L9.13,13.43L10.13,12.43L2.35,4.68L3.77,3.26L20.7,20.24Z" /></g><g id="shredder"><path d="M6,3V7H8V5H16V7H18V3H6M5,8A3,3 0 0,0 2,11V17H5V14H19V17H22V11A3,3 0 0,0 19,8H5M18,10A1,1 0 0,1 19,11A1,1 0 0,1 18,12A1,1 0 0,1 17,11A1,1 0 0,1 18,10M7,16V21H9V16H7M11,16V20H13V16H11M15,16V21H17V16H15Z" /></g><g id="shuffle"><path d="M14.83,13.41L13.42,14.82L16.55,17.95L14.5,20H20V14.5L17.96,16.54L14.83,13.41M14.5,4L16.54,6.04L4,18.59L5.41,20L17.96,7.46L20,9.5V4M10.59,9.17L5.41,4L4,5.41L9.17,10.58L10.59,9.17Z" /></g><g id="shuffle-disabled"><path d="M16,4.5V7H5V9H16V11.5L19.5,8M16,12.5V15H5V17H16V19.5L19.5,16" /></g><g id="shuffle-variant"><path d="M17,3L22.25,7.5L17,12L22.25,16.5L17,21V18H14.26L11.44,15.18L13.56,13.06L15.5,15H17V12L17,9H15.5L6.5,18H2V15H5.26L14.26,6H17V3M2,6H6.5L9.32,8.82L7.2,10.94L5.26,9H2V6Z" /></g><g id="sigma"><path d="M5,4H18V9H17L16,6H10.06L13.65,11.13L9.54,17H16L17,15H18V20H5L10.6,12L5,4Z" /></g><g id="sigma-lower"><path d="M19,12C19,16.42 15.64,20 11.5,20C7.36,20 4,16.42 4,12C4,7.58 7.36,4 11.5,4H20V6H16.46C18,7.47 19,9.61 19,12M11.5,6C8.46,6 6,8.69 6,12C6,15.31 8.46,18 11.5,18C14.54,18 17,15.31 17,12C17,8.69 14.54,6 11.5,6Z" /></g><g id="sign-caution"><path d="M2,3H22V13H18V21H16V13H8V21H6V13H2V3M18.97,11L20,9.97V7.15L16.15,11H18.97M13.32,11L19.32,5H16.5L10.5,11H13.32M7.66,11L13.66,5H10.83L4.83,11H7.66M5.18,5L4,6.18V9L8,5H5.18Z" /></g><g id="signal"><path d="M3,21H6V18H3M8,21H11V14H8M13,21H16V9H13M18,21H21V3H18V21Z" /></g><g id="signal-2g"><path d="M11,19.5H2V13.5A3,3 0 0,1 5,10.5H8V7.5H2V4.5H8A3,3 0 0,1 11,7.5V10.5A3,3 0 0,1 8,13.5H5V16.5H11M22,10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5" /></g><g id="signal-3g"><path d="M11,16.5V14.25C11,13 10,12 8.75,12C10,12 11,11 11,9.75V7.5A3,3 0 0,0 8,4.5H2V7.5H8V10.5H5V13.5H8V16.5H2V19.5H8A3,3 0 0,0 11,16.5M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5Z" /></g><g id="signal-4g"><path d="M22,16.5V10.5H17.5V13.5H19V16.5H16V7.5H22V4.5H16A3,3 0 0,0 13,7.5V16.5A3,3 0 0,0 16,19.5H19A3,3 0 0,0 22,16.5M8,19.5H11V4.5H8V10.5H5V4.5H2V13.5H8V19.5Z" /></g><g id="signal-hspa"><path d="M10.5,10.5H13.5V4.5H16.5V19.5H13.5V13.5H10.5V19.5H7.5V4.5H10.5V10.5Z" /></g><g id="signal-hspa-plus"><path d="M19,8V11H22V14H19V17H16V14H13V11H16V8H19M5,10.5H8V4.5H11V19.5H8V13.5H5V19.5H2V4.5H5V10.5Z" /></g><g id="signal-variant"><path d="M4,6V4H4.1C12.9,4 20,11.1 20,19.9V20H18V19.9C18,12.2 11.8,6 4,6M4,10V8A12,12 0 0,1 16,20H14A10,10 0 0,0 4,10M4,14V12A8,8 0 0,1 12,20H10A6,6 0 0,0 4,14M4,16A4,4 0 0,1 8,20H4V16Z" /></g><g id="silverware"><path d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M14.88,11.53L13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z" /></g><g id="silverware-fork"><path d="M5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L5.12,21.29Z" /></g><g id="silverware-spoon"><path d="M14.88,11.53L5.12,21.29L3.71,19.88L13.47,10.12C12.76,8.59 13.26,6.44 14.85,4.85C16.76,2.93 19.5,2.57 20.96,4.03C22.43,5.5 22.07,8.24 20.15,10.15C18.56,11.74 16.41,12.24 14.88,11.53Z" /></g><g id="silverware-variant"><path d="M8.1,13.34L3.91,9.16C2.35,7.59 2.35,5.06 3.91,3.5L10.93,10.5L8.1,13.34M13.41,13L20.29,19.88L18.88,21.29L12,14.41L5.12,21.29L3.71,19.88L13.36,10.22L13.16,10C12.38,9.23 12.38,7.97 13.16,7.19L17.5,2.82L18.43,3.74L15.19,7L16.15,7.94L19.39,4.69L20.31,5.61L17.06,8.85L18,9.81L21.26,6.56L22.18,7.5L17.81,11.84C17.03,12.62 15.77,12.62 15,11.84L14.78,11.64L13.41,13Z" /></g><g id="sim"><path d="M20,4A2,2 0 0,0 18,2H10L4,8V20A2,2 0 0,0 6,22H18C19.11,22 20,21.1 20,20V4M9,19H7V17H9V19M17,19H15V17H17V19M9,15H7V11H9V15M13,19H11V15H13V19M13,13H11V11H13V13M17,15H15V11H17V15Z" /></g><g id="sim-alert"><path d="M13,13H11V8H13M13,17H11V15H13M18,2H10L4,8V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V4A2,2 0 0,0 18,2Z" /></g><g id="sim-off"><path d="M19,5A2,2 0 0,0 17,3H10L7.66,5.34L19,16.68V5M3.65,3.88L2.38,5.15L5,7.77V19A2,2 0 0,0 7,21H17C17.36,21 17.68,20.9 17.97,20.74L19.85,22.62L21.12,21.35L3.65,3.88Z" /></g><g id="sitemap"><path d="M9,2V8H11V11H5C3.89,11 3,11.89 3,13V16H1V22H7V16H5V13H11V16H9V22H15V16H13V13H19V16H17V22H23V16H21V13C21,11.89 20.11,11 19,11H13V8H15V2H9Z" /></g><g id="skip-backward"><path d="M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12" /></g><g id="skip-forward"><path d="M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12" /></g><g id="skip-next"><path d="M16,18H18V6H16M6,18L14.5,12L6,6V18Z" /></g><g id="skip-next-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8L13,12L8,16M14,8H16V16H14" /></g><g id="skip-next-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M8,8V16L13,12M14,8V16H16V8" /></g><g id="skip-previous"><path d="M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z" /></g><g id="skip-previous-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M8,8H10V16H8M16,8V16L11,12" /></g><g id="skip-previous-circle-outline"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4C7.59,4 4,7.59 4,12C4,16.41 7.59,20 12,20C16.41,20 20,16.41 20,12C20,7.59 16.41,4 12,4M16,8V16L11,12M10,8V16H8V8" /></g><g id="skull"><path d="M12,2A9,9 0 0,0 3,11C3,14.03 4.53,16.82 7,18.47V22H9V19H11V22H13V19H15V22H17V18.46C19.47,16.81 21,14 21,11A9,9 0 0,0 12,2M8,11A2,2 0 0,1 10,13A2,2 0 0,1 8,15A2,2 0 0,1 6,13A2,2 0 0,1 8,11M16,11A2,2 0 0,1 18,13A2,2 0 0,1 16,15A2,2 0 0,1 14,13A2,2 0 0,1 16,11M12,14L13.5,17H10.5L12,14Z" /></g><g id="skype"><path d="M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M12.04,17.16C14.91,17.16 16.34,15.78 16.34,13.92C16.34,12.73 15.78,11.46 13.61,10.97L11.62,10.53C10.86,10.36 10,10.13 10,9.42C10,8.7 10.6,8.2 11.7,8.2C13.93,8.2 13.72,9.73 14.83,9.73C15.41,9.73 15.91,9.39 15.91,8.8C15.91,7.43 13.72,6.4 11.86,6.4C9.85,6.4 7.7,7.26 7.7,9.54C7.7,10.64 8.09,11.81 10.25,12.35L12.94,13.03C13.75,13.23 13.95,13.68 13.95,14.1C13.95,14.78 13.27,15.45 12.04,15.45C9.63,15.45 9.96,13.6 8.67,13.6C8.09,13.6 7.67,14 7.67,14.57C7.67,15.68 9,17.16 12.04,17.16Z" /></g><g id="skype-business"><path d="M12.03,16.53C9.37,16.53 8.18,15.22 8.18,14.24C8.18,13.74 8.55,13.38 9.06,13.38C10.2,13.38 9.91,15 12.03,15C13.12,15 13.73,14.43 13.73,13.82C13.73,13.46 13.55,13.06 12.83,12.88L10.46,12.29C8.55,11.81 8.2,10.78 8.2,9.81C8.2,7.79 10.1,7.03 11.88,7.03C13.5,7.03 15.46,7.94 15.46,9.15C15.46,9.67 15,9.97 14.5,9.97C13.5,9.97 13.7,8.62 11.74,8.62C10.77,8.62 10.23,9.06 10.23,9.69C10.23,10.32 11,10.5 11.66,10.68L13.42,11.07C15.34,11.5 15.83,12.62 15.83,13.67C15.83,15.31 14.57,16.53 12.03,16.53M18,6C20.07,8.04 20.85,10.89 20.36,13.55C20.77,14.27 21,15.11 21,16A5,5 0 0,1 16,21C15.11,21 14.27,20.77 13.55,20.36C10.89,20.85 8.04,20.07 6,18C3.93,15.96 3.15,13.11 3.64,10.45C3.23,9.73 3,8.89 3,8A5,5 0 0,1 8,3C8.89,3 9.73,3.23 10.45,3.64C13.11,3.15 15.96,3.93 18,6M8,5A3,3 0 0,0 5,8C5,8.79 5.3,9.5 5.8,10.04C5.1,12.28 5.63,14.82 7.4,16.6C9.18,18.37 11.72,18.9 13.96,18.2C14.5,18.7 15.21,19 16,19A3,3 0 0,0 19,16C19,15.21 18.7,14.5 18.2,13.96C18.9,11.72 18.37,9.18 16.6,7.4C14.82,5.63 12.28,5.1 10.04,5.8C9.5,5.3 8.79,5 8,5Z" /></g><g id="slack"><path d="M10.23,11.16L12.91,10.27L13.77,12.84L11.09,13.73L10.23,11.16M17.69,13.71C18.23,13.53 18.5,12.94 18.34,12.4C18.16,11.86 17.57,11.56 17.03,11.75L15.73,12.18L14.87,9.61L16.17,9.17C16.71,9 17,8.4 16.82,7.86C16.64,7.32 16.05,7 15.5,7.21L14.21,7.64L13.76,6.3C13.58,5.76 13,5.46 12.45,5.65C11.91,5.83 11.62,6.42 11.8,6.96L12.25,8.3L9.57,9.19L9.12,7.85C8.94,7.31 8.36,7 7.81,7.2C7.27,7.38 7,7.97 7.16,8.5L7.61,9.85L6.31,10.29C5.77,10.47 5.5,11.06 5.66,11.6C5.8,12 6.19,12.3 6.61,12.31L6.97,12.25L8.27,11.82L9.13,14.39L7.83,14.83C7.29,15 7,15.6 7.18,16.14C7.32,16.56 7.71,16.84 8.13,16.85L8.5,16.79L9.79,16.36L10.24,17.7C10.38,18.13 10.77,18.4 11.19,18.41L11.55,18.35C12.09,18.17 12.38,17.59 12.2,17.04L11.75,15.7L14.43,14.81L14.88,16.15C15,16.57 15.41,16.84 15.83,16.85L16.19,16.8C16.73,16.62 17,16.03 16.84,15.5L16.39,14.15L17.69,13.71M21.17,9.25C23.23,16.12 21.62,19.1 14.75,21.17C7.88,23.23 4.9,21.62 2.83,14.75C0.77,7.88 2.38,4.9 9.25,2.83C16.12,0.77 19.1,2.38 21.17,9.25Z" /></g><g id="sleep"><path d="M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M15,16H9V14L12.39,10H9V8H15V10L11.62,14H15V16M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z" /></g><g id="sleep-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.73,16H9V14L9.79,13.06L2,5.27M23,12H17V10L20.39,6H17V4H23V6L19.62,10H23V12M9.82,8H15V10L13.54,11.72L9.82,8M7,20H1V18L4.39,14H1V12H7V14L3.62,18H7V20Z" /></g><g id="smoking"><path d="M7,19H22V15H7M2,19H5V15H2M10,4V5A3,3 0 0,1 7,8A5,5 0 0,0 2,13H4A3,3 0 0,1 7,10A5,5 0 0,0 12,5V4H10Z" /></g><g id="smoking-off"><path d="M15.82,14L19.82,18H22V14M2,18H5V14H2M3.28,4L2,5.27L4.44,7.71C2.93,8.61 2,10.24 2,12H4C4,10.76 4.77,9.64 5.93,9.2L10.73,14H7V18H14.73L18.73,22L20,20.72M10,3V4C10,5.09 9.4,6.1 8.45,6.62L9.89,8.07C11.21,7.13 12,5.62 12,4V3H10Z" /></g><g id="snapchat"><path d="M12,20.45C10.81,20.45 10.1,19.94 9.47,19.5C9,19.18 8.58,18.87 8.08,18.79C6.93,18.73 6.59,18.79 5.97,18.9C5.86,18.9 5.73,18.87 5.68,18.69C5.5,17.94 5.45,17.73 5.32,17.71C4,17.5 3.19,17.2 3.03,16.83C3,16.6 3.07,16.5 3.18,16.5C4.25,16.31 5.2,15.75 6,14.81C6.63,14.09 6.93,13.39 6.96,13.32C7.12,13 7.15,12.72 7.06,12.5C6.89,12.09 6.31,11.91 5.68,11.7C5.34,11.57 4.79,11.29 4.86,10.9C4.92,10.62 5.29,10.42 5.81,10.46C6.16,10.62 6.46,10.7 6.73,10.7C7.06,10.7 7.21,10.58 7.25,10.54C7.14,8.78 7.05,7.25 7.44,6.38C8.61,3.76 11.08,3.55 12,3.55C12.92,3.55 15.39,3.76 16.56,6.38C16.95,7.25 16.86,8.78 16.75,10.54C16.79,10.58 16.94,10.7 17.27,10.7C17.54,10.7 17.84,10.62 18.19,10.46C18.71,10.42 19.08,10.62 19.14,10.9C19.21,11.29 18.66,11.57 18.32,11.7C17.69,11.91 17.11,12.09 16.94,12.5C16.85,12.72 16.88,13 17.04,13.32C17.07,13.39 17.37,14.09 18,14.81C18.8,15.75 19.75,16.31 20.82,16.5C20.93,16.5 21,16.6 20.97,16.83C20.81,17.2 20,17.5 18.68,17.71C18.55,17.73 18.5,17.94 18.32,18.69C18.27,18.87 18.14,18.9 18.03,18.9C17.41,18.79 17.07,18.73 15.92,18.79C15.42,18.87 15,19.18 14.53,19.5C13.9,19.94 13.19,20.45 12,20.45Z" /></g><g id="snowflake"><path d="M20.79,13.95L18.46,14.57L16.46,13.44V10.56L18.46,9.43L20.79,10.05L21.31,8.12L19.54,7.65L20,5.88L18.07,5.36L17.45,7.69L15.45,8.82L13,7.38V5.12L14.71,3.41L13.29,2L12,3.29L10.71,2L9.29,3.41L11,5.12V7.38L8.5,8.82L6.5,7.69L5.92,5.36L4,5.88L4.47,7.65L2.7,8.12L3.22,10.05L5.55,9.43L7.55,10.56V13.45L5.55,14.58L3.22,13.96L2.7,15.89L4.47,16.36L4,18.12L5.93,18.64L6.55,16.31L8.55,15.18L11,16.62V18.88L9.29,20.59L10.71,22L12,20.71L13.29,22L14.7,20.59L13,18.88V16.62L15.5,15.17L17.5,16.3L18.12,18.63L20,18.12L19.53,16.35L21.3,15.88L20.79,13.95M9.5,10.56L12,9.11L14.5,10.56V13.44L12,14.89L9.5,13.44V10.56Z" /></g><g id="snowman"><path d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.5 7.65,14.17 8.69,13.25C8.26,12.61 8,11.83 8,11C8,10.86 8,10.73 8,10.59L5.04,8.87L4.83,8.71L2.29,9.39L2.03,8.43L4.24,7.84L2.26,6.69L2.76,5.82L4.74,6.97L4.15,4.75L5.11,4.5L5.8,7.04L6.04,7.14L8.73,8.69C9.11,8.15 9.62,7.71 10.22,7.42C9.5,6.87 9,6 9,5A3,3 0 0,1 12,2A3,3 0 0,1 15,5C15,6 14.5,6.87 13.78,7.42C14.38,7.71 14.89,8.15 15.27,8.69L17.96,7.14L18.2,7.04L18.89,4.5L19.85,4.75L19.26,6.97L21.24,5.82L21.74,6.69L19.76,7.84L21.97,8.43L21.71,9.39L19.17,8.71L18.96,8.87L16,10.59V11C16,11.83 15.74,12.61 15.31,13.25C16.35,14.17 17,15.5 17,17Z" /></g><g id="soccer"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,3C13.76,3 15.4,3.53 16.78,4.41L16.5,5H13L12,5L10.28,4.16L10.63,3.13C11.08,3.05 11.53,3 12,3M9.53,3.38L9.19,4.41L6.63,5.69L5.38,5.94C6.5,4.73 7.92,3.84 9.53,3.38M13,6H16L18.69,9.59L17.44,12.16L14.81,12.78L11.53,8.94L13,6M6.16,6.66L7,10L5.78,13.06L3.22,13.94C3.08,13.31 3,12.67 3,12C3,10.1 3.59,8.36 4.59,6.91L6.16,6.66M20.56,9.22C20.85,10.09 21,11.03 21,12C21,13.44 20.63,14.79 20.03,16H19L18.16,12.66L19.66,9.66L20.56,9.22M8,10H11L13.81,13.28L12,16L8.84,16.78L6.53,13.69L8,10M12,17L15,19L14.13,20.72C13.44,20.88 12.73,21 12,21C10.25,21 8.63,20.5 7.25,19.63L8.41,17.91L12,17M19,17H19.5C18.5,18.5 17,19.67 15.31,20.34L16,19L19,17Z" /></g><g id="sofa"><path d="M7,6H9A2,2 0 0,1 11,8V12H5V8A2,2 0 0,1 7,6M15,6H17A2,2 0 0,1 19,8V12H13V8A2,2 0 0,1 15,6M1,9H2A1,1 0 0,1 3,10V12A2,2 0 0,0 5,14H19A2,2 0 0,0 21,12V11L21,10A1,1 0 0,1 22,9H23A1,1 0 0,1 24,10V19H21V17H3V19H0V10A1,1 0 0,1 1,9Z" /></g><g id="solid"><path d="M0,0H24V24H0" /></g><g id="sort"><path d="M10,13V11H18V13H10M10,19V17H14V19H10M10,7V5H22V7H10M6,17H8.5L5,20.5L1.5,17H4V7H1.5L5,3.5L8.5,7H6V17Z" /></g><g id="sort-alphabetical"><path d="M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75M8.89,14.3H6L5.28,17H2.91L6,7H9L12.13,17H9.67L8.89,14.3M6.33,12.68H8.56L7.93,10.56L7.67,9.59L7.42,8.63H7.39L7.17,9.6L6.93,10.58L6.33,12.68M13.05,17V15.74L17.8,8.97V8.91H13.5V7H20.73V8.34L16.09,15V15.08H20.8V17H13.05Z" /></g><g id="sort-ascending"><path d="M10,11V13H18V11H10M10,5V7H14V5H10M10,17V19H22V17H10M6,7H8.5L5,3.5L1.5,7H4V20H6V7Z" /></g><g id="sort-descending"><path d="M10,13V11H18V13H10M10,19V17H14V19H10M10,7V5H22V7H10M6,17H8.5L5,20.5L1.5,17H4V4H6V17Z" /></g><g id="sort-numeric"><path d="M7.78,7C9.08,7.04 10,7.53 10.57,8.46C11.13,9.4 11.41,10.56 11.39,11.95C11.4,13.5 11.09,14.73 10.5,15.62C9.88,16.5 8.95,16.97 7.71,17C6.45,16.96 5.54,16.5 4.96,15.56C4.38,14.63 4.09,13.45 4.09,12C4.09,10.55 4.39,9.36 5,8.44C5.59,7.5 6.5,7.04 7.78,7M7.75,8.63C7.31,8.63 6.96,8.9 6.7,9.46C6.44,10 6.32,10.87 6.32,12C6.31,13.15 6.44,14 6.69,14.54C6.95,15.1 7.31,15.37 7.77,15.37C8.69,15.37 9.16,14.24 9.17,12C9.17,9.77 8.7,8.65 7.75,8.63M13.33,17V15.22L13.76,15.24L14.3,15.22L15.34,15.03C15.68,14.92 16,14.78 16.26,14.58C16.59,14.35 16.86,14.08 17.07,13.76C17.29,13.45 17.44,13.12 17.53,12.78L17.5,12.77C17.05,13.19 16.38,13.4 15.47,13.41C14.62,13.4 13.91,13.15 13.34,12.65C12.77,12.15 12.5,11.43 12.46,10.5C12.47,9.5 12.81,8.69 13.47,8.03C14.14,7.37 15,7.03 16.12,7C17.37,7.04 18.29,7.45 18.88,8.24C19.47,9 19.76,10 19.76,11.19C19.75,12.15 19.61,13 19.32,13.76C19.03,14.5 18.64,15.13 18.12,15.64C17.66,16.06 17.11,16.38 16.47,16.61C15.83,16.83 15.12,16.96 14.34,17H13.33M16.06,8.63C15.65,8.64 15.32,8.8 15.06,9.11C14.81,9.42 14.68,9.84 14.68,10.36C14.68,10.8 14.8,11.16 15.03,11.46C15.27,11.77 15.63,11.92 16.11,11.93C16.43,11.93 16.7,11.86 16.92,11.74C17.14,11.61 17.3,11.46 17.41,11.28C17.5,11.17 17.53,10.97 17.53,10.71C17.54,10.16 17.43,9.69 17.2,9.28C16.97,8.87 16.59,8.65 16.06,8.63M9.25,5L12.5,1.75L15.75,5H9.25M15.75,19L12.5,22.25L9.25,19H15.75Z" /></g><g id="sort-variant"><path d="M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z" /></g><g id="soundcloud"><path d="M11.56,8.87V17H20.32V17C22.17,16.87 23,15.73 23,14.33C23,12.85 21.88,11.66 20.38,11.66C20,11.66 19.68,11.74 19.35,11.88C19.11,9.54 17.12,7.71 14.67,7.71C13.5,7.71 12.39,8.15 11.56,8.87M10.68,9.89C10.38,9.71 10.06,9.57 9.71,9.5V17H11.1V9.34C10.95,9.5 10.81,9.7 10.68,9.89M8.33,9.35V17H9.25V9.38C9.06,9.35 8.87,9.34 8.67,9.34C8.55,9.34 8.44,9.34 8.33,9.35M6.5,10V17H7.41V9.54C7.08,9.65 6.77,9.81 6.5,10M4.83,12.5C4.77,12.5 4.71,12.44 4.64,12.41V17H5.56V10.86C5.19,11.34 4.94,11.91 4.83,12.5M2.79,12.22V16.91C3,16.97 3.24,17 3.5,17H3.72V12.14C3.64,12.13 3.56,12.12 3.5,12.12C3.24,12.12 3,12.16 2.79,12.22M1,14.56C1,15.31 1.34,15.97 1.87,16.42V12.71C1.34,13.15 1,13.82 1,14.56Z" /></g><g id="source-branch"><path d="M13,14C9.64,14 8.54,15.35 8.18,16.24C9.25,16.7 10,17.76 10,19A3,3 0 0,1 7,22A3,3 0 0,1 4,19C4,17.69 4.83,16.58 6,16.17V7.83C4.83,7.42 4,6.31 4,5A3,3 0 0,1 7,2A3,3 0 0,1 10,5C10,6.31 9.17,7.42 8,7.83V13.12C8.88,12.47 10.16,12 12,12C14.67,12 15.56,10.66 15.85,9.77C14.77,9.32 14,8.25 14,7A3,3 0 0,1 17,4A3,3 0 0,1 20,7C20,8.34 19.12,9.5 17.91,9.86C17.65,11.29 16.68,14 13,14M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M17,6A1,1 0 0,0 16,7A1,1 0 0,0 17,8A1,1 0 0,0 18,7A1,1 0 0,0 17,6Z" /></g><g id="source-commit"><path d="M17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-end"><path d="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-end-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11Z" /></g><g id="source-commit-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,5V3H13V5H11M11,21V19H13V21H11Z" /></g><g id="source-commit-next-local"><path d="M17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12C7,9.58 8.72,7.56 11,7.1V3H13V7.1C15.28,7.56 17,9.58 17,12M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z" /></g><g id="source-commit-start"><path d="M12,7A5,5 0 0,1 17,12C17,14.42 15.28,16.44 13,16.9V21H11V16.9C8.72,16.44 7,14.42 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z" /></g><g id="source-commit-start-next-local"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M11,21V19H13V21H11Z" /></g><g id="source-fork"><path d="M6,2A3,3 0 0,1 9,5C9,6.28 8.19,7.38 7.06,7.81C7.15,8.27 7.39,8.83 8,9.63C9,10.92 11,12.83 12,14.17C13,12.83 15,10.92 16,9.63C16.61,8.83 16.85,8.27 16.94,7.81C15.81,7.38 15,6.28 15,5A3,3 0 0,1 18,2A3,3 0 0,1 21,5C21,6.32 20.14,7.45 18.95,7.85C18.87,8.37 18.64,9 18,9.83C17,11.17 15,13.08 14,14.38C13.39,15.17 13.15,15.73 13.06,16.19C14.19,16.62 15,17.72 15,19A3,3 0 0,1 12,22A3,3 0 0,1 9,19C9,17.72 9.81,16.62 10.94,16.19C10.85,15.73 10.61,15.17 10,14.38C9,13.08 7,11.17 6,9.83C5.36,9 5.13,8.37 5.05,7.85C3.86,7.45 3,6.32 3,5A3,3 0 0,1 6,2M6,4A1,1 0 0,0 5,5A1,1 0 0,0 6,6A1,1 0 0,0 7,5A1,1 0 0,0 6,4M18,4A1,1 0 0,0 17,5A1,1 0 0,0 18,6A1,1 0 0,0 19,5A1,1 0 0,0 18,4M12,18A1,1 0 0,0 11,19A1,1 0 0,0 12,20A1,1 0 0,0 13,19A1,1 0 0,0 12,18Z" /></g><g id="source-merge"><path d="M7,3A3,3 0 0,1 10,6C10,7.29 9.19,8.39 8.04,8.81C8.58,13.81 13.08,14.77 15.19,14.96C15.61,13.81 16.71,13 18,13A3,3 0 0,1 21,16A3,3 0 0,1 18,19C16.69,19 15.57,18.16 15.16,17C10.91,16.8 9.44,15.19 8,13.39V15.17C9.17,15.58 10,16.69 10,18A3,3 0 0,1 7,21A3,3 0 0,1 4,18C4,16.69 4.83,15.58 6,15.17V8.83C4.83,8.42 4,7.31 4,6A3,3 0 0,1 7,3M7,5A1,1 0 0,0 6,6A1,1 0 0,0 7,7A1,1 0 0,0 8,6A1,1 0 0,0 7,5M7,17A1,1 0 0,0 6,18A1,1 0 0,0 7,19A1,1 0 0,0 8,18A1,1 0 0,0 7,17M18,15A1,1 0 0,0 17,16A1,1 0 0,0 18,17A1,1 0 0,0 19,16A1,1 0 0,0 18,15Z" /></g><g id="source-pull"><path d="M6,3A3,3 0 0,1 9,6C9,7.31 8.17,8.42 7,8.83V15.17C8.17,15.58 9,16.69 9,18A3,3 0 0,1 6,21A3,3 0 0,1 3,18C3,16.69 3.83,15.58 5,15.17V8.83C3.83,8.42 3,7.31 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M21,18A3,3 0 0,1 18,21A3,3 0 0,1 15,18C15,16.69 15.83,15.58 17,15.17V7H15V10.25L10.75,6L15,1.75V5H17A2,2 0 0,1 19,7V15.17C20.17,15.58 21,16.69 21,18M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17Z" /></g><g id="speaker"><path d="M12,12A3,3 0 0,0 9,15A3,3 0 0,0 12,18A3,3 0 0,0 15,15A3,3 0 0,0 12,12M12,20A5,5 0 0,1 7,15A5,5 0 0,1 12,10A5,5 0 0,1 17,15A5,5 0 0,1 12,20M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8C10.89,8 10,7.1 10,6C10,4.89 10.89,4 12,4M17,2H7C5.89,2 5,2.89 5,4V20A2,2 0 0,0 7,22H17A2,2 0 0,0 19,20V4C19,2.89 18.1,2 17,2Z" /></g><g id="speaker-off"><path d="M2,5.27L3.28,4L21,21.72L19.73,23L18.27,21.54C17.93,21.83 17.5,22 17,22H7C5.89,22 5,21.1 5,20V8.27L2,5.27M12,18A3,3 0 0,1 9,15C9,14.24 9.28,13.54 9.75,13L8.33,11.6C7.5,12.5 7,13.69 7,15A5,5 0 0,0 12,20C13.31,20 14.5,19.5 15.4,18.67L14,17.25C13.45,17.72 12.76,18 12,18M17,15A5,5 0 0,0 12,10H11.82L5.12,3.3C5.41,2.54 6.14,2 7,2H17A2,2 0 0,1 19,4V17.18L17,15.17V15M12,4C10.89,4 10,4.89 10,6A2,2 0 0,0 12,8A2,2 0 0,0 14,6C14,4.89 13.1,4 12,4Z" /></g><g id="speaker-wireless"><path d="M20.07,19.07L18.66,17.66C20.11,16.22 21,14.21 21,12C21,9.78 20.11,7.78 18.66,6.34L20.07,4.93C21.88,6.74 23,9.24 23,12C23,14.76 21.88,17.26 20.07,19.07M17.24,16.24L15.83,14.83C16.55,14.11 17,13.11 17,12C17,10.89 16.55,9.89 15.83,9.17L17.24,7.76C18.33,8.85 19,10.35 19,12C19,13.65 18.33,15.15 17.24,16.24M4,3H12A2,2 0 0,1 14,5V19A2,2 0 0,1 12,21H4A2,2 0 0,1 2,19V5A2,2 0 0,1 4,3M8,5A2,2 0 0,0 6,7A2,2 0 0,0 8,9A2,2 0 0,0 10,7A2,2 0 0,0 8,5M8,11A4,4 0 0,0 4,15A4,4 0 0,0 8,19A4,4 0 0,0 12,15A4,4 0 0,0 8,11M8,13A2,2 0 0,1 10,15A2,2 0 0,1 8,17A2,2 0 0,1 6,15A2,2 0 0,1 8,13Z" /></g><g id="speedometer"><path d="M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z" /></g><g id="spellcheck"><path d="M21.59,11.59L13.5,19.68L9.83,16L8.42,17.41L13.5,22.5L23,13M6.43,11L8.5,5.5L10.57,11M12.45,16H14.54L9.43,3H7.57L2.46,16H4.55L5.67,13H11.31L12.45,16Z" /></g><g id="spotify"><path d="M17.9,10.9C14.7,9 9.35,8.8 6.3,9.75C5.8,9.9 5.3,9.6 5.15,9.15C5,8.65 5.3,8.15 5.75,8C9.3,6.95 15.15,7.15 18.85,9.35C19.3,9.6 19.45,10.2 19.2,10.65C18.95,11 18.35,11.15 17.9,10.9M17.8,13.7C17.55,14.05 17.1,14.2 16.75,13.95C14.05,12.3 9.95,11.8 6.8,12.8C6.4,12.9 5.95,12.7 5.85,12.3C5.75,11.9 5.95,11.45 6.35,11.35C10,10.25 14.5,10.8 17.6,12.7C17.9,12.85 18.05,13.35 17.8,13.7M16.6,16.45C16.4,16.75 16.05,16.85 15.75,16.65C13.4,15.2 10.45,14.9 6.95,15.7C6.6,15.8 6.3,15.55 6.2,15.25C6.1,14.9 6.35,14.6 6.65,14.5C10.45,13.65 13.75,14 16.35,15.6C16.7,15.75 16.75,16.15 16.6,16.45M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="spotlight"><path d="M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="spotlight-beam"><path d="M9,16.5L9.91,15.59L15.13,20.8L14.21,21.71L9,16.5M15.5,10L16.41,9.09L21.63,14.3L20.71,15.21L15.5,10M6.72,2.72L10.15,6.15L6.15,10.15L2.72,6.72C1.94,5.94 1.94,4.67 2.72,3.89L3.89,2.72C4.67,1.94 5.94,1.94 6.72,2.72M14.57,7.5L15.28,8.21L8.21,15.28L7.5,14.57L6.64,11.07L11.07,6.64L14.57,7.5Z" /></g><g id="spray"><path d="M10,4H12V6H10V4M7,3H9V5H7V3M7,6H9V8H7V6M6,8V10H4V8H6M6,5V7H4V5H6M6,2V4H4V2H6M13,22A2,2 0 0,1 11,20V10A2,2 0 0,1 13,8V7H14V4H17V7H18V8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H13M13,10V20H18V10H13Z" /></g><g id="square-inc"><path d="M6,3H18A3,3 0 0,1 21,6V18A3,3 0 0,1 18,21H6A3,3 0 0,1 3,18V6A3,3 0 0,1 6,3M7,6A1,1 0 0,0 6,7V17A1,1 0 0,0 7,18H17A1,1 0 0,0 18,17V7A1,1 0 0,0 17,6H7M9.5,9H14.5A0.5,0.5 0 0,1 15,9.5V14.5A0.5,0.5 0 0,1 14.5,15H9.5A0.5,0.5 0 0,1 9,14.5V9.5A0.5,0.5 0 0,1 9.5,9Z" /></g><g id="square-inc-cash"><path d="M5.5,0H18.5A5.5,5.5 0 0,1 24,5.5V18.5A5.5,5.5 0 0,1 18.5,24H5.5A5.5,5.5 0 0,1 0,18.5V5.5A5.5,5.5 0 0,1 5.5,0M15.39,15.18C15.39,16.76 14.5,17.81 12.85,17.95V12.61C14.55,13.13 15.39,13.66 15.39,15.18M11.65,6V10.88C10.34,10.5 9.03,9.93 9.03,8.43C9.03,6.94 10.18,6.12 11.65,6M15.5,7.6L16.5,6.8C15.62,5.66 14.4,4.92 12.85,4.77V3.8H11.65V3.8L11.65,4.75C9.5,4.89 7.68,6.17 7.68,8.5C7.68,11 9.74,11.78 11.65,12.29V17.96C10.54,17.84 9.29,17.31 8.43,16.03L7.3,16.78C8.2,18.12 9.76,19 11.65,19.14V20.2H12.07L12.85,20.2V19.16C15.35,19 16.7,17.34 16.7,15.14C16.7,12.58 14.81,11.76 12.85,11.19V6.05C14,6.22 14.85,6.76 15.5,7.6Z" /></g><g id="stackexchange"><path d="M4,14.04V11H20V14.04H4M4,10V7H20V10H4M17.46,2C18.86,2 20,3.18 20,4.63V6H4V4.63C4,3.18 5.14,2 6.54,2H17.46M4,15H20V16.35C20,17.81 18.86,19 17.46,19H16.5L13,22V19H6.54C5.14,19 4,17.81 4,16.35V15Z" /></g><g id="stackoverflow"><path d="M17.36,20.2V14.82H19.15V22H3V14.82H4.8V20.2H17.36M6.77,14.32L7.14,12.56L15.93,14.41L15.56,16.17L6.77,14.32M7.93,10.11L8.69,8.5L16.83,12.28L16.07,13.9L7.93,10.11M10.19,6.12L11.34,4.74L18.24,10.5L17.09,11.87L10.19,6.12M14.64,1.87L20,9.08L18.56,10.15L13.2,2.94L14.64,1.87M6.59,18.41V16.61H15.57V18.41H6.59Z" /></g><g id="stadium"><path d="M5,3H7L10,5L7,7V8.33C8.47,8.12 10.18,8 12,8C13.82,8 15.53,8.12 17,8.33V3H19L22,5L19,7V8.71C20.85,9.17 22,9.8 22,10.5C22,11.88 17.5,13 12,13C6.5,13 2,11.88 2,10.5C2,9.8 3.15,9.17 5,8.71V3M12,9.5C8.69,9.5 7,9.67 7,10.5C7,11.33 8.69,11.5 12,11.5C15.31,11.5 17,11.33 17,10.5C17,9.67 15.31,9.5 12,9.5M12,14.75C15.81,14.75 19.2,14.08 21.4,13.05L20,21H15V19A2,2 0 0,0 13,17H11A2,2 0 0,0 9,19V21H4L2.6,13.05C4.8,14.08 8.19,14.75 12,14.75Z" /></g><g id="stairs"><path d="M15,5V9H11V13H7V17H3V20H10V16H14V12H18V8H22V5H15Z" /></g><g id="star"><path d="M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z" /></g><g id="star-circle"><path d="M16.23,18L12,15.45L7.77,18L8.89,13.19L5.16,9.96L10.08,9.54L12,5L13.92,9.53L18.84,9.95L15.11,13.18L16.23,18M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="star-half"><path d="M12,15.89V6.59L13.71,10.63L18.09,11L14.77,13.88L15.76,18.16M22,9.74L14.81,9.13L12,2.5L9.19,9.13L2,9.74L7.45,14.47L5.82,21.5L12,17.77L18.18,21.5L16.54,14.47L22,9.74Z" /></g><g id="star-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L17.05,20.31L12,17.27L5.82,21L7.45,13.97L2,9.24L5.66,8.93L2,5.27M12,2L14.81,8.62L22,9.24L16.54,13.97L16.77,14.95L9.56,7.74L12,2Z" /></g><g id="star-outline"><path d="M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" /></g><g id="steam"><path d="M20.14,7.79C21.33,7.79 22.29,8.75 22.29,9.93C22.29,11.11 21.33,12.07 20.14,12.07A2.14,2.14 0 0,1 18,9.93C18,8.75 18.96,7.79 20.14,7.79M3,6.93A3,3 0 0,1 6,9.93V10.24L12.33,13.54C12.84,13.15 13.46,12.93 14.14,12.93L16.29,9.93C16.29,7.8 18,6.07 20.14,6.07A3.86,3.86 0 0,1 24,9.93A3.86,3.86 0 0,1 20.14,13.79L17.14,15.93A3,3 0 0,1 14.14,18.93C12.5,18.93 11.14,17.59 11.14,15.93C11.14,15.89 11.14,15.85 11.14,15.82L4.64,12.44C4.17,12.75 3.6,12.93 3,12.93A3,3 0 0,1 0,9.93A3,3 0 0,1 3,6.93M15.03,14.94C15.67,15.26 15.92,16.03 15.59,16.67C15.27,17.3 14.5,17.55 13.87,17.23L12.03,16.27C12.19,17.29 13.08,18.07 14.14,18.07C15.33,18.07 16.29,17.11 16.29,15.93C16.29,14.75 15.33,13.79 14.14,13.79C13.81,13.79 13.5,13.86 13.22,14L15.03,14.94M3,7.79C1.82,7.79 0.86,8.75 0.86,9.93C0.86,11.11 1.82,12.07 3,12.07C3.24,12.07 3.5,12.03 3.7,11.95L2.28,11.22C1.64,10.89 1.39,10.12 1.71,9.5C2.04,8.86 2.81,8.6 3.44,8.93L5.14,9.81C5.08,8.68 4.14,7.79 3,7.79M20.14,6.93C18.5,6.93 17.14,8.27 17.14,9.93A3,3 0 0,0 20.14,12.93A3,3 0 0,0 23.14,9.93A3,3 0 0,0 20.14,6.93Z" /></g><g id="steering"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.1,4 19.5,7.1 20,11H17C16.5,9.9 14.4,9 12,9C9.6,9 7.5,9.9 7,11H4C4.5,7.1 7.9,4 12,4M4,13H7C7.2,14.3 8.2,16.6 11,17V20C7.4,19.6 4.4,16.6 4,13M13,20V17C15.8,16.6 16.7,14.3 17,13H20C19.6,16.6 16.6,19.6 13,20Z" /></g><g id="step-backward"><path d="M19,5V19H16V5M14,5V19L3,12" /></g><g id="step-backward-2"><path d="M17,5H14V19H17V5M12,5L1,12L12,19V5M22,5H19V19H22V5Z" /></g><g id="step-forward"><path d="M5,5V19H8V5M10,5V19L21,12" /></g><g id="step-forward-2"><path d="M7,5H10V19H7V5M12,5L23,12L12,19V5M2,5H5V19H2V5Z" /></g><g id="stethoscope"><path d="M19,8C19.56,8 20,8.43 20,9A1,1 0 0,1 19,10C18.43,10 18,9.55 18,9C18,8.43 18.43,8 19,8M2,2V11C2,13.96 4.19,16.5 7.14,16.91C7.76,19.92 10.42,22 13.5,22A6.5,6.5 0 0,0 20,15.5V11.81C21.16,11.39 22,10.29 22,9A3,3 0 0,0 19,6A3,3 0 0,0 16,9C16,10.29 16.84,11.4 18,11.81V15.41C18,17.91 16,19.91 13.5,19.91C11.5,19.91 9.82,18.7 9.22,16.9C12,16.3 14,13.8 14,11V2H10V5H12V11A4,4 0 0,1 8,15A4,4 0 0,1 4,11V5H6V2H2Z" /></g><g id="sticker"><path d="M12.12,18.46L18.3,12.28C16.94,12.59 15.31,13.2 14.07,14.46C13.04,15.5 12.39,16.83 12.12,18.46M20.75,10H21.05C21.44,10 21.79,10.27 21.93,10.64C22.07,11 22,11.43 21.7,11.71L11.7,21.71C11.5,21.9 11.26,22 11,22L10.64,21.93C10.27,21.79 10,21.44 10,21.05C9.84,17.66 10.73,14.96 12.66,13.03C15.5,10.2 19.62,10 20.75,10M12,2C16.5,2 20.34,5 21.58,9.11L20,9H19.42C18.24,6.07 15.36,4 12,4A8,8 0 0,0 4,12C4,15.36 6.07,18.24 9,19.42C8.97,20.13 9,20.85 9.11,21.57C5,20.33 2,16.5 2,12C2,6.47 6.5,2 12,2Z" /></g><g id="stocking"><path d="M17,2A2,2 0 0,1 19,4V7A2,2 0 0,1 17,9V17C17,17.85 16.5,18.57 15.74,18.86L9.5,21.77C8.5,22.24 7.29,21.81 6.83,20.81L6,19C5.5,18 5.95,16.8 6.95,16.34L10,14.91V9A2,2 0 0,1 8,7V4A2,2 0 0,1 10,2H17M10,4V7H17V4H10Z" /></g><g id="stop"><path d="M18,18H6V6H18V18Z" /></g><g id="stop-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M9,9H15V15H9" /></g><g id="stop-circle-outline"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4M9,9V15H15V9" /></g><g id="store"><path d="M12,18H6V14H12M21,14V12L20,7H4L3,12V14H4V20H14V14H18V20H20V14M20,4H4V6H20V4Z" /></g><g id="store-24-hour"><path d="M16,12H15V10H13V7H14V9H15V7H16M11,10H9V11H11V12H8V9H10V8H8V7H11M19,7V4H5V7H2V20H10V16H14V20H22V7H19Z" /></g><g id="stove"><path d="M6,14H8L11,17H9L6,14M4,4H5V3A1,1 0 0,1 6,2H10A1,1 0 0,1 11,3V4H13V3A1,1 0 0,1 14,2H18A1,1 0 0,1 19,3V4H20A2,2 0 0,1 22,6V19A2,2 0 0,1 20,21V22H17V21H7V22H4V21A2,2 0 0,1 2,19V6A2,2 0 0,1 4,4M18,7A1,1 0 0,1 19,8A1,1 0 0,1 18,9A1,1 0 0,1 17,8A1,1 0 0,1 18,7M14,7A1,1 0 0,1 15,8A1,1 0 0,1 14,9A1,1 0 0,1 13,8A1,1 0 0,1 14,7M20,6H4V10H20V6M4,19H20V12H4V19M6,7A1,1 0 0,1 7,8A1,1 0 0,1 6,9A1,1 0 0,1 5,8A1,1 0 0,1 6,7M13,14H15L18,17H16L13,14Z" /></g><g id="subdirectory-arrow-left"><path d="M11,9L12.42,10.42L8.83,14H18V4H20V16H8.83L12.42,19.58L11,21L5,15L11,9Z" /></g><g id="subdirectory-arrow-right"><path d="M19,15L13,21L11.58,19.58L15.17,16H4V4H6V14H15.17L11.58,10.42L13,9L19,15Z" /></g><g id="subway"><path d="M8.5,15A1,1 0 0,1 9.5,16A1,1 0 0,1 8.5,17A1,1 0 0,1 7.5,16A1,1 0 0,1 8.5,15M7,9H17V14H7V9M15.5,15A1,1 0 0,1 16.5,16A1,1 0 0,1 15.5,17A1,1 0 0,1 14.5,16A1,1 0 0,1 15.5,15M18,15.88V9C18,6.38 15.32,6 12,6C9,6 6,6.37 6,9V15.88A2.62,2.62 0 0,0 8.62,18.5L7.5,19.62V20H9.17L10.67,18.5H13.5L15,20H16.5V19.62L15.37,18.5C16.82,18.5 18,17.33 18,15.88M17.8,2.8C20.47,3.84 22,6.05 22,8.86V22H2V8.86C2,6.05 3.53,3.84 6.2,2.8C8,2.09 10.14,2 12,2C13.86,2 16,2.09 17.8,2.8Z" /></g><g id="subway-variant"><path d="M18,11H13V6H18M16.5,17A1.5,1.5 0 0,1 15,15.5A1.5,1.5 0 0,1 16.5,14A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 16.5,17M11,11H6V6H11M7.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,14A1.5,1.5 0 0,1 9,15.5A1.5,1.5 0 0,1 7.5,17M12,2C7.58,2 4,2.5 4,6V15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V6C20,2.5 16.42,2 12,2Z" /></g><g id="sunglasses"><path d="M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17Z" /></g><g id="surround-sound"><path d="M20,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M7.76,16.24L6.35,17.65C4.78,16.1 4,14.05 4,12C4,9.95 4.78,7.9 6.34,6.34L7.75,7.75C6.59,8.93 6,10.46 6,12C6,13.54 6.59,15.07 7.76,16.24M12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16M17.66,17.66L16.25,16.25C17.41,15.07 18,13.54 18,12C18,10.46 17.41,8.93 16.24,7.76L17.65,6.35C19.22,7.9 20,9.95 20,12C20,14.05 19.22,16.1 17.66,17.66M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z" /></g><g id="svg"><path d="M5.13,10.71H8.87L6.22,8.06C5.21,8.06 4.39,7.24 4.39,6.22A1.83,1.83 0 0,1 6.22,4.39C7.24,4.39 8.06,5.21 8.06,6.22L10.71,8.87V5.13C10,4.41 10,3.25 10.71,2.54C11.42,1.82 12.58,1.82 13.29,2.54C14,3.25 14,4.41 13.29,5.13V8.87L15.95,6.22C15.95,5.21 16.76,4.39 17.78,4.39C18.79,4.39 19.61,5.21 19.61,6.22C19.61,7.24 18.79,8.06 17.78,8.06L15.13,10.71H18.87C19.59,10 20.75,10 21.46,10.71C22.18,11.42 22.18,12.58 21.46,13.29C20.75,14 19.59,14 18.87,13.29H15.13L17.78,15.95C18.79,15.95 19.61,16.76 19.61,17.78A1.83,1.83 0 0,1 17.78,19.61C16.76,19.61 15.95,18.79 15.95,17.78L13.29,15.13V18.87C14,19.59 14,20.75 13.29,21.46C12.58,22.18 11.42,22.18 10.71,21.46C10,20.75 10,19.59 10.71,18.87V15.13L8.06,17.78C8.06,18.79 7.24,19.61 6.22,19.61C5.21,19.61 4.39,18.79 4.39,17.78C4.39,16.76 5.21,15.95 6.22,15.95L8.87,13.29H5.13C4.41,14 3.25,14 2.54,13.29C1.82,12.58 1.82,11.42 2.54,10.71C3.25,10 4.41,10 5.13,10.71Z" /></g><g id="swap-horizontal"><path d="M21,9L17,5V8H10V10H17V13M7,11L3,15L7,19V16H14V14H7V11Z" /></g><g id="swap-vertical"><path d="M9,3L5,7H8V14H10V7H13M16,17V10H14V17H11L15,21L19,17H16Z" /></g><g id="swim"><path d="M2,18C4.22,17 6.44,16 8.67,16C10.89,16 13.11,18 15.33,18C17.56,18 19.78,16 22,16V19C19.78,19 17.56,21 15.33,21C13.11,21 10.89,19 8.67,19C6.44,19 4.22,20 2,21V18M8.67,13C7.89,13 7.12,13.12 6.35,13.32L11.27,9.88L10.23,8.64C10.09,8.47 10,8.24 10,8C10,7.66 10.17,7.35 10.44,7.17L16.16,3.17L17.31,4.8L12.47,8.19L17.7,14.42C16.91,14.75 16.12,15 15.33,15C13.11,15 10.89,13 8.67,13M18,7A2,2 0 0,1 20,9A2,2 0 0,1 18,11A2,2 0 0,1 16,9A2,2 0 0,1 18,7Z" /></g><g id="switch"><path d="M13,18H14A1,1 0 0,1 15,19H22V21H15A1,1 0 0,1 14,22H10A1,1 0 0,1 9,21H2V19H9A1,1 0 0,1 10,18H11V16H8A1,1 0 0,1 7,15V3A1,1 0 0,1 8,2H16A1,1 0 0,1 17,3V15A1,1 0 0,1 16,16H13V18M13,6H14V4H13V6M9,4V6H11V4H9M9,8V10H11V8H9M9,12V14H11V12H9Z" /></g><g id="sword"><path d="M6.92,5H5L14,14L15,13.06M19.96,19.12L19.12,19.96C18.73,20.35 18.1,20.35 17.71,19.96L14.59,16.84L11.91,19.5L10.5,18.09L11.92,16.67L3,7.75V3H7.75L16.67,11.92L18.09,10.5L19.5,11.91L16.83,14.58L19.95,17.7C20.35,18.1 20.35,18.73 19.96,19.12Z" /></g><g id="sync"><path d="M12,18A6,6 0 0,1 6,12C6,11 6.25,10.03 6.7,9.2L5.24,7.74C4.46,8.97 4,10.43 4,12A8,8 0 0,0 12,20V23L16,19L12,15M12,4V1L8,5L12,9V6A6,6 0 0,1 18,12C18,13 17.75,13.97 17.3,14.8L18.76,16.26C19.54,15.03 20,13.57 20,12A8,8 0 0,0 12,4Z" /></g><g id="sync-alert"><path d="M11,13H13V7H11M21,4H15V10L17.24,7.76C18.32,8.85 19,10.34 19,12C19,14.61 17.33,16.83 15,17.65V19.74C18.45,18.85 21,15.73 21,12C21,9.79 20.09,7.8 18.64,6.36M11,17H13V15H11M3,12C3,14.21 3.91,16.2 5.36,17.64L3,20H9V14L6.76,16.24C5.68,15.15 5,13.66 5,12C5,9.39 6.67,7.17 9,6.35V4.26C5.55,5.15 3,8.27 3,12Z" /></g><g id="sync-off"><path d="M20,4H14V10L16.24,7.76C17.32,8.85 18,10.34 18,12C18,13 17.75,13.94 17.32,14.77L18.78,16.23C19.55,15 20,13.56 20,12C20,9.79 19.09,7.8 17.64,6.36L20,4M2.86,5.41L5.22,7.77C4.45,9 4,10.44 4,12C4,14.21 4.91,16.2 6.36,17.64L4,20H10V14L7.76,16.24C6.68,15.15 6,13.66 6,12C6,11 6.25,10.06 6.68,9.23L14.76,17.31C14.5,17.44 14.26,17.56 14,17.65V19.74C14.79,19.53 15.54,19.2 16.22,18.78L18.58,21.14L19.85,19.87L4.14,4.14L2.86,5.41M10,6.35V4.26C9.2,4.47 8.45,4.8 7.77,5.22L9.23,6.68C9.5,6.56 9.73,6.44 10,6.35Z" /></g><g id="tab"><path d="M19,19H5V5H12V9H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g><g id="tab-unselected"><path d="M15,21H17V19H15M11,21H13V19H11M19,13H21V11H19M19,21A2,2 0 0,0 21,19H19M7,5H9V3H7M19,17H21V15H19M19,3H11V9H21V5C21,3.89 20.1,3 19,3M5,21V19H3A2,2 0 0,0 5,21M3,17H5V15H3M7,21H9V19H7M3,5H5V3C3.89,3 3,3.89 3,5M3,13H5V11H3M3,9H5V7H3V9Z" /></g><g id="table"><path d="M5,4H19A2,2 0 0,1 21,6V18A2,2 0 0,1 19,20H5A2,2 0 0,1 3,18V6A2,2 0 0,1 5,4M5,8V12H11V8H5M13,8V12H19V8H13M5,14V18H11V14H5M13,14V18H19V14H13Z" /></g><g id="table-column-plus-after"><path d="M11,2A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H2V2H11M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M15,11H18V8H20V11H23V13H20V16H18V13H15V11Z" /></g><g id="table-column-plus-before"><path d="M13,2A2,2 0 0,0 11,4V20A2,2 0 0,0 13,22H22V2H13M20,10V14H13V10H20M20,16V20H13V16H20M20,4V8H13V4H20M9,11H6V8H4V11H1V13H4V16H6V13H9V11Z" /></g><g id="table-column-remove"><path d="M4,2H11A2,2 0 0,1 13,4V20A2,2 0 0,1 11,22H4A2,2 0 0,1 2,20V4A2,2 0 0,1 4,2M4,10V14H11V10H4M4,16V20H11V16H4M4,4V8H11V4H4M17.59,12L15,9.41L16.41,8L19,10.59L21.59,8L23,9.41L20.41,12L23,14.59L21.59,16L19,13.41L16.41,16L15,14.59L17.59,12Z" /></g><g id="table-column-width"><path d="M5,8H19A2,2 0 0,1 21,10V20A2,2 0 0,1 19,22H5A2,2 0 0,1 3,20V10A2,2 0 0,1 5,8M5,12V15H11V12H5M13,12V15H19V12H13M5,17V20H11V17H5M13,17V20H19V17H13M11,2H21V6H19V4H13V6H11V2Z" /></g><g id="table-edit"><path d="M21.7,13.35L20.7,14.35L18.65,12.3L19.65,11.3C19.86,11.08 20.21,11.08 20.42,11.3L21.7,12.58C21.92,12.79 21.92,13.14 21.7,13.35M12,18.94L18.07,12.88L20.12,14.93L14.06,21H12V18.94M4,2H18A2,2 0 0,1 20,4V8.17L16.17,12H12V16.17L10.17,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,6V10H10V6H4M12,6V10H18V6H12M4,12V16H10V12H4Z" /></g><g id="table-large"><path d="M4,3H20A2,2 0 0,1 22,5V20A2,2 0 0,1 20,22H4A2,2 0 0,1 2,20V5A2,2 0 0,1 4,3M4,7V10H8V7H4M10,7V10H14V7H10M20,10V7H16V10H20M4,12V15H8V12H4M4,20H8V17H4V20M10,12V15H14V12H10M10,20H14V17H10V20M20,20V17H16V20H20M20,12H16V15H20V12Z" /></g><g id="table-row-height"><path d="M3,5H15A2,2 0 0,1 17,7V17A2,2 0 0,1 15,19H3A2,2 0 0,1 1,17V7A2,2 0 0,1 3,5M3,9V12H8V9H3M10,9V12H15V9H10M3,14V17H8V14H3M10,14V17H15V14H10M23,14V7H19V9H21V12H19V14H23Z" /></g><g id="table-row-plus-after"><path d="M22,10A2,2 0 0,1 20,12H4A2,2 0 0,1 2,10V3H4V5H8V3H10V5H14V3H16V5H20V3H22V10M4,10H8V7H4V10M10,10H14V7H10V10M20,10V7H16V10H20M11,14H13V17H16V19H13V22H11V19H8V17H11V14Z" /></g><g id="table-row-plus-before"><path d="M22,14A2,2 0 0,0 20,12H4A2,2 0 0,0 2,14V21H4V19H8V21H10V19H14V21H16V19H20V21H22V14M4,14H8V17H4V14M10,14H14V17H10V14M20,14V17H16V14H20M11,10H13V7H16V5H13V2H11V5H8V7H11V10Z" /></g><g id="table-row-remove"><path d="M9.41,13L12,15.59L14.59,13L16,14.41L13.41,17L16,19.59L14.59,21L12,18.41L9.41,21L8,19.59L10.59,17L8,14.41L9.41,13M22,9A2,2 0 0,1 20,11H4A2,2 0 0,1 2,9V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V9M4,9H8V6H4V9M10,9H14V6H10V9M16,9H20V6H16V9Z" /></g><g id="tablet"><path d="M19,18H5V6H19M21,4H3C1.89,4 1,4.89 1,6V18A2,2 0 0,0 3,20H21A2,2 0 0,0 23,18V6C23,4.89 22.1,4 21,4Z" /></g><g id="tablet-android"><path d="M19.25,19H4.75V3H19.25M14,22H10V21H14M18,0H6A3,3 0 0,0 3,3V21A3,3 0 0,0 6,24H18A3,3 0 0,0 21,21V3A3,3 0 0,0 18,0Z" /></g><g id="tablet-ipad"><path d="M19,19H4V3H19M11.5,23A1.5,1.5 0 0,1 10,21.5A1.5,1.5 0 0,1 11.5,20A1.5,1.5 0 0,1 13,21.5A1.5,1.5 0 0,1 11.5,23M18.5,0H4.5A2.5,2.5 0 0,0 2,2.5V21.5A2.5,2.5 0 0,0 4.5,24H18.5A2.5,2.5 0 0,0 21,21.5V2.5A2.5,2.5 0 0,0 18.5,0Z" /></g><g id="tag"><path d="M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z" /></g><g id="tag-faces"><path d="M15,18C11.68,18 9,15.31 9,12C9,8.68 11.68,6 15,6A6,6 0 0,1 21,12A6,6 0 0,1 15,18M4,13A1,1 0 0,1 3,12A1,1 0 0,1 4,11A1,1 0 0,1 5,12A1,1 0 0,1 4,13M22,3H7.63C6.97,3 6.38,3.32 6,3.81L0,12L6,20.18C6.38,20.68 6.97,21 7.63,21H22A2,2 0 0,0 24,19V5C24,3.89 23.1,3 22,3M13,11A1,1 0 0,0 14,10A1,1 0 0,0 13,9A1,1 0 0,0 12,10A1,1 0 0,0 13,11M15,16C16.86,16 18.35,14.72 18.8,13H11.2C11.65,14.72 13.14,16 15,16M17,11A1,1 0 0,0 18,10A1,1 0 0,0 17,9A1,1 0 0,0 16,10A1,1 0 0,0 17,11Z" /></g><g id="tag-heart"><path d="M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4A2,2 0 0,0 2,4V11C2,11.55 2.22,12.05 2.59,12.42L11.59,21.42C11.95,21.78 12.45,22 13,22C13.55,22 14.05,21.78 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.45 21.77,11.94 21.41,11.58M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M17.27,15.27L13,19.54L8.73,15.27C8.28,14.81 8,14.19 8,13.5A2.5,2.5 0 0,1 10.5,11C11.19,11 11.82,11.28 12.27,11.74L13,12.46L13.73,11.73C14.18,11.28 14.81,11 15.5,11A2.5,2.5 0 0,1 18,13.5C18,14.19 17.72,14.82 17.27,15.27Z" /></g><g id="tag-multiple"><path d="M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z" /></g><g id="tag-outline"><path d="M5.5,7A1.5,1.5 0 0,0 7,5.5A1.5,1.5 0 0,0 5.5,4A1.5,1.5 0 0,0 4,5.5A1.5,1.5 0 0,0 5.5,7M21.41,11.58C21.77,11.94 22,12.44 22,13C22,13.55 21.78,14.05 21.41,14.41L14.41,21.41C14.05,21.77 13.55,22 13,22C12.45,22 11.95,21.77 11.58,21.41L2.59,12.41C2.22,12.05 2,11.55 2,11V4C2,2.89 2.89,2 4,2H11C11.55,2 12.05,2.22 12.41,2.58L21.41,11.58M13,20L20,13L11.5,4.5L4.5,11.5L13,20Z" /></g><g id="tag-text-outline"><path d="M5.5,7A1.5,1.5 0 0,0 7,5.5A1.5,1.5 0 0,0 5.5,4A1.5,1.5 0 0,0 4,5.5A1.5,1.5 0 0,0 5.5,7M21.41,11.58C21.77,11.94 22,12.44 22,13C22,13.55 21.78,14.05 21.41,14.41L14.41,21.41C14.05,21.77 13.55,22 13,22C12.45,22 11.95,21.77 11.58,21.41L2.59,12.41C2.22,12.05 2,11.55 2,11V4C2,2.89 2.89,2 4,2H11C11.55,2 12.05,2.22 12.41,2.58L21.41,11.58M13,20L20,13L11.5,4.5L4.5,11.5L13,20M10.09,8.91L11.5,7.5L17,13L15.59,14.41L10.09,8.91M7.59,11.41L9,10L13,14L11.59,15.41L7.59,11.41Z" /></g><g id="target"><path d="M11,2V4.07C7.38,4.53 4.53,7.38 4.07,11H2V13H4.07C4.53,16.62 7.38,19.47 11,19.93V22H13V19.93C16.62,19.47 19.47,16.62 19.93,13H22V11H19.93C19.47,7.38 16.62,4.53 13,4.07V2M11,6.08V8H13V6.09C15.5,6.5 17.5,8.5 17.92,11H16V13H17.91C17.5,15.5 15.5,17.5 13,17.92V16H11V17.91C8.5,17.5 6.5,15.5 6.08,13H8V11H6.09C6.5,8.5 8.5,6.5 11,6.08M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11Z" /></g><g id="taxi"><path d="M5,11L6.5,6.5H17.5L19,11M17.5,16A1.5,1.5 0 0,1 16,14.5A1.5,1.5 0 0,1 17.5,13A1.5,1.5 0 0,1 19,14.5A1.5,1.5 0 0,1 17.5,16M6.5,16A1.5,1.5 0 0,1 5,14.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 8,14.5A1.5,1.5 0 0,1 6.5,16M18.92,6C18.72,5.42 18.16,5 17.5,5H15V3H9V5H6.5C5.84,5 5.28,5.42 5.08,6L3,12V20A1,1 0 0,0 4,21H5A1,1 0 0,0 6,20V19H18V20A1,1 0 0,0 19,21H20A1,1 0 0,0 21,20V12L18.92,6Z" /></g><g id="teamviewer"><path d="M19,3A2,2 0 0,1 21,5V19C21,20.11 20.1,21 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5M7,12L10,9V11H14V9L17,12L14,15V13H10V15L7,12Z" /></g><g id="telegram"><path d="M9.78,18.65L10.06,14.42L17.74,7.5C18.08,7.19 17.67,7.04 17.22,7.31L7.74,13.3L3.64,12C2.76,11.75 2.75,11.14 3.84,10.7L19.81,4.54C20.54,4.21 21.24,4.72 20.96,5.84L18.24,18.65C18.05,19.56 17.5,19.78 16.74,19.36L12.6,16.3L10.61,18.23C10.38,18.46 10.19,18.65 9.78,18.65Z" /></g><g id="television"><path d="M20,17H4V5H20M20,3H4C2.89,3 2,3.89 2,5V17A2,2 0 0,0 4,19H8V21H16V19H20A2,2 0 0,0 22,17V5C22,3.89 21.1,3 20,3Z" /></g><g id="television-guide"><path d="M21,17V5H3V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H16V21H8V19H3A2,2 0 0,1 1,17V5A2,2 0 0,1 3,3H21M5,7H11V11H5V7M5,13H11V15H5V13M13,7H19V9H13V7M13,11H19V15H13V11Z" /></g><g id="temperature-celsius"><path d="M16.5,5C18.05,5 19.5,5.47 20.69,6.28L19.53,9.17C18.73,8.44 17.67,8 16.5,8C14,8 12,10 12,12.5C12,15 14,17 16.5,17C17.53,17 18.47,16.66 19.23,16.08L20.37,18.93C19.24,19.61 17.92,20 16.5,20A7.5,7.5 0 0,1 9,12.5A7.5,7.5 0 0,1 16.5,5M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z" /></g><g id="temperature-fahrenheit"><path d="M11,20V5H20V8H14V11H19V14H14V20H11M6,3A3,3 0 0,1 9,6A3,3 0 0,1 6,9A3,3 0 0,1 3,6A3,3 0 0,1 6,3M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5Z" /></g><g id="temperature-kelvin"><path d="M7,5H10V11L15,5H19L13.88,10.78L19,20H15.38L11.76,13.17L10,15.15V20H7V5Z" /></g><g id="tennis"><path d="M12,2C14.5,2 16.75,2.9 18.5,4.4C16.36,6.23 15,8.96 15,12C15,15.04 16.36,17.77 18.5,19.6C16.75,21.1 14.5,22 12,22C9.5,22 7.25,21.1 5.5,19.6C7.64,17.77 9,15.04 9,12C9,8.96 7.64,6.23 5.5,4.4C7.25,2.9 9.5,2 12,2M22,12C22,14.32 21.21,16.45 19.88,18.15C18.12,16.68 17,14.47 17,12C17,9.53 18.12,7.32 19.88,5.85C21.21,7.55 22,9.68 22,12M2,12C2,9.68 2.79,7.55 4.12,5.85C5.88,7.32 7,9.53 7,12C7,14.47 5.88,16.68 4.12,18.15C2.79,16.45 2,14.32 2,12Z" /></g><g id="tent"><path d="M4,6C4,7.19 4.39,8.27 5,9A3,3 0 0,1 2,6A3,3 0 0,1 5,3C4.39,3.73 4,4.81 4,6M2,21V19H4.76L12,4.78L19.24,19H22V21H2M12,9.19L7,19H17L12,9.19Z" /></g><g id="terrain"><path d="M14,6L10.25,11L13.1,14.8L11.5,16C9.81,13.75 7,10 7,10L1,18H23L14,6Z" /></g><g id="test-tube"><path d="M7,2V4H8V18A4,4 0 0,0 12,22A4,4 0 0,0 16,18V4H17V2H7M11,16C10.4,16 10,15.6 10,15C10,14.4 10.4,14 11,14C11.6,14 12,14.4 12,15C12,15.6 11.6,16 11,16M13,12C12.4,12 12,11.6 12,11C12,10.4 12.4,10 13,10C13.6,10 14,10.4 14,11C14,11.6 13.6,12 13,12M14,7H10V4H14V7Z" /></g><g id="text-shadow"><path d="M3,3H16V6H11V18H8V6H3V3M12,7H14V9H12V7M15,7H17V9H15V7M18,7H20V9H18V7M12,10H14V12H12V10M12,13H14V15H12V13M12,16H14V18H12V16M12,19H14V21H12V19Z" /></g><g id="text-to-speech"><path d="M8,7A2,2 0 0,1 10,9V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9A2,2 0 0,1 8,7M14,14C14,16.97 11.84,19.44 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18A4,4 0 0,0 12,14H14M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z" /></g><g id="text-to-speech-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L13.38,16.65C12.55,18.35 10.93,19.59 9,19.92V22H7V19.92C4.16,19.44 2,16.97 2,14H4A4,4 0 0,0 8,18C9.82,18 11.36,16.78 11.84,15.11L10,13.27V14A2,2 0 0,1 8,16A2,2 0 0,1 6,14V9.27L2,5.27M21.41,9.41L17.17,13.66L18.18,10H14A2,2 0 0,1 12,8V4A2,2 0 0,1 14,2H20A2,2 0 0,1 22,4V8C22,8.55 21.78,9.05 21.41,9.41Z" /></g><g id="textbox"><path d="M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20Z" /></g><g id="texture"><path d="M9.29,21H12.12L21,12.12V9.29M19,21C19.55,21 20.05,20.78 20.41,20.41C20.78,20.05 21,19.55 21,19V17L17,21M5,3A2,2 0 0,0 3,5V7L7,3M11.88,3L3,11.88V14.71L14.71,3M19.5,3.08L3.08,19.5C3.17,19.85 3.35,20.16 3.59,20.41C3.84,20.65 4.15,20.83 4.5,20.92L20.93,4.5C20.74,3.8 20.2,3.26 19.5,3.08Z" /></g><g id="theater"><path d="M4,15H6A2,2 0 0,1 8,17V19H9V17A2,2 0 0,1 11,15H13A2,2 0 0,1 15,17V19H16V17A2,2 0 0,1 18,15H20A2,2 0 0,1 22,17V19H23V22H1V19H2V17A2,2 0 0,1 4,15M11,7L15,10L11,13V7M4,2H20A2,2 0 0,1 22,4V13.54C21.41,13.19 20.73,13 20,13V4H4V13C3.27,13 2.59,13.19 2,13.54V4A2,2 0 0,1 4,2Z" /></g><g id="theme-light-dark"><path d="M7.5,2C5.71,3.15 4.5,5.18 4.5,7.5C4.5,9.82 5.71,11.85 7.53,13C4.46,13 2,10.54 2,7.5A5.5,5.5 0 0,1 7.5,2M19.07,3.5L20.5,4.93L4.93,20.5L3.5,19.07L19.07,3.5M12.89,5.93L11.41,5L9.97,6L10.39,4.3L9,3.24L10.75,3.12L11.33,1.47L12,3.1L13.73,3.13L12.38,4.26L12.89,5.93M9.59,9.54L8.43,8.81L7.31,9.59L7.65,8.27L6.56,7.44L7.92,7.35L8.37,6.06L8.88,7.33L10.24,7.36L9.19,8.23L9.59,9.54M19,13.5A5.5,5.5 0 0,1 13.5,19C12.28,19 11.15,18.6 10.24,17.93L17.93,10.24C18.6,11.15 19,12.28 19,13.5M14.6,20.08L17.37,18.93L17.13,22.28L14.6,20.08M18.93,17.38L20.08,14.61L22.28,17.15L18.93,17.38M20.08,12.42L18.94,9.64L22.28,9.88L20.08,12.42M9.63,18.93L12.4,20.08L9.87,22.27L9.63,18.93Z" /></g><g id="thermometer"><path d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11Z" /></g><g id="thermometer-lines"><path d="M17,3H21V5H17V3M17,7H21V9H17V7M17,11H21V13H17.75L17,12.1V11M21,15V17H19C19,16.31 18.9,15.63 18.71,15H21M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11M7,3V5H3V3H7M7,7V9H3V7H7M7,11V12.1L6.25,13H3V11H7M3,15H5.29C5.1,15.63 5,16.31 5,17H3V15Z" /></g><g id="thumb-down"><path d="M19,15H23V3H19M15,3H6C5.17,3 4.46,3.5 4.16,4.22L1.14,11.27C1.05,11.5 1,11.74 1,12V13.91L1,14A2,2 0 0,0 3,16H9.31L8.36,20.57C8.34,20.67 8.33,20.77 8.33,20.88C8.33,21.3 8.5,21.67 8.77,21.94L9.83,23L16.41,16.41C16.78,16.05 17,15.55 17,15V5C17,3.89 16.1,3 15,3Z" /></g><g id="thumb-down-outline"><path d="M19,15V3H23V15H19M15,3A2,2 0 0,1 17,5V15C17,15.55 16.78,16.05 16.41,16.41L9.83,23L8.77,21.94C8.5,21.67 8.33,21.3 8.33,20.88L8.36,20.57L9.31,16H3C1.89,16 1,15.1 1,14V13.91L1,12C1,11.74 1.05,11.5 1.14,11.27L4.16,4.22C4.46,3.5 5.17,3 6,3H15M15,5H5.97L3,12V14H11.78L10.65,19.32L15,14.97V5Z" /></g><g id="thumb-up"><path d="M23,10C23,8.89 22.1,8 21,8H14.68L15.64,3.43C15.66,3.33 15.67,3.22 15.67,3.11C15.67,2.7 15.5,2.32 15.23,2.05L14.17,1L7.59,7.58C7.22,7.95 7,8.45 7,9V19A2,2 0 0,0 9,21H18C18.83,21 19.54,20.5 19.84,19.78L22.86,12.73C22.95,12.5 23,12.26 23,12V10.08L23,10M1,21H5V9H1V21Z" /></g><g id="thumb-up-outline"><path d="M5,9V21H1V9H5M9,21A2,2 0 0,1 7,19V9C7,8.45 7.22,7.95 7.59,7.59L14.17,1L15.23,2.06C15.5,2.33 15.67,2.7 15.67,3.11L15.64,3.43L14.69,8H21C22.11,8 23,8.9 23,10V10.09L23,12C23,12.26 22.95,12.5 22.86,12.73L19.84,19.78C19.54,20.5 18.83,21 18,21H9M9,19H18.03L21,12V10H12.21L13.34,4.68L9,9.03V19Z" /></g><g id="thumbs-up-down"><path d="M22.5,10.5H15.75C15.13,10.5 14.6,10.88 14.37,11.41L12.11,16.7C12.04,16.87 12,17.06 12,17.25V18.5A1,1 0 0,0 13,19.5H18.18L17.5,22.68V22.92C17.5,23.23 17.63,23.5 17.83,23.72L18.62,24.5L23.56,19.56C23.83,19.29 24,18.91 24,18.5V12A1.5,1.5 0 0,0 22.5,10.5M12,6.5A1,1 0 0,0 11,5.5H5.82L6.5,2.32V2.09C6.5,1.78 6.37,1.5 6.17,1.29L5.38,0.5L0.44,5.44C0.17,5.71 0,6.09 0,6.5V13A1.5,1.5 0 0,0 1.5,14.5H8.25C8.87,14.5 9.4,14.12 9.63,13.59L11.89,8.3C11.96,8.13 12,7.94 12,7.75V6.5Z" /></g><g id="ticket"><path d="M15.58,16.8L12,14.5L8.42,16.8L9.5,12.68L6.21,10L10.46,9.74L12,5.8L13.54,9.74L17.79,10L14.5,12.68M20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12Z" /></g><g id="ticket-account"><path d="M20,12A2,2 0 0,0 22,14V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V14C3.11,14 4,13.1 4,12A2,2 0 0,0 2,10V6C2,4.89 2.9,4 4,4H20A2,2 0 0,1 22,6V10A2,2 0 0,0 20,12M16.5,16.25C16.5,14.75 13.5,14 12,14C10.5,14 7.5,14.75 7.5,16.25V17H16.5V16.25M12,12.25A2.25,2.25 0 0,0 14.25,10A2.25,2.25 0 0,0 12,7.75A2.25,2.25 0 0,0 9.75,10A2.25,2.25 0 0,0 12,12.25Z" /></g><g id="ticket-confirmation"><path d="M13,8.5H11V6.5H13V8.5M13,13H11V11H13V13M13,17.5H11V15.5H13V17.5M22,10V6C22,4.89 21.1,4 20,4H4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12A2,2 0 0,1 22,10Z" /></g><g id="ticket-percent"><path d="M4,4A2,2 0 0,0 2,6V10C3.11,10 4,10.9 4,12A2,2 0 0,1 2,14V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V14A2,2 0 0,1 20,12C20,10.89 20.9,10 22,10V6C22,4.89 21.1,4 20,4H4M15.5,7L17,8.5L8.5,17L7,15.5L15.5,7M8.81,7.04C9.79,7.04 10.58,7.83 10.58,8.81A1.77,1.77 0 0,1 8.81,10.58C7.83,10.58 7.04,9.79 7.04,8.81A1.77,1.77 0 0,1 8.81,7.04M15.19,13.42C16.17,13.42 16.96,14.21 16.96,15.19A1.77,1.77 0 0,1 15.19,16.96C14.21,16.96 13.42,16.17 13.42,15.19A1.77,1.77 0 0,1 15.19,13.42Z" /></g><g id="tie"><path d="M6,2L10,6L7,17L12,22L17,17L14,6L18,2Z" /></g><g id="tilde"><path d="M2,15C2,15 2,9 8,9C12,9 12.5,12.5 15.5,12.5C19.5,12.5 19.5,9 19.5,9H22C22,9 22,15 16,15C12,15 10.5,11.5 8.5,11.5C4.5,11.5 4.5,15 4.5,15H2" /></g><g id="timelapse"><path d="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M16.24,7.76C15.07,6.58 13.53,6 12,6V12L7.76,16.24C10.1,18.58 13.9,18.58 16.24,16.24C18.59,13.9 18.59,10.1 16.24,7.76Z" /></g><g id="timer"><path d="M12,20A7,7 0 0,1 5,13A7,7 0 0,1 12,6A7,7 0 0,1 19,13A7,7 0 0,1 12,20M19.03,7.39L20.45,5.97C20,5.46 19.55,5 19.04,4.56L17.62,6C16.07,4.74 14.12,4 12,4A9,9 0 0,0 3,13A9,9 0 0,0 12,22C17,22 21,17.97 21,13C21,10.88 20.26,8.93 19.03,7.39M11,14H13V8H11M15,1H9V3H15V1Z" /></g><g id="timer-10"><path d="M12.9,13.22C12.9,13.82 12.86,14.33 12.78,14.75C12.7,15.17 12.58,15.5 12.42,15.77C12.26,16.03 12.06,16.22 11.83,16.34C11.6,16.46 11.32,16.5 11,16.5C10.71,16.5 10.43,16.46 10.19,16.34C9.95,16.22 9.75,16.03 9.59,15.77C9.43,15.5 9.3,15.17 9.21,14.75C9.12,14.33 9.08,13.82 9.08,13.22V10.72C9.08,10.12 9.12,9.61 9.21,9.2C9.3,8.79 9.42,8.46 9.59,8.2C9.75,7.95 9.95,7.77 10.19,7.65C10.43,7.54 10.7,7.5 11,7.5C11.31,7.5 11.58,7.54 11.81,7.65C12.05,7.76 12.25,7.94 12.41,8.2C12.57,8.45 12.7,8.78 12.78,9.19C12.86,9.6 12.91,10.11 12.91,10.71V13.22M13.82,7.05C13.5,6.65 13.07,6.35 12.59,6.17C12.12,6 11.58,5.9 11,5.9C10.42,5.9 9.89,6 9.41,6.17C8.93,6.35 8.5,6.64 8.18,7.05C7.84,7.46 7.58,8 7.39,8.64C7.21,9.29 7.11,10.09 7.11,11.03V12.95C7.11,13.89 7.2,14.69 7.39,15.34C7.58,16 7.84,16.53 8.19,16.94C8.53,17.35 8.94,17.65 9.42,17.83C9.9,18 10.43,18.11 11,18.11C11.6,18.11 12.13,18 12.6,17.83C13.08,17.65 13.5,17.35 13.82,16.94C14.16,16.53 14.42,16 14.6,15.34C14.78,14.69 14.88,13.89 14.88,12.95V11.03C14.88,10.09 14.79,9.29 14.6,8.64C14.42,8 14.16,7.45 13.82,7.05M23.78,14.37C23.64,14.09 23.43,13.84 23.15,13.63C22.87,13.42 22.54,13.24 22.14,13.1C21.74,12.96 21.29,12.83 20.79,12.72C20.44,12.65 20.15,12.57 19.92,12.5C19.69,12.41 19.5,12.33 19.37,12.24C19.23,12.15 19.14,12.05 19.09,11.94C19.04,11.83 19,11.7 19,11.55C19,11.41 19.04,11.27 19.1,11.14C19.16,11 19.25,10.89 19.37,10.8C19.5,10.7 19.64,10.62 19.82,10.56C20,10.5 20.22,10.47 20.46,10.47C20.71,10.47 20.93,10.5 21.12,10.58C21.31,10.65 21.47,10.75 21.6,10.87C21.73,11 21.82,11.13 21.89,11.29C21.95,11.45 22,11.61 22,11.78H23.94C23.94,11.39 23.86,11.03 23.7,10.69C23.54,10.35 23.31,10.06 23,9.81C22.71,9.56 22.35,9.37 21.92,9.22C21.5,9.07 21,9 20.46,9C19.95,9 19.5,9.07 19.07,9.21C18.66,9.35 18.3,9.54 18,9.78C17.72,10 17.5,10.3 17.34,10.62C17.18,10.94 17.11,11.27 17.11,11.63C17.11,12 17.19,12.32 17.34,12.59C17.5,12.87 17.7,13.11 18,13.32C18.25,13.53 18.58,13.7 18.96,13.85C19.34,14 19.77,14.11 20.23,14.21C20.62,14.29 20.94,14.38 21.18,14.47C21.42,14.56 21.61,14.66 21.75,14.76C21.88,14.86 21.97,15 22,15.1C22.07,15.22 22.09,15.35 22.09,15.5C22.09,15.81 21.96,16.06 21.69,16.26C21.42,16.46 21.03,16.55 20.5,16.55C20.3,16.55 20.09,16.53 19.88,16.47C19.67,16.42 19.5,16.34 19.32,16.23C19.15,16.12 19,15.97 18.91,15.79C18.8,15.61 18.74,15.38 18.73,15.12H16.84C16.84,15.5 16.92,15.83 17.08,16.17C17.24,16.5 17.47,16.82 17.78,17.1C18.09,17.37 18.47,17.59 18.93,17.76C19.39,17.93 19.91,18 20.5,18C21.04,18 21.5,17.95 21.95,17.82C22.38,17.69 22.75,17.5 23.06,17.28C23.37,17.05 23.6,16.77 23.77,16.45C23.94,16.13 24,15.78 24,15.39C24,15 23.93,14.65 23.78,14.37M0,7.72V9.4L3,8.4V18H5V6H4.75L0,7.72Z" /></g><g id="timer-3"><path d="M20.87,14.37C20.73,14.09 20.5,13.84 20.24,13.63C19.96,13.42 19.63,13.24 19.23,13.1C18.83,12.96 18.38,12.83 17.88,12.72C17.53,12.65 17.24,12.57 17,12.5C16.78,12.41 16.6,12.33 16.46,12.24C16.32,12.15 16.23,12.05 16.18,11.94C16.13,11.83 16.1,11.7 16.1,11.55C16.1,11.4 16.13,11.27 16.19,11.14C16.25,11 16.34,10.89 16.46,10.8C16.58,10.7 16.73,10.62 16.91,10.56C17.09,10.5 17.31,10.47 17.55,10.47C17.8,10.47 18,10.5 18.21,10.58C18.4,10.65 18.56,10.75 18.69,10.87C18.82,11 18.91,11.13 19,11.29C19.04,11.45 19.08,11.61 19.08,11.78H21.03C21.03,11.39 20.95,11.03 20.79,10.69C20.63,10.35 20.4,10.06 20.1,9.81C19.8,9.56 19.44,9.37 19,9.22C18.58,9.07 18.09,9 17.55,9C17.04,9 16.57,9.07 16.16,9.21C15.75,9.35 15.39,9.54 15.1,9.78C14.81,10 14.59,10.3 14.43,10.62C14.27,10.94 14.2,11.27 14.2,11.63C14.2,12 14.28,12.31 14.43,12.59C14.58,12.87 14.8,13.11 15.07,13.32C15.34,13.53 15.67,13.7 16.05,13.85C16.43,14 16.86,14.11 17.32,14.21C17.71,14.29 18.03,14.38 18.27,14.47C18.5,14.56 18.7,14.66 18.84,14.76C18.97,14.86 19.06,15 19.11,15.1C19.16,15.22 19.18,15.35 19.18,15.5C19.18,15.81 19.05,16.06 18.78,16.26C18.5,16.46 18.12,16.55 17.61,16.55C17.39,16.55 17.18,16.53 16.97,16.47C16.76,16.42 16.57,16.34 16.41,16.23C16.24,16.12 16.11,15.97 16,15.79C15.89,15.61 15.83,15.38 15.82,15.12H13.93C13.93,15.5 14,15.83 14.17,16.17C14.33,16.5 14.56,16.82 14.87,17.1C15.18,17.37 15.56,17.59 16,17.76C16.5,17.93 17,18 17.6,18C18.13,18 18.61,17.95 19.04,17.82C19.47,17.69 19.84,17.5 20.15,17.28C20.46,17.05 20.69,16.77 20.86,16.45C21.03,16.13 21.11,15.78 21.11,15.39C21.09,15 21,14.65 20.87,14.37M11.61,12.97C11.45,12.73 11.25,12.5 11,12.32C10.74,12.13 10.43,11.97 10.06,11.84C10.36,11.7 10.63,11.54 10.86,11.34C11.09,11.14 11.28,10.93 11.43,10.7C11.58,10.47 11.7,10.24 11.77,10C11.85,9.75 11.88,9.5 11.88,9.26C11.88,8.71 11.79,8.22 11.6,7.8C11.42,7.38 11.16,7.03 10.82,6.74C10.5,6.46 10.09,6.24 9.62,6.1C9.17,5.97 8.65,5.9 8.09,5.9C7.54,5.9 7.03,6 6.57,6.14C6.1,6.31 5.7,6.54 5.37,6.83C5.04,7.12 4.77,7.46 4.59,7.86C4.39,8.25 4.3,8.69 4.3,9.15H6.28C6.28,8.89 6.33,8.66 6.42,8.46C6.5,8.26 6.64,8.08 6.8,7.94C6.97,7.8 7.16,7.69 7.38,7.61C7.6,7.53 7.84,7.5 8.11,7.5C8.72,7.5 9.17,7.65 9.47,7.96C9.77,8.27 9.91,8.71 9.91,9.28C9.91,9.55 9.87,9.8 9.79,10C9.71,10.24 9.58,10.43 9.41,10.59C9.24,10.75 9.03,10.87 8.78,10.96C8.53,11.05 8.23,11.09 7.89,11.09H6.72V12.66H7.9C8.24,12.66 8.54,12.7 8.81,12.77C9.08,12.85 9.31,12.96 9.5,13.12C9.69,13.28 9.84,13.5 9.94,13.73C10.04,13.97 10.1,14.27 10.1,14.6C10.1,15.22 9.92,15.69 9.57,16C9.22,16.35 8.73,16.5 8.12,16.5C7.83,16.5 7.56,16.47 7.32,16.38C7.08,16.3 6.88,16.18 6.71,16C6.54,15.86 6.41,15.68 6.32,15.46C6.23,15.24 6.18,15 6.18,14.74H4.19C4.19,15.29 4.3,15.77 4.5,16.19C4.72,16.61 5,16.96 5.37,17.24C5.73,17.5 6.14,17.73 6.61,17.87C7.08,18 7.57,18.08 8.09,18.08C8.66,18.08 9.18,18 9.67,17.85C10.16,17.7 10.58,17.47 10.93,17.17C11.29,16.87 11.57,16.5 11.77,16.07C11.97,15.64 12.07,15.14 12.07,14.59C12.07,14.3 12.03,14 11.96,13.73C11.88,13.5 11.77,13.22 11.61,12.97Z" /></g><g id="timer-off"><path d="M12,20A7,7 0 0,1 5,13C5,11.72 5.35,10.5 5.95,9.5L15.5,19.04C14.5,19.65 13.28,20 12,20M3,4L1.75,5.27L4.5,8.03C3.55,9.45 3,11.16 3,13A9,9 0 0,0 12,22C13.84,22 15.55,21.45 17,20.5L19.5,23L20.75,21.73L13.04,14L3,4M11,9.44L13,11.44V8H11M15,1H9V3H15M19.04,4.55L17.62,5.97C16.07,4.74 14.12,4 12,4C10.17,4 8.47,4.55 7.05,5.5L8.5,6.94C9.53,6.35 10.73,6 12,6A7,7 0 0,1 19,13C19,14.27 18.65,15.47 18.06,16.5L19.5,17.94C20.45,16.53 21,14.83 21,13C21,10.88 20.26,8.93 19.03,7.39L20.45,5.97L19.04,4.55Z" /></g><g id="timer-sand"><path d="M20,2V4H18V8.41L14.41,12L18,15.59V20H20V22H4V20H6V15.59L9.59,12L6,8.41V4H4V2H20M16,16.41L13,13.41V10.59L16,7.59V4H8V7.59L11,10.59V13.41L8,16.41V17H10L12,15L14,17H16V16.41M12,9L10,7H14L12,9Z" /></g><g id="timer-sand-empty"><path d="M20,2V4H18V8.41L14.41,12L18,15.59V20H20V22H4V20H6V15.59L9.59,12L6,8.41V4H4V2H20M16,16.41L13,13.41V10.59L16,7.59V4H8V7.59L11,10.59V13.41L8,16.41V20H16V16.41Z" /></g><g id="timetable"><path d="M14,12H15.5V14.82L17.94,16.23L17.19,17.53L14,15.69V12M4,2H18A2,2 0 0,1 20,4V10.1C21.24,11.36 22,13.09 22,15A7,7 0 0,1 15,22C13.09,22 11.36,21.24 10.1,20H4A2,2 0 0,1 2,18V4A2,2 0 0,1 4,2M4,15V18H8.67C8.24,17.09 8,16.07 8,15H4M4,8H10V5H4V8M18,8V5H12V8H18M4,13H8.29C8.63,11.85 9.26,10.82 10.1,10H4V13M15,10.15A4.85,4.85 0 0,0 10.15,15C10.15,17.68 12.32,19.85 15,19.85A4.85,4.85 0 0,0 19.85,15C19.85,12.32 17.68,10.15 15,10.15Z" /></g><g id="toggle-switch"><path d="M17,7A5,5 0 0,1 22,12A5,5 0 0,1 17,17A5,5 0 0,1 12,12A5,5 0 0,1 17,7M4,14A2,2 0 0,1 2,12A2,2 0 0,1 4,10H10V14H4Z" /></g><g id="toggle-switch-off"><path d="M7,7A5,5 0 0,1 12,12A5,5 0 0,1 7,17A5,5 0 0,1 2,12A5,5 0 0,1 7,7M20,14H14V10H20A2,2 0 0,1 22,12A2,2 0 0,1 20,14M7,9A3,3 0 0,0 4,12A3,3 0 0,0 7,15A3,3 0 0,0 10,12A3,3 0 0,0 7,9Z" /></g><g id="tooltip"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2Z" /></g><g id="tooltip-edit"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M18,14V12H12.5L10.5,14H18M6,14H8.5L15.35,7.12C15.55,6.93 15.55,6.61 15.35,6.41L13.59,4.65C13.39,4.45 13.07,4.45 12.88,4.65L6,11.53V14Z" /></g><g id="tooltip-image"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M19,15V7L15,11L13,9L7,15H19M7,5A2,2 0 0,0 5,7A2,2 0 0,0 7,9A2,2 0 0,0 9,7A2,2 0 0,0 7,5Z" /></g><g id="tooltip-outline"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4Z" /></g><g id="tooltip-outline-plus"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M4,4V16H8.83L12,19.17L15.17,16H20V4H4M11,6H13V9H16V11H13V14H11V11H8V9H11V6Z" /></g><g id="tooltip-text"><path d="M4,2H20A2,2 0 0,1 22,4V16A2,2 0 0,1 20,18H16L12,22L8,18H4A2,2 0 0,1 2,16V4A2,2 0 0,1 4,2M5,5V7H19V5H5M5,9V11H15V9H5M5,13V15H17V13H5Z" /></g><g id="tooth"><path d="M7,2C4,2 2,5 2,8C2,10.11 3,13 4,14C5,15 6,22 8,22C12.54,22 10,15 12,15C14,15 11.46,22 16,22C18,22 19,15 20,14C21,13 22,10.11 22,8C22,5 20,2 17,2C14,2 14,3 12,3C10,3 10,2 7,2M7,4C9,4 10,5 12,5C14,5 15,4 17,4C18.67,4 20,6 20,8C20,9.75 19.14,12.11 18.19,13.06C17.33,13.92 16.06,19.94 15.5,19.94C15.29,19.94 15,18.88 15,17.59C15,15.55 14.43,13 12,13C9.57,13 9,15.55 9,17.59C9,18.88 8.71,19.94 8.5,19.94C7.94,19.94 6.67,13.92 5.81,13.06C4.86,12.11 4,9.75 4,8C4,6 5.33,4 7,4Z" /></g><g id="tor"><path d="M12,14C11,14 9,15 9,16C9,18 12,18 12,18V17A1,1 0 0,1 11,16A1,1 0 0,1 12,15V14M12,19C12,19 8,18.5 8,16.5C8,13.5 11,12.75 12,12.75V11.5C11,11.5 7,13 7,16C7,20 12,20 12,20V19M10.07,7.03L11.26,7.56C11.69,5.12 12.84,3.5 12.84,3.5C12.41,4.53 12.13,5.38 11.95,6.05C13.16,3.55 15.61,2 15.61,2C14.43,3.18 13.56,4.46 12.97,5.53C14.55,3.85 16.74,2.75 16.74,2.75C14.05,4.47 12.84,7.2 12.54,7.96L13.09,8.04C13.09,8.56 13.09,9.04 13.34,9.42C14.1,11.31 18,11.47 18,16C18,20.53 13.97,22 11.83,22C9.69,22 5,21.03 5,16C5,10.97 9.95,10.93 10.83,8.92C10.95,8.54 10.07,7.03 10.07,7.03Z" /></g><g id="tower-beach"><path d="M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L18,1V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z" /></g><g id="tower-fire"><path d="M17,4V8H18V10H17.64L21,23H18.93L18.37,20.83L12,17.15L5.63,20.83L5.07,23H3L6.36,10H6V8H7V4H6V3L12,1L18,3V4H17M7.28,14.43L6.33,18.12L10,16L7.28,14.43M15.57,10H8.43L7.8,12.42L12,14.85L16.2,12.42L15.57,10M17.67,18.12L16.72,14.43L14,16L17.67,18.12Z" /></g><g id="traffic-light"><path d="M12,9A2,2 0 0,1 10,7C10,5.89 10.9,5 12,5C13.11,5 14,5.89 14,7A2,2 0 0,1 12,9M12,14A2,2 0 0,1 10,12C10,10.89 10.9,10 12,10C13.11,10 14,10.89 14,12A2,2 0 0,1 12,14M12,19A2,2 0 0,1 10,17C10,15.89 10.9,15 12,15C13.11,15 14,15.89 14,17A2,2 0 0,1 12,19M20,10H17V8.86C18.72,8.41 20,6.86 20,5H17V4A1,1 0 0,0 16,3H8A1,1 0 0,0 7,4V5H4C4,6.86 5.28,8.41 7,8.86V10H4C4,11.86 5.28,13.41 7,13.86V15H4C4,16.86 5.28,18.41 7,18.86V20A1,1 0 0,0 8,21H16A1,1 0 0,0 17,20V18.86C18.72,18.41 20,16.86 20,15H17V13.86C18.72,13.41 20,11.86 20,10Z" /></g><g id="train"><path d="M18,10H6V5H18M12,17C10.89,17 10,16.1 10,15C10,13.89 10.89,13 12,13A2,2 0 0,1 14,15A2,2 0 0,1 12,17M4,15.5A3.5,3.5 0 0,0 7.5,19L6,20.5V21H18V20.5L16.5,19A3.5,3.5 0 0,0 20,15.5V5C20,1.5 16.42,1 12,1C7.58,1 4,1.5 4,5V15.5Z" /></g><g id="tram"><path d="M17,18C16.4,18 16,17.6 16,17C16,16.4 16.4,16 17,16C17.6,16 18,16.4 18,17C18,17.6 17.6,18 17,18M6.7,10.7L7,7.3C7,6.6 7.6,6 8.3,6H15.6C16.4,6 17,6.6 17,7.3L17.3,10.6C17.3,11.3 16.7,11.9 16,11.9H8C7.3,12 6.7,11.4 6.7,10.7M7,18C6.4,18 6,17.6 6,17C6,16.4 6.4,16 7,16C7.6,16 8,16.4 8,17C8,17.6 7.6,18 7,18M19,6A2,2 0 0,0 17,4H15A2,2 0 0,0 13,2H11A2,2 0 0,0 9,4H7A2,2 0 0,0 5,6L4,18A2,2 0 0,0 6,20H8L7,22H17.1L16.1,20H18A2,2 0 0,0 20,18L19,6Z" /></g><g id="transcribe"><path d="M20,5A2,2 0 0,1 22,7V17A2,2 0 0,1 20,19H4C2.89,19 2,18.1 2,17V7C2,5.89 2.89,5 4,5H20M18,17V15H12.5L10.5,17H18M6,17H8.5L15.35,10.12C15.55,9.93 15.55,9.61 15.35,9.41L13.59,7.65C13.39,7.45 13.07,7.45 12.88,7.65L6,14.53V17Z" /></g><g id="transcribe-close"><path d="M12,23L8,19H16L12,23M20,3A2,2 0 0,1 22,5V15A2,2 0 0,1 20,17H4A2,2 0 0,1 2,15V5A2,2 0 0,1 4,3H20M18,15V13H12.5L10.5,15H18M6,15H8.5L15.35,8.12C15.55,7.93 15.55,7.61 15.35,7.42L13.59,5.65C13.39,5.45 13.07,5.45 12.88,5.65L6,12.53V15Z" /></g><g id="transfer"><path d="M3,8H5V16H3V8M7,8H9V16H7V8M11,8H13V16H11V8M15,19.25V4.75L22.25,12L15,19.25Z" /></g><g id="transit-transfer"><path d="M16.5,15.5H22V17H16.5V18.75L14,16.25L16.5,13.75V15.5M19.5,19.75V18L22,20.5L19.5,23V21.25H14V19.75H19.5M9.5,5.5A2,2 0 0,1 7.5,3.5A2,2 0 0,1 9.5,1.5A2,2 0 0,1 11.5,3.5A2,2 0 0,1 9.5,5.5M5.75,8.9L4,9.65V13H2V8.3L7.25,6.15C7.5,6.05 7.75,6 8,6C8.7,6 9.35,6.35 9.7,6.95L10.65,8.55C11.55,10 13.15,11 15,11V13C12.8,13 10.85,12 9.55,10.4L8.95,13.4L11,15.45V23H9V17L6.85,15L5.1,23H3L5.75,8.9Z" /></g><g id="translate"><path d="M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z" /></g><g id="treasure-chest"><path d="M5,4H19A3,3 0 0,1 22,7V11H15V10H9V11H2V7A3,3 0 0,1 5,4M11,11H13V13H11V11M2,12H9V13L11,15H13L15,13V12H22V20H2V12Z" /></g><g id="tree"><path d="M11,21V16.74C10.53,16.91 10.03,17 9.5,17C7,17 5,15 5,12.5C5,11.23 5.5,10.09 6.36,9.27C6.13,8.73 6,8.13 6,7.5C6,5 8,3 10.5,3C12.06,3 13.44,3.8 14.25,5C14.33,5 14.41,5 14.5,5A5.5,5.5 0 0,1 20,10.5A5.5,5.5 0 0,1 14.5,16C14,16 13.5,15.93 13,15.79V21H11Z" /></g><g id="trello"><path d="M4,3H20A1,1 0 0,1 21,4V20A1,1 0 0,1 20,21H4A1,1 0 0,1 3,20V4A1,1 0 0,1 4,3M5.5,5A0.5,0.5 0 0,0 5,5.5V17.5A0.5,0.5 0 0,0 5.5,18H10.5A0.5,0.5 0 0,0 11,17.5V5.5A0.5,0.5 0 0,0 10.5,5H5.5M13.5,5A0.5,0.5 0 0,0 13,5.5V11.5A0.5,0.5 0 0,0 13.5,12H18.5A0.5,0.5 0 0,0 19,11.5V5.5A0.5,0.5 0 0,0 18.5,5H13.5Z" /></g><g id="trending-down"><path d="M16,18L18.29,15.71L13.41,10.83L9.41,14.83L2,7.41L3.41,6L9.41,12L13.41,8L19.71,14.29L22,12V18H16Z" /></g><g id="trending-neutral"><path d="M22,12L18,8V11H3V13H18V16L22,12Z" /></g><g id="trending-up"><path d="M16,6L18.29,8.29L13.41,13.17L9.41,9.17L2,16.59L3.41,18L9.41,12L13.41,16L19.71,9.71L22,12V6H16Z" /></g><g id="triangle"><path d="M1,21H23L12,2" /></g><g id="triangle-outline"><path d="M12,2L1,21H23M12,6L19.53,19H4.47" /></g><g id="trophy"><path d="M20.2,2H19.5H18C17.1,2 16,3 16,4H8C8,3 6.9,2 6,2H4.5H3.8H2V11C2,12 3,13 4,13H6.2C6.6,15 7.9,16.7 11,17V19.1C8.8,19.3 8,20.4 8,21.7V22H16V21.7C16,20.4 15.2,19.3 13,19.1V17C16.1,16.7 17.4,15 17.8,13H20C21,13 22,12 22,11V2H20.2M4,11V4H6V6V11C5.1,11 4.3,11 4,11M20,11C19.7,11 18.9,11 18,11V6V4H20V11Z" /></g><g id="trophy-award"><path d="M15.2,10.7L16.6,16L12,12.2L7.4,16L8.8,10.8L4.6,7.3L10,7L12,2L14,7L19.4,7.3L15.2,10.7M14,19.1H13V16L12,15L11,16V19.1H10A2,2 0 0,0 8,21.1V22.1H16V21.1A2,2 0 0,0 14,19.1Z" /></g><g id="trophy-outline"><path d="M2,2V11C2,12 3,13 4,13H6.2C6.6,15 7.9,16.7 11,17V19.1C8.8,19.3 8,20.4 8,21.7V22H16V21.7C16,20.4 15.2,19.3 13,19.1V17C16.1,16.7 17.4,15 17.8,13H20C21,13 22,12 22,11V2H18C17.1,2 16,3 16,4H8C8,3 6.9,2 6,2H2M4,4H6V6L6,11H4V4M18,4H20V11H18V6L18,4M8,6H16V11.5C16,13.43 15.42,15 12,15C8.59,15 8,13.43 8,11.5V6Z" /></g><g id="trophy-variant"><path d="M20.2,4H20H17V2H7V4H4.5H3.8H2V11C2,12 3,13 4,13H7.2C7.6,14.9 8.6,16.6 11,16.9V19C8,19.2 8,20.3 8,21.6V22H16V21.7C16,20.4 16,19.3 13,19.1V17C15.5,16.7 16.5,15 16.8,13.1H20C21,13.1 22,12.1 22,11.1V4H20.2M4,11V6H7V8V11C5.6,11 4.4,11 4,11M20,11C19.6,11 18.4,11 17,11V6H18H20V11Z" /></g><g id="trophy-variant-outline"><path d="M7,2V4H2V11C2,12 3,13 4,13H7.2C7.6,14.9 8.6,16.6 11,16.9V19C8,19.2 8,20.3 8,21.6V22H16V21.7C16,20.4 16,19.3 13,19.1V17C15.5,16.7 16.5,15 16.8,13.1H20C21,13.1 22,12.1 22,11.1V4H17V2H7M9,4H15V12A3,3 0 0,1 12,15C10,15 9,13.66 9,12V4M4,6H7V8L7,11H4V6M17,6H20V11H17V6Z" /></g><g id="truck"><path d="M18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5M19.5,9.5L21.46,12H17V9.5M6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5M20,8H17V4H3C1.89,4 1,4.89 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8Z" /></g><g id="truck-delivery"><path d="M3,4A2,2 0 0,0 1,6V17H3A3,3 0 0,0 6,20A3,3 0 0,0 9,17H15A3,3 0 0,0 18,20A3,3 0 0,0 21,17H23V12L20,8H17V4M10,6L14,10L10,14V11H4V9H10M17,9.5H19.5L21.47,12H17M6,15.5A1.5,1.5 0 0,1 7.5,17A1.5,1.5 0 0,1 6,18.5A1.5,1.5 0 0,1 4.5,17A1.5,1.5 0 0,1 6,15.5M18,15.5A1.5,1.5 0 0,1 19.5,17A1.5,1.5 0 0,1 18,18.5A1.5,1.5 0 0,1 16.5,17A1.5,1.5 0 0,1 18,15.5Z" /></g><g id="truck-trailer"><path d="M22,15V17H10A3,3 0 0,1 7,20A3,3 0 0,1 4,17H2V6A2,2 0 0,1 4,4H17A2,2 0 0,1 19,6V15H22M7,16A1,1 0 0,0 6,17A1,1 0 0,0 7,18A1,1 0 0,0 8,17A1,1 0 0,0 7,16Z" /></g><g id="tshirt-crew"><path d="M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10.34,5 12,5C13.66,5 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15.8,5.63 15.43,5.94 15,6.2C14.16,6.7 13.13,7 12,7C10.3,7 8.79,6.32 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z" /></g><g id="tshirt-v"><path d="M16,21H8A1,1 0 0,1 7,20V12.07L5.7,13.12C5.31,13.5 4.68,13.5 4.29,13.12L1.46,10.29C1.07,9.9 1.07,9.27 1.46,8.88L7.34,3H9C9,4.1 10,6 12,7.25C14,6 15,4.1 15,3H16.66L22.54,8.88C22.93,9.27 22.93,9.9 22.54,10.29L19.71,13.12C19.32,13.5 18.69,13.5 18.3,13.12L17,12.07V20A1,1 0 0,1 16,21M20.42,9.58L16.11,5.28C15,7 14,8.25 12,9.25C10,8.25 9,7 7.89,5.28L3.58,9.58L5,11L8,9H9V19H15V9H16L19,11L20.42,9.58Z" /></g><g id="tumblr"><path d="M16,11H13V14.9C13,15.63 13.14,16 14.1,16H16V19C16,19 14.97,19.1 13.9,19.1C11.25,19.1 10,17.5 10,15.7V11H8V8.2C10.41,8 10.62,6.16 10.8,5H13V8H16M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="tumblr-reblog"><path d="M3.75,17L8,12.75V16H18V11.5L20,9.5V16A2,2 0 0,1 18,18H8V21.25L3.75,17M20.25,7L16,11.25V8H6V12.5L4,14.5V8A2,2 0 0,1 6,6H16V2.75L20.25,7Z" /></g><g id="tune"><path d="M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z" /></g><g id="tune-vertical"><path d="M5,3V12H3V14H5V21H7V14H9V12H7V3M11,3V8H9V10H11V21H13V10H15V8H13V3M17,3V14H15V16H17V21H19V16H21V14H19V3" /></g><g id="twitch"><path d="M4,2H22V14L17,19H13L10,22H7V19H2V6L4,2M20,13V4H6V16H9V19L12,16H17L20,13M15,7H17V12H15V7M12,7V12H10V7H12Z" /></g><g id="twitter"><path d="M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.7,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z" /></g><g id="twitter-box"><path d="M17.71,9.33C17.64,13.95 14.69,17.11 10.28,17.31C8.46,17.39 7.15,16.81 6,16.08C7.34,16.29 9,15.76 9.9,15C8.58,14.86 7.81,14.19 7.44,13.12C7.82,13.18 8.22,13.16 8.58,13.09C7.39,12.69 6.54,11.95 6.5,10.41C6.83,10.57 7.18,10.71 7.64,10.74C6.75,10.23 6.1,8.38 6.85,7.16C8.17,8.61 9.76,9.79 12.37,9.95C11.71,7.15 15.42,5.63 16.97,7.5C17.63,7.38 18.16,7.14 18.68,6.86C18.47,7.5 18.06,7.97 17.56,8.33C18.1,8.26 18.59,8.13 19,7.92C18.75,8.45 18.19,8.93 17.71,9.33M20,2H4A2,2 0 0,0 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z" /></g><g id="twitter-circle"><path d="M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z" /></g><g id="twitter-retweet"><path d="M6,5.75L10.25,10H7V16H13.5L15.5,18H7A2,2 0 0,1 5,16V10H1.75L6,5.75M18,18.25L13.75,14H17V8H10.5L8.5,6H17A2,2 0 0,1 19,8V14H22.25L18,18.25Z" /></g><g id="ubuntu"><path d="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M14.34,7.74C14.92,8.07 15.65,7.87 16,7.3C16.31,6.73 16.12,6 15.54,5.66C14.97,5.33 14.23,5.5 13.9,6.1C13.57,6.67 13.77,7.41 14.34,7.74M11.88,15.5C11.35,15.5 10.85,15.39 10.41,15.18L9.57,16.68C10.27,17 11.05,17.22 11.88,17.22C12.37,17.22 12.83,17.15 13.28,17.03C13.36,16.54 13.64,16.1 14.1,15.84C14.56,15.57 15.08,15.55 15.54,15.72C16.43,14.85 17,13.66 17.09,12.33L15.38,12.31C15.22,14.1 13.72,15.5 11.88,15.5M11.88,8.5C13.72,8.5 15.22,9.89 15.38,11.69L17.09,11.66C17,10.34 16.43,9.15 15.54,8.28C15.08,8.45 14.55,8.42 14.1,8.16C13.64,7.9 13.36,7.45 13.28,6.97C12.83,6.85 12.37,6.78 11.88,6.78C11.05,6.78 10.27,6.97 9.57,7.32L10.41,8.82C10.85,8.61 11.35,8.5 11.88,8.5M8.37,12C8.37,10.81 8.96,9.76 9.86,9.13L9,7.65C7.94,8.36 7.15,9.43 6.83,10.69C7.21,11 7.45,11.47 7.45,12C7.45,12.53 7.21,13 6.83,13.31C7.15,14.56 7.94,15.64 9,16.34L9.86,14.87C8.96,14.24 8.37,13.19 8.37,12M14.34,16.26C13.77,16.59 13.57,17.32 13.9,17.9C14.23,18.47 14.97,18.67 15.54,18.34C16.12,18 16.31,17.27 16,16.7C15.65,16.12 14.92,15.93 14.34,16.26M5.76,10.8C5.1,10.8 4.56,11.34 4.56,12C4.56,12.66 5.1,13.2 5.76,13.2C6.43,13.2 6.96,12.66 6.96,12C6.96,11.34 6.43,10.8 5.76,10.8Z" /></g><g id="umbraco"><path d="M8.6,8.6L7.17,8.38C6.5,11.67 6.46,14.24 7.61,15.5C8.6,16.61 11.89,16.61 11.89,16.61C11.89,16.61 15.29,16.61 16.28,15.5C17.43,14.24 17.38,11.67 16.72,8.38L15.29,8.6C15.29,8.6 16.54,13.88 14.69,14.69C13.81,15.07 11.89,15.07 11.89,15.07C11.89,15.07 10.08,15.07 9.2,14.69C7.35,13.88 8.6,8.6 8.6,8.6M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3Z" /></g><g id="umbrella"><path d="M12,2A9,9 0 0,0 3,11H11V19A1,1 0 0,1 10,20A1,1 0 0,1 9,19H7A3,3 0 0,0 10,22A3,3 0 0,0 13,19V11H21A9,9 0 0,0 12,2Z" /></g><g id="umbrella-outline"><path d="M12,4C15.09,4 17.82,6.04 18.7,9H5.3C6.18,6.03 8.9,4 12,4M12,2A9,9 0 0,0 3,11H11V19A1,1 0 0,1 10,20A1,1 0 0,1 9,19H7A3,3 0 0,0 10,22A3,3 0 0,0 13,19V11H21A9,9 0 0,0 12,2Z" /></g><g id="undo"><path d="M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z" /></g><g id="undo-variant"><path d="M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z" /></g><g id="unfold-less"><path d="M16.59,5.41L15.17,4L12,7.17L8.83,4L7.41,5.41L12,10M7.41,18.59L8.83,20L12,16.83L15.17,20L16.58,18.59L12,14L7.41,18.59Z" /></g><g id="unfold-more"><path d="M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z" /></g><g id="ungroup"><path d="M2,2H6V3H13V2H17V6H16V9H18V8H22V12H21V18H22V22H18V21H12V22H8V18H9V16H6V17H2V13H3V6H2V2M18,12V11H16V13H17V17H13V16H11V18H12V19H18V18H19V12H18M13,6V5H6V6H5V13H6V14H9V12H8V8H12V9H14V6H13M12,12H11V14H13V13H14V11H12V12Z" /></g><g id="unity"><path d="M9.11,17H6.5L1.59,12L6.5,7H9.11L10.42,4.74L17.21,3L19.08,9.74L17.77,12L19.08,14.26L17.21,21L10.42,19.26L9.11,17M9.25,16.75L14.38,18.13L11.42,13H5.5L9.25,16.75M16.12,17.13L17.5,12L16.12,6.87L13.15,12L16.12,17.13M9.25,7.25L5.5,11H11.42L14.38,5.87L9.25,7.25Z" /></g><g id="untappd"><path d="M14.41,4C14.41,4 14.94,4.39 14.97,4.71C14.97,4.81 14.73,4.85 14.68,4.93C14.62,5 14.7,5.15 14.65,5.21C14.59,5.26 14.5,5.26 14.41,5.41C14.33,5.56 12.07,10.09 11.73,10.63C11.59,11.03 11.47,12.46 11.37,12.66C11.26,12.85 6.34,19.84 6.16,20.05C5.67,20.63 4.31,20.3 3.28,19.56C2.3,18.86 1.74,17.7 2.11,17.16C2.27,16.93 7.15,9.92 7.29,9.75C7.44,9.58 8.75,9 9.07,8.71C9.47,8.22 12.96,4.54 13.07,4.42C13.18,4.3 13.15,4.2 13.18,4.13C13.22,4.06 13.38,4.08 13.43,4C13.5,3.93 13.39,3.71 13.5,3.68C13.59,3.64 13.96,3.67 14.41,4M10.85,4.44L11.74,5.37L10.26,6.94L9.46,5.37C9.38,5.22 9.28,5.22 9.22,5.17C9.17,5.11 9.24,4.97 9.19,4.89C9.13,4.81 8.9,4.83 8.9,4.73C8.9,4.62 9.05,4.28 9.5,3.96C9.5,3.96 10.06,3.6 10.37,3.68C10.47,3.71 10.43,3.95 10.5,4C10.54,4.1 10.7,4.08 10.73,4.15C10.77,4.21 10.73,4.32 10.85,4.44M21.92,17.15C22.29,17.81 21.53,19 20.5,19.7C19.5,20.39 18.21,20.54 17.83,20C17.66,19.78 12.67,12.82 12.56,12.62C12.45,12.43 12.32,11 12.18,10.59L12.15,10.55C12.45,10 13.07,8.77 13.73,7.47C14.3,8.06 14.75,8.56 14.88,8.72C15.21,9 16.53,9.58 16.68,9.75C16.82,9.92 21.78,16.91 21.92,17.15Z" /></g><g id="update"><path d="M21,10.12H14.22L16.96,7.3C14.23,4.6 9.81,4.5 7.08,7.2C4.35,9.91 4.35,14.28 7.08,17C9.81,19.7 14.23,19.7 16.96,17C18.32,15.65 19,14.08 19,12.1H21C21,14.08 20.12,16.65 18.36,18.39C14.85,21.87 9.15,21.87 5.64,18.39C2.14,14.92 2.11,9.28 5.62,5.81C9.13,2.34 14.76,2.34 18.27,5.81L21,3V10.12M12.5,8V12.25L16,14.33L15.28,15.54L11,13V8H12.5Z" /></g><g id="upload"><path d="M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z" /></g><g id="usb"><path d="M15,7V11H16V13H13V5H15L12,1L9,5H11V13H8V10.93C8.7,10.56 9.2,9.85 9.2,9C9.2,7.78 8.21,6.8 7,6.8C5.78,6.8 4.8,7.78 4.8,9C4.8,9.85 5.3,10.56 6,10.93V13A2,2 0 0,0 8,15H11V18.05C10.29,18.41 9.8,19.15 9.8,20A2.2,2.2 0 0,0 12,22.2A2.2,2.2 0 0,0 14.2,20C14.2,19.15 13.71,18.41 13,18.05V15H16A2,2 0 0,0 18,13V11H19V7H15Z" /></g><g id="vector-arrange-above"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C6.67,16 10.33,16 14,16C15.11,16 16,15.11 16,14C16,10.33 16,6.67 16,3C16,1.89 15.11,1 14,1H3M3,3H14V14H3V3M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18Z" /></g><g id="vector-arrange-below"><path d="M20,22C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C16.33,7 12.67,7 9,7C7.89,7 7,7.89 7,9C7,12.67 7,16.33 7,20C7,21.11 7.89,22 9,22H20M20,20H9V9H20V20M5,16V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5Z" /></g><g id="vector-circle"><path d="M9,2V4.06C6.72,4.92 4.92,6.72 4.05,9H2V15H4.06C4.92,17.28 6.72,19.09 9,19.95V22H15V19.94C17.28,19.08 19.09,17.28 19.95,15H22V9H19.94C19.08,6.72 17.28,4.92 15,4.05V2M11,4H13V6H11M9,6.25V8H15V6.25C16.18,6.86 17.14,7.82 17.75,9H16V15H17.75C17.14,16.18 16.18,17.14 15,17.75V16H9V17.75C7.82,17.14 6.86,16.18 6.25,15H8V9H6.25C6.86,7.82 7.82,6.86 9,6.25M4,11H6V13H4M18,11H20V13H18M11,18H13V20H11" /></g><g id="vector-circle-variant"><path d="M22,9H19.97C18.7,5.41 15.31,3 11.5,3A9,9 0 0,0 2.5,12C2.5,17 6.53,21 11.5,21C15.31,21 18.7,18.6 20,15H22M20,11V13H18V11M17.82,15C16.66,17.44 14.2,19 11.5,19C7.64,19 4.5,15.87 4.5,12C4.5,8.14 7.64,5 11.5,5C14.2,5 16.66,6.57 17.81,9H16V15" /></g><g id="vector-combine"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C4.33,16 7,16 7,16C7,16 7,18.67 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18.67,7 16,7 16,7C16,7 16,4.33 16,3C16,1.89 15.11,1 14,1H3M3,3H14C14,4.33 14,7 14,7H9C7.89,7 7,7.89 7,9V14C7,14 4.33,14 3,14V3M9,9H14V14H9V9M16,9C16,9 18.67,9 20,9V20H9C9,18.67 9,16 9,16H14C15.11,16 16,15.11 16,14V9Z" /></g><g id="vector-curve"><path d="M18.5,2A1.5,1.5 0 0,1 20,3.5A1.5,1.5 0 0,1 18.5,5C18.27,5 18.05,4.95 17.85,4.85L14.16,8.55L14.5,9C16.69,7.74 19.26,7 22,7L23,7.03V9.04L22,9C19.42,9 17,9.75 15,11.04A3.96,3.96 0 0,1 11.04,15C9.75,17 9,19.42 9,22L9.04,23H7.03L7,22C7,19.26 7.74,16.69 9,14.5L8.55,14.16L4.85,17.85C4.95,18.05 5,18.27 5,18.5A1.5,1.5 0 0,1 3.5,20A1.5,1.5 0 0,1 2,18.5A1.5,1.5 0 0,1 3.5,17C3.73,17 3.95,17.05 4.15,17.15L7.84,13.45C7.31,12.78 7,11.92 7,11A4,4 0 0,1 11,7C11.92,7 12.78,7.31 13.45,7.84L17.15,4.15C17.05,3.95 17,3.73 17,3.5A1.5,1.5 0 0,1 18.5,2M11,9A2,2 0 0,0 9,11A2,2 0 0,0 11,13A2,2 0 0,0 13,11A2,2 0 0,0 11,9Z" /></g><g id="vector-difference"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H5V14H3V3H14V5H16V3C16,1.89 15.11,1 14,1H3M9,7C7.89,7 7,7.89 7,9V11H9V9H11V7H9M13,7V9H14V10H16V7H13M18,7V9H20V20H9V18H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H18M14,12V14H12V16H14C15.11,16 16,15.11 16,14V12H14M7,13V16H10V14H9V13H7Z" /></g><g id="vector-difference-ab"><path d="M3,1C1.89,1 1,1.89 1,3V5H3V3H5V1H3M7,1V3H10V1H7M12,1V3H14V5H16V3C16,1.89 15.11,1 14,1H12M1,7V10H3V7H1M14,7C14,7 14,11.67 14,14C11.67,14 7,14 7,14C7,14 7,18 7,20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7C18,7 14,7 14,7M16,9H20V20H9V16H14C15.11,16 16,15.11 16,14V9M1,12V14C1,15.11 1.89,16 3,16H5V14H3V12H1Z" /></g><g id="vector-difference-ba"><path d="M20,22C21.11,22 22,21.11 22,20V18H20V20H18V22H20M16,22V20H13V22H16M11,22V20H9V18H7V20C7,21.11 7.89,22 9,22H11M22,16V13H20V16H22M9,16C9,16 9,11.33 9,9C11.33,9 16,9 16,9C16,9 16,5 16,3C16,1.89 15.11,1 14,1H3C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16C5,16 9,16 9,16M7,14H3V3H14V7H9C7.89,7 7,7.89 7,9V14M22,11V9C22,7.89 21.11,7 20,7H18V9H20V11H22Z" /></g><g id="vector-intersection"><path d="M3.14,1A2.14,2.14 0 0,0 1,3.14V5H3V3H5V1H3.14M7,1V3H10V1H7M12,1V3H14V5H16V3.14C16,1.96 15.04,1 13.86,1H12M1,7V10H3V7H1M9,7C7.89,7 7,7.89 7,9C7,11.33 7,16 7,16C7,16 11.57,16 13.86,16A2.14,2.14 0 0,0 16,13.86C16,11.57 16,7 16,7C16,7 11.33,7 9,7M18,7V9H20V11H22V9C22,7.89 21.11,7 20,7H18M9,9H14V14H9V9M1,12V13.86C1,15.04 1.96,16 3.14,16H5V14H3V12H1M20,13V16H22V13H20M7,18V20C7,21.11 7.89,22 9,22H11V20H9V18H7M20,18V20H18V22H20C21.11,22 22,21.11 22,20V18H20M13,20V22H16V20H13Z" /></g><g id="vector-line"><path d="M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5" /></g><g id="vector-point"><path d="M12,20L7,22L12,11L17,22L12,20M8,2H16V5H22V7H16V10H8V7H2V5H8V2M10,4V8H14V4H10Z" /></g><g id="vector-polygon"><path d="M2,2V8H4.28L5.57,16H4V22H10V20.06L15,20.05V22H21V16H19.17L20,9H22V3H16V6.53L14.8,8H9.59L8,5.82V2M4,4H6V6H4M18,5H20V7H18M6.31,8H7.11L9,10.59V14H15V10.91L16.57,9H18L17.16,16H15V18.06H10V16H7.6M11,10H13V12H11M6,18H8V20H6M17,18H19V20H17" /></g><g id="vector-polyline"><path d="M16,2V8H17.08L14.95,13H14.26L12,9.97V5H6V11H6.91L4.88,16H2V22H8V16H7.04L9.07,11H10.27L12,13.32V19H18V13H17.12L19.25,8H22V2M18,4H20V6H18M8,7H10V9H8M14,15H16V17H14M4,18H6V20H4" /></g><g id="vector-rectangle"><path d="M2,4H8V6H16V4H22V10H20V14H22V20H16V18H8V20H2V14H4V10H2V4M16,10V8H8V10H6V14H8V16H16V14H18V10H16M4,6V8H6V6H4M18,6V8H20V6H18M4,16V18H6V16H4M18,16V18H20V16H18Z" /></g><g id="vector-selection"><path d="M3,1H5V3H3V5H1V3A2,2 0 0,1 3,1M14,1A2,2 0 0,1 16,3V5H14V3H12V1H14M20,7A2,2 0 0,1 22,9V11H20V9H18V7H20M22,20A2,2 0 0,1 20,22H18V20H20V18H22V20M20,13H22V16H20V13M13,9V7H16V10H14V9H13M13,22V20H16V22H13M9,22A2,2 0 0,1 7,20V18H9V20H11V22H9M7,16V13H9V14H10V16H7M7,3V1H10V3H7M3,16A2,2 0 0,1 1,14V12H3V14H5V16H3M1,7H3V10H1V7M9,7H11V9H9V11H7V9A2,2 0 0,1 9,7M16,14A2,2 0 0,1 14,16H12V14H14V12H16V14Z" /></g><g id="vector-square"><path d="M2,2H8V4H16V2H22V8H20V16H22V22H16V20H8V22H2V16H4V8H2V2M16,8V6H8V8H6V16H8V18H16V16H18V8H16M4,4V6H6V4H4M18,4V6H20V4H18M4,18V20H6V18H4M18,18V20H20V18H18Z" /></g><g id="vector-triangle"><path d="M9,3V9H9.73L5.79,16H2V22H8V20H16V22H22V16H18.21L14.27,9H15V3M11,5H13V7H11M12,9.04L16,16.15V18H8V16.15M4,18H6V20H4M18,18H20V20H18" /></g><g id="vector-union"><path d="M3,1C1.89,1 1,1.89 1,3V14C1,15.11 1.89,16 3,16H7V20C7,21.11 7.89,22 9,22H20C21.11,22 22,21.11 22,20V9C22,7.89 21.11,7 20,7H16V3C16,1.89 15.11,1 14,1H3M3,3H14V9H20V20H9V14H3V3Z" /></g><g id="verified"><path d="M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z" /></g><g id="vibrate"><path d="M16,19H8V5H16M16.5,3H7.5A1.5,1.5 0 0,0 6,4.5V19.5A1.5,1.5 0 0,0 7.5,21H16.5A1.5,1.5 0 0,0 18,19.5V4.5A1.5,1.5 0 0,0 16.5,3M19,17H21V7H19M22,9V15H24V9M3,17H5V7H3M0,15H2V9H0V15Z" /></g><g id="video"><path d="M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z" /></g><g id="video-off"><path d="M3.27,2L2,3.27L4.73,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16C16.2,18 16.39,17.92 16.54,17.82L19.73,21L21,19.73M21,6.5L17,10.5V7A1,1 0 0,0 16,6H9.82L21,17.18V6.5Z" /></g><g id="video-switch"><path d="M13,15.5V13H7V15.5L3.5,12L7,8.5V11H13V8.5L16.5,12M18,9.5V6A1,1 0 0,0 17,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H17A1,1 0 0,0 18,18V14.5L22,18.5V5.5L18,9.5Z" /></g><g id="view-agenda"><path d="M20,3H3A1,1 0 0,0 2,4V10A1,1 0 0,0 3,11H20A1,1 0 0,0 21,10V4A1,1 0 0,0 20,3M20,13H3A1,1 0 0,0 2,14V20A1,1 0 0,0 3,21H20A1,1 0 0,0 21,20V14A1,1 0 0,0 20,13Z" /></g><g id="view-array"><path d="M8,18H17V5H8M18,5V18H21V5M4,18H7V5H4V18Z" /></g><g id="view-carousel"><path d="M18,6V17H22V6M2,17H6V6H2M7,19H17V4H7V19Z" /></g><g id="view-column"><path d="M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z" /></g><g id="view-dashboard"><path d="M13,3V9H21V3M13,21H21V11H13M3,21H11V15H3M3,13H11V3H3V13Z" /></g><g id="view-day"><path d="M2,3V6H21V3M20,8H3A1,1 0 0,0 2,9V15A1,1 0 0,0 3,16H20A1,1 0 0,0 21,15V9A1,1 0 0,0 20,8M2,21H21V18H2V21Z" /></g><g id="view-grid"><path d="M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3" /></g><g id="view-headline"><path d="M4,5V7H21V5M4,11H21V9H4M4,19H21V17H4M4,15H21V13H4V15Z" /></g><g id="view-list"><path d="M9,5V9H21V5M9,19H21V15H9M9,14H21V10H9M4,9H8V5H4M4,19H8V15H4M4,14H8V10H4V14Z" /></g><g id="view-module"><path d="M16,5V11H21V5M10,11H15V5H10M16,18H21V12H16M10,18H15V12H10M4,18H9V12H4M4,11H9V5H4V11Z" /></g><g id="view-parallel"><path d="M4,21V3H8V21H4M10,21V3H14V21H10M16,21V3H20V21H16Z" /></g><g id="view-quilt"><path d="M10,5V11H21V5M16,18H21V12H16M4,18H9V5H4M10,18H15V12H10V18Z" /></g><g id="view-sequential"><path d="M3,4H21V8H3V4M3,10H21V14H3V10M3,16H21V20H3V16Z" /></g><g id="view-stream"><path d="M4,5V11H21V5M4,18H21V12H4V18Z" /></g><g id="view-week"><path d="M13,5H10A1,1 0 0,0 9,6V18A1,1 0 0,0 10,19H13A1,1 0 0,0 14,18V6A1,1 0 0,0 13,5M20,5H17A1,1 0 0,0 16,6V18A1,1 0 0,0 17,19H20A1,1 0 0,0 21,18V6A1,1 0 0,0 20,5M6,5H3A1,1 0 0,0 2,6V18A1,1 0 0,0 3,19H6A1,1 0 0,0 7,18V6A1,1 0 0,0 6,5Z" /></g><g id="vimeo"><path d="M22,7.42C21.91,9.37 20.55,12.04 17.92,15.44C15.2,19 12.9,20.75 11,20.75C9.85,20.75 8.86,19.67 8.05,17.5C7.5,15.54 7,13.56 6.44,11.58C5.84,9.42 5.2,8.34 4.5,8.34C4.36,8.34 3.84,8.66 2.94,9.29L2,8.07C3,7.2 3.96,6.33 4.92,5.46C6.24,4.32 7.23,3.72 7.88,3.66C9.44,3.5 10.4,4.58 10.76,6.86C11.15,9.33 11.42,10.86 11.57,11.46C12,13.5 12.5,14.5 13.05,14.5C13.47,14.5 14.1,13.86 14.94,12.53C15.78,11.21 16.23,10.2 16.29,9.5C16.41,8.36 15.96,7.79 14.94,7.79C14.46,7.79 13.97,7.9 13.46,8.12C14.44,4.89 16.32,3.32 19.09,3.41C21.15,3.47 22.12,4.81 22,7.42Z" /></g><g id="vine"><path d="M19.89,11.95C19.43,12.06 19,12.1 18.57,12.1C16.3,12.1 14.55,10.5 14.55,7.76C14.55,6.41 15.08,5.7 15.82,5.7C16.5,5.7 17,6.33 17,7.61C17,8.34 16.79,9.14 16.65,9.61C16.65,9.61 17.35,10.83 19.26,10.46C19.67,9.56 19.89,8.39 19.89,7.36C19.89,4.6 18.5,3 15.91,3C13.26,3 11.71,5.04 11.71,7.72C11.71,10.38 12.95,12.67 15,13.71C14.14,15.43 13.04,16.95 11.9,18.1C9.82,15.59 7.94,12.24 7.17,5.7H4.11C5.53,16.59 9.74,20.05 10.86,20.72C11.5,21.1 12.03,21.08 12.61,20.75C13.5,20.24 16.23,17.5 17.74,14.34C18.37,14.33 19.13,14.26 19.89,14.09V11.95Z" /></g><g id="violin"><path d="M11,2A1,1 0 0,0 10,3V5L10,9A0.5,0.5 0 0,0 10.5,9.5H12A0.5,0.5 0 0,1 12.5,10A0.5,0.5 0 0,1 12,10.5H10.5C9.73,10.5 9,9.77 9,9V5.16C7.27,5.6 6,7.13 6,9V10.5A2.5,2.5 0 0,1 8.5,13A2.5,2.5 0 0,1 6,15.5V17C6,19.77 8.23,22 11,22H13C15.77,22 18,19.77 18,17V15.5A2.5,2.5 0 0,1 15.5,13A2.5,2.5 0 0,1 18,10.5V9C18,6.78 16.22,5 14,5V3A1,1 0 0,0 13,2H11M10.75,16.5H13.25L12.75,20H11.25L10.75,16.5Z" /></g><g id="visualstudio"><path d="M17,8.5L12.25,12.32L17,16V8.5M4.7,18.4L2,16.7V7.7L5,6.7L9.3,10.03L18,2L22,4.5V20L17,22L9.34,14.66L4.7,18.4M5,14L6.86,12.28L5,10.5V14Z" /></g><g id="vk"><path d="M19.54,14.6C21.09,16.04 21.41,16.73 21.46,16.82C22.1,17.88 20.76,17.96 20.76,17.96L18.18,18C18.18,18 17.62,18.11 16.9,17.61C15.93,16.95 15,15.22 14.31,15.45C13.6,15.68 13.62,17.23 13.62,17.23C13.62,17.23 13.62,17.45 13.46,17.62C13.28,17.81 12.93,17.74 12.93,17.74H11.78C11.78,17.74 9.23,18 7,15.67C4.55,13.13 2.39,8.13 2.39,8.13C2.39,8.13 2.27,7.83 2.4,7.66C2.55,7.5 2.97,7.5 2.97,7.5H5.73C5.73,7.5 6,7.5 6.17,7.66C6.32,7.77 6.41,8 6.41,8C6.41,8 6.85,9.11 7.45,10.13C8.6,12.12 9.13,12.55 9.5,12.34C10.1,12.03 9.93,9.53 9.93,9.53C9.93,9.53 9.94,8.62 9.64,8.22C9.41,7.91 8.97,7.81 8.78,7.79C8.62,7.77 8.88,7.41 9.21,7.24C9.71,7 10.58,7 11.62,7C12.43,7 12.66,7.06 12.97,7.13C13.93,7.36 13.6,8.25 13.6,10.37C13.6,11.06 13.5,12 13.97,12.33C14.18,12.47 14.7,12.35 16,10.16C16.6,9.12 17.06,7.89 17.06,7.89C17.06,7.89 17.16,7.68 17.31,7.58C17.47,7.5 17.69,7.5 17.69,7.5H20.59C20.59,7.5 21.47,7.4 21.61,7.79C21.76,8.2 21.28,9.17 20.09,10.74C18.15,13.34 17.93,13.1 19.54,14.6Z" /></g><g id="vk-box"><path d="M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M17.24,14.03C16.06,12.94 16.22,13.11 17.64,11.22C18.5,10.07 18.85,9.37 18.74,9.07C18.63,8.79 18,8.86 18,8.86L15.89,8.88C15.89,8.88 15.73,8.85 15.62,8.92C15.5,9 15.43,9.15 15.43,9.15C15.43,9.15 15.09,10.04 14.65,10.8C13.71,12.39 13.33,12.47 13.18,12.38C12.83,12.15 12.91,11.45 12.91,10.95C12.91,9.41 13.15,8.76 12.46,8.6C12.23,8.54 12.06,8.5 11.47,8.5C10.72,8.5 10.08,8.5 9.72,8.68C9.5,8.8 9.29,9.06 9.41,9.07C9.55,9.09 9.86,9.16 10.03,9.39C10.25,9.68 10.24,10.34 10.24,10.34C10.24,10.34 10.36,12.16 9.95,12.39C9.66,12.54 9.27,12.22 8.44,10.78C8,10.04 7.68,9.22 7.68,9.22L7.5,9L7.19,8.85H5.18C5.18,8.85 4.88,8.85 4.77,9C4.67,9.1 4.76,9.32 4.76,9.32C4.76,9.32 6.33,12.96 8.11,14.8C9.74,16.5 11.59,16.31 11.59,16.31H12.43C12.43,16.31 12.68,16.36 12.81,16.23C12.93,16.1 12.93,15.94 12.93,15.94C12.93,15.94 12.91,14.81 13.43,14.65C13.95,14.5 14.61,15.73 15.31,16.22C15.84,16.58 16.24,16.5 16.24,16.5L18.12,16.47C18.12,16.47 19.1,16.41 18.63,15.64C18.6,15.58 18.36,15.07 17.24,14.03Z" /></g><g id="vk-circle"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M17.24,14.03C16.06,12.94 16.22,13.11 17.64,11.22C18.5,10.07 18.85,9.37 18.74,9.07C18.63,8.79 18,8.86 18,8.86L15.89,8.88C15.89,8.88 15.73,8.85 15.62,8.92C15.5,9 15.43,9.15 15.43,9.15C15.43,9.15 15.09,10.04 14.65,10.8C13.71,12.39 13.33,12.47 13.18,12.38C12.83,12.15 12.91,11.45 12.91,10.95C12.91,9.41 13.15,8.76 12.46,8.6C12.23,8.54 12.06,8.5 11.47,8.5C10.72,8.5 10.08,8.5 9.72,8.68C9.5,8.8 9.29,9.06 9.41,9.07C9.55,9.09 9.86,9.16 10.03,9.39C10.25,9.68 10.24,10.34 10.24,10.34C10.24,10.34 10.36,12.16 9.95,12.39C9.66,12.54 9.27,12.22 8.44,10.78C8,10.04 7.68,9.22 7.68,9.22L7.5,9L7.19,8.85H5.18C5.18,8.85 4.88,8.85 4.77,9C4.67,9.1 4.76,9.32 4.76,9.32C4.76,9.32 6.33,12.96 8.11,14.8C9.74,16.5 11.59,16.31 11.59,16.31H12.43C12.43,16.31 12.68,16.36 12.81,16.23C12.93,16.1 12.93,15.94 12.93,15.94C12.93,15.94 12.91,14.81 13.43,14.65C13.95,14.5 14.61,15.73 15.31,16.22C15.84,16.58 16.24,16.5 16.24,16.5L18.12,16.47C18.12,16.47 19.1,16.41 18.63,15.64C18.6,15.58 18.36,15.07 17.24,14.03Z" /></g><g id="vlc"><path d="M12,1C11.58,1 11.19,1.23 11,1.75L9.88,4.88C10.36,5.4 11.28,5.5 12,5.5C12.72,5.5 13.64,5.4 14.13,4.88L13,1.75C12.82,1.25 12.42,1 12,1M8.44,8.91L7,12.91C8.07,14.27 10.26,14.5 12,14.5C13.74,14.5 15.93,14.27 17,12.91L15.56,8.91C14.76,9.83 13.24,10 12,10C10.76,10 9.24,9.83 8.44,8.91M5.44,15C4.62,15 3.76,15.65 3.53,16.44L2.06,21.56C1.84,22.35 2.3,23 3.13,23H20.88C21.7,23 22.16,22.35 21.94,21.56L20.47,16.44C20.24,15.65 19.38,15 18.56,15H17.75L18.09,15.97C18.21,16.29 18.29,16.69 18.09,16.97C16.84,18.7 14.14,19 12,19C9.86,19 7.16,18.7 5.91,16.97C5.71,16.69 5.79,16.29 5.91,15.97L6.25,15H5.44Z" /></g><g id="voice"><path d="M9,5A4,4 0 0,1 13,9A4,4 0 0,1 9,13A4,4 0 0,1 5,9A4,4 0 0,1 9,5M9,15C11.67,15 17,16.34 17,19V21H1V19C1,16.34 6.33,15 9,15M16.76,5.36C18.78,7.56 18.78,10.61 16.76,12.63L15.08,10.94C15.92,9.76 15.92,8.23 15.08,7.05L16.76,5.36M20.07,2C24,6.05 23.97,12.11 20.07,16L18.44,14.37C21.21,11.19 21.21,6.65 18.44,3.63L20.07,2Z" /></g><g id="voicemail"><path d="M18.5,15A3.5,3.5 0 0,1 15,11.5A3.5,3.5 0 0,1 18.5,8A3.5,3.5 0 0,1 22,11.5A3.5,3.5 0 0,1 18.5,15M5.5,15A3.5,3.5 0 0,1 2,11.5A3.5,3.5 0 0,1 5.5,8A3.5,3.5 0 0,1 9,11.5A3.5,3.5 0 0,1 5.5,15M18.5,6A5.5,5.5 0 0,0 13,11.5C13,12.83 13.47,14.05 14.26,15H9.74C10.53,14.05 11,12.83 11,11.5A5.5,5.5 0 0,0 5.5,6A5.5,5.5 0 0,0 0,11.5A5.5,5.5 0 0,0 5.5,17H18.5A5.5,5.5 0 0,0 24,11.5A5.5,5.5 0 0,0 18.5,6Z" /></g><g id="volume-high"><path d="M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z" /></g><g id="volume-low"><path d="M7,9V15H11L16,20V4L11,9H7Z" /></g><g id="volume-medium"><path d="M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z" /></g><g id="volume-off"><path d="M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z" /></g><g id="vpn"><path d="M9,5H15L12,8L9,5M10.5,14.66C10.2,15 10,15.5 10,16A2,2 0 0,0 12,18A2,2 0 0,0 14,16C14,15.45 13.78,14.95 13.41,14.59L14.83,13.17C15.55,13.9 16,14.9 16,16A4,4 0 0,1 12,20A4,4 0 0,1 8,16C8,14.93 8.42,13.96 9.1,13.25L9.09,13.24L16.17,6.17V6.17C16.89,5.45 17.89,5 19,5A4,4 0 0,1 23,9A4,4 0 0,1 19,13C17.9,13 16.9,12.55 16.17,11.83L17.59,10.41C17.95,10.78 18.45,11 19,11A2,2 0 0,0 21,9A2,2 0 0,0 19,7C18.45,7 17.95,7.22 17.59,7.59L10.5,14.66M6.41,7.59C6.05,7.22 5.55,7 5,7A2,2 0 0,0 3,9A2,2 0 0,0 5,11C5.55,11 6.05,10.78 6.41,10.41L7.83,11.83C7.1,12.55 6.1,13 5,13A4,4 0 0,1 1,9A4,4 0 0,1 5,5C6.11,5 7.11,5.45 7.83,6.17V6.17L10.59,8.93L9.17,10.35L6.41,7.59Z" /></g><g id="walk"><path d="M14.12,10H19V8.2H15.38L13.38,4.87C13.08,4.37 12.54,4.03 11.92,4.03C11.74,4.03 11.58,4.06 11.42,4.11L6,5.8V11H7.8V7.33L9.91,6.67L6,22H7.8L10.67,13.89L13,17V22H14.8V15.59L12.31,11.05L13.04,8.18M14,3.8C15,3.8 15.8,3 15.8,2C15.8,1 15,0.2 14,0.2C13,0.2 12.2,1 12.2,2C12.2,3 13,3.8 14,3.8Z" /></g><g id="wallet"><path d="M21,18V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5A2,2 0 0,1 5,3H19A2,2 0 0,1 21,5V6H12C10.89,6 10,6.9 10,8V16A2,2 0 0,0 12,18M12,16H22V8H12M16,13.5A1.5,1.5 0 0,1 14.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,12A1.5,1.5 0 0,1 16,13.5Z" /></g><g id="wallet-giftcard"><path d="M20,14H4V8H9.08L7,10.83L8.62,12L11,8.76L12,7.4L13,8.76L15.38,12L17,10.83L14.92,8H20M20,19H4V17H20M9,4A1,1 0 0,1 10,5A1,1 0 0,1 9,6A1,1 0 0,1 8,5A1,1 0 0,1 9,4M15,4A1,1 0 0,1 16,5A1,1 0 0,1 15,6A1,1 0 0,1 14,5A1,1 0 0,1 15,4M20,6H17.82C17.93,5.69 18,5.35 18,5A3,3 0 0,0 15,2C13.95,2 13.04,2.54 12.5,3.35L12,4L11.5,3.34C10.96,2.54 10.05,2 9,2A3,3 0 0,0 6,5C6,5.35 6.07,5.69 6.18,6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="wallet-membership"><path d="M20,10H4V4H20M20,15H4V13H20M20,2H4C2.89,2 2,2.89 2,4V15C2,16.11 2.89,17 4,17H8V22L12,20L16,22V17H20C21.11,17 22,16.11 22,15V4C22,2.89 21.11,2 20,2Z" /></g><g id="wallet-travel"><path d="M20,14H4V8H7V10H9V8H15V10H17V8H20M20,19H4V17H20M9,4H15V6H9M20,6H17V4C17,2.89 16.11,2 15,2H9C7.89,2 7,2.89 7,4V6H4C2.89,6 2,6.89 2,8V19C2,20.11 2.89,21 4,21H20C21.11,21 22,20.11 22,19V8C22,6.89 21.11,6 20,6Z" /></g><g id="wan"><path d="M12,2A8,8 0 0,0 4,10C4,14.03 7,17.42 11,17.93V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15A1,1 0 0,0 14,19H13V17.93C17,17.43 20,14.03 20,10A8,8 0 0,0 12,2M12,4C12,4 12.74,5.28 13.26,7H10.74C11.26,5.28 12,4 12,4M9.77,4.43C9.5,4.93 9.09,5.84 8.74,7H6.81C7.5,5.84 8.5,4.93 9.77,4.43M14.23,4.44C15.5,4.94 16.5,5.84 17.19,7H15.26C14.91,5.84 14.5,4.93 14.23,4.44M6.09,9H8.32C8.28,9.33 8.25,9.66 8.25,10C8.25,10.34 8.28,10.67 8.32,11H6.09C6.03,10.67 6,10.34 6,10C6,9.66 6.03,9.33 6.09,9M10.32,9H13.68C13.72,9.33 13.75,9.66 13.75,10C13.75,10.34 13.72,10.67 13.68,11H10.32C10.28,10.67 10.25,10.34 10.25,10C10.25,9.66 10.28,9.33 10.32,9M15.68,9H17.91C17.97,9.33 18,9.66 18,10C18,10.34 17.97,10.67 17.91,11H15.68C15.72,10.67 15.75,10.34 15.75,10C15.75,9.66 15.72,9.33 15.68,9M6.81,13H8.74C9.09,14.16 9.5,15.07 9.77,15.56C8.5,15.06 7.5,14.16 6.81,13M10.74,13H13.26C12.74,14.72 12,16 12,16C12,16 11.26,14.72 10.74,13M15.26,13H17.19C16.5,14.16 15.5,15.07 14.23,15.57C14.5,15.07 14.91,14.16 15.26,13Z" /></g><g id="washing-machine"><path d="M14.83,11.17C16.39,12.73 16.39,15.27 14.83,16.83C13.27,18.39 10.73,18.39 9.17,16.83L14.83,11.17M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M7,4A1,1 0 0,0 6,5A1,1 0 0,0 7,6A1,1 0 0,0 8,5A1,1 0 0,0 7,4M10,4A1,1 0 0,0 9,5A1,1 0 0,0 10,6A1,1 0 0,0 11,5A1,1 0 0,0 10,4M12,8A6,6 0 0,0 6,14A6,6 0 0,0 12,20A6,6 0 0,0 18,14A6,6 0 0,0 12,8Z" /></g><g id="watch"><path d="M6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12M20,12C20,9.45 18.81,7.19 16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.45 4,12C4,14.54 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27C18.81,16.81 20,14.54 20,12Z" /></g><g id="watch-export"><path d="M14,11H19L16.5,8.5L17.92,7.08L22.84,12L17.92,16.92L16.5,15.5L19,13H14V11M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.4,6 14.69,6.5 15.71,7.29L17.13,5.87L16.95,5.73L16,0H8L7.05,5.73C5.19,7.19 4,9.46 4,12C4,14.55 5.19,16.81 7.05,18.27L8,24H16L16.95,18.27L17.13,18.13L15.71,16.71C14.69,17.5 13.4,18 12,18Z" /></g><g id="watch-import"><path d="M2,11H7L4.5,8.5L5.92,7.08L10.84,12L5.92,16.92L4.5,15.5L7,13H2V11M12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6C10.6,6 9.31,6.5 8.29,7.29L6.87,5.87L7.05,5.73L8,0H16L16.95,5.73C18.81,7.19 20,9.45 20,12C20,14.54 18.81,16.81 16.95,18.27L16,24H8L7.05,18.27L6.87,18.13L8.29,16.71C9.31,17.5 10.6,18 12,18Z" /></g><g id="watch-vibrate"><path d="M3,17V7H5V17H3M19,17V7H21V17H19M22,9H24V15H22V9M0,15V9H2V15H0M17.96,11.97C17.96,13.87 17.07,15.57 15.68,16.67L14.97,20.95H9L8.27,16.67C6.88,15.57 6,13.87 6,11.97C6,10.07 6.88,8.37 8.27,7.28L9,3H14.97L15.68,7.28C17.07,8.37 17.96,10.07 17.96,11.97M7.5,11.97C7.5,14.45 9.5,16.46 11.97,16.46A4.5,4.5 0 0,0 16.46,11.97C16.46,9.5 14.45,7.5 11.97,7.5A4.47,4.47 0 0,0 7.5,11.97Z" /></g><g id="water"><path d="M12,20A6,6 0 0,1 6,14C6,10 12,3.25 12,3.25C12,3.25 18,10 18,14A6,6 0 0,1 12,20Z" /></g><g id="water-off"><path d="M17.12,17.12L12.5,12.5L5.27,5.27L4,6.55L7.32,9.87C6.55,11.32 6,12.79 6,14A6,6 0 0,0 12,20C13.5,20 14.9,19.43 15.96,18.5L18.59,21.13L19.86,19.86L17.12,17.12M18,14C18,10 12,3.2 12,3.2C12,3.2 10.67,4.71 9.27,6.72L17.86,15.31C17.95,14.89 18,14.45 18,14Z" /></g><g id="water-percent"><path d="M12,3.25C12,3.25 6,10 6,14C6,17.32 8.69,20 12,20A6,6 0 0,0 18,14C18,10 12,3.25 12,3.25M14.47,9.97L15.53,11.03L9.53,17.03L8.47,15.97M9.75,10A1.25,1.25 0 0,1 11,11.25A1.25,1.25 0 0,1 9.75,12.5A1.25,1.25 0 0,1 8.5,11.25A1.25,1.25 0 0,1 9.75,10M14.25,14.5A1.25,1.25 0 0,1 15.5,15.75A1.25,1.25 0 0,1 14.25,17A1.25,1.25 0 0,1 13,15.75A1.25,1.25 0 0,1 14.25,14.5Z" /></g><g id="water-pump"><path d="M19,14.5C19,14.5 21,16.67 21,18A2,2 0 0,1 19,20A2,2 0 0,1 17,18C17,16.67 19,14.5 19,14.5M5,18V9A2,2 0 0,1 3,7A2,2 0 0,1 5,5V4A2,2 0 0,1 7,2H9A2,2 0 0,1 11,4V5H19A2,2 0 0,1 21,7V9L21,11A1,1 0 0,1 22,12A1,1 0 0,1 21,13H17A1,1 0 0,1 16,12A1,1 0 0,1 17,11V9H11V18H12A2,2 0 0,1 14,20V22H2V20A2,2 0 0,1 4,18H5Z" /></g><g id="watermark"><path d="M21,3H3A2,2 0 0,0 1,5V19A2,2 0 0,0 3,21H21A2,2 0 0,0 23,19V5A2,2 0 0,0 21,3M21,19H12V13H21V19Z" /></g><g id="weather-cloudy"><path d="M6,19A5,5 0 0,1 1,14A5,5 0 0,1 6,9C7,6.65 9.3,5 12,5C15.43,5 18.24,7.66 18.5,11.03L19,11A4,4 0 0,1 23,15A4,4 0 0,1 19,19H6M19,13H17V12A5,5 0 0,0 12,7C9.5,7 7.45,8.82 7.06,11.19C6.73,11.07 6.37,11 6,11A3,3 0 0,0 3,14A3,3 0 0,0 6,17H19A2,2 0 0,0 21,15A2,2 0 0,0 19,13Z" /></g><g id="weather-fog"><path d="M3,15H13A1,1 0 0,1 14,16A1,1 0 0,1 13,17H3A1,1 0 0,1 2,16A1,1 0 0,1 3,15M16,15H21A1,1 0 0,1 22,16A1,1 0 0,1 21,17H16A1,1 0 0,1 15,16A1,1 0 0,1 16,15M1,12A5,5 0 0,1 6,7C7,4.65 9.3,3 12,3C15.43,3 18.24,5.66 18.5,9.03L19,9C21.19,9 22.97,10.76 23,13H21A2,2 0 0,0 19,11H17V10A5,5 0 0,0 12,5C9.5,5 7.45,6.82 7.06,9.19C6.73,9.07 6.37,9 6,9A3,3 0 0,0 3,12C3,12.35 3.06,12.69 3.17,13H1.1L1,12M3,19H5A1,1 0 0,1 6,20A1,1 0 0,1 5,21H3A1,1 0 0,1 2,20A1,1 0 0,1 3,19M8,19H21A1,1 0 0,1 22,20A1,1 0 0,1 21,21H8A1,1 0 0,1 7,20A1,1 0 0,1 8,19Z" /></g><g id="weather-hail"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M10,18A2,2 0 0,1 12,20A2,2 0 0,1 10,22A2,2 0 0,1 8,20A2,2 0 0,1 10,18M14.5,16A1.5,1.5 0 0,1 16,17.5A1.5,1.5 0 0,1 14.5,19A1.5,1.5 0 0,1 13,17.5A1.5,1.5 0 0,1 14.5,16M10.5,12A1.5,1.5 0 0,1 12,13.5A1.5,1.5 0 0,1 10.5,15A1.5,1.5 0 0,1 9,13.5A1.5,1.5 0 0,1 10.5,12Z" /></g><g id="weather-lightning"><path d="M6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14H7A1,1 0 0,1 8,15A1,1 0 0,1 7,16H6M12,11H15L13,15H15L11.25,22L12,17H9.5L12,11Z" /></g><g id="weather-lightning-rainy"><path d="M4.5,13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.44 4,15.6 3.5,15.33V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59M9.5,11H12.5L10.5,15H12.5L8.75,22L9.5,17H7L9.5,11M17.5,18.67C17.5,19.96 16.5,21 15.25,21C14,21 13,19.96 13,18.67C13,17.12 15.25,14.5 15.25,14.5C15.25,14.5 17.5,17.12 17.5,18.67Z" /></g><g id="weather-night"><path d="M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.64 6.35,17.66C9.37,20.67 14.19,20.78 17.33,17.97Z" /></g><g id="weather-partlycloudy"><path d="M12.74,5.47C15.1,6.5 16.35,9.03 15.92,11.46C17.19,12.56 18,14.19 18,16V16.17C18.31,16.06 18.65,16 19,16A3,3 0 0,1 22,19A3,3 0 0,1 19,22H6A4,4 0 0,1 2,18A4,4 0 0,1 6,14H6.27C5,12.45 4.6,10.24 5.5,8.26C6.72,5.5 9.97,4.24 12.74,5.47M11.93,7.3C10.16,6.5 8.09,7.31 7.31,9.07C6.85,10.09 6.93,11.22 7.41,12.13C8.5,10.83 10.16,10 12,10C12.7,10 13.38,10.12 14,10.34C13.94,9.06 13.18,7.86 11.93,7.3M13.55,3.64C13,3.4 12.45,3.23 11.88,3.12L14.37,1.82L15.27,4.71C14.76,4.29 14.19,3.93 13.55,3.64M6.09,4.44C5.6,4.79 5.17,5.19 4.8,5.63L4.91,2.82L7.87,3.5C7.25,3.71 6.65,4.03 6.09,4.44M18,9.71C17.91,9.12 17.78,8.55 17.59,8L19.97,9.5L17.92,11.73C18.03,11.08 18.05,10.4 18,9.71M3.04,11.3C3.11,11.9 3.24,12.47 3.43,13L1.06,11.5L3.1,9.28C3,9.93 2.97,10.61 3.04,11.3M19,18H16V16A4,4 0 0,0 12,12A4,4 0 0,0 8,16H6A2,2 0 0,0 4,18A2,2 0 0,0 6,20H19A1,1 0 0,0 20,19A1,1 0 0,0 19,18Z" /></g><g id="weather-pouring"><path d="M9,12C9.53,12.14 9.85,12.69 9.71,13.22L8.41,18.05C8.27,18.59 7.72,18.9 7.19,18.76C6.65,18.62 6.34,18.07 6.5,17.54L7.78,12.71C7.92,12.17 8.47,11.86 9,12M13,12C13.53,12.14 13.85,12.69 13.71,13.22L11.64,20.95C11.5,21.5 10.95,21.8 10.41,21.66C9.88,21.5 9.56,20.97 9.7,20.43L11.78,12.71C11.92,12.17 12.47,11.86 13,12M17,12C17.53,12.14 17.85,12.69 17.71,13.22L16.41,18.05C16.27,18.59 15.72,18.9 15.19,18.76C14.65,18.62 14.34,18.07 14.5,17.54L15.78,12.71C15.92,12.17 16.47,11.86 17,12M17,10V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,12.11 3.6,13.08 4.5,13.6V13.59C5,13.87 5.14,14.5 4.87,14.96C4.59,15.43 4,15.6 3.5,15.32V15.33C2,14.47 1,12.85 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12C23,13.5 22.2,14.77 21,15.46V15.46C20.5,15.73 19.91,15.57 19.63,15.09C19.36,14.61 19.5,14 20,13.72V13.73C20.6,13.39 21,12.74 21,12A2,2 0 0,0 19,10H17Z" /></g><g id="weather-rainy"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M14.83,15.67C16.39,17.23 16.39,19.5 14.83,21.08C14.05,21.86 13,22 12,22C11,22 9.95,21.86 9.17,21.08C7.61,19.5 7.61,17.23 9.17,15.67L12,11L14.83,15.67M13.41,16.69L12,14.25L10.59,16.69C9.8,17.5 9.8,18.7 10.59,19.5C11,19.93 11.5,20 12,20C12.5,20 13,19.93 13.41,19.5C14.2,18.7 14.2,17.5 13.41,16.69Z" /></g><g id="weather-snowy"><path d="M6,14A1,1 0 0,1 7,15A1,1 0 0,1 6,16A5,5 0 0,1 1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16H18A1,1 0 0,1 17,15A1,1 0 0,1 18,14H19A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11A3,3 0 0,0 6,14M7.88,18.07L10.07,17.5L8.46,15.88C8.07,15.5 8.07,14.86 8.46,14.46C8.85,14.07 9.5,14.07 9.88,14.46L11.5,16.07L12.07,13.88C12.21,13.34 12.76,13.03 13.29,13.17C13.83,13.31 14.14,13.86 14,14.4L13.41,16.59L15.6,16C16.14,15.86 16.69,16.17 16.83,16.71C16.97,17.24 16.66,17.79 16.12,17.93L13.93,18.5L15.54,20.12C15.93,20.5 15.93,21.15 15.54,21.54C15.15,21.93 14.5,21.93 14.12,21.54L12.5,19.93L11.93,22.12C11.79,22.66 11.24,22.97 10.71,22.83C10.17,22.69 9.86,22.14 10,21.6L10.59,19.41L8.4,20C7.86,20.14 7.31,19.83 7.17,19.29C7.03,18.76 7.34,18.21 7.88,18.07Z" /></g><g id="weather-snowy-rainy"><path d="M18.5,18.67C18.5,19.96 17.5,21 16.25,21C15,21 14,19.96 14,18.67C14,17.12 16.25,14.5 16.25,14.5C16.25,14.5 18.5,17.12 18.5,18.67M4,17.36C3.86,16.82 4.18,16.25 4.73,16.11L7,15.5L5.33,13.86C4.93,13.46 4.93,12.81 5.33,12.4C5.73,12 6.4,12 6.79,12.4L8.45,14.05L9.04,11.8C9.18,11.24 9.75,10.92 10.29,11.07C10.85,11.21 11.17,11.78 11,12.33L10.42,14.58L12.67,14C13.22,13.83 13.79,14.15 13.93,14.71C14.08,15.25 13.76,15.82 13.2,15.96L10.95,16.55L12.6,18.21C13,18.6 13,19.27 12.6,19.67C12.2,20.07 11.54,20.07 11.15,19.67L9.5,18L8.89,20.27C8.75,20.83 8.18,21.14 7.64,21C7.08,20.86 6.77,20.29 6.91,19.74L7.5,17.5L5.26,18.09C4.71,18.23 4.14,17.92 4,17.36M1,11A5,5 0 0,1 6,6C7,3.65 9.3,2 12,2C15.43,2 18.24,4.66 18.5,8.03L19,8A4,4 0 0,1 23,12A4,4 0 0,1 19,16A1,1 0 0,1 18,15A1,1 0 0,1 19,14A2,2 0 0,0 21,12A2,2 0 0,0 19,10H17V9A5,5 0 0,0 12,4C9.5,4 7.45,5.82 7.06,8.19C6.73,8.07 6.37,8 6,8A3,3 0 0,0 3,11C3,11.85 3.35,12.61 3.91,13.16C4.27,13.55 4.26,14.16 3.88,14.54C3.5,14.93 2.85,14.93 2.47,14.54C1.56,13.63 1,12.38 1,11Z" /></g><g id="weather-sunny"><path d="M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M3.36,17L5.12,13.23C5.26,14 5.53,14.78 5.95,15.5C6.37,16.24 6.91,16.86 7.5,17.37L3.36,17M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M20.64,17L16.5,17.36C17.09,16.85 17.62,16.22 18.04,15.5C18.46,14.77 18.73,14 18.87,13.21L20.64,17M12,22L9.59,18.56C10.33,18.83 11.14,19 12,19C12.82,19 13.63,18.83 14.37,18.56L12,22Z" /></g><g id="weather-sunset"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M5,16H19A1,1 0 0,1 20,17A1,1 0 0,1 19,18H5A1,1 0 0,1 4,17A1,1 0 0,1 5,16M17,20A1,1 0 0,1 18,21A1,1 0 0,1 17,22H7A1,1 0 0,1 6,21A1,1 0 0,1 7,20H17M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7Z" /></g><g id="weather-sunset-down"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,20.71L15.82,17.6C16.21,17.21 16.21,16.57 15.82,16.18C15.43,15.79 14.8,15.79 14.41,16.18L12,18.59L9.59,16.18C9.2,15.79 8.57,15.79 8.18,16.18C7.79,16.57 7.79,17.21 8.18,17.6L11.29,20.71C11.5,20.9 11.74,21 12,21C12.26,21 12.5,20.9 12.71,20.71Z" /></g><g id="weather-sunset-up"><path d="M3,12H7A5,5 0 0,1 12,7A5,5 0 0,1 17,12H21A1,1 0 0,1 22,13A1,1 0 0,1 21,14H3A1,1 0 0,1 2,13A1,1 0 0,1 3,12M15,12A3,3 0 0,0 12,9A3,3 0 0,0 9,12H15M12,2L14.39,5.42C13.65,5.15 12.84,5 12,5C11.16,5 10.35,5.15 9.61,5.42L12,2M3.34,7L7.5,6.65C6.9,7.16 6.36,7.78 5.94,8.5C5.5,9.24 5.25,10 5.11,10.79L3.34,7M20.65,7L18.88,10.79C18.74,10 18.47,9.23 18.05,8.5C17.63,7.78 17.1,7.15 16.5,6.64L20.65,7M12.71,16.3L15.82,19.41C16.21,19.8 16.21,20.43 15.82,20.82C15.43,21.21 14.8,21.21 14.41,20.82L12,18.41L9.59,20.82C9.2,21.21 8.57,21.21 8.18,20.82C7.79,20.43 7.79,19.8 8.18,19.41L11.29,16.3C11.5,16.1 11.74,16 12,16C12.26,16 12.5,16.1 12.71,16.3Z" /></g><g id="weather-windy"><path d="M4,10A1,1 0 0,1 3,9A1,1 0 0,1 4,8H12A2,2 0 0,0 14,6A2,2 0 0,0 12,4C11.45,4 10.95,4.22 10.59,4.59C10.2,5 9.56,5 9.17,4.59C8.78,4.2 8.78,3.56 9.17,3.17C9.9,2.45 10.9,2 12,2A4,4 0 0,1 16,6A4,4 0 0,1 12,10H4M19,12A1,1 0 0,0 20,11A1,1 0 0,0 19,10C18.72,10 18.47,10.11 18.29,10.29C17.9,10.68 17.27,10.68 16.88,10.29C16.5,9.9 16.5,9.27 16.88,8.88C17.42,8.34 18.17,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H5A1,1 0 0,1 4,13A1,1 0 0,1 5,12H19M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z" /></g><g id="weather-windy-variant"><path d="M6,6L6.69,6.06C7.32,3.72 9.46,2 12,2A5.5,5.5 0 0,1 17.5,7.5L17.42,8.45C17.88,8.16 18.42,8 19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14H6A4,4 0 0,1 2,10A4,4 0 0,1 6,6M6,8A2,2 0 0,0 4,10A2,2 0 0,0 6,12H19A1,1 0 0,0 20,11A1,1 0 0,0 19,10H15.5V7.5A3.5,3.5 0 0,0 12,4A3.5,3.5 0 0,0 8.5,7.5V8H6M18,18H4A1,1 0 0,1 3,17A1,1 0 0,1 4,16H18A3,3 0 0,1 21,19A3,3 0 0,1 18,22C17.17,22 16.42,21.66 15.88,21.12C15.5,20.73 15.5,20.1 15.88,19.71C16.27,19.32 16.9,19.32 17.29,19.71C17.47,19.89 17.72,20 18,20A1,1 0 0,0 19,19A1,1 0 0,0 18,18Z" /></g><g id="web"><path d="M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></g><g id="webcam"><path d="M12,2A7,7 0 0,1 19,9A7,7 0 0,1 12,16A7,7 0 0,1 5,9A7,7 0 0,1 12,2M12,4A5,5 0 0,0 7,9A5,5 0 0,0 12,14A5,5 0 0,0 17,9A5,5 0 0,0 12,4M12,6A3,3 0 0,1 15,9A3,3 0 0,1 12,12A3,3 0 0,1 9,9A3,3 0 0,1 12,6M6,22A2,2 0 0,1 4,20C4,19.62 4.1,19.27 4.29,18.97L6.11,15.81C7.69,17.17 9.75,18 12,18C14.25,18 16.31,17.17 17.89,15.81L19.71,18.97C19.9,19.27 20,19.62 20,20A2,2 0 0,1 18,22H6Z" /></g><g id="webhook"><path d="M10.46,19C9,21.07 6.15,21.59 4.09,20.15C2.04,18.71 1.56,15.84 3,13.75C3.87,12.5 5.21,11.83 6.58,11.77L6.63,13.2C5.72,13.27 4.84,13.74 4.27,14.56C3.27,16 3.58,17.94 4.95,18.91C6.33,19.87 8.26,19.5 9.26,18.07C9.57,17.62 9.75,17.13 9.82,16.63V15.62L15.4,15.58L15.47,15.47C16,14.55 17.15,14.23 18.05,14.75C18.95,15.27 19.26,16.43 18.73,17.35C18.2,18.26 17.04,18.58 16.14,18.06C15.73,17.83 15.44,17.46 15.31,17.04L11.24,17.06C11.13,17.73 10.87,18.38 10.46,19M17.74,11.86C20.27,12.17 22.07,14.44 21.76,16.93C21.45,19.43 19.15,21.2 16.62,20.89C15.13,20.71 13.9,19.86 13.19,18.68L14.43,17.96C14.92,18.73 15.75,19.28 16.75,19.41C18.5,19.62 20.05,18.43 20.26,16.76C20.47,15.09 19.23,13.56 17.5,13.35C16.96,13.29 16.44,13.36 15.97,13.53L15.12,13.97L12.54,9.2H12.32C11.26,9.16 10.44,8.29 10.47,7.25C10.5,6.21 11.4,5.4 12.45,5.44C13.5,5.5 14.33,6.35 14.3,7.39C14.28,7.83 14.11,8.23 13.84,8.54L15.74,12.05C16.36,11.85 17.04,11.78 17.74,11.86M8.25,9.14C7.25,6.79 8.31,4.1 10.62,3.12C12.94,2.14 15.62,3.25 16.62,5.6C17.21,6.97 17.09,8.47 16.42,9.67L15.18,8.95C15.6,8.14 15.67,7.15 15.27,6.22C14.59,4.62 12.78,3.85 11.23,4.5C9.67,5.16 8.97,7 9.65,8.6C9.93,9.26 10.4,9.77 10.97,10.11L11.36,10.32L8.29,15.31C8.32,15.36 8.36,15.42 8.39,15.5C8.88,16.41 8.54,17.56 7.62,18.05C6.71,18.54 5.56,18.18 5.06,17.24C4.57,16.31 4.91,15.16 5.83,14.67C6.22,14.46 6.65,14.41 7.06,14.5L9.37,10.73C8.9,10.3 8.5,9.76 8.25,9.14Z" /></g><g id="webpack"><path d="M21,16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V7.5C3,7.12 3.21,6.79 3.53,6.62L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.79,6.79 21,7.12 21,7.5V16.5M12,4.15L5,8.09V15.91L12,19.85L19,15.91V8.09L12,4.15M12,6.23L16.9,9.06L12,11.89L7.1,9.06L12,6.23M17,14.89L13,17.2V13.62L17,11.31V14.89M11,17.2L7,14.89V11.31L11,13.62V17.2Z" /></g><g id="wechat"><path d="M9.5,4C5.36,4 2,6.69 2,10C2,11.89 3.08,13.56 4.78,14.66L4,17L6.5,15.5C7.39,15.81 8.37,16 9.41,16C9.15,15.37 9,14.7 9,14C9,10.69 12.13,8 16,8C16.19,8 16.38,8 16.56,8.03C15.54,5.69 12.78,4 9.5,4M6.5,6.5A1,1 0 0,1 7.5,7.5A1,1 0 0,1 6.5,8.5A1,1 0 0,1 5.5,7.5A1,1 0 0,1 6.5,6.5M11.5,6.5A1,1 0 0,1 12.5,7.5A1,1 0 0,1 11.5,8.5A1,1 0 0,1 10.5,7.5A1,1 0 0,1 11.5,6.5M16,9C12.69,9 10,11.24 10,14C10,16.76 12.69,19 16,19C16.67,19 17.31,18.92 17.91,18.75L20,20L19.38,18.13C20.95,17.22 22,15.71 22,14C22,11.24 19.31,9 16,9M14,11.5A1,1 0 0,1 15,12.5A1,1 0 0,1 14,13.5A1,1 0 0,1 13,12.5A1,1 0 0,1 14,11.5M18,11.5A1,1 0 0,1 19,12.5A1,1 0 0,1 18,13.5A1,1 0 0,1 17,12.5A1,1 0 0,1 18,11.5Z" /></g><g id="weight"><path d="M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5Z" /></g><g id="weight-kilogram"><path d="M12,3A4,4 0 0,1 16,7C16,7.73 15.81,8.41 15.46,9H18C18.95,9 19.75,9.67 19.95,10.56C21.96,18.57 22,18.78 22,19A2,2 0 0,1 20,21H4A2,2 0 0,1 2,19C2,18.78 2.04,18.57 4.05,10.56C4.25,9.67 5.05,9 6,9H8.54C8.19,8.41 8,7.73 8,7A4,4 0 0,1 12,3M12,5A2,2 0 0,0 10,7A2,2 0 0,0 12,9A2,2 0 0,0 14,7A2,2 0 0,0 12,5M9.04,15.44L10.4,18H12.11L10.07,14.66L11.95,11.94H10.2L8.87,14.33H8.39V11.94H6.97V18H8.39V15.44H9.04M17.31,17.16V14.93H14.95V16.04H15.9V16.79L15.55,16.93L14.94,17C14.59,17 14.31,16.85 14.11,16.6C13.92,16.34 13.82,16 13.82,15.59V14.34C13.82,13.93 13.92,13.6 14.12,13.35C14.32,13.09 14.58,12.97 14.91,12.97C15.24,12.97 15.5,13.05 15.64,13.21C15.8,13.37 15.9,13.61 15.95,13.93H17.27L17.28,13.9C17.23,13.27 17,12.77 16.62,12.4C16.23,12.04 15.64,11.86 14.86,11.86C14.14,11.86 13.56,12.09 13.1,12.55C12.64,13 12.41,13.61 12.41,14.34V15.6C12.41,16.34 12.65,16.94 13.12,17.4C13.58,17.86 14.19,18.09 14.94,18.09C15.53,18.09 16.03,18 16.42,17.81C16.81,17.62 17.11,17.41 17.31,17.16Z" /></g><g id="whatsapp"><path d="M16.75,13.96C17,14.09 17.16,14.16 17.21,14.26C17.27,14.37 17.25,14.87 17,15.44C16.8,16 15.76,16.54 15.3,16.56C14.84,16.58 14.83,16.92 12.34,15.83C9.85,14.74 8.35,12.08 8.23,11.91C8.11,11.74 7.27,10.53 7.31,9.3C7.36,8.08 8,7.5 8.26,7.26C8.5,7 8.77,6.97 8.94,7H9.41C9.56,7 9.77,6.94 9.96,7.45L10.65,9.32C10.71,9.45 10.75,9.6 10.66,9.76L10.39,10.17L10,10.59C9.88,10.71 9.74,10.84 9.88,11.09C10,11.35 10.5,12.18 11.2,12.87C12.11,13.75 12.91,14.04 13.15,14.17C13.39,14.31 13.54,14.29 13.69,14.13L14.5,13.19C14.69,12.94 14.85,13 15.08,13.08L16.75,13.96M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C10.03,22 8.2,21.43 6.65,20.45L2,22L3.55,17.35C2.57,15.8 2,13.97 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12C4,13.72 4.54,15.31 5.46,16.61L4.5,19.5L7.39,18.54C8.69,19.46 10.28,20 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" /></g><g id="wheelchair-accessibility"><path d="M18.4,11.2L14.3,11.4L16.6,8.8C16.8,8.5 16.9,8 16.8,7.5C16.7,7.2 16.6,6.9 16.3,6.7L10.9,3.5C10.5,3.2 9.9,3.3 9.5,3.6L6.8,6.1C6.3,6.6 6.2,7.3 6.7,7.8C7.1,8.3 7.9,8.3 8.4,7.9L10.4,6.1L12.3,7.2L8.1,11.5C8,11.6 8,11.7 7.9,11.7C7.4,11.9 6.9,12.1 6.5,12.4L8,13.9C8.5,13.7 9,13.5 9.5,13.5C11.4,13.5 13,15.1 13,17C13,17.6 12.9,18.1 12.6,18.5L14.1,20C14.7,19.1 15,18.1 15,17C15,15.8 14.6,14.6 13.9,13.7L17.2,13.4L17,18.2C16.9,18.9 17.4,19.4 18.1,19.5H18.2C18.8,19.5 19.3,19 19.4,18.4L19.6,12.5C19.6,12.2 19.5,11.8 19.3,11.6C19,11.3 18.7,11.2 18.4,11.2M18,5.5A2,2 0 0,0 20,3.5A2,2 0 0,0 18,1.5A2,2 0 0,0 16,3.5A2,2 0 0,0 18,5.5M12.5,21.6C11.6,22.2 10.6,22.5 9.5,22.5C6.5,22.5 4,20 4,17C4,15.9 4.3,14.9 4.9,14L6.4,15.5C6.2,16 6,16.5 6,17C6,18.9 7.6,20.5 9.5,20.5C10.1,20.5 10.6,20.4 11,20.1L12.5,21.6Z" /></g><g id="white-balance-auto"><path d="M10.3,16L9.6,14H6.4L5.7,16H3.8L7,7H9L12.2,16M22,7L20.8,13.29L19.3,7H17.7L16.21,13.29L15,7H14.24C12.77,5.17 10.5,4 8,4A8,8 0 0,0 0,12A8,8 0 0,0 8,20C11.13,20 13.84,18.19 15.15,15.57L15.25,16H17L18.5,9.9L20,16H21.75L23.8,7M6.85,12.65H9.15L8,9L6.85,12.65Z" /></g><g id="white-balance-incandescent"><path d="M17.24,18.15L19.04,19.95L20.45,18.53L18.66,16.74M20,12.5H23V10.5H20M15,6.31V1.5H9V6.31C7.21,7.35 6,9.28 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,9.28 16.79,7.35 15,6.31M4,10.5H1V12.5H4M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M3.55,18.53L4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53Z" /></g><g id="white-balance-iridescent"><path d="M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z" /></g><g id="white-balance-sunny"><path d="M3.55,18.54L4.96,19.95L6.76,18.16L5.34,16.74M11,22.45C11.32,22.45 13,22.45 13,22.45V19.5H11M12,5.5A6,6 0 0,0 6,11.5A6,6 0 0,0 12,17.5A6,6 0 0,0 18,11.5C18,8.18 15.31,5.5 12,5.5M20,12.5H23V10.5H20M17.24,18.16L19.04,19.95L20.45,18.54L18.66,16.74M20.45,4.46L19.04,3.05L17.24,4.84L18.66,6.26M13,0.55H11V3.5H13M4,10.5H1V12.5H4M6.76,4.84L4.96,3.05L3.55,4.46L5.34,6.26L6.76,4.84Z" /></g><g id="widgets"><path d="M3,3H11V7.34L16.66,1.69L22.31,7.34L16.66,13H21V21H13V13H16.66L11,7.34V11H3V3M3,13H11V21H3V13Z" /></g><g id="wifi"><path d="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z" /></g><g id="wifi-off"><path d="M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z" /></g><g id="wii"><path d="M17.84,16.94H15.97V10.79H17.84V16.94M18,8.58C18,9.19 17.5,9.69 16.9,9.69A1.11,1.11 0 0,1 15.79,8.58C15.79,7.96 16.29,7.46 16.9,7.46C17.5,7.46 18,7.96 18,8.58M21.82,16.94H19.94V10.79H21.82V16.94M22,8.58C22,9.19 21.5,9.69 20.88,9.69A1.11,1.11 0 0,1 19.77,8.58C19.77,7.96 20.27,7.46 20.88,7.46C21.5,7.46 22,7.96 22,8.58M12.9,8.05H14.9L12.78,15.5C12.78,15.5 12.5,17.04 11.28,17.04C10.07,17.04 9.79,15.5 9.79,15.5L8.45,10.64L7.11,15.5C7.11,15.5 6.82,17.04 5.61,17.04C4.4,17.04 4.12,15.5 4.12,15.5L2,8.05H4L5.72,14.67L7.11,9.3C7.43,7.95 8.45,7.97 8.45,7.97C8.45,7.97 9.47,7.95 9.79,9.3L11.17,14.67L12.9,8.05Z" /></g><g id="wiiu"><path d="M2,15.96C2,18.19 3.54,19.5 5.79,19.5H18.57C20.47,19.5 22,18.2 22,16.32V6.97C22,5.83 21.15,4.6 20.11,4.6H17.15V12.3C17.15,18.14 6.97,18.09 6.97,12.41V4.5H4.72C3.26,4.5 2,5.41 2,6.85V15.96M9.34,11.23C9.34,15.74 14.66,15.09 14.66,11.94V4.5H9.34V11.23Z" /></g><g id="wikipedia"><path d="M14.97,18.95L12.41,12.92C11.39,14.91 10.27,17 9.31,18.95C9.3,18.96 8.84,18.95 8.84,18.95C7.37,15.5 5.85,12.1 4.37,8.68C4.03,7.84 2.83,6.5 2,6.5C2,6.4 2,6.18 2,6.05H7.06V6.5C6.46,6.5 5.44,6.9 5.7,7.55C6.42,9.09 8.94,15.06 9.63,16.58C10.1,15.64 11.43,13.16 12,12.11C11.55,11.23 10.13,7.93 9.71,7.11C9.39,6.57 8.58,6.5 7.96,6.5C7.96,6.35 7.97,6.25 7.96,6.06L12.42,6.07V6.47C11.81,6.5 11.24,6.71 11.5,7.29C12.1,8.53 12.45,9.42 13,10.57C13.17,10.23 14.07,8.38 14.5,7.41C14.76,6.76 14.37,6.5 13.29,6.5C13.3,6.38 13.3,6.17 13.3,6.07C14.69,6.06 16.78,6.06 17.15,6.05V6.47C16.44,6.5 15.71,6.88 15.33,7.46L13.5,11.3C13.68,11.81 15.46,15.76 15.65,16.2L19.5,7.37C19.2,6.65 18.34,6.5 18,6.5C18,6.37 18,6.2 18,6.05L22,6.08V6.1L22,6.5C21.12,6.5 20.57,7 20.25,7.75C19.45,9.54 17,15.24 15.4,18.95C15.4,18.95 14.97,18.95 14.97,18.95Z" /></g><g id="window-close"><path d="M13.46,12L19,17.54V19H17.54L12,13.46L6.46,19H5V17.54L10.54,12L5,6.46V5H6.46L12,10.54L17.54,5H19V6.46L13.46,12Z" /></g><g id="window-closed"><path d="M6,11H10V9H14V11H18V4H6V11M18,13H6V20H18V13M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z" /></g><g id="window-maximize"><path d="M4,4H20V20H4V4M6,8V18H18V8H6Z" /></g><g id="window-minimize"><path d="M20,14H4V10H20" /></g><g id="window-open"><path d="M6,8H10V6H14V8H18V4H6V8M18,10H6V15H18V10M6,20H18V17H6V20M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2Z" /></g><g id="window-restore"><path d="M4,8H8V4H20V16H16V20H4V8M16,8V14H18V6H10V8H16M6,12V18H14V12H6Z" /></g><g id="windows"><path d="M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z" /></g><g id="wordpress"><path d="M12.2,15.5L9.65,21.72C10.4,21.9 11.19,22 12,22C12.84,22 13.66,21.9 14.44,21.7M20.61,7.06C20.8,7.96 20.76,9.05 20.39,10.25C19.42,13.37 17,19 16.1,21.13C19.58,19.58 22,16.12 22,12.1C22,10.26 21.5,8.53 20.61,7.06M4.31,8.64C4.31,8.64 3.82,8 3.31,8H2.78C2.28,9.13 2,10.62 2,12C2,16.09 4.5,19.61 8.12,21.11M3.13,7.14C4.8,4.03 8.14,2 12,2C14.5,2 16.78,3.06 18.53,4.56C18.03,4.46 17.5,4.57 16.93,4.89C15.64,5.63 15.22,7.71 16.89,8.76C17.94,9.41 18.31,11.04 18.27,12.04C18.24,13.03 15.85,17.61 15.85,17.61L13.5,9.63C13.5,9.63 13.44,9.07 13.44,8.91C13.44,8.71 13.5,8.46 13.63,8.31C13.72,8.22 13.85,8 14,8H15.11V7.14H9.11V8H9.3C9.5,8 9.69,8.29 9.87,8.47C10.09,8.7 10.37,9.55 10.7,10.43L11.57,13.3L9.69,17.63L7.63,8.97C7.63,8.97 7.69,8.37 7.82,8.27C7.9,8.2 8,8 8.17,8H8.22V7.14H3.13Z" /></g><g id="worker"><path d="M12,15C7.58,15 4,16.79 4,19V21H20V19C20,16.79 16.42,15 12,15M8,9A4,4 0 0,0 12,13A4,4 0 0,0 16,9M11.5,2C11.2,2 11,2.21 11,2.5V5.5H10V3C10,3 7.75,3.86 7.75,6.75C7.75,6.75 7,6.89 7,8H17C16.95,6.89 16.25,6.75 16.25,6.75C16.25,3.86 14,3 14,3V5.5H13V2.5C13,2.21 12.81,2 12.5,2H11.5Z" /></g><g id="wrap"><path d="M21,5H3V7H21V5M3,19H10V17H3V19M3,13H18C19,13 20,13.43 20,15C20,16.57 19,17 18,17H16V15L12,18L16,21V19H18C20.95,19 22,17.73 22,15C22,12.28 21,11 18,11H3V13Z" /></g><g id="wrench"><path d="M22.7,19L13.6,9.9C14.5,7.6 14,4.9 12.1,3C10.1,1 7.1,0.6 4.7,1.7L9,6L6,9L1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1C4.8,14 7.5,14.5 9.8,13.6L18.9,22.7C19.3,23.1 19.9,23.1 20.3,22.7L22.6,20.4C23.1,20 23.1,19.3 22.7,19Z" /></g><g id="wunderlist"><path d="M17,17.5L12,15L7,17.5V5H5V19H19V5H17V17.5M12,12.42L14.25,13.77L13.65,11.22L15.64,9.5L13,9.27L12,6.86L11,9.27L8.36,9.5L10.35,11.22L9.75,13.77L12,12.42M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z" /></g><g id="xaml"><path d="M18.93,12L15.46,18H8.54L5.07,12L8.54,6H15.46L18.93,12M23.77,12L19.73,19L18,18L21.46,12L18,6L19.73,5L23.77,12M0.23,12L4.27,5L6,6L2.54,12L6,18L4.27,19L0.23,12Z" /></g><g id="xbox"><path d="M6.43,3.72C6.5,3.66 6.57,3.6 6.62,3.56C8.18,2.55 10,2 12,2C13.88,2 15.64,2.5 17.14,3.42C17.25,3.5 17.54,3.69 17.7,3.88C16.25,2.28 12,5.7 12,5.7C10.5,4.57 9.17,3.8 8.16,3.5C7.31,3.29 6.73,3.5 6.46,3.7M19.34,5.21C19.29,5.16 19.24,5.11 19.2,5.06C18.84,4.66 18.38,4.56 18,4.59C17.61,4.71 15.9,5.32 13.8,7.31C13.8,7.31 16.17,9.61 17.62,11.96C19.07,14.31 19.93,16.16 19.4,18.73C21,16.95 22,14.59 22,12C22,9.38 21,7 19.34,5.21M15.73,12.96C15.08,12.24 14.13,11.21 12.86,9.95C12.59,9.68 12.3,9.4 12,9.1C12,9.1 11.53,9.56 10.93,10.17C10.16,10.94 9.17,11.95 8.61,12.54C7.63,13.59 4.81,16.89 4.65,18.74C4.65,18.74 4,17.28 5.4,13.89C6.3,11.68 9,8.36 10.15,7.28C10.15,7.28 9.12,6.14 7.82,5.35L7.77,5.32C7.14,4.95 6.46,4.66 5.8,4.62C5.13,4.67 4.71,5.16 4.71,5.16C3.03,6.95 2,9.35 2,12A10,10 0 0,0 12,22C14.93,22 17.57,20.74 19.4,18.73C19.4,18.73 19.19,17.4 17.84,15.5C17.53,15.07 16.37,13.69 15.73,12.96Z" /></g><g id="xbox-controller"><path d="M8.75,15.75C6.75,15.75 6,18 4,19C2,19 0.5,16 4.5,7.5H4.75L5.19,6.67C5.19,6.67 8,5 9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23.5,16 22,19 20,19C18,18 17.25,15.75 15.25,15.75H8.75M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z" /></g><g id="xbox-controller-off"><path d="M2,5.27L3.28,4L20,20.72L18.73,22L12.5,15.75H8.75C6.75,15.75 6,18 4,19C2,19 0.5,16.04 4.42,7.69L2,5.27M9.33,6.23H14.67C16,5 18.81,6.67 18.81,6.67L19.25,7.5H19.5C23,15 22.28,18.2 20.69,18.87L7.62,5.8C8.25,5.73 8.87,5.81 9.33,6.23M12,7A1,1 0 0,0 11,8A1,1 0 0,0 12,9A1,1 0 0,0 13,8A1,1 0 0,0 12,7Z" /></g><g id="xda"><path d="M-0.05,16.79L3.19,12.97L-0.05,9.15L1.5,7.86L4.5,11.41L7.5,7.86L9.05,9.15L5.81,12.97L9.05,16.79L7.5,18.07L4.5,14.5L1.5,18.07L-0.05,16.79M24,17A1,1 0 0,1 23,18H20A2,2 0 0,1 18,16V14A2,2 0 0,1 20,12H22V10H18V8H23A1,1 0 0,1 24,9M22,14H20V16H22V14M16,17A1,1 0 0,1 15,18H12A2,2 0 0,1 10,16V10A2,2 0 0,1 12,8H14V5H16V17M14,16V10H12V16H14Z" /></g><g id="xing"><path d="M17.67,2C17.24,2 17.05,2.27 16.9,2.55C16.9,2.55 10.68,13.57 10.5,13.93L14.58,21.45C14.72,21.71 14.94,22 15.38,22H18.26C18.44,22 18.57,21.93 18.64,21.82C18.72,21.69 18.72,21.53 18.64,21.37L14.57,13.92L20.96,2.63C21.04,2.47 21.04,2.31 20.97,2.18C20.89,2.07 20.76,2 20.58,2M5.55,5.95C5.38,5.95 5.23,6 5.16,6.13C5.08,6.26 5.09,6.41 5.18,6.57L7.12,9.97L4.06,15.37C4,15.53 4,15.69 4.06,15.82C4.13,15.94 4.26,16 4.43,16H7.32C7.75,16 7.96,15.72 8.11,15.45C8.11,15.45 11.1,10.16 11.22,9.95L9.24,6.5C9.1,6.24 8.88,5.95 8.43,5.95" /></g><g id="xing-box"><path d="M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z" /></g><g id="xing-circle"><path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.85,6H17.74C17.86,6 17.94,6.04 18,6.12C18.04,6.2 18.04,6.3 18,6.41L13.84,13.76L16.5,18.59C16.53,18.69 16.53,18.8 16.5,18.88C16.43,18.96 16.35,19 16.24,19H14.36C14.07,19 13.93,18.81 13.84,18.64L11.17,13.76C11.31,13.5 15.35,6.36 15.35,6.36C15.45,6.18 15.57,6 15.85,6M7.5,8.57H9.39C9.67,8.57 9.81,8.75 9.9,8.92L11.19,11.17C11.12,11.3 9.17,14.75 9.17,14.75C9.07,14.92 8.94,15.11 8.66,15.11H6.78C6.67,15.11 6.59,15.06 6.54,15C6.5,14.9 6.5,14.8 6.54,14.69L8.53,11.17L7.27,9C7.21,8.87 7.2,8.77 7.25,8.69C7.3,8.61 7.39,8.57 7.5,8.57Z" /></g><g id="xml"><path d="M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z" /></g><g id="yeast"><path d="M18,14A4,4 0 0,1 22,18A4,4 0 0,1 18,22A4,4 0 0,1 14,18L14.09,17.15C14.05,16.45 13.92,15.84 13.55,15.5C13.35,15.3 13.07,15.19 12.75,15.13C11.79,15.68 10.68,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,10.68 15.68,11.79 15.13,12.75C15.19,13.07 15.3,13.35 15.5,13.55C15.84,13.92 16.45,14.05 17.15,14.09L18,14M7.5,10A1.5,1.5 0 0,1 9,11.5A1.5,1.5 0 0,1 7.5,13A1.5,1.5 0 0,1 6,11.5A1.5,1.5 0 0,1 7.5,10M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></g><g id="yelp"><path d="M10.59,2C11.23,2 11.5,2.27 11.58,2.97L11.79,6.14L12.03,10.29C12.05,10.64 12,11 11.86,11.32C11.64,11.77 11.14,11.89 10.73,11.58C10.5,11.39 10.31,11.14 10.15,10.87L6.42,4.55C6.06,3.94 6.17,3.54 6.77,3.16C7.5,2.68 9.73,2 10.59,2M14.83,14.85L15.09,14.91L18.95,16.31C19.61,16.55 19.79,16.92 19.5,17.57C19.06,18.7 18.34,19.66 17.42,20.45C16.96,20.85 16.5,20.78 16.21,20.28L13.94,16.32C13.55,15.61 14.03,14.8 14.83,14.85M4.5,14C4.5,13.26 4.5,12.55 4.75,11.87C4.97,11.2 5.33,11 6,11.27L9.63,12.81C10.09,13 10.35,13.32 10.33,13.84C10.3,14.36 9.97,14.58 9.53,14.73L5.85,15.94C5.15,16.17 4.79,15.96 4.64,15.25C4.55,14.83 4.47,14.4 4.5,14M11.97,21C11.95,21.81 11.6,22.12 10.81,22C9.77,21.8 8.81,21.4 7.96,20.76C7.54,20.44 7.45,19.95 7.76,19.53L10.47,15.97C10.7,15.67 11.03,15.6 11.39,15.74C11.77,15.88 11.97,16.18 11.97,16.59V21M14.45,13.32C13.73,13.33 13.23,12.5 13.64,11.91C14.47,10.67 15.35,9.46 16.23,8.26C16.5,7.85 16.94,7.82 17.31,8.16C18.24,9 18.91,10 19.29,11.22C19.43,11.67 19.25,12.08 18.83,12.2L15.09,13.17L14.45,13.32Z" /></g><g id="yin-yang"><path d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A4,4 0 0,1 8,16A4,4 0 0,1 12,12A4,4 0 0,0 16,8A4,4 0 0,0 12,4M12,6.5A1.5,1.5 0 0,1 13.5,8A1.5,1.5 0 0,1 12,9.5A1.5,1.5 0 0,1 10.5,8A1.5,1.5 0 0,1 12,6.5M12,14.5A1.5,1.5 0 0,0 10.5,16A1.5,1.5 0 0,0 12,17.5A1.5,1.5 0 0,0 13.5,16A1.5,1.5 0 0,0 12,14.5Z" /></g><g id="youtube-play"><path d="M10,16.5V7.5L16,12M20,4.4C19.4,4.2 15.7,4 12,4C8.3,4 4.6,4.19 4,4.38C2.44,4.9 2,8.4 2,12C2,15.59 2.44,19.1 4,19.61C4.6,19.81 8.3,20 12,20C15.7,20 19.4,19.81 20,19.61C21.56,19.1 22,15.59 22,12C22,8.4 21.56,4.91 20,4.4Z" /></g><g id="zip-box"><path d="M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z" /></g></defs></svg></iron-iconset-svg> \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/mdi.html.gz b/homeassistant/components/frontend/www_static/mdi.html.gz index bdf10ffef9ce864fc953ff69bcadef5764cec272..774ce87fa36a21fb769b21c4d52f87df9872f890 100644 GIT binary patch delta 183408 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 delta 180586 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 }Uq61{zxrWu8pF~(LY>ABvahjRdUI)V zsIP@>c(%%iWiH<~retTC&8=tG4Zf+&<uIe|R_v3*Z*8WnGSGc}=B9plkC0BmZOfpC zQXyVKiBhwY>+e0?`$6wb*24=4PKWun$G_Kmeq+U)>(7_E=LkD}Q>wXVt{%OqY}>~@ z$Mf`RLf>AA`Z&#m)nj3ZY_)}3HCxB=;M}?G%6u8m5<YELXKNG<<XztX=ixEsJr7@9 z)vjK)WmEhq?doM;zcU?KHH}f9El<XlY5y&qD+1!F$C^~ltY#<IvmA9R>1&YcWw{`I z^`k`H)R~?xzFMqPd!@`cf(~4;u248B_k8N#t7~{vzis=~wUB|?Dr|d3u)>bxDieeH zTsLf0d_TS0^D={q&gEV+2HUw_(n)qXTLo`#$$qN4KK@6#2Y2+9Nb}eUw`2=0ugX|` z<!HjibskgSUd%DL*`D|2#O!*dwB9}SGn4rk=0q)P^mAQOo6l+7_;sqT<L!_|x1Z^# zUVMK^LTPn!h8E8$o2s6(i=Voj_!7|>Ej~}}ooTS%%STBzZ`^BduiCfo)U|Kh+n4@b z{e*j2n)Vb|>3@<wt(`|qYrgLd&edBh`Ml5Z)F!VVmA8tUUMO%(-m!lA-qk`1E9whA zO?}R~Q}^hi<?p_IcDq06@cVN{?wQN>SN@v)q&P^QZ+6^!kAum39<BNR>8@vD_JN+e zH$CnK>kG=QmAPnUX~nEt*f(Q$(Tx)k#<j&IuNZpjuAMVuVDP+I$H;KYRbaxt#8=+C z3T_LXj8J0x{9(!(y*JA?Oo&?hEPubL`X{Z&o9q9@DX>>x*`d5gcCNfUOIpNkHe)%_ zspYB}Y~0iN52b%uxnMTaa>cXuTm37ySaPV&_hw%$%b3k1m6g0@pXN%QWq-CPHyoB! z-E)iW)!MlIryA9lJ6_q-WE6Tol1*2ZIp^lRNVgjdxA>m!pP=K!!*L`$-6}UdwM6wo zU&rwctDMW~HSd{=236<sb<dwM`OVt4y34Pm&%gPy&8$Kv){NPKO-UhlLqmOCO(b9F z+!D7VcJhI$5+4@H?Vh}JmFi9H(7Ce$7PKrZck4LLULISfk#_9V!qVt{Vfi&HPWxZA zepUTjII~yprpTrLM)&MuetlWh^TPJpt>&Kv2`{R<H!E+r-c~PLxXQU?zmnaOb9$X? z;$45#x&$tf)6rJQ?oFE-@>XEZJh86}|HOCxzaDc=KIwLlrior`YUd}(J<p9cOI=)R zpvbItAyRen3Z{s?bC<GOyO*8(6fyPor<Tj#1nwK>{4`&?H{tN6H*<{6yGAT~6KAhk zu}9j8hx?`C?V2OgjQv&K*4M7+n)ao5>Xj(YuWe-~&swERX`Q?IYhUpDMSMYd42w$4 z=DC@@p1FKo#r_KyHawl*QjzjtN9oD(_w|(#oqHk<FdbA7S{4(%xunH(+As4}?Z5T7 z+)if2NY8vft!USk%bqGngYWjwyTe@*^FI00+z&~OWdd534<fg(&eZz+IOyTm`t>@- ztF50&$F6vmKIiT1iq=nteE}cdWX#^Qve}~PYJRtS)SSfMW%K6kul;d5@Av~v1Mh1~ zmj86h-Ii(mHfsI!lk6}4^Do=ZsTnWwbM3YJkB)8gXn4uEE!u%|vSRy&rCU0xcT99y zXtw(K;m4Pk$LD7(uTK><)d;Y>xMJo}*@F+))vL6y?I{*bk%_oqk$LVx+WtJY72DrE z`}uc!yuAJXf3@eU^PlWcd@(JZ{WC{hb#j%3{?oHfQ4!76vz<-7AG>(W{Qe{IYkm7< z{--s6uKzy1{Ho2T-Cwsk{9JWPtgPr|h}?lcg*P5;WZ|4OA^p8h%hL^x6)cNQ798XM z)#lf?e(RSl^|NO(t=gJ<xk!*jdd;Hu@=dl|?q0iHUh_F3CrDR&n@H80lUxffAKq2G zGQf1kvmK|FMAak~e4D(};B%Sl#DCk^x1amCo^6M{&Ay|HyFV7Kx;NRjz|@sxlJ&F= z=C%_VxFzzJY8{bH{~aNkFZ%nr|9ty3OqVOCmb?pl`S0uZt3tXH>T{JeubwdS(^vDk zUCQuAaNQ!tNwaouT_~)7k*y;pZlUpC$(v#4bPjK1{IJg>`?>0pgovfRzK^r@(heIo zu6ub<G2xe*nfy2X`F1rCS(|nqH#XV*?NF}G&y%uqpT2YY&D{Ha-HNK2Y{Bi4cM^8= z#N80--nb?s**3TLxk$IWWm;bSm!9uxvC4PntW9$=TBMh6+xvPMduPK#2HxdK=MH_+ zUgXYPR_roCf<2OP+2w$;E4K{i%uvlMeHdqYDj{&MDC64dGwz}nFS%<<oGK81)mOS- z=48;`jJvh^E4+*E&C9C!_4VQ7$M;RYl+5E2FcuE)?9;!a+xM$z)wIHk+g|Tn*<P>Y zS=^Gg^<P!ZW3m6g=CMw_u=;O*bGYcl)(?EM+?;Y&)GGAu<bU}sYjb*KRh(bu|J|)& zTT(*b6!R%%>^-&q_Rg?am5<D6FW4{LTo#eWFhNylXIJ>Or{BF?rij`pNViOreQ>8H zXn$RG)!#2qGi7TgnXg}LV)W|eayKQWyM}8;>Y2Jv%$}pB^C|7wm2)5Ov}Wg&F8XFL z(f@4MugO;mP4cIFc)k34{q@&I@5G~C{;m6%bNuh4hl`ikZI)Vh?t>Oza!brBgDXbg zt3N;6=2Tz*)Md*(^LMwW@Rv__c)vgPYrNf`J+mtMzNcJ&t>$%2xKsF9X6z=x&}+`p zs+(CGmqt!MRli0n)JI54C#vY<ZLZsV-H)w<7w$0p%pT@Ybm6q1@-~|aZo8#SE^7IE zjsI`{<-O6WrG~L+2`4jm@7XyE^xsXm&NSDjSYcuf$042zEw@f@G;^6N^E!_)^Gg_O z>x#=a<JoTr&F-4SE4XfZa@cI!>zv}++mxT(X6XC;+s4E#iaobpb*d6m__l+YMO(J_ zUn!Ev=Wp05_{aC6>X#iIipICvx6D;cv}R^luDkM%<k`uOyZ5T=Pj&jwTxfI2`$^8~ zh9%M-VN1Bqv2j^FT;jRltTWH%XO@-orXLX9mA19U{PAA<3E?MBnVC$>;BYT{_4`6# z_oQDp4}KND6BGUI#FV*43fc7+9KOAqajWmC)pGMM4ReLu6dqjpdPhegKW&mT*D-5p zJ3nQGdn;MGH%~gaar<uNI{y}vwZ(Eg;${c;#gyH?uuhq)IyZjaQID543bMLp6Pz1L zs(()|^1ax%r#PUZrsc`S%Lg9xwsHqsSVp})?<uR?={0HTwl^L*cW!PhD7j?#t^Qlt zgC#5U=DExiDGn2jdKTkzcbb9bH)nxEBFhuPr<WZSo66(OC%rs*4%>#TY#x?}=_(Gn z_UxLXDw0xHLW{o~wEZF9n0)NtgKO3-Mfay9&l8TT3awX3;Jo}bqs{u@jhm_WU;WLy zR#AGRPU?H!XNB9(1;uhbv`x?Lw3L4q5z1BXe3VPGMEl@nQOonI!jI0}{_C86^=p|a zhd*0I$NwoPnq&MqD!ln^<JWb!1;nGT<#^4uY;P%UPczrHHDj38x*+r0v8R)~^4=`C z{BF;N6$x{eoc6mH@w58lWS(r@U7IJEzARqyZNtQ`f4A)`J$&56K<brRtIRVEC+jy6 znJ=DB=$T*d$-`d!e$V>7WlYZ!PF_0pFQNJDg)KAr*Xo)^Nxu177A<@+>jP8pm(>%u zZ+%@8^yidPSj5Sei#Jbw%nH8E9KI!4*UctbfahdZLjaHN0+!;<n;t}#XfAvI^-G<s z!qdz*OPr7US19x{u`Mt^yl17dU{Z6(tu(2d+s<W`Uv9I?cvF8chtGf|?e+)9rq5<F ze&;qANay%8U%KvezN9Ah;q`-lU!U!*J#oVKv7cD(GCtN>ilW8GT)I_#66^1O2-#em znXECZaMigg9uKK>?aPyuUgaKllP=LH-!WlU5zpqSw#|~}k!<%jS~qm}Y$}y7FYrj& zSYB#a^1&c_*6(=1ILn>&hjUhZxR+@frxxRvBk=gFQOK0LzU6nnS>Nkde3WdLDqh59 znR9)MC;$DJZ?{Cc*WD^!a%91Uwrko>>bnmxoAK<a-SYI-af>-Ts}3FycfH|RUSjlS zi|gWxRqQ1%7rQGNYPA~)?0Wxx&5@guM^>3%zgwSOAG~40Zo86fE5`eenAGbRUtmwG zG(EdDw>i<o;KwyJT_;DS{WmTze>~yVw~2dGjM^us$?M%#5|^p{#8+zm%yiNT)*t)$ zgC<KdA9dQMd>|-#@&@Vh>xXjt#n11z-B(lj@5|4x`uuH=-dXC}xao^uth9Jsy4c{T z(Vf;Gr{8RjOPcupv)1anYh03YW*tnu7g28=mtSG)C-iNO)zOaI&wog4G4S1Vamor? z4_T*~>W$_v_1@Jy^Y<3aUBa5pwdB=z|7z8fYpbuZpGi9*Ao1?WH=`A5$E+h}p5^ym ze8<8jJ~S|Gk;a`kEB<|spSNA@6=z(i=(B$J-nqAmE0jI6(|L|M{yuGyT6a-nt7o3= zuj9||*Gt`sH}1XOGEZcpu6s%SZU1LaKfZpPZro=6p(5if&xzfCd>1}jX|w*kcj<rm zzRmk21uyY9UgoxGw&CCq+-ID(Wp8_q<tC#{+jV@3axYCBe)AiLPrvo7a<6%-ghUG4 z4->PsmrQ-z`6_SK+<)n-dTf2*e}fwxl|G3+ra5k<;WqV~-l|*Kp5x!X_51zPZu9k; zcz22)HT2IvyXEm2iQ4nitEx=`bGx7ShtK%9xU}id+P+6$pB6q1S-fub{`1dsCho4b zye_dm;imOYdFQ{=Jo|sIs!q>5al>P6=B{4DPjOycxp6=2?Q1J){@rfUw*8iJPS^MJ zn$4%*NK}`ne|hxn!pHjCpM?UyP3Muy%H9;GtQ2$eg2eik8>s?fGxd*um;P0EyTZu1 zyy=b1<EArRZtu50lQ^iN^!V@W^2*E7AJ2WAcu9F%$imee?a8m6o}AljcsKE4+w|*K z9?LoRZZy>DQHiSm{{3s_|6gBU=6635pSyDL^Z?~063?`EERk)W(YrM@KdfFUm*;kL z$<@a^%Ne@2l`ZC~*<i#}?iY0}Bq!K!x|4O<iKhkee~PB{?)q8!anovZ(YrtMCL}HI zy|l&d?na;BV3v0aG?lndI5?h;5m;1Iy*l68_ET}S{L49P(wn|ID#%}|-S_j@36+a` z!s7!j2v74|GPUaG((4gAng;hL=dS-FSid0IRqLMR-*Xevoh-!NC-)hLJe81{{7Tp2 z?E3ilcspIoCqg?ug|hq2>RvL@{#(tI)iZ@GzFP%EOEsT6^WLJ(`G=$3<XC}@&8%l` zuBh%UabBhTIe?$dZRMkO^V5~iW_<i!TRD2pzA=>SiI}tUN=DV(*>hr-uYGps@wyCV zue<N-XU>+=FPB*qSmH79VX(c{!S|V(`Y~El7kN!!>=P=th+y008hOB?SMN%+;3e59 zuidvgC;6W|P;>3o*A+L~QasGw{VVOfe`djj^MBMg8V1kQeOK(q$rjEU8a#)sHl!r& zzR%&fTXw(0tP(zJEoeUNI^$apL*w)52O>8b2lpnNET})WGvv;OgYH`szuNd(?=8FV zFkj^D(~sAm|Bvx~V6xR|UYCmDisx#}qOU1+Jgq9{d6^(Nb(a3Bxti_~Cq+z?_H4YI z{`KG^8}m7dd$J#`+4w$+Ns#S?&P)518b#TaA5D%OJ?ycr`OCAzA7t~FWh6|Ae;4yQ z>weX|yH&eOUvIYd-&}9K{`B1CH|OTxsj%Mt@y}lA{Aau=Gt4Kv&fT59sBuX)v*r`W zzNR!wx8E!F-L~5%G5PvVmvSMe+5qKuXE=89PxIK?+V@}O+S%#TuLj*pV%e%x!@Sn@ zO~TP9-)}}X-3Y2VZ~Wt$QQ%_}?H~!y7b#15eU7Pa>W~rZ@p-g<y6z&z;QH57rMExU z>Ug%WL{=)QIq`&Vwc*zlbCqsc*GbD<IOeD$svEgk;&+yW<mJhV$0qdtSG)5pTIKiB z5Z2R2PxsE>^QC*!q1XPCUS=<d*?xU3b1&!PYdybzm&{r-ZIxR=0h8~o`K~P68~@+o zZQr!9`Teb1%$>a++*=y<yYJpy@-`<}qW+1Y%VF71Yi_(NnE29kqm-!o#(4)NntUG1 zwW?iFQ%EwokgWH;vWwxIg5yF*j*l<7nlo=)PQH+}`>M~X&8wFF2<MyUS?#Sk@#6)T zf9l-PbJm2Zt93HAES@}NN!J~}1=ru-3fOn~LG5yFlTw2{GNJRNI-KIy@HzWrNjNXt zSw1DH{zA3J-p|&%!){!esws8SvD-o6LU{8VN#*O4FPm0cSS8<x+gm)_Y2tgQxyze3 zJG)=r;u^6_HSPAN2I(D3beS$n=GC?2DxVE-H@k9C{D$#2%RHq+cUyMVim$%OGi~>) z#geDjvsq;K#%13Yn;H5<J^NKu!*?~ArNSi<YX3csw!f{f);bq8vv0zWU8$V2V~n(U zIoEV;acC1iZPM4`Uv{HHBaHvtGc!TsJTBIioDLmxXCHpR921)Nroub;z0%zU&mLTH z>d%ol*sK>Beug1tYsKrLmcx5*<)3YS>bhZ-(%N|v;!P=PK0RGYR)=Hz`L0Z7^Y3^6 z;{CJfO6%9pE1ntNsegK*@Pki`6Vt)Dmo{ZwXFV(1JEhGm{-t7CzjW0hU5{VCc9lvz zj<o80S9tBV?<0;KU3GQN7f-wIT$%Rg+ULzp`8m>zjh8Q;ll;)AQIP+Xy)ew9A(83L z5eBb`E)h<Ly8F7syu(>%E@<5lbVc%Z%p|^v=T<&AXlj-w*Obb1KvJ<@@7s65mHBI* zN_Z3ovC18Hb~`&sNVWErNcqB#jjxrnAFc7a9OeK0*B!rtFS6y~hu;-<9>30dp<v?W zOHJ<$Zr_`_rnoHRa^9JY$=lBrI?sC8xGlNID65mb-&RquZBO*7CYC_!x6aR-6^d<L zKG{syIeB93_VRg^Dcm7(E@zGQWY#xJ1uxm9&2>XM%<#;1{^_~PQ*;@o%t`L5+9~@l zeBz;5$IZ2_vG1$i@Z3c@TByUOMaL(o{V9w0+Y5HBPb?=c3N6l%*`B@j^2|F2x<Vs- z#j|8}o7Tn7vGiGP6|^!f=VOP)?M?%)&>4Ew+wUFwb;<ImnvvqYH;bKAHkV9S+Ham) z@9EmIta*!|``4cRz0(Xhqo%m}njAB^xKm(H{Hs&Tr)t$MeptCfS-3^3Y)8_{CDHy5 zo~JH2_U$6iBQ<u>tM$3AdyHGeX3DJyU%mF4@l`|JpkVgLoKfoQZrSckUE(Zz<$SrI z#d$%I2?5)KTqlW$&X4+e*7;BG`PBOUZ9cCT+WxCIyRq!}{kyN$d$@`mtv7wNJZSH) z-O+zj|6eIv;@nlS>c7|S3qni&tv=y<{^Q5;?Y~aTcwf(5<o751v&g@9VfFk@9py*b zRg#*u&MN+Ux30eU&Gq{t^NasX_0wXQCws5@5C72#Yh2YXn;r8BEOt-p`B>SpKlzRR z@!tG5`o~}Yspze5nckFCIBVh2ce}UMEM$r}`nrKZPo&D~+1$OUDeK#dvL;N({=M(& z!3p}cl7co{yHj+R-MVM-&-%#yd-++5GbM|Ck0@5yY~9K{bA4yZ92=dI^0TRjliTL8 z3LP?e(YM@WhibW<zkBTG)%TQnrMdnbRVmoAK~H-3>|XgFtCrNg-d%5`?sJaEeBSoh zUuzi{UHQ{y{<$z$;jImuaOQ^F7h<`NL>-ttt6)Lq;pQX!$AXSt{@W~&pxv`=m&2ux zr*C~wR?Bye*;th6;2AK>E+=0n%*?H8_b%^=5BugnYncATBKNUV9OpZqh~v&TUnzA@ zn=^fJRFFlrN<ZJR>ukbeoG&(s)^EBjw)7>Roc^2-D?bz`F>7>GA2gixA@y;=&BJSZ zuJfLs@P{K*(k9mPOGVu7@>N~tLBTSaMlz?4y-Rx>AoNtscy8_z=bH@Tp&x2>|2p0* z5UiTss^@HUsn(`zp7f*N&VT0GDN8=zf9C3h*Q;Ns^nM7=e|7x!gD)pmsLs{vO>X~D ze_G_)H;<~9kKX5fz5d&@eW~{w30t?`Np+RkZoPHk_g>vz_~x~K_Fuk_4L)Z<Eq;ZA zNiWW>+ZxtwbXoT_&jh<%22<0Th_>t#?CA<yn6B&HSz+}(U-n~)$-cc)U;K=E-EsM= zZ|voH=ZatHme0xTDb9XZ`+-$k??x+Q))ZeQr+W4ey+ze-8HZLS&y_0=b8^eATyI`> zzwKkDwDI${eZ8R^3;Z+>mY)mJI%HUt7oDhgN^|Yq=5H=95~I^s-JU8Lc>U-uKUvum zCmN3ipHEr+PCP8?#D@(9J0u=_(XQ>wTe|<^`Va38zx}?Q|KH1pkF_$cpZFVX_e|{4 zri}A*E918<s~4|cebZ|4&vpI!+H5M%bvFL1F>w}5%dNeiRG#p2V_!&PE~k!rgJSRE z1ktv=YG--AKaPB7@+-Q#X_1b-`}IFY#TCsv9GyGFPczTHb|q%1R`|u0=I>Ljm)u<U zZpqyplV8r5+!CYN72N)8FOSRwOV9s%yYtw&o_mPw{IsD&VoOkcc8g7D@nHi$?X+Ce z>J(0^%1fR{a_)b)Z|O3BjsLxhDVsxQxyI`JRSMs?Wpn9<8N&OHMhY&`YPZ;-u|h1E zXZfvFJK|Hf&8`*rFTCVd%FUAh^?a*zH!9pYYBh73Y4x3HCkitYCSII+vH#D_HM_$@ zZysMhb?v06HivKN8qJRleV*2z``NeR<BrNz|D9LWFMe~nF6LC2pVjgU%XVy^=5Z^h zKEA&4`-it*D_w7}c-}eK=ajPH+w<TPeKNf<LOc)q7SstSSnc6^SnC_iwKU^gz>z7h zleSxMU6$PT{*hYkHl00}0~mQjDn6tr-b{XR>(SyX=ik}3pZb{~P?1)ne7#U`VQu|l zneBHS>UZWpkhzc@%(b!M@{a9+-DL~vZwFY4YI1JrpY^-&cU184pLuI<-FZ8+-0ZAe z#74tsZ{;>V;=8NA??~3gMGD`RcIa2j-aLN(htP$H)xyT-y%pW`yJecLU7aUzi-YIe zqi@eXvd!E%Z+leZ*>mk3A4)!?&p%|f#=~ch!Q%ReqBqG$Z?7#k(vN<B=C(W6>Ww#- zXjSjkzIEq@Q*Haj!t^DZviLr&Jh*@(*~P>y@TPgx<IBtY_wQNvV$0RSRmZBWZG3%$ z*93fSd$;kTWTsH5f%frSt6N@nt7A`QuigLO@8Q24E_w^KZp^-XVdlDNcDwq`^0-ur zPpVk&x7qFL(NdrO==cQg$<>W(oz_V<7xyN+uI5XL-+FB8pF<Za>@@aV4K#kU(5{?2 zeRWym^NZ3I@%rC<-ruZDt-d|CbkSnxOIBYQ{U`27*c35cQLp&X!a@!8R^fF1BTFtO z{_Aj4$-lFDL(|ro4Tt-Vy)yqPvGE4mmbFeV-Q_jxu5RSr=AqoMuYR-6<@2{KQeP|F zy3?uLa($ornQM3I;&bhml=ttitNi=@|Ihwc*5=!<&i|juALdlDbL*99+v=WV{<|M? z_<!{FdN23GUaup}8=r4(+sF3s;k|&m-^a9$KM1|4`Q-J#K*3dc=`TtY4~JFz&fInL z_qUCik2Cl0+qZ`4{$-6z|D5Ag!t49FD*Ge0-CUM*Gt+zW1y1jhJMQzjS-FFSo!?Zg zwx6*0n;UmtedFcyte#T$peZ|7o`1~w<Ee%AsSIt0i>i|fpUJjy7rbcEDY&&FY2y5M zOu_GqI_9L6e7?YXN;2g38i8poq3{0Ba8^jp7WnhURZqj-b`8ryo;O<pcsHH9QOglj zUnO+7=JFqw18Yow{t`9Y%zNOMhKQ%U{Ibjfr{As{{xp<)<vz9T<6%n?u8p=r5_(r} zyUgQ$>uA&Ua>~sT154ZD4<--yJP%SdU!1%0V~>-`{!ml<{WkS+Kkb*@debY%s@FWj zecFe`dlheU+tu&UJ+w0~-2CLP+XoJquGm`Jy~U({^{1#}znzzS&Ocr9_twnte)qTQ z`Jc}co{^(6%k1HG|MT(tbW)SLC+)d)ana+<Z!eFn-W<u4W_sE?&wI7S#VtmWC5Prs zIdx?D)vTpab&>bKU2yVc6nV3zUacdkJjwF5*oC{t?*84z#_adE&p>B0i%kB^P2r0t zO9{<d*?4J<`d{Aqe~VVnJ+^txx4zr%TsOFn`{aN3`kGyEV7GYf=`DNZ&bNq&Tuj;! zA%7|?{+sE}oVy;KhRfsMW_!)qoMZZPlkof#r>DMB(|GtcU`D>k>6aZMYeF7NovF_2 zYL=WGdf{VW1M5Q5D{2oGWUvKf7aZzdyr$Jsz~$ZJ>Ab0rw3aP?eQRdD@OH)f{x3v0 zB8B}=%Iv#wDm6YM<h~AjtpDoR#r!rsPnRcK-j2{Sxb<hdpw^<(dM6zg{C@V*?cHWo z%~QE$WuITXsnp2i)40gn9uzx$TGG@xk-J;ZR5|=Vwa+^5r1{(bKVKg965A~l^TEL` zdeV&t;$c~eFN(s=ciridi#oOIMNz$Q(5sXM%P;4}|G9hk_xJPn!x$XPTbMS<DM`2` zE!dnh>8Zc9`+M0%j~XUcy6u(^zxL_trRl5Ub_CswooA!IK>tIwQ0E-+zy9kcnrA&a z{5gOA{CV<rYtBsDo!W1e!@1q%XHe?z_}vEHz9wC-51B{2=2Bb5u~Ei_A)Gbpw#h`U z==!dNqWtNfAAkPr{_@t|nkdH3kEIe5na%EnHWq38I<oNHtam9>x;o|4mQ0AbsKD7( z)6@F=#$3I)jD;q)2`uxZw6)9~O>-97ys-QAztO#HF{5ke%k0;yd19siYL;%&d*<~2 zpL_R?l%~C*ySDOOioZQ$##Tv<In#FKKK9zCE85ObfBxUCrFq7QKa`G7p0;{g@0SZ- z!|vPGM`|tp>-#;rgl*~MO<H+dcj-UV?cOCBRvLW%^|RjDvC2Q(zjQ~Pf8_N0TvA2- z=hqvSIxY1~xNs=1auN4bwWU(;gJ(@=i1XX76I^^rxnW6|Zsw#+`As30d*{@z@7ex- z-2uL`m@U!)+h*;o58msZ_Tc~jy|a4{w4Jldf1}~HK8_>viSDuwMdk6E1m3STGe0|j z@+qlrd|J2P?9eh<F{OHHl&sAvlc~S|t(}xFD&f>P=jn3sH}CWJ#?RYV8+*R>)bD@l z<;p(6dX^HGlOx4Um*hn%^+q>lO)qIa@;Q8(>BPgU0`791?@WFp@@7{(M`M|XT<Oty zN0fx`ahh22v2BZZzUlJvrw;^M(}kaP?^*FZ*8787Z%u7&MP&Kk`gao5Tu+zJ+qaN+ zqF&+zLA9cc6KQKsUf>gY9h)wy|2NBm&E&52u_ngG+K}?6EQNE;-+j3~{r@YO!i86s zAKzQ?ar)xu)HgiMQSmpbmH!zvwbg&y9(?#Yzj@6AmCW~l8`Sdb*bKI8yq~uD{K5EO z{g)OhE`?!#mMA|jbob?Y|9s*lF-F%`ujlQdVf8!Sc}`<jdsJpG!>o2CD*8vA<=%if zMgJrvA5?nT>hhn6-gPC|_JsS7m&=k@H{89UX(d?g@+|7M<kr6}KlV-iestdipTrwm z>OVN|)n-ri)9o>`eRA!eV6(4aHbcna($@uduXkP#itNq4uT?hvd_)Ly>KjI}@Y&x# zeg1sf-t_AKKj%e1*NfE!&Pcb2ieIP^|KtMWt4)8UjwV~(4yrqLP4!OP`m(Qy|H_}a zw=3@95(w8yY3wq1e&DyQ_Q@R@*B2D6eRS0J!n4wPk)89iHb=J1_;kqW={K9R&njnK zt=x2|SYr0m=KJM3!q%>=t1kXn-6Ojw?EgwrbxB>8C9*D$QlBYyFinZ7TxVVvJHbw6 z#ho&qe91p-@2|-oyM06^tL&6B<6hb6X`dtO?H#L6vzvJ>+^4@<CY@JdcK?Q2p+g~u zCX^PK3C-#Fcf3AsZSVE1eRrJp-;}lZ8W42E{@%wgy)%<|@^rMS(`*j+f7hRVbtmJ+ z#EhBM8zR|v&V9eiIYsUgm;bF#J1(!ic~bdq<(HPgR_SvNdjIWSzLj2iI+Nr4wTGwL zpBPO1&^<N5XRbl76I;s1<Nbf{<rFRSthNp<b5b$+cTs?E>gCR37wR2kU(Pan_w(!W z_T{ZJocJw54UGikm<z6_{Qf@Su&|HXgPxfNe)-Q*%{KFe#pZ`SJ7<2E<?)6?>$e{B zU^}S(B3g3e$_2(sSIQdx9x68dV-+x8{DyMlxr3Lc?2LFj!|<^6k)1jP$3+8XKVG#+ zfgyf<i{jZoISY)Jac>S?648EBs=l+~>28C~HzLz~w<<7b-FTw%;>Cr>2X}YhvUXfI z>BKF;eM<_~9XFg3U?}zW&BoJ@mUcQjXYV)|Hcw(>$D5lv4r)oh8m=laPu)x2TFzr% zFUh@T<*m!RcHi6jvfx<9vdr@Iy~ixJOmAdY-%!)Gw)Aw&MRp_QPwOSMw7hO97pxM$ zS1&igc2}b4zldZG!?M^r`_8pR>xWygC9ja}n_gA5I&)w3k8fYUK7IJ|@}=;1?a?o< z6l!g`^_O+6_u~hAjz8sdMQ8l~pu0`u<P?9GEyWhcWt(qKbzZtjrhb!+`hKU(BP}** zpAOzL7CMu|GE*+5&)%>`^Vv1okLIerm3vZrt3`b4bzEkCbvb=e{n&@U62{L>9$1Iw z)GEtJ7(aUa^~U7QvQn*m&KZkZR%O3<dOW4HYH8o~WPdSpnH^EvlvhjZ|CMs|s|&kZ zxVrGoY~AP6k1vmx5BF0(m!Yq&U$^wyW*PbF&D(2#-+1!*Fk{Fxeva9fbSivgd7i!# zl9yhPr#vrl@5lN(jpxG5SsUViyxH)h`Ct0lJMZS{v1(RoeBQt}QR~RjD)$Mo>h9%} zIZqZ{@w-}dMecleVNIjN<A!H(+nSagSQw*oTqAE;-XRv<w=xEM#WS4j&VF6^buYhG zWQ2?6-psASfs6aYvR=G1PkW-j-)_&o*>S)6=ilF3|EFg0KgVY?57vKZ$&c-q3#~UY zm{Kuki#rGZMz`&m-TUO7?|E6?e;@b#|IA-={q6t%KFjURo%zeaPd-ooOp1n}(3$!# zhy45P_t$-2wZnc-WhlGazYn4D*Ak8#O+8+;`SG#T<FC*5)j!xY-`>96=bly9;)e_Q z7p^%c`D?dc!N<c_Bv>=NO>*2O)z?Y!W~on1y>KEx{n)Z^nZMY!9rCFAQ#mDe-nL0) zUZ-C4GW|2ry_av@AJ)l#wED~UutyztPE^JJT<BycyMOn^P^ImA{>>Eg>9eV{%Ba0` zE#`$)P1o@s-j7T<PiOxQEO=b-arTA$&2Cxkei}J%?uk6#bo0RM?`26cZx0FSi_2cE z&njNBY}Y+|TfN7YmrK6tSX>o6Ai8L$X5@N*E%Adl4k%9dejk{Zr5drwZ@ulR?>-MC z9)4f`?8FBfQ>X6SP@hwq(yeA*V2u(^SbzK5CXrd^zJ|@5KYw2Qy}y4lEt%IHzfjNf zDl+5bx3JWCy9II_Q~APF``)PS|9*dRc=S}U1G>WX+R}$lO$`^wl3d`owoIyeb@K6r zT_+dT>SW$pJV)8mqtW5D;<5=B^NwU?Nle!E-Rbl$X2FvqHpK#O78Hl=JfwZmO7X-0 zUv_*CpZ|M$F*S)_N$RQ9y=zC;Fa4MIcAwq9Y|f%@Zys@!EOP$H!^1Rh(eVpQf|Wyd zzx4F5;>dLV`A@6<OWFRZQIAg9+uOeWWv+bu#XaGl*Xr(W%=>bq^uP7o8Tuu+lP?QD zd$A-vT(JC)&8;u$SJTSo>#IerEP41>{>`D-p7ZCk|E_v3^4NdRyR#P(#f9S+#Ku=w z741E)zj)89(+)-U|HQjLo_^eXXwBD8&yJc3x7>SiPAV$=(!NBiaOU{>)7{_v7-!v* z%s1V$xq?@!GDrK0Xz}7_zo+}xzxc!w_wIEWYtD;9VT)gKKQ0%)Re$*qQ#n&eo79dI ze-mCRzJB-n{hsPq-#?$3y6AvZRa#+p=0ua<EA(!7Ij*@HeY$=_K@+d$NnN#^sx61V zYb*cXn7+_4OOb1h>TRRXtTW0NA39fW`23~B<H=Kfw)VEF-HW;_<on6`{KlWjuJT>N zy|WBTmQ_E$`iDs*c}=k5vP{Xlw?2RU_dRRl-^W`sw3fbJ5N~&9SESwV`>W5@nO-qH zz0EateO=t&gS+1S>q)y5KhKQ6?x*Rce)~&3*I3z~OnCP8)$i?}9)A3L`tjlGuKaf# zaspS@3v_sIbK?2#xzu-g9Yf>%d0(QBce5S3UF7YxvbQa_*-!HO-H*ST-%o%3(SDz; z&EJEE4kT_3o74BXFGQuO_3e*;ruMb}^shD=PpS2E{B|ch*hk*&Q}^8DSGV5vU6-%f zZxcUnzwXxA_4_+hODE|*cI^Ir&sML--Fmmj&e`wX>ecHvJE}1M)H}!;7V$r$ciIuX zEy~u94$XRL(0uZ*;hJuSn9^^5Umred6rFhe{w?_(f=yg^%XFIApPJduep91*^sr)3 zkxTvew5vAzYkt+wx8HAPvv=o#WoIu|MskSMblrW+_-1SMYLWT8&hPqI{zkdp?_OG% z?DD>UTB2>Ulf&m4*ZLXPgE_0X4lMF>@m_K9Cx6W2vRRXA<#(3cm(2+~qRrm1Vrt-t zVAegAGyUh=pU^0K{Wd&uefffZR{Qlor%n8D#%3~m_r(kEmRP?%7qaZ?4sM-)zg=%s z{jA%-aaw!sis^k^@l*0<we1aUSve~_tk9{DS;{Bs$OB7ZwLRZXukMtHuJ_}7c7K}P z`ty91e_u~;|32TYJ|=eYv7kA3jOE?!zJ1(yU47bxyY~)VTWib6X<*@h&QIt2np{=K z`|qbc{(9ekb>=q{H=e4qS6lr28t%@HymV)>$XmaX#HGqt&n(-L_-k%R?4E<|Tg`tI zJm$5#A^qo;(^hxiDc78XSB8ikIkEURU;X^T(uQ~UXY&TVdZSlgy{DHwc9zF9qZ&PN z`C8_kTTIr?t$*VcAAkSvm$xrp7N+Lky}Wgv=+?~@ze??{&cCoA?x<JPk3FYrIcnF6 zt}yQxPF-mD<o~xVs|yTYF5FZ3XsxpL>izxCSL~T6eSk6XanRwnoX6gJ=gQo?yVXAE z{QJ27f9q3Q>qBjh&NKerc|Ea({jNgW!oZEOyY$!Xk-WXMI61D~+O%(?f=sr9gw12q zxD(GWx%WobOuOk@^Y7bh|9<`WaDfA#Ue8<A7yP}YZD&e-lgpg<EfoTrBk~m!86;gd zpHZ|~alKjc<lZXYm%ndSmaUTB`f_Fch2<aRJ{CVa@$zk4{m;{fj~_3$_qF|GAHMW! z?4$V($E!D9TX+7TW6^{~Zi{wodoce%_07k*Nu`g?KO8z>W!@?<<(|&@sLSCI-FvPS z%}jIJEPK|(=?iy2>z&?dSq6W1c0YJ^g;|&5;4|K(s_qsGmp%$Ct=POopI<&+Zr`6x zQftCbPj?Oacj+_lyjxEd>P_^g@BiFidEYhsXWHc7pI*NFd-`+!YsKaBVk@M=pB-KC zZNW;x8voLkS;Dig{ybZ7wZ5jhu6EDYnc`l)@7u&THvCh4bLW0^zRU0E+w01Io6mlD z{rLB;jq4lYWQF{GG#|`S4!P5nd)aK^vYCeQN8<EX7{$IY-h9<+&yCWft359l*0bt< zV`iJ7n=t#L(78kZzlX0h`K=Q7W_#E2Zvl(W82Q?`>{;Keb#q~7_Qo)kt8eU9_@?i5 zxYsg0<Mr9*+Pgyc+*$%nqo-$NryY?0wRmZ#YIo?uqVSt-LVwR4>xw;5W#)V0)+XN_ z^Hd71PkpP%)4Ij?g<8_<jJZoMtkU(G$&p}O-&L_V?7?2=R<214O=8%07ngqf-Eu-r z!)bljg@qc%Z6Bv6NbGp<^+etS&n}+h3%=>uUVV8laGAr3=zxolw+gm=o?dcGXj0Ku z$;}$u1uL9Rnw!k1)-l)aK2Z2ct(`lbcau`d)V;o~*TtIGU0A;9h?r8wi~MhVj{IUp zu8+zm2<X-a{tuik!Sno^^A`De+MBjbTeo@A-3_zv9*@>Py!?N;ZK-!zlE#U+vj^SJ z$Gm)XQX+BUpRf;s`*{A>)ck$=^yls4@nP!u@9y4Dm6&KdmtmV^i_WYW8{?kdsDB|f zTVd%Q{)kTpb|>?`e0T29wOsZz!3m7VUW;aZ3(hWo6Z@-a`r60!3>-_R{*{i}HtmVo z*5k9y)Fiu(=~N{<^C@QLPHs5m>!5k-z}^`rrpw;k@Tw@O_4EXWSL+VO^jy2?A(-!Q zSI6wG^_B%6F3D~(z1koX+a0&nWe(fF3#JcWTCCW8syBL)<n_a~tHaj(|FOgQy$y31 zQ{=Re`d)*k6Ke~<PPE7ndB3)P`IooL*T0XqtF4UneEY>QJfG)!VOy$>ARog-i5|Jz z8<aC1ar};3mi##QL+SB{SHH3_2!8#m`Eb>$EBo8JUjDUgE(&^~G$*@3t;A;cwCc?_ z97Cfzon&|Y6nrpQAv09rQ1yhUt#iw)KSWQHmuo1E<hmiCSN>qmakH~;&Ls!7^wsws zKDx_t@f4X{mUSz73va)RxKrSslb;iLNBNcHS&pUW*J(bgaNe;?tz??43-hDJHj?Eh z-)q#rV9of$k(ly>EkoI(Vg+w?w!)NcGxTo1a^qjgxB26|zhC|wxbrHY@kM*{!nqkI z-YczYZ+Ie+b^h3t<@cIT&eYod+;U!JU;ef&`t_G}e$?+<+k5d`TSoF;#qg{oS!2$q z2=TSudPmoKXMMf6L+Z6ecAYvi=k_(9QdX78A9}|eaad%nma)y{Rd2%2-IvMLYG==6 zo@_34rB!Om%Y+Qyre3#XFO{l`uib9m>$+!QRIIei+kA=0+Y_yG?Jl(lY3=y6MsCKp z$&2?Itp21{zrbX>%)@ny9&+#rzjd4S;$qGemcFpdt)CCC;9DWJ_+o}pL0E~=tTWNF zm#tX41H^RCFPb{z#KXA}?e`t|I~X|2wmf3hz2LLn@$O!CXMWz(=K`9~eKhtFwq-Ob zy0mF>0vF#wHaREZU}@c*!fx?5Igecr{kcnP*EEf+UoED~x6iD9u;t5!Wq%XqURvpu zQg_Q-Pt&uci$ABQdeXfu?>=|%d3o%c5GHXi#%}d5yPB$xF2C+h4pF^kq`Fo2S%=0} z!+Z};$MqfeEGKy9Ej9d=vPVZ|%cfUp^N;<Vy>LTnWL(HJ*9rIUdG*G<erT~ktZnhM zB^IlKW|ic5iL6UjRMYV>)vkBguHhG3yWD1e-2AYMEdC|$Vt9Y*T`)g8+hBeEe0!UH zceMUI5M&R_dBr7Y^;-XxcIXM4w1PK}3eNQ^zh3la)2-K@k8j$=elA|ReY*eupFckR zdihti?a$@UuU~&&zuNBl#m6#zYn=_hUl#BB+LQRk^sd+E<nW!nC-|$Q&n%0%;#F^@ zcX?Bb<N1DlovluS9<v3m?|P#6T3+|S>(A4#UbQUFSbC+f^qT+Im4z~q=Th_M{@b2u z`v2YK=U<)WzS;J?j&oS|m(5LaOXWES<2nJJ16%j~JHEYr>g2{#(UTKiYW~q(w~jj^ zmNAouEi-2AX@}jh8-)+cSYM1a;J)6(U%%(U`g(KEuKW7mcW9McYnSg2eD`m?#`n+D z*G_-@o$G(~^Z(yoN3Ao~bq-V7tyk&G<tP6)s7!m|qb1cPJ5HI~{l53|!$S@E4O=>@ zUYbk0{(hU7DWlbR!gx^!n|b8<aKjI4*Sy?5y;n`^!feL67uU;<EoSicuf7uH=4jH< z-?CWuzpTuP`h+7g(J3qRXaCjsKdafk@92%ALc2KMo=vfg)tO%KNHk%0*XoM%Csx@S z-{5a!6k;>Dejv;xIa#E<qUH(1#d21j>lL&5^7cG+$l2AC6#nkHbjw_u#Pv#MA%bcg zWi2U}b}l+zbN2nZ=*uMvrj2*rCzmeXpPtESzHQ44wfLl2vTgOYn@kTKl=#hWSL9Kx zW-oe8=!jJGt+?jPLVZD6Ht&-5X6V=kJH>2{%CWnhc>YLGeeQbY$y;8&JgMl*XKU?| zVp^Yau5*Xw#x?8y*lw7XZJK`ZPjFD$H0AIT?@uMkN48l-=qX9PlwvuwO!Q2tu;&(U zjkSD_XGj_TKltGDX*R7_^$Gufb{wk@U$e#_t8vGs%}x2a1yA~~o>o*6Jo0nPmz%f0 z)vcO6`}^akm)rZb_p*Ey*3dh@HIaoqcEbI&i*_HWHqqYy(e7O6VpqF)D!b40tkslc zDW4eh{L+o-?`-oYc^&&QGvKU2?W=9wyz@%tp1-Aawc`G|(|$kxSGU%#=HsbcRKI81 zq{}7^hm6lM=Nr~+-y?nZdqQT(yKi6OSKO4ZNjS~^q5agJSu1?hqf_S1T6!*4^Pa@N zYu8L?Pt|WxKCitbcu~al=kIj-uHN=|{3mYaep_4L)nAV<y~4SuM%43M)XODdiT}%b zL&}c}2R~d;_C5Xg!?u+9ri(nQ_SZfw@BjbnOZ~2MhClYiZd{OC5_kGk__pOo*VWy! z+_7d#aA<?i1A&8Q%)WfdXaA5t-+VHE)cdw6;oPPc*)E4nS`wt4Y_{cVH~pG+RNX1` zVcpbf>)T?#jiZ}Yw*6w}>-zRAYhmreEjOBUgVubyarBZ=_Dl<>rnL_;3mvY{@UhI8 zBQ5(wMxoxcKDG0fl*!u=pIzm#6E+2ZS?VY$B`k2%v`RQ(is!-HmDk1k3_}AgCfC2a zw`q#jgL`Sqv=koxYp!)P6?r_Xx%!f-(yY8y{~jM+-yc717Bf#lvITp?^1OpK%Z)W7 z)-M11YSzB&AQ2bqR2$WI8P68Y^b@$XrOWnvp-BmE+5W&8YY)_y?q|=an0i%Zl5O~( zkk-fZXRN5qi05*D;!!f=`$dUM_l}46*k68_vMOCYdS3OeA1f!XXxEwe_P&pPJkQmq zr*5_S|KiPDb5o^h>+B^P|GiC~yx8#ZG5=M!=kr9ndS0D<Ja0?)^r<a<fhws-lsDQk zojZQQ;RGLl<J?^{C75I_CsfyO7UPS0$)|W<gX#M>)BGj#{(Wf8KmYsd-QV^0od3RT zikj5l)#$KtHorfw<jbGy8Z)bm*V-L#uDDj3d~9xv@x|C3%%{!f1+(OB($M{xAf6z9 z^=J96S7Ds{XFb_+YL9;EvR{8K{#(3h|9QOduP&4RE1ALv*OnZVTfx~^xnA0H&x88V z7TcNeLcZ%?zwn#!^_G0d%icF@3)e2RU=dAIi07W2%F&iRx#{L4w+(`;jrva8P7AWj zF3Qidx_Lq>oohz3l*g08iOyH~uPM|$Fsc-uYqW1R+sPAaUoY+AxKN<|-@;>A($4dj zPHG*GkokPZ+dtsNTZLD%_S8;UznU{Md-{xX4fU7S2nMW`I3cFddoQCUgw<f-xt!*o zt9~~<W>8ku2;Ik&-)L;CJE7^#(PXwSJeJ-E)ERaiNHp&Fo<2F_(CT9^+Df`^y}fyP zQ@YNI4F}Bb-+R41RG!hd+M;FQHecTN1#&AdU;0z<u60Gu|AikHJ_~*SV2O6-^EE;n zkDlJNxO3|<iTe9LS81gFYgTyT!;-!8c+#xy<ZXPGy761CX5Y|veY@-HcI7{ND;KZ( z{`XJv){6Y&U#DME-c>s_T>oTLSpHrAmX8-@oz``ovwpwo=dr$v*RNzmFKO*O6`Q-W zZtvbIwa<2jZ(mOp+R0O@wWeg%?hUK9t&KUl#^<!vn<Y6rroZLdrd@w@SFZQ}pF27N z{DaMJFP3}D6n>D^L|dTFDxx9qUqWTi2IgaPQjNdY=&zDlwCZl-*8d6q(c3mWdwa!@ zU(D2F;;EBM-n^UBoN+4bz0diJ%hV-qZk^SfY9PGPa+!f^CPPCt14s6cNfMc%tfB{* z_XO>^Iqi(+dWr5w+}8Q0?%41Z)O&KjSZHl^RyC~OYL%Dy(~_L{<I8Mc+`88G^-6OR z!{W6E_i7q&pFFwnN^!xulT)`|Srz^=_vGhgD+Ky3=7xQkXr*(+YFlvdvc#f$J<hWZ zWt>@f$bIeY%k!ebFTH-?zHqL!p^yIToAK9MJhBpua~?gd$~5dS>h-?6CZb^3Q={Os z^)+__`v3h{aq`ga`SSI(6;bW&vwyl=R5U0NJ!bdkh_bD(Y|qQ4!%O4+7be)UB}{kb zQ=M%4cTIQjN3ZjGDwd9(6=y%`e&O2u#e0@<`5~k9pS9nQ)vkMAwB>xFli~JlY96sB zbz0YASyH0ZP4pfd>RVI9XSTt0nfq+hD1n8~^LN)zIPU-TO>$g)w&HhJuAF5no%wR+ zDJ;G=J^uRroiEp_pP4)Hhu5=B-T%(^Zq$=u<lW+vrxo3Lne$fS8KKIuy)NeKH`Y6p zhl@R%HAzLtWa_q)*;$f?vWnN=ir8zZA4<=U`hTuXs5R*$m&9RFBkNqtClxw7&Yhha zY4~_{=R~b0`}+TP?$p@t3(Q=v&p&^ERkfu%yXc7{j>aN~zWPp>syFr8S*^9pFI8!+ z)t`FpoR)69_S)W_pi>iLKfSv()htGP?VOIwMXmSb-gLdqs<n^uUzFW&+EZ@9Mjk~a zyDr9TdGD9sW;E_KjK5rb>f7W8*MB`M{IIHK#YLeD@B1V+X>!)H)aR?kOx$a=S$^)V zCby%uH}-$}Gwb!|V%t}~^X>N+eyzFm>gQJT`}ghk$IsipPS~wDvM{yrNvImbg~B6C zJReR_&MH$ovshS7=%|<Lf0N~tqn>8%E0daT+*$YcZ9$Yn-d(L#Q#X`H33E)pf4}9D zUEQyrZgaJBCB<}>3J1QJbACxkz4qr#oV;tqY7;IliAz{+zw_$+nH4v7q?e^!|8Q`H z;7P}<br<Fsdv9o2xBRf}W$Ve6?hLzC&mUN$y5md6!SxfkqkJYQafB|Oq<d^z%B@Q= zn_Q<BIEh}4o4TpMLX~^ZvWW7AL-}Gs)o-2J)<-vOpB_J}X6Kjss2`47PTwzooiDw) zzDvtG_nAWcL4}(^$-j5-gtf^@Su9;+AsKv(%YGO0pC|KHC9Aea`Sm)lzfpd9%7*}! zlh)@84&L7IWd?iI<w-jZ6t%c^@}DoWd*^g3$SggXM?O^kvC@hw=N2cOb;-YY>~M6N zXntIMysHpbwT+Q^s7CP1X{LPrHzg0bP2SU|!BStmMog^Yl1P=*WsfH*y@qGDNI%~4 z@{-odi7O{>J~3s(MW=t3|J_yy8>;80v0P5s8xh^PQZ{+jN&ZtY!aLpNCnfK@U@+S` zaKq^(D~@@5I$9>W;mxxdJsn~jW4jy`<xVcs4~jbA=Kb^OZU6UmRsXI}D*d(im|Ac& z*L9w!R}a-x->UcVy%|!XSo(0y#b&<Eo7XKrJ=3X7BsREiQud7aln4D@$EtR_1g*Jd zmgJdtBeHCj7=NLQR-}apbFiw9X`y|LIVaQWM*imRm7?xz@~slSXEc{26iy6gD~g>S z>%(MOpkx2;tB%FO2lMuwO7%|A@^aoZk?E3&X6f<VEep-39lue3<!zOB%`I7Pxn;aF z`hx3yFWo*}wSV&0&g9*uY1+NIz0N)*8;-qDSWu~=D4MuG?_G!5)>+BhH<oHhTfcr* zSgiO#>|=*m&#EVz%fyZ~Mikt=(^$q_nQkw3@XGR)T#=01Cw;tBGUv)2iR!Rv*7+t6 zzt4}mcYlr7Ge@2!^8<TA&er>yn;r<6p;fZslK9-jZ`T62rv186G;`_qP2FpE?Yws- zv21zw@BLR!tyvd!t!CYU8&+pt@3`{&sb`G*xksI`^B#YFIPJJ?He+{LVW#e9H<Rq> z&0^d0+P3(bUyFP^*Yw4uBkOzj?cumS{qd)LXYMWhIXg6N+s)tR)!OUVzk2g`?%u2Q z-Q|Bj{X74w#oJ%7_V^;}$nQq)YM#x#v}g0I@}%y4XZ7YSJudzJP?G!Vj|)q>rt29? z-e%NUs2bxWCGl6~UVB%8Yvz{MH|8#%WuAZJ^5N_2-`Cas`nHRyM^j#)?YV%T(FSp~ zTeH}v%wBc4?pV{RnK6P1!iH=*D%YGM4Q3kktz)a-^8LU{EiT7Yo+D~mO$^5pPb^!Z z&A#E{M7A0C{ya1|@?4Qmg2Cd$V#BOsvI|0gm2{mtdCGZV1dH2pk-(t3rB6aNcBfg2 zDT+O;Gd}uu@gJ>=wlmMI=J~LJf1dVMoeNs#q0Cv!QYW2AtvY$d<dpbLiCo#dsUP1y z|NMG;fAp06;+^%C5!0Ofp4S|?s%<B<Y38=TOQB5vUf7%o`L$S3eb;oEs5wXYOr{@d z%8zK^blKy^R~~hl-z%26<IS?|4{aVy+ZOv_{d)fS_IX=$re<3#KRwsv`S$#OUvFPt zuAgsq?nv;G+BCT$?-*64?sxl}K2GKRkW_Wuys+h{=wefKwJmvPCF}iswj?wOTr8d@ zwnpwx{R-aSm%eUw__}pQ-p(m?J<>i|EB4v{oY=l4UElNZoLIx=$1AkDx$f<1Os`+M z+TGCG*nD0>iR|?=8W|7cSWJ>6E0`{^e0pGg_V?k>pHFLLr!Qd%eeQGAA^Gi_f~9iz zeqDdO)7qkJ!S^lUXJ&jYZjRlqP;aHNEAv`x_Zha=3xr-Mlr#1CcKfK9iK=;Z9Q^#r zBmUY4eO`}wuKwDS6XosRF#VG~V=F0p*hM?;k=g9>A3sWuhOg#ZRvfA{vwH8s7dgT0 zZ=*M5Z#S~Pw#oUN$evi$&C8WytzTR?sF0(1nNwrg|97UR-~4#dq9pgd`RFtDmu%bX zV?Dm~8Q#BMaoV)l=YUFQ{Yl=Ck~*EKUw+0_EqIh8A9Uh&DA%zo8A@SyW+{jrSK4cB zdrE7`+ht34oLgzQl__oIkKA0fWp_>#7TxZYx7)=i&1!T&k>lx}m*zT)IC`!wtGi`v zx1&?pVW-uLzKWJ*B{$#9vT)ck<ws;u$?7!Mw(9y{9^rSd6h3rQe0K0roJ4lg@#UtG zx7{xqpL)4#{*?DNe?4b5Y|FEbG~N;R#XR-K6t$Hp%Xo7)ggm%E>4PwX=9$O7rLwkf zSFiU<T~KPZe9kc@^)=1Bx1YZ*%j+)Y(2!e_pR}cDzP-ek#V>;VwKgk#w_`~YZOLK? z@V>1OBB6WCtNy5HqPWR+Ezi8gF>>oR<Zd|rCS|=@rq5!5w@*4;1GVSqnLbak)7Mc_ z)t!^&J)!E@C$ArRm4R7)53eupGYU~jt;oHwVwKsIrFQ>*eR%ouT2{JL?Aw=$HRmp_ zYq}QrYRM{Tk2x+znH!8fe&yf%sIgYWKJZlMlJ~sl{y%>HJYGJ$UPPJKq)K9w;f>ZE z^9tFVlRhUTiB(^XW1ZA{f8!@XVXukY`Ak8%`m^^o<?mf_ySIRG>h&!NhD~d3U6!br z{%gk4uBT_;*PfcJ$GiM*L%QmlZ};}R;F0PH*tlVvY-2*gu`14u?Jjk{7~)(`H?0xy zz88D0GHZ+KoHvY2CfSUaUqsYTbW&Tp<g2}y{e+3n?ku_^vsTjLheqDg6VtxA?wS)Z zYfGj{VpO{}=c>ndzNws=!~0l@-_bYR-zbLjU~T*I&UB6?s=|@xKK=%WURr(^=r%vA zE%9>ACc6Wtgm`yo{(51TepET(BZFhD&TIZG_xu8#QiclVyyPSD%@#H@wBz#L)i2v= zTmSFFpDzW?D+5;qYn$eX3r&u^w75%Rk@7QB@f*L?9_@Cy7G?1+=Pp;>{)OLp7q9J| zJb^zqQvTvrt`+4e+XBC)b0nNw82Ul0al>ksSQp*M&%7JA?z&O2xIB6P)IQhEzjU@n zs!ipZWbpOk(bC(i-X(J_Rugo-xp+tRf~;4k>a|Rj6M9qo19Gm4FZ24wHHTHFQMoih z;boWA!55cK`gz7?O#jLK_OT;pr_w^-l+)*=I}G1wO_$j%p*<yaw{v0PuHYB%k{#8* z&g&5D(OH~+)9!~rnKYOFp4z#5U%Z_9*nEtSicL6dSoW>WHpZ+aAp1ezul$UMv!u>H z@tu3a??rvh-sSfKp0w>>G*4??P~4%EWW|>jD#!Sqowq!`tVXV>f6c?R^0i$z)rt&n zU;Xj!@8Q$!^XG+^h|XS75_G`Q;O6VHlM7SIr>Cz;;uDxQTjsN4C5vi=b<>B8HPhF3 z$Te9x6f_)Q(2={fVa`F#rp!~J3mhK_y?k`qZ+ei3`k~i{66zmp+aYYy>X!SpQ|5Zl z#5r-vIdeZ<cTHX(Yugg|&n0}>yTmM>m3Op`ONJYU9$T5Nr&-$MEUv|R?RR;yU{>T+ zU!nTv&8t@`NwF18Vd4lhwd9j?mRWqYW;<tg|J|=zhn{?MjuAXoebFsr#@A1$Z}_nq z`&KOeG-*@!9f$gZ+98bfr&ez&=KhnVvs~)b&-K@9S6}?|X_MR~(Ipy_)k9{^-Zr6O zK_qkGi_bc#eN9aE5<eFOO89k_Kk{E}>tgb&IYIV%gHiLgRlx@*hITcY&RdrJL@DOX zMc$1&*>#MKR%dw^B_7Poe5Bl_s_U)dCc$tsYs=vmKb|w@{4`<SaKzF1enov$TJr1A zZQJ71ihowksW-W1{&r&LOfl6qwuvv8|Jg2@$QSJG&1ov3E3s+Ys)I^~$5$?yWx~UL z=J||?28>yH4wG(IeDvLrTY93O^~s`8fkppzHBHT)cVUy3#0<OWv+8T=O}4x79MZlr zukH4YK;O#e&f;a6Ewis`%S<_x{n_u=+xqI7$PU)*uj`)g&Y!wQWKUkz%;hVi)0c$k zJ`&mVY|rN6y7f!MI69ZS&}LIQ-ParRV{-B3>mk3d2>h;m7VCAAJK^Z7Xvd=E|ED{A zt7}a@|M@(FT}shY%jRVsGGG4As{j7)=k@sgwg0~S%KR!KafWHp<TdT73U9UU?-0sf zeRlipmii~Zdgt%$J$v@_%`<j+`*+vJO%_RZwN(((apMrb!@6ECA*eq5?eWm0?Qv>l zj`B;FF1fpB*0E6Ct5<?zvsM=AzLeSjd57HpuUY|T+rNg0s<Z!^J-6Lgx%XEyWAfpn zH3#RG?LHH&R~fOa;dE*`-;5yP`SomkwSUhv?D(^fZT_Op`XlxZY4>6eDBQ`9d!H&G zeZAWF&H3Ks<)5?WSsXi3yyd*u+Ew-@h1Y%Wlx*MgJhAe$Rqr{|{SUAHEjfL=Rd?%; zTjjTP9GmY7Nm;vGmb$a0=TYd4jh$%+x^|W9^$xk`<?Oirpv<G~zlxOEcIJ4<$Ishe z8+mhDxcAkgB?+4heH|<6*%H=WwY^kTUR!frUwWTkv+ntrV}9*1_S?8u?k)Vg^op-! z*1;$I30(${xw(UuD7>01rqioFt2dKF^juaHpa0REw>1%(50*ddo9BI)O<qWQRg3&* zllY}iLwXEO-AtLnYHIOA__>g>j$VUB?^;vFd+#*d&pH^&L}X{*%&EG`P``RcPQ>ab zo7e82qc_oFN-EE4$uqK3KU#9xSwCI0<9*(SE2n3aPrQ}=#iM~G`$$laTV>DodH+5? zzdrr>^5v>p>$it5o}&HLtaRQwpYo%3=1j=GFZMDZH#4uc@n~}4g5B0p-MLw29UrXL zubzJ3^y%u?J9!=zRCn3@QgE+Zp8m$uv|jzSxn64c-HS61>?^+*a_P;dO=iu@n7X~o zOJDVJWu153eZcE-0Dt@Eg8Q?Nsb!y!<BI*;<9qe?vv1$DJMzn=<8N3zKYO2N`J~7@ zR!Snt`QO`>qq4Sh-K={bzR{t~YW;nk57GPO4;`v_z3TDzy2sgNadF%7uV}Bn^44pX z)x)<{^?&c>zv7+rVAs+AecLlxrzk4MPU+1y$(!5uMSY)iQ0M9`pK>p5JEA4@@#i{; z>D#J5v+DDPJvEt=lyz#|op;CYFL7QI6?wm0XVY4rHh%ev@cncC|JM6+|F2$6#m_BU zdfuDPh&Uj#=kLbCw6GAV+pTj8e$CzY^4*)y-TCR80z<03>StIa<@$Aab*F`0xLl>< zBCZ-W(=11Hu}?q0{(A4kdzp!`D&ndF)>3oUPT0AJBYTI}-oUMq2m1rPE!SqbyWVP8 zDp=6(Qp%jN%ve*cd1d$6nG2`gQ~4O9aGYmi=E`?Ar)83aYt1Y)D$@@~s-AY=R;j|A zR9Y7GmTL~n>!Wv{uB-Rk7Sd3VYUQ3Tt<&_fMLN>wn#Pf`jobPDp7r^6Nz!8@1BdUG zW1F>Y?i;sH)9}z(_3q4qi3MI~f<BziJ<&07YQrVf>ACqU+okl_?j?7f*nerxjWwS6 zDfx|4<|tb)Vwoc8eBF0b{E;WeMEWjk_1kXfwp#x<a^Z^?Q6H5qav3wZ)cemqwf}N- zFT>?K@3XX0H^1~cf3HHppm_1~sP@xhieKg}72KI~^w^s}&!*VU%#T&q`x_shY$b4` zrMd7|+>_>(pI#HBY*hmTj@mj~_Qx!(HdC`csqFh>|GAnI%RlLsFKXcs*sAm(UoOSl zt0kfTlDokXhi3_=rcL>|X~Dct=DX$V*R(gk-_|m#THW+*S#W;h##rY6H8p=e{T7IJ zNKuUWz#QPQNR4CavTqW`ZmKiVFYRd7y)DqP?yLrP)t*CtlS0I#d<6p5%P-gGf9i3B z=Wn*l*28USI!U)rm?~~KDEB(H#cy8JjYA)H2dgMCaCwOc%zE#;W2PFLtCPd+_Ji-! z@7FuO*(I!#J!ii5+xxHn*Vq2|RJwHS_K1%s-5=>a+#Ms#w3?qy>5Ib06Z%fc^Y6(m z4Z5m1Sw{6}qQMUh_c_56mWp@Ey;Nc_EAkQbJrgtg<?#(>Z8J;DH`e5L2d%nQD96jH zc<NQ&4W%Q=9Tu+>EmEHM=mkE~`?6Bxq3yScEBueHu8&i`)sT1NQX)h5g*qFi8!e5+ zTi&Fc72bA*)zPCn=rL#SdC94lPk&p(sco8Gd?NPu+)v_uk}@7kuP*I=6jE5lZF%Bm zqL_2St1Wk~=Ez^wDL=aNUWVlS<%vI*x0<glC{B3x%XZyIF}o`TR$IAD^mos#oi<xG z)L7=kB9o$N<!bEpFYZS8Tr6)3e6gPO-0=(g{4=suw2Pkjel>Wx+&w}5u*Aufjmf)C ze^WHmvfx&emEv6P;=pj*<jp$?-Kgb9qutr~rg#+pjQOnoR<L)T9Lw4*?{!RXZ&kG9 zmY%MfBd)_4^y{zc&Fsv;C2M|NSasZceOW==56J+oTT(K44K*^+7WHN_N!Eqe6npke ze)-z3h;h2);ft#s0zL0&DIdFXf9Kp&pG^4vMIKPgW4Unsp!sx(1;6#oSeVjREk69> zinc<PZ}>J>*6+)HaYy@KRxf=j@Q{hGPF!cwg`+d?bNQUO`{=dTS>{}?mVmW&ovGY) zD_)o>Ogp{Ge)o0zTNS;LuTHs^*7NLUzN&hw!F+wSET8Kn5tS%~W{uAGZ;rmm=D#^h z@aFY%`QJ9i*HzZl{;OJT)Df3B$!fBVvk;T_n@xKI&QH=c46<Cf<p0`}mRk*XJrS{H zf3bDto7L}i1Xh&4m#}B6J*vM}uEO&1?4|#{hkvoEul|!cb@AmxOF#TL#kG0HrE6uy z^)lUup9m-#3fFHG?-xJzGg>?8L(%t*p=*~J_w20Ps(m1$D*5s8T$N&L)?3GRT-dl& z$HdP4xyCisu9vH0^N*F6e+tPwdrd7Ybi*dUjZt1MoAXmA9G`KwX+vtxDt+w@3-=qW zajGzEc(;U~_gP7VPKAc(uES5aJA2%}D!AuLDvL{fo1=k?<1URk%Xzi=ew0K%O)Qxq zy?kTJxvUKFX%0RMtKYrd_s#J5u8<V>mzQ0y?#+?zdGjaDb+xdv{Xrj}gD2lhwC;Ym zYp$DoammFmmlqiEmo509cHnBzx9w7IE+0PS6?^wgq}D{Ik9}Q{>07pM?Gc>$be)^a z0_UkV?E6zMbm!JLb+;Lp##QYsT_=2I%HFe0)>rmspIIo~w!P)Rp|2B!_pk(A*}64> z;g;~+kBj!?T-siB_x-tvcWy;Yn=-3Wxjt{ZlWn)p%)S2iyf%B!jWIIpjGfV#cR2OR zs(%%h56;etnYDCz(s90pwk0o%I_9*oXSy8<@1EKwV%#JUlo~iQ;$r=~KhGQfciE+{ z|CQvt+NZasD<Zo}^TNhGOm1N(Wg`j}KCC(9$T4$eCuc_q$FYSCyOig!%y3G|-=MSh zWOQ6a)T{yv+h;Lr|72e2O4h#Hn%?`Yd-o>RfO(ARKm3-i)okig_{ZS*p^UZILu{i+ zf&SY)JWO*lO(vVJ4U+K9-o1Bwy{k^ioy)Gqo@>h0ZkP!Pc%KldtBCwpt?@Z$Y4L$` zg)_`W%{Q22Ps-*=*y%X)W8>wpe<wb<XV*+)Q8qi|nW5phh>vk9ORL%2*Hgo{7wvk$ zzxdg&aLM^~cPa&!9iFmgjbMf8-x8k9N&1_0K4dlCsJj!pO+O}7>*2LfRXK?&7XNzf zv#Lf;dorv;VwPQ2`d+QDZoxraqi(bJc~8AHR}}_LZ%nU{FFIVYa7FdR6ZLEsx*Gc? zxofsh%R00+D@rQk;M(J71*5dR<(;3~xJGb0&$<;Y#W>;V!82}L*PBDXt<JF)O?gp$ zc5TX%4X^jcWv6&tI=b)Ju~)gT*9Oje?|Wlodi|y7z17NfYjg`aWbO&c?US)!GhZ{k zEdJ`;uRrHm@Kzm&N^$JCHfOKJ$DWoVZ71jC8>UA)XYH8BWjrC+#NYL+ujFReEkCxE zDj2+C@3lyJ!tq|_ti<D1%ZAfREXOx(`uyR1gN+2wv}WDq4;vgpO{+q8aDOc=@Nk=A z`oMeFqdynxS+A{1&kefh-e2mW$?at}Wkp`J$>jwqVX=}Pw}tw*@cG4V2+sWxvGeg3 zbC!o%(KDvxdfJ=xhWobPH1lSC)M)Fyv>-g`Q|QM{H}em@z8{-W7P_=~{k!{4zWaW^ zb#$xezByeWZ)M7+14gsUX7R2I?V6N!bMwAnd!-M7?2if!Hr1PKJ=apUTVQ#}>=gkA zq<eQ}-Su<0s&?m4Rlrtur%toCD|4<eo7gu+Ox=5AmEM(a30^ANiWyQ@w2xjYzx8C7 zvRLS1H(BKtPEnpz;m_A*6f^x?c-N@kw=Sr_v@NCa1?y8i4WEO()1um3RhFN!>Pu|7 z@>*4H7lWvfx%tgBj(<z)UtbXLXTJO(oR6_F?}O9V3CmVxK0IXcX{B_BuVLaT<;yOr z*;`~cOn%8$E!n!c=Ox=czoU6=+YcPqGC9FmX}~i3BuDYq6b`xV9iiQZcea>r6inru zWKrMyr*pC0q)lm(@tc`XzhWu#pX$v}!SJWO`H$X>f@c|97&-G#+FLA$zFn_%Zkxrs zn?5;)w{J{Y)+fH}@U^A=+by1Mn(HJ}>Qc~{T+Q%mS*I39-roysJ(_!+^%|v1cD$5f zTN}JuZ_0kl-zEy1{(VnZJ-+1Hsa3m!j<^MFDQj{|Uv1>H|84p8^ktcvhRWy9?4A_= z;)49@_iL8Um3CHJTM+kPO>Re@rQyj#N9)h2uhd&<di<jTW8(F)Bh$`0oJsard)*~$ zmO>|=;lFP!&s-KTFUd=onz)oj_-{$<mjd@tqb(I1RkxaaIN&1J&it?O)jreS?6*g+ zwn#jEz{37J>bc^k6_5WobuU?1o>gkVzkp9{$FsASS3d|XRxOhC-g8*OIRBm_zYue` zz^*)x`ZU9cl8=w|TBTq6F8}%I!^6vupKtyBC1Q?V*6PRC9=<btbn)aA>u2RNw69bs zDyCY!owmecnVA=7KVR>b?i0DYMKA5(ZQA0!R3P$lqJWOh-^f!PmGVW&W)CDe;w%#K zSUqdjgm*XH$h)~OqJNus^rdUtCf(uvH2HB`=~MST%kJ0KSN{1^=NZh^Zs_cOCFXEM z=B*cA0Ro{GYHHIqaDQhMtP+q6RM1j1TJ%odbT><7(er%cljXOq{g!v_n4!<`au3H; zs{{k33D@O#<Jv`;4oB8*HhJms;N_EzUGG|Nod06ib^5NO%mtr=Ws@&3zGP=sNbp<6 zye!9c&96SmDu0Fblk4v^%Brk>xJc`w(Bo};V(YgoE2s~?Jm2olg*EL?e%H=$Eq>}H zzuV|y)(q{CRR45Vh3wk-2~XRfFVK*?^j)t^bkfJGSsO2|mtInSu`z$cCW#ZLEwqCy zoj*Me(q6Qn^Ni}2{HA>$ly6B~zPo;+!qgkl!KH@wmw!o34L96-rOG6Kd;Qv|f9FC= zndYnCxHrjNMnZR4b*SE#j_`+Rec4iGhQDUa;<~yb@RbDTmF%<Gdv(vc{`z@N`|y#8 zQcU0OSGRB|E2|xiS$tf0&&|`j3U003@omfNPX<|iYbqMo@XGVgi0TUaU(FwV{F_YF zyx(sZM>q;x)mx+Qdiuud-5w?4m%5yz>SLzxaPN7@c41Q{|I;vO^&6KITf2ipqwn+_ z&e>^OTCIIOOlL8B_1g01d>4v?jml#qi|<bo-d|f)TT%J_$Cn@fzNWqm@_)e26L`GB zPG;@CdkYRm3U2Yy&<uTO{3>#t_3BMGf+F4<w1iC*e&dq*W=`qy_j}fOb;-^8-?hNk z{fAQhQ)kcFUmgf}DqV^<=(#$hw&Y=WhG2E?M)5TcYyHlcgr%2HF}m66)-Z=_VeWQ~ z4uy5Qi@)u)R+(HTa%uxlPmz0)QE0o`iiWwnHg_y@^w~0Hx!YSGy+z$K5|>(MdD!yo zO66u{U|i7blCx}Ed!E3Kliz#K89PobU$%1pjDwM%SnJy_F4}kBc>ZeUvWd<oHf{SC z-lb61f2#d@)K31Q(%i2#!FQsQR%^b|(ymZkrnW8T`_U{mrLAFW=iC#`{Ip3pf$zbM zS(}a?KDP0}K24buGB;%}znE+Ay3^qJor`UC%p8&%5-OADJ#zc=^z!feb(i#f9fDQ5 z8=_l1%{wkv7R`OPrv64&lhl@&e=M=QAq`A<C!G@i96aE*Dw9*2Wp2`eI{{`^yILM_ z?n?4zjF{aiSI?fk%x=rk`!iCvz3ti>Qe;(Aa%O`WGoO#svGZ!ncGukhxwFsFUY4n3 zl5Csm+!+Ct$|}xbeyKnG&hD-L_idM%;_v%XdsaFolz$12dm;GF%ydcp#w*6%o+73k z;{D=`icDLdOrISvUrlSyJ0GrX=X`hNOt&=^+Fvqf&CjyM`C@h3&s*P%)Xow=q3p9U zcEP)IPJ5X`cHUSU*!N2D`=mKaK?_Td$#Lh_EMWWR7k<NCMMhl1)_iwx^PBdM@9Y`& zeCz$YR_b+Ly7CPxvnF||%XhEsNUv9MY}YuqH12xtm+9@_|JT&~{PW|s(U$c$-JNuv z_xP3{xb$AK#$@k`Hz%szpJ@)al9f{VYs++dn$`*{hqc?o|9)MbuP;CSK@l%+&mCrq zkS*#$bEBBVje4&xRGq*e@spwAVA16XbDtdS`qi7}t-JZ9NK*gvm)7r3MM-(_Z9lju zp#EZ%Mv(jZaFu-z=3V(TZL9Kz4ToiJYcE};>wbS)(92@W11Xz+Y*g0T6TMyZ<Ilsp z_0P|@+h6zV&&Ru`Z#DZzOq_b>S<E!q6y}CIJV)nnGA7;7xs#p4>(S?!wY9m&eV!tZ z&u;^5#}x~<OM1u3R=H;!tY^HGypiDnd;H8_9DW-)>kn?!GnqZ<a9ZY`oNdfqG9EKz zBkwKy^`xEcM%}EMyelVnrG_X<%#*Izmb+n+=~<qpTx*u6WiO8fSXbKU7R{cWU-RSP zr_ZM)jeDoBPAw^(5odU(D*5>{L9?=LTe5r3Wqvz6iD6qpap+~2stBhIvs8C^GcN4V zHZx4jKC>!#-*=1p)t!?~FA3<$8QP|rX8m|1u_bkPd;h#UBCh3kw@H3I66G_)eV@gi z@?(o1o8Kzu`1M)uc;=PuKUHiwx9Y7+&cAz6^GD(9g?`BocuO~YyA>?!EiD-GWR0lT zf#5~kinq*Kt=gCMLV~My1@Dr236;xnH$6@j>X%n7GE<s7SB76YBA|YH_zsJkKB6ui zk<NZR%ih*4ZroS%<HO6>NmeS>C#oXW*@S0bl)AbxZ|AERJ!fm~2`0vTE5oj`r#;@O zcQK})+w|be631U5f@f6kmZhIt@aTN0$Fj+_*)r3tk1V-tut~-<VfkscMHQSorTpD= zrvys5S8VQisI+mz=3E^U+soGH>b2E7w-n7<k-sloV6|MD(!Q=H9UkN0tpUPuwcUm8 zC$D^2vZI}&@`haFj#XO9PWDfFPJcA#|NZgd;py@7?AJTEU(V%tu(Crc*Kgju@HoBK z8Ip4nE`H+oW!2k0{ki<x%X7Ns{Wnl&x_)C#ro}B~u|+#nzJ4zgygu{UyvVbR^&L|6 z3>@e9zbI%#Dx9A?ZNh{+)&ftv4cl0r+p|2H^DkDgg}Ko_?A@By>3<F-zSN&^ZexL* zl2v8*^j`-#o{H^xZEgDb>&MXKH)n%moTokGzx001++vxy9d@U)e(Ib}w@L0a{<~=Q zT;<=E>mIng`WqBHhhg@McS-(f{<_fz)oPe$|2|v4?B~~yU-L7jKR%O^aMi8T@^6In z+*7~a9sXP-x$;}3{`_{U+rF(jZs{5+o_G12_UT&t9WwgdrnPeAuDFl)Rtr>Z6t0Xa zoGzWL5_afAE$0Da!AW~0SDfkjX`{i!Sk(LYnoQ*6(^VC(>#m1vVtKGFT_t~$X!O*b zL18Wer~W1!TwQPLxH;7O%r@zr{RgH-Ev>R>2@u-nx9X7cBL7{N4BLZN9iFW7zJI#X zj*VB`Zi+onf1oR(U?j6WZeiXBg`>6sE7z&%Y%-g@ztMB&6LZn!%UaspzntpW^VO@T zMBpl;@k}<&Z13};#fKVwgn#kunJ9hrUs1AGz~oD=Qf|Tvc#M}Gt3PJYwoCR9{~7@Y z$A)jBr}V6k=gjr|CH?qWql|L?^Vm~uZ<#0X7P~Ivj%zhJbKA0Z=d8`IzXiJFv?a-U zN1Eqn-QBv~X|JA6=Bw1}C!=jlr<Em|Z8-7v0aFdv^&cYZ#AmwCJ<0YhO;jY<VWwl( z<P%(1LJo;+J7s(Fy39#;v3o1(r5{h*VeY$h+nj<$W+$ieMa6#q_*(JAfuh?Fl%6hH zDsnj1Fnim|_6IUrzh{5lDp~sRZru68j?2?l$E^2KT(@-Bw34ttKYgeEo^$ut8mF|Y zCad=Z&EL$`r=@@X!LOK_?e&i)=l_%~Gx?ssb=UOg_3Q2k|KFW2!Wi{w`Kt*_(h^no z*7xMyToK&gR~>h+!}$OFe{-&Pf1Tt1K7&_WNaTLfS^*s+gQwSAzm{&-elfj$`F!)+ zk?Bj#Vgx(_+duSAx_BXXcEHu=O=}!X)_P6NU&bWl&#>I%=-<rm|G$^E-e0*{|Mk48 zFk|;Ad@o-A-`zS-jctX=mcXz3gBPuJzgh6<*!krG^|fq2e5Zt6ierfhX873g_2tX$ zHhbILPe%Sre_yoOdJpsA8&+NBEF3iwdxMMoRrflxJ}C@eby(@o+ox&n%eYp=d!Aaz zSLgojU1W}u9Csj_=&DOA_%9w=d@z3Ye*I@lcX1c!zJBVf(VKhipV#C)+b(5nU$=6_ zwok8IdUw^WH?^y-=iA&~TsxC*bNQQ3_hRompNoyV{C+QI{65>-Si!YNw=Rxa|7>AH z#iXkfwLhOI=lJ1w`ATMj#UnXgmNSeM>FG~bdD-X%wN^xz7dYSAE4x-ZIq77W<(Zit z##^^t<jUB7DRQOWs|9`b?*#br!c$Eq_w2A)lyLKs@|mf|Ty8bf9(}0a_b|}pIh*&z z-8<v`x%NLg&8L3sUG%+4zl4s2e_8nF?25y@u7~~Rxo#G|H|JuAA7g-$Qqm;DB?tDs z;0#}=n^Q5*QnUHa4vyvWzd2^`tooR<)!Jb><2CWMJ>5Ar-<IoZ`?%VQDcf&$I{D(k z_66>nH!CV%e&!_g@|QsM`nBKgwK&vQKl6R@%j0ZPZ2EoUf8y7_B#0|bxy=21SH|yt zhA+m63k_LaPB+B4KU=lq6G!`r%8ry9sy0`5?!QrRU-vLq=4!2NYuvk52QtkQHhSB0 z`dnT6j);Aq_bx1a)uSn?rk+-tp(YSpBY8-ILo>wSQNonf*ACvkR=>Su-!#QLg|dh4 zD%HP`dY{(&Tr0xh={5)dn|XfSXZKHYwOjr4?7#i@ZYx;iRJYrQn)k{`^Qo=ev@EgM z@vF1wGi&Zh)+<t)$L?iux=lNF{!i)2JGqhJda~O(ZFPGswLdAId|0h8)AX&nyiWA> z?F&_J{+n?9seb?esvkQ{Zuo80&HPg?;Z)4}Vdl2pdgT+&H@0wYba1;~7pj~bGi!O+ z#czI^i*^+9y!!Cx+YIMeOMbE7Pg9Fx?y^}1soAx#Fte9-efi{_7}j5CcVWf8p2UkW zyHaLoUeoK6+Q53Z@!GF_hI3y(`2Cb=&FoiC_8(%+d%_so9L@W=KKs*d(@edjyK-AE zt#QkV&$iY%WG-E=Yf>e5pyJ1k*|+|G`8fUlv^N%(JaX-}7tXOb<?NDO8g2D7Q)H%% zYUQ2gE2~s@tXc8(qDAhe<tfpVmGZbAUw7a9tYD?6mgyDk4T+82*WQ~im9P8x<?Gj< zPw%f@=k;Zo!kSr47Hu33%f4NXUGaX7;_)so{yE`I>OO4lFDDD6gs{~6J#jzOU9Qx^ z#OZtLYId2{&VZ$}4?SNJ*_l>Rck7-<=7e;so@+I?O1E6{%Vydwrm=9w(WFcrmFZ{W zeLe<1zP<EoSbKipeK(<9e~(M7{Bub@H*MLx`Sa$>*{^TDGwaTqxjf%rMrgm1V$3{$ zVI%Krzq;p2p^yLb-(!nv%h}TZ`Aq$WPE{_+t5H&`zU=+uzT@cJ3au?}e@ph&cJQQ} z7b#Kk?6s5Qp7bF%_wbi%i)((`C@|GJ1g+<s;FP7@czWmh+1BNMGo7tIPv81r1Fuf* z&Fq#19|WrUH+kOV>kf}rpHy+|%loJEwViKY&42#<%JjW~x>bjLXNIy|k$(80LflRu zuwM6Nlxu_am#YQh+mdfxc<);Kq$NgSi&FTcPoaTxqu%<5UEVWse*NPc=30+`9)5iK zdFZl|mkm~L4o-SfyuIf<|HP6NPq&)nGRa@tvr@ZBb8+Uc%X=zA`VK7gx%mD3lPdEn zQPIrg4U*g+_q$0QkobCW$*C9NNAFpci3waRpSNOld3`Udkc#GQu4+H63yl1hyAuB1 z)wxh_x2L8mLWt4BdSa>8+H*_l+5dSi;&pnq$zr=+!|m5^S?B%V`AtYjV>SONt|e>Q z&a?-xdx@Xjv#@pEyxKg@+v-N2{{D69h{!+l$5`;6p+T4CZo|csvdymD5Z=sjQ<TSI zmaWSamKnZc3vD&))8u|Lg<RBi6g}%SCyjS!M&8<*Q1#bGeC9s>mmP6+?aQl$?0Zeu z8okocS(Y1YxOVHt)2BZa-ClH(b%OEjB+hE3-L4PSuN2Iw(bJJ%<G8%j^5hHA-gT8x zcS85>c`kZpN!&f-`)12mTO|tb**L4BbK_QL*&A&fYxoVhCoMCTR930?TKMkY#rAdX zH{_?!>Wo{jIiJNSqTuJ&u19a3qr3z*=A@^18J?Twc;S}rnZ8Nk-<MxlqRY_tLwJd` z_q9*=Pd>6@|9_EJAv{>zwr!b(dFzbdu9sqOhp9h0ZP>T|@%KWje{+&nobFk3J@>Tc zd#A~j9E~4lG?%3Y>U(LQV`fX`TUh^bszdemg%S(YSDRH{ZF;D*`{q@@);H6-p65L6 z=r_DNz4vhH`3lR79e+M;TADwzC!L|^=Dfx&-$XtYbICB6yy(1oMa6B`vNtEo*+g2} zJuMp#p0azt^vLG3!F>}dgG#2JmDSO^UnQ8ZX7gz;Ti({E7BggDdC8s<VzOb;l6=gV zUcd6SYTE4WZ$H1D?!TVjKfCtrGLQC9HSQT}FNr=nb)UJqW7FQ>FK;hj&OhI-J|@xn z^3MPNZ&Xj#wam-m{1E<#c~Yf}@rE_Rvm;z`k}vKSnK|iGXYk~cL05nODl^{w;e%$d z&eV{@)_W&(d?{#WF6jAw%XGG5-h$7u>y9Ws+4-@jy8eRG;VIK*G~O=jsPr$o)i+7+ zahBx7C7g<V-pZ<TUu^B~l9voWqE%b)K<3k2R#s6jc_Y5oUEw9y)9*Q_EPc$>wXA02 z-|yR_9z`i;NnLP0UN%Y2_08WpD@mif<(-eMb{uhCaER+;K{)4M4)KYibxe(OFQ41> z@6V4q)^B=7A#<7PnFEfAF*Gw|GP1R-+QFLrqvCh#k-yz9%NB|Rhy^he{(XG!-SgZ3 z|GnR}Q0Ya_f@!O-$p?r3Qf|wBni|N~E8n`@rmosS>)l4-hwIed?Mr*RZkbtaU_)$P z_){yrmEnrV-mRRjH*axcy46{|zVfup@YL#ON=!c%{gK(LS=84j{=eSh`-^39_w8)f z^xF1vNY)!K5L|Qln18pvcJ!^H#5mpC$3D;7sx8#VYOP%VxU&A>y7o(ZDt~{rIADJ0 zEceI$EmPQ5azC7KwSS(3ipRttUr*}?Ilq>;#dcV|6MuI6I6uF&(WUj*>i<38@b7B( z{kxxe81hm!wuRlw7v#J7lP$fAr~ZN4#F&V5WuBnW7Otrr%!$9Qhu`Kr9U5Bq>(h@P zduCb4&J}aH{#j$5=S!d2o7LN_diUPoH|D5*WHfE-vkOd;nT;xQR<L=0kg0jI=jV)H z$ID|DZ)@OIY}_>|@`JZz>(%px`?DJ6)YpE0dA(oy&J50r1&em7XFE-J!oYm$gS5I| z{i*(m6OOq4HoVt5_07@NCe|k`=k9o=xQ0xecK!P08CJ7>9?$GKpf`u}*F%Azhz*sl zmqLY-M4C%QzL>r|=CMpZzTYkP#G(uPoIP8ouih_cVj=XtWXH$Hk8jBQ@r!if<!R!* z+wpa}Olo;Y={)&)7k1~@PqW^B`P5hW+_Z1=-_0wi*Kd3qaoIlIAZTl4=gh+y3)tJf z39Y^UBl}On^`l!(KabaYbB@Jn|1llzSx?gHgY^^aa^L@Xr_T`*DRSg1lesU8M8O|x zJuVwNb^p!r!YRj0JJaHXbMxLU=$pLEXjMpp?`pO7xZgf*le8Cir053=^uI2SociyT zg-nL{@jqwscGlltF@L|!zb}QUkrLq_k}rR{lv7%0<!m`?>EYP#8x-HY(3{Dmvm?gy zMO9AJ`dM{Z7FkU5{KBG^U%tHe;LIl_GxHPgB%Kdp4cIz&Dfc$TJMUuV+1acK*_`@C zbXq&l2BklXAMT!a>FLzFpWY|A+|a!^yZyU;&F>8+d5!yAw?sbI46EPrp<4UIzBHwk zw@)Tb+i`g1u{Z7}W|oEil?x~A;!suSyPnS?B)*a5(%s61SK{U5!)j78B{TWXot*l? zfA*m{vy{?Rq8VmsC9k}6M)duLiTg9==6;K1I~=2WRb=7k9S@&A+FSYi-{tFP--w<I zWpj8Z%*-V>jn)79+N6tJ9=UT4U#@5Jl3BB-P)lEVs>H-gvj2Wm?%!g~uydQvRAJv0 zkrJ~Po!zl)$?Ao@vu|?0jqunnT=nMNzLGP|cdN^TyZ>Blotd8a@7VEj#e+Iq7!+6y zCd+&Dyo>*T;D_Xnsb=;!<W8N9u$i>cS<pLT`|MSf!Ea|;ukGEjqWP+7=bi)J3nayF zS=QgaA0oZNx_497=k7xx3Qh{!PJM`NXZZ0{LUf|a>{B)(OIx&ei~j!j^6zJ@q_Y<z z%6NIonH?P?&lo1!9jJ(MPPkKJb9tIr*ku8Y^un@|Zpkwqd?zfHSNv^!a;GRcY57fN zqvNYYcn=;~u<`SofB&CPUA6b;!@q}b$KU(&>+|K$R`o46O<U_H86KQ;;t#*d{K~B< z`SSLU=F8jf{kyHKdMm3!>avLzYg9y*`fdNUcV(H)gSW!0_gB5_S-WgvMa9{<#(7M~ zogZ#9bTB;Vzwx;7nFIT_B>$+`_$|M#w&q9b*7dcz@54`jmA(3F-?N);3~Rp}{}i-4 zN7#PJ<$p!lyLg^{D6jW^;C|<yTzu})@_0Ern>D{p8GOuR_)i!7E^g!toaj=Zr6Jq9 zsBa?oyu|w#<}!pT`PpyPx^qXOPE~uh_4{)7&k1HBS1!Kkco%+ZzK;5g6U{d^DiwC} zEXr)NGb-Tae4*Tssq&b8HhZT9`<hpcEsuXH7>4}W+~crhf6=l$ho!;wT?;FVWzF}+ zXKam|7C!sW@r@_L6-ygrQ)WrLI(lgD`kCh{9X=mOPUv_$d)uBero%gQJC^^v$1e4` zn^#zoBfIx!;o&LMqgPx%{pa)Ur85ohO<Z+UyT`O+=>n-!lcZDAKOJh_wD%7C!sJF1 z^?Ogl<G+2pEXMyiKO%75`t$bZAKT~G@B8=X%i|<V@#Z+@BXb3x1Rcq~dsU%@PmK9M z(@|Frj)o*%jT==OO~2R*=RG{O+VJA?dA@3<#+%jnC*7+s`+4eA@h+F9naZ52-@4kK z@7DBwQZ2M_ipJm9i{*Q?_AKM;@z^_iaVAH4URy%Pk~QVROP@`7nwlT_ll}UV?xwZO zdrs89)Oh1M=}glN8|9r<Czz-9yxth}(kP;Gk)lG<wgYbq9`+`4&;Myq$u(2iZrTUg z8|V0Wwy9lT5cngIWoBT6oO^C+(ME>iN3GJ%pSg__q{VJ}T-ee%CnQI9mDt9!X^Jn- z>`yPdsNQ>p>(TUOE{l~l%wEp0TC#eEz|YjhmR(+xOX~IaG2FYU$0E=F^psl8sfNFk zA~$WGRMsgY#Zi`KKj-!Ts&7##pI&ABczyZ!^Q(@fI}h!A%JgCy<EFf=|1w{mDtT(8 z#j&|s<klR<!e<|qZI@M8yj`T@vTNq0x2KY9=1o3%S$dB2o>HF4$IY21O^IJ>S-7f8 z$h<Ru$$y{dxrY=cAE|G2VZK?g_2Tv$90|?;`EKNU{YskJJabK%Ra&6Ky@|}S!7DB= zT{c_l3{TY#&y#lUf_Kt88?R_&So=0bu9Drs%QbyrS7TGm{Rau3zD-sSw#fK*a;23) zjpB)E6)LJr92TBr3DeTpsG>P<S9{=<i9Z+|`I(bzc$V#D45=%)wDOZu{bJ9r9*L@J zPV?0m@YtX4Wxe)(Q?}R#n-JlSZwG(;5v;3Bkv<WuxvsX^*7R5U(O<4Xwd%*knDly? zZ|g0qTV4=)vgqRRS%1!+?Y956!aut~Co;YJ;oiz>C3%N$Zu7V%2wL)A?JsGznm)@Z zR!?J|XKZD?Ozn?v|9-ywe2K+F;ZFUbO^s&{uGBlD_#x@6o`Fj3-aE-EmddYWUqtEq z6)Bo%_DA=g{<n|O%`DH&EcM@?Owq$4?^~uUs95nn%V(y_+pk?0%dfMZJ@LM|_w=Pp z%<H}Pr6td4))(=+oSN$@x<SPE)`FOMcI#pbdXMj$diuDotkaVRbLQTER`==~yWGQo z9rfn?@%w6ieLZ_jd}8O*zU!BshCjXiyMOJ0OS2u=&!1$v9{6dUr*jv}wZ13Kb02)! zo%Q8-SX%J(?ept?{rK`Hvp3wvj8pF7d9JGa(XZw_{JrMc?4wg3>w1Q^q!~V%^o>nz z+Co>Ml?4&6C$9}%c~i#Ib8^C_sW%Esp9yVvpMCG>v)=ki33r593!X5)c$6EfbFw4q z>y;(*9|m2YKk-SITGYO(X=(>=@P74rf4D+~>4o7Pl{AZkYxORje-I`vDz9;5m4NQ0 zJr95S3%_?zE4Y88t3qJ!q>8ggrg&`JbRqDF+TKOg&AQyphs388zF5yyeRPU)Qmmg~ z*SmYGcl=K*3KdgMdR;H#nU^%_q)Jr!i_g63OD*Qeac6vgG5ba2$518jk9yiBXIxGH zww*r7wQJ9*ZSrB_m%Yn(t=qgywd+>3i|)2_caMs{ziW7-=Fi7Wnb`XHVo~Wc_cQq? zuQa@u=Jc3jvdxQhp*_(t`aAEPe0Nn}edD9Z4{JHT_ngu^QfxmfWMR|E&-Dc-wp~=% zxNK?Py|7;&A0@0$=Q!6OQ5wKs{Cc{reB#5+Wl1-ME6>Pr^i{lh70KZE=k1vXJV(~_ zWnG%2R2lv%h^3HkNyakk_TN#j)_$rh5z5?sEsjs6Pi<n4nM!%N1xHz4<F11yB2~F7 z7fi@q?Uos#Zsg}v8piTP$X{%W-<$gSvRiygC3nuLR2`eSFKfm23)w*zkJjD%KFKFB zI?U@{@ba*P)D2s+$|mL~u3i4<P04!ycsm;#dtK#;3@WV?;{?;X{uNKU`G?tgPn_l% z?u%(WWjasZ|0-U5_}>NvGxNtSjwkMAm)`rByW#s0-2}Vbz%M&CuhCyN{aw$AS#HOi zihAqaHXbP2usBZrOu;0k&<7e{m7c6Px_*&{N^8N^)F3Tkj#(ibhPn9>dtGJR#A{4N zmmC!P;NTRk@3U@Kt-$L%qoZ6Y4j0#4`I#-fSjfV>cXy9+<qoUl*e8`;5rr><MS~`A z_C{x@b+}zVx!3K=CwFg$1s)R?hwPgC>Vs~r$*RqV>NEVM>^#d3Px>%#)eNqccI?UF z!g1{i_aF6Ll93lFuU6;mf9afKef;|K_WAp4Y9ba%J$QJuW0?VW!fAt2gDHC&W@P_) zsy{>PpsV>>-4`3wPoyt;mm+%na8k&(>mS>%D%YHDU9z~IvH8u9`&(Ki*T-q@R_zw& z@G)-p-+BFG(x2S=uM>DpKTPdb(--Czv~Y5?lRSQ?*IlP5YQ^bA?hkl&28iie@AqJ; ztG3-=Rv#pChpD*v@Kd4Y%?F<3)a%tZEYA2oyT0zn9;c;;PS<fexBtoAEA)=*)B2nG z$^MV_)s?BfoE^h?mbvx%A9t;1@7`F=JNWw7pJyNQ=ijgYwMpxA1Y`Y-1<faU8_(|h z5YqKlVvX)2b$1Vom1d6rGO7jHj#jgs2$nt)Tofa-@`3Jko2q$hmioT351jMhiL#8( zuGe{nDU)4KSH6DxC2BJFp%WTM4W3EriA(6X&y>qQp_KD2(fpy+0uQ@eUB(vitDWrl zxwgtEaQiVEn_b!xrha3~mLD^=)JHb$ZfTTf7M1Ya$l&3y;>#nM?iGzf9m-v~o+j5F zV!mnY?+ZD;IYR5*4w2$*%g#k!_L84yq<d1>JR{{>=`+5rCEQAz*_$}oZdkRiS?T=o zUFegzM%@slO#QxHQobie533d*c9ai!e3RqZUL9uMGjqJ6{)wAP{kWm35_nPW;*9#6 z+RhROC)9~VO#i%Kg8hRj?6#c~zVR%dnqjN?QXwi^KIKN)t^Ia&m35!LUA~cQ?o(Ux z`}6;#?P)@<LpSqB=G3lOuyuN#zuG$cyWIEt1sDo4Ct1ba-TGo>+7~a*Z*P>|WC(v{ zpLtc_^dwe`TmkEEYCOdpY8vNln7N-Sb1u4=R38-jXvap5ZkG*@3}VlG?>cVzVr`Yo z{AE$=rd_*aIW^~U!TI}PJW~U1K71)qa<y4^Lc7AIH#~)p8~Y^Z_uH)b?eOWf)-#Ky z!%az%s};grr%Oq0oN94yoe0<QiLx3=p-0r@=H&Mz*xj4t_GFr;*O?_I9lDXfc^Qh% zO*;Pcs+tpDz0^Tl(QVw(_Js%emu(dLeJh_M(2I{-Yw5mqY`dHo`Ld;^K3MYZQI5Y~ zbgAO!oC!7!lABDIU3@#EE68y1vWQEn?hdbXEAQ+)6?fbI%CE)$&Od(qyuZIb{`Q9s zUHKK=K`Jwn)#s*N;x@>6<?a6K?6aJeS!|DL(^yu|v1OHHQYfnb#}J-7Yw9!|t!CTi za0yxCjuU@Fgj$n~T#9$rma=o-jEi5EpHjJUZ$*00g%hvX51!q|e`4dNU14$i%wz8? z*_JJIi@AU8#N?AoamVjDY}8<q{8$|R=_q6S#9!77pZ{0>`m~|(>8mOIk_#_Cn`E8w z=l(bKb3v8Wb6G<4ZJT-%GV6nkx39BS=+YKpO*9g9R6KI!O6TT|+!HPhHx`7Ri=4Mf z#%#aO`p1s9UY=c6kX9_2uW@ry&CW@lr+mMBzma#~?SA>^4IAPcZfEOHn%inG)KM~L z632xHdAqknemb)9@e0l*7k3!hT6xEnFzfU_webEvv)$iJk~Kz+d&VY(&!TT8)VFJV zJMUz~u=Gjv*-vZR*2D|@rMdFFS#tT*i~@;sa|_pOzOqpA**4Ga7WEB^vgw((It4=C z%~4(GS-(g1=98ndj(mId(PHVA?i0_}`yQ=xGySb>$(58A#Ixp)ZsyO+8@2Bxn9aKN z=TgpVhJRI&1={@4BJES-y7x`C-1Eld$Wz~g^-fD=^JbozG@J3q*W=5}--r1vYrHsZ z!5xK%qOS${gYGp-`u$V7IeXzx_n%eAc)1Fh9j@B8c;xz@l-1q2S<^@+L*3|jQrop& zyKq+9R}1FKceu1=EZQ~A=F@$yZoQtMDN`Ee-JNJsa%0bfMKZTMQZ7VJ+OOnwA;?># zZ~c?~2?oXWTUO6&oXup(!*+Y(#h8~zk{w>~xNSDub>UR|r^5!~lP3vD9rx>Kk$E~p zmAT}CZlu)4xyKR>gpJsz?VDP-^hDFO(px>sO`B(nm`eMy+8UoppXd`l$67;nt;p#B zAF&;YPTdC;yw7goVotCM`DJ#^{FCzqQG*LU4>JWP9NXoUeyHBvM4scL^X8_^Y_AC| z-#(n+h`qUWNqW$))XhS>W?#rMbF&ouAof~rX_OdqYpc@nLkV?XG~Ar3SXZ$;T&WYo zdi?si<K^4k-f(?AS)!z2yE3}Q)YkV&NY$*?Q`=r&now#i86CMoa-YJ_Mc1a^&)Aph zDa`t7(PraJo^2~sUaw_!toJ&<Vur?3EouI(^$9B5lPfacvM}w4nVhj!yd!S^0nW*$ zOc&Q3irSvA{FvpPTe^2rZyfdbQ`R`)*20T-8*8_V{yQ~SAfNO2)l=@<`=9C^JGZOB z-sn(m<@&`Hk{c48V$Pl6eDvwGHru~VNe|-x&&#=P7MpXr`jt`lrk|y^=HA^DTYuN3 z;ozV5TmII5zFA-SC-di3*8{#z6H-22yU?_F?d*N!`E%rWlK9f9r$yOby))t5vxnwO zEj%LicywlVResh^taM&-*y_Cg)U}Z>rXPR)ywpWZQ<Gc$IkRBUg6lcqY>W86$NC;l z{3qT#f!)T}*hgXIia#cSlUMmHUGnNkVJDMt{c#Uo6M?ocp#;r}7B&XAYB?XHOP%ND z%5aCCFi%^qcYWuMjKhlM!l@5kVzldo+FwZTYDr~U*d$sev(TUYlfb=;AE$p*cmBL^ z9~-lGe8VZ*pZlW~1x+qYe%s;87GC<wM!Yc8sML3f?t=usWt+3h#3ceNuIL<@t2)b~ zPo#1ucfFZmT2RR+=a?Rcu2(s;dYUG(^A$eYCmHeUg6Y%MM|&?P%w1!C$o#~L4Wgz~ zZhz}M`f;7k#B-UJmre^kzhkyvY1*t1E|G1IDrfCcZjkNY|9ofI@tALpt0dj;y~tR& zI_4l#wAymNsqu}>?dMVqJWuX1cKZMCnXYJ!SYqI@qoR@%>;1PkhFoE1Viq)twp8%k z?Z2|(jc(;)Md!x5TP8177T3=R<X`l@;gRr~7hIc_*S<NGc*uX_uD0K=UPaYD+*fjO zW@u@_!ryj}){3dcxvpevY&#N~GBGzdP?JeGL_7a!+jZ}#g<rx%1NRkmuv;6h7N`t1 z|F%7MVWM-~)ptv+Ki{h_|MTHXp=9vH-u>3kcHd*#%y!~YZShqOp=qXN+oi1Yqb9ot z6?KMu^AmNe4UN587Jc)tRL<&M_3_6}Ez@u=a+|uhtG@1k{kD5D`?q_X?yS1D_nKV1 zoPEu&*N^}26bt0hV=`S{pf7kNiFfhj1(9>sRos$!eBo&VgZHAlh9~~juB)HMnO~r^ z<ivKHZH5{dxArDjoLYQ$*@P6u!-tkT-xt0pV{_jmO6a56I%nfUu@AcP>w8n@PX6d- zz$9e#knirbhaImp3(6h1rBfxQFW%xXU6+~X+3effe&y!J{&;x#@bvQRWVI)4h7YxG zX_aVxE^}tQrl%^~v7q?x`KEVV<(y%@^%Is}ovab;=jk(f>Vn;jzjL)b%S{%h993g1 z`eP}0(}L~rw}9&<FE*|{-4U@!^p;q{sf-){Iu<J_Z>nCYd+*PO58tM*pD%wekIB~I zb?*w>s%$RntFd;EO`JE1|7P5~dfwX&$ClpQ`(xF1es3#XFNUtW%Elh6KPQ_AwRD$k zIHlTDKmEr2q?m=tEdG1`?E3p5wq|>o5_^#7{Ry={G^@TO?S7m6?*7aJC$Ifi>JPXO zzFvL9hYyRBFW>)hHo85oFVo9Ey!NA+qs52oF82;gJo>knQ95YL52FbY3--VL?iapk zZ~Mz?=8Kz;cKNN{^lZ-J2S+5Izu&zf)kXPqW`*siSyO%%)XS#j9nCGbF*DhGjbrzw zl^1vCPKeyF?#$;&x$Ec7Kh<{Y>W5V-OOMuFxZnA^gT<gAtnc#0iivm68$YR*cC4FX zlC0XLE5zyafX`L^VW{B_Rr~b4uOD8}+0Uc<_&Qri*`46WN}N%Flf5@8UHTn(go$(A zMC0GO?<#*P*HqU0`<5zOzu|18dg7U_nI{^jPg<9=;AC#t^A7Lrg5hN*9m~vZ?f-1x z+B`i)<neWvpU1@|6PucKESvP+s|HM-wU<9TO?5NlhS%jkYpTB;Eq}j8`zD7ni#Ge; zhC>%PgP-fnvP!URTygy?w_Ap1%I0+<ah*IHr?H><%q8$;opAUg=TcYodk^Yw-hVZB zVvT3$-S~>e`p^DR5Bz-9dEz|EFIAN<t90c`3g~W3u`rC4*b+5UOjhH#&Bgo~HW3y7 zJi`{BFt+=Xac6msx$XRWwrlxb75tXTRS{TTeO!6-%~g^)Zruyjt9fFcP1(`7eetoy zKRMcS9_?SUio3&_%ORe(q@E$}uF*`l`iV{AY@gn7ZC6ZHpZ3$O$Xagd=f=N#e>Ll5 z{X9`$d+k2suJg>gtb(ouwlaZ&SyMi(x;y29%eCYsKbtesoBzbvd}d?qnU-*B$)R~n zm#W>Z75yGB`=fI@Eo^I7Q<Ks{7o#avQOj*Np3AZHKfPuqdt<F_M7OZU?5A%g=t%CB zUBXn~a=Vf3N~2w&6U)}AFVA!^KVGuscahsxr4zRuHIIF~!8`BY@+;<%MxCEZ^uKOA z=y1-xu)%8b^Obiy?w*-vdtnokv+l+hllS?vZ+31A_4*LEYOBe7rkLz^Y_paplzp4* zrq0s)vtuz=d#Hwk%WMPgSzRBlDQ)TETI`mYC2tyfHn^TSYI7Wiq?<SkUqjBL52j1B z?pj|;WVp*;!s%n#aN&e%LxaLQXU@g)Yt}r@v5)Az@Z&B=ZHX8!_Z4m3$Tyvhep56q zl`eC*n9C(PQLN&}@)k$O$B(pl?r@~#1QyA<PwcuB*L1h*U++_m=Zu;@f}cwRG#n0> z-r>n$uGBlm@4u_Q`^bK!za<62Y<qTeipyNDnjFzwIy2BxLuFR-#-=nm?nN`y1=#j& zYfM~a^4aw9ewBn`jz!G&Mo;==-&~k%dXx9ZvKv2zn}j*`f7xj*Cz~exjc3!GLsJs& z>}p+@cp-`L>0TEW$#n<MH_Sg#IL}soVv+IYQwOKqz4%guwLzSF%cT0XHZOjk?9%*W z{WHgyzv}8CM$wgBg#v58U254DW_ZCV!BTDUskOP+H-G-!E+6)!OKfF?>dMwmV;1GO z#Z#Q43T4)meHLPWrjz#T<e8(LXSUXJOh0m{X5Zet?J2*r5^gwLGMFovIY;95Z~2gS z{PugQBQ}=sTck~>T=g(Ox?tUUhI(zjXT6il_BN$UUQ+V6=@Z;JU%w-IiQ*1{xpQ@n z>~2}t!Q{DM^UHHQOg97%*PgOo`e%>QNw?yvN%}4_C-h@4IA`s$a7kCY%Qx}ZZ`Ik# z9^(C>QzAlDB9gBji#1DkQeO}`nW1OGms=KzkCPiCnRciO?sB?TYQbi_mfd*Y;S1&U zi&!JKm0!<&@5eKz_1v+PH~m2~^EW5=KRVjCZvXkO;=BI2U5|hH%lf4Cx2~h}qrd(O zyMI6HV%gUG_j7WWN(i=`6_r)4xp>2UT|`~4m5$_830CE{?j@1BbM)ghHhRewzxl4O zw$n;;*0j0jzdU=pykB1azMa17%{g<s3ZyPA)csKJbHu2!c5O$0skZgoM_Rk@vi~_^ zD)9O2ChO#@(!Z~0#yRkrib++UWeCbNNSMcbaK{9LYd@6>lFwA~9KATNGu>&|C5<zF z3`;BRPrh$CmT1%1ZZ7c8qbkma_t5v>h6N8N+WeZg{9WRk4j-jk)8_N+7yWMiYj(MR z{C{PskN0nf9IUT7UpU9KLW$Mx>zcpu8@(TMaU0Ii`W<JZ-E{D4Cg*gkR95CGC&F{5 z&xkc$`sJhQoqY|Pv#Q>IuU&h-U;g@*v;U|4^IOO`@7ce%@#oGkZ#W&1D7LmkdX=wM z=^n+~^R3=FJy`gybwS?CS;x)(zm#UWaDUyD6D?8stm$8(t_ZK#n^y1CGUrW8-8we6 z!*LxF@nv(=1S6#Kx10{Tk^JUGapBhfYTuk6i(LO`Pbjd_l09<XbyB6OqI?NU2hS&? znc2Y$Zm$X|U)FWkovG}OtEpjU+N%zxo~b%zOM`Cg416oz&pLPZgq}Nx0)I+=%icBb zxUWXUO$SfUXuD>QCt|#FGrzB^zrnWUl2v@~`7Hv|(t123pYlvG|L8WSzj)OvGZxKn z9>>>8verGh>?|_p#SLYTox4T%EptDdR=8F2^Pcbv0j~pDI~^xSvLE@E8UK!Zez;fd z_u%ve+m^hxIb!+s+=7B@S`&h%&E$?Qd(CNOp|q|y;QeB*gLw*3JSEKM3s}mS)7k46 zBt;mxCrDN|EVh<ixWhtnqi~D$;<|-u@|yEjZ0<~cAR9P;Lq@UkaXp4ktJjRnVx?Rh zUaw`hP$&%gUbuoeVD<JB?1mBI3XQDQ4x-&>Zm@6KXU&&<LwpnalIlsnpQ;J^l`$N? zJSpm!mBW_x@{-@rte@Y(`RKU#V*fV2?90p7*Na8#T<@;^o~D<>+P))ge(kR|b9IN^ z7saKfK6J_Mm>FWyG$U(PZZppz=kDpts~hLNp8osd_4)GqbaqeLU8-vS+AHtc)H`dn zXF4QLJ>c}-=d4xm)^k(x=W6=R)x2Xhd4H)|{@jz%>7Vu*|6FP8TDr`nRPAJv>?*6^ z;B+C*?P^o%A6}b#XRY<l=<-k7-#w`+cRK%C_>@8E3NtV=DqUd%Mkb{zN?r$?v<lh8 zH#JXI>%P^LQkBCzX<cf*vR;j9vpm}(rx$J4dzu&PHT#oaRaaigGD*Me8x{}e^+vMF z`Y*hgGJ$<#q}p}k8DAS0Gyag_3;A>D3-|RS#)b9YUvzS8IJInN*?Q;H-c4T0(~j<z zKEBu~MM}AQ)~98UeQL74NuR3QxFRj0BJ$QP@8};~zrRkM_s?`qK;?6do=k?OlsDGt zi+4(ke=KZmvh$fXLCgDinS_V*WMwIP;U<xV=fgI~nn^t3TycE!b*t(;ro`aI4dOSn zcp`N}t}ec9S#PYvyL--;B-OgQe;@2}MIIkNczDyw<QF~OmoplkD=uJ=uw2Ea5hu96 zw8^D0U<o6GNeGJ=Z~mpyEv%{*WvS^h!813{PuEdp5q4QCaCql*r<MdaC%2%IsH7!9 zHGY5n?|w~E{r~*odj9zPb(O#NSn#!2TbZ8tEhb=~uvsMc_^tXI0vne`=sbMZeTnC& z_TOFYUw6zhJo!xihKX%P^82}dJHMZs<GgK7xY9O<o)ap|B)sKj9c3<#ELA&Ov2QBB z^7@FfWra^zKKbY5OzleSJF8)zwExz-o&MT4C$(Dls5RuNhHW?DR-CM*?^dpOO1GpY zdm6)ShYH>A$B$h6R<a-~uRfPe?fTn!yO-<OE%D(Ns8!w*qY@WfJ%`2kVMxNYD_+7v znIQ%2j#=v>>iRZbIN7tAt6l8g&DME*-$Sy);ziC?EYMZF#Prm3WuZe_Syd+w=Ly|O zr`*~j*4f5-T)TF;Rdw?1{ETI$$4r#7oc6Et4KRH6p)uf};{5daUyjE8`T4y5{OiV3 z>n8W4Wh+c{HOlf9hzwc0uVrPg(D6UhZ@gaMZTD)KG=DqG!PRfyvQNGzEj-<4wwZ(O z@uV4*?X@)z&p14=HsA4OAIH@*Zzo+5NxhoN(|OGDkG-qJ`HUHrI=7A|DV<==o}ag3 zZSmyZlfpmF88}O=WjVl{XY;!2zS4E!IR^FVTXhpAUEonKci$GVwn%=>X|Z<>0#lX4 zg}SA$#7;`|U2vyl%H!s{Go>9x_!Aq9zPrB>aGJ97?}7*M>ZdBd-fDWNt7EON#=Riv z3Y$RvV{Wgh&!Ud*Xb4|^f|b$FY2M1}zj~kcJbZ54@32bMC|##>!<H!vr$4CNtR36x zbtj|Irrw76>8WP1o)giFX83UI;(x;JoLik7H2a>1-->T#Qx5!nQoG7xttcy7iq}r- zPkLrn^KYD;ec{8WxVbMrDi&XfQ0|)Yq`T{-ll;#&nM=GktYfqHf1l%*;{7JKPsXp$ z(Yh<j^-NIk0_I|lYmYA+t)71PnPK$&;%nBGH^S}H*I#C<UlcK)nSbpz+ZTlr50^aJ zQ`@^J)7vRcSL4VDHLtH~W!55>tLANfv0vkp+UrWO`7d>wj(*?ge!r#E?#-k#)6))~ zeN}fzZo_}Y7iN*{UziFuv7ahGuJ?jn_-}U6n$ANCucRN!6z#kE<EiDV_vh``&xm|+ zSg=-LD`WP&i@zUz4PV7tpHp|OdBe0{enAIC%?$1qEpK;<I>?-ScKgnNPKI@hgr~5X z?=KcTzhUJAh6B9D><jljX?VL)txr*C^@A668Q+xS?|G_s_cnj533<0udg;zd=gqC> zx_d|O%n9v#_G}Wj=gUi$F&|&f>eX5HpDC`-`cJ-+&jy3~O|nY4KfR3B?O$I%{qZ7| zqjMwuJ$`kCAAY@|<=cZB$21Q&2PEuSdrCa=ZMA^b`x9ybH$+svISDP)<S^B;Ex8eX z$<5T%c7e$EO{<kJ%{$nCY?|lv0JaBgi;QJ1t!bSR9rbQ)+n1G}nlpDiHjgUUF?);3 z12dN8^8-F`?-rI>{^-F{?y0U!J%O5T=8^TM{7Y7Zd@>B3rOX=<C^t!>Wd71s;W=WT zAJ=~4tA3x)Gt2yZe|@x)vbC-DwgomNvp!9J9DcZLO1ppSuf-DkzIJeMU(4c<*tuLt z|3%a~m5$!7|0?%ZHe6q*wN6QrJKex+PF6(6vdKA)yVclEPfD9!c_7Oo<W;VGzUQUv zSqFWN)$_PNi<;ajR;SQCPw(92aFL%r0g62vXWUISf10;)(pRN3lhRMe{Ry5~@UL!P zN8-F=O3#m8b1-nb=yv7o<(zq+*GlQvZCJm5oyG!56;Jp1_FVc+4JWg_=I}AE_EMGJ zt0LLT!ojsfK+^P`L**Pvckgwr8qL2BCV5@FZM;(T3Df-gjG(P`kJ)Mr^75L5&xSYe zpIsf>GE-*pjq4J%uU9Iz9`xn9b7pVTw+pIYR&ba|t&sD$ae1bV)NNhKn+Y*XcHX|a zEjICm%K4{-_YKr}LXO$2>zKOko#v*98$ta^-jCI8&9<<d$jg!6cPwGX5)prUmd6c8 zzaDIuyI8lc^GENx>oe>5WLGrJI`CM3nyCM>E{&*!i@_JlZ+J%hYX3av-S6~$pZ?#L z`}FhY<>yP4l`rQ^^ADV`!_-?lBWQ0%5a%kD=izS@JW6=}vV|T~Enl^Ic_UX&$b&nV zx>p$F-~0FH>E-t0@?ob=%<G!`(d(zw@iRViHKbIm4?NyobCmmQ?dOLN-?r87OA##& zkMBOoef$2xRWs`rKP`K>;`fVdxu<o1d|sJszF+8lT=u1Uk(;w-O89+QR92B4dWTy! z<_+tM%U>Uy6=bYgtufbn&s0bA8S56PhIjlHxvIxevan#SbKso?!Q!^=MvkKMMYgsb z6$;bhy16grar}I{eZRlFzP|LQO5T^?o0sZ0YpYCd{>m3E6%ln|_6Dh`!87h3U%yiz zv$b4r_SwoejJK0&YyW*b9MwCm#MCVzu;NkgvFC?)C&XwmZ%tZdX0^rR_Rp(3JXe44 zI-1S+cwOJZXD2--D!n;#<!PpuW9`iUPUpTa;EgzTWQ}a%wjJ5|;ZHLYzO-!AdGO=# z@{aeDdZ*U2IJwB~&XSzSy*A=}<Jw)H?KYkGbM~I+Lf?#UvK3A{j3<R8Y(6$iQa@&M zZEBb7zG*tI?i80_%lVloVt)EvUfF~Lo4r@KdAtx+zL6g3G?S@ccA=!l<&~UH)AcW$ z^xpkEZHxaT6P=Fsl9PKPT{RY3e_|H={nkUpJ=Zmmtx{--eEpuC_qE<0mV7&@@9&?$ z(kI4T+EM8<kGO5Vp(N_@O<w2byPY@1gVay#Q%>G}ZV}g171=Wfd^0c3JeD2km@n`% z_1P;U34Ia%X0M#;uiN|c>*FqJ2Rn%SH5MDz<~`ch`(AP0NfVKk*IwV<%6)Z0{>}LR zoNrT^W~|RUUj66$aot$a`q?obf6d@J?#q<B<-&Ta(}6Yui_Xu@=-P2?*{XLkB2n72 z^@M^pNM$hc+?n0^K$QR8^fX)L?Dgeh^RG&>OCRV8Z?%lxxp;{W)7^WE{PylW|L(rN zhME{(s83<@w%YWW3CBI7T6etJ?kya1Lt8k|b4jK2Bg-?fnHObFzFFS$L6p0G{~X0U z^}0WQA0M`E(7tD<`>}bF5aWLK-D;EBXa2VRS~bb3jq%KM?YT_RS4;9=gh_C@i{CMF zbqVvD#Ou31-RW+E2+x)alX52h6c?IxBYLflc;u>2mbWU89DF9*tGIo_JGN)nH}gFy zn$J^GSbi{MVp*HFN%cE{^Krl53%%IbAYQLH@2RmQyYL~)O=~v3o721h+V)&+z3|@~ zpSdhKeBC?Pkn`RRbtfBj$AI%UInE`#yW$zo=Dw!I;STSF=ily}nqbHEx#Nnzu;}xH zwv#=0Usqa{TP<Pdp0anjOuo_0rsyJ@($5NO|L0a8G1Fo9TETsCm1EHfhdzc=N&=h? zZJ)%i*U$F(<RjW86Il7ZRz7^rj^-zqCF|SrdK^zBPw&5Wc|k*?<lVq!Y{wYu;_p@l zazA#n77_U(a{miUMajD}E;---ZY)i)VN1FuF@Z5z_wExe#=E%<vJG$KqZCf9(h)r< zarF?#fu$xl@)&ii(w3(S)EX_>ee#&&AI8pAFSJ+wYnxRs(;YTVm0Mh@?^s|5e^A;( zuR{}qicd}vwRD?nb52Dkajm8Ox7;te$+|lPoTeUlRedcwZtcyef0jB?_4_>*ia(wz zweQ!ZyYK(G@0F}v`ZQcWW^;RXWZmbtyFPq5JiT4NK3;T<US<5{N#CyOdnAY3du`=w z|EOHME5KFw;ej1@9qJ?2E5zLhOMm!N_3opOEg!tgHomZX>+mY@-RI`K%x@C$U!3ON zdobsBsq8y5vvnp$9IO+JGB<ggS>|x&{@P8OE@oYv_}?^f>hx3p9^Ssbe7p4HgQqPM zKWTCa-QM*1_jDE3xLx8ASyg}7A3qMB)B9uo&be#q6SVhUVaqmR;+{UYz^ne-!5x}@ z|2gNsTRwk&{f}?|+If#Z+@U?o>_*qY#-rNN8r3FRQ-#(W2Xp+K@w!W1vU;j^{?USf zh`=c<)|*+X&%DV^v1gGh^_<n?bwu>!Cgq)<N>59gU(K>Ed{&uKJC#GczsKYuXE00n z;%&;;m&$5zdGAY!%Gz+T`Xcx1hdGkZ>MgUoH*eM3bf+%U?opTJev=8>Coj%26)<z@ zk$&U(cv-Vo{v6gH&v(3vS?bHXlR?YbF-Q7QfJ?Ju79ZP{L>tG3PPu?7b=O_f8;*Dg zIIaAkakl-Ug7(4}H*e2fzxDgQO&{eWTK}Kh=it4>sm9SwBe>SR(PMp0_|(#+FSWKf zsBWx}dwE`a3CkYG^)>hI>K@G9q_98I`rff`H3y!*ZBbO(Se2!{&1klM+GgMR4VQ8@ z6>L9w=ux29H=E@v^M7{QOx1bhBNti|x+rJb+B?B>QU#bz%h$eG>7uMsye%YfiRAgu zcVqHIZ{|mTc&xvg!MI4Or`?+^Ce(uK)Lzc}#`n53YwA62TzUW8Ci`bxiNu0iGbTFu zCaF3tJaxe3@MYG*Mw3sbPtR_M+{3re|CsyJ;JN8rm&|_jsd;0kIrDmD3G+isL_SZS z`ibjp`I6Gr)`5RB+P>=D{dTQ(`Ce1I)%~llCl}X-Jt;mQy+KyJi*JHKMf(W{v6jb* zlmCPiPW>GAEsOVLbG=t=!A6hnv<Z9Ejut#Pyhv2f%9`hc@VWW3mLxG`EY|GT_gEI< zqWZJC`HP&XZ)b3jyw!<+&s8R0vOc&rSz{A_?}VfK9em4UnpS@IVYV>&m@#3GRFkNM zvuDcOn0tREs<||hPH-NwC|>m7i2x_}wf+qcWn2F-r=4Hotn;$#ZU9gHv9LsjZy%0| zCs(zqe(3r?m$hkvQe?|XMlt<!(g!D<Z4z4<8^AET{ON*}#gUsOpYF=BiA%gab-|2x zW$WE|o@cO5HRI^94*gv;q3u#+-{J3$o|+~f+paLyZ>VtHRaEPLtXloVRzvQERqh-8 zFTA+rbMK6QZhPC_j$Iw*iyJ>C$<+%>>|Cg_^VY}eZNE;Q)@a|Ls8n*VCw%h~ui0xl zf7-Z2_H9Vlp4P**L1#k$B+KneZ3jP3ep>V5#NkINbq>=CeuzD`@|{~QQo;JQk7q;F zw3FOLJfD6AT{2E9{o9=9kSy1FD4R=J)Ar;GwtE*M=UzFw$Taetd0K-~|3+cn_kl8@ z_47>n1$=jyzRkA%CqJ*vqFqG!_mBM-&fHrxZAF*vD;D*%@P!>q{w@>x-^{%K_?4+i zg&zfu8ZUX8%k+1@$tUl{@2=0(Q=O1}PHkI#!G`MY_JWXlbA={B{eZ4HFC<;;g=U_Z z)s?j4V)x>RNB1pl<nG(n#$1e++`2YHc!{WMK(J^%my_K3B___-qxQ@FI(tm0!FSEv zy199(2bvos>UiakdO1Y$ZtD8w5#6QSyHapb&&?QvOMV?}O>224a&u>$RlS)X8Njo? zqai-4#oW4RjY@}$;I&_Ifj{#1U;LZYcvP)YR9Sdck%;BX1gCv5rZ2WCoIL7uBe3P* z!?-0?A)fxz>MdM6tJGDGv_xv2eUo;I_lMw;*FGKIZbgh=?BCfttA5uqm$AH&vB==K zy{A5_PlxrgwyiUnZi%xv`dYC6Z(@A<c>DgfQ*M;VDC_V06J=N4)|aBg_Nn>t5{(BN zJo#507h!(B;5wJ|%<e6XF=8wG`^p~gkltmp*jQxN7hA*qUj*tsk2Bm6)3LasZ4sj2 z*K7Yw>}kieZ^;I#HhLG>eJ8a3Z(FQw{$_%S@6k7NUpRU{k7ka^u~j;8b@Gel2WKy+ zVE@R<(szEN$(}cF&GOItiqEk%zfs&7CuJ*I>c1uZ#TUW7U16eHNtf?VSu$zD$r7D) zwU@R%kPMjfk=gNp$3sVV;d&Xz%Mu5xRafs5{M(VmqG8#?;N=>2CNQM6=uShjqL0uQ z%Y^?DueR!JJ@_Xma!t(2Nh=qyRj%cpX7)_AQ95vu$=*v!69PC+q(+|HW4<MPX-@9? z)^HhxzwHaJm%gy!d8qNMbmET{b9Zdw{L5Bo)A=>jf%!vB^0IFe^<$PcM)$DPFX(og z=@%M(piq39V$c-vxxE1btuhC+HeI^;PBG)iJX@~5Wja%jRhO{)iEIsG@D(vLES(-F z#jo^uO0mk;J|<SJY|9VvMOk0H`@Z-5pP<a_|LVHRqriXFhWUzufBr6CFk5qv=oHT# zdo^#(e)QJY(_GbN!k2<Qdp+}SoH3h!?_d3<PN~_#C*8|#-&p+YX1H!oUES@1?N8>r zn;B$Z7mdr@q37VsH^p|j<%&)QW%gh1wGK|)*vs#rJv}?l^NH^7N;UD#Hpa!`?CY0* zeAv2N`Hkt3+5Yq8?bmJaxF6n_oUSRJUAg|~8#ktP+mA+weGS>Sx$AcRmaISb|5)f> ztG~W2v_4dR@zRz5MR^~GiI%T!D_q@Hyx#Q8y1o3rL!71xtTy`+k;^w@A^(g-Kbw!y z@BclP{$<wpYJZVJ?^+hw<Eoy2&L&sQ=3l*Ly{d%iY!j0QzN+yGiO!B2UO(#PUmMxr z@JMpzK~Lu9`6u2<xxNUnXrA^{d%9}Fq=%ovkG2?Wy6$9HFQfX-<%9neuAAb0k0e#L zUC#8LtUAf=G{5xcoAX6_rz{dMyuIeyj~cO^cS09gU1VCI6cCp)D^-;1&e4jJNdE1s zPCPoB5)l;|vQy_-%a&Qe0@X(Ucjwmo|DIp>_Qz_sS-VYmceg&3tj%V9D?6<^>!kga zsf+Usr#pOoyDn})9eZ!R=Alg@?`|*PJhk_tt)^n9y5Q5vcUwfb4DHH9XXd>7^L@kj zc}sR(w9J~oCQ*Ky!QOW5&7B?34hknR$*!9@TdeiVkK+B#TM|-NP7n%rmfd|hIM!#L zQ&_j^vKYm4T=TB%lySamnY>`mZnN`c+xtyS6qE{D+|oYRK5$-@-*WB(>$Uo?ZFV*i zMP^qwFHAYV=;7yIvr|-^P3zKGgCER!?ZG_b_xUr4%ZnbD>~*U0jX%h@z;*t?-~S}v zh*dlgGctW#`O#~(bqn|2zI8M8rX8JrF!9lr3%egS=I`8S`L=>7;>KNn!D`;<{<O9T z0pA-rjTPAoj;MWJW_R8`c7L<wo6~;`r0b7;pTRLPrJ7-?>4qeZYA*Y0j(egx1bV~Q z?qBg;rR{gV_MT&<2mX6RO`d(s-Lf^=KsaIH6p6j%?v6UCj1T+SeE3iE@OYc9tD8Du zuVcupzVt1dZhEib^LbKged^AGiZ)iii(7=tS8e7HK3Lh_6DXt6pgLJbb3$VOA;0f0 z_0RsPH#WZF77=Um=i|M#GuT(kACXSDs4;ozQE9!D%Fso|tGl~qir&mvB37_%sZYBx z&$PMgzrX!_?6sxG>2v&-K6jpD={(wc=)Th4#x&*!oa;M6qVwdceeA0f<=H0BnB#r- zz2@EbQBh^@7PoBleYo`VlPTwB2Ir*R&-=fx_Q&n6V9CUKk2y9zFH|S$FXi~gAF<)0 z?h&T&@cqdGGdG-m9xW#RQTs((#+)6!Z6W@pM~fFt6y~u`NY>^m*l?fu<cZ}ndb_mL z#EL!{#0P1wFgSRmID3n<#ox$dyHZa*QhJmcmwRkm&L6fn@-4z5D=&Us_MpFvd;OgJ znQLx;J$%?-UOwDJ?nk{&J)``cH?PnATXuJ{)Y2XKmTj+t^lJC;Zmv_(Kk?(hjLN3Y zFCt~#8=H>*$@X&Ez+Ms3Gt+p|jc0zbMcN0tCfWVn!SFlqYWdn5DI0(7oPA)j<vo%4 zIU>j2<ZZa_`te7`%ZzlVnSp$6H&hPsuh3We>%j7|``AwQy#@cZ>st0`an@V^dnM(4 zril3g&!b09!Q#&qZ>cXf>gEycw^5roIhci|W7gLt%--etTQ7t$tk9h(DS3kDrdaoy zvo)^iodU&kZmG?;oPUA;*-fnj6|<go^+ey4?G<cqn|tV+L-w6}FT^8yH=0amF<Gi9 zyeFdntKTpC^-^E?eyN`H_;C2_uJZ~<>PuGLUS+$t{`1q@e6b4`Ya};GZ@e2kX<EoN z6PL+%wM7hl4qTn_CD`;G$MwleSXUoA&=WUl?~eqD2kRb0Z@h4=&h}=C?5>SclV*wg z_TLOqkX$3OWOrM}rpC8(xh;>coBBu0^P}*D`)xC~Ru@co)OJ?Z)hSTtUx>|f_Qz8n zWhTvuuRrVK&B(fG`|)#5YZn)UDTIhEU$9vIpv1x0K%W9N`^M$>%%9e*Ht7>+o_J)7 z`_q_HJFAq_r*qHU!f`XgX=#>JCX2YThsQ3zFoln`;#V(q7prv66E9}DGvnVpuhUyL zmmjR`SS3A!Q!RY4)C#3mo+CxPMMqqIF$)w_=(nrfF;%Ibu0ES<<<pltRFA2b8Cm@_ zv(9b0bKsMU$F4mEyXUahdEVU^_d;S%xJ|gIyi?FG4KCTZcb}GXedbizBBQZNZcV$- z-?ZDGr!TRelh?Us_2X+Zh5y@@#%csUmHaBM!=^uDf$pIv2Sd&6+E*-bxY$~#|BmB> zw#ACO#nU;nd<58*?5|hYop|drtJ}pM|0PH6T0i6Zd%BkK&$cIztUm|O>uqNFSbWS{ z$>qDsW{a>p@rR$8t~%n!z31nL4^O8b*UvVdbz5QP&bN0L%zn8%I=1I`xzc&@54(?D zzIWGI<)A~=qJ#Gz6~wPQHG8{%{Jnkm^E&@C&FiiEAYHzAyM5=b-G5K&e)v@X{Qdo3 zdigi^K2N%IAbV?t-jBT6tHo#IVtMrMbmi!$2r%AcW1Y(=!@|(;e^RRR>Kzdee(gX0 z^8Jw&k-w*Zu7CQt=jr1GDc{y_`F}2H|4aYoAJVs8CEfnAT<_?%ef@hgV?LZv_A&Hu zP>R{1dnm9^@qqn>rMF_2CnR3DUUgTbdIx`ftj5|sVF&Zy&!2C%epkeuwNK(6#@<=^ zG_N>fnakrMIak+2jRikicW1lbWO?HADangHjrC>H{wb<DrbX*7A4#3L%d1Ga$5Vt? zVRecb^K{PBX?LvUPX6TYS=P*YQuWg9>XrpPymBYn3*9%KFS#C<xxdsPWLxW$_9c^C zbdP=(cwH~Q>5=WhtwOD<TuRtp%$(%8ZN@#fe``5eo$lGNXU<-jT>2_Nt9;tw%>^C% zOg77Y?GH@v@K!fDJzMIsRWg@c0I$$w)4830v#sZD+-T^saYvZ`q!0#cU4h_#RhJ^t zCUG_~PuyKG^~=<2_ufVRk9J$!GF4MMLAiKg$1mx{Urrz1UB5g(d-t^GZPOMp-Dn9s z&?fsr<J6H15y@Zw17GIsU$I(tvz!X=ruk`K_LRK8I<-7MqKZA-zB^};WZNNYWwsAZ zo($`(@>FUksGlrm%r;7PTyxB<h?9r4Z7P39hQHDQ%e2q$R%_MXZjnfCyLc_D^kUHS zDq+n}4f}Vm`klXf<Dm!jwa+qD`YS}4#b<jp?2BI|dWJtN;#%?VtNYfh{Sqj>qp6_K zpx-$3=3BO9GK^X2zH&Vl+Z=10F3-)EjOk$(-u=a+$i+GPXsb-Au~Mr<#OFn|Ge6d! zv|JJGqj-B}OWJqupXat_zVD9pQH`o_>}8ucU2}m^UGlQ+lWsiJy1iBQNIh$Rbd-Ja z7oQUE=ihp!AKGl~?N`9;*>T`%|MHd(XWc&W+}1t4%t$(PTl<^x#jnigKke__uJ$bM zN-LN9fe02!la%uezf{Ew{Wi@EwOJq8=pJ_Gj!!9%z0ix2?Z##M|9pCPdA;`p`Ey6V zikxrF>14LNl<`jf#RBg1U2nB2qJNmz*L`00*JBZ@fTUz-p;(dT%)FSp+6S_<eR_EO zRj&jV$5@sqnB3!Pc<P%mq2kAq0J$>554kfB-L%-o{8lf(k>AFORjWYs$Umve4#{Ee z7e%?;vev(O+Tc2If${}K;X>)ph9yh1Uj$G3b;I$>SB1jEg(_V|i8l8*<!t=6#c&x$ z)ibGa&zyN|-odIzPYM;zE)IMm_+Q!G&0Fd3z1%(K`So=%2g4J*?2-fR(+^rdOq4p( zdW`?_5+1JY>>GO~bMSqW`&4GQYQ;rn#$8XCO^=+|P(9&kgNocFHq*P3MYXpJJI%8; zr1RE4DO1&Nm~E5DWb&@0>-qA2ZbAERamUJ3lCRY-i)~a4h*@ToylB-*CF@;zmrUm{ z^-axd|MBba;m?n!FK_>zzt2{;v@>J*4y!`Z&UyR`MUzca(>^}Ze&nsPKl~tLi@4z< zlSzS6$^CxTTDR3F^#mnr1}u<xWV}Ts__gC6*|i+Z$8-f3ZCKafF1%CPQ+fG<*&%P! zwtczDRTJpqTEB^X3b$U2Hn+vOyXkJsORJ7Po%`&^&$GAv<?ZZiV)Y)Ru(rJ7D7X<M zy;=2#ROOS0i~KAi3@vU%lwPni4r1HC-8lVInd(HA+ybG*B}Y1wN-Vu{?k+2yRWEqO zl)0F5{xR`Y2~TeBxSaWF-WAy=9J69l{W4`1e`48wq9<|Z^DTGlg<Z}je*GlWapsQl zg^uFm(>+%>8JNsH`Qy<AVb9;3*FLpK^`$2IdZs^LqV3e7oVf3(iqvF*duP8Lw0`~N z^YrEWb)TnmB+pcyCiL~+EBz&r&I$TEq?bv=SHvIpO?qYKnZ7ZCW6Ig|Rl#v5lj^4L zU<}zY%_Lp*oYNNWZ$}ncr97#Z*5p3qdgIu^4F!3Z&g^#Pnf-dpg+F@@Wj=X$JxyC@ zy6eWKiBsGz>ayQCKIh;rp6(S#HcHM>>+~t;dAa=5k4K9oI$k?UFeUaIZFK**@3XM` z9j>b5)~oJKoYgW#&*dSLc-8X95&OjN=j{?!i&gPESjW4=^hWWIi51RfvJbx}uiR9B zZdR_)E48mW^+D}!-~ARbPMh82mQzvsRib{eq+$N=L-+6Pi(Yq?dDrqp5AL*CYZ6+$ zc&(;<V2NJH(WSNH{9cyaW3CwuG14mnj-TG3<^DJ^OI<0(Q+DRt>pUksF3!+X^FO}u zWWZ*xjb1{wlLaa?oF+Wt`umO9bh~G7<+OEbQ|iMdPBd1h99A{jE>N)AEBDp^AMaki zwMhQ|;lt&uoy`>nEWdX29Goj8(8sv1t?b%Lr&$5){*|te1a>VD^vKNgSbEX3$t`{E z7fDX%sKhyy{3`Jb+oj!{4Jx;ooLsEB&ds@e*)zE(@x2_2%j#cm2;Z15KW(B|gzkp2 zvYG8U>|a{yxAmGd1<eg(I?}l8(~*eA2p?_^v2&kwm!H<<IVtVTy1#Y#dzX@AgW_PF zgC2Y5i17*(Jv`|x{Q5$moRPz`oqSVuRK<6lwW&6@dm4B^=*-@@XQ}gMy|SoHyx&~$ z*2nkK0Ri^@0-qK09>g>%rLSAu_hm}&n>9|4kJnuLu`Vy>o>qPD&A-!gZ`b|UlEkjK zYvF}r&7);T`Z0nXnt#jZm0Gw?n64<{+$<gZ;GV{DmDZn2ZXf3}e^wy8b=k9`s8hB@ zF}`awa*uUg^7HnI+&$T4bNGX_*Mc7to#GPrIi~ro5xgx`|7TmtleCnu<3*_+xt6D; zSdZQRBYG&>IzsQs*R)!v`UAIg7<mFa=AY{B-`lXb)yd?VpzNaapYBgAda)?N(6O4O zqG{5Vo$>c-FaJI++W2;dv$c1Tbx>~Y_m%n_Dfb^-*|9@#V%WDH*@_RhpND3zP-Bi( zo*P&7qIFxr%{}+#EI5Dj+RZ!Chd2Jp>Z!=)iMhA$#p~<s^RK0F7kgY=U?J;YpSmYj zXyW_Ma~r?!sjT?_<7wsA=qqN*n`gIKALeHI^7Xmc)As!L_wDWM_x)b}YM)xb!E4Ml zZu3qY=RUf`VM=SnXKsPH546@^KecyqKxy1>)!=!H=2(g@<6-3bb^hb~U(r`@NaS>O z9$i?zAkfVBYr)FNUj;8d@N{Y6++@FT9jo)9`rDCHH=0eFBb<|akE>$Q)L%Mf{;Qb} zb+N7b{D38HCEJO`al)=DwKML!Pq_U0_q)@F*T4QK;BRI*<K}`zC$21bc=QyryGflq z=b6Bz>(zx>Z?3%V@>A)eh5BZeFDgGmCf8hiT(DlK>R<8i7nj?wK5$uY8QysN+$L$& zmqH(M{-sY(ub)5r>3nIUmW^|b{Aw;pe>=?mK5q7jj~^yIH-Go>Puhlrs*uZBoW0qL zydLVaR7EZhj!=3WQS|fHPN6&AxgUR?UcNoKNcE1V&7MGG(R1l%BzIn1QGe*r{eO4X ze|h@x^Y5eoSaUZ|Ke&t~dR|7jsbkFJ)%mw4eBW(%)AC%|Wfu$I-1^$Kh5s8=V@iAM zmlR0*Hr8+3{wy<V@{a8Fu5+&cn0jcBNz1>R^JG5qykwoUqOfw3ed4EO{cPXX6`h>x z)3c;nzwGUPyS>$aw#-a9zsPCv{`Rju;a(H3?*5bh_4)JT{@lU(UygcQO5y7KBK~EI ztCQ9z`-|E^GC%v(%NH4Fnyfu{sXjfeTJgHT(Y8MquC9AjIL$4x_QmRHN$rUqlODt@ z+~oB7mQwCKJO9df3Ejw-wNEByEVvNnAAGM{F0M0AP~)CNLi6Jl$tTLiGLK9V;Me$8 zw`g}(%8IXZo2$G&ozS`W{!|%1kE5uI>Rn;I#W!9gPPDskwC_$p`klm2As+L1y(jh5 zJ4_P2cw%c{bIJoPkv18oP(EqzIr%p)UG^!Lw`^Tn9ri=EYS!~wPR?u13%`51+%;{S zv!kFRNBWXY?Y^gVnrUs*-J{vuH}!x2;#hdw=8Ula@xyw}sp^N^*w0U!zT}E-?YvL- zzPwz%J>IVN-_Of@oMHX^iw!xImVVa$k+XUK#wqnNmp`%TZ*nMhQoUHQT`ow@W#`@V zlb3Yq#}-~(v_W|BhPym3^?$!oV)NvVsot41d+v)6EiDsE&lzpM7X%w~YQC7fWO~Mg zf2_4}h8a9BR!46Vjy#mlYOM05?V9e!+|$MNPlR}vJ?L2$Rc5fhK;R*p?97WIx14;I zn!HOeNHi9!ug^Zlv}@a=v-K0LIPI?QuKw|aXU^+hb1(IXroS#{&j&hO4_JKH-zvS+ zF7)JP(^s~6`|Sgs3#?GT=XAB|?dmskRIe^_Z+5zHYR>eddqnSKDV;nR+}}{p9{D!) z@YZXb*R0gImr2jEJz`gw=#VfakNe@YDS=E$@8>l<Wms3&q}05je(k-ypjD+3>vk`H zdDZueT@BlWki*e|w;i}jA1*L(xtrlRY1dh)h_dTHIc_UA&gBo}o$|x$cYSS5ot$~M zbeX?P=w0^TYzym~Q|>GH-dFgVFYx93f_#Cz`wHLlC;a5qd6D&vx9C4e0i!c#z-=dS z2Hr{Yb|?H<nZ~&~&9UZM{ia*pX^myqUVUfSH??BX;^dl(*=x55U%Wa^a07?C=Vor6 zp5_Xn4}1RQh_oLzI@dR&GxSZlw7Jpe9zkbsdmrV~7Zxmj@<(y5*6lxv6~^iH;c3zS z3U`;Uomb>8DRzS)s>{KJ<v?U(T#-__ZG-HV-s+cnEP85T%5u_aXO>PaI9hL+oD~r? zcU^ti{=0Yn8_b@%<O)mXxjWNUl1*L}%($O3#fvk2i>uRI_6e^88<fi1me1wyuf1pK zz2KCzw<ym+R_@Xp-&j|s%v-7aY46*={9hM1b>*dJ{K)zH{?pyLnK{N)>CKvZ-HH`v zzH6&`n)-Zpa@Yd-UWL32c8Qr{wuW=J)q6!PiS#>?6{UP4ce{U0?e9#<Wp2+VocS6l z^yRn~uc*JB=)^f1rpu3n<Y*-`OsdGg@mVw0+i2A)i$u3m0)HG|FZ~gsk^fX}>ZByC z=Sd+)mzaeK3v<qEvlrgT9Vlm;lh7o%%w*}Kjm4@9mj|9YCci9eq6<&PzJ(kmN)KZV zi;U}idMeI&N!>Vc_sRj2Sow+N35q)>*RcIk`f6CU?DyI~FON?>7i%zid3#M~a?ZTU zx;^dt6+d)vnhL-7Sb22+oF}u(?VcV#zCB)Un*K$@!rD_YagzJgCCY7_)4ESgs||2g zEx*5Bw!PB(s^-N<+x;t-FNxmvn!&wev9$6VyA2Dk&8lzxF>Si@#`^j@U+Xl>1m2u( z`jZ&(<@&w<LQCK6x7_iiTHxE$ye<XZ-KKwj{P^>FxqkMe=%~vn8&8W*3f6hFMlf}M z&)@ACSIyKJp6_f}m455{nvD9xZQrKP=uC7p>ESZvZZ~D0uYA#<?6gH-{N<)lzNvTX zPVL`Y`~T(b-BZ=4ch`65aL;0>?AZE1abCTr6x$-VInI^ck7wR3e_1lOTd~G<b+zd> z-N`&YD$7Hqe(iC$H+0an>dJQIns#=<CXceqDaEIc7{{<APvHv@zAEQ?#mG|RQI9~A zN}AD)f6WU^YhSz<=Qq7rW@Tlb&M%yFlBuhD(oD9=>U&JDxw`C}_rs_D;8`30*{ZX= zdcLgBP<=fk|J2uxv)v6gTh_lf^qcx^w#rVwbdyxCO=oOh&Tu_@EI6~$B5MAsxn3o) zyf<p}PdO;KiHj+%-n(SQWEH2ShQ2Y4{oAU3FVz3MarxCIujP7^=Sb!+_gU~Ov%~ep zxnNnVuVS0hc4xew$dTvMCNRw<aAN(mRjQ%o-d?TyPS;8Lxz0)ATALC&$zgBEj`TH3 z(Y)JNFuTmNjeZq$VPeMthvmL1T-)NW>+;;_d1QK2R_Je!jdIxf8L!W+c&>RzvU)-C z8%D-+D~zY|r3kWaX%ER?@?87UeC-9!4C}<+MjzA-XIVS7BWB_yjXm)PR6L*C2riz< zQeSSX(YeBQH)E~jt-Ug-Dw(-?Ue6NDpPaMpn%sQM@9dIqldKAN#C~zvJ!#XG*-Gzj zD9`8$dL#U6%9BmsQXN0?1fQyXw<hoCwl3$FN0#q(-u-g7w(V=lrs?jBx96(QdA|3h z;X`rh>wc+8riT0nA6yTSdv{P$<Io1xMN^m^C;VdYtWVgx%KMhL7+Zu->isjT=iAxY zuFpAcAu-><BWd=EV1^Uz4;hVIcW<4nc*F64vfp*#{vO^HM;xBFGk!^u+S)9+b#KqD zy!4M@C(9mBej&71?8Y-i>CXMny*rj4IcqUlNaIaMpjt?uf$X%tjxfD=pUHlQE!G|T z{j0diLgz<;(0%uMp7)tM^ep_}HB=wER~$W6zkl}K+h%-z6Fz?pEqnBJZ`zr=JIyr? zW$D-N|Lt?<^!;Z`=2kN&CzoxyulqOe;oT31)}D~&N>`u3%v?5A&A?o4mSi?x#TUuj z>xwU>abG-e@`Zv?PF~})qCWov7p_IEy|csZ_71kpgYOD@YJZq~+aq5;udXu2y)5v< zZUJ>$xmE8t-4+}DwGe%<>bsbt%?#f%n;zqWyqZZbjubMf^uOJaFR?4Y^3ge&T4ufz zn+`lHue$p1Ti7P4Kx58tHa~7M_r=bU6L4}UQw+?!(Dc4i$Thh*_(D^~!>KJk*B#3r zuy8(J_dZfP>hxq6%ge_k5<({E)}K*G4diRc3g3CYVcW~b^xf0W3H`PXvRKd5HpBJs zne`%^_jDS(cMIp(9AB|Yl!aT`He;j8*L@o=h{y)oZcAzWv%$yfDF4aijYn4pyE(L< z5i9n$SS?WOJL@cS4wGZGYS-DzYXsh^t9Bb4y|^hLXiD5oi5cv9j#ZoEMOHOPN}JU0 z3q0ApIiRp$kyMww({r&*f5G^bl5X9l62aR-kC}${m}{LpJ~d_8$wQa6`b99V(UIfG zyxg~jebMhOd!A{X5rKCb%M%V~SQ>C{uG#N3d)m9uN&VrA-)V4s*8bM_a<90ua6+-g z#;qpNLbG4<PCA=!Fk$-co#$%JH}00vkv8EntKXC*zeeuTOSj*Z+=7xjn)z-TZNEJ` z*RwjY>fjBt*53~Lc^QSr#qVD}D)Mq-nDfW7t(`@I!IfG@uXpvAZGJ!hmiy_j?JskK zCASG**uK7B+tMX{{+!8bO>=f!?MW%$IpOU__e%b>$UT40?qHW;T^y0fwm_TVlI*)* zZK8J$Khk|(|9-dXulBR^T@@lW7+sk4)Y44W)lQB1h0>I{OLab&tA08^UrAF<`Ix2p z>b8F;6@pswB#!QVU8)ppD%W~1`E-`PzonClJnPNB$E%l4Em<1By|~mwxN61D{ufSm z?d#q)Chv`UZjrs=URwv3;P!LgYqy_1ROa5YdHV9x$+{jcyWHz{T|74bcs}<u{eQfs z&UX*GCf{LlUH6S=^0EmZ9Csd&66`e*F?+gmF{9s}pZ6uSuB$#*Ud5#9DzjHaelv@@ z1?PnWt4x=xGlk@RD^ESfutWXxZWp$f8|P?z4V@_P@9MK(vUAUIyUgtut9-S4yX~KK zMrw!tuUTDtoc;24#!J6>mhsdtI@%v=Ccfp?lDE%ee^rJ5dUSqK<aV>2d;WavyQKEv z+@pQArR*mPFPvF-DwXxQWxA8i0-Nm}8d?S##kV^Debo1FRdS0iyu2yB;m?<Fg?anz z{=R>#74!Sm(Yu!uK7V1VKkZZP*dtu-|1=@$;A6(3JM-na)%o7MF5qeWedzGA>L>M~ zF$$bLWxoVgI@K)d<o(>|WOl84cd)?HgC}hp!&1bh_J3lviQFK(J9zgDlT`)|J5T5G z**;oOQc-CV=QCMHL*24qPfBQXc+%8Ohd&fazxCraIM?vwnT>|a=0(=3E?x_Q`*@4B z!YArm9eQHx{qk^W>N?#G3X769pU!bi_Y(Y2AFno9t&?ZQ<QJZ6TLfkrvCgvjaNy{K z)+^htRz@jru(T8W!V<xFXXy{|f2s*dk5_7OY@74(v5;tM!pfyj4sJN=&d9!VYT#z! z$Cq!nKVROv!a$kN=h|*h9*f0OT-d%Ia8b(2$Y8#)wX;Wle`j-^lc|8XPbkM9zO?o; zxl$~jDtziWkLj{*eZ`c={Ku(!+WG4rst%S<F*FmI{a>Y0P2BIXhRP9TN&n!4C0?ne zfhpTMV<)cjo|F(iO+x?HXRU9}X1P;aHH;;;e@VZgax_O}r}h0WX099C_a0zaF*i?2 z`F4`@_9J3OFV?N|dXV@%Olc~c>)z89T7P<TN>_xL<)1wCr2gaHd6QCEyec+U?Uw7R z&oy2Dc6aqnr`M^0zSphA8C`q+ds?fMtohcLpRva9)FIQrChlO*<&S1FCVJl482mMH z`&2gJQ;Od#*4vuqJ#H(M4)3*ob8l1p@&5Vq%x|5uIsa_&pZx;wA8adGCAr8@GnKQ9 zNl5JhNAZP8_7XFjSIC~J&poqy!y>aIA$x-+ncMIA|Lw=0mzO`Ef9+te9Xz|M<?`Ak z(Kh$azYVaFNOlpK-ci2iaPXmX-MleQE@AVEQZ44EU*Pv+N>?<O%=F{mdE|C<x@X_^ z>K>~}Pncs$MOnmoTpnaRRtVSE7cxwYnY=^%*y&Ra*6n9^)jfF<eM{6n=1BeAhreZQ z{TEq24BLC(>)yMqPuNbhUu&^ad4BBUg!pvbg|*tR8dqfdOtq8N3vRFAXIaPfxhUD$ zvQ<QVk*~7w^5y(KXH*MvAL>Y*WWU03xI~M8$tDYNXYRLmx<A){;<i=dd;7e;;={?q z?CH$$eDTbEAu6it8G;TxRVe1>o7PobKlj+u?K{F*mwuL;_a{^N{leD!#zFOU75^XC zC*AbCKRxnS_r24V<!Yvhe^j_v^4z@h?D{M3?MHuq@!GtGefE5|=v};Krteh09uzaZ zvE$>Wi(z?-eV@+=e-@R0Sod68^c>#pWzu;CuKtI0zdn4HyW=a<-k|;ezu!JQ{W))E z;)`3)>TMD}ES7m5pZTjO?8(2(eEDeEg<5Ujt_j}otlGZwt;jF4h2M?z^X6t(EPWC` z|KGPiKYo0)FFwK;b9nC2@4Wls>;G-JHNz+M?B_*tOI{ReXTDQa6}-A@&gY~{tD_#R znIe?m|7lwF$J{%!UdEf<u(PwNkFH#^V}UhOis)MfQTLs8_1@dIED@dQGNa`Mr$m|q zGyCM?LuX#jOtDO@YMb52*>OSkg}2J2+?=JHYj*#w(E2+2eE<Bgdxv&Boi20a*Opz! zJ{-8Z^~0gs2SHzhe@^ug>Y4p&PT8xN<>{~1o;zY5vGnoUOItK1F#Tc6ba`%lR)2y5 zdl%bgu~Xr{quzeo8sbvBwm$mg_TC@Ym(Sn!{Mp9Ka~9|9+?Oa+%)@ekWAVeacQYqn zcz@$IZ+%V8k5A7IKR$KUXW9IX%51I+&5D~Xg#A<<<lH##>^l4L<K3(Ylh#Y{#_z5% zU0xfjHg(TuHdeu@HQJ|NKRW)r^y0JSeQ6@{ca9vt&&ByAS56~VuiEC({Pd+eSn3Uf zCe3yK^Ec@1jJ@$TzaO}t+%&`8&GbRjk3TP?M41IYF#Xiob+1T%=g!Z6E#nj>w6^Bl zO>B1F&S1OXtL%=TgUhdN<Nftj^5d-Y{rU5+tL!SiTXc!LX_|}Bi<2rBY)cD|O*L@l z;Ie<Z^nm5(pTRtmEdTT#JS+W|e(%qlPeK)M%j<7H`uY60zPw#+ZCyoNWs`LJ<zq7* zN$rYTA7C4J#JJ(zi?he3y<eFfeXBP}HetSF)zc+SYQ|B<^Xo%6n#@;DP@7uxZIRF4 zQ*mrHa+~@lzv#>HTe70iAkR>0<0Ub<4|czjSof?wohFp@FCw(yF~_cQ<Gl|z@A0pA zKG8%&%WKo4`j0+#%IROrUw%KVAozWT?hbuP-D}^3|L)qxeNeJk<eIL~E^TFlvz_i6 zw^*bnSmaCjPkx}~y<9pW`pofvHjZaL?09(Q&{UCa%%1-$E?pP>&?c~auHO&u&63Wc zmpT_%H-}f>m@_+1WP^0j?n9>i-i@)v-xro;&tiCx^v+FV<%j$AOS-KD&z)Gy`$+C> z)S=(EJyXOB<vu%vxGNde>}%3^KKI(+Uq2syE>ibef0J{P>%8_V<wu-<{UcX*9qnO$ zs?zYS)v-T;Ut`8*Bc;<Z8~00|Kj3Nl-TPnPgOC3@Y!mn2`n&!1&Z9Zr#T#$W>OSs! z|7TdAZ*6_e?tAY8cWcP!dluEtnmDKD*$NkPR^IGh1NOEMQw7baEh>E~OD5&sYx?OU zFlTobpGMCj<@c}WNu@h@SLSBzGyeAPpu<Yh1_>@BmEdJ+ANO4-X65@ai)Z!(A7vS5 zF>T4xw8@$|9L5%ED|wg8a)ib__+Te-=+O<!kAfxvn;c|H9x9bS*}W<^*{7nf-dbu= ztCII!ul}V$CTkxhum$orzglN-%|!m0udS-S$-!pksm{`3Up?1brLQ!VU3ydH$vUP( zTXdfaN$k+ws^Yl9hdaS5F2<`uoGIvNj}}AH-u}%`3hTDso!#ZxzIV~i^|wkh&uvw| zT)S^+Uw5{ku}^1Mmq!FIcf0SQ#8uyPS?k?>51wmQdT3Fl@nUheVfxaiLf2gL@659+ zFUi_8<E+<*O#fop?Ylg;F1U1A_t&YU<yv!DvgR)D?|!{9IkaOz$L2E6YkCLe!d5(< zVsmc&r?o$q-I=@cV29AFH-@H%b#@vrx^J_-L{RL_(WWgwr~0JDc-E||SMNMvv0V4- zO^;g)RrT{KL|dCPCViTl!7}Zk(vCtwJtaFKnY?E^t*n+?Uzgm|RkUll-%^)->f1RZ z9{ye3F*R|0>9;$5kH5X$a;3a9WU}JFOoM~f3f=AdRz_}_$Xa1^?n-H=Y+kF{9H;)= z^S0`h6HfF_RyEIPvHN;PLyD{IR+R6n$>J3vWiFR;jTxHi^YouyvR(US`V3LKx~lI# z?6Ys>9&dcSWB0Qig?F?IGb}HiVX6~1Sl%luaXVtu5ycbBJnWgb1<PEl5$4P}x+dH2 z7_+>{RBJ^8i};C~XS}PG_o!&&3<!GTA-7ubtj&kK$gb;WCpm<~3i1`^Fg<3~f9Li_ z&2?#yNSUUP%i2rMU+Z1JM`^hoQdzMxK<C|>8zv9;Cf#1}rCdx|`Rp~9>#3Qu+cSRM zv3+@4^ld?p)#;wU3SC7CiKU$^YDPwa0diIn8+ceZtMP1CQEV^!=aZz9D|E@zsV`Od z+{PzYzU@j__3-Sp`x+MU=@DXw90b(%P5r3KE}G^wnQ3BL;h~pC5^JREr%&opyLSBK z4R7&VZ5qZ;Hf#LfaJcR0hX8e_`iLVlY;`8OJmxjJJXPad_vWuA?sXo4x>f5Wd00Q1 zWLtTcEa-||^3%t>`ip6rllTtvi<MW7RxR#m^X-57?IMHrj&L5=z~|RK-|V||Vwwo+ zBAq8U1PnTr-I`x0srjqxd2lj?1lOB}U2)G?CajR1@-)%bFNB#Z@`TvNdlD_GnwE;` zQ}t5Rd_VoXs<%U;a#7bMGlqov81>ryKIdYzF3j#|HZwZs!__G5m|L(VcJua0ceDdj zG?x8)?O>v`v~{_OYhCMSmHj(44QC2Wn)D>b|F4mMwBy6;jt>oDqDn=+)PC$26BDct zT0c?Q>FVrhp}E_)ypueTd2aQT<@`a;movla)9+3`I>j;U?wsn~lNSj+R*Mj5-)eeE zedR`xiJLwhPl^xQ^4n6A`CV7UGN)HRlk^j3c|L2p>!%uJxZ!xu-E`|@`}`$7$8O3w z&zyJmA=BT*_a(o2oOi!rwK>!9o@mfX7SV~J(gyV#vYlJ(KNw7KjM2R`BfY9&&hmz| z;D(skBh&gM8!9G!Ir8q+<IIhz44(t-TEo3}w43}mEAxNLt|`{t!is)eud8qB{*|*) znk2T!GjPK5*t+|Z=d`??Z=`+p19z8}pMK4cUZt<|qgIufU%a==;^RH0qps_;7+%NJ zZk)4w?F^A-{rX>-+WMIlD_?Kd(hs#&o7|Z+|NYM8sRgY^!&dA`R!ep}dBpETsO2`L zmvWv*W(8)nuE@%NZGCRtoNuo;EcE|9xthUCWG%PKpS5>2zB%pQ`|#!QzI#=_<-WaZ z|NcIFON*P0^)s=Ky-CguKMpI@ycW3MKi^*G@#Tv)DZz`+<%qnrsNZp7Za}-R?R^G? z#XH`rw?*Gy*jvcv(=)eaQ)#CZOMdL3*yAEzOBZ=fug*68w~cE`r_+x4EDL3(Pu$;O zl+YD-=vq!GZ#VCe*kenZt)okhNG#nwBgcJ-heD@KWv~>}>+^Hpvz%=_e(>2BjxeRu z?CEcd#FyF%UVnO1dqRkofpTyC*2o8iiIEm33#LEane6mE^<$x6XS8JYs@&aE-bytG z?p%1s#nm)Z|M*$`H%nj4tFkFkW_^5RmSE4Lqqq4#Km2(5^6k*?iT1A#7N>}?aKs(l zW7K<ZqIl2V$;PMNJ~+u?o)mlf*#*sK58rczeBR^{J2&a7(DC0t`W8R3nSJ4xRjqNo z6@TL!hE`qwcM|UIh6xkB@BR4ncdln^Qd`YJ-+Mg!#p8a;9x#7UC?0X!tbeOKpKPh+ zewEpu{&YQAGI3_lDw$hvum0Mz>rn9NKVJ7*lNQb`7H(T^;2CLl(4ug<>)#27lm4<j zH8pAH?9650TyMtzZq^c4p3`3@6*R0nds9?$`Sp6S2^%^NxVTNZl{Q@^$8gU*wQB9S z-NIUduYb$`ee3@^Ypdw>rnG;RueU#ao_<#H`lU1fE|*D!RomWOrtiM5;iD+?ERBDi z4A)#W>vprxJLPizkzeY^e;b_N?BkT5SMDGhSj_R1IpF!Ct=T^MitigIlnWj0-#y`a z_Q#<4lGQ%1Wb2>xXZo(YkQ!vw;B<sr_4DlYI-0##p6}22eE&#>{vGd!_deXn$;vg` zy31PglJca4<;VYVTlM@u%cs0ZVzE?QO80>YMJmr0ZF3fvTi7;H_{8$uo*CCvp8CIT z-@p6vPjTzH%Us?*xb~X$QH%sf`0fQO#d_8J(uB11rz!4y7V~TKuli5kSGlWg%PSl? zrft}!aA)$yAcKW}4+RFKzkYXTWro??&rf{LB)+=keph>^^0sSho8>b-Cuu%N^*#`2 z6?4yT+xK_hw;aeXFRkhgPf)hZZT}iNBjs{APvdKslsoAyPYsG5Zr}BGzG+Nc{_5#$ zhfAGp4Ziek&a}9^@5fokqOG27_36*|_TJoIb>PTe#^ge)SC{v8e}DLAy~c(8>ABZ= zBGzTTy0|jj{_j6Y^M9wOSHAtZC2?!s@~M@7ez!U;o11rGS^oZ8mhETX?69`nRv$Xu z^S<p<Pvte|6KBm`n?L>L@qhWV4qwVYo9Nzn_4g7L%`Kixig$M%tG}>j%KsJbb`*b_ zxUGI++483goI`#&AD_QFI!EBr>a8_<@3+miYRLTf=IhD#FK({p%}PA3@RYUuh021Y z*-QWLvCXdA*u8uA%IBx*Hs-(iG0$<stpiDN)@HARZBB?t2LHS2yztM?YsyExw`bp9 z#^4ncXUH(+{j1G9&o@bm9`1JB{=d<7^`2{+zePQZ|NFK6_58nIzqg;3-}L@&--^W9 z?>9`(pM5Ujw{n5uoAr8kbf&)xJ)QbjR`^}Xp32;Bf1Ue+W^3-s+x&I+O`&-+{>@(Y z<=5ZfUvCfp6aRjr{_UEJ|IS1vubZE`X<D`J^S-ldT74HC_^ki?kXiBn&3mFwUw8kU zE9_Exf3M@UzNC{gj-A<JT3_*1VuO9h|Ichu)rAXmOD_ET(*I+<Jkt?{HOXdm^~d9R z<vm}_dGSbO@{HUcqIrR7o7OYC2&El8mvu8oclCyK&U<$XxxP1EQ?M>4BA@s5l?}|A z3uf)y|N6A{{k4{Lr?*_vDJu=z7@g|JwfDbpj(&lC=&y-A%e!{no;kI3d#GW2{cF9b z$~l)`#8yc=yed>Wk-#b8cJKe0j9IfjvNoS9FX^;D{4DvA^DB;^b32`u+>t&d__y`d ztFKq4-Dl^Q>Hd0jX5DYk3%yQBD@)_=d@QxEuZ%igG|4<u^Lf*Oi>-%FD+HNr*tc6t z;{ub&{P&X-{clO#h!a~J!myxb>I3<muU=iP|8V!>2Au^Dm712`njhqJpt^N)W7qr4 z;GO>bs}C%x4qRN_7BEHWNjm>!c@e+Z6T-ftD~?>atkJVkecC30T&XS2%JN~Vc{7rh z1(+*`tNdkPNU{hjulP8{{E?LOf%#1VAzk+^<CfXHTGKLn*PhzCADN;>-fzk+LW}M) zPLAa;VXV)dr2nRI(b8h2nfo4ns@qn*c#+qg*H3%;yR33;FSWT`>z+P$ZHG9^euIj= zjz?4fyk2Fpa-HCtXXkiSW&Cr#=fxf=m$(1>>EFZG*ZckV+pJaDuJyRz>kUItzRD}t ziFzU4nt7L+KW^PT|99vki`Yz;X-1JNv-{G!3y<|%rX4E#S-<Gc;iZdPIxo!iSfs!; zRpHR%mJL(9Bx;l<l~2ex&3oy!ht<I+7P?XAADp^$<iXpUXGD3}T_&>cX<hMV;fwVA zjV%$PjeB$%rgXnw#}xl0*VusN?t%k3Y*Sg?l*|w1Dpz{9SKnGVMOgFr+e**N{+S<V zr3p1QCfwva>D^>2G++B{{ij!A*O&rpT5soW5)rnpF=?wjw%@Hj+4ViI$3f}ruogX* z?6;BXI}Gf!4COQ@I4$mYX17t@rOlpSWv72nn8k}@$A0LXukTb1pCof&&)To*x2H(H zza;(Tz3Uh8PrhA!T?S7ZTg+}ws<NNFDDT+bwqWMHMxM%x>XN(oQ<C>F>eg?39~qrw z?EmM-<IA^2bFN?AoZ)dyS;t^P=aZV}3S1oiF-yMBRX2`hPP3`wuTL`wy>+m=uBvK( zoUuXBuA0UZImL-e>y!G!8r?hOWq!T=Tltr}bI#HRj)}qCPbYN!WokKZJyrGmZLX8) z9jXF9d;T)K{{3UWaf_kES`MKTY_lHJA84>R(qPoopd>plS!`mb4)2$3OOG9_IBon@ zRp7+I$iBZ@CbC%+S@}PD=V9X`l(YHP8l?xhoO7g(g;vL~rEm4_-qn|zSP^_?X*yd? zka^dpMLbdtmpV&-P0?%KWxit~!=xn#w0>_=?%eiTv-OC;)hM-^?9>J6Lcb?%UQlvm zWmA1&iq534Q_U?-KTjWUHR(x}o&D5cZ_V=Odn)VxeE9kC^fZ^2v%4*KHc#(mDL?Mk zDyDOzJ#CHXSr6}NUvej%jfywjq~n?@cG9&iFHg~A$LSXw{-IC0z1_}=uB*!qe=uKs zqx$s62U-^_s8nHNx|Os3#fgp0pR}0Y*yf8kd_GZ-S}#yBk@NJ43*DQS7fnB&+kUQj zE?>{SPK&2X|HAl_UfHO$`KYwr{(P1vrOWK;w2!@EE+t+r^AgkRIlgz@Yt-Vpe`fif zRO`6XJ%$UF)rt;n+7-b%W2VW`HHT8e9v7|Nv}o7dl8Lu2TCd*veS21Q{p#)E3ui2U z&#D@0<~j3f)0MTF^=G|a-d%gDZpYP|-`_i3&{D3QIXioMRkHsL?Q@5|%o1O1mCgI= z-oqK9?WG<;L5Fj5a`wgdo=sZ0(RS<7y;9YGlsjZovvO>o=JI#GP&#cE6p(DArueC8 z;eLtZ^L`m@6LFTEng1=AJ$d)a=E?%0A1nBtEw-9bm(G4UxHbHvsET-f(*wIH+oK-3 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�G+uG_^-+RMaUt9C{)0euN>>L*o!>8BF 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 From 9fdefa5a1da28ab074dddfbbf21d6636a7f2dc88 Mon Sep 17 00:00:00 2001 From: "St. John Johnson" <st.john.johnson@gmail.com> Date: Mon, 9 Jan 2017 01:35:38 -0800 Subject: [PATCH 123/189] Fix #5188 by Closing the stream instead of Releasing it (#5235) * Fix #5188 by Closing the stream instead of Releasing it Closing just terminates the connection, release attempts to download all the contents before closing. Since the MJPEG stream is infinite, it loads and loads content until the python script runs out of memory. Source: https://github.com/KeepSafe/aiohttp/blob/50b1d30f4128abd895532022c726e97993987c7c/aiohttp/client_reqrep.py#L668-L672 * Update mjpeg.py --- homeassistant/components/camera/mjpeg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/camera/mjpeg.py b/homeassistant/components/camera/mjpeg.py index 981ed9dbf49..d3af55a91f1 100644 --- a/homeassistant/components/camera/mjpeg.py +++ b/homeassistant/components/camera/mjpeg.py @@ -126,7 +126,7 @@ class MjpegCamera(Camera): finally: if stream is not None: - self.hass.async_add_job(stream.release()) + yield from stream.close() if response is not None: yield from response.write_eof() From ee055651cd1452174cba7b633d1e89ebe63f89e0 Mon Sep 17 00:00:00 2001 From: Terry Carlin <terrycarlin@gmail.com> Date: Mon, 9 Jan 2017 04:11:15 -0700 Subject: [PATCH 124/189] Update insteon_local.py (#5236) Correct typo --- homeassistant/components/switch/insteon_local.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/switch/insteon_local.py b/homeassistant/components/switch/insteon_local.py index cc6a732bb7f..c088e2cf072 100644 --- a/homeassistant/components/switch/insteon_local.py +++ b/homeassistant/components/switch/insteon_local.py @@ -52,7 +52,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): setup_switch(device_id, conf_switches[device_id], insteonhub, hass, add_devices) - linked = insteonhub.get_inked() + linked = insteonhub.get_linked() for device_id in linked: if linked[device_id]['cat_type'] == 'switch'\ From 3ed7c1c6adbbc0a6cf4e99e71652680be3035ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= <michael.arnauts@gmail.com> Date: Mon, 9 Jan 2017 14:10:46 +0100 Subject: [PATCH 125/189] Add Lannouncer tts notify component (#5187) * Add Lannouncer notify component * Send message by opening a raw TCP socket instead of using requests. Cleanup of method validation. * Use 'return' instead of 'return None' --- .coveragerc | 1 + homeassistant/components/notify/lannouncer.py | 85 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 homeassistant/components/notify/lannouncer.py diff --git a/.coveragerc b/.coveragerc index f3c7d950965..62ada802c05 100644 --- a/.coveragerc +++ b/.coveragerc @@ -233,6 +233,7 @@ omit = homeassistant/components/notify/instapush.py homeassistant/components/notify/joaoapps_join.py homeassistant/components/notify/kodi.py + homeassistant/components/notify/lannouncer.py homeassistant/components/notify/llamalab_automate.py homeassistant/components/notify/matrix.py homeassistant/components/notify/message_bird.py diff --git a/homeassistant/components/notify/lannouncer.py b/homeassistant/components/notify/lannouncer.py new file mode 100644 index 00000000000..be1bc636fd6 --- /dev/null +++ b/homeassistant/components/notify/lannouncer.py @@ -0,0 +1,85 @@ +""" +Lannouncer platform for notify component. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/notify.lannouncer/ +""" +import logging + +from urllib.parse import urlencode +import socket +import voluptuous as vol + +from homeassistant.components.notify import ( + PLATFORM_SCHEMA, ATTR_DATA, BaseNotificationService) +from homeassistant.const import (CONF_HOST, CONF_PORT) +import homeassistant.helpers.config_validation as cv + +ATTR_METHOD = 'method' +ATTR_METHOD_DEFAULT = 'speak' +ATTR_METHOD_ALLOWED = ['speak', 'alarm'] + +DEFAULT_PORT = 1035 + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, +}) + +_LOGGER = logging.getLogger(__name__) + + +def get_service(hass, config): + """Get the Lannouncer notification service.""" + host = config.get(CONF_HOST) + port = config.get(CONF_PORT) + + return LannouncerNotificationService(hass, host, port) + + +class LannouncerNotificationService(BaseNotificationService): + """Implementation of a notification service for Lannouncer.""" + + def __init__(self, hass, host, port): + """Initialize the service.""" + self._hass = hass + self._host = host + self._port = port + + def send_message(self, message="", **kwargs): + """Send a message to Lannouncer.""" + data = kwargs.get(ATTR_DATA) + if data is not None and ATTR_METHOD in data: + method = data.get(ATTR_METHOD) + else: + method = ATTR_METHOD_DEFAULT + + if method not in ATTR_METHOD_ALLOWED: + _LOGGER.error("Unknown method %s", method) + return + + cmd = urlencode({method: message}) + + try: + # Open socket + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(10) + sock.connect((self._host, self._port)) + + # Send message + _LOGGER.debug("Sending message: %s", cmd) + sock.sendall(cmd.encode()) + sock.sendall("&@DONE@\n".encode()) + + # Check response + buffer = sock.recv(1024) + if buffer != b'LANnouncer: OK': + _LOGGER.error('Error sending data to Lannnouncer: %s', + buffer.decode()) + + # Close socket + sock.close() + except socket.gaierror: + _LOGGER.error('Unable to connect to host %s', self._host) + except socket.error: + _LOGGER.exception('Failed to send data to Lannnouncer') From bb02fc707c177e2c1af9fc4d2ad6f568a8c7c9e9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Mon, 9 Jan 2017 17:08:37 +0100 Subject: [PATCH 126/189] [device_traker/upc] New UPC connect box platform (#5100) --- .../components/device_tracker/upc_connect.py | 164 ++++++++++++ .../device_tracker/test_upc_connect.py | 239 ++++++++++++++++++ tests/fixtures/upc_connect.xml | 42 +++ tests/test_util/aiohttp.py | 29 ++- 4 files changed, 467 insertions(+), 7 deletions(-) create mode 100644 homeassistant/components/device_tracker/upc_connect.py create mode 100644 tests/components/device_tracker/test_upc_connect.py create mode 100644 tests/fixtures/upc_connect.xml diff --git a/homeassistant/components/device_tracker/upc_connect.py b/homeassistant/components/device_tracker/upc_connect.py new file mode 100644 index 00000000000..aafa9824a4e --- /dev/null +++ b/homeassistant/components/device_tracker/upc_connect.py @@ -0,0 +1,164 @@ +""" +Support for UPC ConnectBox router. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.upc_connect/ +""" +import asyncio +import logging +import xml.etree.ElementTree as ET + +import aiohttp +import async_timeout +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) +from homeassistant.const import CONF_HOST, CONF_PASSWORD +from homeassistant.helpers.aiohttp_client import async_create_clientsession + + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_IP = '192.168.0.1' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_HOST, default=DEFAULT_IP): cv.string, +}) + +CMD_LOGIN = 15 +CMD_DEVICES = 123 + + +@asyncio.coroutine +def async_get_scanner(hass, config): + """Return the UPC device scanner.""" + scanner = UPCDeviceScanner(hass, config[DOMAIN]) + success_init = yield from scanner.async_login() + + return scanner if success_init else None + + +class UPCDeviceScanner(DeviceScanner): + """This class queries a router running UPC ConnectBox firmware.""" + + def __init__(self, hass, config): + """Initialize the scanner.""" + self.hass = hass + self.host = config[CONF_HOST] + self.password = config[CONF_PASSWORD] + + self.data = {} + self.token = None + + self.headers = { + 'X-Requested-With': 'XMLHttpRequest', + 'Referer': "http://{}/index.html".format(self.host), + 'User-Agent': ("Mozilla/5.0 (Windows NT 10.0; WOW64) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/47.0.2526.106 Safari/537.36") + } + + self.websession = async_create_clientsession( + hass, cookie_jar=aiohttp.CookieJar(unsafe=True, loop=hass.loop)) + + @asyncio.coroutine + def async_scan_devices(self): + """Scan for new devices and return a list with found device IDs.""" + if self.token is None: + reconnect = yield from self.async_login() + if not reconnect: + _LOGGER.error("Not connected to %s", self.host) + return [] + + raw = yield from self._async_ws_function(CMD_DEVICES) + xml_root = ET.fromstring(raw) + + return [mac.text for mac in xml_root.iter('MACAddr')] + + @asyncio.coroutine + def async_get_device_name(self, device): + """The firmware doesn't save the name of the wireless device.""" + return None + + @asyncio.coroutine + def async_login(self): + """Login into firmware and get first token.""" + response = None + try: + # get first token + with async_timeout.timeout(10, loop=self.hass.loop): + response = yield from self.websession.get( + "http://{}/common_page/login.html".format(self.host) + ) + + self.token = self._async_get_token() + + # login + data = yield from self._async_ws_function(CMD_LOGIN, { + 'Username': 'NULL', + 'Password': self.password, + }) + + # successfull? + if data.find("successful") != -1: + return True + return False + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + _LOGGER.error("Can not load login page from %s", self.host) + return False + + finally: + if response is not None: + yield from response.release() + + @asyncio.coroutine + def _async_ws_function(self, function, additional_form=None): + """Execute a command on UPC firmware webservice.""" + form_data = { + 'token': self.token, + 'fun': function + } + + if additional_form: + form_data.update(additional_form) + + response = None + try: + with async_timeout.timeout(10, loop=self.hass.loop): + response = yield from self.websession.post( + "http://{}/xml/getter.xml".format(self.host), + data=form_data, + headers=self.headers + ) + + # error on UPC webservice + if response.status != 200: + _LOGGER.warning( + "Error %d on %s.", response.status, function) + self.token = None + return + + # load data, store token for next request + raw = yield from response.text() + self.token = self._async_get_token() + + return raw + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + _LOGGER.error("Error on %s", function) + self.token = None + + finally: + if response is not None: + yield from response.release() + + def _async_get_token(self): + """Extract token from cookies.""" + cookie_manager = self.websession.cookie_jar.filter_cookies( + "http://{}".format(self.host)) + + return cookie_manager.get('sessionToken') diff --git a/tests/components/device_tracker/test_upc_connect.py b/tests/components/device_tracker/test_upc_connect.py new file mode 100644 index 00000000000..728eb104b8b --- /dev/null +++ b/tests/components/device_tracker/test_upc_connect.py @@ -0,0 +1,239 @@ +"""The tests for the UPC ConnextBox device tracker platform.""" +import asyncio +import os +from unittest.mock import patch +import logging + +from homeassistant.bootstrap import setup_component +from homeassistant.components import device_tracker +from homeassistant.const import ( + CONF_PLATFORM, CONF_HOST, CONF_PASSWORD) +from homeassistant.components.device_tracker import DOMAIN +import homeassistant.components.device_tracker.upc_connect as platform +from homeassistant.util.async import run_coroutine_threadsafe + +from tests.common import ( + get_test_home_assistant, assert_setup_component, load_fixture) + +_LOGGER = logging.getLogger(__name__) + + +@asyncio.coroutine +def async_scan_devices_mock(scanner): + """Mock async_scan_devices.""" + return [] + + +class TestUPCConnect(object): + """Tests for the Ddwrt device tracker platform.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + self.hass.config.components = ['zone'] + + self.host = "127.0.0.1" + + def teardown_method(self): + """Stop everything that was started.""" + try: + os.remove(self.hass.config.path(device_tracker.YAML_DEVICES)) + except FileNotFoundError: + pass + + self.hass.stop() + + @patch('homeassistant.components.device_tracker.upc_connect.' + 'UPCDeviceScanner.async_scan_devices', + return_value=async_scan_devices_mock) + def test_setup_platform(self, scan_mock, aioclient_mock): + """Setup a platform.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful' + ) + + with assert_setup_component(1): + assert setup_component( + self.hass, DOMAIN, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }}) + + assert len(aioclient_mock.mock_calls) == 2 + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + @patch('homeassistant.components.device_tracker._LOGGER.error') + def test_setup_platform_error_webservice(self, mock_error, aioclient_mock): + """Setup a platform with api error.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + status=404 + ) + + with assert_setup_component(1): + assert setup_component( + self.hass, DOMAIN, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }}) + + assert len(aioclient_mock.mock_calls) == 2 + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + assert 'Error setting up platform' in \ + str(mock_error.call_args_list[-1]) + + @patch('homeassistant.components.device_tracker._LOGGER.error') + def test_setup_platform_timeout_webservice(self, mock_error, + aioclient_mock): + """Setup a platform with api timeout.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + exc=asyncio.TimeoutError() + ) + + with assert_setup_component(1): + assert setup_component( + self.hass, DOMAIN, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }}) + + assert len(aioclient_mock.mock_calls) == 2 + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + assert 'Error setting up platform' in \ + str(mock_error.call_args_list[-1]) + + @patch('homeassistant.components.device_tracker._LOGGER.error') + def test_setup_platform_timeout_loginpage(self, mock_error, + aioclient_mock): + """Setup a platform with timeout on loginpage.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + exc=asyncio.TimeoutError() + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + ) + + with assert_setup_component(1): + assert setup_component( + self.hass, DOMAIN, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }}) + + assert len(aioclient_mock.mock_calls) == 1 + + assert 'Error setting up platform' in \ + str(mock_error.call_args_list[-1]) + + def test_scan_devices(self, aioclient_mock): + """Setup a upc platform and scan device.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + cookies={'sessionToken': '654321'} + ) + + scanner = run_coroutine_threadsafe(platform.async_get_scanner( + self.hass, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }} + ), self.hass.loop).result() + + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + aioclient_mock.clear_requests() + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + text=load_fixture('upc_connect.xml'), + cookies={'sessionToken': '1235678'} + ) + + mac_list = run_coroutine_threadsafe( + scanner.async_scan_devices(), self.hass.loop).result() + + assert len(aioclient_mock.mock_calls) == 1 + assert aioclient_mock.mock_calls[0][2]['fun'] == 123 + assert scanner.token == '1235678' + assert mac_list == ['30:D3:2D:0:69:21', '5C:AA:FD:25:32:02', + '70:EE:50:27:A1:38'] + + def test_scan_devices_without_session(self, aioclient_mock): + """Setup a upc platform and scan device with no token.""" + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + content=b'successful', + cookies={'sessionToken': '654321'} + ) + + scanner = run_coroutine_threadsafe(platform.async_get_scanner( + self.hass, {DOMAIN: { + CONF_PLATFORM: 'upc_connect', + CONF_HOST: self.host, + CONF_PASSWORD: '123456' + }} + ), self.hass.loop).result() + + assert aioclient_mock.mock_calls[1][2]['Password'] == '123456' + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert aioclient_mock.mock_calls[1][2]['token'] == '654321' + + aioclient_mock.clear_requests() + aioclient_mock.get( + "http://{}/common_page/login.html".format(self.host), + cookies={'sessionToken': '654321'} + ) + aioclient_mock.post( + "http://{}/xml/getter.xml".format(self.host), + text=load_fixture('upc_connect.xml'), + cookies={'sessionToken': '1235678'} + ) + + scanner.token = None + mac_list = run_coroutine_threadsafe( + scanner.async_scan_devices(), self.hass.loop).result() + + assert len(aioclient_mock.mock_calls) == 2 + assert aioclient_mock.mock_calls[1][2]['fun'] == 15 + assert mac_list == [] diff --git a/tests/fixtures/upc_connect.xml b/tests/fixtures/upc_connect.xml new file mode 100644 index 00000000000..b8ffc4dd979 --- /dev/null +++ b/tests/fixtures/upc_connect.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<LanUserTable> + <Ethernet> + <clientinfo> + <interface>Ethernet 1</interface> + <IPv4Addr>192.168.0.139/24</IPv4Addr> + <index>0</index> + <interfaceid>2</interfaceid> + <hostname>Unknown</hostname> + <MACAddr>30:D3:2D:0:69:21</MACAddr> + <method>2</method> + <leaseTime>00:00:00:00</leaseTime> + <speed>1000</speed> + </clientinfo> + <clientinfo> + <interface>Ethernet 2</interface> + <IPv4Addr>192.168.0.134/24</IPv4Addr> + <index>1</index> + <interfaceid>2</interfaceid> + <hostname>Unknown</hostname> + <MACAddr>5C:AA:FD:25:32:02</MACAddr> + <method>2</method> + <leaseTime>00:00:00:00</leaseTime> + <speed>10</speed> + </clientinfo> + </Ethernet> + <WIFI> + <clientinfo> + <interface>HASS</interface> + <IPv4Addr>192.168.0.194/24</IPv4Addr> + <index>3</index> + <interfaceid>3</interfaceid> + <hostname>Unknown</hostname> + <MACAddr>70:EE:50:27:A1:38</MACAddr> + <method>2</method> + <leaseTime>00:00:00:00</leaseTime> + <speed>39</speed> + </clientinfo> + </WIFI> + <totalClient>3</totalClient> + <Customer>upc</Customer> +</LanUserTable> diff --git a/tests/test_util/aiohttp.py b/tests/test_util/aiohttp.py index c0ed579f197..124fcf72329 100644 --- a/tests/test_util/aiohttp.py +++ b/tests/test_util/aiohttp.py @@ -14,6 +14,7 @@ class AiohttpClientMocker: def __init__(self): """Initialize the request mocker.""" self._mocks = [] + self._cookies = {} self.mock_calls = [] def request(self, method, url, *, @@ -25,7 +26,8 @@ class AiohttpClientMocker: json=None, params=None, headers=None, - exc=None): + exc=None, + cookies=None): """Mock a request.""" if json: text = _json.dumps(json) @@ -35,11 +37,11 @@ class AiohttpClientMocker: content = b'' if params: url = str(yarl.URL(url).with_query(params)) - - self.exc = exc + if cookies: + self._cookies.update(cookies) self._mocks.append(AiohttpClientMockResponse( - method, url, status, content)) + method, url, status, content, exc)) def get(self, *args, **kwargs): """Register a mock get request.""" @@ -66,6 +68,16 @@ class AiohttpClientMocker: """Number of requests made.""" return len(self.mock_calls) + def filter_cookies(self, host): + """Return hosts cookies.""" + return self._cookies + + def clear_requests(self): + """Reset mock calls.""" + self._mocks.clear() + self._cookies.clear() + self.mock_calls.clear() + @asyncio.coroutine def match_request(self, method, url, *, data=None, auth=None, params=None, headers=None): # pylint: disable=unused-variable @@ -74,8 +86,8 @@ class AiohttpClientMocker: if response.match_request(method, url, params): self.mock_calls.append((method, url, data)) - if self.exc: - raise self.exc + if response.exc: + raise response.exc return response assert False, "No mock registered for {} {} {}".format(method.upper(), @@ -85,7 +97,7 @@ class AiohttpClientMocker: class AiohttpClientMockResponse: """Mock Aiohttp client response.""" - def __init__(self, method, url, status, response): + def __init__(self, method, url, status, response, exc=None): """Initialize a fake response.""" self.method = method self._url = url @@ -93,6 +105,7 @@ class AiohttpClientMockResponse: else urlparse(url.lower())) self.status = status self.response = response + self.exc = exc def match_request(self, method, url, params=None): """Test if response answers request.""" @@ -155,4 +168,6 @@ def mock_aiohttp_client(): setattr(instance, method, functools.partial(mocker.match_request, method)) + instance.cookie_jar.filter_cookies = mocker.filter_cookies + yield mocker From c7249a3e3acc7cde96249dda57a9d91669cde27a Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Mon, 9 Jan 2017 11:49:11 -0500 Subject: [PATCH 127/189] Build libcec for Docker image (#5230) * Build libcec for Docker image * Update development dockerfile as well * Dynamically load python paths for current version --- Dockerfile | 5 ++- script/build_libcec | 55 ++++++++++++++++++++++++++++ virtualization/Docker/Dockerfile.dev | 5 ++- 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100755 script/build_libcec diff --git a/Dockerfile b/Dockerfile index 1141149d9fd..342b62e6ec1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sourc wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ apt-get update && \ apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ - libtelldus-core2 && \ + libtelldus-core2 cmake libxrandr-dev swig && \ apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* COPY script/build_python_openzwave script/build_python_openzwave @@ -21,6 +21,9 @@ RUN script/build_python_openzwave && \ mkdir -p /usr/local/share/python-openzwave && \ ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config +COPY script/build_libcec script/build_libcec +RUN script/build_libcec + COPY requirements_all.txt requirements_all.txt RUN pip3 install --no-cache-dir -r requirements_all.txt && \ pip3 install --no-cache-dir mysqlclient psycopg2 uvloop diff --git a/script/build_libcec b/script/build_libcec new file mode 100755 index 00000000000..ad7e62c50a6 --- /dev/null +++ b/script/build_libcec @@ -0,0 +1,55 @@ +#!/bin/sh +# Sets up and builds libcec to be used with Home Assistant. +# Dependencies that need to be installed: +# apt-get install cmake libudev-dev libxrandr-dev python-dev swig + +# Stop on errors +set -e + +# Load required information about the current python environment +PYTHON_LIBDIR=$(python -c 'from distutils import sysconfig; print(sysconfig.get_config_var("LIBDIR"))') +PYTHON_LDLIBRARY=$(python -c 'from distutils import sysconfig; print(sysconfig.get_config_var("LDLIBRARY"))') +PYTHON_LIBRARY="${PYTHON_LIBDIR}/${PYTHON_LDLIBRARY}" +PYTHON_INCLUDE_DIR=$(python -c 'from distutils import sysconfig; print(sysconfig.get_python_inc())') +PYTHON_SITE_DIR=$(python -c 'from distutils import sysconfig; print(sysconfig.get_python_lib(prefix=""))') + +cd "$(dirname "$0")/.." +mkdir -p build && cd build + +if [ ! -d libcec ]; then + git clone --branch release --depth 1 https://github.com/Pulse-Eight/libcec.git +fi + +cd libcec +git checkout release +git pull +git submodule update --init src/platform + +# Build libcec platform libs +( + mkdir -p src/platform/build + cd src/platform/build + cmake .. + make + make install +) + +# Fix upstream install hardcoded Debian path. +# See: https://github.com/Pulse-Eight/libcec/issues/288 +sed -i \ + -e '/DESTINATION/s:lib/python${PYTHON_VERSION}/dist-packages:${PYTHON_SITE_DIR}:' \ + src/libcec/cmake/CheckPlatformSupport.cmake + +# Build libcec +( + mkdir -p build && cd build + + cmake \ + -DPYTHON_LIBRARY="${PYTHON_LIBRARY}" \ + -DPYTHON_INCLUDE_DIR="${PYTHON_INCLUDE_DIR}" \ + -DPYTHON_SITE_DIR="${PYTHON_SITE_DIR}" \ + .. + make + make install + ldconfig +) diff --git a/virtualization/Docker/Dockerfile.dev b/virtualization/Docker/Dockerfile.dev index 3b5eb493f82..f86a0e3de7f 100644 --- a/virtualization/Docker/Dockerfile.dev +++ b/virtualization/Docker/Dockerfile.dev @@ -17,7 +17,7 @@ RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sourc wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ apt-get update && \ apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ - libtelldus-core2 && \ + libtelldus-core2 cmake libxrandr-dev swig && \ apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* COPY script/build_python_openzwave script/build_python_openzwave @@ -25,6 +25,9 @@ RUN script/build_python_openzwave && \ mkdir -p /usr/local/share/python-openzwave && \ ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config +COPY script/build_libcec script/build_libcec +RUN script/build_libcec + COPY requirements_all.txt requirements_all.txt RUN pip3 install --no-cache-dir -r requirements_all.txt && \ pip3 install --no-cache-dir mysqlclient psycopg2 uvloop From dd7cafd5e367364c8cf00888b08b6bb2343226dc Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Mon, 9 Jan 2017 21:34:18 +0100 Subject: [PATCH 128/189] Upgrade TwitterAPI to 2.4.3 (#5244) --- homeassistant/components/notify/twitter.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/notify/twitter.py b/homeassistant/components/notify/twitter.py index 666133c4c57..afa43057fa5 100644 --- a/homeassistant/components/notify/twitter.py +++ b/homeassistant/components/notify/twitter.py @@ -13,7 +13,7 @@ from homeassistant.components.notify import ( PLATFORM_SCHEMA, BaseNotificationService) from homeassistant.const import CONF_ACCESS_TOKEN -REQUIREMENTS = ['TwitterAPI==2.4.2'] +REQUIREMENTS = ['TwitterAPI==2.4.3'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index a2412504bdb..69133893979 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -31,7 +31,7 @@ PyMata==2.13 SoCo==0.12 # homeassistant.components.notify.twitter -TwitterAPI==2.4.2 +TwitterAPI==2.4.3 # homeassistant.components.http aiohttp_cors==0.5.0 From e6a9b6404f269ecb181164ea3f296c09212af236 Mon Sep 17 00:00:00 2001 From: Johann Kellerman <kellerza@gmail.com> Date: Mon, 9 Jan 2017 22:35:47 +0200 Subject: [PATCH 129/189] [sensor/sma] SMA Solar Inverter sensor (#5118) * Initial * Rebase ensure_list * timedelta & remove prints --- .coveragerc | 1 + homeassistant/components/sensor/sma.py | 190 +++++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 194 insertions(+) create mode 100644 homeassistant/components/sensor/sma.py diff --git a/.coveragerc b/.coveragerc index 62ada802c05..328746735ea 100644 --- a/.coveragerc +++ b/.coveragerc @@ -312,6 +312,7 @@ omit = homeassistant/components/sensor/scrape.py homeassistant/components/sensor/sensehat.py homeassistant/components/sensor/serial_pm.py + homeassistant/components/sensor/sma.py homeassistant/components/sensor/snmp.py homeassistant/components/sensor/sonarr.py homeassistant/components/sensor/speedtest.py diff --git a/homeassistant/components/sensor/sma.py b/homeassistant/components/sensor/sma.py new file mode 100644 index 00000000000..fc074a8defe --- /dev/null +++ b/homeassistant/components/sensor/sma.py @@ -0,0 +1,190 @@ +"""SMA Solar Webconnect interface. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.sma/ +""" +import asyncio +import logging +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import ( + EVENT_HOMEASSISTANT_STOP, CONF_HOST, CONF_PASSWORD, CONF_SCAN_INTERVAL) +from homeassistant.helpers.event import async_track_time_interval +from homeassistant.helpers.aiohttp_client import async_get_clientsession +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import Entity + +REQUIREMENTS = ['pysma==0.1.3'] + +_LOGGER = logging.getLogger(__name__) + +CONF_GROUP = 'group' +CONF_SENSORS = 'sensors' +CONF_CUSTOM = 'custom' + +GROUP_INSTALLER = 'installer' +GROUP_USER = 'user' +GROUPS = [GROUP_USER, GROUP_INSTALLER] +SENSOR_OPTIONS = ['current_consumption', 'current_power', 'total_consumption', + 'total_yield'] + + +def _check_sensor_schema(conf): + """Check sensors and attributes are valid.""" + valid = list(conf[CONF_CUSTOM].keys()) + valid.extend(SENSOR_OPTIONS) + for sensor, attrs in conf[CONF_SENSORS].items(): + if sensor not in valid: + raise vol.Invalid("{} does not exist".format(sensor)) + for attr in attrs: + if attr in valid: + continue + raise vol.Invalid("{} does not exist [{}]".format(attr, sensor)) + return conf + + +PLATFORM_SCHEMA = vol.All(PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): str, + vol.Required(CONF_PASSWORD): str, + vol.Optional(CONF_GROUP, default=GROUPS[0]): vol.In(GROUPS), + vol.Required(CONF_SENSORS): vol.Schema({cv.slug: cv.ensure_list}), + vol.Optional(CONF_CUSTOM, default={}): vol.Schema({ + cv.slug: { + vol.Required('key'): vol.All(str, vol.Length(min=13, max=13)), + vol.Required('unit'): str + }}) +}, extra=vol.PREVENT_EXTRA), _check_sensor_schema) + + +def async_setup_platform(hass, config, add_devices, discovery_info=None): + """Set up SMA WebConnect sensor.""" + import pysma + + # Combine sensor_defs from the library and custom config + sensor_defs = dict(zip(SENSOR_OPTIONS, [ + (pysma.KEY_CURRENT_CONSUMPTION_W, 'W'), + (pysma.KEY_CURRENT_POWER_W, 'W'), + (pysma.KEY_TOTAL_CONSUMPTION_KWH, 'kW/h'), + (pysma.KEY_TOTAL_YIELD_KWH, 'kW/h')])) + for name, prop in config[CONF_CUSTOM].items(): + if name in sensor_defs: + _LOGGER.warning("Custom sensor %s replace built-in sensor", name) + sensor_defs[name] = (prop['key'], prop['unit']) + + # Prepare all HASS sensor entities + hass_sensors = [] + used_sensors = [] + for name, attr in config[CONF_SENSORS].items(): + hass_sensors.append(SMAsensor(name, attr, sensor_defs)) + used_sensors.append(name) + used_sensors.extend(attr) + + # Remove sensor_defs not in use + sensor_defs = {name: val for name, val in sensor_defs.items() + if name in used_sensors} + + yield from add_devices(hass_sensors) + + # Init the SMA interface + session = async_get_clientsession(hass) + grp = {GROUP_INSTALLER: pysma.GROUP_INSTALLER, + GROUP_USER: pysma.GROUP_USER}[config[CONF_GROUP]] + sma = pysma.SMA(session, config[CONF_HOST], config[CONF_PASSWORD], + group=grp) + + # Ensure we logout on shutdown + @asyncio.coroutine + def async_close_session(event): + """Close the session.""" + yield from sma.close_session() + + hass.bus.async_listen(EVENT_HOMEASSISTANT_STOP, async_close_session) + + # Read SMA values periodically & update sensors + names_to_query = list(sensor_defs.keys()) + keys_to_query = [sensor_defs[name][0] for name in names_to_query] + + backoff = 0 + + @asyncio.coroutine + def async_sma(event): + """Update all the SMA sensors.""" + nonlocal backoff + if backoff > 1: + backoff -= 1 + return + + values = yield from sma.read(keys_to_query) + if values is None: + backoff = 3 + return + res = dict(zip(names_to_query, values)) + _LOGGER.debug("Update sensors %s %s %s", keys_to_query, values, res) + tasks = [] + for sensor in hass_sensors: + task = sensor.async_update_values(res) + if task: + tasks.append(task) + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) + + interval = config.get(CONF_SCAN_INTERVAL) or timedelta(seconds=5) + async_track_time_interval(hass, async_sma, interval) + + +class SMAsensor(Entity): + """Representation of a Bitcoin sensor.""" + + def __init__(self, sensor_name, attr, sensor_defs): + """Initialize the sensor.""" + self._name = sensor_name + self._key, self._unit_of_measurement = sensor_defs[sensor_name] + self._state = None + self._sensor_defs = sensor_defs + self._attr = {att: "" for att in attr} + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def unit_of_measurement(self): + """Return the unit the value is expressed in.""" + return self._unit_of_measurement + + @property + def device_state_attributes(self): + """Return the state attributes of the sensor.""" + return self._attr + + @property + def poll(self): + """SMA sensors are updated & don't poll.""" + return False + + def async_update_values(self, key_values): + """Update this sensor using the data.""" + update = False + + for key, val in self._attr.items(): + if val.partition(' ')[0] != key_values[key]: + update = True + self._attr[key] = '{} {}'.format(key_values[key], + self._sensor_defs[key][1]) + + new_state = key_values[self._name] + if new_state != self._state: + update = True + self._state = new_state + + return self.async_update_ha_state() if update else None \ + # pylint: disable=protected-access diff --git a/requirements_all.txt b/requirements_all.txt index 69133893979..6a3818a60c3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -465,6 +465,9 @@ pyqwikswitch==0.4 # homeassistant.components.switch.acer_projector pyserial==3.1.1 +# homeassistant.components.sensor.sma +pysma==0.1.3 + # homeassistant.components.device_tracker.snmp # homeassistant.components.sensor.snmp pysnmp==4.3.2 From 6be19e8997b9900adc37a5114e850b8f30adb2b5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Mon, 9 Jan 2017 21:50:38 +0100 Subject: [PATCH 130/189] Update pytz to 2016.10 (#5247) --- requirements_all.txt | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements_all.txt b/requirements_all.txt index 6a3818a60c3..6a59fffae2f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1,7 +1,7 @@ # Home Assistant core requests>=2,<3 pyyaml>=3.11,<4 -pytz>=2016.7 +pytz>=2016.10 pip>=7.0.0 jinja2>=2.8 voluptuous==0.9.2 diff --git a/setup.py b/setup.py index 4dc8ba9f75f..a62dbed80e8 100755 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ PACKAGES = find_packages(exclude=['tests', 'tests.*']) REQUIRES = [ 'requests>=2,<3', 'pyyaml>=3.11,<4', - 'pytz>=2016.7', + 'pytz>=2016.10', 'pip>=7.0.0', 'jinja2>=2.8', 'voluptuous==0.9.2', From 1f31dfe5d341d6cda59344110bcf61b2ffc0d684 Mon Sep 17 00:00:00 2001 From: Johann Kellerman <kellerza@gmail.com> Date: Mon, 9 Jan 2017 22:53:30 +0200 Subject: [PATCH 131/189] [recorder] Include & Exclude domain fix & unit tests (#5213) * Tests & domain fix * incl/excl combined --- homeassistant/components/recorder/__init__.py | 34 ++++--- tests/components/recorder/test_init.py | 89 +++++++++++++++++++ 2 files changed, 110 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 41a7991c32f..4f02fe2873d 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -16,9 +16,9 @@ from typing import Any, Union, Optional, List, Dict import voluptuous as vol -from homeassistant.core import HomeAssistant, callback +from homeassistant.core import HomeAssistant, callback, split_entity_id from homeassistant.const import ( - ATTR_ENTITY_ID, ATTR_DOMAIN, CONF_ENTITIES, CONF_EXCLUDE, CONF_DOMAINS, + ATTR_ENTITY_ID, CONF_ENTITIES, CONF_EXCLUDE, CONF_DOMAINS, CONF_INCLUDE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, EVENT_STATE_CHANGED, EVENT_TIME_CHANGED, MATCH_ALL) import homeassistant.helpers.config_validation as cv @@ -181,8 +181,8 @@ class Recorder(threading.Thread): self.engine = None # type: Any self._run = None # type: Any - self.include = include.get(CONF_ENTITIES, []) + \ - include.get(CONF_DOMAINS, []) + self.include_e = include.get(CONF_ENTITIES, []) + self.include_d = include.get(CONF_DOMAINS, []) self.exclude = exclude.get(CONF_ENTITIES, []) + \ exclude.get(CONF_DOMAINS, []) @@ -230,17 +230,25 @@ class Recorder(threading.Thread): self.queue.task_done() continue - entity_id = event.data.get(ATTR_ENTITY_ID) - domain = event.data.get(ATTR_DOMAIN) + if ATTR_ENTITY_ID in event.data: + entity_id = event.data[ATTR_ENTITY_ID] + domain = split_entity_id(entity_id)[0] - if entity_id in self.exclude or domain in self.exclude: - self.queue.task_done() - continue + # Exclude entities OR + # Exclude domains, but include specific entities + if (entity_id in self.exclude) or \ + (domain in self.exclude and + entity_id not in self.include_e): + self.queue.task_done() + continue - if (self.include and entity_id not in self.include and - domain not in self.include): - self.queue.task_done() - continue + # Included domains only (excluded entities above) OR + # Include entities only, but only if no excludes + if (self.include_d and domain not in self.include_d) or \ + (self.include_e and entity_id not in self.include_e + and not self.exclude): + self.queue.task_done() + continue dbevent = Events.from_event(event) self._commit(dbevent) diff --git a/tests/components/recorder/test_init.py b/tests/components/recorder/test_init.py index 03e782841a2..e8a73e347ff 100644 --- a/tests/components/recorder/test_init.py +++ b/tests/components/recorder/test_init.py @@ -4,6 +4,7 @@ import json from datetime import datetime, timedelta import unittest +import pytest from homeassistant.core import callback from homeassistant.const import MATCH_ALL from homeassistant.components import recorder @@ -188,3 +189,91 @@ class TestRecorder(unittest.TestCase): # we should have all of our states still self.assertEqual(states.count(), 5) self.assertEqual(events.count(), 5) + + +@pytest.fixture +def hass_recorder(): + """HASS fixture with in-memory recorder.""" + hass = get_test_home_assistant() + + def setup_recorder(config): + """Setup with params.""" + db_uri = 'sqlite://' # In memory DB + conf = {recorder.CONF_DB_URL: db_uri} + conf.update(config) + assert setup_component(hass, recorder.DOMAIN, {recorder.DOMAIN: conf}) + hass.start() + hass.block_till_done() + recorder._verify_instance() + recorder._INSTANCE.block_till_done() + return hass + + yield setup_recorder + hass.stop() + + +def _add_entities(hass, entity_ids): + """Add entities.""" + attributes = {'test_attr': 5, 'test_attr_10': 'nice'} + for idx, entity_id in enumerate(entity_ids): + hass.states.set(entity_id, 'state{}'.format(idx), attributes) + hass.block_till_done() + recorder._INSTANCE.block_till_done() + db_states = recorder.query('States') + states = recorder.execute(db_states) + assert db_states[0].event_id is not None + return states + + +# pylint: disable=redefined-outer-name,invalid-name +def test_saving_state_include_domains(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({'include': {'domains': 'test2'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 1 + assert hass.states.get('test2.recorder') == states[0] + + +def test_saving_state_incl_entities(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({'include': {'entities': 'test2.recorder'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 1 + assert hass.states.get('test2.recorder') == states[0] + + +def test_saving_state_exclude_domains(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({'exclude': {'domains': 'test'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 1 + assert hass.states.get('test2.recorder') == states[0] + + +def test_saving_state_exclude_entities(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({'exclude': {'entities': 'test.recorder'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 1 + assert hass.states.get('test2.recorder') == states[0] + + +def test_saving_state_exclude_domain_include_entity(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({ + 'include': {'entities': 'test.recorder'}, + 'exclude': {'domains': 'test'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder']) + assert len(states) == 2 + + +def test_saving_state_include_domain_exclude_entity(hass_recorder): + """Test saving and restoring a state.""" + hass = hass_recorder({ + 'exclude': {'entities': 'test.recorder'}, + 'include': {'domains': 'test'}}) + states = _add_entities(hass, ['test.recorder', 'test2.recorder', + 'test.ok']) + assert len(states) == 1 + assert hass.states.get('test.ok') == states[0] + assert hass.states.get('test.ok').state == 'state2' From 0b685a5b1eedcf7e5b858641cab01e9a8496697f Mon Sep 17 00:00:00 2001 From: andrey-git <andrey-git@users.noreply.github.com> Date: Tue, 10 Jan 2017 01:40:52 +0200 Subject: [PATCH 132/189] Expose supported_features of mqtt_json (#5250) * Expose supported_features of mqtt_json * Remove whitespace --- homeassistant/components/light/mqtt_json.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/homeassistant/components/light/mqtt_json.py b/homeassistant/components/light/mqtt_json.py index d26f5490049..ba2c9efcb3d 100755 --- a/homeassistant/components/light/mqtt_json.py +++ b/homeassistant/components/light/mqtt_json.py @@ -172,6 +172,11 @@ class MqttJson(Light): """Return true if we do optimistic updates.""" return self._optimistic + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_MQTT_JSON + def turn_on(self, **kwargs): """Turn the device on.""" should_update = False From 7e1629a962f645024b0ed8e93c4c1a236804ccb6 Mon Sep 17 00:00:00 2001 From: Anton Lundin <glance@acc.umu.se> Date: Tue, 10 Jan 2017 10:58:39 +0100 Subject: [PATCH 133/189] Fix async_volume_up / async_volume_down (#5249) async_volume_up / async_volume_down should be async versions of volume_up / volume_down, not a async version of the default variants of volume_up / volume_down. The previous code always called into the mediaplayers set_volume_level, and never into volume_up / volume_down. Signed-off-by: Anton Lundin <glance@acc.umu.se> --- homeassistant/components/media_player/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index f5948e1eecd..1be94976d49 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -758,7 +758,7 @@ class MediaPlayerDevice(Entity): This method must be run in the event loop and returns a coroutine. """ - return self.async_set_volume_level(min(1, self.volume_level + .1)) + return self.hass.loop.run_in_executor(None, self.volume_up) def volume_down(self): """Turn volume down for media player.""" @@ -770,7 +770,7 @@ class MediaPlayerDevice(Entity): This method must be run in the event loop and returns a coroutine. """ - return self.async_set_volume_level(max(0, self.volume_level - .1)) + return self.hass.loop.run_in_executor(None, self.volume_down) def media_play_pause(self): """Play or pause the media player.""" From 6845a0974d7708c97ef09474cc8277e5c5362868 Mon Sep 17 00:00:00 2001 From: sander76 <s.teunissen@gmail.com> Date: Tue, 10 Jan 2017 13:21:15 +0100 Subject: [PATCH 134/189] adding a default icon "blind" to a PowerView blinds scene. (#5210) * adding a default icon "blind" to a PowerView blinds scene. * Adding icon property to define blind icon. Removed it from the state attributes dict. * fixing lint error --- homeassistant/components/scene/hunterdouglas_powerview.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/homeassistant/components/scene/hunterdouglas_powerview.py b/homeassistant/components/scene/hunterdouglas_powerview.py index 0ae44d878f8..c831876bf11 100644 --- a/homeassistant/components/scene/hunterdouglas_powerview.py +++ b/homeassistant/components/scene/hunterdouglas_powerview.py @@ -70,6 +70,11 @@ class PowerViewScene(Scene): """Return the state attributes.""" return {"roomName": self.scene_data["roomName"]} + @property + def icon(self): + """Icon to use in the frontend.""" + return 'mdi:blinds' + def activate(self): """Activate the scene. Tries to get entities into requested state.""" self.pv_instance.activate_scene(self.scene_data["id"]) From f75e13f55ead56a20a6a24cf073ae223346966c9 Mon Sep 17 00:00:00 2001 From: Valentin Alexeev <valentin.alekseev@gmail.com> Date: Tue, 10 Jan 2017 17:01:04 +0200 Subject: [PATCH 135/189] Use SHA hash to make token harder to guess (#5258) * Use SHA hash to make token harder to guess Use hashlib SHA256 to encode object id instead of using it directly. * Cache access token Instead of generating a token on the fly cache it in the constructor. * Fix lint --- homeassistant/components/camera/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 5b2aa463607..5ba68dea058 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -8,6 +8,7 @@ https://home-assistant.io/components/camera/ import asyncio from datetime import timedelta import logging +import hashlib from aiohttp import web @@ -47,11 +48,13 @@ class Camera(Entity): def __init__(self): """Initialize a camera.""" self.is_streaming = False + self._access_token = hashlib.sha256( + str.encode(str(id(self)))).hexdigest() @property def access_token(self): """Access token for this camera.""" - return str(id(self)) + return self._access_token @property def should_poll(self): From 6b00f7ff286e56f9d685c451157c75cd2fe8a08f Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Tue, 10 Jan 2017 17:19:51 +0100 Subject: [PATCH 136/189] Bugfix async device_tracker see callback (#5259) --- homeassistant/components/device_tracker/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index f08a9badb6f..21e7c7b0da1 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -158,7 +158,7 @@ def async_setup(hass: HomeAssistantType, config: ConfigType): None, platform.get_scanner, hass, {DOMAIN: p_config}) elif hasattr(platform, 'async_setup_scanner'): setup = yield from platform.async_setup_scanner( - hass, p_config, tracker.see) + hass, p_config, tracker.async_see) elif hasattr(platform, 'setup_scanner'): setup = yield from hass.loop.run_in_executor( None, platform.setup_scanner, hass, p_config, tracker.see) From 3a4b4380a1b3ad09b8975d26ef69aef180ab5e55 Mon Sep 17 00:00:00 2001 From: joopert <joopert@users.noreply.github.com> Date: Tue, 10 Jan 2017 22:32:43 +0100 Subject: [PATCH 137/189] Add support for NAD receivers (#5191) * Add support for NAD receivers * remove self.update() in various methods * remove setting attributes in various methods * Change import to hass style --- .coveragerc | 1 + homeassistant/components/media_player/nad.py | 182 +++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 186 insertions(+) create mode 100644 homeassistant/components/media_player/nad.py diff --git a/.coveragerc b/.coveragerc index 328746735ea..8b308b097a7 100644 --- a/.coveragerc +++ b/.coveragerc @@ -210,6 +210,7 @@ omit = homeassistant/components/media_player/lg_netcast.py homeassistant/components/media_player/mpchc.py homeassistant/components/media_player/mpd.py + homeassistant/components/media_player/nad.py homeassistant/components/media_player/onkyo.py homeassistant/components/media_player/panasonic_viera.py homeassistant/components/media_player/pandora.py diff --git a/homeassistant/components/media_player/nad.py b/homeassistant/components/media_player/nad.py new file mode 100644 index 00000000000..0b8efda0e44 --- /dev/null +++ b/homeassistant/components/media_player/nad.py @@ -0,0 +1,182 @@ +""" +Support for interfacing with NAD receivers through RS-232. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/media_player.nad/ +""" +import logging + +import voluptuous as vol + +from homeassistant.components.media_player import ( + SUPPORT_VOLUME_SET, + SUPPORT_VOLUME_MUTE, SUPPORT_TURN_ON, SUPPORT_TURN_OFF, + SUPPORT_VOLUME_STEP, SUPPORT_SELECT_SOURCE, MediaPlayerDevice, + PLATFORM_SCHEMA) +from homeassistant.const import ( + CONF_NAME, STATE_OFF, STATE_ON) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['https://github.com/joopert/nad_receiver/archive/' + '0.0.2.zip#nad_receiver==0.0.2'] + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_NAME = 'NAD Receiver' +DEFAULT_MIN_VOLUME = -92 +DEFAULT_MAX_VOLUME = -20 + +SUPPORT_NAD = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ + SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_VOLUME_STEP | \ + SUPPORT_SELECT_SOURCE + +CONF_SERIAL_PORT = 'serial_port' +CONF_MIN_VOLUME = 'min_volume' +CONF_MAX_VOLUME = 'max_volume' +CONF_SOURCE_DICT = 'sources' + +SOURCE_DICT_SCHEMA = vol.Schema({ + vol.Range(min=1, max=10): cv.string +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_SERIAL_PORT): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_MIN_VOLUME, default=DEFAULT_MIN_VOLUME): int, + vol.Optional(CONF_MAX_VOLUME, default=DEFAULT_MAX_VOLUME): int, + vol.Optional(CONF_SOURCE_DICT, default={}): SOURCE_DICT_SCHEMA, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the NAD platform.""" + from nad_receiver import NADReceiver + add_devices([NAD( + config.get(CONF_NAME), + NADReceiver(config.get(CONF_SERIAL_PORT)), + config.get(CONF_MIN_VOLUME), + config.get(CONF_MAX_VOLUME), + config.get(CONF_SOURCE_DICT) + )]) + + +class NAD(MediaPlayerDevice): + """Representation of a NAD Receiver.""" + + def __init__(self, name, nad_receiver, min_volume, max_volume, + source_dict): + """Initialize the NAD Receiver device.""" + self._name = name + self._nad_receiver = nad_receiver + self._min_volume = min_volume + self._max_volume = max_volume + self._source_dict = source_dict + self._reverse_mapping = {value: key for key, value in + self._source_dict.items()} + + self._volume = None + self._state = None + self._mute = None + self._source = None + + self.update() + + def calc_volume(self, decibel): + """ + Calculate the volume given the decibel. + + Return the volume (0..1). + """ + return abs(self._min_volume - decibel) / abs( + self._min_volume - self._max_volume) + + def calc_db(self, volume): + """ + Calculate the decibel given the volume. + + Return the dB. + """ + return self._min_volume + round( + abs(self._min_volume - self._max_volume) * volume) + + @property + def name(self): + """Return the name of the device.""" + return self._name + + @property + def state(self): + """Return the state of the device.""" + return self._state + + def update(self): + """Retrieve latest state.""" + if self._nad_receiver.main_power('?') == 'Off': + self._state = STATE_OFF + else: + self._state = STATE_ON + + if self._nad_receiver.main_mute('?') == 'Off': + self._mute = False + else: + self._mute = True + + self._volume = self.calc_volume(self._nad_receiver.main_volume('?')) + self._source = self._source_dict.get( + self._nad_receiver.main_source('?')) + + @property + def volume_level(self): + """Volume level of the media player (0..1).""" + return self._volume + + @property + def is_volume_muted(self): + """Boolean if volume is currently muted.""" + return self._mute + + @property + def supported_media_commands(self): + """Flag of media commands that are supported.""" + return SUPPORT_NAD + + def turn_off(self): + """Turn the media player off.""" + self._nad_receiver.main_power('=', 'Off') + + def turn_on(self): + """Turn the media player on.""" + self._nad_receiver.main_power('=', 'On') + + def volume_up(self): + """Volume up the media player.""" + self._nad_receiver.main_volume('+') + + def volume_down(self): + """Volume down the media player.""" + self._nad_receiver.main_volume('-') + + def set_volume_level(self, volume): + """Set volume level, range 0..1.""" + self._nad_receiver.main_volume('=', self.calc_db(volume)) + + def select_source(self, source): + """Select input source.""" + self._nad_receiver.main_source('=', self._reverse_mapping.get(source)) + + @property + def source(self): + """Name of the current input source.""" + return self._source + + @property + def source_list(self): + """List of available input sources.""" + return sorted(list(self._reverse_mapping.keys())) + + def mute_volume(self, mute): + """Mute (true) or unmute (false) media player.""" + if mute: + self._nad_receiver.main_mute('=', 'On') + else: + self._nad_receiver.main_mute('=', 'Off') diff --git a/requirements_all.txt b/requirements_all.txt index 6a59fffae2f..d13edd9d56a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -224,6 +224,9 @@ https://github.com/jabesq/pybotvac/archive/v0.0.1.zip#pybotvac==0.0.1 # homeassistant.components.sensor.sabnzbd https://github.com/jamespcole/home-assistant-nzb-clients/archive/616cad59154092599278661af17e2a9f2cf5e2a9.zip#python-sabnzbd==0.1 +# homeassistant.components.media_player.nad +https://github.com/joopert/nad_receiver/archive/0.0.2.zip#nad_receiver==0.0.2 + # homeassistant.components.media_player.russound_rnet https://github.com/laf/russound/archive/0.1.6.zip#russound==0.1.6 From 34a9fb01ac1fb9568f18677be5faf3d23ab7dc2a Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello <tchello.mello@gmail.com> Date: Wed, 11 Jan 2017 00:45:46 -0500 Subject: [PATCH 138/189] Bump flux_led version and make use of PyPi package (#5267) * Bump flux_led version and make use of PyPi package * Makes script/gen_requirements_all.py happy --- homeassistant/components/light/flux_led.py | 3 +-- requirements_all.txt | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/light/flux_led.py b/homeassistant/components/light/flux_led.py index 43c5ada9b8d..22dd40b30ef 100644 --- a/homeassistant/components/light/flux_led.py +++ b/homeassistant/components/light/flux_led.py @@ -17,8 +17,7 @@ from homeassistant.components.light import ( PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['https://github.com/Danielhiversen/flux_led/archive/0.11.zip' - '#flux_led==0.11'] +REQUIREMENTS = ['flux_led==0.12'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index d13edd9d56a..fdd35f6dfe3 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -132,6 +132,9 @@ fitbit==0.2.3 # homeassistant.components.sensor.fixer fixerio==0.1.1 +# homeassistant.components.light.flux_led +flux_led==0.12 + # homeassistant.components.notify.free_mobile freesms==0.1.1 @@ -180,9 +183,6 @@ hikvision==0.4 # homeassistant.components.nest http://github.com/technicalpickles/python-nest/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip#python-nest==3.0.3 -# homeassistant.components.light.flux_led -https://github.com/Danielhiversen/flux_led/archive/0.11.zip#flux_led==0.11 - # homeassistant.components.switch.tplink https://github.com/GadgetReactor/pyHS100/archive/45fc3548882628bcde3e3d365db341849457bef2.zip#pyHS100==0.2.2 From 467cb18625da9323f743ed62a342e446a79fb05b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= <mail@dahoiv.net> Date: Wed, 11 Jan 2017 16:23:05 +0100 Subject: [PATCH 139/189] Add last triggered to script (#5261) * Add last triggered to script * Add tests for script last_triggered --- homeassistant/components/script.py | 2 ++ homeassistant/helpers/script.py | 2 ++ tests/helpers/test_script.py | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/homeassistant/components/script.py b/homeassistant/components/script.py index df46fb5a03d..05cbc5d0a80 100644 --- a/homeassistant/components/script.py +++ b/homeassistant/components/script.py @@ -31,6 +31,7 @@ CONF_SEQUENCE = "sequence" ATTR_VARIABLES = 'variables' ATTR_LAST_ACTION = 'last_action' +ATTR_LAST_TRIGGERED = 'last_triggered' ATTR_CAN_CANCEL = 'can_cancel' _LOGGER = logging.getLogger(__name__) @@ -155,6 +156,7 @@ class ScriptEntity(ToggleEntity): def state_attributes(self): """Return the state attributes.""" attrs = {} + attrs[ATTR_LAST_TRIGGERED] = self.script.last_triggered if self.script.can_cancel: attrs[ATTR_CAN_CANCEL] = self.script.can_cancel if self.script.last_action: diff --git a/homeassistant/helpers/script.py b/homeassistant/helpers/script.py index 4d6a2b01df7..46703d86450 100644 --- a/homeassistant/helpers/script.py +++ b/homeassistant/helpers/script.py @@ -46,6 +46,7 @@ class Script(): self._change_listener = change_listener self._cur = -1 self.last_action = None + self.last_triggered = None self.can_cancel = any(CONF_DELAY in action for action in self.sequence) self._async_unsub_delay_listener = None @@ -68,6 +69,7 @@ class Script(): This method is a coroutine. """ + self.last_triggered = date_util.utcnow() if self._cur == -1: self._log('Running script') self._cur = 0 diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index 8787ff7b514..6eee484097b 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -353,3 +353,22 @@ class TestScriptHelper(unittest.TestCase): script_obj.run() self.hass.block_till_done() assert len(script_obj._config_cache) == 2 + + def test_last_triggered(self): + """Test the last_triggered.""" + event = 'test_event' + + script_obj = script.Script(self.hass, cv.SCRIPT_SCHEMA([ + {'event': event}, + {'delay': {'seconds': 5}}, + {'event': event}])) + + assert script_obj.last_triggered is None + + time = dt_util.utcnow() + with mock.patch('homeassistant.helpers.script.date_util.utcnow', + return_value=time): + script_obj.run() + self.hass.block_till_done() + + assert script_obj.last_triggered == time From 3f3a3bcc8ac7eec2e5e9eba9981c74db3842f22d Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Wed, 11 Jan 2017 16:31:16 +0100 Subject: [PATCH 140/189] Cleanup language support on TTS (#5255) * Cleanup language support on TTS * change to default_language & address comments * Cleanup not needed code / comment from paulus --- homeassistant/components/tts/__init__.py | 32 +++++++---- homeassistant/components/tts/demo.py | 36 ++++++++++--- homeassistant/components/tts/google.py | 22 +++++--- homeassistant/components/tts/picotts.py | 22 ++++++-- homeassistant/components/tts/voicerss.py | 35 +++++++----- tests/components/tts/test_init.py | 68 ++++++++++++++++++------ 6 files changed, 156 insertions(+), 59 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index 01d0a6a15e3..0f731a51485 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -5,7 +5,6 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/tts/ """ import asyncio -import functools import hashlib import logging import mimetypes @@ -247,8 +246,6 @@ class SpeechManager(object): def async_register_engine(self, engine, provider, config): """Register a TTS provider.""" provider.hass = self.hass - if CONF_LANG in config: - provider.language = config.get(CONF_LANG) self.providers[engine] = provider @asyncio.coroutine @@ -257,9 +254,16 @@ class SpeechManager(object): This method is a coroutine. """ + provider = self.providers[engine] + + language = language or provider.default_language + if language is None or \ + language not in provider.supported_languages: + raise HomeAssistantError("Not supported language {0}".format( + language)) + msg_hash = hashlib.sha1(bytes(message, 'utf-8')).hexdigest() - language_key = language or self.providers[engine].language - key = KEY_PATTERN.format(msg_hash, language_key, engine).lower() + key = KEY_PATTERN.format(msg_hash, language, engine).lower() use_cache = cache if cache is not None else self.use_cache # is speech allready in memory @@ -387,13 +391,22 @@ class Provider(object): """Represent a single provider.""" hass = None - language = None - def get_tts_audio(self, message, language=None): + @property + def default_language(self): + """Default language.""" + return None + + @property + def supported_languages(self): + """List of supported languages.""" + return None + + def get_tts_audio(self, message, language): """Load tts audio file from provider.""" raise NotImplementedError() - def async_get_tts_audio(self, message, language=None): + def async_get_tts_audio(self, message, language): """Load tts audio file from provider. Return a tuple of file extension and data as bytes. @@ -401,8 +414,7 @@ class Provider(object): This method must be run in the event loop and returns a coroutine. """ return self.hass.loop.run_in_executor( - None, - functools.partial(self.get_tts_audio, message, language=language)) + None, self.get_tts_audio, message, language) class TextToSpeechView(HomeAssistantView): diff --git a/homeassistant/components/tts/demo.py b/homeassistant/components/tts/demo.py index 68d49d58f78..88afa0643f2 100644 --- a/homeassistant/components/tts/demo.py +++ b/homeassistant/components/tts/demo.py @@ -6,28 +6,50 @@ https://home-assistant.io/components/demo/ """ import os -from homeassistant.components.tts import Provider +import voluptuous as vol + +from homeassistant.components.tts import Provider, PLATFORM_SCHEMA, CONF_LANG + +SUPPORT_LANGUAGES = [ + 'en', 'de' +] + +DEFAULT_LANG = 'en' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORT_LANGUAGES), +}) def get_engine(hass, config): """Setup Demo speech component.""" - return DemoProvider() + return DemoProvider(config[CONF_LANG]) class DemoProvider(Provider): """Demo speech api provider.""" - def __init__(self): - """Initialize demo provider for TTS.""" - self.language = 'en' + def __init__(self, lang): + """Initialize demo provider.""" + self._lang = lang - def get_tts_audio(self, message, language=None): + @property + def default_language(self): + """Default language.""" + return self._lang + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + + def get_tts_audio(self, message, language): """Load TTS from demo.""" filename = os.path.join(os.path.dirname(__file__), "demo.mp3") try: with open(filename, 'rb') as voice: data = voice.read() except OSError: - return + return (None, None) return ("mp3", data) diff --git a/homeassistant/components/tts/google.py b/homeassistant/components/tts/google.py index e1bb4e5e4e5..dc03013d4f1 100644 --- a/homeassistant/components/tts/google.py +++ b/homeassistant/components/tts/google.py @@ -42,15 +42,16 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_get_engine(hass, config): """Setup Google speech component.""" - return GoogleProvider(hass) + return GoogleProvider(hass, config[CONF_LANG]) class GoogleProvider(Provider): """Google speech api provider.""" - def __init__(self, hass): + def __init__(self, hass, lang): """Init Google TTS service.""" self.hass = hass + self._lang = lang self.headers = { 'Referer': "http://translate.google.com/", 'User-Agent': ("Mozilla/5.0 (Windows NT 10.0; WOW64) " @@ -58,8 +59,18 @@ class GoogleProvider(Provider): "Chrome/47.0.2526.106 Safari/537.36") } + @property + def default_language(self): + """Default language.""" + return self._lang + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + @asyncio.coroutine - def async_get_tts_audio(self, message, language=None): + def async_get_tts_audio(self, message, language): """Load TTS from google.""" from gtts_token import gtts_token @@ -67,11 +78,6 @@ class GoogleProvider(Provider): websession = async_get_clientsession(self.hass) message_parts = self._split_message_to_parts(message) - # If language is not specified or is not supported - use the language - # from the config. - if language not in SUPPORT_LANGUAGES: - language = self.language - data = b'' for idx, part in enumerate(message_parts): part_token = yield from self.hass.loop.run_in_executor( diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py index 366973813a2..28db88c03b0 100644 --- a/homeassistant/components/tts/picotts.py +++ b/homeassistant/components/tts/picotts.py @@ -29,18 +29,31 @@ def get_engine(hass, config): if shutil.which("pico2wave") is None: _LOGGER.error("'pico2wave' was not found") return False - return PicoProvider() + return PicoProvider(config[CONF_LANG]) class PicoProvider(Provider): """pico speech api provider.""" - def get_tts_audio(self, message, language=None): + def __init__(self, lang): + """Initialize pico provider.""" + self._lang = lang + + @property + def default_language(self): + """Default language.""" + return self._lang + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + + def get_tts_audio(self, message, language): """Load TTS using pico2wave.""" - if language not in SUPPORT_LANGUAGES: - language = self.language with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as tmpf: fname = tmpf.name + cmd = ['pico2wave', '--wave', fname, '-l', language, message] subprocess.call(cmd) data = None @@ -52,6 +65,7 @@ class PicoProvider(Provider): return (None, None) finally: os.remove(fname) + if data: return ("wav", data) return (None, None) diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index 688ae7f6e25..2dda27b0c06 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -93,27 +93,34 @@ class VoiceRSSProvider(Provider): def __init__(self, hass, conf): """Init VoiceRSS TTS service.""" self.hass = hass - self.extension = conf.get(CONF_CODEC) + self._extension = conf[CONF_CODEC] + self._lang = conf[CONF_LANG] - self.form_data = { - 'key': conf.get(CONF_API_KEY), - 'hl': conf.get(CONF_LANG), - 'c': (conf.get(CONF_CODEC)).upper(), - 'f': conf.get(CONF_FORMAT), + self._form_data = { + 'key': conf[CONF_API_KEY], + 'hl': conf[CONF_LANG], + 'c': (conf[CONF_CODEC]).upper(), + 'f': conf[CONF_FORMAT], } + @property + def default_language(self): + """Default language.""" + return self._lang + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + @asyncio.coroutine - def async_get_tts_audio(self, message, language=None): + def async_get_tts_audio(self, message, language): """Load TTS from voicerss.""" websession = async_get_clientsession(self.hass) - form_data = self.form_data.copy() + form_data = self._form_data.copy() form_data['src'] = message - - # If language is specified and supported - use it instead of the - # language in the config. - if language in SUPPORT_LANGUAGES: - form_data['hl'] = language + form_data['hl'] = language request = None try: @@ -141,4 +148,4 @@ class VoiceRSSProvider(Provider): if request is not None: yield from request.release() - return (self.extension, data) + return (self._extension, data) diff --git a/tests/components/tts/test_init.py b/tests/components/tts/test_init.py index 55381395313..715b98c4740 100644 --- a/tests/components/tts/test_init.py +++ b/tests/components/tts/test_init.py @@ -22,7 +22,7 @@ class TestTTS(object): def setup_method(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.demo_provider = DemoProvider() + self.demo_provider = DemoProvider('en') self.default_tts_cache = self.hass.config.path(tts.DEFAULT_CACHE_DIR) def teardown_method(self): @@ -95,7 +95,7 @@ class TestTTS(object): config = { tts.DOMAIN: { 'platform': 'demo', - 'language': 'lang' + 'language': 'de' } } @@ -111,11 +111,23 @@ class TestTTS(object): assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_lang_demo.mp3") \ + "_de_demo.mp3") \ != -1 assert os.path.isfile(os.path.join( self.default_tts_cache, - "265944c108cbb00b2a621be5930513e03a0bb2cd_lang_demo.mp3")) + "265944c108cbb00b2a621be5930513e03a0bb2cd_de_demo.mp3")) + + def test_setup_component_and_test_service_with_wrong_conf_language(self): + """Setup the demo platform and call service with wrong config.""" + config = { + tts.DOMAIN: { + 'platform': 'demo', + 'language': 'ru' + } + } + + with assert_setup_component(0, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) def test_setup_component_and_test_service_with_service_language(self): """Setup the demo platform and call service.""" @@ -127,6 +139,35 @@ class TestTTS(object): } } + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'demo_say', { + tts.ATTR_MESSAGE: "I person is on front of your door.", + tts.ATTR_LANGUAGE: "de", + }) + self.hass.block_till_done() + + assert len(calls) == 1 + assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC + assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( + "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" + "_de_demo.mp3") \ + != -1 + assert os.path.isfile(os.path.join( + self.default_tts_cache, + "265944c108cbb00b2a621be5930513e03a0bb2cd_de_demo.mp3")) + + def test_setup_component_test_service_with_wrong_service_language(self): + """Setup the demo platform and call service.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + config = { + tts.DOMAIN: { + 'platform': 'demo', + } + } + with assert_setup_component(1, tts.DOMAIN): setup_component(self.hass, tts.DOMAIN, config) @@ -136,13 +177,8 @@ class TestTTS(object): }) self.hass.block_till_done() - assert len(calls) == 1 - assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC - assert calls[0].data[ATTR_MEDIA_CONTENT_ID].find( - "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd" - "_lang_demo.mp3") \ - != -1 - assert os.path.isfile(os.path.join( + assert len(calls) == 0 + assert not os.path.isfile(os.path.join( self.default_tts_cache, "265944c108cbb00b2a621be5930513e03a0bb2cd_lang_demo.mp3")) @@ -198,7 +234,7 @@ class TestTTS(object): assert len(calls) == 1 req = requests.get(calls[0].data[ATTR_MEDIA_CONTENT_ID]) - _, demo_data = self.demo_provider.get_tts_audio("bla") + _, demo_data = self.demo_provider.get_tts_audio("bla", 'en') assert req.status_code == 200 assert req.content == demo_data @@ -319,7 +355,7 @@ class TestTTS(object): """Setup demo platform with cache and call service without cache.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) - _, demo_data = self.demo_provider.get_tts_audio("bla") + _, demo_data = self.demo_provider.get_tts_audio("bla", 'en') cache_file = os.path.join( self.default_tts_cache, "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3") @@ -339,7 +375,7 @@ class TestTTS(object): setup_component(self.hass, tts.DOMAIN, config) with patch('homeassistant.components.tts.demo.DemoProvider.' - 'get_tts_audio', return_value=None): + 'get_tts_audio', return_value=(None, None)): self.hass.services.call(tts.DOMAIN, 'demo_say', { tts.ATTR_MESSAGE: "I person is on front of your door.", }) @@ -352,7 +388,7 @@ class TestTTS(object): != -1 @patch('homeassistant.components.tts.demo.DemoProvider.get_tts_audio', - return_value=None) + return_value=(None, None)) def test_setup_component_test_with_error_on_get_tts(self, tts_mock): """Setup demo platform with wrong get_tts_audio.""" calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) @@ -375,7 +411,7 @@ class TestTTS(object): def test_setup_component_load_cache_retrieve_without_mem_cache(self): """Setup component and load cache and get without mem cache.""" - _, demo_data = self.demo_provider.get_tts_audio("bla") + _, demo_data = self.demo_provider.get_tts_audio("bla", 'en') cache_file = os.path.join( self.default_tts_cache, "265944c108cbb00b2a621be5930513e03a0bb2cd_en_demo.mp3") From 1cf9ae5a01d663bb9e3d3e38741b2ae818b36f93 Mon Sep 17 00:00:00 2001 From: Andrew Williams <andy@tensixtyone.com> Date: Wed, 11 Jan 2017 16:26:29 +0000 Subject: [PATCH 141/189] Fix TCP sensor to correctly use value_template (#5211) * Fix TCP sensor to correctly use value_template * Fix TCP component tests * Update tcp.py --- homeassistant/components/sensor/tcp.py | 3 +-- tests/components/sensor/test_tcp.py | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/sensor/tcp.py b/homeassistant/components/sensor/tcp.py index ab27e1e580f..30ceba776e9 100644 --- a/homeassistant/components/sensor/tcp.py +++ b/homeassistant/components/sensor/tcp.py @@ -16,7 +16,6 @@ from homeassistant.const import ( CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE) from homeassistant.exceptions import TemplateError from homeassistant.helpers.entity import Entity -from homeassistant.helpers.template import Template import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -57,7 +56,7 @@ class TcpSensor(Entity): value_template = config.get(CONF_VALUE_TEMPLATE) if value_template is not None: - value_template = Template(value_template, hass) + value_template.hass = hass self._hass = hass self._config = { diff --git a/tests/components/sensor/test_tcp.py b/tests/components/sensor/test_tcp.py index d12eccccc63..fe6fa44b020 100644 --- a/tests/components/sensor/test_tcp.py +++ b/tests/components/sensor/test_tcp.py @@ -9,6 +9,7 @@ from tests.common import (get_test_home_assistant, assert_setup_component) from homeassistant.bootstrap import setup_component from homeassistant.components.sensor import tcp from homeassistant.helpers.entity import Entity +from homeassistant.helpers.template import Template TEST_CONFIG = { 'sensor': { @@ -19,7 +20,7 @@ TEST_CONFIG = { tcp.CONF_TIMEOUT: tcp.DEFAULT_TIMEOUT + 1, tcp.CONF_PAYLOAD: 'test_payload', tcp.CONF_UNIT_OF_MEASUREMENT: 'test_unit', - tcp.CONF_VALUE_TEMPLATE: 'test_template', + tcp.CONF_VALUE_TEMPLATE: Template('test_template'), tcp.CONF_VALUE_ON: 'test_on', tcp.CONF_BUFFER_SIZE: tcp.DEFAULT_BUFFER_SIZE + 1 }, @@ -252,7 +253,7 @@ class TestTCPSensor(unittest.TestCase): mock_socket = mock_socket().__enter__() mock_socket.recv.return_value = test_value.encode() config = copy(TEST_CONFIG['sensor']) - config[tcp.CONF_VALUE_TEMPLATE] = '{{ value }} {{ 1+1 }}' + config[tcp.CONF_VALUE_TEMPLATE] = Template('{{ value }} {{ 1+1 }}') sensor = tcp.TcpSensor(self.hass, config) assert sensor._state == '%s 2' % test_value @@ -265,6 +266,6 @@ class TestTCPSensor(unittest.TestCase): mock_socket = mock_socket().__enter__() mock_socket.recv.return_value = test_value.encode() config = copy(TEST_CONFIG['sensor']) - config[tcp.CONF_VALUE_TEMPLATE] = "{{ this won't work" + config[tcp.CONF_VALUE_TEMPLATE] = Template("{{ this won't work") sensor = tcp.TcpSensor(self.hass, config) assert sensor.update() is None From e68e29e03ebd43175761d1ae2b4e598d382d2cf4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen <paulus@paulusschoutsen.nl> Date: Wed, 11 Jan 2017 21:25:02 +0100 Subject: [PATCH 142/189] Upgrade to aiohttp 1.2 (#4964) * Upgrade to aiohttp 1.2 * Clean up emulated_hue tests --- .../components/emulated_hue/hue_api.py | 2 +- homeassistant/components/http/__init__.py | 4 +- homeassistant/components/http/static.py | 65 +- requirements_all.txt | 2 +- setup.py | 2 +- tests/components/emulated_hue/test_hue_api.py | 571 +++++++++--------- 6 files changed, 316 insertions(+), 330 deletions(-) diff --git a/homeassistant/components/emulated_hue/hue_api.py b/homeassistant/components/emulated_hue/hue_api.py index 24060bdfbcb..9b0a2828394 100644 --- a/homeassistant/components/emulated_hue/hue_api.py +++ b/homeassistant/components/emulated_hue/hue_api.py @@ -91,7 +91,7 @@ class HueOneLightStateView(HomeAssistantView): self.config = config @core.callback - def get(self, request, username, entity_id=None): + def get(self, request, username, entity_id): """Process a request to get the state of an individual light.""" hass = request.app['hass'] entity_id = self.config.number_to_entity_id(entity_id) diff --git a/homeassistant/components/http/__init__.py b/homeassistant/components/http/__init__.py index e35b5f31d8f..2bb35dd8f3f 100644 --- a/homeassistant/components/http/__init__.py +++ b/homeassistant/components/http/__init__.py @@ -32,7 +32,7 @@ from .const import ( KEY_USE_X_FORWARDED_FOR, KEY_TRUSTED_NETWORKS, KEY_BANS_ENABLED, KEY_LOGIN_THRESHOLD, KEY_DEVELOPMENT, KEY_AUTHENTICATED) -from .static import FILE_SENDER, GZIP_FILE_SENDER, staticresource_middleware +from .static import FILE_SENDER, CACHING_FILE_SENDER, staticresource_middleware from .util import get_real_ip DOMAIN = 'http' @@ -272,7 +272,7 @@ class HomeAssistantWSGI(object): @asyncio.coroutine def serve_file(request): """Serve file from disk.""" - res = yield from GZIP_FILE_SENDER.send(request, filepath) + res = yield from CACHING_FILE_SENDER.send(request, filepath) return res # aiohttp supports regex matching for variables. Using that as temp diff --git a/homeassistant/components/http/static.py b/homeassistant/components/http/static.py index 0bd68d6136e..6489144ec70 100644 --- a/homeassistant/components/http/static.py +++ b/homeassistant/components/http/static.py @@ -1,69 +1,40 @@ """Static file handling for HTTP component.""" import asyncio -import mimetypes import re from aiohttp import hdrs from aiohttp.file_sender import FileSender from aiohttp.web_urldispatcher import StaticResource -from aiohttp.web_exceptions import HTTPNotModified - from .const import KEY_DEVELOPMENT _FINGERPRINT = re.compile(r'^(.+)-[a-z0-9]{32}\.(\w+)$', re.IGNORECASE) -class GzipFileSender(FileSender): - """FileSender class capable of sending gzip version if available.""" +class CachingFileSender(FileSender): + """FileSender class that caches output if not in dev mode.""" - # pylint: disable=invalid-name + def __init__(self, *args, **kwargs): + """Initialize the hass file sender.""" + super().__init__(*args, **kwargs) - @asyncio.coroutine - def send(self, request, filepath): - """Send filepath to client using request.""" - gzip = False - if 'gzip' in request.headers[hdrs.ACCEPT_ENCODING]: - gzip_path = filepath.with_name(filepath.name + '.gz') + orig_sendfile = self._sendfile - if gzip_path.is_file(): - filepath = gzip_path - gzip = True + @asyncio.coroutine + def sendfile(request, resp, fobj, count): + """Sendfile that includes a cache header.""" + if not request.app[KEY_DEVELOPMENT]: + cache_time = 31 * 86400 # = 1 month + resp.headers[hdrs.CACHE_CONTROL] = "public, max-age={}".format( + cache_time) - st = filepath.stat() + yield from orig_sendfile(request, resp, fobj, count) - modsince = request.if_modified_since - if modsince is not None and st.st_mtime <= modsince.timestamp(): - raise HTTPNotModified() - - ct, encoding = mimetypes.guess_type(str(filepath)) - if not ct: - ct = 'application/octet-stream' - - resp = self._response_factory() - resp.content_type = ct - if encoding: - resp.headers[hdrs.CONTENT_ENCODING] = encoding - if gzip: - resp.headers[hdrs.VARY] = hdrs.ACCEPT_ENCODING - resp.last_modified = st.st_mtime - - # CACHE HACK - if not request.app[KEY_DEVELOPMENT]: - cache_time = 31 * 86400 # = 1 month - resp.headers[hdrs.CACHE_CONTROL] = "public, max-age={}".format( - cache_time) - - file_size = st.st_size - - resp.content_length = file_size - with filepath.open('rb') as f: - yield from self._sendfile(request, resp, f, file_size) - - return resp + # Overwriting like this because __init__ can change implementation. + self._sendfile = sendfile -GZIP_FILE_SENDER = GzipFileSender() FILE_SENDER = FileSender() +CACHING_FILE_SENDER = CachingFileSender() @asyncio.coroutine @@ -77,7 +48,7 @@ def staticresource_middleware(app, handler): return handler # pylint: disable=protected-access - inst._file_sender = GZIP_FILE_SENDER + inst._file_sender = CACHING_FILE_SENDER @asyncio.coroutine def static_middleware_handler(request): diff --git a/requirements_all.txt b/requirements_all.txt index fdd35f6dfe3..78f0bba24e9 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -6,7 +6,7 @@ pip>=7.0.0 jinja2>=2.8 voluptuous==0.9.2 typing>=3,<4 -aiohttp==1.1.6 +aiohttp==1.2 async_timeout==1.1.0 # homeassistant.components.nuimo_controller diff --git a/setup.py b/setup.py index a62dbed80e8..d83fed1329b 100755 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ REQUIRES = [ 'jinja2>=2.8', 'voluptuous==0.9.2', 'typing>=3,<4', - 'aiohttp==1.1.6', + 'aiohttp==1.2', 'async_timeout==1.1.0', ] diff --git a/tests/components/emulated_hue/test_hue_api.py b/tests/components/emulated_hue/test_hue_api.py index 4aab6401939..0b36b835cd5 100644 --- a/tests/components/emulated_hue/test_hue_api.py +++ b/tests/components/emulated_hue/test_hue_api.py @@ -1,9 +1,9 @@ """The tests for the emulated Hue component.""" +import asyncio import json -import unittest from unittest.mock import patch -import requests +import pytest from homeassistant import bootstrap, const, core import homeassistant.components as core_components @@ -12,10 +12,12 @@ from homeassistant.components import ( ) from homeassistant.const import STATE_ON, STATE_OFF from homeassistant.components.emulated_hue.hue_api import ( - HUE_API_STATE_ON, HUE_API_STATE_BRI) -from homeassistant.util.async import run_coroutine_threadsafe + HUE_API_STATE_ON, HUE_API_STATE_BRI, HueUsernameView, + HueAllLightsStateView, HueOneLightStateView, HueOneLightChangeView) +from homeassistant.components.emulated_hue import Config -from tests.common import get_test_instance_port, get_test_home_assistant +from tests.common import ( + get_test_instance_port, mock_http_component_app) HTTP_SERVER_PORT = get_test_instance_port() BRIDGE_SERVER_PORT = get_test_instance_port() @@ -24,41 +26,38 @@ BRIDGE_URL_BASE = 'http://127.0.0.1:{}'.format(BRIDGE_SERVER_PORT) + '{}' JSON_HEADERS = {const.HTTP_HEADER_CONTENT_TYPE: const.CONTENT_TYPE_JSON} -class TestEmulatedHueExposedByDefault(unittest.TestCase): - """Test class for emulated hue component.""" +@pytest.fixture +def hass_hue(loop, hass): + """Setup a hass instance for these tests.""" + # We need to do this to get access to homeassistant/turn_(on,off) + loop.run_until_complete( + core_components.async_setup(hass, {core.DOMAIN: {}})) - @classmethod - def setUpClass(cls): - """Setup the class.""" - cls.hass = hass = get_test_home_assistant() + loop.run_until_complete(bootstrap.async_setup_component( + hass, http.DOMAIN, + {http.DOMAIN: {http.CONF_SERVER_PORT: HTTP_SERVER_PORT}})) - # We need to do this to get access to homeassistant/turn_(on,off) - run_coroutine_threadsafe( - core_components.async_setup(hass, {core.DOMAIN: {}}), hass.loop - ).result() - - bootstrap.setup_component( - hass, http.DOMAIN, - {http.DOMAIN: {http.CONF_SERVER_PORT: HTTP_SERVER_PORT}}) - - with patch('homeassistant.components' - '.emulated_hue.UPNPResponderThread'): - bootstrap.setup_component(hass, emulated_hue.DOMAIN, { + with patch('homeassistant.components' + '.emulated_hue.UPNPResponderThread'): + loop.run_until_complete( + bootstrap.async_setup_component(hass, emulated_hue.DOMAIN, { emulated_hue.DOMAIN: { emulated_hue.CONF_LISTEN_PORT: BRIDGE_SERVER_PORT, emulated_hue.CONF_EXPOSE_BY_DEFAULT: True } - }) + })) - bootstrap.setup_component(cls.hass, light.DOMAIN, { + loop.run_until_complete( + bootstrap.async_setup_component(hass, light.DOMAIN, { 'light': [ { 'platform': 'demo', } ] - }) + })) - bootstrap.setup_component(cls.hass, script.DOMAIN, { + loop.run_until_complete( + bootstrap.async_setup_component(hass, script.DOMAIN, { 'script': { 'set_kitchen_light': { 'sequence': [ @@ -73,338 +72,354 @@ class TestEmulatedHueExposedByDefault(unittest.TestCase): ] } } - }) + })) - bootstrap.setup_component(cls.hass, media_player.DOMAIN, { + loop.run_until_complete( + bootstrap.async_setup_component(hass, media_player.DOMAIN, { 'media_player': [ { 'platform': 'demo', } ] - }) + })) - cls.hass.start() + # Kitchen light is explicitly excluded from being exposed + kitchen_light_entity = hass.states.get('light.kitchen_lights') + attrs = dict(kitchen_light_entity.attributes) + attrs[emulated_hue.ATTR_EMULATED_HUE] = False + hass.states.async_set( + kitchen_light_entity.entity_id, kitchen_light_entity.state, + attributes=attrs) - # Kitchen light is explicitly excluded from being exposed - kitchen_light_entity = cls.hass.states.get('light.kitchen_lights') - attrs = dict(kitchen_light_entity.attributes) - attrs[emulated_hue.ATTR_EMULATED_HUE] = False - cls.hass.states.set( - kitchen_light_entity.entity_id, kitchen_light_entity.state, - attributes=attrs) + # Expose the script + script_entity = hass.states.get('script.set_kitchen_light') + attrs = dict(script_entity.attributes) + attrs[emulated_hue.ATTR_EMULATED_HUE] = True + hass.states.async_set( + script_entity.entity_id, script_entity.state, attributes=attrs + ) - # Expose the script - script_entity = cls.hass.states.get('script.set_kitchen_light') - attrs = dict(script_entity.attributes) - attrs[emulated_hue.ATTR_EMULATED_HUE] = True - cls.hass.states.set( - script_entity.entity_id, script_entity.state, attributes=attrs - ) + return hass - @classmethod - def tearDownClass(cls): - """Stop the class.""" - cls.hass.stop() - def test_discover_lights(self): - """Test the discovery of lights.""" - result = requests.get( - BRIDGE_URL_BASE.format('/api/username/lights'), timeout=5) +@pytest.fixture +def hue_client(loop, hass_hue, test_client): + """Create web client for emulated hue api.""" + web_app = mock_http_component_app(hass_hue) + config = Config({'type': 'alexa'}) - self.assertEqual(result.status_code, 200) - self.assertTrue('application/json' in result.headers['content-type']) + HueUsernameView().register(web_app.router) + HueAllLightsStateView(config).register(web_app.router) + HueOneLightStateView(config).register(web_app.router) + HueOneLightChangeView(config).register(web_app.router) - result_json = result.json() + return loop.run_until_complete(test_client(web_app)) - # Make sure the lights we added to the config are there - self.assertTrue('light.ceiling_lights' in result_json) - self.assertTrue('light.bed_light' in result_json) - self.assertTrue('script.set_kitchen_light' in result_json) - self.assertTrue('light.kitchen_lights' not in result_json) - self.assertTrue('media_player.living_room' in result_json) - self.assertTrue('media_player.bedroom' in result_json) - self.assertTrue('media_player.walkman' in result_json) - self.assertTrue('media_player.lounge_room' in result_json) - def test_get_light_state(self): - """Test the getting of light state.""" - # Turn office light on and set to 127 brightness - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_ON, - { - const.ATTR_ENTITY_ID: 'light.ceiling_lights', - light.ATTR_BRIGHTNESS: 127 - }, - blocking=True) +@asyncio.coroutine +def test_discover_lights(hue_client): + """Test the discovery of lights.""" + result = yield from hue_client.get('/api/username/lights') - office_json = self.perform_get_light_state('light.ceiling_lights', 200) + assert result.status == 200 + assert 'application/json' in result.headers['content-type'] - self.assertEqual(office_json['state'][HUE_API_STATE_ON], True) - self.assertEqual(office_json['state'][HUE_API_STATE_BRI], 127) + result_json = yield from result.json() - # Check all lights view - result = requests.get( - BRIDGE_URL_BASE.format('/api/username/lights'), timeout=5) + devices = set(val['uniqueid'] for val in result_json.values()) - self.assertEqual(result.status_code, 200) - self.assertTrue('application/json' in result.headers['content-type']) + # Make sure the lights we added to the config are there + assert 'light.ceiling_lights' in devices + assert 'light.bed_light' in devices + assert 'script.set_kitchen_light' in devices + assert 'light.kitchen_lights' not in devices + assert 'media_player.living_room' in devices + assert 'media_player.bedroom' in devices + assert 'media_player.walkman' in devices + assert 'media_player.lounge_room' in devices - result_json = result.json() - self.assertTrue('light.ceiling_lights' in result_json) - self.assertEqual( - result_json['light.ceiling_lights']['state'][HUE_API_STATE_BRI], - 127, - ) +@asyncio.coroutine +def test_get_light_state(hass_hue, hue_client): + """Test the getting of light state.""" + # Turn office light on and set to 127 brightness + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_ON, + { + const.ATTR_ENTITY_ID: 'light.ceiling_lights', + light.ATTR_BRIGHTNESS: 127 + }, + blocking=True) - # Turn bedroom light off - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_OFF, - { - const.ATTR_ENTITY_ID: 'light.bed_light' - }, - blocking=True) + office_json = yield from perform_get_light_state( + hue_client, 'light.ceiling_lights', 200) - bedroom_json = self.perform_get_light_state('light.bed_light', 200) + assert office_json['state'][HUE_API_STATE_ON] is True + assert office_json['state'][HUE_API_STATE_BRI] == 127 - self.assertEqual(bedroom_json['state'][HUE_API_STATE_ON], False) - self.assertEqual(bedroom_json['state'][HUE_API_STATE_BRI], 0) + # Check all lights view + result = yield from hue_client.get('/api/username/lights') - # Make sure kitchen light isn't accessible - kitchen_url = '/api/username/lights/{}'.format('light.kitchen_lights') - kitchen_result = requests.get( - BRIDGE_URL_BASE.format(kitchen_url), timeout=5) + assert result.status == 200 + assert 'application/json' in result.headers['content-type'] - self.assertEqual(kitchen_result.status_code, 404) + result_json = yield from result.json() - def test_put_light_state(self): - """Test the seeting of light states.""" - self.perform_put_test_on_ceiling_lights() + assert 'light.ceiling_lights' in result_json + assert result_json['light.ceiling_lights']['state'][HUE_API_STATE_BRI] == \ + 127 - # Turn the bedroom light on first - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_ON, - {const.ATTR_ENTITY_ID: 'light.bed_light', - light.ATTR_BRIGHTNESS: 153}, - blocking=True) + # Turn bedroom light off + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_OFF, + { + const.ATTR_ENTITY_ID: 'light.bed_light' + }, + blocking=True) - bed_light = self.hass.states.get('light.bed_light') - self.assertEqual(bed_light.state, STATE_ON) - self.assertEqual(bed_light.attributes[light.ATTR_BRIGHTNESS], 153) + bedroom_json = yield from perform_get_light_state( + hue_client, 'light.bed_light', 200) - # Go through the API to turn it off - bedroom_result = self.perform_put_light_state( - 'light.bed_light', False) + assert bedroom_json['state'][HUE_API_STATE_ON] is False + assert bedroom_json['state'][HUE_API_STATE_BRI] == 0 - bedroom_result_json = bedroom_result.json() + # Make sure kitchen light isn't accessible + yield from perform_get_light_state( + hue_client, 'light.kitchen_lights', 404) - self.assertEqual(bedroom_result.status_code, 200) - self.assertTrue( - 'application/json' in bedroom_result.headers['content-type']) - self.assertEqual(len(bedroom_result_json), 1) +@asyncio.coroutine +def test_put_light_state(hass_hue, hue_client): + """Test the seeting of light states.""" + yield from perform_put_test_on_ceiling_lights(hass_hue, hue_client) - # Check to make sure the state changed - bed_light = self.hass.states.get('light.bed_light') - self.assertEqual(bed_light.state, STATE_OFF) + # Turn the bedroom light on first + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_ON, + {const.ATTR_ENTITY_ID: 'light.bed_light', + light.ATTR_BRIGHTNESS: 153}, + blocking=True) - # Make sure we can't change the kitchen light state - kitchen_result = self.perform_put_light_state( - 'light.kitchen_light', True) - self.assertEqual(kitchen_result.status_code, 404) + bed_light = hass_hue.states.get('light.bed_light') + assert bed_light.state == STATE_ON + assert bed_light.attributes[light.ATTR_BRIGHTNESS] == 153 - def test_put_light_state_script(self): - """Test the setting of script variables.""" - # Turn the kitchen light off first - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_OFF, - {const.ATTR_ENTITY_ID: 'light.kitchen_lights'}, - blocking=True) + # Go through the API to turn it off + bedroom_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'light.bed_light', False) - # Emulated hue converts 0-100% to 0-255. - level = 23 - brightness = round(level * 255 / 100) + bedroom_result_json = yield from bedroom_result.json() - script_result = self.perform_put_light_state( - 'script.set_kitchen_light', True, brightness) + assert bedroom_result.status == 200 + assert 'application/json' in bedroom_result.headers['content-type'] - script_result_json = script_result.json() + assert len(bedroom_result_json) == 1 - self.assertEqual(script_result.status_code, 200) - self.assertEqual(len(script_result_json), 2) + # Check to make sure the state changed + bed_light = hass_hue.states.get('light.bed_light') + assert bed_light.state == STATE_OFF - kitchen_light = self.hass.states.get('light.kitchen_lights') - self.assertEqual(kitchen_light.state, 'on') - self.assertEqual( - kitchen_light.attributes[light.ATTR_BRIGHTNESS], - level) + # Make sure we can't change the kitchen light state + kitchen_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'light.kitchen_light', True) + assert kitchen_result.status == 404 - def test_put_light_state_media_player(self): - """Test turning on media player and setting volume.""" - # Turn the music player off first - self.hass.services.call( - media_player.DOMAIN, const.SERVICE_TURN_OFF, - {const.ATTR_ENTITY_ID: 'media_player.walkman'}, - blocking=True) - # Emulated hue converts 0.0-1.0 to 0-255. - level = 0.25 - brightness = round(level * 255) +@asyncio.coroutine +def test_put_light_state_script(hass_hue, hue_client): + """Test the setting of script variables.""" + # Turn the kitchen light off first + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_OFF, + {const.ATTR_ENTITY_ID: 'light.kitchen_lights'}, + blocking=True) - mp_result = self.perform_put_light_state( - 'media_player.walkman', True, brightness) + # Emulated hue converts 0-100% to 0-255. + level = 23 + brightness = round(level * 255 / 100) - mp_result_json = mp_result.json() + script_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'script.set_kitchen_light', True, brightness) - self.assertEqual(mp_result.status_code, 200) - self.assertEqual(len(mp_result_json), 2) + script_result_json = yield from script_result.json() - walkman = self.hass.states.get('media_player.walkman') - self.assertEqual(walkman.state, 'playing') - self.assertEqual( - walkman.attributes[media_player.ATTR_MEDIA_VOLUME_LEVEL], - level) + assert script_result.status == 200 + assert len(script_result_json) == 2 - # pylint: disable=invalid-name - def test_put_with_form_urlencoded_content_type(self): - """Test the form with urlencoded content.""" - # Needed for Alexa - self.perform_put_test_on_ceiling_lights( - 'application/x-www-form-urlencoded') + kitchen_light = hass_hue.states.get('light.kitchen_lights') + assert kitchen_light.state == 'on' + assert kitchen_light.attributes[light.ATTR_BRIGHTNESS] == level - # Make sure we fail gracefully when we can't parse the data - data = {'key1': 'value1', 'key2': 'value2'} - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format( - 'light.ceiling_lights')), data=data) - self.assertEqual(result.status_code, 400) +@asyncio.coroutine +def test_put_light_state_media_player(hass_hue, hue_client): + """Test turning on media player and setting volume.""" + # Turn the music player off first + yield from hass_hue.services.async_call( + media_player.DOMAIN, const.SERVICE_TURN_OFF, + {const.ATTR_ENTITY_ID: 'media_player.walkman'}, + blocking=True) - def test_entity_not_found(self): - """Test for entity which are not found.""" - result = requests.get( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}'.format("not.existant_entity")), - timeout=5) + # Emulated hue converts 0.0-1.0 to 0-255. + level = 0.25 + brightness = round(level * 255) - self.assertEqual(result.status_code, 404) + mp_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'media_player.walkman', True, brightness) - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format("non.existant_entity")), - timeout=5) + mp_result_json = yield from mp_result.json() - self.assertEqual(result.status_code, 404) + assert mp_result.status == 200 + assert len(mp_result_json) == 2 - def test_allowed_methods(self): - """Test the allowed methods.""" - result = requests.get( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format( - "light.ceiling_lights"))) + walkman = hass_hue.states.get('media_player.walkman') + assert walkman.state == 'playing' + assert walkman.attributes[media_player.ATTR_MEDIA_VOLUME_LEVEL] == level - self.assertEqual(result.status_code, 405) - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}'.format("light.ceiling_lights")), - data={'key1': 'value1'}) +# pylint: disable=invalid-name +@asyncio.coroutine +def test_put_with_form_urlencoded_content_type(hass_hue, hue_client): + """Test the form with urlencoded content.""" + # Needed for Alexa + yield from perform_put_test_on_ceiling_lights( + hass_hue, hue_client, 'application/x-www-form-urlencoded') - self.assertEqual(result.status_code, 405) + # Make sure we fail gracefully when we can't parse the data + data = {'key1': 'value1', 'key2': 'value2'} + result = yield from hue_client.put( + '/api/username/lights/light.ceiling_lights/state', + headers={ + 'content-type': 'application/x-www-form-urlencoded' + }, + data=data, + ) - result = requests.put( - BRIDGE_URL_BASE.format('/api/username/lights'), - data={'key1': 'value1'}) + assert result.status == 400 - self.assertEqual(result.status_code, 405) - def test_proper_put_state_request(self): - """Test the request to set the state.""" - # Test proper on value parsing - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format( - 'light.ceiling_lights')), +@asyncio.coroutine +def test_entity_not_found(hue_client): + """Test for entity which are not found.""" + result = yield from hue_client.get( + '/api/username/lights/not.existant_entity') + + assert result.status == 404 + + result = yield from hue_client.put( + '/api/username/lights/not.existant_entity/state') + + assert result.status == 404 + + +@asyncio.coroutine +def test_allowed_methods(hue_client): + """Test the allowed methods.""" + result = yield from hue_client.get( + '/api/username/lights/light.ceiling_lights/state') + + assert result.status == 405 + + result = yield from hue_client.put( + '/api/username/lights/light.ceiling_lights') + + assert result.status == 405 + + result = yield from hue_client.put( + '/api/username/lights') + + assert result.status == 405 + + +@asyncio.coroutine +def test_proper_put_state_request(hue_client): + """Test the request to set the state.""" + # Test proper on value parsing + result = yield from hue_client.put( + '/api/username/lights/{}/state'.format( + 'light.ceiling_lights'), data=json.dumps({HUE_API_STATE_ON: 1234})) - self.assertEqual(result.status_code, 400) + assert result.status == 400 - # Test proper brightness value parsing - result = requests.put( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format( - 'light.ceiling_lights')), data=json.dumps({ - HUE_API_STATE_ON: True, - HUE_API_STATE_BRI: 'Hello world!' - })) + # Test proper brightness value parsing + result = yield from hue_client.put( + '/api/username/lights/{}/state'.format( + 'light.ceiling_lights'), + data=json.dumps({ + HUE_API_STATE_ON: True, + HUE_API_STATE_BRI: 'Hello world!' + })) - self.assertEqual(result.status_code, 400) + assert result.status == 400 - # pylint: disable=invalid-name - def perform_put_test_on_ceiling_lights(self, - content_type='application/json'): - """Test the setting of a light.""" - # Turn the office light off first - self.hass.services.call( - light.DOMAIN, const.SERVICE_TURN_OFF, - {const.ATTR_ENTITY_ID: 'light.ceiling_lights'}, - blocking=True) - ceiling_lights = self.hass.states.get('light.ceiling_lights') - self.assertEqual(ceiling_lights.state, STATE_OFF) +# pylint: disable=invalid-name +def perform_put_test_on_ceiling_lights(hass_hue, hue_client, + content_type='application/json'): + """Test the setting of a light.""" + # Turn the office light off first + yield from hass_hue.services.async_call( + light.DOMAIN, const.SERVICE_TURN_OFF, + {const.ATTR_ENTITY_ID: 'light.ceiling_lights'}, + blocking=True) - # Go through the API to turn it on - office_result = self.perform_put_light_state( - 'light.ceiling_lights', True, 56, content_type) + ceiling_lights = hass_hue.states.get('light.ceiling_lights') + assert ceiling_lights.state == STATE_OFF - office_result_json = office_result.json() + # Go through the API to turn it on + office_result = yield from perform_put_light_state( + hass_hue, hue_client, + 'light.ceiling_lights', True, 56, content_type) - self.assertEqual(office_result.status_code, 200) - self.assertTrue( - 'application/json' in office_result.headers['content-type']) + assert office_result.status == 200 + assert 'application/json' in office_result.headers['content-type'] - self.assertEqual(len(office_result_json), 2) + office_result_json = yield from office_result.json() - # Check to make sure the state changed - ceiling_lights = self.hass.states.get('light.ceiling_lights') - self.assertEqual(ceiling_lights.state, STATE_ON) - self.assertEqual(ceiling_lights.attributes[light.ATTR_BRIGHTNESS], 56) + assert len(office_result_json) == 2 - def perform_get_light_state(self, entity_id, expected_status): - """Test the gettting of a light state.""" - result = requests.get( - BRIDGE_URL_BASE.format( - '/api/username/lights/{}'.format(entity_id)), timeout=5) + # Check to make sure the state changed + ceiling_lights = hass_hue.states.get('light.ceiling_lights') + assert ceiling_lights.state == STATE_ON + assert ceiling_lights.attributes[light.ATTR_BRIGHTNESS] == 56 - self.assertEqual(result.status_code, expected_status) - if expected_status == 200: - self.assertTrue( - 'application/json' in result.headers['content-type']) +@asyncio.coroutine +def perform_get_light_state(client, entity_id, expected_status): + """Test the gettting of a light state.""" + result = yield from client.get('/api/username/lights/{}'.format(entity_id)) - return result.json() + assert result.status == expected_status - return None + if expected_status == 200: + assert 'application/json' in result.headers['content-type'] - # pylint: disable=no-self-use - def perform_put_light_state(self, entity_id, is_on, brightness=None, - content_type='application/json'): - """Test the setting of a light state.""" - url = BRIDGE_URL_BASE.format( - '/api/username/lights/{}/state'.format(entity_id)) + return (yield from result.json()) - req_headers = {'Content-Type': content_type} + return None - data = {HUE_API_STATE_ON: is_on} - if brightness is not None: - data[HUE_API_STATE_BRI] = brightness +@asyncio.coroutine +def perform_put_light_state(hass_hue, client, entity_id, is_on, + brightness=None, content_type='application/json'): + """Test the setting of a light state.""" + req_headers = {'Content-Type': content_type} - result = requests.put( - url, data=json.dumps(data), timeout=5, headers=req_headers) + data = {HUE_API_STATE_ON: is_on} - # Wait until state change is complete before continuing - self.hass.block_till_done() + if brightness is not None: + data[HUE_API_STATE_BRI] = brightness - return result + result = yield from client.put( + '/api/username/lights/{}/state'.format(entity_id), headers=req_headers, + data=json.dumps(data).encode()) + + # Wait until state change is complete before continuing + yield from hass_hue.async_block_till_done() + + return result From eb9b95c2922181b097258856af9bd2bc4d7a814e Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Wed, 11 Jan 2017 16:59:39 -0500 Subject: [PATCH 143/189] Convert flic to synchronous platform. (#5276) * Convert flic to synchronous platform. pyflic is a synchronous library * Move pyflic event loop to dedicated thread. --- .../components/binary_sensor/flic.py | 56 +++++++------------ 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/binary_sensor/flic.py b/homeassistant/components/binary_sensor/flic.py index 980af069f38..94a75fcda4b 100644 --- a/homeassistant/components/binary_sensor/flic.py +++ b/homeassistant/components/binary_sensor/flic.py @@ -1,6 +1,6 @@ """Contains functionality to use flic buttons as a binary sensor.""" -import asyncio import logging +import threading import voluptuous as vol @@ -10,7 +10,6 @@ from homeassistant.const import ( EVENT_HOMEASSISTANT_STOP) from homeassistant.components.binary_sensor import ( BinarySensorDevice, PLATFORM_SCHEMA) -from homeassistant.util.async import run_callback_threadsafe REQUIREMENTS = ['https://github.com/soldag/pyflic/archive/0.4.zip#pyflic==0.4'] @@ -43,9 +42,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -@asyncio.coroutine -def async_setup_platform(hass, config, async_add_entities, - discovery_info=None): +def setup_platform(hass, config, add_entities, discovery_info=None): """Setup the flic platform.""" import pyflic @@ -63,26 +60,29 @@ def async_setup_platform(hass, config, async_add_entities, def new_button_callback(address): """Setup newly verified button as device in home assistant.""" - hass.add_job(async_setup_button(hass, config, async_add_entities, - client, address)) + setup_button(hass, config, add_entities, client, address) client.on_new_verified_button = new_button_callback if discovery: - start_scanning(hass, config, async_add_entities, client) + start_scanning(config, add_entities, client) - hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, - lambda event: client.close()) - hass.loop.run_in_executor(None, client.handle_events) + hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, + lambda event: client.close()) + + # Start the pyflic event handling thread + threading.Thread(target=client.handle_events).start() + + def get_info_callback(items): + """Add entities for already verified buttons.""" + addresses = items["bd_addr_of_verified_buttons"] or [] + for address in addresses: + setup_button(hass, config, add_entities, client, address) # Get addresses of already verified buttons - addresses = yield from async_get_verified_addresses(client) - if addresses: - for address in addresses: - yield from async_setup_button(hass, config, async_add_entities, - client, address) + client.get_info(get_info_callback) -def start_scanning(hass, config, async_add_entities, client): +def start_scanning(config, add_entities, client): """Start a new flic client for scanning & connceting to new buttons.""" import pyflic @@ -97,36 +97,20 @@ def start_scanning(hass, config, async_add_entities, client): address, result) # Restart scan wizard - start_scanning(hass, config, async_add_entities, client) + start_scanning(config, add_entities, client) scan_wizard.on_completed = scan_completed_callback client.add_scan_wizard(scan_wizard) -@asyncio.coroutine -def async_setup_button(hass, config, async_add_entities, client, address): +def setup_button(hass, config, add_entities, client, address): """Setup single button device.""" timeout = config.get(CONF_TIMEOUT) ignored_click_types = config.get(CONF_IGNORED_CLICK_TYPES) button = FlicButton(hass, client, address, timeout, ignored_click_types) _LOGGER.info("Connected to button (%s)", address) - yield from async_add_entities([button]) - - -@asyncio.coroutine -def async_get_verified_addresses(client): - """Retrieve addresses of verified buttons.""" - future = asyncio.Future() - loop = asyncio.get_event_loop() - - def get_info_callback(items): - """Set the addressed of connected buttons as result of the future.""" - addresses = items["bd_addr_of_verified_buttons"] - run_callback_threadsafe(loop, future.set_result, addresses) - client.get_info(get_info_callback) - - return future + add_entities([button]) class FlicButton(BinarySensorDevice): From dc937cc8cffbb9ec2b4342d801f8d7332a8dd9cf Mon Sep 17 00:00:00 2001 From: pavoni <mail@gregdowling.com> Date: Wed, 11 Jan 2017 23:10:24 +0000 Subject: [PATCH 144/189] Bump pywemo version. --- homeassistant/components/wemo.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/wemo.py b/homeassistant/components/wemo.py index 71bb2984c7e..ba068905087 100644 --- a/homeassistant/components/wemo.py +++ b/homeassistant/components/wemo.py @@ -14,7 +14,7 @@ from homeassistant.helpers import config_validation as cv from homeassistant.const import EVENT_HOMEASSISTANT_STOP -REQUIREMENTS = ['pywemo==0.4.7'] +REQUIREMENTS = ['pywemo==0.4.9'] DOMAIN = 'wemo' diff --git a/requirements_all.txt b/requirements_all.txt index 78f0bba24e9..b4396128f81 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -527,7 +527,7 @@ pyvera==0.2.21 pywebpush==0.6.1 # homeassistant.components.wemo -pywemo==0.4.7 +pywemo==0.4.9 # homeassistant.components.light.yeelight pyyeelight==1.0-beta From 9a3c0c8cd3a06d118cfcf58d1078912e41f12f31 Mon Sep 17 00:00:00 2001 From: Greg Dowling <pavoni@users.noreply.github.com> Date: Thu, 12 Jan 2017 16:31:30 +0000 Subject: [PATCH 145/189] Don't build Adafruit_BBIO - doesn't work on all platforms. (#5281) * Don't build Adafruit_BBIO - doesn't work on all platforms. * Disable pylint import warning on BBIO. --- homeassistant/components/bbb_gpio.py | 13 +++++++++++-- requirements_all.txt | 2 +- script/gen_requirements_all.py | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/bbb_gpio.py b/homeassistant/components/bbb_gpio.py index e85c027882f..52ab14689fd 100644 --- a/homeassistant/components/bbb_gpio.py +++ b/homeassistant/components/bbb_gpio.py @@ -19,6 +19,7 @@ DOMAIN = 'bbb_gpio' # pylint: disable=no-member def setup(hass, config): """Setup the Beaglebone black GPIO component.""" + # pylint: disable=import-error import Adafruit_BBIO.GPIO as GPIO def cleanup_gpio(event): @@ -33,33 +34,41 @@ def setup(hass, config): return True +# noqa: F821 + def setup_output(pin): """Setup a GPIO as output.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.setup(pin, GPIO.OUT) def setup_input(pin, pull_mode): """Setup a GPIO as input.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO - GPIO.setup(pin, GPIO.IN, - GPIO.PUD_DOWN if pull_mode == 'DOWN' else GPIO.PUD_UP) + GPIO.setup(pin, GPIO.IN, # noqa: F821 + GPIO.PUD_DOWN if pull_mode == 'DOWN' # noqa: F821 + else GPIO.PUD_UP) # noqa: F821 def write_output(pin, value): """Write a value to a GPIO.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.output(pin, value) def read_input(pin): """Read a value from a GPIO.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO return GPIO.input(pin) def edge_detect(pin, event_callback, bounce): """Add detection for RISING and FALLING events.""" + # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.add_event_detect( pin, diff --git a/requirements_all.txt b/requirements_all.txt index b4396128f81..572865a285e 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -13,7 +13,7 @@ async_timeout==1.1.0 --only-binary=all http://github.com/getSenic/nuimo-linux-python/archive/29fc42987f74d8090d0e2382e8f248ff5990b8c9.zip#nuimo==1.0.0 # homeassistant.components.bbb_gpio -Adafruit_BBIO==1.0.0 +# Adafruit_BBIO==1.0.0 # homeassistant.components.isy994 PyISY==1.0.7 diff --git a/script/gen_requirements_all.py b/script/gen_requirements_all.py index f4258ea825b..0231e0d5177 100755 --- a/script/gen_requirements_all.py +++ b/script/gen_requirements_all.py @@ -10,6 +10,7 @@ COMMENT_REQUIREMENTS = ( 'RPi.GPIO', 'rpi-rf', 'Adafruit_Python_DHT', + 'Adafruit_BBIO', 'fritzconnection', 'pybluez', 'bluepy', From 64800fd48c02520b1f44be960dc8c539f82d1692 Mon Sep 17 00:00:00 2001 From: Pascal Bach <pasci.bach@gmail.com> Date: Thu, 12 Jan 2017 23:16:32 +0100 Subject: [PATCH 146/189] Upgrade distro to 1.0.2 (#5291) --- homeassistant/components/updater.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 requirements_all.txt diff --git a/homeassistant/components/updater.py b/homeassistant/components/updater.py index c05aedbb888..c8385c8aac0 100644 --- a/homeassistant/components/updater.py +++ b/homeassistant/components/updater.py @@ -22,7 +22,7 @@ from homeassistant.const import __version__ as CURRENT_VERSION from homeassistant.const import ATTR_FRIENDLY_NAME from homeassistant.helpers import event -REQUIREMENTS = ['distro==1.0.1'] +REQUIREMENTS = ['distro==1.0.2'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt old mode 100644 new mode 100755 index 572865a285e..536255460e2 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -90,7 +90,7 @@ denonavr==0.3.0 directpy==0.1 # homeassistant.components.updater -distro==1.0.1 +distro==1.0.2 # homeassistant.components.switch.digitalloggers dlipower==0.7.165 From d12decc4714cb61af58ab08581712b8be5367960 Mon Sep 17 00:00:00 2001 From: Pascal Bach <pasci.bach@gmail.com> Date: Thu, 12 Jan 2017 23:56:37 +0100 Subject: [PATCH 147/189] Upgrade to voluptuous to 0.9.3 (#5288) --- requirements_all.txt | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements_all.txt b/requirements_all.txt index 536255460e2..87f1ad221ab 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -4,7 +4,7 @@ pyyaml>=3.11,<4 pytz>=2016.10 pip>=7.0.0 jinja2>=2.8 -voluptuous==0.9.2 +voluptuous==0.9.3 typing>=3,<4 aiohttp==1.2 async_timeout==1.1.0 diff --git a/setup.py b/setup.py index d83fed1329b..4f223eb9b8a 100755 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ REQUIRES = [ 'pytz>=2016.10', 'pip>=7.0.0', 'jinja2>=2.8', - 'voluptuous==0.9.2', + 'voluptuous==0.9.3', 'typing>=3,<4', 'aiohttp==1.2', 'async_timeout==1.1.0', From f7a1d63d52dc7687a07cd2c52ef4e8e6894e45d9 Mon Sep 17 00:00:00 2001 From: William Scanlon <wjs.scanlon@gmail.com> Date: Thu, 12 Jan 2017 18:16:05 -0500 Subject: [PATCH 148/189] Support for TrackR device trackers (#5010) * Support for TrackR device trackers * Change small style for hass --- .coveragerc | 1 + .../components/device_tracker/trackr.py | 79 +++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 83 insertions(+) create mode 100644 homeassistant/components/device_tracker/trackr.py diff --git a/.coveragerc b/.coveragerc index 2822e4562a2..bc67b24d907 100644 --- a/.coveragerc +++ b/.coveragerc @@ -169,6 +169,7 @@ omit = homeassistant/components/device_tracker/thomson.py homeassistant/components/device_tracker/tomato.py homeassistant/components/device_tracker/tplink.py + homeassistant/components/device_tracker/trackr.py homeassistant/components/device_tracker/ubus.py homeassistant/components/device_tracker/volvooncall.py homeassistant/components/discovery.py diff --git a/homeassistant/components/device_tracker/trackr.py b/homeassistant/components/device_tracker/trackr.py new file mode 100644 index 00000000000..2eb0def278f --- /dev/null +++ b/homeassistant/components/device_tracker/trackr.py @@ -0,0 +1,79 @@ +""" +Support for the TrackR platform. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.trackr/ +""" +import logging + +import voluptuous as vol + +from homeassistant.components.device_tracker import PLATFORM_SCHEMA +from homeassistant.const import CONF_USERNAME, CONF_PASSWORD +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.event import track_utc_time_change + +_LOGGER = logging.getLogger(__name__) + +REQUIREMENTS = ['pytrackr==0.0.5'] + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string +}) + + +def setup_scanner(hass, config: dict, see): + """Validate the configuration and return a TrackR scanner.""" + TrackRDeviceScanner(hass, config, see) + return True + + +class TrackRDeviceScanner(object): + """A class representing a TrackR device.""" + + def __init__(self, hass, config: dict, see) -> None: + """Initialize the TrackR device scanner.""" + from pytrackr.api import trackrApiInterface + self.hass = hass + self.api = trackrApiInterface(config.get(CONF_USERNAME), + config.get(CONF_PASSWORD)) + self.see = see + self.devices = self.api.get_trackrs() + self._update_info() + + track_utc_time_change(self.hass, self._update_info, + second=range(0, 60, 30)) + + def _update_info(self, now=None) -> None: + """Update the device info.""" + _LOGGER.debug('Updating devices %s', now) + + # Update self.devices to collect new devices added + # to the users account. + self.devices = self.api.get_trackrs() + + for trackr in self.devices: + trackr.update_state() + trackr_id = trackr.tracker_id() + trackr_device_id = trackr.id() + lost = trackr.lost() + dev_id = trackr.name().replace(" ", "_") + if dev_id is None: + dev_id = trackr_id + location = trackr.last_known_location() + lat = location['latitude'] + lon = location['longitude'] + + attrs = { + 'last_updated': trackr.last_updated(), + 'last_seen': trackr.last_time_seen(), + 'trackr_id': trackr_id, + 'id': trackr_device_id, + 'lost': lost, + 'battery_level': trackr.battery_level() + } + + self.see( + dev_id=dev_id, gps=(lat, lon), attributes=attrs + ) diff --git a/requirements_all.txt b/requirements_all.txt index 87f1ad221ab..9e4a17198da 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -514,6 +514,9 @@ python-vlc==1.1.2 # homeassistant.components.wink python-wink==0.11.0 +# homeassistant.components.device_tracker.trackr +pytrackr==0.0.5 + # homeassistant.components.device_tracker.unifi pyunifi==1.3 From baa8e53e66167a1fb0f9d090f28325454ad3d4ef Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Fri, 13 Jan 2017 12:29:20 +0100 Subject: [PATCH 149/189] Bugfix group reload (#5292) * Bugfix group / hit update * try to fix round 2 * Convert it to coro * Don't check statemachine, check unsub listener. --- homeassistant/components/group.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/group.py b/homeassistant/components/group.py index 0dfabdd8a35..25aa263d262 100644 --- a/homeassistant/components/group.py +++ b/homeassistant/components/group.py @@ -359,14 +359,16 @@ class Group(Entity): """Start tracking members.""" run_callback_threadsafe(self.hass.loop, self.async_start).result() + @callback def async_start(self): """Start tracking members. This method must be run in the event loop. """ - self._async_unsub_state_changed = async_track_state_change( - self.hass, self.tracking, self._state_changed_listener - ) + if self._async_unsub_state_changed is None: + self._async_unsub_state_changed = async_track_state_change( + self.hass, self.tracking, self._async_state_changed_listener + ) def stop(self): """Unregister the group from Home Assistant.""" @@ -392,20 +394,24 @@ class Group(Entity): This method must be run in the event loop. """ - yield from super().async_remove() - if self._async_unsub_state_changed: self._async_unsub_state_changed() self._async_unsub_state_changed = None - @callback - def _state_changed_listener(self, entity_id, old_state, new_state): + yield from super().async_remove() + + @asyncio.coroutine + def _async_state_changed_listener(self, entity_id, old_state, new_state): """Respond to a member state changing. This method must be run in the event loop. """ + # removed + if self._async_unsub_state_changed is None: + return + self._async_update_group_state(new_state) - self.hass.async_add_job(self.async_update_ha_state()) + yield from self.async_update_ha_state() @property def _tracking_states(self): From 1219ca3c3bc083c8f919c4db7eb3670686e52861 Mon Sep 17 00:00:00 2001 From: Thom Troy <ttroy50@gmail.com> Date: Fri, 13 Jan 2017 17:15:46 +0000 Subject: [PATCH 150/189] [sensor] Add Dublin bus RTPI sensor (#5257) --- .coveragerc | 1 + .../components/sensor/dublin_bus_transport.py | 184 ++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 homeassistant/components/sensor/dublin_bus_transport.py diff --git a/.coveragerc b/.coveragerc index bc67b24d907..aa5921526de 100644 --- a/.coveragerc +++ b/.coveragerc @@ -266,6 +266,7 @@ omit = homeassistant/components/sensor/bitcoin.py homeassistant/components/sensor/bom.py homeassistant/components/sensor/broadlink.py + homeassistant/components/sensor/dublin_bus_transport.py homeassistant/components/sensor/coinmarketcap.py homeassistant/components/sensor/cpuspeed.py homeassistant/components/sensor/cups.py diff --git a/homeassistant/components/sensor/dublin_bus_transport.py b/homeassistant/components/sensor/dublin_bus_transport.py new file mode 100644 index 00000000000..10d2c2b39f0 --- /dev/null +++ b/homeassistant/components/sensor/dublin_bus_transport.py @@ -0,0 +1,184 @@ +"""Support for Dublin RTPI information from data.dublinked.ie. + +For more info on the API see : +https://data.gov.ie/dataset/real-time-passenger-information-rtpi-for-dublin-bus-bus-eireann-luas-and-irish-rail/resource/4b9f2c4f-6bf5-4958-a43a-f12dab04cf61 + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.dublin_public_transport/ +""" +import logging +from datetime import timedelta, datetime + +import requests +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import CONF_NAME, ATTR_ATTRIBUTION +import homeassistant.util.dt as dt_util +from homeassistant.helpers.entity import Entity +from homeassistant.util import Throttle +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) +_RESOURCE = 'https://data.dublinked.ie/cgi-bin/rtpi/realtimebusinformation' + +ATTR_STOP_ID = "Stop ID" +ATTR_ROUTE = "Route" +ATTR_DUE_IN = "Due in" +ATTR_DUE_AT = "Due at" +ATTR_NEXT_UP = "Later Bus" + +CONF_ATTRIBUTION = "Data provided by data.dublinked.ie" +CONF_STOP_ID = 'stopid' +CONF_ROUTE = 'route' + +DEFAULT_NAME = 'Next Bus' +ICON = 'mdi:bus' + +MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) +TIME_STR_FORMAT = "%H:%M" + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_STOP_ID): cv.string, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_ROUTE, default=""): cv.string, +}) + + +def due_in_minutes(timestamp): + """Get the time in minutes from a timestamp. + + The timestamp should be in the format day/month/year hour/minute/second + """ + diff = datetime.strptime( + timestamp, "%d/%m/%Y %H:%M:%S") - dt_util.now().replace(tzinfo=None) + + return str(int(diff.total_seconds() / 60)) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Get the Dublin public transport sensor.""" + name = config.get(CONF_NAME) + stop = config.get(CONF_STOP_ID) + route = config.get(CONF_ROUTE) + + data = PublicTransportData(stop, route) + add_devices([DublinPublicTransportSensor(data, stop, route, name)]) + + +class DublinPublicTransportSensor(Entity): + """Implementation of an Dublin public transport sensor.""" + + def __init__(self, data, stop, route, name): + """Initialize the sensor.""" + self.data = data + self._name = name + self._stop = stop + self._route = route + self.update() + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def device_state_attributes(self): + """Return the state attributes.""" + if self._times is not None: + next_up = "None" + if len(self._times) > 1: + next_up = self._times[1][ATTR_ROUTE] + " in " + next_up += self._times[1][ATTR_DUE_IN] + + return { + ATTR_DUE_IN: self._times[0][ATTR_DUE_IN], + ATTR_DUE_AT: self._times[0][ATTR_DUE_AT], + ATTR_STOP_ID: self._stop, + ATTR_ROUTE: self._times[0][ATTR_ROUTE], + ATTR_ATTRIBUTION: CONF_ATTRIBUTION, + ATTR_NEXT_UP: next_up + } + + @property + def unit_of_measurement(self): + """Return the unit this state is expressed in.""" + return "min" + + @property + def icon(self): + """Icon to use in the frontend, if any.""" + return ICON + + def update(self): + """Get the latest data from opendata.ch and update the states.""" + self.data.update() + self._times = self.data.info + try: + self._state = self._times[0][ATTR_DUE_IN] + except TypeError: + pass + + +class PublicTransportData(object): + """The Class for handling the data retrieval.""" + + def __init__(self, stop, route): + """Initialize the data object.""" + self.stop = stop + self.route = route + self.info = [{ATTR_DUE_AT: 'n/a', + ATTR_ROUTE: self.route, + ATTR_DUE_IN: 'n/a'}] + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """Get the latest data from opendata.ch.""" + params = {} + params['stopid'] = self.stop + + if len(self.route) > 0: + params['routeid'] = self.route + + params['maxresults'] = 2 + params['format'] = 'json' + + response = requests.get( + _RESOURCE, + params, + timeout=10) + + if response.status_code != 200: + self.info = [{ATTR_DUE_AT: 'n/a', + ATTR_ROUTE: self.route, + ATTR_DUE_IN: 'n/a'}] + return + + result = response.json() + + if str(result['errorcode']) != '0': + self.info = [{ATTR_DUE_AT: 'n/a', + ATTR_ROUTE: self.route, + ATTR_DUE_IN: 'n/a'}] + return + + self.info = [] + for item in result['results']: + due_at = item.get('departuredatetime') + route = item.get('route') + if due_at is not None and route is not None: + bus_data = {ATTR_DUE_AT: due_at, + ATTR_ROUTE: route, + ATTR_DUE_IN: + due_in_minutes(due_at)} + self.info.append(bus_data) + + if len(self.info) == 0: + self.info = [{ATTR_DUE_AT: 'n/a', + ATTR_ROUTE: self.route, + ATTR_DUE_IN: 'n/a'}] From a30711f1a0e2d4a286799d714fe59ff147883fab Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Fri, 13 Jan 2017 21:22:09 +0100 Subject: [PATCH 151/189] Update pyhomematic 1.19 & small cleanups (#5299) --- homeassistant/components/homematic.py | 28 +++++++++++++-------------- requirements_all.txt | 2 +- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 004a0c6dbfb..6e3f38eaab8 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -23,10 +23,10 @@ from homeassistant.config import load_yaml_config_file from homeassistant.util import Throttle DOMAIN = 'homematic' -REQUIREMENTS = ["pyhomematic==0.1.18"] +REQUIREMENTS = ["pyhomematic==0.1.19"] MIN_TIME_BETWEEN_UPDATE_HUB = timedelta(seconds=300) -MIN_TIME_BETWEEN_UPDATE_VAR = timedelta(seconds=30) +SCAN_INTERVAL = timedelta(seconds=30) DISCOVER_SWITCHES = 'homematic.switch' DISCOVER_LIGHTS = 'homematic.light' @@ -54,16 +54,17 @@ SERVICE_SET_DEV_VALUE = 'set_dev_value' HM_DEVICE_TYPES = { DISCOVER_SWITCHES: [ 'Switch', 'SwitchPowermeter', 'IOSwitch', 'IPSwitch', - 'IPSwitchPowermeter', 'KeyMatic'], + 'IPSwitchPowermeter', 'KeyMatic', 'HMWIOSwitch'], DISCOVER_LIGHTS: ['Dimmer', 'KeyDimmer'], DISCOVER_SENSORS: [ - 'SwitchPowermeter', 'Motion', 'MotionV2', 'RemoteMotion', + 'SwitchPowermeter', 'Motion', 'MotionV2', 'RemoteMotion', 'MotionIP', 'ThermostatWall', 'AreaThermostat', 'RotaryHandleSensor', 'WaterSensor', 'PowermeterGas', 'LuxSensor', 'WeatherSensor', 'WeatherStation', 'ThermostatWall2', 'TemperatureDiffSensor', 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter'], DISCOVER_CLIMATE: [ - 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2'], + 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2', + 'MAXWallThermostat'], DISCOVER_BINARY_SENSORS: [ 'ShutterContact', 'Smoke', 'SmokeV2', 'Motion', 'MotionV2', 'RemoteMotion', 'WeatherSensor', 'TiltSensor', 'IPShutterContact'], @@ -234,7 +235,7 @@ def setup(hass, config): """Setup the Homematic component.""" from pyhomematic import HMConnection - component = EntityComponent(_LOGGER, DOMAIN, hass) + component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) hass.data[DATA_DELAY] = config[DOMAIN].get(CONF_DELAY) hass.data[DATA_DEVINIT] = {} @@ -461,9 +462,7 @@ def _get_devices(hass, device_type, keys, proxy): _LOGGER.debug("Handling %s: %s", param, channels) for channel in channels: name = _create_ha_name( - name=device.NAME, - channel=channel, - param=param, + name=device.NAME, channel=channel, param=param, count=len(channels) ) device_dict = { @@ -623,7 +622,6 @@ class HMHub(Entity): state = self._homematic.getServiceMessages(self._name) self._state = STATE_UNKNOWN if state is None else len(state) - @Throttle(MIN_TIME_BETWEEN_UPDATE_VAR) def _update_variables_state(self): """Retrive all variable data and update hmvariable states.""" if not self._use_variables: @@ -855,11 +853,11 @@ class HMDevice(Entity): # Set callbacks for channel in channels_to_sub: - _LOGGER.debug("Subscribe channel %s from %s", - str(channel), self._name) - self._hmdevice.setEventCallback(callback=self._hm_event_callback, - bequeath=False, - channel=channel) + _LOGGER.debug( + "Subscribe channel %s from %s", str(channel), self._name) + self._hmdevice.setEventCallback( + callback=self._hm_event_callback, bequeath=False, + channel=channel) def _load_data_from_hm(self): """Load first value from pyhomematic.""" diff --git a/requirements_all.txt b/requirements_all.txt index 9e4a17198da..2aa05ef906c 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -425,7 +425,7 @@ pyharmony==1.0.12 pyhik==0.0.7 # homeassistant.components.homematic -pyhomematic==0.1.18 +pyhomematic==0.1.19 # homeassistant.components.device_tracker.icloud pyicloud==0.9.1 From 2c3f55acc4cc8890e54bf6a94f5a960eee28c486 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Fri, 13 Jan 2017 22:39:42 +0100 Subject: [PATCH 152/189] Add HMWIOSwitch to sensor, binary (#5304) --- homeassistant/components/homematic.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 6e3f38eaab8..7f2f8b813a4 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -61,13 +61,14 @@ HM_DEVICE_TYPES = { 'ThermostatWall', 'AreaThermostat', 'RotaryHandleSensor', 'WaterSensor', 'PowermeterGas', 'LuxSensor', 'WeatherSensor', 'WeatherStation', 'ThermostatWall2', 'TemperatureDiffSensor', - 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter'], + 'TemperatureSensor', 'CO2Sensor', 'IPSwitchPowermeter', 'HMWIOSwitch'], DISCOVER_CLIMATE: [ 'Thermostat', 'ThermostatWall', 'MAXThermostat', 'ThermostatWall2', 'MAXWallThermostat'], DISCOVER_BINARY_SENSORS: [ 'ShutterContact', 'Smoke', 'SmokeV2', 'Motion', 'MotionV2', - 'RemoteMotion', 'WeatherSensor', 'TiltSensor', 'IPShutterContact'], + 'RemoteMotion', 'WeatherSensor', 'TiltSensor', 'IPShutterContact', + 'HMWIOSwitch'], DISCOVER_COVER: ['Blind', 'KeyBlind'] } From 6000c59bb559b8e37553b3f0def79c2bd84f2af2 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny <me@robbiet.us> Date: Fri, 13 Jan 2017 14:02:00 -0800 Subject: [PATCH 153/189] Remove GTFS default name & string change --- homeassistant/components/sensor/gtfs.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensor/gtfs.py b/homeassistant/components/sensor/gtfs.py index 5769860284c..2726f1f579f 100644 --- a/homeassistant/components/sensor/gtfs.py +++ b/homeassistant/components/sensor/gtfs.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_ORIGIN): cv.string, vol.Required(CONF_DESTINATION): cv.string, vol.Required(CONF_DATA): cv.string, - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_NAME): cv.string, }) @@ -226,9 +226,9 @@ class GTFSDepartureSensor(Entity): self.destination) if not self._departure: self._state = 0 - self._attributes = {'Info': 'No more bus today'} + self._attributes = {'Info': 'No more departures today'} if self._name == '': - self._name = (self._custom_name or "GTFS Sensor") + self._name = (self._custom_name or DEFAULT_NAME) return self._state = self._departure['minutes_until_departure'] From 6abad6b76e610b1bfb13f3f9342a2a0a53971fcf Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Fri, 13 Jan 2017 18:16:38 -0500 Subject: [PATCH 154/189] Version bump for kodi dependency (#5307) Catches timeout exceptions --- homeassistant/components/media_player/kodi.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index 54b95deee47..8cfa7a587fb 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -21,7 +21,7 @@ from homeassistant.const import ( from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['jsonrpc-async==0.1'] +REQUIREMENTS = ['jsonrpc-async==0.2'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 2aa05ef906c..5a4ef5a2736 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -278,7 +278,7 @@ insteon_hub==0.4.5 insteonlocal==0.39 # homeassistant.components.media_player.kodi -jsonrpc-async==0.1 +jsonrpc-async==0.2 # homeassistant.components.notify.kodi jsonrpc-requests==0.3 From 4b43537801a5c088329f6b12c99c95fdb2eb0e9c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 00:57:38 +0100 Subject: [PATCH 155/189] Bugfix camera streams (#5306) * fix mjpeg streams * fix trow error on close by frontend * fix ffmpeg --- homeassistant/components/camera/ffmpeg.py | 10 ++++++++-- homeassistant/components/camera/mjpeg.py | 6 +++++- homeassistant/components/camera/synology.py | 6 +++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/camera/ffmpeg.py b/homeassistant/components/camera/ffmpeg.py index bb7c7ac6cdc..9c1aaa25f6f 100644 --- a/homeassistant/components/camera/ffmpeg.py +++ b/homeassistant/components/camera/ffmpeg.py @@ -84,9 +84,15 @@ class FFmpegCamera(Camera): if not data: break response.write(data) + + except asyncio.CancelledError: + _LOGGER.debug("Close stream by browser.") + response = None + finally: - self.hass.async_add_job(stream.close()) - yield from response.write_eof() + yield from stream.close() + if response is not None: + yield from response.write_eof() @property def name(self): diff --git a/homeassistant/components/camera/mjpeg.py b/homeassistant/components/camera/mjpeg.py index d3af55a91f1..4bc62d66143 100644 --- a/homeassistant/components/camera/mjpeg.py +++ b/homeassistant/components/camera/mjpeg.py @@ -124,9 +124,13 @@ class MjpegCamera(Camera): except asyncio.TimeoutError: raise HTTPGatewayTimeout() + except asyncio.CancelledError: + _LOGGER.debug("Close stream by browser.") + response = None + finally: if stream is not None: - yield from stream.close() + stream.close() if response is not None: yield from response.write_eof() diff --git a/homeassistant/components/camera/synology.py b/homeassistant/components/camera/synology.py index 6d5b4546933..d7359c14ded 100644 --- a/homeassistant/components/camera/synology.py +++ b/homeassistant/components/camera/synology.py @@ -276,9 +276,13 @@ class SynologyCamera(Camera): _LOGGER.exception("Error on %s", streaming_url) raise HTTPGatewayTimeout() + except asyncio.CancelledError: + _LOGGER.debug("Close stream by browser.") + response = None + finally: if stream is not None: - self.hass.async_add_job(stream.release()) + stream.close() if response is not None: yield from response.write_eof() From 5f7d53c06b2850d7be9fe329f28bd4f7430dfdcd Mon Sep 17 00:00:00 2001 From: Dan Cinnamon <Cinntax@users.noreply.github.com> Date: Fri, 13 Jan 2017 23:02:33 -0600 Subject: [PATCH 156/189] Bump pyenvisalink to version 2.0 (#5311) --- homeassistant/components/envisalink.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/envisalink.py b/homeassistant/components/envisalink.py index 29ce08b2f0a..2c101a227cf 100644 --- a/homeassistant/components/envisalink.py +++ b/homeassistant/components/envisalink.py @@ -12,7 +12,7 @@ from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.helpers.entity import Entity from homeassistant.components.discovery import load_platform -REQUIREMENTS = ['pyenvisalink==1.9', 'pydispatcher==2.0.5'] +REQUIREMENTS = ['pyenvisalink==2.0', 'pydispatcher==2.0.5'] _LOGGER = logging.getLogger(__name__) DOMAIN = 'envisalink' diff --git a/requirements_all.txt b/requirements_all.txt index 5a4ef5a2736..50f940af906 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -413,7 +413,7 @@ pydispatcher==2.0.5 pyemby==0.2 # homeassistant.components.envisalink -pyenvisalink==1.9 +pyenvisalink==2.0 # homeassistant.components.ifttt pyfttt==0.3 From a7cb9bdfff48b2a6ae2bd1036a99d7c09451c46e Mon Sep 17 00:00:00 2001 From: Martin Rowan <martin@rowannet.co.uk> Date: Sat, 14 Jan 2017 05:03:50 +0000 Subject: [PATCH 157/189] Fixed bootstrap to upgrade pip if mininum version not present. As parameter --only-binary in requirements.txt doesn't work on pip < 7.0.0 so install fails. This is to simplify the setup of the development environment when using pyvenv. (#5301) --- script/bootstrap_server | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/script/bootstrap_server b/script/bootstrap_server index ccb7d1a8464..38684f9266c 100755 --- a/script/bootstrap_server +++ b/script/bootstrap_server @@ -7,11 +7,19 @@ set -e cd "$(dirname "$0")/.." echo "Installing dependencies..." +# Requirements_all.txt states minimum pip version as 7.0.0 however, +# parameter --only-binary doesn't work with pip < 7.0.0. Causing +# python3 -m pip install -r requirements_all.txt to fail unless pip upgraded. + +if ! python3 -c 'import pkg_resources ; pkg_resources.require(["pip>=7.0.0"])' 2>/dev/null ; then + echo "Upgrading pip..." + python3 -m pip install -U pip +fi python3 -m pip install -r requirements_all.txt REQ_STATUS=$? -echo "Installing development dependencies.." +echo "Installing development dependencies..." python3 -m pip install -r requirements_test.txt REQ_DEV_STATUS=$? From 0cf3c22da0cae140eed50ec17d9ac26d40c55e29 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 06:09:02 +0100 Subject: [PATCH 158/189] Bugfix media_player volume_ up and down (#5282) * Bugfix media_player volume_ up and down * fix lint * make a coro --- .../components/media_player/__init__.py | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 1be94976d49..2a1e5e68779 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -748,29 +748,33 @@ class MediaPlayerDevice(Entity): else: return self.async_turn_off() - def volume_up(self): - """Turn volume up for media player.""" - if self.volume_level < 1: - self.set_volume_level(min(1, self.volume_level + .1)) - + @asyncio.coroutine def async_volume_up(self): """Turn volume up for media player. - This method must be run in the event loop and returns a coroutine. + This method is a coroutine. """ - return self.hass.loop.run_in_executor(None, self.volume_up) + if hasattr(self, 'volume_up'): + # pylint: disable=no-member + yield from self.hass.run_in_executor(None, self.volume_up) - def volume_down(self): - """Turn volume down for media player.""" - if self.volume_level > 0: - self.set_volume_level(max(0, self.volume_level - .1)) + if self.volume_level < 1: + yield from self.async_set_volume_level( + min(1, self.volume_level + .1)) + @asyncio.coroutine def async_volume_down(self): """Turn volume down for media player. - This method must be run in the event loop and returns a coroutine. + This method is a coroutine. """ - return self.hass.loop.run_in_executor(None, self.volume_down) + if hasattr(self, 'volume_down'): + # pylint: disable=no-member + yield from self.hass.run_in_executor(None, self.volume_down) + + if self.volume_level > 0: + yield from self.async_set_volume_level( + max(0, self.volume_level - .1)) def media_play_pause(self): """Play or pause the media player.""" From b67cce7215fb9ed170352a93c870cdca8bf4d9bd Mon Sep 17 00:00:00 2001 From: Johann Kellerman <kellerza@gmail.com> Date: Sat, 14 Jan 2017 07:13:17 +0200 Subject: [PATCH 159/189] Add correct line numbers for yaml include directives (#5303) --- homeassistant/bootstrap.py | 2 +- homeassistant/util/yaml.py | 45 +++++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 3d03336c0fe..3b0a900d51e 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -606,7 +606,7 @@ def async_log_exception(ex, domain, config, hass): message += '{}.'.format(humanize_error(config, ex)) domain_config = config.get(domain, config) - message += " (See {}:{}). ".format( + message += " (See {}, line {}). ".format( getattr(domain_config, '__config_file__', '?'), getattr(domain_config, '__line__', '?')) diff --git a/homeassistant/util/yaml.py b/homeassistant/util/yaml.py index 1307cc1a287..64b63b31ca6 100644 --- a/homeassistant/util/yaml.py +++ b/homeassistant/util/yaml.py @@ -20,6 +20,27 @@ _SECRET_YAML = 'secrets.yaml' __SECRET_CACHE = {} # type: Dict +def _add_reference(obj, loader, node): + """Add file reference information to an object.""" + class NodeListClass(list): + """Wrapper class to be able to add attributes on a list.""" + + pass + + class NodeStrClass(str): + """Wrapper class to be able to add attributes on a string.""" + + pass + + if isinstance(obj, list): + obj = NodeListClass(obj) + if isinstance(obj, str): + obj = NodeStrClass(obj) + setattr(obj, '__config_file__', loader.name) + setattr(obj, '__line__', node.start_mark.line) + return obj + + # pylint: disable=too-many-ancestors class SafeLineLoader(yaml.SafeLoader): """Loader class that keeps track of line numbers.""" @@ -70,7 +91,7 @@ def _include_yaml(loader: SafeLineLoader, device_tracker: !include device_tracker.yaml """ fname = os.path.join(os.path.dirname(loader.name), node.value) - return load_yaml(fname) + return _add_reference(load_yaml(fname), loader, node) def _is_file_valid(name: str) -> bool: @@ -96,7 +117,7 @@ def _include_dir_named_yaml(loader: SafeLineLoader, for fname in _find_files(loc, '*.yaml'): filename = os.path.splitext(os.path.basename(fname))[0] mapping[filename] = load_yaml(fname) - return mapping + return _add_reference(mapping, loader, node) def _include_dir_merge_named_yaml(loader: SafeLineLoader, @@ -110,7 +131,7 @@ def _include_dir_merge_named_yaml(loader: SafeLineLoader, loaded_yaml = load_yaml(fname) if isinstance(loaded_yaml, dict): mapping.update(loaded_yaml) - return mapping + return _add_reference(mapping, loader, node) def _include_dir_list_yaml(loader: SafeLineLoader, @@ -133,7 +154,7 @@ def _include_dir_merge_list_yaml(loader: SafeLineLoader, loaded_yaml = load_yaml(fname) if isinstance(loaded_yaml, list): merged_list.extend(loaded_yaml) - return merged_list + return _add_reference(merged_list, loader, node) def _ordered_dict(loader: SafeLineLoader, @@ -165,25 +186,13 @@ def _ordered_dict(loader: SafeLineLoader, ) seen[key] = line - processed = OrderedDict(nodes) - setattr(processed, '__config_file__', loader.name) - setattr(processed, '__line__', node.start_mark.line) - return processed + return _add_reference(OrderedDict(nodes), loader, node) def _construct_seq(loader: SafeLineLoader, node: yaml.nodes.Node): """Add line number and file name to Load YAML sequence.""" obj, = loader.construct_yaml_seq(node) - - class NodeClass(list): - """Wrapper class to be able to add attributes on a list.""" - - pass - - processed = NodeClass(obj) - setattr(processed, '__config_file__', loader.name) - setattr(processed, '__line__', node.start_mark.line) - return processed + return _add_reference(obj, loader, node) def _env_var_yaml(loader: SafeLineLoader, From 394b52b9e8f8d0e88c6de4d30813c593ab85e699 Mon Sep 17 00:00:00 2001 From: Touliloup <romain.rinie@xcom.de> Date: Sat, 14 Jan 2017 06:24:58 +0100 Subject: [PATCH 160/189] Xiaomi device tracker (#5283) * [Device Tracker] Xiaomi Mi Router integration as device tracker This device tracker allow to track device connected to Xiaomi Router. Parameter: host, username (default admin) and password. * [Device Tracker] Addition of Xiaomi device tracker file in coverage --- .coveragerc | 1 + README.rst | 3 +- .../components/device_tracker/xiaomi.py | 145 ++++++++++++ .../components/device_tracker/test_xiaomi.py | 221 ++++++++++++++++++ 4 files changed, 369 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/device_tracker/xiaomi.py create mode 100644 tests/components/device_tracker/test_xiaomi.py diff --git a/.coveragerc b/.coveragerc index aa5921526de..74faed07c4a 100644 --- a/.coveragerc +++ b/.coveragerc @@ -172,6 +172,7 @@ omit = homeassistant/components/device_tracker/trackr.py homeassistant/components/device_tracker/ubus.py homeassistant/components/device_tracker/volvooncall.py + homeassistant/components/device_tracker/xiaomi.py homeassistant/components/discovery.py homeassistant/components/downloader.py homeassistant/components/emoncms_history.py diff --git a/README.rst b/README.rst index 43517760ed7..1e25b6dcc90 100644 --- a/README.rst +++ b/README.rst @@ -26,7 +26,8 @@ Examples of devices Home Assistant can interface with: `Netgear <http://netgear.com>`__, `DD-WRT <http://www.dd-wrt.com/site/index>`__, `TPLink <http://www.tp-link.us/>`__, - `ASUSWRT <http://event.asus.com/2013/nw/ASUSWRT/>`__ and any SNMP + `ASUSWRT <http://event.asus.com/2013/nw/ASUSWRT/>`__, + `Xiaomi <http://miwifi.com/>`__ and any SNMP capable Linksys WAP/WRT - `Philips Hue <http://meethue.com>`__ lights, `WeMo <http://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/>`__ diff --git a/homeassistant/components/device_tracker/xiaomi.py b/homeassistant/components/device_tracker/xiaomi.py new file mode 100644 index 00000000000..ff53d1fe99f --- /dev/null +++ b/homeassistant/components/device_tracker/xiaomi.py @@ -0,0 +1,145 @@ +""" +Support for Xiaomi Mi routers. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/device_tracker.xiaomi/ +""" +import logging +import threading +from datetime import timedelta + +import requests +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.device_tracker import ( + DOMAIN, PLATFORM_SCHEMA, DeviceScanner) +from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME +from homeassistant.util import Throttle + +# Return cached results if last scan was less then this time ago. +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) + +_LOGGER = logging.getLogger(__name__) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): cv.string, + vol.Required(CONF_USERNAME, default='admin'): cv.string, + vol.Required(CONF_PASSWORD): cv.string +}) + + +def get_scanner(hass, config): + """Validate the configuration and return a Xiaomi Device Scanner.""" + scanner = XioamiDeviceScanner(config[DOMAIN]) + + return scanner if scanner.success_init else None + + +class XioamiDeviceScanner(DeviceScanner): + """This class queries a Xiaomi Mi router. + + Adapted from Luci scanner. + """ + + def __init__(self, config): + """Initialize the scanner.""" + host = config[CONF_HOST] + username, password = config[CONF_USERNAME], config[CONF_PASSWORD] + + self.lock = threading.Lock() + + self.last_results = {} + self.token = _get_token(host, username, password) + + self.host = host + + self.mac2name = None + self.success_init = self.token is not None + + def scan_devices(self): + """Scan for new devices and return a list with found device IDs.""" + self._update_info() + return self.last_results + + def get_device_name(self, device): + """Return the name of the given device or None if we don't know.""" + with self.lock: + if self.mac2name is None: + url = "http://{}/cgi-bin/luci/;stok={}/api/misystem/devicelist" + url = url.format(self.host, self.token) + result = _get_device_list(url) + if result: + hosts = [x for x in result + if 'mac' in x and 'name' in x] + mac2name_list = [ + (x['mac'].upper(), x['name']) for x in hosts] + self.mac2name = dict(mac2name_list) + else: + # Error, handled in the _req_json_rpc + return + return self.mac2name.get(device.upper(), None) + + @Throttle(MIN_TIME_BETWEEN_SCANS) + def _update_info(self): + """Ensure the informations from the router are up to date. + + Returns true if scanning successful. + """ + if not self.success_init: + return False + + with self.lock: + _LOGGER.info('Refreshing device list') + url = "http://{}/cgi-bin/luci/;stok={}/api/misystem/devicelist" + url = url.format(self.host, self.token) + result = _get_device_list(url) + if result: + self.last_results = [] + for device_entry in result: + # Check if the device is marked as connected + if int(device_entry['online']) == 1: + self.last_results.append(device_entry['mac']) + + return True + + return False + + +def _get_device_list(url, **kwargs): + try: + res = requests.get(url, timeout=5, **kwargs) + except requests.exceptions.Timeout: + _LOGGER.exception('Connection to the router timed out') + return + return _extract_result(res, 'list') + + +def _get_token(host, username, password): + """Get authentication token for the given host+username+password.""" + url = 'http://{}/cgi-bin/luci/api/xqsystem/login'.format(host) + data = {'username': username, 'password': password} + try: + res = requests.post(url, data=data, timeout=5) + except requests.exceptions.Timeout: + _LOGGER.exception('Connection to the router timed out') + return + return _extract_result(res, 'token') + + +def _extract_result(res, key_name): + if res.status_code == 200: + try: + result = res.json() + except ValueError: + # If json decoder could not parse the response + _LOGGER.exception('Failed to parse response from mi router') + return + try: + return result[key_name] + except KeyError: + _LOGGER.exception('No %s in response from mi router. %s', + key_name, result) + return + else: + _LOGGER.error('Invalid response from mi router: %s', res) diff --git a/tests/components/device_tracker/test_xiaomi.py b/tests/components/device_tracker/test_xiaomi.py new file mode 100644 index 00000000000..482ed7c0c0d --- /dev/null +++ b/tests/components/device_tracker/test_xiaomi.py @@ -0,0 +1,221 @@ +"""The tests for the Xiaomi router device tracker platform.""" +import logging +import unittest +from unittest import mock +from unittest.mock import patch + +import requests + +from homeassistant.components.device_tracker import DOMAIN, xiaomi as xiaomi +from homeassistant.components.device_tracker.xiaomi import get_scanner +from homeassistant.const import (CONF_HOST, CONF_USERNAME, CONF_PASSWORD, + CONF_PLATFORM) +from tests.common import get_test_home_assistant + +_LOGGER = logging.getLogger(__name__) + +INVALID_USERNAME = 'bob' +URL_AUTHORIZE = 'http://192.168.0.1/cgi-bin/luci/api/xqsystem/login' +URL_LIST_END = 'api/misystem/devicelist' + + +def mocked_requests(*args, **kwargs): + """Mock requests.get invocations.""" + class MockResponse: + """Class to represent a mocked response.""" + + def __init__(self, json_data, status_code): + """Initialize the mock response class.""" + self.json_data = json_data + self.status_code = status_code + + def json(self): + """Return the json of the response.""" + return self.json_data + + @property + def content(self): + """Return the content of the response.""" + return self.json() + + def raise_for_status(self): + """Raise an HTTPError if status is not 200.""" + if self.status_code != 200: + raise requests.HTTPError(self.status_code) + + data = kwargs.get('data') + + if data and data.get('username', None) == INVALID_USERNAME: + return MockResponse({ + "code": "401", + "msg": "Invalid token" + }, 200) + elif str(args[0]).startswith(URL_AUTHORIZE): + print("deliver authorized") + return MockResponse({ + "url": "/cgi-bin/luci/;stok=ef5860/web/home", + "token": "ef5860", + "code": "0" + }, 200) + elif str(args[0]).endswith(URL_LIST_END): + return MockResponse({ + "mac": "1C:98:EC:0E:D5:A4", + "list": [ + { + "mac": "23:83:BF:F6:38:A0", + "oname": "12255ff", + "isap": 0, + "parent": "", + "authority": { + "wan": 1, + "pridisk": 0, + "admin": 1, + "lan": 0 + }, + "push": 0, + "online": 1, + "name": "Device1", + "times": 0, + "ip": [ + { + "downspeed": "0", + "online": "496957", + "active": 1, + "upspeed": "0", + "ip": "192.168.0.25" + } + ], + "statistics": { + "downspeed": "0", + "online": "496957", + "upspeed": "0" + }, + "icon": "", + "type": 1 + }, + { + "mac": "1D:98:EC:5E:D5:A6", + "oname": "CdddFG58", + "isap": 0, + "parent": "", + "authority": { + "wan": 1, + "pridisk": 0, + "admin": 1, + "lan": 0 + }, + "push": 0, + "online": 1, + "name": "Device2", + "times": 0, + "ip": [ + { + "downspeed": "0", + "online": "347325", + "active": 1, + "upspeed": "0", + "ip": "192.168.0.3" + } + ], + "statistics": { + "downspeed": "0", + "online": "347325", + "upspeed": "0" + }, + "icon": "", + "type": 0 + }, + ], + "code": 0 + }, 200) + else: + _LOGGER.debug('UNKNOWN ROUTE') + + +class TestXiaomiDeviceScanner(unittest.TestCase): + """Xiaomi device scanner test class.""" + + def setUp(self): + """Initialize values for this testcase class.""" + self.hass = get_test_home_assistant() + + def tearDown(self): + """Stop everything that was started.""" + self.hass.stop() + + @mock.patch( + 'homeassistant.components.device_tracker.xiaomi.XioamiDeviceScanner', + return_value=mock.MagicMock()) + def test_config(self, xiaomi_mock): + """Testing minimal configuration.""" + config = { + DOMAIN: xiaomi.PLATFORM_SCHEMA({ + CONF_PLATFORM: xiaomi.DOMAIN, + CONF_HOST: '192.168.0.1', + CONF_PASSWORD: 'passwordTest' + }) + } + xiaomi.get_scanner(self.hass, config) + self.assertEqual(xiaomi_mock.call_count, 1) + self.assertEqual(xiaomi_mock.call_args, mock.call(config[DOMAIN])) + call_arg = xiaomi_mock.call_args[0][0] + self.assertEqual(call_arg['username'], 'admin') + self.assertEqual(call_arg['password'], 'passwordTest') + self.assertEqual(call_arg['host'], '192.168.0.1') + self.assertEqual(call_arg['platform'], 'device_tracker') + + @mock.patch( + 'homeassistant.components.device_tracker.xiaomi.XioamiDeviceScanner', + return_value=mock.MagicMock()) + def test_config_full(self, xiaomi_mock): + """Testing full configuration.""" + config = { + DOMAIN: xiaomi.PLATFORM_SCHEMA({ + CONF_PLATFORM: xiaomi.DOMAIN, + CONF_HOST: '192.168.0.1', + CONF_USERNAME: 'alternativeAdminName', + CONF_PASSWORD: 'passwordTest' + }) + } + xiaomi.get_scanner(self.hass, config) + self.assertEqual(xiaomi_mock.call_count, 1) + self.assertEqual(xiaomi_mock.call_args, mock.call(config[DOMAIN])) + call_arg = xiaomi_mock.call_args[0][0] + self.assertEqual(call_arg['username'], 'alternativeAdminName') + self.assertEqual(call_arg['password'], 'passwordTest') + self.assertEqual(call_arg['host'], '192.168.0.1') + self.assertEqual(call_arg['platform'], 'device_tracker') + + @patch('requests.get', side_effect=mocked_requests) + @patch('requests.post', side_effect=mocked_requests) + def test_invalid_credential(self, mock_get, mock_post): + """"Testing invalid credential handling.""" + config = { + DOMAIN: xiaomi.PLATFORM_SCHEMA({ + CONF_PLATFORM: xiaomi.DOMAIN, + CONF_HOST: '192.168.0.1', + CONF_USERNAME: INVALID_USERNAME, + CONF_PASSWORD: 'passwordTest' + }) + } + self.assertIsNone(get_scanner(self.hass, config)) + + @patch('requests.get', side_effect=mocked_requests) + @patch('requests.post', side_effect=mocked_requests) + def test_valid_credential(self, mock_get, mock_post): + """"Testing valid refresh.""" + config = { + DOMAIN: xiaomi.PLATFORM_SCHEMA({ + CONF_PLATFORM: xiaomi.DOMAIN, + CONF_HOST: '192.168.0.1', + CONF_USERNAME: 'admin', + CONF_PASSWORD: 'passwordTest' + }) + } + scanner = get_scanner(self.hass, config) + self.assertIsNotNone(scanner) + self.assertEqual(2, len(scanner.scan_devices())) + self.assertEqual("Device1", + scanner.get_device_name("23:83:BF:F6:38:A0")) + self.assertEqual("Device2", + scanner.get_device_name("1D:98:EC:5E:D5:A6")) From d58b901a78aed4eb1ff76eae0d5e55e14734ae6f Mon Sep 17 00:00:00 2001 From: Teemu R <tpr@iki.fi> Date: Sat, 14 Jan 2017 06:34:35 +0100 Subject: [PATCH 161/189] eq3btsmart: support modes and clean up the code to use climatedevice's features (#4959) * eq3btsmart: support modes and clean up the code to use climatedevice's features * eq3btsmart: re-add device state attributes adds reporting for is_locked, valve, window_open and low_battery, exposing everything the device reports currently. * eq3btsmart: bump version req * eq3btsmart: fix a typo in mode name, report unknown when not initialized * eq3btsmart: depend on newly forked python-eq3bt lib, pythonify states --- .../components/climate/eq3btsmart.py | 90 +++++++++++++++---- requirements_all.txt | 6 +- 2 files changed, 76 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/climate/eq3btsmart.py b/homeassistant/components/climate/eq3btsmart.py index 72bd0b22522..41697f7b31d 100644 --- a/homeassistant/components/climate/eq3btsmart.py +++ b/homeassistant/components/climate/eq3btsmart.py @@ -8,18 +8,27 @@ import logging import voluptuous as vol -from homeassistant.components.climate import ClimateDevice, PLATFORM_SCHEMA +from homeassistant.components.climate import ( + ClimateDevice, PLATFORM_SCHEMA, PRECISION_HALVES, + STATE_UNKNOWN, STATE_AUTO, STATE_ON, STATE_OFF, +) from homeassistant.const import ( CONF_MAC, TEMP_CELSIUS, CONF_DEVICES, ATTR_TEMPERATURE) -from homeassistant.util.temperature import convert + import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['bluepy_devices==0.2.0'] +REQUIREMENTS = ['python-eq3bt==0.1.2'] _LOGGER = logging.getLogger(__name__) -ATTR_MODE = 'mode' -ATTR_MODE_READABLE = 'mode_readable' +STATE_BOOST = "boost" +STATE_AWAY = "away" +STATE_MANUAL = "manual" + +ATTR_STATE_WINDOW_OPEN = "window_open" +ATTR_STATE_VALVE = "valve" +ATTR_STATE_LOCKED = "is_locked" +ATTR_STATE_LOW_BAT = "low_battery" DEVICE_SCHEMA = vol.Schema({ vol.Required(CONF_MAC): cv.string, @@ -48,10 +57,23 @@ class EQ3BTSmartThermostat(ClimateDevice): def __init__(self, _mac, _name): """Initialize the thermostat.""" - from bluepy_devices.devices import eq3btsmart + # we want to avoid name clash with this module.. + import eq3bt as eq3 + + self.modes = {None: STATE_UNKNOWN, # When not yet connected. + eq3.Mode.Unknown: STATE_UNKNOWN, + eq3.Mode.Auto: STATE_AUTO, + # away handled separately, here just for reverse mapping + eq3.Mode.Away: STATE_AWAY, + eq3.Mode.Closed: STATE_OFF, + eq3.Mode.Open: STATE_ON, + eq3.Mode.Manual: STATE_MANUAL, + eq3.Mode.Boost: STATE_BOOST} + + self.reverse_modes = {v: k for k, v in self.modes.items()} self._name = _name - self._thermostat = eq3btsmart.EQ3BTSmartThermostat(_mac) + self._thermostat = eq3.Thermostat(_mac) @property def name(self): @@ -63,6 +85,11 @@ class EQ3BTSmartThermostat(ClimateDevice): """Return the unit of measurement that is used.""" return TEMP_CELSIUS + @property + def precision(self): + """Return eq3bt's precision 0.5.""" + return PRECISION_HALVES + @property def current_temperature(self): """Can not report temperature, so return target_temperature.""" @@ -81,24 +108,53 @@ class EQ3BTSmartThermostat(ClimateDevice): self._thermostat.target_temperature = temperature @property - def device_state_attributes(self): - """Return the device specific state attributes.""" - return { - ATTR_MODE: self._thermostat.mode, - ATTR_MODE_READABLE: self._thermostat.mode_readable, - } + def current_operation(self): + """Current mode.""" + return self.modes[self._thermostat.mode] + + @property + def operation_list(self): + """List of available operation modes.""" + return [x for x in self.modes.values()] + + def set_operation_mode(self, operation_mode): + """Set operation mode.""" + self._thermostat.mode = self.reverse_modes[operation_mode] + + def turn_away_mode_off(self): + """Away mode off turns to AUTO mode.""" + self.set_operation_mode(STATE_AUTO) + + def turn_away_mode_on(self): + """Set away mode on.""" + self.set_operation_mode(STATE_AWAY) + + @property + def is_away_mode_on(self): + """Return if we are away.""" + return self.current_operation == STATE_AWAY @property def min_temp(self): """Return the minimum temperature.""" - return convert(self._thermostat.min_temp, TEMP_CELSIUS, - self.unit_of_measurement) + return self._thermostat.min_temp @property def max_temp(self): """Return the maximum temperature.""" - return convert(self._thermostat.max_temp, TEMP_CELSIUS, - self.unit_of_measurement) + return self._thermostat.max_temp + + @property + def device_state_attributes(self): + """Return the device specific state attributes.""" + dev_specific = { + ATTR_STATE_LOCKED: self._thermostat.locked, + ATTR_STATE_LOW_BAT: self._thermostat.low_battery, + ATTR_STATE_VALVE: self._thermostat.valve_state, + ATTR_STATE_WINDOW_OPEN: self._thermostat.window_open, + } + + return dev_specific def update(self): """Update the data from the thermostat.""" diff --git a/requirements_all.txt b/requirements_all.txt index 50f940af906..a9cdd888643 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -61,9 +61,6 @@ blinkstick==1.1.8 # homeassistant.components.sensor.bitcoin blockchain==1.3.3 -# homeassistant.components.climate.eq3btsmart -# bluepy_devices==0.2.0 - # homeassistant.components.notify.aws_lambda # homeassistant.components.notify.aws_sns # homeassistant.components.notify.aws_sqs @@ -478,6 +475,9 @@ pysnmp==4.3.2 # homeassistant.components.digital_ocean python-digitalocean==1.10.1 +# homeassistant.components.climate.eq3btsmart +python-eq3bt==0.1.2 + # homeassistant.components.sensor.darksky python-forecastio==1.3.5 From 9f765836f8726bffbfa1c01d7a655bdf5262ac1f Mon Sep 17 00:00:00 2001 From: Johann Kellerman <kellerza@gmail.com> Date: Sat, 14 Jan 2017 08:01:47 +0200 Subject: [PATCH 162/189] [core] Add 'packages' to the config (#5140) * Initial * Merge dicts and lists * feedback * Move to homeassistant * feedback * increase_coverage * kick_the_hound --- homeassistant/bootstrap.py | 4 + homeassistant/components/script.py | 2 +- homeassistant/config.py | 101 ++++++++++++++++++++++- homeassistant/const.py | 1 + script/inspect_schemas.py | 59 ++++++++++++++ tests/test_config.py | 125 +++++++++++++++++++++++++++++ 6 files changed, 288 insertions(+), 4 deletions(-) create mode 100755 script/inspect_schemas.py diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 3b0a900d51e..da7886ad1e8 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -395,6 +395,10 @@ def async_from_config_dict(config: Dict[str, Any], if not loader.PREPARED: yield from hass.loop.run_in_executor(None, loader.prepare, hass) + # Merge packages + conf_util.merge_packages_config( + config, core_config.get(conf_util.CONF_PACKAGES, {})) + # Make a copy because we are mutating it. # Use OrderedDict in case original one was one. # Convert values to dictionaries if they are None diff --git a/homeassistant/components/script.py b/homeassistant/components/script.py index 05cbc5d0a80..1cca7c8d790 100644 --- a/homeassistant/components/script.py +++ b/homeassistant/components/script.py @@ -42,7 +42,7 @@ _SCRIPT_ENTRY_SCHEMA = vol.Schema({ }) CONFIG_SCHEMA = vol.Schema({ - vol.Required(DOMAIN): vol.Schema({cv.slug: _SCRIPT_ENTRY_SCHEMA}) + DOMAIN: vol.Schema({cv.slug: _SCRIPT_ENTRY_SCHEMA}) }, extra=vol.ALLOW_EXTRA) SCRIPT_SERVICE_SCHEMA = vol.Schema(dict) diff --git a/homeassistant/config.py b/homeassistant/config.py index f2f642de8ea..eb29212a67d 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -1,22 +1,23 @@ """Module to help with parsing and generating configuration files.""" import asyncio +from collections import OrderedDict import logging import os import shutil from types import MappingProxyType - # pylint: disable=unused-import from typing import Any, Tuple # NOQA import voluptuous as vol from homeassistant.const import ( - CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_UNIT_SYSTEM, + CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_PACKAGES, CONF_UNIT_SYSTEM, CONF_TIME_ZONE, CONF_CUSTOMIZE, CONF_ELEVATION, CONF_UNIT_SYSTEM_METRIC, CONF_UNIT_SYSTEM_IMPERIAL, CONF_TEMPERATURE_UNIT, TEMP_CELSIUS, __version__) -from homeassistant.core import valid_entity_id +from homeassistant.core import valid_entity_id, DOMAIN as CONF_CORE from homeassistant.exceptions import HomeAssistantError +from homeassistant.loader import get_component from homeassistant.util.yaml import load_yaml import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import set_customize @@ -101,6 +102,11 @@ def _valid_customize(value): return value +PACKAGES_CONFIG_SCHEMA = vol.Schema({ + cv.slug: vol.Schema( # Package names are slugs + {cv.slug: vol.Any(dict, list)}) # Only slugs for component names +}) + CORE_CONFIG_SCHEMA = vol.Schema({ CONF_NAME: vol.Coerce(str), CONF_LATITUDE: cv.latitude, @@ -111,6 +117,7 @@ CORE_CONFIG_SCHEMA = vol.Schema({ CONF_TIME_ZONE: cv.time_zone, vol.Required(CONF_CUSTOMIZE, default=MappingProxyType({})): _valid_customize, + vol.Optional(CONF_PACKAGES, default={}): PACKAGES_CONFIG_SCHEMA, }) @@ -357,3 +364,91 @@ def async_process_ha_core_config(hass, config): _LOGGER.warning( 'Incomplete core config. Auto detected %s', ', '.join('{}: {}'.format(key, val) for key, val in discovered)) + + +def _log_pkg_error(package, component, config, message): + """Log an error while merging.""" + message = "Package {} setup failed. Component {} {}".format( + package, component, message) + + pack_config = config[CONF_CORE][CONF_PACKAGES].get(package, config) + message += " (See {}:{}). ".format( + getattr(pack_config, '__config_file__', '?'), + getattr(pack_config, '__line__', '?')) + + _LOGGER.error(message) + + +def _identify_config_schema(module): + """Extract the schema and identify list or dict based.""" + try: + schema = module.CONFIG_SCHEMA.schema[module.DOMAIN] + except (AttributeError, KeyError): + return (None, None) + t_schema = str(schema) + if (t_schema.startswith('<function ordered_dict') or + t_schema.startswith('<Schema({<function slug')): + return ('dict', schema) + if t_schema.startswith('All(<function ensure_list'): + return ('list', schema) + return '', schema + + +def merge_packages_config(config, packages): + """Merge packages into the top-level config. Mutate config.""" + # pylint: disable=too-many-nested-blocks + PACKAGES_CONFIG_SCHEMA(packages) + for pack_name, pack_conf in packages.items(): + for comp_name, comp_conf in pack_conf.items(): + component = get_component(comp_name) + + if component is None: + _log_pkg_error(pack_name, comp_name, config, "does not exist") + continue + + if hasattr(component, 'PLATFORM_SCHEMA'): + config[comp_name] = cv.ensure_list(config.get(comp_name)) + config[comp_name].extend(cv.ensure_list(comp_conf)) + continue + + if hasattr(component, 'CONFIG_SCHEMA'): + merge_type, _ = _identify_config_schema(component) + + if merge_type == 'list': + config[comp_name] = cv.ensure_list(config.get(comp_name)) + config[comp_name].extend(cv.ensure_list(comp_conf)) + continue + + if merge_type == 'dict': + if not isinstance(comp_conf, dict): + _log_pkg_error( + pack_name, comp_name, config, + "cannot be merged. Expected a dict.") + continue + + if comp_name not in config: + config[comp_name] = OrderedDict() + + if not isinstance(config[comp_name], dict): + _log_pkg_error( + pack_name, comp_name, config, + "cannot be merged. Dict expected in main config.") + continue + + for key, val in comp_conf.items(): + if key in config[comp_name]: + _log_pkg_error(pack_name, comp_name, config, + "duplicate key '{}'".format(key)) + continue + config[comp_name][key] = val + continue + + # The last merge type are sections that may occur only once + if comp_name in config: + _log_pkg_error( + pack_name, comp_name, config, "may occur only once" + " and it already exist in your main config") + continue + config[comp_name] = comp_conf + + return config diff --git a/homeassistant/const.py b/homeassistant/const.py index d266a3aae55..bbc41bda72e 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -109,6 +109,7 @@ CONF_MONITORED_VARIABLES = 'monitored_variables' CONF_NAME = 'name' CONF_OFFSET = 'offset' CONF_OPTIMISTIC = 'optimistic' +CONF_PACKAGES = 'packages' CONF_PASSWORD = 'password' CONF_PATH = 'path' CONF_PAYLOAD = 'payload' diff --git a/script/inspect_schemas.py b/script/inspect_schemas.py new file mode 100755 index 00000000000..f2fdff22f7a --- /dev/null +++ b/script/inspect_schemas.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +"""Inspect all component SCHEMAS.""" +import os +import importlib +import pkgutil + +from homeassistant.config import _identify_config_schema +from homeassistant.scripts.check_config import color + + +def explore_module(package): + """Explore the modules.""" + module = importlib.import_module(package) + if not hasattr(module, '__path__'): + return [] + for _, name, _ in pkgutil.iter_modules(module.__path__, package + '.'): + yield name + + +def main(): + """Main section of the script.""" + if not os.path.isfile('requirements_all.txt'): + print('Run this from HA root dir') + return + + msg = {} + + def add_msg(key, item): + """Add a message.""" + if key not in msg: + msg[key] = [] + msg[key].append(item) + + for package in explore_module('homeassistant.components'): + module = importlib.import_module(package) + module_name = getattr(module, 'DOMAIN', module.__name__) + + if hasattr(module, 'PLATFORM_SCHEMA'): + if hasattr(module, 'CONFIG_SCHEMA'): + add_msg('WARNING', "Module {} contains PLATFORM and CONFIG " + "schemas".format(module_name)) + add_msg('PLATFORM SCHEMA', module_name) + continue + + if not hasattr(module, 'CONFIG_SCHEMA'): + add_msg('NO SCHEMA', module_name) + continue + + schema_type, schema = _identify_config_schema(module) + + add_msg("CONFIG_SCHEMA " + schema_type, module_name + ' ' + + color('cyan', str(schema)[:60])) + + for key in sorted(msg): + print("\n{}\n - {}".format(key, '\n - '.join(msg[key]))) + + +if __name__ == '__main__': + main() diff --git a/tests/test_config.py b/tests/test_config.py index ff0498d06af..455ebe33c61 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -357,3 +357,128 @@ class TestConfig(unittest.TestCase): assert self.hass.config.location_name == blankConfig.location_name assert self.hass.config.units == blankConfig.units assert self.hass.config.time_zone == blankConfig.time_zone + + +# pylint: disable=redefined-outer-name +@pytest.fixture +def merge_log_err(hass): + """Patch _merge_log_error from packages.""" + with mock.patch('homeassistant.config._LOGGER.error') \ + as logerr: + yield logerr + + +def test_merge(merge_log_err): + """Test if we can merge packages.""" + packages = { + 'pack_dict': {'input_boolean': {'ib1': None}}, + 'pack_11': {'input_select': {'is1': None}}, + 'pack_list': {'light': {'platform': 'test'}}, + 'pack_list2': {'light': [{'platform': 'test'}]}, + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + 'input_boolean': {'ib2': None}, + 'light': {'platform': 'test'} + } + config_util.merge_packages_config(config, packages) + + assert merge_log_err.call_count == 0 + assert len(config) == 4 + assert len(config['input_boolean']) == 2 + assert len(config['input_select']) == 1 + assert len(config['light']) == 3 + + +def test_merge_new(merge_log_err): + """Test adding new components to outer scope.""" + packages = { + 'pack_1': {'light': [{'platform': 'one'}]}, + 'pack_11': {'input_select': {'ib1': None}}, + 'pack_2': { + 'light': {'platform': 'one'}, + 'panel_custom': {'pan1': None}, + 'api': {}}, + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + } + config_util.merge_packages_config(config, packages) + + assert merge_log_err.call_count == 0 + assert 'api' in config + assert len(config) == 5 + assert len(config['light']) == 2 + assert len(config['panel_custom']) == 1 + + +def test_merge_type_mismatch(merge_log_err): + """Test if we have a type mismatch for packages.""" + packages = { + 'pack_1': {'input_boolean': [{'ib1': None}]}, + 'pack_11': {'input_select': {'ib1': None}}, + 'pack_2': {'light': {'ib1': None}}, # light gets merged - ensure_list + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + 'input_boolean': {'ib2': None}, + 'input_select': [{'ib2': None}], + 'light': [{'platform': 'two'}] + } + config_util.merge_packages_config(config, packages) + + assert merge_log_err.call_count == 2 + assert len(config) == 4 + assert len(config['input_boolean']) == 1 + assert len(config['light']) == 2 + + +def test_merge_once_only(merge_log_err): + """Test if we have a merge for a comp that may occur only once.""" + packages = { + 'pack_1': {'homeassistant': {}}, + 'pack_2': { + 'mqtt': {}, + 'api': {}, # No config schema + }, + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + 'mqtt': {}, 'api': {} + } + config_util.merge_packages_config(config, packages) + assert merge_log_err.call_count == 3 + assert len(config) == 3 + + +def test_merge_id_schema(hass): + """Test if we identify the config schemas correctly.""" + types = { + 'panel_custom': 'list', + 'group': 'dict', + 'script': 'dict', + 'input_boolean': 'dict', + 'shell_command': 'dict', + 'qwikswitch': '', + } + for name, expected_type in types.items(): + module = config_util.get_component(name) + typ, _ = config_util._identify_config_schema(module) + assert typ == expected_type, "{} expected {}, got {}".format( + name, expected_type, typ) + + +def test_merge_duplicate_keys(merge_log_err): + """Test if keys in dicts are duplicates.""" + packages = { + 'pack_1': {'input_select': {'ib1': None}}, + } + config = { + config_util.CONF_CORE: {config_util.CONF_PACKAGES: packages}, + 'input_select': {'ib1': None}, + } + config_util.merge_packages_config(config, packages) + + assert merge_log_err.call_count == 1 + assert len(config) == 2 + assert len(config['input_select']) == 1 From 0da8418f3fca44f562887fc0697d8cb8dbc2bb25 Mon Sep 17 00:00:00 2001 From: William Scanlon <wjs.scanlon@gmail.com> Date: Sat, 14 Jan 2017 01:08:13 -0500 Subject: [PATCH 163/189] Wink fan support (#5174) * Initial commit for Wink fan support * Added fan to discovery list * Raise NotImplementedError and fixed is_on * Added speed property * Update __init__.py --- homeassistant/components/fan/__init__.py | 50 +++++++++++-- homeassistant/components/fan/demo.py | 24 +++++-- homeassistant/components/fan/isy994.py | 6 +- homeassistant/components/fan/wink.py | 92 ++++++++++++++++++++++++ homeassistant/components/wink.py | 5 +- requirements_all.txt | 4 +- tests/components/fan/test_demo.py | 9 +++ 7 files changed, 177 insertions(+), 13 deletions(-) create mode 100644 homeassistant/components/fan/wink.py diff --git a/homeassistant/components/fan/__init__.py b/homeassistant/components/fan/__init__.py index b67b4d2ad24..efb7e0b1496 100644 --- a/homeassistant/components/fan/__init__.py +++ b/homeassistant/components/fan/__init__.py @@ -33,9 +33,11 @@ ENTITY_ID_FORMAT = DOMAIN + '.{}' ATTR_SUPPORTED_FEATURES = 'supported_features' SUPPORT_SET_SPEED = 1 SUPPORT_OSCILLATE = 2 +SUPPORT_DIRECTION = 4 SERVICE_SET_SPEED = 'set_speed' SERVICE_OSCILLATE = 'oscillate' +SERVICE_SET_DIRECTION = 'set_direction' SPEED_OFF = 'off' SPEED_LOW = 'low' @@ -43,15 +45,20 @@ SPEED_MED = 'med' SPEED_MEDIUM = 'medium' SPEED_HIGH = 'high' +DIRECTION_FORWARD = 'forward' +DIRECTION_REVERSE = 'reverse' + ATTR_SPEED = 'speed' ATTR_SPEED_LIST = 'speed_list' ATTR_OSCILLATING = 'oscillating' +ATTR_DIRECTION = 'direction' PROP_TO_ATTR = { 'speed': ATTR_SPEED, 'speed_list': ATTR_SPEED_LIST, 'oscillating': ATTR_OSCILLATING, 'supported_features': ATTR_SUPPORTED_FEATURES, + 'direction': ATTR_DIRECTION, } # type: dict FAN_SET_SPEED_SCHEMA = vol.Schema({ @@ -77,6 +84,11 @@ FAN_TOGGLE_SCHEMA = vol.Schema({ vol.Required(ATTR_ENTITY_ID): cv.entity_ids }) +FAN_SET_DIRECTION_SCHEMA = vol.Schema({ + vol.Required(ATTR_ENTITY_ID): cv.entity_ids, + vol.Optional(ATTR_DIRECTION): cv.string +}) # type: dict + _LOGGER = logging.getLogger(__name__) @@ -141,6 +153,18 @@ def set_speed(hass, entity_id: str=None, speed: str=None) -> None: hass.services.call(DOMAIN, SERVICE_SET_SPEED, data) +def set_direction(hass, entity_id: str=None, direction: str=None) -> None: + """Set direction for all or specified fan.""" + data = { + key: value for key, value in [ + (ATTR_ENTITY_ID, entity_id), + (ATTR_DIRECTION, direction), + ] if value is not None + } + + hass.services.call(DOMAIN, SERVICE_SET_DIRECTION, data) + + def setup(hass, config: dict) -> None: """Expose fan control via statemachine and services.""" component = EntityComponent( @@ -158,7 +182,8 @@ def setup(hass, config: dict) -> None: service_fun = None for service_def in [SERVICE_TURN_ON, SERVICE_TURN_OFF, - SERVICE_SET_SPEED, SERVICE_OSCILLATE]: + SERVICE_SET_SPEED, SERVICE_OSCILLATE, + SERVICE_SET_DIRECTION]: if service_def == service.service: service_fun = service_def break @@ -191,6 +216,10 @@ def setup(hass, config: dict) -> None: descriptions.get(SERVICE_OSCILLATE), schema=FAN_OSCILLATE_SCHEMA) + hass.services.register(DOMAIN, SERVICE_SET_DIRECTION, handle_fan_service, + descriptions.get(SERVICE_SET_DIRECTION), + schema=FAN_SET_DIRECTION_SCHEMA) + return True @@ -201,7 +230,11 @@ class FanEntity(ToggleEntity): def set_speed(self: ToggleEntity, speed: str) -> None: """Set the speed of the fan.""" - pass + raise NotImplementedError() + + def set_direction(self: ToggleEntity, direction: str) -> None: + """Set the direction of the fan.""" + raise NotImplementedError() def turn_on(self: ToggleEntity, speed: str=None, **kwargs) -> None: """Turn on the fan.""" @@ -218,14 +251,23 @@ class FanEntity(ToggleEntity): @property def is_on(self): """Return true if the entity is on.""" - return self.state_attributes.get(ATTR_SPEED, STATE_UNKNOWN) \ - not in [SPEED_OFF, STATE_UNKNOWN] + return self.speed not in [SPEED_OFF, STATE_UNKNOWN] + + @property + def speed(self) -> str: + """Return the current speed.""" + return None @property def speed_list(self: ToggleEntity) -> list: """Get the list of available speeds.""" return [] + @property + def current_direction(self) -> str: + """Return the current direction of the fan.""" + return None + @property def state_attributes(self: ToggleEntity) -> dict: """Return optional state attributes.""" diff --git a/homeassistant/components/fan/demo.py b/homeassistant/components/fan/demo.py index ba2deb83125..7ba6b4d67fb 100644 --- a/homeassistant/components/fan/demo.py +++ b/homeassistant/components/fan/demo.py @@ -7,14 +7,14 @@ https://home-assistant.io/components/demo/ from homeassistant.components.fan import (SPEED_LOW, SPEED_MED, SPEED_HIGH, FanEntity, SUPPORT_SET_SPEED, - SUPPORT_OSCILLATE) + SUPPORT_OSCILLATE, SUPPORT_DIRECTION) from homeassistant.const import STATE_OFF FAN_NAME = 'Living Room Fan' FAN_ENTITY_ID = 'fan.living_room_fan' -DEMO_SUPPORT = SUPPORT_SET_SPEED | SUPPORT_OSCILLATE +DEMO_SUPPORT = SUPPORT_SET_SPEED | SUPPORT_OSCILLATE | SUPPORT_DIRECTION # pylint: disable=unused-argument @@ -31,8 +31,9 @@ class DemoFan(FanEntity): def __init__(self, hass, name: str, initial_state: str) -> None: """Initialize the entity.""" self.hass = hass - self.speed = initial_state + self._speed = initial_state self.oscillating = False + self.direction = "forward" self._name = name @property @@ -45,6 +46,11 @@ class DemoFan(FanEntity): """No polling needed for a demo fan.""" return False + @property + def speed(self) -> str: + """Return the current speed.""" + return self._speed + @property def speed_list(self) -> list: """Get the list of available speeds.""" @@ -61,7 +67,12 @@ class DemoFan(FanEntity): def set_speed(self, speed: str) -> None: """Set the speed of the fan.""" - self.speed = speed + self._speed = speed + self.update_ha_state() + + def set_direction(self, direction: str) -> None: + """Set the direction of the fan.""" + self.direction = direction self.update_ha_state() def oscillate(self, oscillating: bool) -> None: @@ -69,6 +80,11 @@ class DemoFan(FanEntity): self.oscillating = oscillating self.update_ha_state() + @property + def current_direction(self) -> str: + """Fan direction.""" + return self.direction + @property def supported_features(self) -> int: """Flag supported features.""" diff --git a/homeassistant/components/fan/isy994.py b/homeassistant/components/fan/isy994.py index 2deb938d337..fd0690f4253 100644 --- a/homeassistant/components/fan/isy994.py +++ b/homeassistant/components/fan/isy994.py @@ -64,7 +64,11 @@ class ISYFanDevice(isy.ISYDevice, FanEntity): def __init__(self, node) -> None: """Initialize the ISY994 fan device.""" isy.ISYDevice.__init__(self, node) - self.speed = self.state + + @property + def speed(self) -> str: + """Return the current speed.""" + return self.state @property def state(self) -> str: diff --git a/homeassistant/components/fan/wink.py b/homeassistant/components/fan/wink.py new file mode 100644 index 00000000000..066dbfcb561 --- /dev/null +++ b/homeassistant/components/fan/wink.py @@ -0,0 +1,92 @@ +""" +Support for Wink fans. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/fan.wink/ +""" +import logging + +from homeassistant.components.fan import (FanEntity, SPEED_HIGH, + SPEED_LOW, SPEED_MEDIUM, + STATE_UNKNOWN) +from homeassistant.helpers.entity import ToggleEntity +from homeassistant.components.wink import WinkDevice + +_LOGGER = logging.getLogger(__name__) + +SPEED_LOWEST = "lowest" +SPEED_AUTO = "auto" + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Wink platform.""" + import pywink + + add_devices(WinkFanDevice(fan, hass) for fan in pywink.get_fans()) + + +class WinkFanDevice(WinkDevice, FanEntity): + """Representation of a Wink fan.""" + + def __init__(self, wink, hass): + """Initialize the fan.""" + WinkDevice.__init__(self, wink, hass) + + def set_drection(self: ToggleEntity, direction: str) -> None: + """Set the direction of the fan.""" + self.wink.set_fan_direction(direction) + + def set_speed(self: ToggleEntity, speed: str) -> None: + """Set the speed of the fan.""" + self.wink.set_fan_speed(speed) + + def turn_on(self: ToggleEntity, speed: str=None, **kwargs) -> None: + """Turn on the fan.""" + self.wink.set_state(True) + + def turn_off(self: ToggleEntity, **kwargs) -> None: + """Turn off the fan.""" + self.wink.set_state(False) + + @property + def is_on(self): + """Return true if the entity is on.""" + return self.wink.state() + + @property + def speed(self) -> str: + """Return the current speed.""" + current_wink_speed = self.wink.current_fan_speed() + if SPEED_AUTO == current_wink_speed: + return SPEED_AUTO + if SPEED_LOWEST == current_wink_speed: + return SPEED_LOWEST + if SPEED_LOW == current_wink_speed: + return SPEED_LOW + if SPEED_MEDIUM == current_wink_speed: + return SPEED_MEDIUM + if SPEED_HIGH == current_wink_speed: + return SPEED_HIGH + return STATE_UNKNOWN + + @property + def current_direction(self): + """Return direction of the fan [forward, reverse].""" + return self.wink.current_fan_direction() + + @property + def speed_list(self: ToggleEntity) -> list: + """Get the list of available speeds.""" + wink_supported_speeds = self.wink.fan_speeds() + supported_speeds = [] + if SPEED_AUTO in wink_supported_speeds: + supported_speeds.append(SPEED_AUTO) + if SPEED_LOWEST in wink_supported_speeds: + supported_speeds.append(SPEED_LOWEST) + if SPEED_LOW in wink_supported_speeds: + supported_speeds.append(SPEED_LOW) + if SPEED_MEDIUM in wink_supported_speeds: + supported_speeds.append(SPEED_MEDIUM) + if SPEED_HIGH in wink_supported_speeds: + supported_speeds.append(SPEED_HIGH) + return supported_speeds diff --git a/homeassistant/components/wink.py b/homeassistant/components/wink.py index affeb376f5c..39c4c21aaa5 100644 --- a/homeassistant/components/wink.py +++ b/homeassistant/components/wink.py @@ -15,7 +15,7 @@ from homeassistant.const import ( from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['python-wink==0.11.0', 'pubnubsub-handler==0.0.5'] +REQUIREMENTS = ['python-wink==0.12.0', 'pubnubsub-handler==0.0.7'] _LOGGER = logging.getLogger(__name__) @@ -50,7 +50,8 @@ CONFIG_SCHEMA = vol.Schema({ }, extra=vol.ALLOW_EXTRA) WINK_COMPONENTS = [ - 'binary_sensor', 'sensor', 'light', 'switch', 'lock', 'cover', 'climate' + 'binary_sensor', 'sensor', 'light', 'switch', 'lock', 'cover', 'climate', + 'fan' ] diff --git a/requirements_all.txt b/requirements_all.txt index a9cdd888643..1b13985963a 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -362,7 +362,7 @@ proliphix==0.4.1 psutil==5.0.1 # homeassistant.components.wink -pubnubsub-handler==0.0.5 +pubnubsub-handler==0.0.7 # homeassistant.components.notify.pushbullet pushbullet.py==0.10.0 @@ -512,7 +512,7 @@ python-twitch==1.3.0 python-vlc==1.1.2 # homeassistant.components.wink -python-wink==0.11.0 +python-wink==0.12.0 # homeassistant.components.device_tracker.trackr pytrackr==0.0.5 diff --git a/tests/components/fan/test_demo.py b/tests/components/fan/test_demo.py index 81e03c13705..2a0de549b99 100644 --- a/tests/components/fan/test_demo.py +++ b/tests/components/fan/test_demo.py @@ -55,6 +55,15 @@ class TestDemoFan(unittest.TestCase): self.hass.block_till_done() self.assertEqual(STATE_OFF, self.get_entity().state) + def test_set_direction(self): + """Test setting the direction of the device.""" + self.assertEqual(STATE_OFF, self.get_entity().state) + + fan.set_direction(self.hass, FAN_ENTITY_ID, fan.DIRECTION_REVERSE) + self.hass.block_till_done() + self.assertEqual(fan.DIRECTION_REVERSE, + self.get_entity().attributes.get('direction')) + def test_set_speed(self): """Test setting the speed of the device.""" self.assertEqual(STATE_OFF, self.get_entity().state) From d6747d6aafa51d37356af177715f10156c31ec29 Mon Sep 17 00:00:00 2001 From: Matthew Garrett <mjg59@coreos.com> Date: Fri, 13 Jan 2017 22:15:43 -0800 Subject: [PATCH 164/189] Add support for Zengge Bluetooth bulbs (#5196) * Add support for Zengge Bluetooth bulbs Adds support for the Zengge Bluetooth RGBW bulbs. These are sold under a number of brands, including Flux. The bulbs do not support full RGBW control - they turn off the RGB LEDs when white is enabled, and vice versa. * Update zengge.py --- .coveragerc | 1 + homeassistant/components/light/zengge.py | 146 +++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 150 insertions(+) create mode 100644 homeassistant/components/light/zengge.py diff --git a/.coveragerc b/.coveragerc index 74faed07c4a..3862b3015e4 100644 --- a/.coveragerc +++ b/.coveragerc @@ -195,6 +195,7 @@ omit = homeassistant/components/light/tikteck.py homeassistant/components/light/x10.py homeassistant/components/light/yeelight.py + homeassistant/components/light/zengge.py homeassistant/components/lirc.py homeassistant/components/media_player/aquostv.py homeassistant/components/media_player/braviatv.py diff --git a/homeassistant/components/light/zengge.py b/homeassistant/components/light/zengge.py new file mode 100644 index 00000000000..74992a9d633 --- /dev/null +++ b/homeassistant/components/light/zengge.py @@ -0,0 +1,146 @@ +""" +Support for Zengge lights. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.zengge/ +""" +import logging + +import voluptuous as vol + +from homeassistant.const import CONF_DEVICES, CONF_NAME +from homeassistant.components.light import ( + ATTR_RGB_COLOR, ATTR_WHITE_VALUE, + SUPPORT_RGB_COLOR, SUPPORT_WHITE_VALUE, Light, PLATFORM_SCHEMA) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['zengge==0.2'] + +_LOGGER = logging.getLogger(__name__) + +SUPPORT_ZENGGE_LED = (SUPPORT_RGB_COLOR | SUPPORT_WHITE_VALUE) + +DEVICE_SCHEMA = vol.Schema({ + vol.Optional(CONF_NAME): cv.string, +}) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_DEVICES, default={}): {cv.string: DEVICE_SCHEMA}, +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the Zengge platform.""" + lights = [] + for address, device_config in config[CONF_DEVICES].items(): + device = {} + device['name'] = device_config[CONF_NAME] + device['address'] = address + light = ZenggeLight(device) + if light.is_valid: + lights.append(light) + + add_devices(lights) + + +class ZenggeLight(Light): + """Representation of a Zengge light.""" + + def __init__(self, device): + """Initialize the light.""" + import zengge + + self._name = device['name'] + self._address = device['address'] + self.is_valid = True + self._bulb = zengge.zengge(self._address) + self._white = 0 + self._rgb = (0, 0, 0) + self._state = False + if self._bulb.connect() is False: + self.is_valid = False + _LOGGER.error( + "Failed to connect to bulb %s, %s", self._address, self._name) + return + self.update() + + @property + def unique_id(self): + """Return the ID of this light.""" + return "{}.{}".format(self.__class__, self._address) + + @property + def name(self): + """Return the name of the device if any.""" + return self._name + + @property + def is_on(self): + """Return true if device is on.""" + return self._state + + @property + def rgb_color(self): + """Return the color property.""" + return self._rgb + + @property + def white_value(self): + """Return the white property.""" + return self._white + + @property + def supported_features(self): + """Flag supported features.""" + return SUPPORT_ZENGGE_LED + + @property + def should_poll(self): + """Feel free to poll.""" + return True + + @property + def assumed_state(self): + """We can report the actual state.""" + return False + + def set_rgb(self, red, green, blue): + """Set the rgb state.""" + return self._bulb.set_rgb(red, green, blue) + + def set_white(self, white): + """Set the white state.""" + return self._bulb.set_white(white) + + def turn_on(self, **kwargs): + """Turn the specified light on.""" + self._state = True + self._bulb.on() + + rgb = kwargs.get(ATTR_RGB_COLOR) + white = kwargs.get(ATTR_WHITE_VALUE) + + if white is not None: + self._white = white + self._rgb = (0, 0, 0) + + if rgb is not None: + self._white = 0 + self._rgb = rgb + + if self._white != 0: + self.set_white(self._white) + else: + self.set_rgb(self._rgb[0], self._rgb[1], self._rgb[2]) + + def turn_off(self, **kwargs): + """Turn the specified light off.""" + self._state = False + self._bulb.off() + + def update(self): + """Synchronise internal state with the actual light state.""" + self._rgb = self._bulb.get_colour() + self._white = self._bulb.get_white() + self._state = self._bulb.get_on() diff --git a/requirements_all.txt b/requirements_all.txt index 1b13985963a..099711751ce 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -659,5 +659,8 @@ yahoo-finance==1.4.0 # homeassistant.components.sensor.yweather yahooweather==0.8 +# homeassistant.components.light.zengge +zengge==0.2 + # homeassistant.components.zeroconf zeroconf==0.17.6 From 5bba9a63a5b6de101858a2537835aabf63417faf Mon Sep 17 00:00:00 2001 From: Teemu R <tpr@iki.fi> Date: Sat, 14 Jan 2017 07:20:47 +0100 Subject: [PATCH 165/189] switch.tplink: bump to the newest release of pyhs100 (#5308) --- homeassistant/components/switch/tplink.py | 3 +-- requirements_all.txt | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/switch/tplink.py b/homeassistant/components/switch/tplink.py index 44fecf37e56..2457e49f955 100644 --- a/homeassistant/components/switch/tplink.py +++ b/homeassistant/components/switch/tplink.py @@ -14,8 +14,7 @@ from homeassistant.components.switch import (SwitchDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_HOST, CONF_NAME) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['https://github.com/GadgetReactor/pyHS100/archive/' - '45fc3548882628bcde3e3d365db341849457bef2.zip#pyHS100==0.2.2'] +REQUIREMENTS = ['pyHS100==0.2.3'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 099711751ce..ca9f9f422a7 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -180,9 +180,6 @@ hikvision==0.4 # homeassistant.components.nest http://github.com/technicalpickles/python-nest/archive/e6c9d56a8df455d4d7746389811f2c1387e8cb33.zip#python-nest==3.0.3 -# homeassistant.components.switch.tplink -https://github.com/GadgetReactor/pyHS100/archive/45fc3548882628bcde3e3d365db341849457bef2.zip#pyHS100==0.2.2 - # homeassistant.components.switch.dlink https://github.com/LinuxChristian/pyW215/archive/v0.3.7.zip#pyW215==0.3.7 @@ -376,6 +373,9 @@ pwaqi==1.3 # homeassistant.components.sensor.cpuspeed py-cpuinfo==0.2.3 +# homeassistant.components.switch.tplink +pyHS100==0.2.3 + # homeassistant.components.rfxtrx pyRFXtrx==0.14.0 From c2492d149328248c50e3c521d650d732af09da78 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 08:18:03 +0100 Subject: [PATCH 166/189] Component "Image processing" (#5166) * Init new component for image processing. * Add demo platform * address comments * add unittest v1 for demo * Add unittest for alpr * Add openalpr local test * Add openalpr cloud platform * Add unittest openalpr cloud platform * Update stale docstring * Address paulus comments * Update stale docstring * Add coro to function * Add coro to cloud --- homeassistant/components/camera/__init__.py | 40 ++++ homeassistant/components/demo.py | 2 + .../components/image_processing/__init__.py | 127 ++++++++++ .../components/image_processing/demo.py | 84 +++++++ .../image_processing/openalpr_cloud.py | 151 ++++++++++++ .../image_processing/openalpr_local.py | 218 ++++++++++++++++++ .../components/image_processing/services.yaml | 9 + tests/components/camera/test_init.py | 101 ++++++++ tests/components/image_processing/__init__.py | 1 + .../components/image_processing/test_init.py | 209 +++++++++++++++++ .../image_processing/test_openalpr_cloud.py | 212 +++++++++++++++++ .../image_processing/test_openalpr_local.py | 165 +++++++++++++ tests/fixtures/alpr_cloud.json | 103 +++++++++ tests/fixtures/alpr_stdout.txt | 12 + tests/test_util/aiohttp.py | 5 + 15 files changed, 1439 insertions(+) create mode 100644 homeassistant/components/image_processing/__init__.py create mode 100644 homeassistant/components/image_processing/demo.py create mode 100644 homeassistant/components/image_processing/openalpr_cloud.py create mode 100644 homeassistant/components/image_processing/openalpr_local.py create mode 100644 homeassistant/components/image_processing/services.yaml create mode 100644 tests/components/camera/test_init.py create mode 100644 tests/components/image_processing/__init__.py create mode 100644 tests/components/image_processing/test_init.py create mode 100644 tests/components/image_processing/test_openalpr_cloud.py create mode 100644 tests/components/image_processing/test_openalpr_local.py create mode 100644 tests/fixtures/alpr_cloud.json create mode 100644 tests/fixtures/alpr_stdout.txt diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 5ba68dea058..168f821c6c0 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -10,8 +10,13 @@ from datetime import timedelta import logging import hashlib +import aiohttp from aiohttp import web +import async_timeout +from homeassistant.const import ATTR_ENTITY_PICTURE +from homeassistant.exceptions import HomeAssistantError +from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa @@ -29,6 +34,41 @@ STATE_IDLE = 'idle' ENTITY_IMAGE_URL = '/api/camera_proxy/{0}?token={1}' +@asyncio.coroutine +def async_get_image(hass, entity_id, timeout=10): + """Fetch a image from a camera entity.""" + websession = async_get_clientsession(hass) + state = hass.states.get(entity_id) + + if state is None: + raise HomeAssistantError( + "No entity '{0}' for grab a image".format(entity_id)) + + url = "{0}{1}".format( + hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE) + ) + + response = None + try: + with async_timeout.timeout(timeout, loop=hass.loop): + response = yield from websession.get(url) + + if response.status != 200: + raise HomeAssistantError("Error {0} on {1}".format( + response.status, url)) + + image = yield from response.read() + return image + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + raise HomeAssistantError("Can't connect to {0}".format(url)) + + finally: + if response is not None: + yield from response.release() + + @asyncio.coroutine def async_setup(hass, config): """Setup the camera component.""" diff --git a/homeassistant/components/demo.py b/homeassistant/components/demo.py index 80f89d7c134..170159e1d25 100644 --- a/homeassistant/components/demo.py +++ b/homeassistant/components/demo.py @@ -23,12 +23,14 @@ COMPONENTS_WITH_DEMO_PLATFORM = [ 'cover', 'device_tracker', 'fan', + 'image_processing', 'light', 'lock', 'media_player', 'notify', 'sensor', 'switch', + 'tts', ] diff --git a/homeassistant/components/image_processing/__init__.py b/homeassistant/components/image_processing/__init__.py new file mode 100644 index 00000000000..0d28fe4c605 --- /dev/null +++ b/homeassistant/components/image_processing/__init__.py @@ -0,0 +1,127 @@ +""" +Provides functionality to interact with image processing services. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/image_processing/ +""" +import asyncio +from datetime import timedelta +import logging +import os + +import voluptuous as vol + +from homeassistant.config import load_yaml_config_file +from homeassistant.const import ( + ATTR_ENTITY_ID, CONF_NAME, CONF_ENTITY_ID) +from homeassistant.exceptions import HomeAssistantError +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import Entity +from homeassistant.helpers.entity_component import EntityComponent +from homeassistant.loader import get_component + + +DOMAIN = 'image_processing' +DEPENDENCIES = ['camera'] + +_LOGGER = logging.getLogger(__name__) + +SCAN_INTERVAL = timedelta(seconds=10) + +SERVICE_SCAN = 'scan' + +ATTR_CONFIDENCE = 'confidence' + +CONF_SOURCE = 'source' +CONF_CONFIDENCE = 'confidence' + +DEFAULT_TIMEOUT = 10 + +SOURCE_SCHEMA = vol.Schema({ + vol.Required(CONF_ENTITY_ID): cv.entity_id, + vol.Optional(CONF_NAME): cv.string, +}) + +PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_SOURCE): vol.All(cv.ensure_list, [SOURCE_SCHEMA]), +}) + +SERVICE_SCAN_SCHEMA = vol.Schema({ + vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, +}) + + +def scan(hass, entity_id=None): + """Force process a image.""" + data = {ATTR_ENTITY_ID: entity_id} if entity_id else None + hass.services.call(DOMAIN, SERVICE_SCAN, data) + + +@asyncio.coroutine +def async_setup(hass, config): + """Setup image processing.""" + component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) + + yield from component.async_setup(config) + + descriptions = yield from hass.loop.run_in_executor( + None, load_yaml_config_file, + os.path.join(os.path.dirname(__file__), 'services.yaml')) + + @asyncio.coroutine + def async_scan_service(service): + """Service handler for scan.""" + image_entities = component.async_extract_from_service(service) + + update_task = [entity.async_update_ha_state(True) for + entity in image_entities] + if update_task: + yield from asyncio.wait(update_task, loop=hass.loop) + + hass.services.async_register( + DOMAIN, SERVICE_SCAN, async_scan_service, + descriptions.get(SERVICE_SCAN), schema=SERVICE_SCAN_SCHEMA) + + return True + + +class ImageProcessingEntity(Entity): + """Base entity class for image processing.""" + + timeout = DEFAULT_TIMEOUT + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return None + + def process_image(self, image): + """Process image.""" + raise NotImplementedError() + + def async_process_image(self, image): + """Process image. + + This method must be run in the event loop and returns a coroutine. + """ + return self.hass.loop.run_in_executor(None, self.process_image, image) + + @asyncio.coroutine + def async_update(self): + """Update image and process it. + + This method is a coroutine. + """ + camera = get_component('camera') + image = None + + try: + image = yield from camera.async_get_image( + self.hass, self.camera_entity, timeout=self.timeout) + + except HomeAssistantError as err: + _LOGGER.error("Error on receive image from entity: %s", err) + return + + # process image data + yield from self.async_process_image(image) diff --git a/homeassistant/components/image_processing/demo.py b/homeassistant/components/image_processing/demo.py new file mode 100644 index 00000000000..8ba835e8df0 --- /dev/null +++ b/homeassistant/components/image_processing/demo.py @@ -0,0 +1,84 @@ +""" +Support for the demo image processing. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/demo/ +""" + +from homeassistant.components.image_processing import ImageProcessingEntity +from homeassistant.components.image_processing.openalpr_local import ( + ImageProcessingAlprEntity) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the demo image_processing platform.""" + add_devices([ + DemoImageProcessing('camera.demo_camera', "Demo"), + DemoImageProcessingAlpr('camera.demo_camera', "Demo Alpr") + ]) + + +class DemoImageProcessing(ImageProcessingEntity): + """Demo alpr image processing entity.""" + + def __init__(self, camera_entity, name): + """Initialize demo alpr.""" + self._name = name + self._camera = camera_entity + self._count = 0 + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return self._camera + + @property + def name(self): + """Return the name of the entity.""" + return self._name + + @property + def state(self): + """Return the state of the entity.""" + return self._count + + def process_image(self, image): + """Process image.""" + self._count += 1 + + +class DemoImageProcessingAlpr(ImageProcessingAlprEntity): + """Demo alpr image processing entity.""" + + def __init__(self, camera_entity, name): + """Initialize demo alpr.""" + super().__init__() + + self._name = name + self._camera = camera_entity + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return self._camera + + @property + def confidence(self): + """Return minimum confidence for send events.""" + return 80 + + @property + def name(self): + """Return the name of the entity.""" + return self._name + + def process_image(self, image): + """Process image.""" + demo_data = { + 'AC3829': 98.3, + 'BE392034': 95.5, + 'CD02394': 93.4, + 'DF923043': 90.8 + } + + self.process_plates(demo_data, 1) diff --git a/homeassistant/components/image_processing/openalpr_cloud.py b/homeassistant/components/image_processing/openalpr_cloud.py new file mode 100644 index 00000000000..61b3442856a --- /dev/null +++ b/homeassistant/components/image_processing/openalpr_cloud.py @@ -0,0 +1,151 @@ +""" +Component that will help set the openalpr cloud for alpr processing. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/image_processing.openalpr_cloud/ +""" +import asyncio +from base64 import b64encode +import logging + +import aiohttp +import async_timeout +import voluptuous as vol + +from homeassistant.core import split_entity_id +from homeassistant.const import CONF_API_KEY +from homeassistant.components.image_processing import ( + PLATFORM_SCHEMA, CONF_CONFIDENCE, CONF_SOURCE, CONF_ENTITY_ID, CONF_NAME) +from homeassistant.components.image_processing.openalpr_local import ( + ImageProcessingAlprEntity) +from homeassistant.helpers.aiohttp_client import async_get_clientsession +import homeassistant.helpers.config_validation as cv + +_LOGGER = logging.getLogger(__name__) + +OPENALPR_API_URL = "https://api.openalpr.com/v1/recognize" + +OPENALPR_REGIONS = [ + 'us', + 'eu', + 'au', + 'auwide', + 'gb', + 'kr', + 'mx', + 'sg', +] + +CONF_REGION = 'region' +DEFAULT_CONFIDENCE = 80 + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_API_KEY): cv.string, + vol.Required(CONF_REGION): + vol.All(vol.Lower, vol.In(OPENALPR_REGIONS)), + vol.Optional(CONF_CONFIDENCE, default=DEFAULT_CONFIDENCE): + vol.All(vol.Coerce(float), vol.Range(min=0, max=100)) +}) + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Set up the openalpr cloud api platform.""" + confidence = config[CONF_CONFIDENCE] + params = { + 'secret_key': config[CONF_API_KEY], + 'tasks': "plate", + 'return_image': 0, + 'country': config[CONF_REGION], + } + + entities = [] + for camera in config[CONF_SOURCE]: + entities.append(OpenAlprCloudEntity( + camera[CONF_ENTITY_ID], params, confidence, camera.get(CONF_NAME) + )) + + yield from async_add_devices(entities) + + +class OpenAlprCloudEntity(ImageProcessingAlprEntity): + """OpenAlpr cloud entity.""" + + def __init__(self, camera_entity, params, confidence, name=None): + """Initialize openalpr local api.""" + super().__init__() + + self._params = params + self._camera = camera_entity + self._confidence = confidence + + if name: + self._name = name + else: + self._name = "OpenAlpr {0}".format( + split_entity_id(camera_entity)[1]) + + @property + def confidence(self): + """Return minimum confidence for send events.""" + return self._confidence + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return self._camera + + @property + def name(self): + """Return the name of the entity.""" + return self._name + + @asyncio.coroutine + def async_process_image(self, image): + """Process image. + + This method is a coroutine. + """ + websession = async_get_clientsession(self.hass) + params = self._params.copy() + + params['image_bytes'] = str(b64encode(image), 'utf-8') + + data = None + request = None + try: + with async_timeout.timeout(self.timeout, loop=self.hass.loop): + request = yield from websession.post( + OPENALPR_API_URL, params=params + ) + + data = yield from request.json() + + if request.status != 200: + _LOGGER.error("Error %d -> %s.", + request.status, data.get('error')) + return + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + _LOGGER.error("Timeout for openalpr api.") + return + + finally: + if request is not None: + yield from request.release() + + # processing api data + vehicles = 0 + result = {} + + for row in data['plate']['results']: + vehicles += 1 + + for p_data in row['candidates']: + try: + result.update( + {p_data['plate']: float(p_data['confidence'])}) + except ValueError: + continue + + self.async_process_plates(result, vehicles) diff --git a/homeassistant/components/image_processing/openalpr_local.py b/homeassistant/components/image_processing/openalpr_local.py new file mode 100644 index 00000000000..a1736c00ffc --- /dev/null +++ b/homeassistant/components/image_processing/openalpr_local.py @@ -0,0 +1,218 @@ +""" +Component that will help set the openalpr local for alpr processing. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/image_processing.openalpr_local/ +""" +import asyncio +import logging +import io +import re + +import voluptuous as vol + +from homeassistant.core import split_entity_id, callback +from homeassistant.const import STATE_UNKNOWN +import homeassistant.helpers.config_validation as cv +from homeassistant.components.image_processing import ( + PLATFORM_SCHEMA, ImageProcessingEntity, CONF_CONFIDENCE, CONF_SOURCE, + CONF_ENTITY_ID, CONF_NAME, ATTR_ENTITY_ID, ATTR_CONFIDENCE) +from homeassistant.util.async import run_callback_threadsafe + +_LOGGER = logging.getLogger(__name__) + +RE_ALPR_PLATE = re.compile(r"^plate\d*:") +RE_ALPR_RESULT = re.compile(r"- (\w*)\s*confidence: (\d*.\d*)") + +EVENT_FOUND_PLATE = 'found_plate' + +ATTR_PLATE = 'plate' +ATTR_PLATES = 'plates' +ATTR_VEHICLES = 'vehicles' + +OPENALPR_REGIONS = [ + 'us', + 'eu', + 'au', + 'auwide', + 'gb', + 'kr', + 'mx', + 'sg', +] + +CONF_REGION = 'region' +CONF_ALPR_BIN = 'alp_bin' + +DEFAULT_BINARY = 'alpr' +DEFAULT_CONFIDENCE = 80 + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_REGION): + vol.All(vol.Lower, vol.In(OPENALPR_REGIONS)), + vol.Optional(CONF_ALPR_BIN, default=DEFAULT_BINARY): cv.string, + vol.Optional(CONF_CONFIDENCE, default=DEFAULT_CONFIDENCE): + vol.All(vol.Coerce(float), vol.Range(min=0, max=100)) +}) + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Set up the openalpr local platform.""" + command = [config[CONF_ALPR_BIN], '-c', config[CONF_REGION], '-'] + confidence = config[CONF_CONFIDENCE] + + entities = [] + for camera in config[CONF_SOURCE]: + entities.append(OpenAlprLocalEntity( + camera[CONF_ENTITY_ID], command, confidence, camera.get(CONF_NAME) + )) + + yield from async_add_devices(entities) + + +class ImageProcessingAlprEntity(ImageProcessingEntity): + """Base entity class for alpr image processing.""" + + def __init__(self): + """Initialize base alpr entity.""" + self.plates = {} # last scan data + self.vehicles = 0 # vehicles count + + @property + def confidence(self): + """Return minimum confidence for send events.""" + return None + + @property + def state(self): + """Return the state of the entity.""" + confidence = 0 + plate = STATE_UNKNOWN + + # search high plate + for i_pl, i_co in self.plates.items(): + if i_co > confidence: + confidence = i_co + plate = i_pl + return plate + + @property + def state_attributes(self): + """Return device specific state attributes.""" + attr = { + ATTR_PLATES: self.plates, + ATTR_VEHICLES: self.vehicles + } + + return attr + + def process_plates(self, plates, vehicles): + """Send event with new plates and store data.""" + run_callback_threadsafe( + self.hass.loop, self.async_process_plates, plates, vehicles + ).result() + + @callback + def async_process_plates(self, plates, vehicles): + """Send event with new plates and store data. + + plates are a dict in follow format: + { 'plate': confidence } + + This method must be run in the event loop. + """ + plates = {plate: confidence for plate, confidence in plates.items() + if confidence >= self.confidence} + new_plates = set(plates) - set(self.plates) + + # send events + for i_plate in new_plates: + self.hass.async_add_job( + self.hass.bus.async_fire, EVENT_FOUND_PLATE, { + ATTR_PLATE: i_plate, + ATTR_ENTITY_ID: self.entity_id, + ATTR_CONFIDENCE: plates.get(i_plate), + } + ) + + # update entity store + self.plates = plates + self.vehicles = vehicles + + +class OpenAlprLocalEntity(ImageProcessingAlprEntity): + """OpenAlpr local api entity.""" + + def __init__(self, camera_entity, command, confidence, name=None): + """Initialize openalpr local api.""" + super().__init__() + + self._cmd = command + self._camera = camera_entity + self._confidence = confidence + + if name: + self._name = name + else: + self._name = "OpenAlpr {0}".format( + split_entity_id(camera_entity)[1]) + + @property + def confidence(self): + """Return minimum confidence for send events.""" + return self._confidence + + @property + def camera_entity(self): + """Return camera entity id from process pictures.""" + return self._camera + + @property + def name(self): + """Return the name of the entity.""" + return self._name + + @asyncio.coroutine + def async_process_image(self, image): + """Process image. + + This method is a coroutine. + """ + result = {} + vehicles = 0 + + alpr = yield from asyncio.create_subprocess_exec( + *self._cmd, + loop=self.hass.loop, + stdin=asyncio.subprocess.PIPE, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.DEVNULL + ) + + # send image + stdout, _ = yield from alpr.communicate(input=image) + stdout = io.StringIO(str(stdout, 'utf-8')) + + while True: + line = stdout.readline() + if not line: + break + + new_plates = RE_ALPR_PLATE.search(line) + new_result = RE_ALPR_RESULT.search(line) + + # found new vehicle + if new_plates: + vehicles += 1 + continue + + # found plate result + if new_result: + try: + result.update( + {new_result.group(1): float(new_result.group(2))}) + except ValueError: + continue + + self.async_process_plates(result, vehicles) diff --git a/homeassistant/components/image_processing/services.yaml b/homeassistant/components/image_processing/services.yaml new file mode 100644 index 00000000000..2c6369f9804 --- /dev/null +++ b/homeassistant/components/image_processing/services.yaml @@ -0,0 +1,9 @@ +# Describes the format for available image_processing services + +scan: + description: Process an image immediately + + fields: + entity_id: + description: Name(s) of entities to scan immediately + example: 'image_processing.alpr_garage' diff --git a/tests/components/camera/test_init.py b/tests/components/camera/test_init.py new file mode 100644 index 00000000000..2e58676edcc --- /dev/null +++ b/tests/components/camera/test_init.py @@ -0,0 +1,101 @@ +"""The tests for the camera component.""" +import asyncio +from unittest.mock import patch + +import pytest + +from homeassistant.bootstrap import setup_component +from homeassistant.const import ATTR_ENTITY_PICTURE +import homeassistant.components.camera as camera +from homeassistant.exceptions import HomeAssistantError +from homeassistant.util.async import run_coroutine_threadsafe + +from tests.common import get_test_home_assistant, assert_setup_component + + +class TestSetupCamera(object): + """Test class for setup camera.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_component(self): + """Setup demo platfrom on camera component.""" + config = { + camera.DOMAIN: { + 'platform': 'demo' + } + } + + with assert_setup_component(1, camera.DOMAIN): + setup_component(self.hass, camera.DOMAIN, config) + + +class TestGetImage(object): + """Test class for camera.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + camera.DOMAIN: { + 'platform': 'demo' + } + } + + setup_component(self.hass, camera.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + @patch('homeassistant.components.camera.demo.DemoCamera.camera_image', + autospec=True, return_value=b'Test') + def test_get_image_from_camera(self, mock_camera): + """Grab a image from camera entity.""" + self.hass.start() + + image = run_coroutine_threadsafe(camera.async_get_image( + self.hass, 'camera.demo_camera'), self.hass.loop).result() + + assert mock_camera.called + assert image == b'Test' + + def test_get_image_without_exists_camera(self): + """Try to get image without exists camera.""" + self.hass.states.remove('camera.demo_camera') + + with pytest.raises(HomeAssistantError): + run_coroutine_threadsafe(camera.async_get_image( + self.hass, 'camera.demo_camera'), self.hass.loop).result() + + def test_get_image_with_timeout(self, aioclient_mock): + """Try to get image with timeout.""" + aioclient_mock.get(self.url, exc=asyncio.TimeoutError()) + + with pytest.raises(HomeAssistantError): + run_coroutine_threadsafe(camera.async_get_image( + self.hass, 'camera.demo_camera'), self.hass.loop).result() + + assert len(aioclient_mock.mock_calls) == 1 + + def test_get_image_with_bad_http_state(self, aioclient_mock): + """Try to get image with bad http status.""" + aioclient_mock.get(self.url, status=400) + + with pytest.raises(HomeAssistantError): + run_coroutine_threadsafe(camera.async_get_image( + self.hass, 'camera.demo_camera'), self.hass.loop).result() + + assert len(aioclient_mock.mock_calls) == 1 diff --git a/tests/components/image_processing/__init__.py b/tests/components/image_processing/__init__.py new file mode 100644 index 00000000000..6e79d49c251 --- /dev/null +++ b/tests/components/image_processing/__init__.py @@ -0,0 +1 @@ +"""Test 'image_processing' component plaforms.""" diff --git a/tests/components/image_processing/test_init.py b/tests/components/image_processing/test_init.py new file mode 100644 index 00000000000..eb52e3262ab --- /dev/null +++ b/tests/components/image_processing/test_init.py @@ -0,0 +1,209 @@ +"""The tests for the image_processing component.""" +from unittest.mock import patch, PropertyMock + +from homeassistant.core import callback +from homeassistant.const import ATTR_ENTITY_PICTURE +from homeassistant.bootstrap import setup_component +from homeassistant.exceptions import HomeAssistantError +import homeassistant.components.image_processing as ip + +from tests.common import get_test_home_assistant, assert_setup_component + + +class TestSetupImageProcessing(object): + """Test class for setup image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_component(self): + """Setup demo platfrom on image_process component.""" + config = { + ip.DOMAIN: { + 'platform': 'demo' + } + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + def test_setup_component_with_service(self): + """Setup demo platfrom on image_process component test service.""" + config = { + ip.DOMAIN: { + 'platform': 'demo' + } + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.services.has_service(ip.DOMAIN, 'scan') + + +class TestImageProcessing(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + ip.DOMAIN: { + 'platform': 'demo' + }, + 'camera': { + 'platform': 'demo' + }, + } + + with patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessing.should_poll', + new_callable=PropertyMock(return_value=False)): + setup_component(self.hass, ip.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + @patch('homeassistant.components.camera.demo.DemoCamera.camera_image', + autospec=True, return_value=b'Test') + @patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessing.process_image', autospec=True) + def test_get_image_from_camera(self, mock_process, mock_camera): + """Grab a image from camera entity.""" + self.hass.start() + + ip.scan(self.hass, entity_id='image_processing.demo') + self.hass.block_till_done() + + assert mock_camera.called + assert mock_process.called + + assert mock_process.call_args[0][1] == b'Test' + + @patch('homeassistant.components.camera.async_get_image', + side_effect=HomeAssistantError()) + @patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessing.process_image', autospec=True) + def test_get_image_without_exists_camera(self, mock_process, mock_image): + """Try to get image without exists camera.""" + self.hass.states.remove('camera.demo_camera') + + ip.scan(self.hass, entity_id='image_processing.demo') + self.hass.block_till_done() + + assert mock_image.called + assert not mock_process.called + + +class TestImageProcessingAlpr(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + ip.DOMAIN: { + 'platform': 'demo' + }, + 'camera': { + 'platform': 'demo' + }, + } + + with patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessingAlpr.should_poll', + new_callable=PropertyMock(return_value=False)): + setup_component(self.hass, ip.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + self.alpr_events = [] + + @callback + def mock_alpr_event(event): + """Mock event.""" + self.alpr_events.append(event) + + self.hass.bus.listen('found_plate', mock_alpr_event) + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_alpr_event_single_call(self, aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + + ip.scan(self.hass, entity_id='image_processing.demo_alpr') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.demo_alpr') + + assert len(self.alpr_events) == 4 + assert state.state == 'AC3829' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'AC3829'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'AC3829' + assert event_data[0]['confidence'] == 98.3 + assert event_data[0]['entity_id'] == 'image_processing.demo_alpr' + + def test_alpr_event_double_call(self, aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + + ip.scan(self.hass, entity_id='image_processing.demo_alpr') + ip.scan(self.hass, entity_id='image_processing.demo_alpr') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.demo_alpr') + + assert len(self.alpr_events) == 4 + assert state.state == 'AC3829' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'AC3829'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'AC3829' + assert event_data[0]['confidence'] == 98.3 + assert event_data[0]['entity_id'] == 'image_processing.demo_alpr' + + @patch('homeassistant.components.image_processing.demo.' + 'DemoImageProcessingAlpr.confidence', + new_callable=PropertyMock(return_value=95)) + def test_alpr_event_single_call_confidence(self, confidence_mock, + aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + + ip.scan(self.hass, entity_id='image_processing.demo_alpr') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.demo_alpr') + + assert len(self.alpr_events) == 2 + assert state.state == 'AC3829' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'AC3829'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'AC3829' + assert event_data[0]['confidence'] == 98.3 + assert event_data[0]['entity_id'] == 'image_processing.demo_alpr' diff --git a/tests/components/image_processing/test_openalpr_cloud.py b/tests/components/image_processing/test_openalpr_cloud.py new file mode 100644 index 00000000000..8e9f35eb0b2 --- /dev/null +++ b/tests/components/image_processing/test_openalpr_cloud.py @@ -0,0 +1,212 @@ +"""The tests for the openalpr clooud platform.""" +import asyncio +from unittest.mock import patch, PropertyMock + +from homeassistant.core import callback +from homeassistant.const import ATTR_ENTITY_PICTURE +from homeassistant.bootstrap import setup_component +import homeassistant.components.image_processing as ip +from homeassistant.components.image_processing.openalpr_cloud import ( + OPENALPR_API_URL) + +from tests.common import ( + get_test_home_assistant, assert_setup_component, load_fixture) + + +class TestOpenAlprCloudlSetup(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_platform(self): + """Setup platform with one entity.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + 'region': 'eu', + 'api_key': 'sk_abcxyz123456', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.states.get('image_processing.openalpr_demo_camera') + + def test_setup_platform_name(self): + """Setup platform with one entity and set name.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera', + 'name': 'test local' + }, + 'region': 'eu', + 'api_key': 'sk_abcxyz123456', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.states.get('image_processing.test_local') + + def test_setup_platform_without_api_key(self): + """Setup platform with one entity without api_key.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + 'region': 'eu', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(0, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + def test_setup_platform_without_region(self): + """Setup platform with one entity without region.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + 'api_key': 'sk_abcxyz123456', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(0, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + +class TestOpenAlprCloud(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + ip.DOMAIN: { + 'platform': 'openalpr_cloud', + 'source': { + 'entity_id': 'camera.demo_camera', + 'name': 'test local' + }, + 'region': 'eu', + 'api_key': 'sk_abcxyz123456', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with patch('homeassistant.components.image_processing.openalpr_cloud.' + 'OpenAlprCloudEntity.should_poll', + new_callable=PropertyMock(return_value=False)): + setup_component(self.hass, ip.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + self.alpr_events = [] + + @callback + def mock_alpr_event(event): + """Mock event.""" + self.alpr_events.append(event) + + self.hass.bus.listen('found_plate', mock_alpr_event) + + self.params = { + 'secret_key': "sk_abcxyz123456", + 'tasks': "plate", + 'return_image': 0, + 'country': 'eu', + 'image_bytes': "aW1hZ2U=" + } + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_openalpr_process_image(self, aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + aioclient_mock.post( + OPENALPR_API_URL, params=self.params, + text=load_fixture('alpr_cloud.json'), status=200 + ) + + ip.scan(self.hass, entity_id='image_processing.test_local') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.test_local') + + assert len(aioclient_mock.mock_calls) == 2 + assert len(self.alpr_events) == 5 + assert state.attributes.get('vehicles') == 1 + assert state.state == 'H786P0J' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'H786P0J'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'H786P0J' + assert event_data[0]['confidence'] == float(90.436699) + assert event_data[0]['entity_id'] == \ + 'image_processing.test_local' + + def test_openalpr_process_image_api_error(self, aioclient_mock): + """Setup and scan a picture and test api error.""" + aioclient_mock.get(self.url, content=b'image') + aioclient_mock.post( + OPENALPR_API_URL, params=self.params, + text="{'error': 'error message'}", status=400 + ) + + ip.scan(self.hass, entity_id='image_processing.test_local') + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 2 + assert len(self.alpr_events) == 0 + + def test_openalpr_process_image_api_timeout(self, aioclient_mock): + """Setup and scan a picture and test api error.""" + aioclient_mock.get(self.url, content=b'image') + aioclient_mock.post( + OPENALPR_API_URL, params=self.params, + exc=asyncio.TimeoutError() + ) + + ip.scan(self.hass, entity_id='image_processing.test_local') + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 2 + assert len(self.alpr_events) == 0 diff --git a/tests/components/image_processing/test_openalpr_local.py b/tests/components/image_processing/test_openalpr_local.py new file mode 100644 index 00000000000..5186332661b --- /dev/null +++ b/tests/components/image_processing/test_openalpr_local.py @@ -0,0 +1,165 @@ +"""The tests for the openalpr local platform.""" +import asyncio +from unittest.mock import patch, PropertyMock, MagicMock + +from homeassistant.core import callback +from homeassistant.const import ATTR_ENTITY_PICTURE +from homeassistant.bootstrap import setup_component +import homeassistant.components.image_processing as ip + +from tests.common import ( + get_test_home_assistant, assert_setup_component, load_fixture) + + +@asyncio.coroutine +def mock_async_subprocess(): + """Get a Popen mock back.""" + async_popen = MagicMock() + + @asyncio.coroutine + def communicate(input=None): + """Communicate mock.""" + fixture = bytes(load_fixture('alpr_stdout.txt'), 'utf-8') + return (fixture, None) + + async_popen.communicate = communicate + return async_popen + + +class TestOpenAlprLocalSetup(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup_platform(self): + """Setup platform with one entity.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_local', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + 'region': 'eu', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.states.get('image_processing.openalpr_demo_camera') + + def test_setup_platform_name(self): + """Setup platform with one entity and set name.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_local', + 'source': { + 'entity_id': 'camera.demo_camera', + 'name': 'test local' + }, + 'region': 'eu', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(1, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + assert self.hass.states.get('image_processing.test_local') + + def test_setup_platform_without_region(self): + """Setup platform with one entity without region.""" + config = { + ip.DOMAIN: { + 'platform': 'openalpr_local', + 'source': { + 'entity_id': 'camera.demo_camera' + }, + }, + 'camera': { + 'platform': 'demo' + }, + } + + with assert_setup_component(0, ip.DOMAIN): + setup_component(self.hass, ip.DOMAIN, config) + + +class TestOpenAlprLocal(object): + """Test class for image processing.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + config = { + ip.DOMAIN: { + 'platform': 'openalpr_local', + 'source': { + 'entity_id': 'camera.demo_camera', + 'name': 'test local' + }, + 'region': 'eu', + }, + 'camera': { + 'platform': 'demo' + }, + } + + with patch('homeassistant.components.image_processing.openalpr_local.' + 'OpenAlprLocalEntity.should_poll', + new_callable=PropertyMock(return_value=False)): + setup_component(self.hass, ip.DOMAIN, config) + + state = self.hass.states.get('camera.demo_camera') + self.url = "{0}{1}".format( + self.hass.config.api.base_url, + state.attributes.get(ATTR_ENTITY_PICTURE)) + + self.alpr_events = [] + + @callback + def mock_alpr_event(event): + """Mock event.""" + self.alpr_events.append(event) + + self.hass.bus.listen('found_plate', mock_alpr_event) + + def teardown_method(self): + """Stop everything that was started.""" + self.hass.stop() + + @patch('asyncio.create_subprocess_exec', + return_value=mock_async_subprocess()) + def test_openalpr_process_image(self, popen_mock, aioclient_mock): + """Setup and scan a picture and test plates from event.""" + aioclient_mock.get(self.url, content=b'image') + + ip.scan(self.hass, entity_id='image_processing.test_local') + self.hass.block_till_done() + + state = self.hass.states.get('image_processing.test_local') + + assert popen_mock.called + assert len(self.alpr_events) == 5 + assert state.attributes.get('vehicles') == 1 + assert state.state == 'PE3R2X' + + event_data = [event.data for event in self.alpr_events if + event.data.get('plate') == 'PE3R2X'] + assert len(event_data) == 1 + assert event_data[0]['plate'] == 'PE3R2X' + assert event_data[0]['confidence'] == float(98.9371) + assert event_data[0]['entity_id'] == \ + 'image_processing.test_local' diff --git a/tests/fixtures/alpr_cloud.json b/tests/fixtures/alpr_cloud.json new file mode 100644 index 00000000000..bbd3ec41214 --- /dev/null +++ b/tests/fixtures/alpr_cloud.json @@ -0,0 +1,103 @@ +{ + "plate":{ + "data_type":"alpr_results", + "epoch_time":1483953071942, + "img_height":640, + "img_width":480, + "results":[ + { + "plate":"H786P0J", + "confidence":90.436699, + "region_confidence":0, + "region":"", + "plate_index":0, + "processing_time_ms":16.495636, + "candidates":[ + { + "matches_template":0, + "plate":"H786P0J", + "confidence":90.436699 + }, + { + "matches_template":0, + "plate":"H786POJ", + "confidence":88.046814 + }, + { + "matches_template":0, + "plate":"H786PDJ", + "confidence":85.58432 + }, + { + "matches_template":0, + "plate":"H786PQJ", + "confidence":85.472939 + }, + { + "matches_template":0, + "plate":"HS786P0J", + "confidence":75.455666 + }, + { + "matches_template":0, + "plate":"H2786P0J", + "confidence":75.256081 + }, + { + "matches_template":0, + "plate":"H3786P0J", + "confidence":65.228058 + }, + { + "matches_template":0, + "plate":"H786PGJ", + "confidence":63.303329 + }, + { + "matches_template":0, + "plate":"HS786POJ", + "confidence":83.065773 + }, + { + "matches_template":0, + "plate":"H2786POJ", + "confidence":52.866196 + } + ], + "coordinates":[ + { + "y":384, + "x":156 + }, + { + "y":384, + "x":289 + }, + { + "y":409, + "x":289 + }, + { + "y":409, + "x":156 + } + ], + "matches_template":0, + "requested_topn":10 + } + ], + "version":2, + "processing_time_ms":115.687286, + "regions_of_interest":[ + + ] + }, + "image_bytes":"", + "img_width":480, + "credits_monthly_used":5791, + "img_height":640, + "total_processing_time":120.71599999762839, + "credits_monthly_total":10000000000, + "image_bytes_prefix":"data:image/jpeg;base64,", + "credit_cost":1 +} diff --git a/tests/fixtures/alpr_stdout.txt b/tests/fixtures/alpr_stdout.txt new file mode 100644 index 00000000000..255b57c5790 --- /dev/null +++ b/tests/fixtures/alpr_stdout.txt @@ -0,0 +1,12 @@ + +plate0: top 10 results -- Processing Time = 58.1879ms. + - PE3R2X confidence: 98.9371 + - PE32X confidence: 98.1385 + - PE3R2 confidence: 97.5444 + - PE3R2Y confidence: 86.1448 + - P63R2X confidence: 82.9016 + - FE3R2X confidence: 72.1147 + - PE32 confidence: 66.7458 + - PE32Y confidence: 65.3462 + - P632X confidence: 62.1031 + - P63R2 confidence: 61.5089 diff --git a/tests/test_util/aiohttp.py b/tests/test_util/aiohttp.py index 124fcf72329..dcdf69395b4 100644 --- a/tests/test_util/aiohttp.py +++ b/tests/test_util/aiohttp.py @@ -150,6 +150,11 @@ class AiohttpClientMockResponse: """Return mock response as a string.""" return self.response.decode(encoding) + @asyncio.coroutine + def json(self, encoding='utf-8'): + """Return mock response as a json.""" + return _json.loads(self.response.decode(encoding)) + @asyncio.coroutine def release(self): """Mock release.""" From b817c7d0c2e9803779db1573d970695ee9f44940 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 11:53:00 +0100 Subject: [PATCH 167/189] Bugfix camera fake image (#5314) * Bugfix camera fake image * add logger --- homeassistant/components/camera/__init__.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 168f821c6c0..2d4e73cd6e4 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -22,6 +22,8 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa from homeassistant.components.http import HomeAssistantView, KEY_AUTHENTICATED +_LOGGER = logging.getLogger(__name__) + DOMAIN = 'camera' DEPENDENCIES = ['http'] SCAN_INTERVAL = timedelta(seconds=30) @@ -72,8 +74,7 @@ def async_get_image(hass, entity_id, timeout=10): @asyncio.coroutine def async_setup(hass, config): """Setup the camera component.""" - component = EntityComponent( - logging.getLogger(__name__), DOMAIN, hass, SCAN_INTERVAL) + component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL) hass.http.register_view(CameraImageView(component.entities)) hass.http.register_view(CameraMjpegStream(component.entities)) @@ -172,8 +173,14 @@ class Camera(Entity): yield from response.drain() yield from asyncio.sleep(.5) + + except asyncio.CancelledError: + _LOGGER.debug("Close stream by browser.") + response = None + finally: - yield from response.write_eof() + if response is not None: + yield from response.write_eof() @property def state(self): From c3783bf49b4676d5f411165c4a4896235b2fa444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= <michael.arnauts@gmail.com> Date: Sat, 14 Jan 2017 11:55:29 +0100 Subject: [PATCH 168/189] Bugfix for ping component now DEFAULT_SCAN_INTERVAL is a timedelta (#5318) --- homeassistant/components/device_tracker/ping.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/ping.py b/homeassistant/components/device_tracker/ping.py index de75a09a943..9c64d37f820 100644 --- a/homeassistant/components/device_tracker/ping.py +++ b/homeassistant/components/device_tracker/ping.py @@ -77,8 +77,8 @@ def setup_scanner(hass, config, see): """Setup the Host objects and return the update function.""" hosts = [Host(ip, dev_id, hass, config) for (dev_id, ip) in config[const.CONF_HOSTS].items()] - interval = timedelta(seconds=len(hosts) * config[CONF_PING_COUNT] + - DEFAULT_SCAN_INTERVAL) + interval = timedelta(seconds=len(hosts) * config[CONF_PING_COUNT]) + \ + DEFAULT_SCAN_INTERVAL _LOGGER.info("Started ping tracker with interval=%s on hosts: %s", interval, ",".join([host.ip_address for host in hosts])) From f2a42d767e44b851693ea65b631433f3f7c7271c Mon Sep 17 00:00:00 2001 From: joopert <joopert@users.noreply.github.com> Date: Sat, 14 Jan 2017 14:54:00 +0100 Subject: [PATCH 169/189] fix hass.loop.run_in_executor in mediaplayer init (#5320) --- homeassistant/components/media_player/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 2a1e5e68779..f97b169e1bc 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -756,7 +756,7 @@ class MediaPlayerDevice(Entity): """ if hasattr(self, 'volume_up'): # pylint: disable=no-member - yield from self.hass.run_in_executor(None, self.volume_up) + yield from self.hass.loop.run_in_executor(None, self.volume_up) if self.volume_level < 1: yield from self.async_set_volume_level( @@ -770,7 +770,7 @@ class MediaPlayerDevice(Entity): """ if hasattr(self, 'volume_down'): # pylint: disable=no-member - yield from self.hass.run_in_executor(None, self.volume_down) + yield from self.hass.loop.run_in_executor(None, self.volume_down) if self.volume_level > 0: yield from self.async_set_volume_level( From 2e7ae1d5fe8e18102d357890a89245b124a1af0e Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sat, 14 Jan 2017 15:16:42 +0100 Subject: [PATCH 170/189] Update the link to the docs (#5321) --- homeassistant/components/tts/picotts.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py index 28db88c03b0..b0c5f5deef7 100644 --- a/homeassistant/components/tts/picotts.py +++ b/homeassistant/components/tts/picotts.py @@ -1,8 +1,8 @@ """ -Support for the picotts speech service. +Support for the Pico TTS speech service. For more details about this component, please refer to the documentation at -https://home-assistant.io/components/tts/picotts/ +https://home-assistant.io/components/tts.picotts/ """ import os import tempfile @@ -33,10 +33,10 @@ def get_engine(hass, config): class PicoProvider(Provider): - """pico speech api provider.""" + """The Pico TTS API provider.""" def __init__(self, lang): - """Initialize pico provider.""" + """Initialize Pico TTS provider.""" self._lang = lang @property From 7ed83306eaa254b7cd7aa16dbbcb50c6bfff77ea Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sat, 14 Jan 2017 15:36:20 +0100 Subject: [PATCH 171/189] Add warning to openalpr (#5315) * Add warning to openalpr * fix lint * update comment --- homeassistant/components/openalpr.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/openalpr.py b/homeassistant/components/openalpr.py index 27a573b1dbf..eaaba5f8af8 100644 --- a/homeassistant/components/openalpr.py +++ b/homeassistant/components/openalpr.py @@ -126,6 +126,9 @@ def setup(hass, config): binary = config[DOMAIN].get(CONF_ALPR_BINARY) use_render_fffmpeg = False + _LOGGER.warning("This platform is replaced by 'image_processing' and will " + "be removed in a future version!") + component = EntityComponent(_LOGGER, DOMAIN, hass) openalpr_device = [] From d4eabaf844a0f886ef43436f52713815ecdb0467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= <michael.arnauts@gmail.com> Date: Sat, 14 Jan 2017 16:41:41 +0100 Subject: [PATCH 172/189] Remove build dirs from docker image to keep the layers small (#5243) * Remove build dirs from docker image to keep the layers small * Create setup_docker_prereqs script to prepare docker env * Add documentation for required packages, drop colorlog and cython in first step of Dockerfile since it will be installed later on anyway. Drop libglib2.0-dev and libbluetooth-dev * Also remove early install of colorlog and cython in Dockerfile.dev * Re-add libglib2.0-dev and libbluetooth-dev for Bluetooth LE --- Dockerfile | 21 +++--------- script/build_libcec | 2 +- script/setup_docker_prereqs | 50 ++++++++++++++++++++++++++++ virtualization/Docker/Dockerfile.dev | 28 ++++------------ 4 files changed, 61 insertions(+), 40 deletions(-) create mode 100755 script/setup_docker_prereqs diff --git a/Dockerfile b/Dockerfile index 342b62e6ec1..7522ca9cb64 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,24 +6,11 @@ VOLUME /config RUN mkdir -p /usr/src/app WORKDIR /usr/src/app -RUN pip3 install --no-cache-dir colorlog cython - -# For the nmap tracker, bluetooth tracker, Z-Wave, tellstick -RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list && \ - wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ - apt-get update && \ - apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ - libtelldus-core2 cmake libxrandr-dev swig && \ - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -COPY script/build_python_openzwave script/build_python_openzwave -RUN script/build_python_openzwave && \ - mkdir -p /usr/local/share/python-openzwave && \ - ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config - -COPY script/build_libcec script/build_libcec -RUN script/build_libcec +# Copy build scripts +COPY script/setup_docker_prereqs script/build_python_openzwave script/build_libcec script/ +RUN script/setup_docker_prereqs +# Install hass component dependencies COPY requirements_all.txt requirements_all.txt RUN pip3 install --no-cache-dir -r requirements_all.txt && \ pip3 install --no-cache-dir mysqlclient psycopg2 uvloop diff --git a/script/build_libcec b/script/build_libcec index ad7e62c50a6..1c30d634437 100755 --- a/script/build_libcec +++ b/script/build_libcec @@ -1,7 +1,7 @@ #!/bin/sh # Sets up and builds libcec to be used with Home Assistant. # Dependencies that need to be installed: -# apt-get install cmake libudev-dev libxrandr-dev python-dev swig +# apt-get install cmake libudev-dev libxrandr-dev swig # Stop on errors set -e diff --git a/script/setup_docker_prereqs b/script/setup_docker_prereqs new file mode 100755 index 00000000000..a7c7e493f27 --- /dev/null +++ b/script/setup_docker_prereqs @@ -0,0 +1,50 @@ +#!/bin/bash +# Install requirements and build dependencies for Home Assinstant in Docker. + +# Required debian packages for running hass or components +PACKAGES=( + # homeassistant.components.device_tracker.nmap_tracker + nmap net-tools + # homeassistant.components.device_tracker.bluetooth_tracker + bluetooth libglib2.0-dev libbluetooth-dev + # homeassistant.components.tellstick + libtelldus-core2 +) + +# Required debian packages for building dependencies +PACKAGES_DEV=( + # python-openzwave + cython3 libudev-dev + # libcec + cmake swig libxrandr-dev +) + +# Stop on errors +set -e + +cd "$(dirname "$0")/.." + +# Add Tellstick repository +echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list +wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - + +# Install packages +apt-get update +apt-get install -y --no-install-recommends ${PACKAGES[@]} ${PACKAGES_DEV[@]} + +# Build and install openzwave +script/build_python_openzwave +mkdir -p /usr/local/share/python-openzwave +ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config + +# Build and install libcec +script/build_libcec + +# Remove packages +apt-get remove -y --purge ${PACKAGES_DEV[@]} +apt-get -y --purge autoremove + +# Cleanup +apt-get clean +rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* build/ + diff --git a/virtualization/Docker/Dockerfile.dev b/virtualization/Docker/Dockerfile.dev index f86a0e3de7f..7968df25b69 100644 --- a/virtualization/Docker/Dockerfile.dev +++ b/virtualization/Docker/Dockerfile.dev @@ -10,24 +10,11 @@ VOLUME /config RUN mkdir -p /usr/src/app WORKDIR /usr/src/app -RUN pip3 install --no-cache-dir colorlog cython - -# For the nmap tracker, bluetooth tracker, Z-Wave, tellstick -RUN echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list && \ - wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - && \ - apt-get update && \ - apt-get install -y --no-install-recommends nmap net-tools cython3 libudev-dev sudo libglib2.0-dev bluetooth libbluetooth-dev \ - libtelldus-core2 cmake libxrandr-dev swig && \ - apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -COPY script/build_python_openzwave script/build_python_openzwave -RUN script/build_python_openzwave && \ - mkdir -p /usr/local/share/python-openzwave && \ - ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config - -COPY script/build_libcec script/build_libcec -RUN script/build_libcec +# Copy build scripts +COPY script/setup_docker_prereqs script/build_python_openzwave script/build_libcec script/ +RUN script/setup_docker_prereqs +# Install hass component dependencies COPY requirements_all.txt requirements_all.txt RUN pip3 install --no-cache-dir -r requirements_all.txt && \ pip3 install --no-cache-dir mysqlclient psycopg2 uvloop @@ -42,13 +29,10 @@ RUN curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - && \ RUN pip3 install --no-cache-dir tox # Copy over everything required to run tox -COPY requirements_test.txt . -COPY setup.cfg . -COPY setup.py . -COPY tox.ini . +COPY requirements_test.txt setup.cfg setup.py tox.ini ./ COPY homeassistant/const.py homeassistant/const.py -# Get all dependencies +# Prefetch dependencies for tox RUN tox -e py35 --notest # END: Development additions From ef4a9bf35478eac72a7f9b3cdd4bab923600d251 Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sat, 14 Jan 2017 17:08:21 +0100 Subject: [PATCH 173/189] Add timeout to requests, remove pylint disable, and docsstrings (#5326) --- homeassistant/components/switch/kankun.py | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/switch/kankun.py b/homeassistant/components/switch/kankun.py index 252839004ee..f3008d3b086 100644 --- a/homeassistant/components/switch/kankun.py +++ b/homeassistant/components/switch/kankun.py @@ -1,10 +1,11 @@ """ -Support for customised Kankun SP3 wifi switch. +Support for customised Kankun SP3 Wifi switch. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/switch.kankun/ """ import logging + import requests import voluptuous as vol @@ -35,7 +36,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices_callback, discovery_info=None): - """Find and return kankun switches.""" + """Set up Kankun Wifi switches.""" switches = config.get('switches', {}) devices = [] @@ -54,15 +55,14 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): class KankunSwitch(SwitchDevice): - """Represents a Kankun wifi switch.""" + """Representation of a Kankun Wifi switch.""" - # pylint: disable=too-many-arguments def __init__(self, hass, name, host, port, path, user, passwd): - """Initialise device.""" + """Initialise the device.""" self._hass = hass self._name = name self._state = False - self._url = "http://{}:{}{}".format(host, port, path) + self._url = 'http://{}:{}{}'.format(host, port, path) if user is not None: self._auth = (user, passwd) else: @@ -70,25 +70,25 @@ class KankunSwitch(SwitchDevice): def _switch(self, newstate): """Switch on or off.""" - _LOGGER.info('Switching to state: %s', newstate) + _LOGGER.info("Switching to state: %s", newstate) try: - req = requests.get("{}?set={}".format(self._url, newstate), - auth=self._auth) + req = requests.get('{}?set={}'.format(self._url, newstate), + auth=self._auth, timeout=5) return req.json()['ok'] except requests.RequestException: - _LOGGER.error('Switching failed.') + _LOGGER.error("Switching failed") def _query_state(self): """Query switch state.""" - _LOGGER.info('Querying state from: %s', self._url) + _LOGGER.info("Querying state from: %s", self._url) try: - req = requests.get("{}?get=state".format(self._url), - auth=self._auth) + req = requests.get('{}?get=state'.format(self._url), + auth=self._auth, timeout=5) return req.json()['state'] == "on" except requests.RequestException: - _LOGGER.error('State query failed.') + _LOGGER.error("State query failed") @property def should_poll(self): From 2aa996b55820ef71367e0957701272c4ef44ab1d Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sat, 14 Jan 2017 17:08:48 +0100 Subject: [PATCH 174/189] Update name (#5324) --- homeassistant/components/bbb_gpio.py | 7 ++----- homeassistant/components/switch/bbb_gpio.py | 20 +++++--------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/bbb_gpio.py b/homeassistant/components/bbb_gpio.py index 52ab14689fd..d8acaaa184c 100644 --- a/homeassistant/components/bbb_gpio.py +++ b/homeassistant/components/bbb_gpio.py @@ -18,7 +18,7 @@ DOMAIN = 'bbb_gpio' # pylint: disable=no-member def setup(hass, config): - """Setup the Beaglebone black GPIO component.""" + """Set up the BeagleBone Black GPIO component.""" # pylint: disable=import-error import Adafruit_BBIO.GPIO as GPIO @@ -71,7 +71,4 @@ def edge_detect(pin, event_callback, bounce): # pylint: disable=import-error,undefined-variable import Adafruit_BBIO.GPIO as GPIO GPIO.add_event_detect( - pin, - GPIO.BOTH, - callback=event_callback, - bouncetime=bounce) + pin, GPIO.BOTH, callback=event_callback, bouncetime=bounce) diff --git a/homeassistant/components/switch/bbb_gpio.py b/homeassistant/components/switch/bbb_gpio.py index f765cb95e1f..ce2d91273f9 100644 --- a/homeassistant/components/switch/bbb_gpio.py +++ b/homeassistant/components/switch/bbb_gpio.py @@ -1,18 +1,8 @@ """ -Allows to configure a switch using BBB GPIO. +Allows to configure a switch using BeagleBone Black GPIO. -Switch example for two GPIOs pins P9_12 and P9_42 -Allowed GPIO pin name is GPIOxxx or Px_x - -switch: - - platform: bbb_gpio - pins: - GPIO0_7: - name: LED Red - P9_12: - name: LED Green - initial: true - invert_logic: true +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/switch.bbb_gpio/ """ import logging @@ -46,7 +36,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Beaglebone GPIO devices.""" + """Set up the BeagleBone Black GPIO devices.""" pins = config.get(CONF_PINS) switches = [] @@ -56,7 +46,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class BBBGPIOSwitch(ToggleEntity): - """Representation of a Beaglebone GPIO.""" + """Representation of a BeagleBone Black GPIO.""" def __init__(self, pin, params): """Initialize the pin.""" From 03a6aa48e07f219045e49aa740cc2a2e32cc6f6b Mon Sep 17 00:00:00 2001 From: Colin O'Dell <colinodell@gmail.com> Date: Sat, 14 Jan 2017 12:41:38 -0500 Subject: [PATCH 175/189] Copy openzwave config to ensure it exists (fixes #5328) (#5329) --- script/setup_docker_prereqs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/setup_docker_prereqs b/script/setup_docker_prereqs index a7c7e493f27..42e1fd49bf6 100755 --- a/script/setup_docker_prereqs +++ b/script/setup_docker_prereqs @@ -35,7 +35,7 @@ apt-get install -y --no-install-recommends ${PACKAGES[@]} ${PACKAGES_DEV[@]} # Build and install openzwave script/build_python_openzwave mkdir -p /usr/local/share/python-openzwave -ln -sf /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config +cp -R /usr/src/app/build/python-openzwave/openzwave/config /usr/local/share/python-openzwave/config # Build and install libcec script/build_libcec From bf3e5b460e1e7b171bf8fb2a531f9a5617037d2e Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sat, 14 Jan 2017 18:42:45 +0100 Subject: [PATCH 176/189] Clean-up (#5327) --- homeassistant/components/insteon_local.py | 19 +++---- .../components/light/insteon_local.py | 51 +++++++------------ .../components/switch/insteon_local.py | 49 +++++++----------- 3 files changed, 43 insertions(+), 76 deletions(-) diff --git a/homeassistant/components/insteon_local.py b/homeassistant/components/insteon_local.py index 7b35b45293c..c2007dd51f3 100644 --- a/homeassistant/components/insteon_local.py +++ b/homeassistant/components/insteon_local.py @@ -1,28 +1,25 @@ """ -Local Support for Insteon. - -Based on the insteonlocal library -https://github.com/phareous/insteonlocal +Local support for Insteon. For more details about this component, please refer to the documentation at https://home-assistant.io/components/insteon_local/ """ import logging -import voluptuous as vol + import requests -from homeassistant.const import (CONF_PASSWORD, CONF_USERNAME, CONF_HOST, - CONF_PORT, CONF_TIMEOUT) +import voluptuous as vol + +from homeassistant.const import ( + CONF_PASSWORD, CONF_USERNAME, CONF_HOST, CONF_PORT, CONF_TIMEOUT) import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['insteonlocal==0.39'] _LOGGER = logging.getLogger(__name__) -DOMAIN = 'insteon_local' - DEFAULT_PORT = 25105 - DEFAULT_TIMEOUT = 10 +DOMAIN = 'insteon_local' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -36,7 +33,7 @@ CONFIG_SCHEMA = vol.Schema({ def setup(hass, config): - """Setup Insteon Hub component. + """Set up Insteon Hub component. This will automatically import associated lights. """ diff --git a/homeassistant/components/light/insteon_local.py b/homeassistant/components/light/insteon_local.py index 9c40ec9c4f7..c6a52be2842 100644 --- a/homeassistant/components/light/insteon_local.py +++ b/homeassistant/components/light/insteon_local.py @@ -1,50 +1,35 @@ """ Support for Insteon dimmers via local hub control. -Based on the insteonlocal library -https://github.com/phareous/insteonlocal - For more details about this component, please refer to the documentation at https://home-assistant.io/components/light.insteon_local/ - --- -Example platform config --- - -insteon_local: - host: YOUR HUB IP - username: YOUR HUB USERNAME - password: YOUR HUB PASSWORD - timeout: 10 - port: 25105 - """ import json import logging import os from datetime import timedelta -from homeassistant.components.light import (ATTR_BRIGHTNESS, - SUPPORT_BRIGHTNESS, Light) + +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, SUPPORT_BRIGHTNESS, Light) from homeassistant.loader import get_component import homeassistant.util as util -INSTEON_LOCAL_LIGHTS_CONF = 'insteon_local_lights.conf' +_CONFIGURING = {} +_LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['insteon_local'] +DOMAIN = 'light' + +INSTEON_LOCAL_LIGHTS_CONF = 'insteon_local_lights.conf' + +MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) SUPPORT_INSTEON_LOCAL = SUPPORT_BRIGHTNESS -MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) -MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) - -DOMAIN = "light" - -_LOGGER = logging.getLogger(__name__) -_CONFIGURING = {} - def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Insteon local light platform.""" + """Set up the Insteon local light platform.""" insteonhub = hass.data['insteon_local'] conf_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) @@ -92,12 +77,12 @@ def request_configuration(device_id, insteonhub, model, hass, def setup_light(device_id, name, insteonhub, hass, add_devices_callback): - """Setup light.""" + """Set up the light.""" if device_id in _CONFIGURING: request_id = _CONFIGURING.pop(device_id) configurator = get_component('configurator') configurator.request_done(request_id) - _LOGGER.info('Device configuration done!') + _LOGGER.info("Device configuration done!") conf_lights = config_from_file(hass.config.path(INSTEON_LOCAL_LIGHTS_CONF)) if device_id not in conf_lights: @@ -106,7 +91,7 @@ def setup_light(device_id, name, insteonhub, hass, add_devices_callback): if not config_from_file( hass.config.path(INSTEON_LOCAL_LIGHTS_CONF), conf_lights): - _LOGGER.error('failed to save config file') + _LOGGER.error("Failed to save configuration file") device = insteonhub.dimmer(device_id) add_devices_callback([InsteonLocalDimmerDevice(device, name)]) @@ -130,7 +115,7 @@ def config_from_file(filename, config=None): with open(filename, 'r') as fdesc: return json.loads(fdesc.read()) except IOError as error: - _LOGGER.error('Reading config file failed: %s', error) + _LOGGER.error("Reading configuration file failed: %s", error) # This won't work yet return False else: @@ -153,8 +138,8 @@ class InsteonLocalDimmerDevice(Light): @property def unique_id(self): - """Return the ID of this insteon node.""" - return 'insteon_local_' + self.node.device_id + """Return the ID of this Insteon node.""" + return 'insteon_local_{}'.format(self.node.device_id) @property def brightness(self): diff --git a/homeassistant/components/switch/insteon_local.py b/homeassistant/components/switch/insteon_local.py index c088e2cf072..54350781344 100644 --- a/homeassistant/components/switch/insteon_local.py +++ b/homeassistant/components/switch/insteon_local.py @@ -1,56 +1,41 @@ """ Support for Insteon switch devices via local hub support. -Based on the insteonlocal library -https://github.com/phareous/insteonlocal - For more details about this component, please refer to the documentation at https://home-assistant.io/components/switch.insteon_local/ - --- -Example platform config --- - -insteon_local: - host: YOUR HUB IP - username: YOUR HUB USERNAME - password: YOUR HUB PASSWORD - timeout: 10 - port: 25105 """ import json import logging import os from datetime import timedelta + from homeassistant.components.switch import SwitchDevice from homeassistant.loader import get_component import homeassistant.util as util -INSTEON_LOCAL_SWITCH_CONF = 'insteon_local_switch.conf' +_CONFIGURING = {} +_LOGGER = logging.getLogger(__name__) DEPENDENCIES = ['insteon_local'] +DOMAIN = 'switch' -_LOGGER = logging.getLogger(__name__) +INSTEON_LOCAL_SWITCH_CONF = 'insteon_local_switch.conf' -MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) - -DOMAIN = "switch" - -_LOGGER = logging.getLogger(__name__) -_CONFIGURING = {} +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the Insteon local switch platform.""" + """Set up the Insteon local switch platform.""" insteonhub = hass.data['insteon_local'] conf_switches = config_from_file(hass.config.path( INSTEON_LOCAL_SWITCH_CONF)) if len(conf_switches): for device_id in conf_switches: - setup_switch(device_id, conf_switches[device_id], insteonhub, - hass, add_devices) + setup_switch( + device_id, conf_switches[device_id], insteonhub, hass, + add_devices) linked = insteonhub.get_linked() @@ -90,12 +75,12 @@ def request_configuration(device_id, insteonhub, model, hass, def setup_switch(device_id, name, insteonhub, hass, add_devices_callback): - """Setup switch.""" + """Set up the switch.""" if device_id in _CONFIGURING: request_id = _CONFIGURING.pop(device_id) configurator = get_component('configurator') configurator.request_done(request_id) - _LOGGER.info('Device configuration done!') + _LOGGER.info("Device configuration done!") conf_switch = config_from_file(hass.config.path(INSTEON_LOCAL_SWITCH_CONF)) if device_id not in conf_switch: @@ -103,7 +88,7 @@ def setup_switch(device_id, name, insteonhub, hass, add_devices_callback): if not config_from_file( hass.config.path(INSTEON_LOCAL_SWITCH_CONF), conf_switch): - _LOGGER.error('failed to save config file') + _LOGGER.error("Failed to save configuration file") device = insteonhub.switch(device_id) add_devices_callback([InsteonLocalSwitchDevice(device, name)]) @@ -117,7 +102,7 @@ def config_from_file(filename, config=None): with open(filename, 'w') as fdesc: fdesc.write(json.dumps(config)) except IOError as error: - _LOGGER.error('Saving config file failed: %s', error) + _LOGGER.error("Saving configuration file failed: %s", error) return False return True else: @@ -127,7 +112,7 @@ def config_from_file(filename, config=None): with open(filename, 'r') as fdesc: return json.loads(fdesc.read()) except IOError as error: - _LOGGER.error('Reading config file failed: %s', error) + _LOGGER.error("Reading config file failed: %s", error) # This won't work yet return False else: @@ -150,8 +135,8 @@ class InsteonLocalSwitchDevice(SwitchDevice): @property def unique_id(self): - """Return the ID of this insteon node.""" - return 'insteon_local_' + self.node.device_id + """Return the ID of this Insteon node.""" + return 'insteon_local_{}'.format(self.node.device_id) @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) def update(self): From e3418f633ce13364544fd4e426ba0a2be6a570d7 Mon Sep 17 00:00:00 2001 From: Colin O'Dell <colinodell@gmail.com> Date: Sat, 14 Jan 2017 12:43:40 -0500 Subject: [PATCH 177/189] Add ffmpeg to Docker from jessie-backports (#5322) --- script/setup_docker_prereqs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/script/setup_docker_prereqs b/script/setup_docker_prereqs index 42e1fd49bf6..d6ec2789c80 100755 --- a/script/setup_docker_prereqs +++ b/script/setup_docker_prereqs @@ -11,6 +11,12 @@ PACKAGES=( libtelldus-core2 ) +# Required debian packages for running hass or components from jessie-backports +PACKAGES_BACKPORTS=( + # homeassistant.components.ffmpeg + ffmpeg +) + # Required debian packages for building dependencies PACKAGES_DEV=( # python-openzwave @@ -28,9 +34,13 @@ cd "$(dirname "$0")/.." echo "deb http://download.telldus.com/debian/ stable main" >> /etc/apt/sources.list.d/telldus.list wget -qO - http://download.telldus.se/debian/telldus-public.key | apt-key add - +# Add jessie-backports +echo "deb http://httpredir.debian.org/debian jessie-backports main" >> /etc/apt/sources.list + # Install packages apt-get update apt-get install -y --no-install-recommends ${PACKAGES[@]} ${PACKAGES_DEV[@]} +apt-get install -y --no-install-recommends -t jessie-backports ${PACKAGES_BACKPORTS[@]} # Build and install openzwave script/build_python_openzwave From 3b9fb6ccf55a764aff76969e110532950a6f3072 Mon Sep 17 00:00:00 2001 From: Thibault Cohen <titilambert@gmail.com> Date: Sat, 14 Jan 2017 12:52:47 -0500 Subject: [PATCH 178/189] Improve InfluxDB (#5238) * Revert #4791 and fixes #4696 * Update influxDB based on PR comments * Add migration script * Update influxdb_migrator based on PR comments * Add override_measurement option to influxdb_migrator * Rename value field to state when data is string type * Fix influxdb cloning query --- homeassistant/components/influxdb.py | 77 +++--- homeassistant/scripts/influxdb_migrator.py | 193 +++++++++++++++ tests/components/test_influxdb.py | 260 ++++++++++++++------- 3 files changed, 418 insertions(+), 112 deletions(-) create mode 100644 homeassistant/scripts/influxdb_migrator.py diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index 0250efae818..5221679b6b5 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -9,8 +9,9 @@ import logging import voluptuous as vol from homeassistant.const import ( - EVENT_STATE_CHANGED, CONF_HOST, CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, - CONF_USERNAME, CONF_BLACKLIST, CONF_PASSWORD, CONF_WHITELIST) + EVENT_STATE_CHANGED, STATE_UNAVAILABLE, STATE_UNKNOWN, CONF_HOST, + CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, CONF_USERNAME, CONF_BLACKLIST, + CONF_PASSWORD, CONF_WHITELIST) from homeassistant.helpers import state as state_helper import homeassistant.helpers.config_validation as cv @@ -21,6 +22,7 @@ _LOGGER = logging.getLogger(__name__) CONF_DB_NAME = 'database' CONF_TAGS = 'tags' CONF_DEFAULT_MEASUREMENT = 'default_measurement' +CONF_OVERRIDE_MEASUREMENT = 'override_measurement' DEFAULT_DATABASE = 'home_assistant' DEFAULT_VERIFY_SSL = True @@ -37,6 +39,8 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_DB_NAME, default=DEFAULT_DATABASE): cv.string, vol.Optional(CONF_PORT): cv.port, vol.Optional(CONF_SSL): cv.boolean, + vol.Optional(CONF_DEFAULT_MEASUREMENT): cv.string, + vol.Optional(CONF_OVERRIDE_MEASUREMENT): cv.string, vol.Optional(CONF_TAGS, default={}): vol.Schema({cv.string: cv.string}), vol.Optional(CONF_WHITELIST, default=[]): @@ -76,10 +80,12 @@ def setup(hass, config): blacklist = conf.get(CONF_BLACKLIST) whitelist = conf.get(CONF_WHITELIST) tags = conf.get(CONF_TAGS) + default_measurement = conf.get(CONF_DEFAULT_MEASUREMENT) + override_measurement = conf.get(CONF_OVERRIDE_MEASUREMENT) try: influx = InfluxDBClient(**kwargs) - influx.query("select * from /.*/ LIMIT 1;") + influx.query("SELECT * FROM /.*/ LIMIT 1;") except exceptions.InfluxDBClientError as exc: _LOGGER.error("Database host is not accessible due to '%s', please " "check your entries in the configuration file and that " @@ -89,56 +95,61 @@ def setup(hass, config): def influx_event_listener(event): """Listen for new messages on the bus and sends them to Influx.""" state = event.data.get('new_state') - if state is None or state.entity_id in blacklist: - return - - if whitelist and state.entity_id not in whitelist: + if state is None or state.state in ( + STATE_UNKNOWN, '', STATE_UNAVAILABLE) or \ + state.entity_id in blacklist: return try: - _state = state_helper.state_as_number(state) + if len(whitelist) > 0 and state.entity_id not in whitelist: + return + + _state = float(state_helper.state_as_number(state)) + _state_key = "value" except ValueError: _state = state.state + _state_key = "state" + + if override_measurement: + measurement = override_measurement + else: + measurement = state.attributes.get('unit_of_measurement') + if measurement in (None, ''): + if default_measurement: + measurement = default_measurement + else: + measurement = state.entity_id - # Create a counter for this state change json_body = [ { - 'measurement': "hass.state.count", + 'measurement': measurement, 'tags': { 'domain': state.domain, 'entity_id': state.object_id, }, 'time': event.time_fired, 'fields': { - 'value': 1 + _state_key: _state, } } ] - json_body[0]['tags'].update(tags) - - state_fields = {} - if isinstance(_state, (int, float)): - state_fields['value'] = float(_state) - for key, value in state.attributes.items(): - if isinstance(value, (int, float)): - state_fields[key] = float(value) + if key != 'unit_of_measurement': + # If the key is already in fields + if key in json_body[0]['fields']: + key = key + "_" + # Prevent column data errors in influxDB. + # For each value we try to cast it as float + # But if we can not do it we store the value + # as string add "_str" postfix to the field key + try: + json_body[0]['fields'][key] = float(value) + except (ValueError, TypeError): + new_key = "{}_str".format(key) + json_body[0]['fields'][new_key] = str(value) - if state_fields: - json_body.append( - { - 'measurement': "hass.state", - 'tags': { - 'domain': state.domain, - 'entity_id': state.object_id - }, - 'time': event.time_fired, - 'fields': state_fields - } - ) - - json_body[1]['tags'].update(tags) + json_body[0]['tags'].update(tags) try: influx.write_points(json_body) diff --git a/homeassistant/scripts/influxdb_migrator.py b/homeassistant/scripts/influxdb_migrator.py new file mode 100644 index 00000000000..6f643c592de --- /dev/null +++ b/homeassistant/scripts/influxdb_migrator.py @@ -0,0 +1,193 @@ +"""Script to convert an old-structure influxdb to a new one.""" + +import argparse +import sys + +from typing import List + + +# Based on code at +# http://stackoverflow.com/questions/3173320/text-progress-bar-in-the-console +def print_progress(iteration: int, total: int, prefix: str='', suffix: str='', + decimals: int=2, bar_length: int=68) -> None: + """Print progress bar. + + Call in a loop to create terminal progress bar + @params: + iteration - Required : current iteration (Int) + total - Required : total iterations (Int) + prefix - Optional : prefix string (Str) + suffix - Optional : suffix string (Str) + decimals - Optional : number of decimals in percent complete (Int) + barLength - Optional : character length of bar (Int) + """ + filled_length = int(round(bar_length * iteration / float(total))) + percents = round(100.00 * (iteration / float(total)), decimals) + line = '#' * filled_length + '-' * (bar_length - filled_length) + sys.stdout.write('%s [%s] %s%s %s\r' % (prefix, line, + percents, '%', suffix)) + sys.stdout.flush() + if iteration == total: + print("\n") + + +def run(script_args: List) -> int: + """The actual script body.""" + from influxdb import InfluxDBClient + + parser = argparse.ArgumentParser( + description="Migrate legacy influxDB.") + parser.add_argument( + '-d', '--dbname', + metavar='dbname', + required=True, + help="InfluxDB database name") + parser.add_argument( + '-H', '--host', + metavar='host', + default='127.0.0.1', + help="InfluxDB host address") + parser.add_argument( + '-P', '--port', + metavar='port', + default=8086, + help="InfluxDB host port") + parser.add_argument( + '-u', '--username', + metavar='username', + default='root', + help="InfluxDB username") + parser.add_argument( + '-p', '--password', + metavar='password', + default='root', + help="InfluxDB password") + parser.add_argument( + '-s', '--step', + metavar='step', + default=1000, + help="How many points to migrate at the same time") + parser.add_argument( + '-o', '--override-measurement', + metavar='override_measurement', + default="", + help="Store all your points in the same measurement") + parser.add_argument( + '-D', '--delete', + action='store_true', + default=False, + help="Delete old database") + parser.add_argument( + '--script', + choices=['influxdb_migrator']) + + args = parser.parse_args() + + # Get client for old DB + client = InfluxDBClient(args.host, args.port, + args.username, args.password) + client.switch_database(args.dbname) + # Get DB list + db_list = [db['name'] for db in client.get_list_database()] + # Get measurements of the old DB + res = client.query('SHOW MEASUREMENTS') + measurements = [measurement['name'] for measurement in res.get_points()] + nb_measurements = len(measurements) + # Move data + # Get old DB name + old_dbname = "{}__old".format(args.dbname) + # Create old DB if needed + if old_dbname not in db_list: + client.create_database(old_dbname) + # Copy data to the old DB + print("Cloning from {} to {}".format(args.dbname, old_dbname)) + for index, measurement in enumerate(measurements): + client.query('''SELECT * INTO {}..:MEASUREMENT FROM ''' + '"{}" GROUP BY *'.format(old_dbname, measurement)) + # Print progess + print_progress(index + 1, nb_measurements) + + # Delete the database + client.drop_database(args.dbname) + # Create new DB if needed + client.create_database(args.dbname) + client.switch_database(old_dbname) + # Get client for new DB + new_client = InfluxDBClient(args.host, args.port, args.username, + args.password, args.dbname) + # Counter of points without time + point_wt_time = 0 + + print("Migrating from {} to {}".format(old_dbname, args.dbname)) + # Walk into measurenebt + for index, measurement in enumerate(measurements): + + # Get tag list + res = client.query('''SHOW TAG KEYS FROM "{}"'''.format(measurement)) + tags = [v['tagKey'] for v in res.get_points()] + # Get field list + res = client.query('''SHOW FIELD KEYS FROM "{}"'''.format(measurement)) + fields = [v['fieldKey'] for v in res.get_points()] + # Get points, convert and send points to the new DB + offset = 0 + while True: + nb_points = 0 + # Prepare new points + new_points = [] + # Get points + res = client.query('SELECT * FROM "{}" LIMIT {} OFFSET ' + '{}'.format(measurement, args.step, offset)) + for point in res.get_points(): + new_point = {"tags": {}, + "fields": {}, + "time": None} + if args.override_measurement: + new_point["measurement"] = args.override_measurement + else: + new_point["measurement"] = measurement + # Check time + if point["time"] is None: + # Point without time + point_wt_time += 1 + print("Can not convert point without time") + continue + # Convert all fields + for field in fields: + try: + new_point["fields"][field] = float(point[field]) + except (ValueError, TypeError): + if field == "value": + new_key = "state" + else: + new_key = "{}_str".format(field) + new_point["fields"][new_key] = str(point[field]) + # Add tags + for tag in tags: + new_point["tags"][tag] = point[tag] + # Set time + new_point["time"] = point["time"] + # Add new point to the new list + new_points.append(new_point) + # Count nb points + nb_points += 1 + + # Send to the new db + try: + new_client.write_points(new_points) + except Exception as exp: + raise exp + + # If there is no points + if nb_points == 0: + # print("Measurement {} migrated".format(measurement)) + break + else: + # Increment offset + offset += args.step + # Print progess + print_progress(index + 1, nb_measurements) + + # Delete database if needed + if args.delete: + print("Dropping {}".format(old_dbname)) + client.drop_database(old_dbname) diff --git a/tests/components/test_influxdb.py b/tests/components/test_influxdb.py index 1e64351e406..96a6460a2a4 100644 --- a/tests/components/test_influxdb.py +++ b/tests/components/test_influxdb.py @@ -106,43 +106,52 @@ class TestInfluxDB(unittest.TestCase): """Test the event listener.""" self._setup() - valid = {'1': 1, '1.0': 1.0, STATE_ON: 1, STATE_OFF: 0, 'str': 'str'} + valid = { + '1': 1, + '1.0': 1.0, + STATE_ON: 1, + STATE_OFF: 0, + 'foo': 'foo' + } for in_, out in valid.items(): - state = mock.MagicMock(state=in_, domain='fake', - object_id='entity') + attrs = { + 'unit_of_measurement': 'foobars', + 'longitude': '1.1', + 'latitude': '2.2' + } + state = mock.MagicMock( + state=in_, domain='fake', object_id='entity', attributes=attrs) event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - - body = [ - { - 'measurement': 'hass.state.count', + if isinstance(out, str): + body = [{ + 'measurement': 'foobars', 'tags': { 'domain': 'fake', 'entity_id': 'entity', }, 'time': 12345, 'fields': { - 'value': 1, - } - } - ] - - if isinstance(out, (int, float)): - body.append( - { - 'measurement': 'hass.state', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': float(out) - } - } - ) + 'state': out, + 'longitude': 1.1, + 'latitude': 2.2 + }, + }] + else: + body = [{ + 'measurement': 'foobars', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': out, + 'longitude': 1.1, + 'latitude': 2.2 + }, + }] self.handler_method(event) - self.assertEqual( mock_client.return_value.write_points.call_count, 1 ) @@ -150,7 +159,40 @@ class TestInfluxDB(unittest.TestCase): mock_client.return_value.write_points.call_args, mock.call(body) ) + mock_client.return_value.write_points.reset_mock() + def test_event_listener_no_units(self, mock_client): + """Test the event listener for missing units.""" + self._setup() + + for unit in (None, ''): + if unit: + attrs = {'unit_of_measurement': unit} + else: + attrs = {} + state = mock.MagicMock( + state=1, domain='fake', entity_id='entity-id', + object_id='entity', attributes=attrs) + event = mock.MagicMock(data={'new_state': state}, time_fired=12345) + body = [{ + 'measurement': 'entity-id', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + self.assertEqual( + mock_client.return_value.write_points.call_count, 1 + ) + self.assertEqual( + mock_client.return_value.write_points.call_args, + mock.call(body) + ) mock_client.return_value.write_points.reset_mock() def test_event_listener_fail_write(self, mock_client): @@ -165,6 +207,39 @@ class TestInfluxDB(unittest.TestCase): influx_client.exceptions.InfluxDBClientError('foo') self.handler_method(event) + def test_event_listener_states(self, mock_client): + """Test the event listener against ignored states.""" + self._setup() + + for state_state in (1, 'unknown', '', 'unavailable'): + state = mock.MagicMock( + state=state_state, domain='fake', entity_id='entity-id', + object_id='entity', attributes={}) + event = mock.MagicMock(data={'new_state': state}, time_fired=12345) + body = [{ + 'measurement': 'entity-id', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + if state_state == 1: + self.assertEqual( + mock_client.return_value.write_points.call_count, 1 + ) + self.assertEqual( + mock_client.return_value.write_points.call_args, + mock.call(body) + ) + else: + self.assertFalse(mock_client.return_value.write_points.called) + mock_client.return_value.write_points.reset_mock() + def test_event_listener_blacklist(self, mock_client): """Test the event listener against a blacklist.""" self._setup() @@ -174,34 +249,18 @@ class TestInfluxDB(unittest.TestCase): state=1, domain='fake', entity_id='fake.{}'.format(entity_id), object_id=entity_id, attributes={}) event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - - body = [ - { - 'measurement': 'hass.state.count', - 'tags': { - 'domain': 'fake', - 'entity_id': entity_id, - }, - 'time': 12345, - 'fields': { - 'value': 1, - } + body = [{ + 'measurement': 'fake.{}'.format(entity_id), + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, }, - { - 'measurement': 'hass.state', - 'tags': { - 'domain': 'fake', - 'entity_id': entity_id, - }, - 'time': 12345, - 'fields': { - 'value': 1 - } - } - ] - + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] self.handler_method(event) - if entity_id == 'ok': self.assertEqual( mock_client.return_value.write_points.call_count, 1 @@ -212,7 +271,6 @@ class TestInfluxDB(unittest.TestCase): ) else: self.assertFalse(mock_client.return_value.write_points.called) - mock_client.return_value.write_points.reset_mock() def test_event_listener_invalid_type(self, mock_client): @@ -229,43 +287,45 @@ class TestInfluxDB(unittest.TestCase): for in_, out in valid.items(): attrs = { 'unit_of_measurement': 'foobars', + 'longitude': '1.1', + 'latitude': '2.2', 'invalid_attribute': ['value1', 'value2'] } state = mock.MagicMock( state=in_, domain='fake', object_id='entity', attributes=attrs) event = mock.MagicMock(data={'new_state': state}, time_fired=12345) - - body = [ - { - 'measurement': 'hass.state.count', + if isinstance(out, str): + body = [{ + 'measurement': 'foobars', 'tags': { 'domain': 'fake', 'entity_id': 'entity', }, 'time': 12345, 'fields': { - 'value': 1, - } - } - ] - - if isinstance(out, (int, float)): - body.append( - { - 'measurement': 'hass.state', - 'tags': { - 'domain': 'fake', - 'entity_id': 'entity', - }, - 'time': 12345, - 'fields': { - 'value': float(out) - } - } - ) + 'state': out, + 'longitude': 1.1, + 'latitude': 2.2, + 'invalid_attribute_str': "['value1', 'value2']" + }, + }] + else: + body = [{ + 'measurement': 'foobars', + 'tags': { + 'domain': 'fake', + 'entity_id': 'entity', + }, + 'time': 12345, + 'fields': { + 'value': float(out), + 'longitude': 1.1, + 'latitude': 2.2, + 'invalid_attribute_str': "['value1', 'value2']" + }, + }] self.handler_method(event) - self.assertEqual( mock_client.return_value.write_points.call_count, 1 ) @@ -273,5 +333,47 @@ class TestInfluxDB(unittest.TestCase): mock_client.return_value.write_points.call_args, mock.call(body) ) - + mock_client.return_value.write_points.reset_mock() + + def test_event_listener_default_measurement(self, mock_client): + """Test the event listener with a default measurement.""" + config = { + 'influxdb': { + 'host': 'host', + 'username': 'user', + 'password': 'pass', + 'default_measurement': 'state', + 'blacklist': ['fake.blacklisted'] + } + } + assert setup_component(self.hass, influxdb.DOMAIN, config) + self.handler_method = self.hass.bus.listen.call_args_list[0][0][1] + + for entity_id in ('ok', 'blacklisted'): + state = mock.MagicMock( + state=1, domain='fake', entity_id='fake.{}'.format(entity_id), + object_id=entity_id, attributes={}) + event = mock.MagicMock(data={'new_state': state}, time_fired=12345) + body = [{ + 'measurement': 'state', + 'tags': { + 'domain': 'fake', + 'entity_id': entity_id, + }, + 'time': 12345, + 'fields': { + 'value': 1, + }, + }] + self.handler_method(event) + if entity_id == 'ok': + self.assertEqual( + mock_client.return_value.write_points.call_count, 1 + ) + self.assertEqual( + mock_client.return_value.write_points.call_args, + mock.call(body) + ) + else: + self.assertFalse(mock_client.return_value.write_points.called) mock_client.return_value.write_points.reset_mock() From 3d9b2b5ed011f1395318b8f73b32835dfde45e7b Mon Sep 17 00:00:00 2001 From: Gianluca Barbaro <me@barbaro.it> Date: Sat, 14 Jan 2017 22:30:24 +0100 Subject: [PATCH 179/189] Update vlc.py Added support for additional optional configuration arguments: to send to vlc. It is useful for special configurations of VLC. For example, I have two sound cards on my server, so I defined two vlc media players: media_player: - platform: vlc name: speaker_1 arguments: '--alsa-audio-device=hw:1,0' - platform: vlc name: speaker_2 arguments: '--alsa-audio-device=hw:0,0' This way, by specifying the corresponding entity_id, I can send the output to the desired speaker. It is also useful for TTS. --- homeassistant/components/media_player/vlc.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index 3398e7093cc..909dfe0fd77 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -20,28 +20,30 @@ REQUIREMENTS = ['python-vlc==1.1.2'] _LOGGER = logging.getLogger(__name__) +ADDITIONAL_ARGS = 'arguments' SUPPORT_VLC = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PLAY_MEDIA | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME): cv.string, + vol.Optional(ADDITIONAL_ARGS): cv.string, }) # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the vlc platform.""" - add_devices([VlcDevice(config.get(CONF_NAME))]) + add_devices([VlcDevice(config.get(CONF_NAME), config.get(ADDITIONAL_ARGS))]) class VlcDevice(MediaPlayerDevice): """Representation of a vlc player.""" - def __init__(self, name): + def __init__(self, name, arguments): """Initialize the vlc device.""" import vlc - self._instance = vlc.Instance() + self._instance = vlc.Instance(arguments) self._vlc = self._instance.media_player_new() self._name = name self._volume = None From 7436a969789cf0f534a398e1ca5bb7cd59fa9adb Mon Sep 17 00:00:00 2001 From: Gianluca Barbaro <me@barbaro.it> Date: Sat, 14 Jan 2017 22:32:50 +0100 Subject: [PATCH 180/189] Update vlc.py --- homeassistant/components/media_player/vlc.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index 909dfe0fd77..d5d927e5ff8 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -34,7 +34,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the vlc platform.""" - add_devices([VlcDevice(config.get(CONF_NAME), config.get(ADDITIONAL_ARGS))]) + add_devices([VlcDevice(config.get(CONF_NAME), + config.get(ADDITIONAL_ARGS))]) class VlcDevice(MediaPlayerDevice): From 8013963784abfa1b626385b8556b5a47e5557654 Mon Sep 17 00:00:00 2001 From: Gianluca Barbaro <me@barbaro.it> Date: Sat, 14 Jan 2017 23:31:17 +0100 Subject: [PATCH 181/189] Update vlc.py --- homeassistant/components/media_player/vlc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index d5d927e5ff8..7ec0fb0ef65 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -20,14 +20,14 @@ REQUIREMENTS = ['python-vlc==1.1.2'] _LOGGER = logging.getLogger(__name__) -ADDITIONAL_ARGS = 'arguments' +CONF_ARGUMENTS = 'arguments' SUPPORT_VLC = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PLAY_MEDIA | SUPPORT_PLAY PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME): cv.string, - vol.Optional(ADDITIONAL_ARGS): cv.string, + vol.Optional(CONF_ARGUMENTS): cv.string, }) @@ -35,7 +35,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the vlc platform.""" add_devices([VlcDevice(config.get(CONF_NAME), - config.get(ADDITIONAL_ARGS))]) + config.get(CONF_ARGUMENTS))]) class VlcDevice(MediaPlayerDevice): From d998cba6a2fa2359ad96905f200575fb34530a9a Mon Sep 17 00:00:00 2001 From: Gianluca Barbaro <me@barbaro.it> Date: Sun, 15 Jan 2017 01:35:46 +0100 Subject: [PATCH 182/189] Update vlc.py Added default value for "arguments" --- homeassistant/components/media_player/vlc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/media_player/vlc.py b/homeassistant/components/media_player/vlc.py index 7ec0fb0ef65..711c8c74422 100644 --- a/homeassistant/components/media_player/vlc.py +++ b/homeassistant/components/media_player/vlc.py @@ -27,7 +27,7 @@ SUPPORT_VLC = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME): cv.string, - vol.Optional(CONF_ARGUMENTS): cv.string, + vol.Optional(CONF_ARGUMENTS, default=''): cv.string, }) From 9db1aa7629bdfef36689174186789501099baa3b Mon Sep 17 00:00:00 2001 From: Martin Hjelmare <marhje52@kth.se> Date: Sun, 15 Jan 2017 03:53:14 +0100 Subject: [PATCH 183/189] Add discovery notify support and mysensors notify (#5219) * Add mysensors notify platform * Make add_devices optional in platform callback function. * Use new argument structure for all existing mysensors platforms. * Add notify platform. * Update mysensors gateway. * Refactor notify setup * Enable discovery of notify platforms. * Update and add tests for notify component and some platforms. * Continue setup of notify platforms if a platform fails setup. * Remove notify tests that check platform config. These tests are not needed when config validation is used. * Add config validation to APNS notify platform. * Use discovery to set up mysensors notify platform. * Add discovery_info to get_service and update tests * Add discovery_info as keyword argument to the get_service function signature and update all notify platforms. * Update existing notify tests to check config validation using test helper. * Add removed tests back in that checked config in apns, command_line and file platforms, but use config validation test helper to verify config. * Add a test for notify file to increase coverage. * Fix some PEP issues. * Fix comments and use more constants * Move apns notify service under notify domain --- .../components/binary_sensor/mysensors.py | 2 +- homeassistant/components/climate/mysensors.py | 2 +- homeassistant/components/cover/mysensors.py | 2 +- homeassistant/components/light/mysensors.py | 2 +- homeassistant/components/mysensors.py | 27 ++- homeassistant/components/notify/__init__.py | 43 +++-- homeassistant/components/notify/apns.py | 41 ++--- homeassistant/components/notify/aws_lambda.py | 2 +- homeassistant/components/notify/aws_sns.py | 2 +- homeassistant/components/notify/aws_sqs.py | 2 +- .../components/notify/command_line.py | 2 +- homeassistant/components/notify/demo.py | 2 +- homeassistant/components/notify/ecobee.py | 2 +- homeassistant/components/notify/file.py | 2 +- .../components/notify/free_mobile.py | 2 +- homeassistant/components/notify/gntp.py | 2 +- homeassistant/components/notify/group.py | 4 +- homeassistant/components/notify/html5.py | 2 +- homeassistant/components/notify/instapush.py | 2 +- homeassistant/components/notify/ios.py | 2 +- .../components/notify/joaoapps_join.py | 2 +- homeassistant/components/notify/kodi.py | 2 +- .../components/notify/llamalab_automate.py | 8 +- homeassistant/components/notify/matrix.py | 2 +- .../components/notify/message_bird.py | 2 +- homeassistant/components/notify/mysensors.py | 65 +++++++ .../components/notify/nfandroidtv.py | 2 +- homeassistant/components/notify/nma.py | 2 +- homeassistant/components/notify/pushbullet.py | 2 +- homeassistant/components/notify/pushetta.py | 2 +- homeassistant/components/notify/pushover.py | 2 +- homeassistant/components/notify/rest.py | 2 +- homeassistant/components/notify/sendgrid.py | 2 +- homeassistant/components/notify/simplepush.py | 2 +- homeassistant/components/notify/slack.py | 2 +- homeassistant/components/notify/smtp.py | 2 +- homeassistant/components/notify/syslog.py | 2 +- homeassistant/components/notify/telegram.py | 2 +- homeassistant/components/notify/telstra.py | 2 +- homeassistant/components/notify/twilio_sms.py | 2 +- homeassistant/components/notify/twitter.py | 2 +- homeassistant/components/notify/webostv.py | 2 +- homeassistant/components/notify/xmpp.py | 2 +- homeassistant/components/sensor/mysensors.py | 2 +- homeassistant/components/switch/mysensors.py | 2 +- tests/common.py | 2 +- tests/components/notify/test_apns.py | 171 +++++++----------- tests/components/notify/test_command_line.py | 59 +++--- tests/components/notify/test_demo.py | 79 +++++++- tests/components/notify/test_file.py | 71 +++++--- tests/components/notify/test_group.py | 2 +- 51 files changed, 395 insertions(+), 255 deletions(-) create mode 100644 homeassistant/components/notify/mysensors.py diff --git a/homeassistant/components/binary_sensor/mysensors.py b/homeassistant/components/binary_sensor/mysensors.py index e938f946457..6406dabd26f 100644 --- a/homeassistant/components/binary_sensor/mysensors.py +++ b/homeassistant/components/binary_sensor/mysensors.py @@ -47,7 +47,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, MySensorsBinarySensor)) + map_sv_types, devices, MySensorsBinarySensor, add_devices)) class MySensorsBinarySensor( diff --git a/homeassistant/components/climate/mysensors.py b/homeassistant/components/climate/mysensors.py index 13a062a335e..6c55b3b4451 100755 --- a/homeassistant/components/climate/mysensors.py +++ b/homeassistant/components/climate/mysensors.py @@ -39,7 +39,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): } devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, MySensorsHVAC)) + map_sv_types, devices, MySensorsHVAC, add_devices)) class MySensorsHVAC(mysensors.MySensorsDeviceEntity, ClimateDevice): diff --git a/homeassistant/components/cover/mysensors.py b/homeassistant/components/cover/mysensors.py index 7dd63a8c745..a75ad36354b 100644 --- a/homeassistant/components/cover/mysensors.py +++ b/homeassistant/components/cover/mysensors.py @@ -35,7 +35,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): }) devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, MySensorsCover)) + map_sv_types, devices, MySensorsCover, add_devices)) class MySensorsCover(mysensors.MySensorsDeviceEntity, CoverDevice): diff --git a/homeassistant/components/light/mysensors.py b/homeassistant/components/light/mysensors.py index 86d033cf4ce..9a018192f63 100644 --- a/homeassistant/components/light/mysensors.py +++ b/homeassistant/components/light/mysensors.py @@ -58,7 +58,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): }) devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, device_class_map)) + map_sv_types, devices, device_class_map, add_devices)) class MySensorsLight(mysensors.MySensorsDeviceEntity, Light): diff --git a/homeassistant/components/mysensors.py b/homeassistant/components/mysensors.py index b6778760b1a..79e572defeb 100644 --- a/homeassistant/components/mysensors.py +++ b/homeassistant/components/mysensors.py @@ -9,10 +9,10 @@ import socket import voluptuous as vol -from homeassistant.bootstrap import setup_component import homeassistant.helpers.config_validation as cv -from homeassistant.const import (ATTR_BATTERY_LEVEL, CONF_OPTIMISTIC, - EVENT_HOMEASSISTANT_START, +from homeassistant.bootstrap import setup_component +from homeassistant.const import (ATTR_BATTERY_LEVEL, CONF_NAME, + CONF_OPTIMISTIC, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, STATE_OFF, STATE_ON) from homeassistant.helpers import discovery from homeassistant.loader import get_component @@ -169,10 +169,13 @@ def setup(hass, config): 'cover']: discovery.load_platform(hass, component, DOMAIN, {}, config) + discovery.load_platform( + hass, 'notify', DOMAIN, {CONF_NAME: DOMAIN}, config) + return True -def pf_callback_factory(map_sv_types, devices, add_devices, entity_class): +def pf_callback_factory(map_sv_types, devices, entity_class, add_devices=None): """Return a new callback for the platform.""" def mysensors_callback(gateway, node_id): """Callback for mysensors platform.""" @@ -187,7 +190,10 @@ def pf_callback_factory(map_sv_types, devices, add_devices, entity_class): value_type not in map_sv_types[child.type]: continue if key in devices: - devices[key].update_ha_state(True) + if add_devices: + devices[key].schedule_update_ha_state(True) + else: + devices[key].update() continue name = '{} {} {}'.format( gateway.sensors[node_id].sketch_name, node_id, child.id) @@ -197,11 +203,12 @@ def pf_callback_factory(map_sv_types, devices, add_devices, entity_class): device_class = entity_class devices[key] = device_class( gateway, node_id, child.id, name, value_type, child.type) - - _LOGGER.info('Adding new devices: %s', devices[key]) - add_devices([devices[key]]) - if key in devices: - devices[key].update_ha_state(True) + if add_devices: + _LOGGER.info('Adding new devices: %s', devices[key]) + add_devices([devices[key]]) + devices[key].schedule_update_ha_state(True) + else: + devices[key].update() return mysensors_callback diff --git a/homeassistant/components/notify/__init__.py b/homeassistant/components/notify/__init__.py index b9d595401b5..a5c1e53ef03 100644 --- a/homeassistant/components/notify/__init__.py +++ b/homeassistant/components/notify/__init__.py @@ -14,7 +14,7 @@ import homeassistant.bootstrap as bootstrap import homeassistant.helpers.config_validation as cv from homeassistant.config import load_yaml_config_file from homeassistant.const import CONF_NAME, CONF_PLATFORM -from homeassistant.helpers import config_per_platform +from homeassistant.helpers import config_per_platform, discovery from homeassistant.util import slugify _LOGGER = logging.getLogger(__name__) @@ -66,27 +66,32 @@ def send_message(hass, message, title=None, data=None): def setup(hass, config): """Setup the notify services.""" - success = False - descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) targets = {} - for platform, p_config in config_per_platform(config, DOMAIN): + def setup_notify_platform(platform, p_config=None, discovery_info=None): + """Set up a notify platform.""" + if p_config is None: + p_config = {} + if discovery_info is None: + discovery_info = {} + notify_implementation = bootstrap.prepare_setup_platform( hass, config, DOMAIN, platform) if notify_implementation is None: _LOGGER.error("Unknown notification service specified") - continue + return False - notify_service = notify_implementation.get_service(hass, p_config) + notify_service = notify_implementation.get_service( + hass, p_config, discovery_info) if notify_service is None: _LOGGER.error("Failed to initialize notification service %s", platform) - continue + return False def notify_message(notify_service, call): """Handle sending notification message service calls.""" @@ -112,7 +117,9 @@ def setup(hass, config): service_call_handler = partial(notify_message, notify_service) if hasattr(notify_service, 'targets'): - platform_name = (p_config.get(CONF_NAME) or platform) + platform_name = ( + p_config.get(CONF_NAME) or discovery_info.get(CONF_NAME) or + platform) for name, target in notify_service.targets.items(): target_name = slugify('{}_{}'.format(platform_name, name)) targets[target_name] = target @@ -121,15 +128,29 @@ def setup(hass, config): descriptions.get(SERVICE_NOTIFY), schema=NOTIFY_SERVICE_SCHEMA) - platform_name = (p_config.get(CONF_NAME) or SERVICE_NOTIFY) + platform_name = ( + p_config.get(CONF_NAME) or discovery_info.get(CONF_NAME) or + SERVICE_NOTIFY) platform_name_slug = slugify(platform_name) hass.services.register( DOMAIN, platform_name_slug, service_call_handler, descriptions.get(SERVICE_NOTIFY), schema=NOTIFY_SERVICE_SCHEMA) - success = True - return success + return True + + for platform, p_config in config_per_platform(config, DOMAIN): + if not setup_notify_platform(platform, p_config): + _LOGGER.error("Failed to set up platform %s", platform) + continue + + def platform_discovered(platform, info): + """Callback to load a platform.""" + setup_notify_platform(platform, discovery_info=info) + + discovery.listen_platform(hass, DOMAIN, platform_discovered) + + return True class BaseNotificationService(object): diff --git a/homeassistant/components/notify/apns.py b/homeassistant/components/notify/apns.py index 26d20f3bc89..09716065751 100644 --- a/homeassistant/components/notify/apns.py +++ b/homeassistant/components/notify/apns.py @@ -11,18 +11,29 @@ import voluptuous as vol from homeassistant.helpers.event import track_state_change from homeassistant.config import load_yaml_config_file from homeassistant.components.notify import ( - ATTR_TARGET, ATTR_DATA, BaseNotificationService) + ATTR_TARGET, ATTR_DATA, BaseNotificationService, DOMAIN) +from homeassistant.const import CONF_NAME, CONF_PLATFORM import homeassistant.helpers.config_validation as cv from homeassistant.helpers import template as template_helper -DOMAIN = "apns" APNS_DEVICES = "apns.yaml" +CONF_CERTFILE = "cert_file" +CONF_TOPIC = "topic" +CONF_SANDBOX = "sandbox" DEVICE_TRACKER_DOMAIN = "device_tracker" SERVICE_REGISTER = "apns_register" ATTR_PUSH_ID = "push_id" ATTR_NAME = "name" +PLATFORM_SCHEMA = vol.Schema({ + vol.Required(CONF_PLATFORM): 'apns', + vol.Required(CONF_NAME): cv.string, + vol.Required(CONF_CERTFILE): cv.isfile, + vol.Required(CONF_TOPIC): cv.string, + vol.Optional(CONF_SANDBOX, default=False): cv.boolean, +}) + REGISTER_SERVICE_SCHEMA = vol.Schema({ vol.Required(ATTR_PUSH_ID): cv.string, vol.Optional(ATTR_NAME, default=None): cv.string, @@ -31,31 +42,19 @@ REGISTER_SERVICE_SCHEMA = vol.Schema({ REQUIREMENTS = ["apns2==0.1.1"] -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Return push service.""" descriptions = load_yaml_config_file( os.path.join(os.path.dirname(__file__), 'services.yaml')) - name = config.get("name") - if name is None: - logging.error("Name must be specified.") - return None - - cert_file = config.get('cert_file') - if cert_file is None: - logging.error("Certificate must be specified.") - return None - - topic = config.get('topic') - if topic is None: - logging.error("Topic must be specified.") - return None - - sandbox = bool(config.get('sandbox', False)) + name = config.get(CONF_NAME) + cert_file = config.get(CONF_CERTFILE) + topic = config.get(CONF_TOPIC) + sandbox = config.get(CONF_SANDBOX) service = ApnsNotificationService(hass, name, topic, sandbox, cert_file) hass.services.register(DOMAIN, - name, + 'apns_{}'.format(name), service.register, descriptions.get(SERVICE_REGISTER), schema=REGISTER_SERVICE_SCHEMA) @@ -202,8 +201,6 @@ class ApnsNotificationService(BaseNotificationService): def register(self, call): """Register a device to receive push messages.""" push_id = call.data.get(ATTR_PUSH_ID) - if push_id is None: - return False device_name = call.data.get(ATTR_NAME) current_device = self.devices.get(push_id) diff --git a/homeassistant/components/notify/aws_lambda.py b/homeassistant/components/notify/aws_lambda.py index 8db48b0000e..d18da5ae2f0 100644 --- a/homeassistant/components/notify/aws_lambda.py +++ b/homeassistant/components/notify/aws_lambda.py @@ -35,7 +35,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the AWS Lambda notification service.""" context_str = json.dumps({'hass': hass.config.as_dict(), 'custom': config[CONF_CONTEXT]}) diff --git a/homeassistant/components/notify/aws_sns.py b/homeassistant/components/notify/aws_sns.py index f3af26cd8b4..f02b6b75a84 100644 --- a/homeassistant/components/notify/aws_sns.py +++ b/homeassistant/components/notify/aws_sns.py @@ -33,7 +33,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the AWS SNS notification service.""" # pylint: disable=import-error import boto3 diff --git a/homeassistant/components/notify/aws_sqs.py b/homeassistant/components/notify/aws_sqs.py index 84826a2f32f..ecbadac46ce 100644 --- a/homeassistant/components/notify/aws_sqs.py +++ b/homeassistant/components/notify/aws_sqs.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the AWS SQS notification service.""" # pylint: disable=import-error import boto3 diff --git a/homeassistant/components/notify/command_line.py b/homeassistant/components/notify/command_line.py index d59994e37ed..cd3bdfb16f3 100644 --- a/homeassistant/components/notify/command_line.py +++ b/homeassistant/components/notify/command_line.py @@ -22,7 +22,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Command Line notification service.""" command = config[CONF_COMMAND] diff --git a/homeassistant/components/notify/demo.py b/homeassistant/components/notify/demo.py index d3c4f9b8026..5b8e1f1688f 100644 --- a/homeassistant/components/notify/demo.py +++ b/homeassistant/components/notify/demo.py @@ -9,7 +9,7 @@ from homeassistant.components.notify import BaseNotificationService EVENT_NOTIFY = "notify" -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the demo notification service.""" return DemoNotificationService(hass) diff --git a/homeassistant/components/notify/ecobee.py b/homeassistant/components/notify/ecobee.py index befde9271ca..2d64a2d5b47 100644 --- a/homeassistant/components/notify/ecobee.py +++ b/homeassistant/components/notify/ecobee.py @@ -24,7 +24,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Ecobee notification service.""" index = config.get(CONF_INDEX) return EcobeeNotificationService(index) diff --git a/homeassistant/components/notify/file.py b/homeassistant/components/notify/file.py index 6b435ace6d4..749a6d4b330 100644 --- a/homeassistant/components/notify/file.py +++ b/homeassistant/components/notify/file.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ _LOGGER = logging.getLogger(__name__) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the file notification service.""" filename = config[CONF_FILENAME] timestamp = config[CONF_TIMESTAMP] diff --git a/homeassistant/components/notify/free_mobile.py b/homeassistant/components/notify/free_mobile.py index d8631fe6106..74d9a80ad86 100644 --- a/homeassistant/components/notify/free_mobile.py +++ b/homeassistant/components/notify/free_mobile.py @@ -23,7 +23,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Free Mobile SMS notification service.""" return FreeSMSNotificationService(config[CONF_USERNAME], config[CONF_ACCESS_TOKEN]) diff --git a/homeassistant/components/notify/gntp.py b/homeassistant/components/notify/gntp.py index ee6d203a47a..5aaaf64577c 100644 --- a/homeassistant/components/notify/gntp.py +++ b/homeassistant/components/notify/gntp.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the GNTP notification service.""" if config.get(CONF_APP_ICON) is None: icon_file = os.path.join(os.path.dirname(__file__), "..", "frontend", diff --git a/homeassistant/components/notify/group.py b/homeassistant/components/notify/group.py index d4c10ac884d..3de79f5a7be 100644 --- a/homeassistant/components/notify/group.py +++ b/homeassistant/components/notify/group.py @@ -38,13 +38,13 @@ def update(input_dict, update_source): return input_dict -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Group notification service.""" return GroupNotifyPlatform(hass, config.get(CONF_SERVICES)) class GroupNotifyPlatform(BaseNotificationService): - """Implement the notification service for the group notify playform.""" + """Implement the notification service for the group notify platform.""" def __init__(self, hass, entities): """Initialize the service.""" diff --git a/homeassistant/components/notify/html5.py b/homeassistant/components/notify/html5.py index 6621b4be6ab..dbd698fd5a2 100644 --- a/homeassistant/components/notify/html5.py +++ b/homeassistant/components/notify/html5.py @@ -97,7 +97,7 @@ HTML5_SHOWNOTIFICATION_PARAMETERS = ('actions', 'badge', 'body', 'dir', 'vibrate') -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the HTML5 push notification service.""" json_path = hass.config.path(REGISTRATIONS_FILE) diff --git a/homeassistant/components/notify/instapush.py b/homeassistant/components/notify/instapush.py index d5f32d66a5e..1af08420726 100644 --- a/homeassistant/components/notify/instapush.py +++ b/homeassistant/components/notify/instapush.py @@ -32,7 +32,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Instapush notification service.""" headers = {'x-instapush-appid': config[CONF_API_KEY], 'x-instapush-appsecret': config[CONF_APP_SECRET]} diff --git a/homeassistant/components/notify/ios.py b/homeassistant/components/notify/ios.py index 5cd18640487..0db05b261b3 100644 --- a/homeassistant/components/notify/ios.py +++ b/homeassistant/components/notify/ios.py @@ -39,7 +39,7 @@ def log_rate_limits(target, resp, level=20): str(resetsAtTime).split(".")[0]) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the iOS notification service.""" if "notify.ios" not in hass.config.components: # Need this to enable requirements checking in the app. diff --git a/homeassistant/components/notify/joaoapps_join.py b/homeassistant/components/notify/joaoapps_join.py index 6f0afddcca2..f79c7186359 100644 --- a/homeassistant/components/notify/joaoapps_join.py +++ b/homeassistant/components/notify/joaoapps_join.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Join notification service.""" device_id = config.get(CONF_DEVICE_ID) api_key = config.get(CONF_API_KEY) diff --git a/homeassistant/components/notify/kodi.py b/homeassistant/components/notify/kodi.py index 1d95920d00b..0c648be5969 100644 --- a/homeassistant/components/notify/kodi.py +++ b/homeassistant/components/notify/kodi.py @@ -29,7 +29,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ ATTR_DISPLAYTIME = 'displaytime' -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Return the notify service.""" url = '{}:{}'.format(config.get(CONF_HOST), config.get(CONF_PORT)) diff --git a/homeassistant/components/notify/llamalab_automate.py b/homeassistant/components/notify/llamalab_automate.py index e7b6ab80455..bf000171c12 100644 --- a/homeassistant/components/notify/llamalab_automate.py +++ b/homeassistant/components/notify/llamalab_automate.py @@ -20,13 +20,13 @@ CONF_DEVICE = 'device' _RESOURCE = 'https://llamalab.com/automate/cloud/message' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_API_KEY): cv.string, - vol.Required(CONF_TO): cv.string, - vol.Optional(CONF_DEVICE): cv.string, + vol.Required(CONF_API_KEY): cv.string, + vol.Required(CONF_TO): cv.string, + vol.Optional(CONF_DEVICE): cv.string, }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the LlamaLab Automate notification service.""" secret = config.get(CONF_API_KEY) recipient = config.get(CONF_TO) diff --git a/homeassistant/components/notify/matrix.py b/homeassistant/components/notify/matrix.py index b7ce54f8838..b36721e8f80 100644 --- a/homeassistant/components/notify/matrix.py +++ b/homeassistant/components/notify/matrix.py @@ -34,7 +34,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ _LOGGER = logging.getLogger(__name__) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Matrix notification service.""" if not AUTH_TOKENS: load_token(hass.config.path(SESSION_FILE)) diff --git a/homeassistant/components/notify/message_bird.py b/homeassistant/components/notify/message_bird.py index 6d1d50d8a1a..7e9ce3b093f 100644 --- a/homeassistant/components/notify/message_bird.py +++ b/homeassistant/components/notify/message_bird.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the MessageBird notification service.""" import messagebird diff --git a/homeassistant/components/notify/mysensors.py b/homeassistant/components/notify/mysensors.py new file mode 100644 index 00000000000..ad747a7ae93 --- /dev/null +++ b/homeassistant/components/notify/mysensors.py @@ -0,0 +1,65 @@ +""" +MySensors notification service. + +For more details about this platform, please refer to the documentation +https://home-assistant.io/components/notify.mysensors/ +""" +from homeassistant.components import mysensors +from homeassistant.components.notify import (ATTR_TARGET, + BaseNotificationService) + + +def get_service(hass, config, discovery_info=None): + """Get the MySensors notification service.""" + if discovery_info is None: + return + platform_devices = [] + gateways = hass.data.get(mysensors.MYSENSORS_GATEWAYS) + if not gateways: + return + + for gateway in gateways: + pres = gateway.const.Presentation + set_req = gateway.const.SetReq + map_sv_types = { + pres.S_INFO: [set_req.V_TEXT], + } + devices = {} + gateway.platform_callbacks.append(mysensors.pf_callback_factory( + map_sv_types, devices, MySensorsNotificationDevice)) + platform_devices.append(devices) + + return MySensorsNotificationService(platform_devices) + + +class MySensorsNotificationDevice(mysensors.MySensorsDeviceEntity): + """Represent a MySensors Notification device.""" + + def send_msg(self, msg): + """Send a message.""" + for sub_msg in [msg[i:i + 25] for i in range(0, len(msg), 25)]: + # Max mysensors payload is 25 bytes. + self.gateway.set_child_value( + self.node_id, self.child_id, self.value_type, sub_msg) + + +class MySensorsNotificationService(BaseNotificationService): + """Implement MySensors notification service.""" + + # pylint: disable=too-few-public-methods + + def __init__(self, platform_devices): + """Initialize the service.""" + self.platform_devices = platform_devices + + def send_message(self, message="", **kwargs): + """Send a message to a user.""" + target_devices = kwargs.get(ATTR_TARGET) + devices = [] + for gw_devs in self.platform_devices: + for device in gw_devs.values(): + if target_devices is None or device.name in target_devices: + devices.append(device) + + for device in devices: + device.send_msg(message) diff --git a/homeassistant/components/notify/nfandroidtv.py b/homeassistant/components/notify/nfandroidtv.py index cd44b1f0cd3..6c4f7e49dde 100644 --- a/homeassistant/components/notify/nfandroidtv.py +++ b/homeassistant/components/notify/nfandroidtv.py @@ -83,7 +83,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Notifications for Android TV notification service.""" remoteip = config.get(CONF_IP) duration = config.get(CONF_DURATION) diff --git a/homeassistant/components/notify/nma.py b/homeassistant/components/notify/nma.py index 7a05d08134f..1116b5728fd 100644 --- a/homeassistant/components/notify/nma.py +++ b/homeassistant/components/notify/nma.py @@ -24,7 +24,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the NMA notification service.""" parameters = { 'apikey': config[CONF_API_KEY], diff --git a/homeassistant/components/notify/pushbullet.py b/homeassistant/components/notify/pushbullet.py index ec9c7ec4f54..4f50146ac61 100644 --- a/homeassistant/components/notify/pushbullet.py +++ b/homeassistant/components/notify/pushbullet.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-argument -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the PushBullet notification service.""" from pushbullet import PushBullet from pushbullet import InvalidKeyError diff --git a/homeassistant/components/notify/pushetta.py b/homeassistant/components/notify/pushetta.py index b786fb5ba98..b1a71c57513 100644 --- a/homeassistant/components/notify/pushetta.py +++ b/homeassistant/components/notify/pushetta.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Pushetta notification service.""" pushetta_service = PushettaNotificationService(config[CONF_API_KEY], config[CONF_CHANNEL_NAME], diff --git a/homeassistant/components/notify/pushover.py b/homeassistant/components/notify/pushover.py index c77e5f7b85e..afaf4e6a7e9 100644 --- a/homeassistant/components/notify/pushover.py +++ b/homeassistant/components/notify/pushover.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Pushover notification service.""" from pushover import InitError diff --git a/homeassistant/components/notify/rest.py b/homeassistant/components/notify/rest.py index 20dbb4afaa1..41d100b3a09 100644 --- a/homeassistant/components/notify/rest.py +++ b/homeassistant/components/notify/rest.py @@ -39,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ _LOGGER = logging.getLogger(__name__) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the RESTful notification service.""" resource = config.get(CONF_RESOURCE) method = config.get(CONF_METHOD) diff --git a/homeassistant/components/notify/sendgrid.py b/homeassistant/components/notify/sendgrid.py index 54f0f4b8cb3..458113d1cdf 100644 --- a/homeassistant/components/notify/sendgrid.py +++ b/homeassistant/components/notify/sendgrid.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the SendGrid notification service.""" api_key = config.get(CONF_API_KEY) sender = config.get(CONF_SENDER) diff --git a/homeassistant/components/notify/simplepush.py b/homeassistant/components/notify/simplepush.py index b3c2686f3aa..cda6a6952e0 100644 --- a/homeassistant/components/notify/simplepush.py +++ b/homeassistant/components/notify/simplepush.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Simplepush notification service.""" return SimplePushNotificationService(config.get(CONF_DEVICE_KEY)) diff --git a/homeassistant/components/notify/slack.py b/homeassistant/components/notify/slack.py index 2976b44d6e9..90944cbd308 100644 --- a/homeassistant/components/notify/slack.py +++ b/homeassistant/components/notify/slack.py @@ -29,7 +29,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ # pylint: disable=unused-variable -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Slack notification service.""" import slacker diff --git a/homeassistant/components/notify/smtp.py b/homeassistant/components/notify/smtp.py index 6ef9bc32990..45b477cdfb8 100644 --- a/homeassistant/components/notify/smtp.py +++ b/homeassistant/components/notify/smtp.py @@ -47,7 +47,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the mail notification service.""" mail_service = MailNotificationService( config.get(CONF_SERVER), diff --git a/homeassistant/components/notify/syslog.py b/homeassistant/components/notify/syslog.py index 4065b47f480..31689bdc9f0 100644 --- a/homeassistant/components/notify/syslog.py +++ b/homeassistant/components/notify/syslog.py @@ -67,7 +67,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ _LOGGER = logging.getLogger(__name__) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the syslog notification service.""" import syslog diff --git a/homeassistant/components/notify/telegram.py b/homeassistant/components/notify/telegram.py index c133506e775..fd901016fc5 100644 --- a/homeassistant/components/notify/telegram.py +++ b/homeassistant/components/notify/telegram.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Telegram notification service.""" import telegram diff --git a/homeassistant/components/notify/telstra.py b/homeassistant/components/notify/telstra.py index ca727db9711..efe90dc51ba 100644 --- a/homeassistant/components/notify/telstra.py +++ b/homeassistant/components/notify/telstra.py @@ -27,7 +27,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Telstra SMS API notification service.""" consumer_key = config.get(CONF_CONSUMER_KEY) consumer_secret = config.get(CONF_CONSUMER_SECRET) diff --git a/homeassistant/components/notify/twilio_sms.py b/homeassistant/components/notify/twilio_sms.py index 3438ce92ee3..950e0eed221 100644 --- a/homeassistant/components/notify/twilio_sms.py +++ b/homeassistant/components/notify/twilio_sms.py @@ -28,7 +28,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Twilio SMS notification service.""" # pylint: disable=import-error from twilio.rest import TwilioRestClient diff --git a/homeassistant/components/notify/twitter.py b/homeassistant/components/notify/twitter.py index afa43057fa5..24128edd880 100644 --- a/homeassistant/components/notify/twitter.py +++ b/homeassistant/components/notify/twitter.py @@ -29,7 +29,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Twitter notification service.""" return TwitterNotificationService( config[CONF_CONSUMER_KEY], config[CONF_CONSUMER_SECRET], diff --git a/homeassistant/components/notify/webostv.py b/homeassistant/components/notify/webostv.py index 9b6514559ca..815e2ff750a 100644 --- a/homeassistant/components/notify/webostv.py +++ b/homeassistant/components/notify/webostv.py @@ -24,7 +24,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Return the notify service.""" from pylgtv import WebOsClient from pylgtv import PyLGTVPairException diff --git a/homeassistant/components/notify/xmpp.py b/homeassistant/components/notify/xmpp.py index 5873e3997fa..27bfd2aa607 100644 --- a/homeassistant/components/notify/xmpp.py +++ b/homeassistant/components/notify/xmpp.py @@ -30,7 +30,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -def get_service(hass, config): +def get_service(hass, config, discovery_info=None): """Get the Jabber (XMPP) notification service.""" return XmppNotificationService( config.get('sender'), diff --git a/homeassistant/components/sensor/mysensors.py b/homeassistant/components/sensor/mysensors.py index 2742713cb24..6c1f65606da 100644 --- a/homeassistant/components/sensor/mysensors.py +++ b/homeassistant/components/sensor/mysensors.py @@ -83,7 +83,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, MySensorsSensor)) + map_sv_types, devices, MySensorsSensor, add_devices)) class MySensorsSensor(mysensors.MySensorsDeviceEntity, Entity): diff --git a/homeassistant/components/switch/mysensors.py b/homeassistant/components/switch/mysensors.py index 44bbfcb16d9..968166d4d65 100644 --- a/homeassistant/components/switch/mysensors.py +++ b/homeassistant/components/switch/mysensors.py @@ -89,7 +89,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( - map_sv_types, devices, add_devices, device_class_map)) + map_sv_types, devices, device_class_map, add_devices)) platform_devices.append(devices) def send_ir_code_service(service): diff --git a/tests/common.py b/tests/common.py index 25a674dd995..514a4973202 100644 --- a/tests/common.py +++ b/tests/common.py @@ -399,7 +399,7 @@ def assert_setup_component(count, domain=None): Use as a context manager aroung bootstrap.setup_component with assert_setup_component(0) as result_config: - setup_component(hass, start_config, domain) + setup_component(hass, domain, start_config) # using result_config is optional """ config = {} diff --git a/tests/components/notify/test_apns.py b/tests/components/notify/test_apns.py index e0363f2d8b8..6949863280c 100644 --- a/tests/components/notify/test_apns.py +++ b/tests/components/notify/test_apns.py @@ -1,14 +1,26 @@ """The tests for the APNS component.""" -import unittest import os +import unittest +from unittest.mock import patch +from unittest.mock import Mock + +from apns2.errors import Unregistered import homeassistant.components.notify as notify -from homeassistant.core import State +from homeassistant.bootstrap import setup_component from homeassistant.components.notify.apns import ApnsNotificationService -from tests.common import get_test_home_assistant from homeassistant.config import load_yaml_config_file -from unittest.mock import patch -from apns2.errors import Unregistered +from homeassistant.core import State +from tests.common import assert_setup_component, get_test_home_assistant + +CONFIG = { + notify.DOMAIN: { + 'platform': 'apns', + 'name': 'test_app', + 'topic': 'testapp.appname', + 'cert_file': 'test_app.pem' + } +} class TestApns(unittest.TestCase): @@ -22,6 +34,13 @@ class TestApns(unittest.TestCase): """Stop everything that was started.""" self.hass.stop() + @patch('os.path.isfile', Mock(return_value=True)) + @patch('os.access', Mock(return_value=True)) + def _setup_notify(self): + with assert_setup_component(1) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, CONFIG) + assert handle_config[notify.DOMAIN] + def test_apns_setup_full(self): """Test setup with all data.""" config = { @@ -41,53 +60,49 @@ class TestApns(unittest.TestCase): config = { 'notify': { 'platform': 'apns', - 'sandbox': 'True', 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' + 'cert_file': 'test_app.pem', } } - self.assertFalse(notify.setup(self.hass, config)) + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] def test_apns_setup_missing_certificate(self): - """Test setup with missing name.""" + """Test setup with missing certificate.""" config = { 'notify': { 'platform': 'apns', + 'name': 'test_app', 'topic': 'testapp.appname', - 'name': 'test_app' } } - self.assertFalse(notify.setup(self.hass, config)) + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] def test_apns_setup_missing_topic(self): """Test setup with missing topic.""" config = { 'notify': { 'platform': 'apns', + 'name': 'test_app', 'cert_file': 'test_app.pem', - 'name': 'test_app' } } - self.assertFalse(notify.setup(self.hass, config)) + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] def test_register_new_device(self): """Test registering a new device with a name.""" - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('5678: {name: test device 2}\n') - notify.setup(self.hass, config) - self.assertTrue(self.hass.services.call('apns', - 'test_app', + self._setup_notify() + self.assertTrue(self.hass.services.call(notify.DOMAIN, + 'apns_test_app', {'push_id': '1234', 'name': 'test device'}, blocking=True)) @@ -107,21 +122,12 @@ class TestApns(unittest.TestCase): def test_register_device_without_name(self): """Test registering a without a name.""" - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('5678: {name: test device 2}\n') - notify.setup(self.hass, config) - self.assertTrue(self.hass.services.call('apns', 'test_app', + self._setup_notify() + self.assertTrue(self.hass.services.call(notify.DOMAIN, 'apns_test_app', {'push_id': '1234'}, blocking=True)) @@ -137,23 +143,14 @@ class TestApns(unittest.TestCase): def test_update_existing_device(self): """Test updating an existing device.""" - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') out.write('5678: {name: test device 2}\n') - notify.setup(self.hass, config) - self.assertTrue(self.hass.services.call('apns', - 'test_app', + self._setup_notify() + self.assertTrue(self.hass.services.call(notify.DOMAIN, + 'apns_test_app', {'push_id': '1234', 'name': 'updated device 1'}, blocking=True)) @@ -173,15 +170,6 @@ class TestApns(unittest.TestCase): def test_update_existing_device_with_tracking_id(self): """Test updating an existing device that has a tracking id.""" - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, ' @@ -189,9 +177,9 @@ class TestApns(unittest.TestCase): out.write('5678: {name: test device 2, ' 'tracking_device_id: tracking456}\n') - notify.setup(self.hass, config) - self.assertTrue(self.hass.services.call('apns', - 'test_app', + self._setup_notify() + self.assertTrue(self.hass.services.call(notify.DOMAIN, + 'apns_test_app', {'push_id': '1234', 'name': 'updated device 1'}, blocking=True)) @@ -216,30 +204,20 @@ class TestApns(unittest.TestCase): def test_send(self, mock_client): """Test updating an existing device.""" send = mock_client.return_value.send_notification - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') - notify.setup(self.hass, config) + self._setup_notify() - self.assertTrue(self.hass.services.call('notify', 'test_app', - {'message': 'Hello', - 'data': { - 'badge': 1, - 'sound': 'test.mp3', - 'category': 'testing' - } - }, - blocking=True)) + self.assertTrue(self.hass.services.call( + 'notify', 'test_app', + {'message': 'Hello', 'data': { + 'badge': 1, + 'sound': 'test.mp3', + 'category': 'testing'}}, + blocking=True)) self.assertTrue(send.called) self.assertEqual(1, len(send.mock_calls)) @@ -257,30 +235,20 @@ class TestApns(unittest.TestCase): def test_send_when_disabled(self, mock_client): """Test updating an existing device.""" send = mock_client.return_value.send_notification - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1, disabled: True}\n') - notify.setup(self.hass, config) + self._setup_notify() - self.assertTrue(self.hass.services.call('notify', 'test_app', - {'message': 'Hello', - 'data': { - 'badge': 1, - 'sound': 'test.mp3', - 'category': 'testing' - } - }, - blocking=True)) + self.assertTrue(self.hass.services.call( + 'notify', 'test_app', + {'message': 'Hello', 'data': { + 'badge': 1, + 'sound': 'test.mp3', + 'category': 'testing'}}, + blocking=True)) self.assertFalse(send.called) @@ -328,20 +296,11 @@ class TestApns(unittest.TestCase): send = mock_client.return_value.send_notification send.side_effect = Unregistered() - config = { - 'notify': { - 'platform': 'apns', - 'name': 'test_app', - 'topic': 'testapp.appname', - 'cert_file': 'test_app.pem' - } - } - devices_path = self.hass.config.path('test_app_apns.yaml') with open(devices_path, 'w+') as out: out.write('1234: {name: test device 1}\n') - notify.setup(self.hass, config) + self._setup_notify() self.assertTrue(self.hass.services.call('notify', 'test_app', {'message': 'Hello'}, diff --git a/tests/components/notify/test_command_line.py b/tests/components/notify/test_command_line.py index 0d2235514f8..cebcd2a13fb 100644 --- a/tests/components/notify/test_command_line.py +++ b/tests/components/notify/test_command_line.py @@ -6,7 +6,7 @@ from unittest.mock import patch from homeassistant.bootstrap import setup_component import homeassistant.components.notify as notify -from tests.common import get_test_home_assistant +from tests.common import assert_setup_component, get_test_home_assistant class TestCommandLine(unittest.TestCase): @@ -22,34 +22,41 @@ class TestCommandLine(unittest.TestCase): def test_setup(self): """Test setup.""" - assert setup_component(self.hass, 'notify', { - 'notify': { - 'name': 'test', - 'platform': 'command_line', - 'command': 'echo $(cat); exit 1', - }}) + with assert_setup_component(1) as handle_config: + assert setup_component(self.hass, 'notify', { + 'notify': { + 'name': 'test', + 'platform': 'command_line', + 'command': 'echo $(cat); exit 1', } + }) + assert handle_config[notify.DOMAIN] def test_bad_config(self): """Test set up the platform with bad/missing configuration.""" - self.assertFalse(setup_component(self.hass, notify.DOMAIN, { - 'notify': { + config = { + notify.DOMAIN: { 'name': 'test', - 'platform': 'bad_platform', + 'platform': 'command_line', } - })) + } + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] def test_command_line_output(self): """Test the command line output.""" with tempfile.TemporaryDirectory() as tempdirname: filename = os.path.join(tempdirname, 'message.txt') message = 'one, two, testing, testing' - self.assertTrue(setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'name': 'test', - 'platform': 'command_line', - 'command': 'echo $(cat) > {}'.format(filename) - } - })) + with assert_setup_component(1) as handle_config: + self.assertTrue(setup_component(self.hass, notify.DOMAIN, { + 'notify': { + 'name': 'test', + 'platform': 'command_line', + 'command': 'echo $(cat) > {}'.format(filename) + } + })) + assert handle_config[notify.DOMAIN] self.assertTrue( self.hass.services.call('notify', 'test', {'message': message}, @@ -63,13 +70,15 @@ class TestCommandLine(unittest.TestCase): @patch('homeassistant.components.notify.command_line._LOGGER.error') def test_error_for_none_zero_exit_code(self, mock_error): """Test if an error is logged for non zero exit codes.""" - self.assertTrue(setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'name': 'test', - 'platform': 'command_line', - 'command': 'echo $(cat); exit 1' - } - })) + with assert_setup_component(1) as handle_config: + self.assertTrue(setup_component(self.hass, notify.DOMAIN, { + 'notify': { + 'name': 'test', + 'platform': 'command_line', + 'command': 'echo $(cat); exit 1' + } + })) + assert handle_config[notify.DOMAIN] self.assertTrue( self.hass.services.call('notify', 'test', {'message': 'error'}, diff --git a/tests/components/notify/test_demo.py b/tests/components/notify/test_demo.py index ddf08d91127..1ccb3f5c56d 100644 --- a/tests/components/notify/test_demo.py +++ b/tests/components/notify/test_demo.py @@ -1,13 +1,19 @@ """The tests for the notify demo platform.""" import unittest +from unittest.mock import patch -from homeassistant.core import callback -from homeassistant.bootstrap import setup_component import homeassistant.components.notify as notify +from homeassistant.bootstrap import setup_component from homeassistant.components.notify import demo -from homeassistant.helpers import script +from homeassistant.core import callback +from homeassistant.helpers import discovery, script +from tests.common import assert_setup_component, get_test_home_assistant -from tests.common import get_test_home_assistant +CONFIG = { + notify.DOMAIN: { + 'platform': 'demo' + } +} class TestNotifyDemo(unittest.TestCase): @@ -16,11 +22,6 @@ class TestNotifyDemo(unittest.TestCase): def setUp(self): # pylint: disable=invalid-name """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.assertTrue(setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'platform': 'demo' - } - })) self.events = [] self.calls = [] @@ -35,6 +36,59 @@ class TestNotifyDemo(unittest.TestCase): """"Stop down everything that was started.""" self.hass.stop() + def _setup_notify(self): + with assert_setup_component(1) as config: + assert setup_component(self.hass, notify.DOMAIN, CONFIG) + assert config[notify.DOMAIN] + + def test_setup(self): + """Test setup.""" + self._setup_notify() + + @patch('homeassistant.bootstrap.prepare_setup_platform') + def test_no_prepare_setup_platform(self, mock_prep_setup_platform): + """Test missing notify platform.""" + mock_prep_setup_platform.return_value = None + with self.assertLogs('homeassistant.components.notify', + level='ERROR') as log_handle: + self._setup_notify() + self.hass.block_till_done() + assert mock_prep_setup_platform.called + self.assertEqual( + log_handle.output, + ['ERROR:homeassistant.components.notify:' + 'Unknown notification service specified', + 'ERROR:homeassistant.components.notify:' + 'Failed to set up platform demo']) + + @patch('homeassistant.components.notify.demo.get_service') + def test_no_notify_service(self, mock_demo_get_service): + """Test missing platform notify service instance.""" + mock_demo_get_service.return_value = None + with self.assertLogs('homeassistant.components.notify', + level='ERROR') as log_handle: + self._setup_notify() + self.hass.block_till_done() + assert mock_demo_get_service.called + self.assertEqual( + log_handle.output, + ['ERROR:homeassistant.components.notify:' + 'Failed to initialize notification service demo', + 'ERROR:homeassistant.components.notify:' + 'Failed to set up platform demo']) + + @patch('homeassistant.components.notify.demo.get_service') + def test_discover_notify(self, mock_demo_get_service): + """Test discovery of notify demo platform.""" + assert notify.DOMAIN not in self.hass.config.components + discovery.load_platform( + self.hass, 'notify', 'demo', {'test_key': 'test_val'}, {}) + self.hass.block_till_done() + assert notify.DOMAIN in self.hass.config.components + assert mock_demo_get_service.called + assert mock_demo_get_service.call_args[0] == ( + self.hass, {}, {'test_key': 'test_val'}) + @callback def record_calls(self, *args): """Helper for recording calls.""" @@ -42,12 +96,14 @@ class TestNotifyDemo(unittest.TestCase): def test_sending_none_message(self): """Test send with None as message.""" + self._setup_notify() notify.send_message(self.hass, None) self.hass.block_till_done() self.assertTrue(len(self.events) == 0) def test_sending_templated_message(self): """Send a templated message.""" + self._setup_notify() self.hass.states.set('sensor.temperature', 10) notify.send_message(self.hass, '{{ states.sensor.temperature.state }}', '{{ states.sensor.temperature.name }}') @@ -58,6 +114,7 @@ class TestNotifyDemo(unittest.TestCase): def test_method_forwards_correct_data(self): """Test that all data from the service gets forwarded to service.""" + self._setup_notify() notify.send_message(self.hass, 'my message', 'my title', {'hello': 'world'}) self.hass.block_till_done() @@ -71,6 +128,7 @@ class TestNotifyDemo(unittest.TestCase): def test_calling_notify_from_script_loaded_from_yaml_without_title(self): """Test if we can call a notify from a script.""" + self._setup_notify() conf = { 'service': 'notify.notify', 'data': { @@ -97,6 +155,7 @@ class TestNotifyDemo(unittest.TestCase): def test_calling_notify_from_script_loaded_from_yaml_with_title(self): """Test if we can call a notify from a script.""" + self._setup_notify() conf = { 'service': 'notify.notify', 'data': { @@ -127,12 +186,14 @@ class TestNotifyDemo(unittest.TestCase): def test_targets_are_services(self): """Test that all targets are exposed as individual services.""" + self._setup_notify() self.assertIsNotNone(self.hass.services.has_service("notify", "demo")) service = "demo_test_target_name" self.assertIsNotNone(self.hass.services.has_service("notify", service)) def test_messages_to_targets_route(self): """Test message routing to specific target services.""" + self._setup_notify() self.hass.bus.listen_once("notify", self.record_calls) self.hass.services.call("notify", "demo_test_target_name", diff --git a/tests/components/notify/test_file.py b/tests/components/notify/test_file.py index 08407b20a58..ea0aaaaa71d 100644 --- a/tests/components/notify/test_file.py +++ b/tests/components/notify/test_file.py @@ -9,7 +9,7 @@ from homeassistant.components.notify import ( ATTR_TITLE_DEFAULT) import homeassistant.util.dt as dt_util -from tests.common import get_test_home_assistant, assert_setup_component +from tests.common import assert_setup_component, get_test_home_assistant class TestNotifyFile(unittest.TestCase): @@ -25,36 +25,38 @@ class TestNotifyFile(unittest.TestCase): def test_bad_config(self): """Test set up the platform with bad/missing config.""" - with assert_setup_component(0): - assert not setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'name': 'test', - 'platform': 'file', - }, - }) + config = { + notify.DOMAIN: { + 'name': 'test', + 'platform': 'file', + }, + } + with assert_setup_component(0) as handle_config: + assert setup_component(self.hass, notify.DOMAIN, config) + assert not handle_config[notify.DOMAIN] - @patch('homeassistant.components.notify.file.os.stat') - @patch('homeassistant.util.dt.utcnow') - def test_notify_file(self, mock_utcnow, mock_stat): + def _test_notify_file(self, timestamp, mock_utcnow, mock_stat): """Test the notify file output.""" mock_utcnow.return_value = dt_util.as_utc(dt_util.now()) mock_stat.return_value.st_size = 0 m_open = mock_open() with patch( - 'homeassistant.components.notify.file.open', - m_open, create=True + 'homeassistant.components.notify.file.open', + m_open, create=True ): filename = 'mock_file' message = 'one, two, testing, testing' - self.assertTrue(setup_component(self.hass, notify.DOMAIN, { - 'notify': { - 'name': 'test', - 'platform': 'file', - 'filename': filename, - 'timestamp': False, - } - })) + with assert_setup_component(1) as handle_config: + self.assertTrue(setup_component(self.hass, notify.DOMAIN, { + 'notify': { + 'name': 'test', + 'platform': 'file', + 'filename': filename, + 'timestamp': timestamp, + } + })) + assert handle_config[notify.DOMAIN] title = '{} notifications (Log started: {})\n{}\n'.format( ATTR_TITLE_DEFAULT, dt_util.utcnow().isoformat(), @@ -68,7 +70,26 @@ class TestNotifyFile(unittest.TestCase): self.assertEqual(m_open.call_args, call(full_filename, 'a')) self.assertEqual(m_open.return_value.write.call_count, 2) - self.assertEqual( - m_open.return_value.write.call_args_list, - [call(title), call(message + '\n')] - ) + if not timestamp: + self.assertEqual( + m_open.return_value.write.call_args_list, + [call(title), call('{}\n'.format(message))] + ) + else: + self.assertEqual( + m_open.return_value.write.call_args_list, + [call(title), call('{} {}\n'.format( + dt_util.utcnow().isoformat(), message))] + ) + + @patch('homeassistant.components.notify.file.os.stat') + @patch('homeassistant.util.dt.utcnow') + def test_notify_file(self, mock_utcnow, mock_stat): + """Test the notify file output without timestamp.""" + self._test_notify_file(False, mock_utcnow, mock_stat) + + @patch('homeassistant.components.notify.file.os.stat') + @patch('homeassistant.util.dt.utcnow') + def test_notify_file_timestamp(self, mock_utcnow, mock_stat): + """Test the notify file output with timestamp.""" + self._test_notify_file(True, mock_utcnow, mock_stat) diff --git a/tests/components/notify/test_group.py b/tests/components/notify/test_group.py index f0871c78322..14c8c46b6c3 100644 --- a/tests/components/notify/test_group.py +++ b/tests/components/notify/test_group.py @@ -19,7 +19,7 @@ class TestNotifyGroup(unittest.TestCase): self.service1 = MagicMock() self.service2 = MagicMock() - def mock_get_service(hass, config): + def mock_get_service(hass, config, discovery_info=None): if config['name'] == 'demo1': return self.service1 else: From e7c157e766341ec38691ac760dbc83fff8b7a46a Mon Sep 17 00:00:00 2001 From: Adam Mills <adam@armills.info> Date: Sun, 15 Jan 2017 02:27:56 -0500 Subject: [PATCH 184/189] Tests for async volume up/down (#5265) --- .../media_player/test_async_helpers.py | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 tests/components/media_player/test_async_helpers.py diff --git a/tests/components/media_player/test_async_helpers.py b/tests/components/media_player/test_async_helpers.py new file mode 100644 index 00000000000..32b527ac4f1 --- /dev/null +++ b/tests/components/media_player/test_async_helpers.py @@ -0,0 +1,117 @@ +"""The tests for the Async Media player helper functions.""" +import unittest +import asyncio + +import homeassistant.components.media_player as mp +from homeassistant.util.async import run_coroutine_threadsafe + +from tests.common import get_test_home_assistant + + +class AsyncMediaPlayer(mp.MediaPlayerDevice): + """Async media player test class.""" + + def __init__(self, hass): + """Initialize the test media player.""" + self.hass = hass + self._volume = 0 + + @property + def volume_level(self): + """Volume level of the media player (0..1).""" + return self._volume + + @asyncio.coroutine + def async_set_volume_level(self, volume): + """Set volume level, range 0..1.""" + self._volume = volume + + +class SyncMediaPlayer(mp.MediaPlayerDevice): + """Sync media player test class.""" + + def __init__(self, hass): + """Initialize the test media player.""" + self.hass = hass + self._volume = 0 + + @property + def volume_level(self): + """Volume level of the media player (0..1).""" + return self._volume + + def set_volume_level(self, volume): + """Set volume level, range 0..1.""" + self._volume = volume + + def volume_up(self): + """Turn volume up for media player.""" + if self.volume_level < 1: + self.set_volume_level(min(1, self.volume_level + .2)) + + def volume_down(self): + """Turn volume down for media player.""" + if self.volume_level > 0: + self.set_volume_level(max(0, self.volume_level - .2)) + + +class TestAsyncMediaPlayer(unittest.TestCase): + """Test the media_player module.""" + + def setUp(self): # pylint: disable=invalid-name + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + self.player = AsyncMediaPlayer(self.hass) + + def tearDown(self): + """Shut down test instance.""" + self.hass.stop() + + def test_volume_up(self): + """Test the volume_up helper function.""" + self.assertEqual(self.player.volume_level, 0) + run_coroutine_threadsafe( + self.player.async_set_volume_level(0.5), self.hass.loop).result() + self.assertEqual(self.player.volume_level, 0.5) + run_coroutine_threadsafe( + self.player.async_volume_up(), self.hass.loop).result() + self.assertEqual(self.player.volume_level, 0.6) + + def test_volume_down(self): + """Test the volume_down helper function.""" + self.assertEqual(self.player.volume_level, 0) + run_coroutine_threadsafe( + self.player.async_set_volume_level(0.5), self.hass.loop).result() + self.assertEqual(self.player.volume_level, 0.5) + run_coroutine_threadsafe( + self.player.async_volume_down(), self.hass.loop).result() + self.assertEqual(self.player.volume_level, 0.4) + + +class TestSyncMediaPlayer(unittest.TestCase): + """Test the media_player module.""" + + def setUp(self): # pylint: disable=invalid-name + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + self.player = SyncMediaPlayer(self.hass) + + def tearDown(self): + """Shut down test instance.""" + self.hass.stop() + + def test_volume_up(self): + """Test the volume_up helper function.""" + self.assertEqual(self.player.volume_level, 0) + self.player.set_volume_level(0.5) + self.assertEqual(self.player.volume_level, 0.5) + self.player.volume_up() + self.assertEqual(self.player.volume_level, 0.7) + + def test_volume_down(self): + """Test the volume_down helper function.""" + self.assertEqual(self.player.volume_level, 0) + self.player.set_volume_level(0.5) + self.assertEqual(self.player.volume_level, 0.5) + self.player.volume_down() + self.assertEqual(self.player.volume_level, 0.3) From e00e6f9db6a26f13d41d2002809601cfeb06af7f Mon Sep 17 00:00:00 2001 From: Zac Hatfield Dodds <Zac-HD@users.noreply.github.com> Date: Sun, 15 Jan 2017 22:12:50 +1100 Subject: [PATCH 185/189] Bom weather platform (#5153) * Fix typo * Auto-config for `sensor.bom` Deprecate (but still support) the old two-part station ID, and move to a single `station` identifier. Any combination of these, including none, is valid; most results in downloading and caching the station map to work out any missing info. * Add `weather.bom` platform Very similar to `sensor.bom`, but supporting the lovely new `weather` component interface. Easier to configure, and does not support the deprecated config options. * Review improvements to BOM weather Largely around better input validation. --- .coveragerc | 1 + homeassistant/components/sensor/bom.py | 129 ++++++++++++++++++++--- homeassistant/components/weather/bom.py | 107 +++++++++++++++++++ homeassistant/components/weather/demo.py | 2 +- 4 files changed, 221 insertions(+), 18 deletions(-) create mode 100644 homeassistant/components/weather/bom.py diff --git a/.coveragerc b/.coveragerc index 3862b3015e4..506e51a63d8 100644 --- a/.coveragerc +++ b/.coveragerc @@ -364,6 +364,7 @@ omit = homeassistant/components/thingspeak.py homeassistant/components/tts/picotts.py homeassistant/components/upnp.py + homeassistant/components/weather/bom.py homeassistant/components/weather/openweathermap.py homeassistant/components/zeroconf.py diff --git a/homeassistant/components/sensor/bom.py b/homeassistant/components/sensor/bom.py index 3b6beab0510..a83ca49c619 100644 --- a/homeassistant/components/sensor/bom.py +++ b/homeassistant/components/sensor/bom.py @@ -5,15 +5,22 @@ For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.bom/ """ import datetime +import ftplib +import gzip +import io +import json import logging -import requests +import os +import re +import zipfile +import requests import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import ( CONF_MONITORED_CONDITIONS, TEMP_CELSIUS, STATE_UNKNOWN, CONF_NAME, - ATTR_ATTRIBUTION) + ATTR_ATTRIBUTION, CONF_LATITUDE, CONF_LONGITUDE) from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv @@ -22,6 +29,7 @@ _RESOURCE = 'http://www.bom.gov.au/fwo/{}/{}.{}.json' _LOGGER = logging.getLogger(__name__) CONF_ATTRIBUTION = "Data provided by the Australian Bureau of Meteorology" +CONF_STATION = 'station' CONF_ZONE_ID = 'zone_id' CONF_WMO_ID = 'wmo_id' @@ -66,10 +74,22 @@ SENSOR_TYPES = { 'wind_spd_kt': ['Wind Direction kt', 'kt'] } + +def validate_station(station): + """Check that the station ID is well-formed.""" + if station is None: + return + station = station.replace('.shtml', '') + if not re.fullmatch(r'ID[A-Z]\d\d\d\d\d\.\d\d\d\d\d', station): + raise vol.error.Invalid('Malformed station ID') + return station + + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Required(CONF_ZONE_ID): cv.string, - vol.Required(CONF_WMO_ID): cv.string, + vol.Inclusive(CONF_ZONE_ID, 'Deprecated partial station ID'): cv.string, + vol.Inclusive(CONF_WMO_ID, 'Deprecated partial station ID'): cv.string, vol.Optional(CONF_NAME, default=None): cv.string, + vol.Optional(CONF_STATION): validate_station, vol.Required(CONF_MONITORED_CONDITIONS, default=[]): vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]), }) @@ -77,22 +97,31 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the BOM sensor.""" - rest = BOMCurrentData( - hass, config.get(CONF_ZONE_ID), config.get(CONF_WMO_ID)) - - sensors = [] - for variable in config[CONF_MONITORED_CONDITIONS]: - sensors.append(BOMCurrentSensor( - rest, variable, config.get(CONF_NAME))) + station = config.get(CONF_STATION) + zone_id, wmo_id = config.get(CONF_ZONE_ID), config.get(CONF_WMO_ID) + if station is not None: + if zone_id and wmo_id: + _LOGGER.warning( + 'Using config "%s", not "%s" and "%s" for BOM sensor', + CONF_STATION, CONF_ZONE_ID, CONF_WMO_ID) + elif zone_id and wmo_id: + station = '{}.{}'.format(zone_id, wmo_id) + else: + station = closest_station(config.get(CONF_LATITUDE), + config.get(CONF_LONGITUDE), + hass.config.config_dir) + if station is None: + _LOGGER.error("Could not get BOM weather station from lat/lon") + return False + rest = BOMCurrentData(hass, station) try: rest.update() except ValueError as err: _LOGGER.error("Received error from BOM_Current: %s", err) return False - - add_devices(sensors) - + add_devices([BOMCurrentSensor(rest, variable, config.get(CONF_NAME)) + for variable in config[CONF_MONITORED_CONDITIONS]]) return True @@ -148,11 +177,10 @@ class BOMCurrentSensor(Entity): class BOMCurrentData(object): """Get data from BOM.""" - def __init__(self, hass, zone_id, wmo_id): + def __init__(self, hass, station_id): """Initialize the data object.""" self._hass = hass - self._zone_id = zone_id - self._wmo_id = wmo_id + self._zone_id, self._wmo_id = station_id.split('.') self.data = None self._lastupdate = LAST_UPDATE @@ -182,3 +210,70 @@ class BOMCurrentData(object): _LOGGER.error("Check BOM %s", err.args) self.data = None raise + + +def _get_bom_stations(): + """Return {CONF_STATION: (lat, lon)} for all stations, for auto-config. + + This function does several MB of internet requests, so please use the + caching version to minimise latency and hit-count. + """ + latlon = {} + with io.BytesIO() as file_obj: + with ftplib.FTP('ftp.bom.gov.au') as ftp: + ftp.login() + ftp.cwd('anon2/home/ncc/metadata/sitelists') + ftp.retrbinary('RETR stations.zip', file_obj.write) + file_obj.seek(0) + with zipfile.ZipFile(file_obj) as zipped: + with zipped.open('stations.txt') as station_txt: + for _ in range(4): + station_txt.readline() # skip header + while True: + line = station_txt.readline().decode().strip() + if len(line) < 120: + break # end while loop, ignoring any footer text + wmo, lat, lon = (line[a:b].strip() for a, b in + [(128, 134), (70, 78), (79, 88)]) + if wmo != '..': + latlon[wmo] = (float(lat), float(lon)) + zones = {} + pattern = (r'<a href="/products/(?P<zone>ID[A-Z]\d\d\d\d\d)/' + r'(?P=zone)\.(?P<wmo>\d\d\d\d\d).shtml">') + for state in ('nsw', 'vic', 'qld', 'wa', 'tas', 'nt'): + url = 'http://www.bom.gov.au/{0}/observations/{0}all.shtml'.format( + state) + for zone_id, wmo_id in re.findall(pattern, requests.get(url).text): + zones[wmo_id] = zone_id + return {'{}.{}'.format(zones[k], k): latlon[k] + for k in set(latlon) & set(zones)} + + +def bom_stations(cache_dir): + """Return {CONF_STATION: (lat, lon)} for all stations, for auto-config. + + Results from internet requests are cached as compressed json, making + subsequent calls very much faster. + """ + cache_file = os.path.join(cache_dir, '.bom-stations.json.gz') + if not os.path.isfile(cache_file): + stations = _get_bom_stations() + with gzip.open(cache_file, 'wt') as cache: + json.dump(stations, cache, sort_keys=True) + return stations + with gzip.open(cache_file, 'rt') as cache: + return {k: tuple(v) for k, v in json.load(cache).items()} + + +def closest_station(lat, lon, cache_dir): + """Return the ZONE_ID.WMO_ID of the closest station to our lat/lon.""" + if lat is None or lon is None or not os.path.isdir(cache_dir): + return + stations = bom_stations(cache_dir) + + def comparable_dist(wmo_id): + """A fast key function for psudeo-distance from lat/lon.""" + station_lat, station_lon = stations[wmo_id] + return (lat - station_lat) ** 2 + (lon - station_lon) ** 2 + + return min(stations, key=comparable_dist) diff --git a/homeassistant/components/weather/bom.py b/homeassistant/components/weather/bom.py new file mode 100644 index 00000000000..236aeb2fa2e --- /dev/null +++ b/homeassistant/components/weather/bom.py @@ -0,0 +1,107 @@ +""" +Support for Australian BOM (Bureau of Meteorology) weather service. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/weather.bom/ +""" +import logging + +import voluptuous as vol + +from homeassistant.components.weather import WeatherEntity, PLATFORM_SCHEMA +from homeassistant.const import \ + CONF_NAME, TEMP_CELSIUS, CONF_LATITUDE, CONF_LONGITUDE +from homeassistant.helpers import config_validation as cv +# Reuse data and API logic from the sensor implementation +from homeassistant.components.sensor.bom import \ + BOMCurrentData, closest_station, CONF_STATION, validate_station + +_LOGGER = logging.getLogger(__name__) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_STATION): validate_station, +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the BOM weather platform.""" + station = config.get(CONF_STATION) or closest_station( + config.get(CONF_LATITUDE), + config.get(CONF_LONGITUDE), + hass.config.config_dir) + if station is None: + _LOGGER.error("Could not get BOM weather station from lat/lon") + return False + bom_data = BOMCurrentData(hass, station) + try: + bom_data.update() + except ValueError as err: + _LOGGER.error("Received error from BOM_Current: %s", err) + return False + add_devices([BOMWeather(bom_data, config.get(CONF_NAME))], True) + + +class BOMWeather(WeatherEntity): + """Representation of a weather condition.""" + + def __init__(self, bom_data, stationname=None): + """Initialise the platform with a data instance and station name.""" + self.bom_data = bom_data + self.stationname = stationname or self.bom_data.data.get('name') + + def update(self): + """Update current conditions.""" + self.bom_data.update() + + @property + def name(self): + """Return the name of the sensor.""" + return 'BOM {}'.format(self.stationname or '(unknown station)') + + @property + def condition(self): + """Return the current condition.""" + return self.bom_data.data.get('weather') + + # Now implement the WeatherEntity interface + + @property + def temperature(self): + """Return the platform temperature.""" + return self.bom_data.data.get('air_temp') + + @property + def temperature_unit(self): + """Return the unit of measurement.""" + return TEMP_CELSIUS + + @property + def pressure(self): + """Return the mean sea-level pressure.""" + return self.bom_data.data.get('press_msl') + + @property + def humidity(self): + """Return the relative humidity.""" + return self.bom_data.data.get('rel_hum') + + @property + def wind_speed(self): + """Return the wind speed.""" + return self.bom_data.data.get('wind_spd_kmh') + + @property + def wind_bearing(self): + """Return the wind bearing.""" + directions = ['N', 'NNE', 'NE', 'ENE', + 'E', 'ESE', 'SE', 'SSE', + 'S', 'SSW', 'SW', 'WSW', + 'W', 'WNW', 'NW', 'NNW'] + wind = {name: idx * 360 / 16 for idx, name in enumerate(directions)} + return wind.get(self.bom_data.data.get('wind_dir')) + + @property + def attribution(self): + """Return the attribution.""" + return "Data provided by the Australian Bureau of Meteorology" diff --git a/homeassistant/components/weather/demo.py b/homeassistant/components/weather/demo.py index f7617bd0075..b919722f2a4 100644 --- a/homeassistant/components/weather/demo.py +++ b/homeassistant/components/weather/demo.py @@ -79,7 +79,7 @@ class DemoWeather(WeatherEntity): @property def pressure(self): - """Return the wind speed.""" + """Return the pressure.""" return self._pressure @property From 2465aea63b701b5f362f86a3ce7e170e1f28313c Mon Sep 17 00:00:00 2001 From: Fabian Affolter <mail@fabian-affolter.ch> Date: Sun, 15 Jan 2017 14:53:07 +0100 Subject: [PATCH 186/189] Fix link (#5343) --- homeassistant/components/tts/google.py | 6 +++--- homeassistant/components/tts/picotts.py | 2 +- homeassistant/components/tts/voicerss.py | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/tts/google.py b/homeassistant/components/tts/google.py index dc03013d4f1..10ce3de6c6b 100644 --- a/homeassistant/components/tts/google.py +++ b/homeassistant/components/tts/google.py @@ -2,7 +2,7 @@ Support for the google speech service. For more details about this component, please refer to the documentation at -https://home-assistant.io/components/tts/google/ +https://home-assistant.io/components/tts.google/ """ import asyncio import logging @@ -41,12 +41,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_get_engine(hass, config): - """Setup Google speech component.""" + """Set up Google speech component.""" return GoogleProvider(hass, config[CONF_LANG]) class GoogleProvider(Provider): - """Google speech api provider.""" + """The Google speech API provider.""" def __init__(self, hass, lang): """Init Google TTS service.""" diff --git a/homeassistant/components/tts/picotts.py b/homeassistant/components/tts/picotts.py index b0c5f5deef7..3cc133864b6 100644 --- a/homeassistant/components/tts/picotts.py +++ b/homeassistant/components/tts/picotts.py @@ -25,7 +25,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_engine(hass, config): - """Setup pico speech component.""" + """Set up Pico speech component.""" if shutil.which("pico2wave") is None: _LOGGER.error("'pico2wave' was not found") return False diff --git a/homeassistant/components/tts/voicerss.py b/homeassistant/components/tts/voicerss.py index 2dda27b0c06..f7a97a354f0 100644 --- a/homeassistant/components/tts/voicerss.py +++ b/homeassistant/components/tts/voicerss.py @@ -2,7 +2,7 @@ Support for the voicerss speech service. For more details about this component, please refer to the documentation at -https://home-assistant.io/components/tts/voicerss/ +https://home-assistant.io/components/tts.voicerss/ """ import asyncio import logging @@ -83,12 +83,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @asyncio.coroutine def async_get_engine(hass, config): - """Setup VoiceRSS speech component.""" + """Set up VoiceRSS TTS component.""" return VoiceRSSProvider(hass, config) class VoiceRSSProvider(Provider): - """VoiceRSS speech api provider.""" + """The VoiceRSS speech API provider.""" def __init__(self, hass, conf): """Init VoiceRSS TTS service.""" @@ -115,7 +115,7 @@ class VoiceRSSProvider(Provider): @asyncio.coroutine def async_get_tts_audio(self, message, language): - """Load TTS from voicerss.""" + """Load TTS from VoiceRSS.""" websession = async_get_clientsession(self.hass) form_data = self._form_data.copy() @@ -137,11 +137,11 @@ class VoiceRSSProvider(Provider): if data in ERROR_MSG: _LOGGER.error( - "Error receive %s from voicerss.", str(data, 'utf-8')) + "Error receive %s from VoiceRSS", str(data, 'utf-8')) return (None, None) except (asyncio.TimeoutError, aiohttp.errors.ClientError): - _LOGGER.error("Timeout for voicerss api.") + _LOGGER.error("Timeout for VoiceRSS API") return (None, None) finally: From 85a84549eb73207ecb7cfc069cdd42ffaccb4cc0 Mon Sep 17 00:00:00 2001 From: Lupin Demid <lupin@demid.su> Date: Sun, 15 Jan 2017 18:43:10 +0400 Subject: [PATCH 187/189] Yandex tts component (#5342) * Added Yandex SpeechKit TTS * Added test stub * Added two test and added property for yandex tts * Copy all test from voice rss * Added test vith different speaker and code style changes * Added new line to end of file * Url format replaced with url_params --- homeassistant/components/tts/yandextts.py | 114 ++++++++++++ tests/components/tts/test_yandextts.py | 215 ++++++++++++++++++++++ 2 files changed, 329 insertions(+) create mode 100644 homeassistant/components/tts/yandextts.py create mode 100644 tests/components/tts/test_yandextts.py diff --git a/homeassistant/components/tts/yandextts.py b/homeassistant/components/tts/yandextts.py new file mode 100644 index 00000000000..d5825ce297f --- /dev/null +++ b/homeassistant/components/tts/yandextts.py @@ -0,0 +1,114 @@ +""" +Support for the yandex speechkit tts service. + +For more details about this component, please refer to the documentation at +https://home-assistant.io/components/tts/yandextts/ +""" +import asyncio +import logging + +import aiohttp +import async_timeout +import voluptuous as vol + +from homeassistant.const import CONF_API_KEY +from homeassistant.components.tts import Provider, PLATFORM_SCHEMA, CONF_LANG +from homeassistant.helpers.aiohttp_client import async_get_clientsession +import homeassistant.helpers.config_validation as cv + + +_LOGGER = logging.getLogger(__name__) + +YANDEX_API_URL = "https://tts.voicetech.yandex.net/generate?" + +SUPPORT_LANGUAGES = [ + 'ru-RU', 'en-US', 'tr-TR', 'uk-UK' +] + +SUPPORT_CODECS = [ + 'mp3', 'wav', 'opus', +] + +SUPPORT_VOICES = [ + 'jane', 'oksana', 'alyss', 'omazh', + 'zahar', 'ermil' +] +CONF_CODEC = 'codec' +CONF_VOICE = 'voice' + +DEFAULT_LANG = 'en-US' +DEFAULT_CODEC = 'mp3' +DEFAULT_VOICE = 'zahar' + + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_API_KEY): cv.string, + vol.Optional(CONF_LANG, default=DEFAULT_LANG): vol.In(SUPPORT_LANGUAGES), + vol.Optional(CONF_CODEC, default=DEFAULT_CODEC): vol.In(SUPPORT_CODECS), + vol.Optional(CONF_VOICE, default=DEFAULT_VOICE): vol.In(SUPPORT_VOICES), +}) + + +@asyncio.coroutine +def async_get_engine(hass, config): + """Setup VoiceRSS speech component.""" + return YandexSpeechKitProvider(hass, config) + + +class YandexSpeechKitProvider(Provider): + """VoiceRSS speech api provider.""" + + def __init__(self, hass, conf): + """Init VoiceRSS TTS service.""" + self.hass = hass + self._codec = conf.get(CONF_CODEC) + self._key = conf.get(CONF_API_KEY) + self._speaker = conf.get(CONF_VOICE) + self._language = conf.get(CONF_LANG) + + @property + def default_language(self): + """Default language.""" + return self._language + + @property + def supported_languages(self): + """List of supported languages.""" + return SUPPORT_LANGUAGES + + @asyncio.coroutine + def async_get_tts_audio(self, message, language): + """Load TTS from yandex.""" + websession = async_get_clientsession(self.hass) + + actual_language = language + + request = None + try: + with async_timeout.timeout(10, loop=self.hass.loop): + url_param = { + 'text': message, + 'lang': actual_language, + 'key': self._key, + 'speaker': self._speaker, + 'format': self._codec, + } + + request = yield from websession.get(YANDEX_API_URL, + params=url_param) + + if request.status != 200: + _LOGGER.error("Error %d on load url %s.", + request.status, request.url) + return (None, None) + data = yield from request.read() + + except (asyncio.TimeoutError, aiohttp.errors.ClientError): + _LOGGER.error("Timeout for yandex speech kit api.") + return (None, None) + + finally: + if request is not None: + yield from request.release() + + return (self._codec, data) diff --git a/tests/components/tts/test_yandextts.py b/tests/components/tts/test_yandextts.py new file mode 100644 index 00000000000..f0c6eb85200 --- /dev/null +++ b/tests/components/tts/test_yandextts.py @@ -0,0 +1,215 @@ +"""The tests for the Yandex SpeechKit speech platform.""" +import asyncio +import os +import shutil + +import homeassistant.components.tts as tts +from homeassistant.bootstrap import setup_component +from homeassistant.components.media_player import ( + SERVICE_PLAY_MEDIA, DOMAIN as DOMAIN_MP) +from tests.common import ( + get_test_home_assistant, assert_setup_component, mock_service) + + +class TestTTSYandexPlatform(object): + """Test the speech component.""" + + def setup_method(self): + """Setup things to be run when tests are started.""" + self.hass = get_test_home_assistant() + self._base_url = "https://tts.voicetech.yandex.net/generate?" + + def teardown_method(self): + """Stop everything that was started.""" + default_tts = self.hass.config.path(tts.DEFAULT_CACHE_DIR) + if os.path.isdir(default_tts): + shutil.rmtree(default_tts) + + self.hass.stop() + + def test_setup_component(self): + """Test setup component.""" + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + def test_setup_component_without_api_key(self): + """Test setup component without api key.""" + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + } + } + + with assert_setup_component(0, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + def test_service_say(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=en-US" + aioclient_mock.get( + url, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert len(calls) == 1 + + def test_service_say_russian_config(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=ru-RU" + aioclient_mock.get( + url, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx', + 'language': 'ru-RU', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert len(calls) == 1 + + def test_service_say_russian_service(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=ru-RU" + aioclient_mock.get( + url, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx', + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + tts.ATTR_LANGUAGE: "ru-RU" + }) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert len(calls) == 1 + + def test_service_say_timeout(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=en-US" + aioclient_mock.get( + url, status=200, exc=asyncio.TimeoutError()) + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(calls) == 0 + assert len(aioclient_mock.mock_calls) == 1 + + def test_service_say_http_error(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=zahar&key=1234567xx&text=HomeAssistant&lang=en-US" + aioclient_mock.get( + url, status=403, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(calls) == 0 + + def test_service_say_specifed_speaker(self, aioclient_mock): + """Test service call say.""" + calls = mock_service(self.hass, DOMAIN_MP, SERVICE_PLAY_MEDIA) + + url = "https://tts.voicetech.yandex.net/generate?format=mp3" \ + "&speaker=alyss&key=1234567xx&text=HomeAssistant&lang=en-US" + aioclient_mock.get( + url, status=200, content=b'test') + + config = { + tts.DOMAIN: { + 'platform': 'yandextts', + 'api_key': '1234567xx', + 'voice': 'alyss' + } + } + + with assert_setup_component(1, tts.DOMAIN): + setup_component(self.hass, tts.DOMAIN, config) + + self.hass.services.call(tts.DOMAIN, 'yandextts_say', { + tts.ATTR_MESSAGE: "HomeAssistant", + }) + self.hass.block_till_done() + + assert len(aioclient_mock.mock_calls) == 1 + assert len(calls) == 1 From c458ee29f28c0d6f843e521bef0411068ce73a6a Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sun, 15 Jan 2017 17:35:58 +0100 Subject: [PATCH 188/189] Rename log message / handle cancellederror on image proxy (#5331) --- homeassistant/components/camera/__init__.py | 14 +++++++++----- homeassistant/components/camera/ffmpeg.py | 2 +- homeassistant/components/camera/mjpeg.py | 2 +- homeassistant/components/camera/synology.py | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 2d4e73cd6e4..89a2f6c5e46 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -175,7 +175,7 @@ class Camera(Entity): yield from asyncio.sleep(.5) except asyncio.CancelledError: - _LOGGER.debug("Close stream by browser.") + _LOGGER.debug("Close stream by frontend.") response = None finally: @@ -249,12 +249,16 @@ class CameraImageView(CameraView): @asyncio.coroutine def handle(self, request, camera): """Serve camera image.""" - image = yield from camera.async_camera_image() + try: + image = yield from camera.async_camera_image() - if image is None: - return web.Response(status=500) + if image is None: + return web.Response(status=500) - return web.Response(body=image) + return web.Response(body=image) + + except asyncio.CancelledError: + _LOGGER.debug("Close stream by frontend.") class CameraMjpegStream(CameraView): diff --git a/homeassistant/components/camera/ffmpeg.py b/homeassistant/components/camera/ffmpeg.py index 9c1aaa25f6f..0b8d60ab7f5 100644 --- a/homeassistant/components/camera/ffmpeg.py +++ b/homeassistant/components/camera/ffmpeg.py @@ -86,7 +86,7 @@ class FFmpegCamera(Camera): response.write(data) except asyncio.CancelledError: - _LOGGER.debug("Close stream by browser.") + _LOGGER.debug("Close stream by frontend.") response = None finally: diff --git a/homeassistant/components/camera/mjpeg.py b/homeassistant/components/camera/mjpeg.py index 4bc62d66143..dd030099a45 100644 --- a/homeassistant/components/camera/mjpeg.py +++ b/homeassistant/components/camera/mjpeg.py @@ -125,7 +125,7 @@ class MjpegCamera(Camera): raise HTTPGatewayTimeout() except asyncio.CancelledError: - _LOGGER.debug("Close stream by browser.") + _LOGGER.debug("Close stream by frontend.") response = None finally: diff --git a/homeassistant/components/camera/synology.py b/homeassistant/components/camera/synology.py index d7359c14ded..424e269c555 100644 --- a/homeassistant/components/camera/synology.py +++ b/homeassistant/components/camera/synology.py @@ -277,7 +277,7 @@ class SynologyCamera(Camera): raise HTTPGatewayTimeout() except asyncio.CancelledError: - _LOGGER.debug("Close stream by browser.") + _LOGGER.debug("Close stream by frontend.") response = None finally: From d7d428119bdce8d07c3e11d86f3fa22689ff0618 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli <pascal.vizeli@syshack.ch> Date: Sun, 15 Jan 2017 17:36:24 +0100 Subject: [PATCH 189/189] Bugfix stack trace from api (#5332) --- homeassistant/components/api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/api.py b/homeassistant/components/api.py index da8ad9f88ba..8e03133e032 100644 --- a/homeassistant/components/api.py +++ b/homeassistant/components/api.py @@ -133,6 +133,9 @@ class APIEventStream(HomeAssistantView): except asyncio.TimeoutError: yield from to_write.put(STREAM_PING_PAYLOAD) + except asyncio.CancelledError: + _LOGGER.debug('STREAM %s ABORT', id(stop_obj)) + finally: _LOGGER.debug('STREAM %s RESPONSE CLOSED', id(stop_obj)) unsub_stream()