From c4c84db49c323976086f2eb7335cb0ab9a9b8977 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 23 Feb 2020 19:18:21 +0100 Subject: [PATCH 001/139] This is now a6 --- core/commons/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/commons/constants.py b/core/commons/constants.py index d90358460..b711db32b 100644 --- a/core/commons/constants.py +++ b/core/commons/constants.py @@ -1,4 +1,4 @@ -VERSION = '1.0.0-a5' +VERSION = '1.0.0-a6' DEFAULT_SITE_ID = 'default' DEFAULT = 'default' UNKNOWN_WORD = 'unknownword' From a39b9eacb6c63393e301ac74dc0a8122d92e87fc Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 24 Feb 2020 06:16:29 +0100 Subject: [PATCH 002/139] Totally deprecated --- alice | 5 - core/console/AddCommand.py | 61 ------------ core/console/Helpers.py | 47 --------- core/console/ListCommand.py | 176 ---------------------------------- core/console/SyncCommand.py | 39 -------- core/console/UpdateCommand.py | 36 ------- core/console/__init__.py | 0 7 files changed, 364 deletions(-) delete mode 100755 alice delete mode 100644 core/console/AddCommand.py delete mode 100644 core/console/Helpers.py delete mode 100644 core/console/ListCommand.py delete mode 100755 core/console/SyncCommand.py delete mode 100755 core/console/UpdateCommand.py delete mode 100644 core/console/__init__.py diff --git a/alice b/alice deleted file mode 100755 index 4e03e1cae..000000000 --- a/alice +++ /dev/null @@ -1,5 +0,0 @@ -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -cd $DIR -. "$DIR/venv/bin/activate" -python3 "$DIR/ProjectAliceConsole.py" "$@" diff --git a/core/console/AddCommand.py b/core/console/AddCommand.py deleted file mode 100644 index bf5f2a88c..000000000 --- a/core/console/AddCommand.py +++ /dev/null @@ -1,61 +0,0 @@ -from textwrap import dedent -import click -import urllib.request -import requests -from terminaltables import DoubleTable # type: ignore -from core.base.SkillManager import SkillManager - -@click.group() -def Add(): - """Add new components to alice""" - pass - - -@Add.command() -@click.argument('author_name') -@click.argument('skill_name') -def skill(author_name: str, skill_name: str): - """Add skill from dedicated repository to Alice""" - - TABLE_DATA = [['Skill Installer']] - table_instance = DoubleTable(TABLE_DATA) - click.secho(f'\n{table_instance.table}\n', fg='yellow') - - try: - url = f'{SkillManager.GITHUB_BARE_BASE_URL}/{author_name}/{skill_name}/{skill_name}.install' - req = requests.get(url) - - if req.status_code // 100 == 4: - click.echo(dedent(f""" - > Unknown {click.style(f'{author_name}/{skill_name}', fg='red')} pair - - You can use {click.style('author list', fg='yellow')} to list all authors - - You can use {click.style('skill list', fg='yellow')} to list all skills from an author - """), - err=True - ) - return - - theSkill = req.json() - click.echo(dedent(f""" - + Informations: - =============== - name: {click.style(str(theSkill['name']), fg='yellow')} - version: {click.style(str(theSkill['version']), fg='yellow')} - author: {click.style(theSkill['author'], fg='yellow')} - maintainers: {click.style(', '.join(theSkill['maintainers']), fg='yellow')} - description: {click.style(theSkill['desc'], fg='yellow')} - aliceMinVersion: {click.style(str(theSkill['aliceMinVersion']), fg='yellow')} - pip requirements: {click.style(', '.join(theSkill['pipRequirements']), fg='yellow')} - system requirements: {click.style(', '.join(theSkill['systemRequirements']), fg='yellow')} - - + Conditions: - ============= - lang: {click.style(', '.join(theSkill['conditions']['lang']), fg='yellow')} - """)) - - urllib.request.urlretrieve(url, f'system/skillInstallTickets/{skill_name}.install') - - except Exception as e: - click.secho(f'Failed to add the skill: {e}', err=True, fg='red') - - diff --git a/core/console/Helpers.py b/core/console/Helpers.py deleted file mode 100644 index 045d331f6..000000000 --- a/core/console/Helpers.py +++ /dev/null @@ -1,47 +0,0 @@ -import click - -class OptionEatAll(click.Option): - """ - taken from https://stackoverflow.com/questions/48391777/nargs-equivalent-for-options-in-click - """ - def __init__(self, *args, **kwargs): - self.save_other_options = kwargs.pop('save_other_options', True) - nargs = kwargs.pop('nargs', -1) - assert nargs == -1, f'nargs, if set, must be -1 not {nargs}' - super(OptionEatAll, self).__init__(*args, **kwargs) - self._previous_parser_process = None - self._eat_all_parser = None - - def add_to_parser(self, parser, ctx): - - def parser_process(value, state): - # method to hook to the parser.process - done = False - value = [value] - if self.save_other_options: - # grab everything up to the next option - while state.rargs and not done: - for prefix in self._eat_all_parser.prefixes: - if state.rargs[0].startswith(prefix): - done = True - if not done: - value.append(state.rargs.pop(0)) - else: - # grab everything remaining - value += state.rargs - state.rargs[:] = [] - value = tuple(value) - - # call the actual process - self._previous_parser_process(value, state) - - retval = super(OptionEatAll, self).add_to_parser(parser, ctx) - for name in self.opts: - # noinspection PyProtectedMember - our_parser = parser._long_opt.get(name) or parser._short_opt.get(name) - if our_parser: - self._eat_all_parser = our_parser - self._previous_parser_process = our_parser.process - our_parser.process = parser_process - break - return retval \ No newline at end of file diff --git a/core/console/ListCommand.py b/core/console/ListCommand.py deleted file mode 100644 index f5e41eb63..000000000 --- a/core/console/ListCommand.py +++ /dev/null @@ -1,176 +0,0 @@ -import random -import click -import requests -from terminaltables import SingleTable # type: ignore -from core.base.SkillManager import SkillManager -from core.console.Helpers import OptionEatAll -from core.base.SuperManager import SuperManager - -@click.group() -def List(): - """List alice relevant data e.g. skills in the store""" - pass - - -@List.command() -def authors(): - """List skill authors from the ProjectAliceSkills repository""" - - tableData = [['Name']] - tableInstance = SingleTable(tableData, click.style('Authors', fg='yellow')) - - try: - req = requests.get(f'https://api.github.com/{SkillManager.GITHUB_API_BASE_URL}') - - if req.status_code == 403: - click.secho('Github API quota limitations reached\n', err=True, bg='red') - return - - for author in req.json(): - tableData.append([ - author['name'], - ]) - - except: - click.secho('Error listing authors', err=True, fg='red') - else: - click.echo(tableInstance.table) - -@List.command() -@click.option('--authors', '-a', 'authorsList', cls=OptionEatAll, help='specify authors to check') -@click.option('--full', '-f', is_flag=True, help='Display full description instead of truncated one') -def skills(authorsList: list, full: bool): - """List skills from the ProjectAliceSkills repository""" - - if not authorsList: - authorsList = list() - req = requests.get(f'https://api.github.com/{SkillManager.GITHUB_API_BASE_URL}') - - if req.status_code == 403: - click.secho('Github API quota limitations reached\n', err=True, bg='red') - return - - for author in req.json(): - authorsList.append(author['name']) - - maxDescriptionLength = 100 - - for author in authorsList: - - tableData = [['Skill Name', 'Version', 'Langs', 'Description']] - tableInstance = SingleTable(tableData, click.style(author, fg='yellow')) - - try: - req = requests.get(f'https://api.github.com/{SkillManager.GITHUB_API_BASE_URL}/{author}') - - if req.status_code == 403: - click.secho('Github API quota limitations reached\n', err=True, bg='red') - return - elif req.status_code // 100 == 4: - click.echo( - f"> Unknown author {click.style(author, fg='red')}\n" - f"- You can use {click.style('author:list', fg='yellow')} to list all authors\n", - err=True - ) - return - - for skill in req.json(): - skillInstallFile = f"{SkillManager.GITHUB_BARE_BASE_URL}/{author}/{skill['name']}/{skill['name']}.install" - - try: - skillDetails = requests.get(skillInstallFile).json() - tLangs = '|'.join(skillDetails['conditions'].get('lang', ['-'])) - description = skillDetails['desc'] - - if not full: - description = (description[:maxDescriptionLength] + '..') if len(description) > maxDescriptionLength else description - - tableData.append([ - skillDetails['name'], - skillDetails['version'], - tLangs, - description - ]) - - except: - click.secho(f"Error get skill {skill['name']}", err=True, fg='red') - raise - - except: - click.secho('Error listing skills', err=True, fg='red') - else: - click.echo(tableInstance.table) - -@List.command() -@click.option('--skill', '-m', help='Show more data about specific skill') -@click.option('--full', '-f', is_flag=True, help='Display full description instead of truncated one') -def intents(skill: str, full: bool): - """List intents and utterances for a given skill""" - - superManager = SuperManager(None) - superManager.initManagers() - - samkillaManager = superManager.getManager('SamkillaManager') - samkillaManager.onStart() - languageManager = superManager.getManager('LanguageManager') - languageManager.onStart() - - _slotTypesSkillsValues, _intentsSkillsValues, _intentNameSkillMatching = samkillaManager.getDialogTemplatesMaps( - runOnAssistantId=languageManager.activeSnipsProjectId, - languageFilter=languageManager.activeLanguage - ) - - maxDescriptionLength = 50 - found = False - - if skill: - tableData = [['Intent', 'Default', 'Description', 'Example']] - tableInstance = SingleTable(tableData, click.style(skill + ' intents', fg='yellow')) - tableInstance.justify_columns[1] = 'center' - - for intentName, skillName in _intentNameSkillMatching.items(): - if skillName == skill: - found = True - description = _intentsSkillsValues[intentName]['__otherattributes__']['description'] - enabledByDefault = _intentsSkillsValues[intentName]['__otherattributes__']['enabledByDefault'] - - utterance = random.choice(list(_intentsSkillsValues[intentName]['utterances'])) - - if not full: - description = (description[:maxDescriptionLength] + '..') if len(description) > maxDescriptionLength else description - utterance = (utterance[:maxDescriptionLength] + '..') if len(utterance) > maxDescriptionLength else utterance - - tableData.append([ - intentName, - 'X' if enabledByDefault else '', - description or '-', - utterance or '-' - ]) - - else: - tableData = [['Intent', 'Default', 'Description', 'Example']] - tableInstance = SingleTable(tableData, click.style('All intents', fg='yellow')) - tableInstance.justify_columns[1] = 'center' - found = True - - for intentName in _intentNameSkillMatching: - description = _intentsSkillsValues[intentName]['__otherattributes__']['description'] - enabledByDefault = _intentsSkillsValues[intentName]['__otherattributes__']['enabledByDefault'] - - utterance = random.choice(list(_intentsSkillsValues[intentName]['utterances'])) - - if not full: - description = (description[:maxDescriptionLength] + '..') if len(description) > maxDescriptionLength else description - utterance = (utterance[:maxDescriptionLength] + '..') if len(utterance) > maxDescriptionLength else utterance - - tableData.append([ - intentName, - 'X' if enabledByDefault else '', - description or '-', - utterance or '-' - ]) - - if not found: - click.echo('\nNo intent found\n', err=True) - else: - click.echo(tableInstance.table) diff --git a/core/console/SyncCommand.py b/core/console/SyncCommand.py deleted file mode 100755 index 854253043..000000000 --- a/core/console/SyncCommand.py +++ /dev/null @@ -1,39 +0,0 @@ -import click -import logging.handlers -from core.base.SuperManager import SuperManager - -@click.group() -def Sync(): - """Sync components of alice""" - pass - -@Sync.command() -@click.option('--download', '-d', is_flag=True, help='Download the assistant after syncing') -def assistant(download: bool): - """Sync dialog templates for all skills""" - - _logger = logging.getLogger('ProjectAlice') - _logger.setLevel(logging.INFO) - _logger.addHandler(logging.StreamHandler()) - - superManager = SuperManager(None) - superManager.initManagers() - superManager.onStart() - - samkillaManager = superManager.getManager('SamkillaManager') - snipsConsoleManager = superManager.getManager('SnipsConsoleManager') - languageManager = superManager.getManager('LanguageManager') - - try: - samkillaManager.sync(download=False) - except Exception as e: - click.echo(f'Failed syncing with remote snips console: {e}', err=True) - return - - if download: - downloaded = snipsConsoleManager.download(languageManager.activeSnipsProjectId) - - if downloaded: - click.echo(f"\n\nAssistant {click.style('downloaded!', fg='green')}\n") - else: - click.echo(f"\n\nAssistant {click.style('download failed', fg='red')}\n", err=True) diff --git a/core/console/UpdateCommand.py b/core/console/UpdateCommand.py deleted file mode 100755 index 13e0c96ec..000000000 --- a/core/console/UpdateCommand.py +++ /dev/null @@ -1,36 +0,0 @@ -import click -from terminaltables import DoubleTable # type: ignore -from core.base.SuperManager import SuperManager -import logging.handlers - -@click.group() -def Update(): - """update components of alice""" - pass - - -@Update.command() -def assistant(): - """Update the voice assistant by retraining""" - - _logger = logging.getLogger('ProjectAlice') - _logger.setLevel(logging.INFO) - _logger.addHandler(logging.StreamHandler()) - - TABLE_DATA = [['Assistant Downloader']] - table_instance = DoubleTable(TABLE_DATA) - click.secho(f'\n{table_instance.table}\n', fg='green') - - superManager = SuperManager(None) - superManager.initManagers() - superManager.onStart() - - snipsConsoleManager = superManager.getManager('SnipsConsoleManager') - languageManager = superManager.getManager('LanguageManager') - - downloaded = snipsConsoleManager.download(languageManager.activeSnipsProjectId) - - if downloaded: - click.echo(f"\n\nAssistant {click.style('downloaded!', fg='green')}\n") - else: - click.echo(f"\n\nAssistant {click.style('download failed', fg='red')}\n", err=True) diff --git a/core/console/__init__.py b/core/console/__init__.py deleted file mode 100644 index e69de29bb..000000000 From 3cc72233597585bf42115708aa1baeacee7de414 Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 24 Feb 2020 06:17:27 +0100 Subject: [PATCH 003/139] Fix sonarcloud L105 --- core/interface/views/AdminView.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/interface/views/AdminView.py b/core/interface/views/AdminView.py index 8e940bfdb..ae89ac332 100644 --- a/core/interface/views/AdminView.py +++ b/core/interface/views/AdminView.py @@ -102,11 +102,11 @@ def updatee(self) -> dict: def wipeAll(self) -> dict: try: tickets = [ - 'http://skills.projectalice.ch/AliceCore', - 'http://skills.projectalice.ch/ContextSensitive', - 'http://skills.projectalice.ch/RedQueen', - 'http://skills.projectalice.ch/Telemetry', - 'http://skills.projectalice.ch/DateDayTimeYear' + 'https://skills.projectalice.ch/AliceCore', + 'https://skills.projectalice.ch/ContextSensitive', + 'https://skills.projectalice.ch/RedQueen', + 'https://skills.projectalice.ch/Telemetry', + 'https://skills.projectalice.ch/DateDayTimeYear' ] for link in tickets: From e8f9e85af6fac49531552ab2674776ee7c2073af Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 24 Feb 2020 06:19:12 +0100 Subject: [PATCH 004/139] Fix Sonarcloud L37 --- core/util/InternetManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/util/InternetManager.py b/core/util/InternetManager.py index 7e60398b5..40de5ce14 100644 --- a/core/util/InternetManager.py +++ b/core/util/InternetManager.py @@ -34,7 +34,7 @@ def onFullMinute(self): self.checkOnlineState() - def checkOnlineState(self, addr: str = 'http://clients3.google.com/generate_204', silent: bool = False) -> bool: + def checkOnlineState(self, addr: str = 'https://clients3.google.com/generate_204', silent: bool = False) -> bool: try: online = requests.get(addr).status_code == 204 except RequestException: From 0800b6dd91cc78dd7a3fcaa6db4276985d85aaeb Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 24 Feb 2020 06:21:48 +0100 Subject: [PATCH 005/139] Fix SonarCloud L27, 35, 51, 59, 79 --- tests/unittests/util/test_InternetManager.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/tests/unittests/util/test_InternetManager.py b/tests/unittests/util/test_InternetManager.py index 9ed7da636..93dd54b1d 100644 --- a/tests/unittests/util/test_InternetManager.py +++ b/tests/unittests/util/test_InternetManager.py @@ -1,10 +1,12 @@ import unittest from unittest import mock from unittest.mock import MagicMock, PropertyMock + from requests.exceptions import RequestException from core.util.InternetManager import InternetManager + class TestInternetManager(unittest.TestCase): @mock.patch('core.util.InternetManager.Manager.broadcast') @@ -24,7 +26,7 @@ def test_checkOnlineState(self, mock_commons, mock_requests, mock_broadcast): mock_requests.get.return_value = mock_requestsResult internetManager.checkOnlineState() - mock_requests.get.assert_called_once_with('http://clients3.google.com/generate_204') + mock_requests.get.assert_called_once_with('https://clients3.google.com/generate_204') mock_broadcast.assert_called_once_with(method='internetConnected', exceptions=['InternetManager'], propagateToSkills=True) self.assertEqual(internetManager.online, True) mock_broadcast.reset_mock() @@ -32,23 +34,21 @@ def test_checkOnlineState(self, mock_commons, mock_requests, mock_broadcast): # when calling check online state a second time it does not broadcast again internetManager.checkOnlineState() - mock_requests.get.assert_called_once_with('http://clients3.google.com/generate_204') + mock_requests.get.assert_called_once_with('https://clients3.google.com/generate_204') mock_broadcast.assert_not_called() self.assertEqual(internetManager.online, True) mock_broadcast.reset_mock() mock_requests.reset_mock() - # request returns status code 400 mock_requestsResult = MagicMock() mock_statusCode = mock.PropertyMock(return_value=400) type(mock_requestsResult).status_code = mock_statusCode mock_requests.get.return_value = mock_requestsResult - # when wrong status code is returned (and currently online) internetManager.checkOnlineState() - mock_requests.get.assert_called_once_with('http://clients3.google.com/generate_204') + mock_requests.get.assert_called_once_with('https://clients3.google.com/generate_204') mock_broadcast.assert_called_once_with(method='internetLost', exceptions=['InternetManager'], propagateToSkills=True) self.assertEqual(internetManager.online, False) mock_broadcast.reset_mock() @@ -56,13 +56,12 @@ def test_checkOnlineState(self, mock_commons, mock_requests, mock_broadcast): # when calling check online state a second time it does not broadcast again internetManager.checkOnlineState() - mock_requests.get.assert_called_once_with('http://clients3.google.com/generate_204') + mock_requests.get.assert_called_once_with('https://clients3.google.com/generate_204') mock_broadcast.assert_not_called() self.assertEqual(internetManager.online, False) mock_broadcast.reset_mock() mock_requests.reset_mock() - # set state to online again mock_requestsResult = MagicMock() mock_statusCode = mock.PropertyMock(return_value=204) @@ -72,11 +71,10 @@ def test_checkOnlineState(self, mock_commons, mock_requests, mock_broadcast): mock_broadcast.reset_mock() mock_requests.reset_mock() - # request raises exception is the same as non 204 status code mock_requests.get.side_effect = RequestException internetManager.checkOnlineState() - mock_requests.get.assert_called_once_with('http://clients3.google.com/generate_204') + mock_requests.get.assert_called_once_with('https://clients3.google.com/generate_204') mock_broadcast.assert_called_once_with(method='internetLost', exceptions=['InternetManager'], propagateToSkills=True) self.assertEqual(internetManager.online, False) From 30b20f417dad8ea664bdb41bb2c0d63259c9f363 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Mon, 24 Feb 2020 15:41:19 +0100 Subject: [PATCH 006/139] Implemented missing new skill upload to github --- core/base/SkillManager.py | 12 +++++------- core/interface/static/js/devmode.js | 11 +++++++++-- core/interface/templates/devmode.html | 1 + core/interface/views/DevModeView.py | 17 ++++++++++++++--- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index fceb06d80..b619ba6b7 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -1,11 +1,11 @@ import importlib import json +import os +import shutil from pathlib import Path from typing import Dict, Optional -import os import requests -import shutil from core.ProjectAliceExceptions import GithubNotFound, GithubRateLimit, GithubTokenFailed, SkillNotConditionCompliant, SkillStartDelayed, SkillStartingFailed from core.base.SuperManager import SuperManager @@ -693,11 +693,9 @@ def createNewSkill(self, skillDefinition: dict) -> bool: skillTemplateDir = rootDir / 'skill_DefaultTemplate' if skillTemplateDir.exists(): - self.Commons.runSystemCommand(['git', '-C', str(rootDir), 'stash']) - self.Commons.runSystemCommand(['git', '-C', str(rootDir), 'clear', '-dfx']) - self.Commons.runSystemCommand(['git', '-C', str(rootDir), 'pull']) - else: - self.Commons.runSystemCommand(['git', '-C', str(rootDir), 'clone', f'{constants.GITHUB_URL}/skill_DefaultTemplate.git']) + shutil.rmtree(skillTemplateDir) + + self.Commons.runSystemCommand(['git', '-C', str(rootDir), 'clone', f'{constants.GITHUB_URL}/skill_DefaultTemplate.git']) skillName = skillDefinition['name'][0].upper() + skillDefinition['name'][1:] skillDir = rootDir / skillName diff --git a/core/interface/static/js/devmode.js b/core/interface/static/js/devmode.js index 18db70554..e902b50f9 100644 --- a/core/interface/static/js/devmode.js +++ b/core/interface/static/js/devmode.js @@ -120,11 +120,18 @@ $(function () { 'skillDesc': $('#skilldesc').val() } }).done(function (status) { - $('#uploadSkillButton').hide(); + if (status['success']) { + $('#uploadSkillButton').hide(); + $('#goGithubButton').text(status['url']).show(); + } }); }); $('#resetSkillButton').on('click touchstart', function () { resetSkillPage(); - }) + }); + + $('#goGithubButton').on('click touchstart', function () { + window.open($(this).text()); + }); }); diff --git a/core/interface/templates/devmode.html b/core/interface/templates/devmode.html index 7931f2d9d..10ec2e74d 100644 --- a/core/interface/templates/devmode.html +++ b/core/interface/templates/devmode.html @@ -93,6 +93,7 @@ + diff --git a/core/interface/views/DevModeView.py b/core/interface/views/DevModeView.py index 40eccc81c..00622b054 100644 --- a/core/interface/views/DevModeView.py +++ b/core/interface/views/DevModeView.py @@ -1,4 +1,6 @@ import json +import shutil +from pathlib import Path import requests as requests from flask import jsonify, render_template, request @@ -38,11 +40,20 @@ def uploadToGithub(self): } req = requests.post('https://api.github.com/user/repos', data=json.dumps(data), auth=GithubCloner.getGithubAuth()) - if req.status_code == 201: - return jsonify(success=True) - else: + if req.status_code != 201: raise Exception + url = f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/{skillName}.git' + + shutil.rmtree(Path(self.Commons.rootDir(), f'skills/skill_{skillName}/.git')) + self.Commons.runSystemCmd(['git', 'init']) + self.Commons.runSystemCmd(['git', 'remote', 'add', 'origin', url]) + self.Commons.runSystemCmd(['git', 'add', '--all']) + self.Commons.runSystemCmd(['git', 'commit', '-am', '"Initial upload"']) + self.Commons.runSystemCmd(['git', 'push', '--set-upstream', 'origin', 'master']) + + return jsonify(success=True, url=url) + except Exception as e: self.logError(f'Failed uploading to github: {e}') return jsonify(success=False) From 47eabb4b24256415c675102955e3621754e4ce2e Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Mon, 24 Feb 2020 15:56:04 +0100 Subject: [PATCH 007/139] Needs credentials for pushing onto github and working in the correct directory is also not a bad idea --- core/interface/views/DevModeView.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core/interface/views/DevModeView.py b/core/interface/views/DevModeView.py index 00622b054..203e84672 100644 --- a/core/interface/views/DevModeView.py +++ b/core/interface/views/DevModeView.py @@ -45,12 +45,16 @@ def uploadToGithub(self): url = f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/{skillName}.git' - shutil.rmtree(Path(self.Commons.rootDir(), f'skills/skill_{skillName}/.git')) - self.Commons.runSystemCmd(['git', 'init']) - self.Commons.runSystemCmd(['git', 'remote', 'add', 'origin', url]) - self.Commons.runSystemCmd(['git', 'add', '--all']) - self.Commons.runSystemCmd(['git', 'commit', '-am', '"Initial upload"']) - self.Commons.runSystemCmd(['git', 'push', '--set-upstream', 'origin', 'master']) + localDirectory = Path(self.Commons.rootDir(), f'skills/skill_{skillName}') + shutil.rmtree(Path(localDirectory, '.git')) + + self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'config', 'user.name', f'"{self.ConfigManager.getAliceConfigByName("githubUsername")}"']) + self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'config', 'user.password', f'"{self.ConfigManager.getAliceConfigByName("githubToken")}"']) + self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'init']) + self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'remote', 'add', 'origin', url]) + self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'add', '--all']) + self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'commit', '-am', '"Initial upload"']) + self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'push', '--set-upstream', 'origin', 'master']) return jsonify(success=True, url=url) From 3d3798aa419eec4ccb9754cb972d73a81d6d8d06 Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 24 Feb 2020 17:38:06 +0100 Subject: [PATCH 008/139] It is possible under certain conditions, that the dialog templates cache is ok, the assistant is consistent but the nlu_engine is missing which leads to an unresponsive Alice due to snips-nlu crash. Avoid this at all costs --- core/dialog/DialogTemplateManager.py | 10 ++++++++++ core/nlu/NluManager.py | 7 +++++++ core/snips/SnipsAssistantManager.py | 6 +++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/core/dialog/DialogTemplateManager.py b/core/dialog/DialogTemplateManager.py index cdece26ec..99d20cd4d 100644 --- a/core/dialog/DialogTemplateManager.py +++ b/core/dialog/DialogTemplateManager.py @@ -137,6 +137,16 @@ def cleanCache(self, skillName: str): fp.write(json.dumps(checksums, indent=4, sort_keys=True)) + def clearCache(self): + if self._pathToChecksums.exists(): + with self._pathToChecksums.open('w') as fp: + fp.write(json.dumps(dict())) + self.logInfo('Cache cleared') + + self.checkCache() + self.buildCache() + + def skillResource(self) -> Path: for skillPath in Path(self.Commons.rootDir(), 'skills/').glob('*/'): if skillPath.is_file() or skillPath.stem.startswith('_'): diff --git a/core/nlu/NluManager.py b/core/nlu/NluManager.py index a00447e9d..1b3422283 100644 --- a/core/nlu/NluManager.py +++ b/core/nlu/NluManager.py @@ -29,6 +29,13 @@ def afterNewSkillInstall(self): def isTrainingNeeded(self): + if not Path(self.Commons.rootDir(), f'assistant/nlu_engine').exists(): + if Path(self.Commons.rootDir(), f'trained/assistants/assistant_{self.LanguageManager.activeLanguage}/nlu_engine').exists(): + self.SnipsAssistantManager.linkAssistant() + else: + self.logWarning('NLU Engine is not existing but the assistant and the dialog templates are ok, this is not normal, did you stop me while I was training?') + self.DialogTemplateManager.clearCache() + if self.DialogTemplateManager.hasChanges: self.buildTrainingData(self.DialogTemplateManager.updatedData) self.trainNLU() diff --git a/core/snips/SnipsAssistantManager.py b/core/snips/SnipsAssistantManager.py index d977fa48b..cc79f2f42 100644 --- a/core/snips/SnipsAssistantManager.py +++ b/core/snips/SnipsAssistantManager.py @@ -145,7 +145,7 @@ def train(self): assistant['intents'] = [intent for intent in intents.values()] - self.Commons.runRootSystemCommand(['ln', '-sfn', self.Commons.rootDir() + f'/trained/assistants/assistant_{self.LanguageManager.activeLanguage}', self.Commons.rootDir() + '/assistant']) + self.linkAssistant() with self._assistantPath.open('w') as fp: fp.write(json.dumps(assistant, ensure_ascii=False, indent=4, sort_keys=True)) @@ -164,6 +164,10 @@ def train(self): self.logFatal(f'Assistant failed training and no assistant existing, stopping here, sorry.... What happened? {e}') + def linkAssistant(self): + self.Commons.runRootSystemCommand(['ln', '-sfn', self.Commons.rootDir() + f'/trained/assistants/assistant_{self.LanguageManager.activeLanguage}', self.Commons.rootDir() + '/assistant']) + + def generateAssistant(self) -> dict: assistant = { 'id' : f'proj_{self.Commons.randomString(11)}', From 44286325b13abb0a845729a1b23916f533754c86 Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 24 Feb 2020 17:52:46 +0100 Subject: [PATCH 009/139] Shutil can't delete hidden directories --- core/base/SkillManager.py | 34 ++++++++++++++++++++++++++-- core/interface/views/DevModeView.py | 35 +++-------------------------- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index b619ba6b7..9ad54ef7f 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -1,11 +1,11 @@ import importlib import json -import os -import shutil from pathlib import Path from typing import Dict, Optional +import os import requests +import shutil from core.ProjectAliceExceptions import GithubNotFound, GithubRateLimit, GithubTokenFailed, SkillNotConditionCompliant, SkillStartDelayed, SkillStartingFailed from core.base.SuperManager import SuperManager @@ -838,3 +838,33 @@ def createNewSkill(self, skillDefinition: dict) -> bool: except Exception as e: self.logError(f'Error creating new skill: {e}') return False + + + def uploadSkillToGithub(self, skillName: str, skillDesc: str) -> bool: + try: + skillName = skillName[0].upper() + skillName[1:] + data = { + 'name' : skillName, + 'description': skillDesc, + 'has-issues' : True, + 'has-wiki' : False + } + req = requests.post('https://api.github.com/user/repos', data=json.dumps(data), auth=GithubCloner.getGithubAuth()) + + if req.status_code != 201: + raise Exception + + localDirectory = Path(self.Commons.rootDir(), f'skills/skill_{skillName}') + self.Commons.runSystemCommand(['rm', '-rf', f'{str(localDirectory)}/.git']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'config', 'user.name', f'"{self.ConfigManager.getAliceConfigByName("githubUsername")}"']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'config', 'user.password', f'"{self.ConfigManager.getAliceConfigByName("githubToken")}"']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'init']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'remote', 'add', 'origin', f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/{skillName}.git']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'add', '--all']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'commit', '-am', '"Initial upload"']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'push', '--set-upstream', 'origin', 'master']) + + return True + except Exception as e: + self.logWarning(f'Something went wrong uploading skill to Github: {e}') + return False diff --git a/core/interface/views/DevModeView.py b/core/interface/views/DevModeView.py index 203e84672..a637e55e4 100644 --- a/core/interface/views/DevModeView.py +++ b/core/interface/views/DevModeView.py @@ -1,11 +1,5 @@ -import json -import shutil -from pathlib import Path - -import requests as requests from flask import jsonify, render_template, request -from core.base.model.GithubCloner import GithubCloner from core.interface.model.View import View @@ -31,33 +25,10 @@ def uploadToGithub(self): if not skillName: raise Exception - skillName = skillName[0].upper() + skillName[1:] - data = { - 'name' : skillName, - 'description': skillDesc, - 'has-issues' : True, - 'has-wiki' : False - } - req = requests.post('https://api.github.com/user/repos', data=json.dumps(data), auth=GithubCloner.getGithubAuth()) - - if req.status_code != 201: - raise Exception - - url = f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/{skillName}.git' - - localDirectory = Path(self.Commons.rootDir(), f'skills/skill_{skillName}') - shutil.rmtree(Path(localDirectory, '.git')) - - self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'config', 'user.name', f'"{self.ConfigManager.getAliceConfigByName("githubUsername")}"']) - self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'config', 'user.password', f'"{self.ConfigManager.getAliceConfigByName("githubToken")}"']) - self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'init']) - self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'remote', 'add', 'origin', url]) - self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'add', '--all']) - self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'commit', '-am', '"Initial upload"']) - self.Commons.runSystemCmd(['git', '-C', str(localDirectory), 'push', '--set-upstream', 'origin', 'master']) - - return jsonify(success=True, url=url) + if self.SkillManager.uploadSkillToGithub(skillName, skillDesc): + return jsonify(success=True, url=f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/{skillName}.git') + return jsonify(success=False) except Exception as e: self.logError(f'Failed uploading to github: {e}') return jsonify(success=False) From 0e0de33d28e57724cdedc134dd1c173487e94a74 Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 24 Feb 2020 19:31:49 +0100 Subject: [PATCH 010/139] Don't try to load anything else but json files... --- core/voice/TalkManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/voice/TalkManager.py b/core/voice/TalkManager.py index dfb7fa809..e280c4a96 100644 --- a/core/voice/TalkManager.py +++ b/core/voice/TalkManager.py @@ -28,7 +28,7 @@ def loadTalks(self, skillToLoad: str = None): if not skillToLoad: systemLangTalksMountpoint = Path('system/manager/TalkManager/talks') - for systemLangTalkFile in systemLangTalksMountpoint.iterdir(): + for systemLangTalkFile in systemLangTalksMountpoint.glob('*.json'): lang = systemLangTalkFile.stem self._langData.setdefault('system', dict())[lang] = json.loads(systemLangTalkFile.read_text()) @@ -43,7 +43,7 @@ def loadTalks(self, skillToLoad: str = None): if not langTalksMountpoint.exists(): continue - for langTalkFile in langTalksMountpoint.iterdir(): + for langTalkFile in langTalksMountpoint.glob('*.json'): lang = langTalkFile.stem try: self._langData.setdefault(skillName, dict())[lang] = json.loads(langTalkFile.read_text()) From 14fcfa09317e4dfdacc2ad3c8763b2dcf43e9f90 Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 24 Feb 2020 19:34:23 +0100 Subject: [PATCH 011/139] Tired of trying, upload to github not 100% functional, need some rest, will find the problem for sure --- core/base/SkillManager.py | 25 +++++++++++++++++-------- core/interface/static/js/devmode.js | 5 +++-- core/interface/views/DevModeView.py | 2 +- core/nlu/model/SnipsNlu.py | 11 +++++++++++ 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 9ad54ef7f..6f37dda5c 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -1,3 +1,4 @@ +import getpass import importlib import json from pathlib import Path @@ -842,9 +843,16 @@ def createNewSkill(self, skillDefinition: dict) -> bool: def uploadSkillToGithub(self, skillName: str, skillDesc: str) -> bool: try: + self.logInfo(f'Uploading {skillName} to Github') + skillName = skillName[0].upper() + skillName[1:] + + localDirectory = Path('/home', getpass.getuser(), f'ProjectAlice/skills/{skillName}') + if not localDirectory.exists(): + raise Exception("Local skill doesn't exist") + data = { - 'name' : skillName, + 'name' : f'skill_{skillName}', 'description': skillDesc, 'has-issues' : True, 'has-wiki' : False @@ -852,18 +860,19 @@ def uploadSkillToGithub(self, skillName: str, skillDesc: str) -> bool: req = requests.post('https://api.github.com/user/repos', data=json.dumps(data), auth=GithubCloner.getGithubAuth()) if req.status_code != 201: - raise Exception + raise Exception("Couldn't create the repository on Github") - localDirectory = Path(self.Commons.rootDir(), f'skills/skill_{skillName}') + url = f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/skill_{skillName}.git' self.Commons.runSystemCommand(['rm', '-rf', f'{str(localDirectory)}/.git']) - self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'config', 'user.name', f'"{self.ConfigManager.getAliceConfigByName("githubUsername")}"']) - self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'config', 'user.password', f'"{self.ConfigManager.getAliceConfigByName("githubToken")}"']) self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'init']) - self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'remote', 'add', 'origin', f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/{skillName}.git']) + # self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'config', 'user.name', f'"{self.ConfigManager.getAliceConfigByName("githubUsername")}"']) + # self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'config', 'user.password', f'"{self.ConfigManager.getAliceConfigByName("githubToken")}"']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'remote', 'add', 'origin', url]) self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'add', '--all']) - self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'commit', '-am', '"Initial upload"']) - self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'push', '--set-upstream', 'origin', 'master']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'commit', '-m', '"Initial upload"']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'push', f'https://{self.ConfigManager.getAliceConfigByName("githubUsername")}:{self.ConfigManager.getAliceConfigByName("githubToken")}@github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/skill_{skillName}.git', '--set-upstream', 'origin', 'master']) + self.logInfo(f'Skill uploaded! You can find it on {url}') return True except Exception as e: self.logWarning(f'Something went wrong uploading skill to Github: {e}') diff --git a/core/interface/static/js/devmode.js b/core/interface/static/js/devmode.js index e902b50f9..ee03e9c6e 100644 --- a/core/interface/static/js/devmode.js +++ b/core/interface/static/js/devmode.js @@ -20,7 +20,8 @@ $(function () { $('#skillNameKo').show(); $('#skillDescOk').hide(); $('#skillDescKo').show(); - $('#uploadSkillButton').hide() + $('#uploadSkillButton').hide(); + $('#goGithubButton').hide(); } @@ -122,7 +123,7 @@ $(function () { }).done(function (status) { if (status['success']) { $('#uploadSkillButton').hide(); - $('#goGithubButton').text(status['url']).show(); + $('#goGithubButton').text(status['url']).prop('disabled', false).show(); } }); }); diff --git a/core/interface/views/DevModeView.py b/core/interface/views/DevModeView.py index a637e55e4..b112101f9 100644 --- a/core/interface/views/DevModeView.py +++ b/core/interface/views/DevModeView.py @@ -26,7 +26,7 @@ def uploadToGithub(self): raise Exception if self.SkillManager.uploadSkillToGithub(skillName, skillDesc): - return jsonify(success=True, url=f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/{skillName}.git') + return jsonify(success=True, url=f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/skill_{skillName}.git') return jsonify(success=False) except Exception as e: diff --git a/core/nlu/model/SnipsNlu.py b/core/nlu/model/SnipsNlu.py index 589b72313..b5eea58ed 100644 --- a/core/nlu/model/SnipsNlu.py +++ b/core/nlu/model/SnipsNlu.py @@ -1,6 +1,7 @@ import json from pathlib import Path +import random import re import shutil @@ -18,6 +19,7 @@ class SnipsNlu(NluEngine): def __init__(self): super().__init__() self._cachePath = Path(self.Commons.rootDir(), f'var/cache/nlu/trainingData') + self._timer = None def start(self): @@ -127,6 +129,7 @@ def train(self): def nluTrainingThread(self, datasetFile: Path): with Stopwatch() as stopWatch: self.logInfo('Begin training...') + self._timer = self.ThreadManager.newTimer(interval=10, func=self.trainingStatus) tempTrainingData = Path('/tmp/snipsNLU') @@ -141,6 +144,8 @@ def nluTrainingThread(self, datasetFile: Path): self.logError('Snips NLU training failed') if not assistantPath.exists(): self.logFatal('No NLU engine found, cannot start') + + self._timer.cancel() return if assistantPath.exists(): @@ -151,9 +156,15 @@ def nluTrainingThread(self, datasetFile: Path): self.broadcast(method=constants.EVENT_NLU_TRAINED, exceptions=[constants.DUMMY], propagateToSkills=True) self.SnipsServicesManager.runCmd(cmd='restart', services=['snips-nlu']) + self._timer.cancel() self.logInfo(f'Snips NLU trained in {stopWatch} seconds') + def trainingStatus(self): + self.logInfo(random.choice(['Still training...', "Don't worry, I'm still training", 'Still on it', 'Takes time, I know', 'Working...', 'Working as fast as I can!'])) + self._timer = self.ThreadManager.newTimer(interval=10, func=self.trainingStatus) + + @staticmethod def loadSlots(intent: dict) -> dict: return dict() if 'slots' not in intent else { From 5b060a93f8903b635490a2d1a62cd829fd547249 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 05:31:55 +0100 Subject: [PATCH 012/139] Fix intent splitting for API --- core/server/MqttManager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/server/MqttManager.py b/core/server/MqttManager.py index 3b95fb5fc..a4b60a448 100644 --- a/core/server/MqttManager.py +++ b/core/server/MqttManager.py @@ -1,11 +1,11 @@ import json -import random -import re import uuid from pathlib import Path import paho.mqtt.client as mqtt import paho.mqtt.publish as publish +import random +import re from core.ProjectAliceExceptions import AccessLevelTooLow from core.base.model.Intent import Intent @@ -350,7 +350,7 @@ def onSnipsIntentParsed(self, client, data, msg: mqtt.MQTTMessage): self.broadcast(method=constants.EVENT_INTENT_PARSED, exceptions=[self.name], propagateToSkills=True, session=session) if session.isAPIGenerated: - intent = Intent(session.payload['intent']['intentName'].split(':')[1]) + intent = Intent(session.payload['intent']['intentName']) message = mqtt.MQTTMessage(topic=str.encode(str(intent))) message.payload = json.dumps(session.payload) self.onMqttMessage(client=client, userdata=data, message=message) From abe4ecc826eb2f09e9e29e94d66e30b5bdc37836 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 05:34:20 +0100 Subject: [PATCH 013/139] There's no assistant download anymore --- core/interface/views/AdminView.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/interface/views/AdminView.py b/core/interface/views/AdminView.py index ae89ac332..326490c2a 100644 --- a/core/interface/views/AdminView.py +++ b/core/interface/views/AdminView.py @@ -82,7 +82,7 @@ def reboot(self) -> dict: def assistantDownload(self) -> dict: try: self.__class__.setWaitType('snipsdownload') - self.SnipsConsoleManager.doDownload() + return jsonify(success=True) except Exception as e: self.logError(f'Failed downloading assistant: {e}') From 62220411aa30be75eeba46ac5fecc210a4736682 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 05:45:06 +0100 Subject: [PATCH 014/139] Fixed updateProjectAlice --- core/ProjectAlice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ProjectAlice.py b/core/ProjectAlice.py index 2876f4069..38b14ffe8 100644 --- a/core/ProjectAlice.py +++ b/core/ProjectAlice.py @@ -72,7 +72,7 @@ def onStop(self): def updateProjectAlice(self): self._logger.logInfo('Checking Project Alice updates') - req = requests.get(url=f'{constants.GITHUB_URL}/ProjectAlice/branches', auth=SuperManager.getInstance().configManager.getGithubAuth()) + req = requests.get(url=f'{constants.GITHUB_API_URL}/ProjectAlice/branches', auth=SuperManager.getInstance().configManager.getGithubAuth()) if req.status_code != 200: self._logger.logWarning('Failed checking for updates') return From 749d84f2e56e219414a8a163521a4107b9d87f61 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 06:10:24 +0100 Subject: [PATCH 015/139] Better looking --- core/base/SkillManager.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 6f37dda5c..501d9dfe1 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -723,23 +723,23 @@ def createNewSkill(self, skillDefinition: dict) -> bool: if skillDefinition['conditionOnline']: conditions['online'] = True - readmeConditions += ' Online\n' + readmeConditions += ' - Online\n\n' if skillDefinition['conditionASRArbitrary']: conditions['asrArbitraryCapture'] = True - readmeConditions += ' Arbitrary capture\n' + readmeConditions += ' - Arbitrary capture\n\n' if skillDefinition['conditionSkill']: conditions['skill'] = [skill.strip() for skill in skillDefinition['conditionSkill'].split(',')] - readmeConditions += f' Required skills: {str(conditions["skill"])}\n' + readmeConditions += f' - Required skills: {str(conditions["skill"])}\n\n' if skillDefinition['conditionNotSkill']: conditions['notSkill'] = [skill.strip() for skill in skillDefinition['conditionNotSkill'].split(',')] - readmeConditions += f' Conflicting skills: {str(conditions["notSkill"])}\n' + readmeConditions += f' - Conflicting skills: {str(conditions["notSkill"])}\n\n' if skillDefinition['conditionActiveManager']: conditions['activeManager'] = [manager.strip() for manager in skillDefinition['conditionActiveManager'].split(',')] - readmeConditions += f' Active managers: {str(conditions["activeManager"])}\n' + readmeConditions += f' - Active managers: {str(conditions["activeManager"])}\n\n' installContent = { 'name' : skillName, @@ -753,8 +753,8 @@ def createNewSkill(self, skillDefinition: dict) -> bool: 'conditions' : conditions } - readmeReqs += f' PIP: {str(installContent["pipRequirements"])}\n' - readmeReqs += f' System: {str(installContent["systemRequirements"])}\n' + readmeReqs += f' - PIP: {str(installContent["pipRequirements"])}\n\n' + readmeReqs += f' - System: {str(installContent["systemRequirements"])}\n\n' # Install file with installFile.open('w') as fp: @@ -862,16 +862,20 @@ def uploadSkillToGithub(self, skillName: str, skillDesc: str) -> bool: if req.status_code != 201: raise Exception("Couldn't create the repository on Github") - url = f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/skill_{skillName}.git' self.Commons.runSystemCommand(['rm', '-rf', f'{str(localDirectory)}/.git']) self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'init']) - # self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'config', 'user.name', f'"{self.ConfigManager.getAliceConfigByName("githubUsername")}"']) - # self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'config', 'user.password', f'"{self.ConfigManager.getAliceConfigByName("githubToken")}"']) - self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'remote', 'add', 'origin', url]) + + self.Commons.runSystemCommand(['git', 'config', '--global', 'user.email', 'githubbot@projectalice.io']) + self.Commons.runSystemCommand(['git', 'config', '--global', 'user.name', 'githubbot@projectalice.io']) + + remote = f'https://{self.ConfigManager.getAliceConfigByName("githubUsername")}:{self.ConfigManager.getAliceConfigByName("githubToken")}@github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/skill_{skillName}.git' + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'remote', 'add', 'origin', remote]) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'add', '--all']) self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'commit', '-m', '"Initial upload"']) - self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'push', f'https://{self.ConfigManager.getAliceConfigByName("githubUsername")}:{self.ConfigManager.getAliceConfigByName("githubToken")}@github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/skill_{skillName}.git', '--set-upstream', 'origin', 'master']) + self.Commons.runSystemCommand(['git', '-C', str(localDirectory), 'push', '--set-upstream', 'origin', 'master']) + url = f'https://github.com/{self.ConfigManager.getAliceConfigByName("githubUsername")}/skill_{skillName}.git' self.logInfo(f'Skill uploaded! You can find it on {url}') return True except Exception as e: From 6ca8aa5a5a3767ce15383fe395d123b21823ea93 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Tue, 25 Feb 2020 09:00:24 +0100 Subject: [PATCH 016/139] Fix alicewatch --- core/interface/static/css/projectalice.css | 2 +- core/interface/static/js/alicewatch.js | 8 ++++---- core/interface/templates/alicewatch.html | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/interface/static/css/projectalice.css b/core/interface/static/css/projectalice.css index 45322338f..a9e21561d 100644 --- a/core/interface/static/css/projectalice.css +++ b/core/interface/static/css/projectalice.css @@ -559,7 +559,7 @@ input:focus { margin-right: 20px; } -.snipswatchActiveVerbosity { +.alicewatchActiveVerbosity { color: yellow; } diff --git a/core/interface/static/js/alicewatch.js b/core/interface/static/js/alicewatch.js index 6e3c13af4..3b88727fe 100644 --- a/core/interface/static/js/alicewatch.js +++ b/core/interface/static/js/alicewatch.js @@ -2,7 +2,7 @@ $(function () { function refreshData() { let container = $('#console'); $.ajax({ - url: '/snipswatch/refreshConsole/', + url: '/alicewatch/refreshConsole/', dataType: 'json', type: 'POST' }).done(function (response) { @@ -31,10 +31,10 @@ $(function () { }); $('[class^="fas fa-thermometer"]').on('click touchstart', function () { - $('[class^="fas fa-thermometer"]').removeClass('snipswatchActiveVerbosity'); - $(this).addClass('snipswatchActiveVerbosity'); + $('[class^="fas fa-thermometer"]').removeClass('alicewatchActiveVerbosity'); + $(this).addClass('alicewatchActiveVerbosity'); $.ajax({ - url: '/snipswatch/verbosity/', + url: '/alicewatch/verbosity/', data: { verbosity: $(this).data('verbosity') }, diff --git a/core/interface/templates/alicewatch.html b/core/interface/templates/alicewatch.html index 72e9f7511..a62f91eb0 100644 --- a/core/interface/templates/alicewatch.html +++ b/core/interface/templates/alicewatch.html @@ -21,7 +21,7 @@ aria-hidden="true"> {{ langData.followLogs }}
- + From 63f7e569b40d67b5082e128e431956fe2a876325 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Tue, 25 Feb 2020 09:01:44 +0100 Subject: [PATCH 017/139] cleanup --- core/interface/static/js/alicewatch.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/interface/static/js/alicewatch.js b/core/interface/static/js/alicewatch.js index 3b88727fe..bf47960d2 100644 --- a/core/interface/static/js/alicewatch.js +++ b/core/interface/static/js/alicewatch.js @@ -11,7 +11,7 @@ $(function () { '' + response.data[i] + '' ); } - }).always(function (data) { + }).always(function () { if ($('#checkedCheckbox').is(':visible')) { container.scrollTop(container.prop('scrollHeight')); } From 74da670a7ddd64b8a66e7cc2538e32fe7a166246 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Tue, 25 Feb 2020 09:04:16 +0100 Subject: [PATCH 018/139] rename snipswatch --- core/interface/views/AliceWatchView.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/interface/views/AliceWatchView.py b/core/interface/views/AliceWatchView.py index 0f44327c7..a9379ed17 100644 --- a/core/interface/views/AliceWatchView.py +++ b/core/interface/views/AliceWatchView.py @@ -1,6 +1,6 @@ +import tempfile from pathlib import Path -import tempfile from flask import jsonify, render_template, request from core.interface.model.View import View @@ -14,7 +14,7 @@ def __init__(self): super().__init__() self._counter = 0 self._thread = None - self._file = Path(tempfile.gettempdir(), 'snipswatch') + self._file = Path(tempfile.gettempdir(), 'alicewatch') self._process = None From bdcd315b6bb5ecaf48c3e58e09399c0e28482f23 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 16:33:17 +0100 Subject: [PATCH 019/139] Skill names shouldn't be smaller than 5 characters --- core/interface/static/js/devmode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/interface/static/js/devmode.js b/core/interface/static/js/devmode.js index ee03e9c6e..8f83bba01 100644 --- a/core/interface/static/js/devmode.js +++ b/core/interface/static/js/devmode.js @@ -54,7 +54,7 @@ $(function () { }); $('#skillname').on('input', function () { - if ($(this).val().length < 8) { + if ($(this).val().length < 5) { $('#skillNameOk').hide(); $('#skillNameKo').show(); toggleCreateButton(); From 6eac7b05aa45598e929467a55746e023205e432e Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 16:34:17 +0100 Subject: [PATCH 020/139] Always lowercase a username --- core/user/UserManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/user/UserManager.py b/core/user/UserManager.py index 503c36bea..6477ad407 100644 --- a/core/user/UserManager.py +++ b/core/user/UserManager.py @@ -141,7 +141,7 @@ def getUserAccessLevel(self, username: str) -> Optional[Any]: def getUser(self, username: str) -> Optional[User]: - return self._users.get(username, None) + return self._users.get(username.lower(), None) def getUserById(self, userId: int) -> Optional[User]: From 0a0779a03bbd35dd20d1c011ad6687867bbe415b Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 17:08:13 +0100 Subject: [PATCH 021/139] Finally implemented eraser and backspace in admin auth --- core/interface/static/js/adminAuth.js | 17 ++++++++++++++--- core/interface/templates/adminAuth.html | 4 ++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/core/interface/static/js/adminAuth.js b/core/interface/static/js/adminAuth.js index 41054c960..6dbe4a17a 100644 --- a/core/interface/static/js/adminAuth.js +++ b/core/interface/static/js/adminAuth.js @@ -15,14 +15,13 @@ $(function () { setTimeout(function () { checkAuth(); }, 250); - } - else if (response.hasOwnProperty('nextPage')) { + } else if (response.hasOwnProperty('nextPage')) { window.location.replace(response.nextPage); } }) } - $('.adminAuthKeyboardKey').on('click touchstart', function () { + $('.adminAuthKeyboardKey').not('.erase').not('.backspace').on('click touchstart', function () { if (!keyboardAuthNotified) { $.post('/adminAuth/keyboardAuth/'); keyboardAuthNotified = true; @@ -55,6 +54,18 @@ $(function () { return false; }); + $('.erase').on('click touchstart', function () { + code = ''; + $('#codeContainer').children('.adminAuthDisplayDigit').each(function () { + $(this).removeClass('adminAuthDigitFilled'); + }); + }); + + $('.backspace').on('click touchstart', function () { + code = code.slice(0, -1); + $('#codeContainer').children('.adminAuthDigitFilled').last().removeClass('adminAuthDigitFilled') + }); + $('#adminAuthKeyboardContainer').hide(); setTimeout(function () { diff --git a/core/interface/templates/adminAuth.html b/core/interface/templates/adminAuth.html index 90d2f24a3..dc2359814 100644 --- a/core/interface/templates/adminAuth.html +++ b/core/interface/templates/adminAuth.html @@ -30,8 +30,8 @@
1
2
3
-
+
0
-
+
{% endblock %} From 110d693a9a5bbe6b315f3c1141faf82e5a9aa539 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 18:56:21 +0100 Subject: [PATCH 022/139] This fixes ASR listening Alice speaking --- core/asr/ASRManager.py | 20 ++++++++++++++++---- core/asr/model/ASR.py | 5 +++-- core/asr/model/GoogleASR.py | 6 ++++-- core/asr/model/PocketSphinxASR.py | 3 ++- core/dialog/model/DialogSession.py | 1 + core/server/MqttManager.py | 1 + 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/core/asr/ASRManager.py b/core/asr/ASRManager.py index 62bd5d07f..29a595976 100644 --- a/core/asr/ASRManager.py +++ b/core/asr/ASRManager.py @@ -109,15 +109,18 @@ def decodeStream(self, session: DialogSession): if result and result.text: self.MqttManager.publish(topic=constants.TOPIC_ASR_STOP_LISTENING, payload={'sessionId': session.sessionId, 'siteId': session.siteId}) + + if session.hasEnded: + return + self.logDebug(f'ASR captured: {result.text}') text = self.LanguageManager.sanitizeNluQuery(result.text) - # supportedIntents = result.session.intentFilter or self.SkillManager.supportedIntents - # intentFilter = [intent.justTopic if isinstance(intent, Intent) else intent for intent in supportedIntents] - self.MqttManager.publish(topic=constants.TOPIC_TEXT_CAPTURED, payload={'sessionId': session.sessionId, 'text': text, 'siteId': session.siteId, 'likelihood': result.likelihood, 'seconds': result.processingTime}) - # self.MqttManager.publish(topic=constants.TOPIC_NLU_QUERY, payload={'input': text, 'intentFilter': intentFilter, 'sessionId': session.sessionId}) else: + if session.hasEnded: + return + self.MqttManager.publish(topic=constants.TOPIC_INTENT_NOT_RECOGNIZED) self.MqttManager.playSound( soundFilename='error', @@ -140,6 +143,15 @@ def onSessionError(self, session: DialogSession): return self._streams[session.siteId].onSessionError(session) + self._streams.pop(session.siteId, None) + + + def onSessionEnded(self, session: DialogSession): + if not self._asr or session.siteId not in self._streams or not self._streams[session.siteId].isRecording: + return + + self._asr.end(session) + self._streams.pop(session.siteId, None) def addRecorder(self, siteId: str, recorder: Recorder): diff --git a/core/asr/model/ASR.py b/core/asr/model/ASR.py index ceb13244f..4c2328711 100644 --- a/core/asr/model/ASR.py +++ b/core/asr/model/ASR.py @@ -21,6 +21,7 @@ def __init__(self): self._isOnlineASR = False self._timeout = Event() self._timeoutTimer: Optional[threading.Timer] = None + self._recorder: Optional[Recorder] = None super().__init__() @@ -86,9 +87,9 @@ def decodeStream(self, session: DialogSession): self._timeoutTimer = self.ThreadManager.newTimer(interval=int(self.ConfigManager.getSnipsConfiguration('snips-dialogue', 'session_timeout').value) or 30, func=self.timeout) - def end(self, recorder: Recorder, session: DialogSession): + def end(self, session: DialogSession): self.MqttManager.mqttClient.unsubscribe(constants.TOPIC_AUDIO_FRAME.format(session.siteId)) - recorder.stopRecording() + self._recorder.stopRecording() if self._timeoutTimer and self._timeoutTimer.is_alive(): self._timeoutTimer.cancel() diff --git a/core/asr/model/GoogleASR.py b/core/asr/model/GoogleASR.py index b5217221d..6cbf29b82 100644 --- a/core/asr/model/GoogleASR.py +++ b/core/asr/model/GoogleASR.py @@ -1,7 +1,8 @@ -import os from pathlib import Path from typing import Generator, Optional +import os + from core.asr.model.ASR import ASR from core.asr.model.ASRResult import ASRResult from core.asr.model.Recorder import Recorder @@ -51,13 +52,14 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: super().decodeStream(session) recorder = Recorder(self._timeout) self.ASRManager.addRecorder(session.siteId, recorder) + self._recorder = recorder with recorder as stream: audioStream = stream.audioStream() requests = (types.StreamingRecognizeRequest(audio_content=content) for content in audioStream) responses = self._client.streaming_recognize(self._streamingConfig, requests) result = self._checkResponses(session, responses) - self.end(recorder, session) + self.end(session) return ASRResult( text=result[0], diff --git a/core/asr/model/PocketSphinxASR.py b/core/asr/model/PocketSphinxASR.py index 27e14a90b..bc9928fcd 100644 --- a/core/asr/model/PocketSphinxASR.py +++ b/core/asr/model/PocketSphinxASR.py @@ -117,6 +117,7 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: with Stopwatch() as processingTime: with Recorder(self._timeout) as recorder: self.ASRManager.addRecorder(session.siteId, recorder) + self._recorder = recorder self._decoder.start_utt() inSpeech = False for chunk in recorder: @@ -131,7 +132,7 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: result = self._decoder.hyp() if self._decoder.hyp() else None break - self.end(recorder, session) + self.end(session) return ASRResult( text=result.hypstr.strip(), diff --git a/core/dialog/model/DialogSession.py b/core/dialog/model/DialogSession.py index 003f9de22..b74634850 100644 --- a/core/dialog/model/DialogSession.py +++ b/core/dialog/model/DialogSession.py @@ -19,6 +19,7 @@ class DialogSession: notUnderstood: int = 0 currentState: str = constants.DEFAULT isAPIGenerated: bool = False + hasEnded: bool = False slots: dict = field(default_factory=dict) slotsAsObjects: dict = field(default_factory=dict) customData: dict = field(default_factory=dict) diff --git a/core/server/MqttManager.py b/core/server/MqttManager.py index a4b60a448..bda9f8717 100644 --- a/core/server/MqttManager.py +++ b/core/server/MqttManager.py @@ -362,6 +362,7 @@ def onSnipsSessionEnded(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId) if session: + session.hasEnded = True session.update(msg) else: self.broadcast(method=constants.EVENT_SESSION_ENDED, exceptions=[self.name]) From 091433e7e8b291a9c927c66829a23f653ea9b7bb Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 25 Feb 2020 19:50:40 +0100 Subject: [PATCH 023/139] Retrain assistant, dialog templates and NLU through the interface --- core/interface/languages/de.json | 2 +- core/interface/languages/en.json | 2 +- core/interface/languages/fr.json | 2 +- core/interface/static/js/admin.js | 4 ++-- core/interface/templates/admin.html | 6 +++--- core/interface/views/AdminView.py | 16 ++++++++++------ core/nlu/model/SnipsNlu.py | 1 + core/snips/SnipsAssistantManager.py | 6 ++++++ core/util/ThreadManager.py | 6 ++++++ 9 files changed, 31 insertions(+), 14 deletions(-) diff --git a/core/interface/languages/de.json b/core/interface/languages/de.json index afd72ab7b..5c31d0073 100644 --- a/core/interface/languages/de.json +++ b/core/interface/languages/de.json @@ -21,7 +21,7 @@ "adminTabTitleUtilities": "Utilities", "restartAlice": "Alice neustarten", "reboot": "Reboot", - "trainAndDlAssistant": "Assistant herunterladen", + "trainAssistant": "Assistant trainieren", "wipeAll": "Alles löschen", "devmodeNewSkill": "Neuer Skill", "devmodeEditSkill": "Skill editieren", diff --git a/core/interface/languages/en.json b/core/interface/languages/en.json index 1d44e6572..4be87fab0 100644 --- a/core/interface/languages/en.json +++ b/core/interface/languages/en.json @@ -21,7 +21,7 @@ "adminTabTitleUtilities": "Utilities", "restartAlice": "Restart Alice", "reboot": "Reboot", - "trainAndDlAssistant": "Download assistant", + "trainAssistant": "Train assistant", "wipeAll": "Wipe all", "devmodeNewSkill": "Skill creation", "devmodeEditSkill": "Skill edition", diff --git a/core/interface/languages/fr.json b/core/interface/languages/fr.json index 9becfa3b1..b297856f1 100644 --- a/core/interface/languages/fr.json +++ b/core/interface/languages/fr.json @@ -21,7 +21,7 @@ "adminTabTitleUtilities": "Utilitaires", "restartAlice": "Relancer Alice", "reboot": "Reboot", - "trainAndDlAssistant": "Télécharger assistant", + "trainAssistant": "Entrainer assistant", "wipeAll": "Tout supprimer", "devmodeNewSkill": "Nouveau skill", "devmodeEditSkill": "Edition de skill", diff --git a/core/interface/static/js/admin.js b/core/interface/static/js/admin.js index 7b4a0176f..f16b77b03 100644 --- a/core/interface/static/js/admin.js +++ b/core/interface/static/js/admin.js @@ -88,8 +88,8 @@ $(function () { return false; }); - $('#trainAndDownload').on('click touchstart', function () { - handleUtilityClick($(this), 'assistantDownload', 5000); + $('#trainAssistant').on('click touchstart', function () { + handleUtilityClick($(this), 'trainAssistant', 5000); return false; }); diff --git a/core/interface/templates/admin.html b/core/interface/templates/admin.html index 31fe4bc4a..8add50951 100644 --- a/core/interface/templates/admin.html +++ b/core/interface/templates/admin.html @@ -84,11 +84,11 @@
{{ langData.reboot }}
-
+
- +
-
{{ langData.trainAndDlAssistant }}
+
{{ langData.trainAssistant }}
diff --git a/core/interface/views/AdminView.py b/core/interface/views/AdminView.py index 326490c2a..f3781776c 100644 --- a/core/interface/views/AdminView.py +++ b/core/interface/views/AdminView.py @@ -79,13 +79,17 @@ def reboot(self) -> dict: return jsonify(success=False) - def assistantDownload(self) -> dict: + def trainAssistant(self) -> dict: try: - self.__class__.setWaitType('snipsdownload') + self.__class__.setWaitType('trainAssistant') + self.ThreadManager.newEvent('TrainAssistant').set() + self.DialogTemplateManager.clearCache() + self.SnipsAssistantManager.retrain() + self.ThreadManager.doLater(interval=1, func=self.NluManager.trainNLU()) return jsonify(success=True) except Exception as e: - self.logError(f'Failed downloading assistant: {e}') + self.logError(f'Failed training assistant: {e}') return jsonify(success=False) @@ -129,10 +133,10 @@ def wipeAll(self) -> dict: def areYouReady(self) -> bool: if not self.__class__.getWaitType() or self.__class__.getWaitType() in ['restart', 'reboot']: return jsonify(success=False) if self.ProjectAlice.restart else jsonify(success=True) - elif self.__class__.getWaitType() == 'snipsdownload': - return jsonify(success=False) if self.ThreadManager.getEvent('SnipsAssistantDownload').isSet() else jsonify(success=True) + elif self.__class__.getWaitType() == 'trainAssistant': + return jsonify(success=False) if self.ThreadManager.getEvent('TrainAssistant').isSet() else jsonify(success=True) else: - return False + return jsonify(success=False) @classmethod diff --git a/core/nlu/model/SnipsNlu.py b/core/nlu/model/SnipsNlu.py index b5eea58ed..fb16ca17a 100644 --- a/core/nlu/model/SnipsNlu.py +++ b/core/nlu/model/SnipsNlu.py @@ -157,6 +157,7 @@ def nluTrainingThread(self, datasetFile: Path): self.SnipsServicesManager.runCmd(cmd='restart', services=['snips-nlu']) self._timer.cancel() + self.ThreadManager.getEvent('TrainAssistant').clear() self.logInfo(f'Snips NLU trained in {stopWatch} seconds') diff --git a/core/snips/SnipsAssistantManager.py b/core/snips/SnipsAssistantManager.py index cc79f2f42..725209de2 100644 --- a/core/snips/SnipsAssistantManager.py +++ b/core/snips/SnipsAssistantManager.py @@ -29,6 +29,12 @@ def checkAssistant(self): self.train() + def retrain(self): + self._assistantPath.unlink() + self.logInfo('Retraining assistant') + self.train() + + def checkConsistency(self) -> bool: if not self._assistantPath.exists(): return False diff --git a/core/util/ThreadManager.py b/core/util/ThreadManager.py index 751b8fa2a..c57115fe9 100644 --- a/core/util/ThreadManager.py +++ b/core/util/ThreadManager.py @@ -60,11 +60,17 @@ def doLater(self, interval: float, func: Callable, args: list = None, kwargs: di def onTimerEnd(self, t: ThreadTimer): + if not t or not t.callback: + return + t.callback(*t.args, **t.kwargs) self.removeTimer(t) def removeTimer(self, t: ThreadTimer): + if not t or not t.callback: + return + if t.timer.is_alive(): t.timer.cancel() From fbb9b16c5b16be15063bb37c69a76fec43773fc7 Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 26 Feb 2020 11:32:11 +0100 Subject: [PATCH 024/139] Missing skill main class creation in skill dev --- core/base/SkillManager.py | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 501d9dfe1..06c3286da 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -790,24 +790,18 @@ def createNewSkill(self, skillDefinition: dict) -> bool: widgetName = widgetName[0].upper() + widgetName[1:] readmeWidgets += f' {widgetName}\n' - with css.open() as fp: - content = fp.read().replace('%widgetname%', widgetName) - + content = css.read_text().replace('%widgetname%', widgetName) with Path(widgetRootDir, f'css/{widgetName}.css').open('w+') as fp: fp.write(content) shutil.copy(str(js), str(js).replace('widget.js', f'{widgetName}.js')) shutil.copy(str(lang), str(lang).replace('widget.json', f'{widgetName}.json')) - with html.open() as fp: - content = fp.read().replace('%widgetname%', widgetName) - + content = html.read_text().replace('%widgetname%', widgetName) with Path(widgetRootDir, f'templates/{widgetName}.html').open('w+') as fp: fp.write(content) - with python.open() as fp: - content = fp.read().replace('Template(Widget)', f'{widgetName}(Widget)') - + content = python.read_text().replace('Template(Widget)', f'{widgetName}(Widget)') with Path(widgetRootDir, f'{widgetName}.py').open('w+') as fp: fp.write(content) @@ -821,18 +815,27 @@ def createNewSkill(self, skillDefinition: dict) -> bool: shutil.rmtree(str(Path(skillDir, 'widgets'))) # Readme file - # For some reason r+ mode appends at the end instead of overwritting - with Path(skillDir, 'README.md').open() as fp: - content = fp.read().replace('%skillname%', skillName) \ - .replace('%author%', self.ConfigManager.getAliceConfigByName('githubUsername')) \ - .replace('%description%', skillDefinition['description'].capitalize()) \ - .replace('%conditions%', readmeConditions) \ - .replace('%requirements%', readmeReqs) \ - .replace('%widgets%', readmeWidgets) + content = Path(skillDir, 'README.md').read_text().replace('%skillname%', skillName) \ + .replace('%author%', self.ConfigManager.getAliceConfigByName('githubUsername')) \ + .replace('%description%', skillDefinition['description'].capitalize()) \ + .replace('%conditions%', readmeConditions) \ + .replace('%requirements%', readmeReqs) \ + .replace('%widgets%', readmeWidgets) with Path(skillDir, 'README.md').open('w') as fp: fp.write(content) + # Main class + classFile = skillDir / f'{skillDefinition["name"]}.py' + Path(skillDir, 'DefaultTemplate.py').rename(classFile) + + content = classFile.read_text().replace('%skillname%', skillName) \ + .replace('%author%', self.ConfigManager.getAliceConfigByName('githubUsername')) \ + .replace('%description%', skillDefinition['description'].capitalize()) + + with classFile.open('w') as fp: + fp.write(content) + self.logInfo(f'Created "{skillDefinition["name"]}" skill') return True From 49f0410df8593ff469150d69826d1babe4ce5d27 Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 26 Feb 2020 11:55:01 +0100 Subject: [PATCH 025/139] Don't allow spaces in skill names --- core/interface/static/js/devmode.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/interface/static/js/devmode.js b/core/interface/static/js/devmode.js index 8f83bba01..b7287dc18 100644 --- a/core/interface/static/js/devmode.js +++ b/core/interface/static/js/devmode.js @@ -135,4 +135,10 @@ $(function () { $('#goGithubButton').on('click touchstart', function () { window.open($(this).text()); }); + + $('#skillname').on('keydown', function (e) { + if (e.key == ' ') { + return false; + } + }); }); From 8ba8d42441109274b42ced68011bd00c0343de30 Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 26 Feb 2020 15:23:05 +0100 Subject: [PATCH 026/139] Started implementing missing skill icon for store. Will need some skill changes --- core/interface/static/css/projectalice.css | 19 +++++++++++++++++++ core/interface/static/js/skills.js | 7 +++++++ 2 files changed, 26 insertions(+) diff --git a/core/interface/static/css/projectalice.css b/core/interface/static/css/projectalice.css index a9e21561d..e312fd641 100644 --- a/core/interface/static/css/projectalice.css +++ b/core/interface/static/css/projectalice.css @@ -182,6 +182,25 @@ a:hover { box-shadow: 0 0 20px 5px #141414; } +.skillsStoreSkillInfoContainer { + margin-top: 5px; + display: flex; + width: 100%; +} + +.skillsStoreSkillLeft { + width: 50%; +} + +.skillsStoreSkillRight { + display: flex; + width: 50%; + margin-right: 5px; + align-items: center; + justify-content: flex-end; + font-size: 3.5em; +} + .skillsStoreSkillTitle { background-color: #343434; height: 30px; diff --git a/core/interface/static/js/skills.js b/core/interface/static/js/skills.js index 1b9c4aeb5..17691b704 100644 --- a/core/interface/static/js/skills.js +++ b/core/interface/static/js/skills.js @@ -55,9 +55,16 @@ $(function () { if ($('#skillsPane').find('#' + installer['name'] + '-' + installer['author']).length === 0) { let $tile = $('
' + '
' + installer['name'] + '
' + + '
' + + '
' + '
' + installer['author'] + '
' + '
' + installer['version'] + '
' + '
' + installer['category'] + '
' + + '
' + + '
' + + '' + + '
' + + '
' + '
' + installer['desc'] + '
' + '
'); From 14a219ea589ac16d0e004b039368326bd56d3f4d Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 26 Feb 2020 18:23:47 +0100 Subject: [PATCH 027/139] Added long due support for skills icons --- core/base/SkillManager.py | 1 + 1 file changed, 1 insertion(+) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 06c3286da..3944e99a8 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -744,6 +744,7 @@ def createNewSkill(self, skillDefinition: dict) -> bool: installContent = { 'name' : skillName, 'version' : '0.0.1', + 'icon' : 'battle-net', 'author' : self.ConfigManager.getAliceConfigByName('githubUsername'), 'maintainers' : [], 'desc' : skillDefinition['description'].capitalize(), From 90fc98aa09b4a683f6c1660a74d68ee9d67edba4 Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 26 Feb 2020 18:51:12 +0100 Subject: [PATCH 028/139] Skill store skill icons --- core/interface/static/js/skills.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/interface/static/js/skills.js b/core/interface/static/js/skills.js index 17691b704..8a8a7db5e 100644 --- a/core/interface/static/js/skills.js +++ b/core/interface/static/js/skills.js @@ -62,7 +62,7 @@ $(function () { '
' + installer['category'] + '
' + '
' + '
' + - '' + + '' + '
' + '
' + '
' + installer['desc'] + '
' + From fff0ecf3791bf960c4d86b029d18d280605202db Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 26 Feb 2020 19:16:06 +0100 Subject: [PATCH 029/139] Better icon support --- core/base/SkillManager.py | 2 +- core/interface/static/js/skills.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 3944e99a8..bd60cf3e2 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -744,7 +744,7 @@ def createNewSkill(self, skillDefinition: dict) -> bool: installContent = { 'name' : skillName, 'version' : '0.0.1', - 'icon' : 'battle-net', + 'icon' : 'fab fa-battle-net', 'author' : self.ConfigManager.getAliceConfigByName('githubUsername'), 'maintainers' : [], 'desc' : skillDefinition['description'].capitalize(), diff --git a/core/interface/static/js/skills.js b/core/interface/static/js/skills.js index 8a8a7db5e..e809ecbf6 100644 --- a/core/interface/static/js/skills.js +++ b/core/interface/static/js/skills.js @@ -62,7 +62,7 @@ $(function () { '
' + installer['category'] + '
' + '
' + '
' + - '' + + '' + '
' + '' + '
' + installer['desc'] + '
' + From a1969a4b04cb2183fc31efa6bec2c8b4ac2590cf Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 26 Feb 2020 20:15:05 +0100 Subject: [PATCH 030/139] Maybe a fix for NLU training data missing parts --- core/nlu/model/SnipsNlu.py | 40 +++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/core/nlu/model/SnipsNlu.py b/core/nlu/model/SnipsNlu.py index fb16ca17a..5015b3912 100644 --- a/core/nlu/model/SnipsNlu.py +++ b/core/nlu/model/SnipsNlu.py @@ -13,7 +13,7 @@ class SnipsNlu(NluEngine): NAME = 'Snips NLU' - UTTERANCE_REGEX = re.compile('(.*?){(.+?:=>.+?)}(.*?)') + UTTERANCE_REGEX = re.compile('{(.+?:=>.+?)}') def __init__(self): @@ -62,34 +62,30 @@ def convertDialogTemplate(self, file: Path): for utterance in intent['utterances']: data = list() - result = re.findall(self.UTTERANCE_REGEX, utterance) + result = self.UTTERANCE_REGEX.split(utterance) if not result: data.append({ 'text': utterance }) else: - for dataset in result: - for match in dataset: - if not match: - continue - - if ':=>' not in match: - data.append({ - 'text': match - }) - continue - - text, slotName = match.split(':=>') - entity = slots.get(slotName, 'Unknown') - - if entity.startswith('snips/'): - nluTrainingSample['entities'][entity] = dict() - + for match in result: + if ':=>' not in match: data.append({ - 'entity' : entity, - 'slot_name': slotName, - 'text' : text + 'text': match }) + continue + + text, slotName = match.split(':=>') + entity = slots.get(slotName, 'Unknown') + + if entity.startswith('snips/'): + nluTrainingSample['entities'][entity] = dict() + + data.append({ + 'entity' : entity, + 'slot_name': slotName, + 'text' : text + }) # noinspection PyTypeChecker nluTrainingSample['intents'][intentName]['utterances'].append({'data': data}) From efaf83ddf4faee4cfcfb22b268485f11372d680c Mon Sep 17 00:00:00 2001 From: JRK Date: Thu, 27 Feb 2020 01:29:42 +0100 Subject: [PATCH 031/139] Bad indentation, skills with only slotTypes issue Bad indentation, datasets for skills with only slotTypes are not generated. Skill dataset was overwritten for each intent. --- core/nlu/model/SnipsNlu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/nlu/model/SnipsNlu.py b/core/nlu/model/SnipsNlu.py index 5015b3912..e4fc269ae 100644 --- a/core/nlu/model/SnipsNlu.py +++ b/core/nlu/model/SnipsNlu.py @@ -90,8 +90,8 @@ def convertDialogTemplate(self, file: Path): # noinspection PyTypeChecker nluTrainingSample['intents'][intentName]['utterances'].append({'data': data}) - with Path(self._cachePath, f'{dialogTemplate["skill"]}_{file.stem}.json').open('w') as fp: - json.dump(nluTrainingSample, fp, ensure_ascii=False, indent=4) + with Path(self._cachePath, f'{dialogTemplate["skill"]}_{file.stem}.json').open('w') as fp: + json.dump(nluTrainingSample, fp, ensure_ascii=False, indent=4) def train(self): From 530d887e1a1e954bfc7ea9e9aff6b65ee77073e1 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 10:50:01 +0100 Subject: [PATCH 032/139] Fix wrong call to logger error function --- core/base/SkillManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index bd60cf3e2..338af17f5 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -403,7 +403,7 @@ def _checkForSkillInstall(self): try: skillsToBoot = self._installSkills(files) except Exception as e: - self._logger.error(f'Error installing skill: {e}') + self._logger.logError(f'Error installing skill: {e}') finally: self.MqttManager.mqttBroadcast(topic='hermes/leds/clear') From 5f0ed029c9bc4a8e7d56595208d9e1b857351fb0 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 11:36:47 +0100 Subject: [PATCH 033/139] This fixes wipe all from admin --- core/ProjectAlice.py | 11 +++++++++ core/base/SkillManager.py | 19 ++++++++++++++- core/dialog/DialogTemplateManager.py | 7 +++--- core/interface/views/AdminView.py | 24 ++----------------- core/nlu/NluManager.py | 13 ++++++++-- core/snips/SnipsAssistantManager.py | 6 +++++ core/util/DatabaseManager.py | 5 ++++ system/skillInstallTickets/AliceCore.install | 7 +++--- .../ContextSensitive.install | 5 ++-- .../DateDayTimeYear.install | 7 ++++-- system/skillInstallTickets/RedQueen.install | 5 ++-- system/skillInstallTickets/Telemetry.install | 14 +++++++---- 12 files changed, 82 insertions(+), 41 deletions(-) diff --git a/core/ProjectAlice.py b/core/ProjectAlice.py index 38b14ffe8..6c5f02f96 100644 --- a/core/ProjectAlice.py +++ b/core/ProjectAlice.py @@ -70,6 +70,17 @@ def onStop(self): self._restartHandler() + def wipeAll(self): + # Set as restarting so skills don't install / update + self._restart = True + + self._superManager.skillManager.wipeSkills() + self._superManager.databaseManager.clearDB() + self._superManager.dialogTemplateManager.clearCache(False) + self._superManager.nluManager.clearCache() + self._superManager.snipsAssistantManager.clearData() + + def updateProjectAlice(self): self._logger.logInfo('Checking Project Alice updates') req = requests.get(url=f'{constants.GITHUB_API_URL}/ProjectAlice/branches', auth=SuperManager.getInstance().configManager.getGithubAuth()) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 338af17f5..f1de24087 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -393,7 +393,7 @@ def _checkForSkillInstall(self): root = Path(self.Commons.rootDir(), constants.SKILL_INSTALL_TICKET_PATH) files = [f for f in root.iterdir() if f.suffix == '.install'] - if self._busyInstalling.isSet() or not files: + if self._busyInstalling.isSet() or not files or self.ProjectAlice.restart: return self.logInfo(f'Found {len(files)} install ticket(s)') @@ -686,6 +686,23 @@ def allScenarioNodes(self, includeInactive: bool = False) -> Dict[str, tuple]: return ret + def wipeSkills(self, addDefaults: bool = True): + shutil.rmtree(Path(self.Commons.rootDir(), 'skills')) + Path(self.Commons.rootDir(), 'skills').mkdir() + self.ConfigManager.updateAliceConfiguration(key='skills', value=dict()) + + if addDefaults: + tickets = [ + 'https://skills.projectalice.ch/AliceCore', + 'https://skills.projectalice.ch/ContextSensitive', + 'https://skills.projectalice.ch/RedQueen', + 'https://skills.projectalice.ch/Telemetry', + 'https://skills.projectalice.ch/DateDayTimeYear' + ] + for link in tickets: + self.Commons.downloadFile(link, f'system/skillInstallTickets/{link.rsplit("/")[-1]}.install') + + def createNewSkill(self, skillDefinition: dict) -> bool: try: self.logInfo(f'Creating new skill "{skillDefinition["name"]}"') diff --git a/core/dialog/DialogTemplateManager.py b/core/dialog/DialogTemplateManager.py index 99d20cd4d..0db78b037 100644 --- a/core/dialog/DialogTemplateManager.py +++ b/core/dialog/DialogTemplateManager.py @@ -137,14 +137,15 @@ def cleanCache(self, skillName: str): fp.write(json.dumps(checksums, indent=4, sort_keys=True)) - def clearCache(self): + def clearCache(self, rebuild: bool = True): if self._pathToChecksums.exists(): with self._pathToChecksums.open('w') as fp: fp.write(json.dumps(dict())) self.logInfo('Cache cleared') - self.checkCache() - self.buildCache() + if rebuild: + self.checkCache() + self.buildCache() def skillResource(self) -> Path: diff --git a/core/interface/views/AdminView.py b/core/interface/views/AdminView.py index f3781776c..87747ea9d 100644 --- a/core/interface/views/AdminView.py +++ b/core/interface/views/AdminView.py @@ -1,7 +1,5 @@ -from pathlib import Path from typing import Any -import shutil from flask import jsonify, render_template, request from flask_login import login_required @@ -61,7 +59,7 @@ def saveAliceSettings(self): def restart(self) -> dict: try: self.__class__.setWaitType('restart') - self.ThreadManager.doLater(interval=2, func=self.ProjectAlice.doRestart) + self.ThreadManager.doLater(interval=1, func=self.ProjectAlice.doRestart) return jsonify(success=True) except Exception as e: self.logError(f'Failed restarting Alice: {e}') @@ -105,25 +103,7 @@ def updatee(self) -> dict: def wipeAll(self) -> dict: try: - tickets = [ - 'https://skills.projectalice.ch/AliceCore', - 'https://skills.projectalice.ch/ContextSensitive', - 'https://skills.projectalice.ch/RedQueen', - 'https://skills.projectalice.ch/Telemetry', - 'https://skills.projectalice.ch/DateDayTimeYear' - ] - - for link in tickets: - self.Commons.downloadFile(link, f'system/skillInstallTickets/{link.rsplit("/")[-1]}.install') - - shutil.rmtree(Path(self.Commons.rootDir(), 'var/assistants')) - shutil.rmtree(Path(self.Commons.rootDir(), 'trained/assistants')) - shutil.rmtree(Path(self.Commons.rootDir(), 'skills')) - Path(self.Commons.rootDir(), 'system/database/data.db') - - Path(self.Commons.rootDir(), 'var/assistants').mkdir() - Path(self.Commons.rootDir(), 'trained/assistants').mkdir() - Path(self.Commons.rootDir(), 'skills').mkdir() + self.ProjectAlice.wipeAll() return self.restart() except Exception as e: self.logError(f'Failed wiping system: {e}') diff --git a/core/nlu/NluManager.py b/core/nlu/NluManager.py index 1b3422283..272726e41 100644 --- a/core/nlu/NluManager.py +++ b/core/nlu/NluManager.py @@ -1,5 +1,7 @@ from pathlib import Path +import shutil + from core.base.model.Manager import Manager @@ -8,12 +10,15 @@ class NluManager(Manager): def __init__(self): super().__init__() self._nluEngine = None - self._pathToCache = Path(self.Commons.rootDir(), 'var/cache/nlu/') + self._pathToCache = Path(self.Commons.rootDir(), 'var/cache/nlu/trainingData') self.selectNluEngine() def onStart(self): super().onStart() + if not self._pathToCache.exists(): + self._pathToCache.mkdir(parents=True) + self.isTrainingNeeded() @@ -33,7 +38,6 @@ def isTrainingNeeded(self): if Path(self.Commons.rootDir(), f'trained/assistants/assistant_{self.LanguageManager.activeLanguage}/nlu_engine').exists(): self.SnipsAssistantManager.linkAssistant() else: - self.logWarning('NLU Engine is not existing but the assistant and the dialog templates are ok, this is not normal, did you stop me while I was training?') self.DialogTemplateManager.clearCache() if self.DialogTemplateManager.hasChanges: @@ -79,3 +83,8 @@ def buildTrainingData(self, changes: dict): def trainNLU(self): self._nluEngine.train() + + + def clearCache(self): + shutil.rmtree(self._pathToCache) + self._pathToCache.mkdir() diff --git a/core/snips/SnipsAssistantManager.py b/core/snips/SnipsAssistantManager.py index 725209de2..c947a842b 100644 --- a/core/snips/SnipsAssistantManager.py +++ b/core/snips/SnipsAssistantManager.py @@ -17,6 +17,12 @@ def onStart(self): self.checkAssistant() + def clearData(self): + Path(self.Commons.rootDir(), 'trained/assistants/assistant_de/assistant.jon').unlink() + Path(self.Commons.rootDir(), 'trained/assistants/assistant_fr/assistant.jon').unlink() + Path(self.Commons.rootDir(), 'trained/assistants/assistant_en/assistant.jon').unlink() + + def checkAssistant(self): self.logInfo('Checking assistant') if not self._assistantPath.exists(): diff --git a/core/util/DatabaseManager.py b/core/util/DatabaseManager.py index c75cbbc17..3883dec0e 100644 --- a/core/util/DatabaseManager.py +++ b/core/util/DatabaseManager.py @@ -1,5 +1,6 @@ import sqlite3 import typing +from pathlib import Path from core.ProjectAliceExceptions import DbConnectionError, InvalidQuery from core.base.model.Manager import Manager @@ -27,6 +28,10 @@ def onStart(self): return False + def clearDB(self): + Path(self.Commons.rootDir(), 'system/database/data.db').unlink() + + def getConnection(self) -> sqlite3.Connection: try: con = sqlite3.connect(constants.DATABASE_FILE) diff --git a/system/skillInstallTickets/AliceCore.install b/system/skillInstallTickets/AliceCore.install index 0cbf6d97a..d0dcf4850 100644 --- a/system/skillInstallTickets/AliceCore.install +++ b/system/skillInstallTickets/AliceCore.install @@ -1,14 +1,15 @@ { "name": "AliceCore", - "version": "1.0.27", + "version": "1.0.48", + "icon": "fab fa-battle-net", "author": "ProjectAlice", "maintainers": [ "Psycho", "Jierka", "maxbachmann" ], - "desc": "AliceCore is the official skill that handles all core intents", - "aliceMinVersion": "1.0.0-a4", + "desc": "AliceCore is the official skill that handles all core intents.", + "aliceMinVersion": "1.0.0-a5", "systemRequirements": [], "pipRequirements": [], "conditions": { diff --git a/system/skillInstallTickets/ContextSensitive.install b/system/skillInstallTickets/ContextSensitive.install index 761b60dd8..4d9c8a654 100644 --- a/system/skillInstallTickets/ContextSensitive.install +++ b/system/skillInstallTickets/ContextSensitive.install @@ -1,13 +1,14 @@ { "name": "ContextSensitive", - "version": "1.0.11", + "version": "1.0.14", + "icon": "fab fa-battle-net", "author": "ProjectAlice", "maintainers": [ "Psycho", "maxbachmann" ], "desc": "ContextSensitive is the official context sensitive skill. It handle intents like 'Delete this', 'Forget about that'", - "aliceMinVersion": "1.0.0-a4", + "aliceMinVersion": "1.0.0-a5", "systemRequirements": [], "pipRequirements": [], "conditions": { diff --git a/system/skillInstallTickets/DateDayTimeYear.install b/system/skillInstallTickets/DateDayTimeYear.install index 0244adcec..5527b58e9 100644 --- a/system/skillInstallTickets/DateDayTimeYear.install +++ b/system/skillInstallTickets/DateDayTimeYear.install @@ -1,6 +1,7 @@ { "name": "DateDayTimeYear", - "version": "1.0.20", + "version": "1.0.21", + "icon": "fab fa-battle-net", "author": "Psychokiller1888", "maintainers": [ "maxbachmann", @@ -9,7 +10,9 @@ "desc": "Ask for the time, date, day and year", "aliceMinVersion": "1.0.0-a4", "systemRequirements": [], - "pipRequirements": ["Babel"], + "pipRequirements": [ + "Babel" + ], "conditions": { "lang": [ "en", diff --git a/system/skillInstallTickets/RedQueen.install b/system/skillInstallTickets/RedQueen.install index bcab681d9..b12b26148 100644 --- a/system/skillInstallTickets/RedQueen.install +++ b/system/skillInstallTickets/RedQueen.install @@ -1,13 +1,14 @@ { "name": "RedQueen", - "version": "1.0.14", + "version": "1.0.19", + "icon": "fab fa-battle-net", "author": "ProjectAlice", "maintainers": [ "Psycho", "maxbachmann" ], "desc": "Red Queen is the official Project Alice personality skill", - "aliceMinVersion": "1.0.0-a4", + "aliceMinVersion": "1.0.0-a5", "systemRequirements": [], "pipRequirements": [], "conditions": { diff --git a/system/skillInstallTickets/Telemetry.install b/system/skillInstallTickets/Telemetry.install index 37a0a3497..ce4ea2c00 100644 --- a/system/skillInstallTickets/Telemetry.install +++ b/system/skillInstallTickets/Telemetry.install @@ -1,10 +1,14 @@ { "name": "Telemetry", - "version": "1.0.5", + "version": "1.1.0", + "icon": "fab fa-battle-net", "author": "ProjectAlice", - "maintainers": ["Psychokiller1888", "maxbachmann"], + "maintainers": [ + "Psychokiller1888", + "maxbachmann" + ], "desc": "Access your stored telemetry data", - "aliceMinVersion": "1.0.0-a4", + "aliceMinVersion": "1.0.0-a5", "pipRequirements": [], "systemRequirements": [], "conditions": { @@ -12,6 +16,8 @@ "en", "de" ], - "activeManager": ["TelemetryManager"] + "activeManager": [ + "TelemetryManager" + ] } } From 2eb5b372ad3269ba4cddef6ae790efdf82ad42f5 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 11:45:54 +0100 Subject: [PATCH 034/139] typo --- core/snips/SnipsAssistantManager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/snips/SnipsAssistantManager.py b/core/snips/SnipsAssistantManager.py index c947a842b..469e86b83 100644 --- a/core/snips/SnipsAssistantManager.py +++ b/core/snips/SnipsAssistantManager.py @@ -18,9 +18,9 @@ def onStart(self): def clearData(self): - Path(self.Commons.rootDir(), 'trained/assistants/assistant_de/assistant.jon').unlink() - Path(self.Commons.rootDir(), 'trained/assistants/assistant_fr/assistant.jon').unlink() - Path(self.Commons.rootDir(), 'trained/assistants/assistant_en/assistant.jon').unlink() + Path(self.Commons.rootDir(), 'trained/assistants/assistant_de/assistant.json').unlink() + Path(self.Commons.rootDir(), 'trained/assistants/assistant_fr/assistant.json').unlink() + Path(self.Commons.rootDir(), 'trained/assistants/assistant_en/assistant.json').unlink() def checkAssistant(self): From becc289a2fc039beffa97c601eb9b3ef38f318cc Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 13:16:53 +0100 Subject: [PATCH 035/139] Fix for broken toml after wakeword adding --- core/base/model/TomlFile.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/base/model/TomlFile.py b/core/base/model/TomlFile.py index 5451a4eb9..652c7312e 100644 --- a/core/base/model/TomlFile.py +++ b/core/base/model/TomlFile.py @@ -91,6 +91,8 @@ def dump(self, withComments: bool = True, otherPath: Path = None, keepOtherPath: value = data.value if isinstance(data.value, str): + if not value: + data.commented = True value = f'"{value}"' elif isinstance(data.value, bool): value = 'true' if data.value else 'false' From 07195050287b5d73860247633dd8fb8003543467 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 13:28:01 +0100 Subject: [PATCH 036/139] Do not create values if they don't exist --- core/base/model/TomlFile.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/base/model/TomlFile.py b/core/base/model/TomlFile.py index 652c7312e..e8ef181cd 100644 --- a/core/base/model/TomlFile.py +++ b/core/base/model/TomlFile.py @@ -91,8 +91,6 @@ def dump(self, withComments: bool = True, otherPath: Path = None, keepOtherPath: value = data.value if isinstance(data.value, str): - if not value: - data.commented = True value = f'"{value}"' elif isinstance(data.value, bool): value = 'true' if data.value else 'false' @@ -219,9 +217,7 @@ def __getitem__(self, key: str) -> Any: if key in self.data: return self.data[key].value - conf = Config(key, '') - self.data[conf.name] = conf - return conf.value + return '' def __delitem__(self, key: str): From 6a7127413ce934dd87f5eb3315fe00f820941394 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 15:25:50 +0100 Subject: [PATCH 037/139] Should fix toml dumping --- core/base/model/TomlFile.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/base/model/TomlFile.py b/core/base/model/TomlFile.py index e8ef181cd..736f60545 100644 --- a/core/base/model/TomlFile.py +++ b/core/base/model/TomlFile.py @@ -90,10 +90,10 @@ def dump(self, withComments: bool = True, otherPath: Path = None, keepOtherPath: continue value = data.value - if isinstance(data.value, str): + if isinstance(value, str): value = f'"{value}"' - elif isinstance(data.value, bool): - value = 'true' if data.value else 'false' + elif isinstance(value, bool): + value = 'true' if value else 'false' f.write(f'{"#" if data.commented else ""}{data.name} = {json.dumps(value) if isinstance(value, list) else value}\n') @@ -291,7 +291,7 @@ def uncomment(self): def __str__(self) -> str: - return str(self.value) + return self.value def __repr__(self) -> str: From 8736b457d7cb8be8839c4467b8e3e2c9d32c5f03 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 16:06:01 +0100 Subject: [PATCH 038/139] It's now possible to admin login without saying the wakeword, just by typing the username --- core/interface/static/js/adminAuth.js | 17 +++++++++++++++++ core/interface/views/AdminAuth.py | 22 ++++++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/core/interface/static/js/adminAuth.js b/core/interface/static/js/adminAuth.js index 6dbe4a17a..3991d725a 100644 --- a/core/interface/static/js/adminAuth.js +++ b/core/interface/static/js/adminAuth.js @@ -21,6 +21,23 @@ $(function () { }) } + $(document).on('keyup', function (e) { + let $username = $('#username'); + if (e.key == 'Backspace') { + $username.html($username.html().slice(0, -1)); + } else if (e.key.length === 1) { + $username.append(e.key); + } + + $.ajax({ + url: '/adminAuth/login/', + data: { + 'username': $username.html() + }, + type: 'POST' + }) + }); + $('.adminAuthKeyboardKey').not('.erase').not('.backspace').on('click touchstart', function () { if (!keyboardAuthNotified) { $.post('/adminAuth/keyboardAuth/'); diff --git a/core/interface/views/AdminAuth.py b/core/interface/views/AdminAuth.py index dae505764..449b5dda9 100644 --- a/core/interface/views/AdminAuth.py +++ b/core/interface/views/AdminAuth.py @@ -1,7 +1,7 @@ import datetime -from flask import render_template, request, jsonify, redirect -from flask_login import login_user, current_user +from flask import jsonify, redirect, render_template, request +from flask_login import current_user, login_user from core.dialog.model.DialogSession import DialogSession from core.interface.model.View import View @@ -42,6 +42,24 @@ def checkAuthState(self): return jsonify(success=False) + def login(self): + try: + username = request.form.get('username', None) + if not username: + return jsonify(success=False) + + user = self.UserManager.getUser(username) + if not user: + return jsonify(success=False) + + self.setUser(user) + + return jsonify(success=True) + except: + self.logError('Failed login via keyboard') + return jsonify(success=False) + + def authenticate(self): try: code = request.form.get('usercode') From 58b9aa1b93ed622bde2b1715296530b42d57861d Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 16:06:36 +0100 Subject: [PATCH 039/139] Cleanup --- core/interface/static/js/adminAuth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/interface/static/js/adminAuth.js b/core/interface/static/js/adminAuth.js index 3991d725a..67a459114 100644 --- a/core/interface/static/js/adminAuth.js +++ b/core/interface/static/js/adminAuth.js @@ -35,7 +35,7 @@ $(function () { 'username': $username.html() }, type: 'POST' - }) + }); }); $('.adminAuthKeyboardKey').not('.erase').not('.backspace').on('click touchstart', function () { From ae66f15efd151e29ab2baad6223cae16fc867ecc Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 27 Feb 2020 19:33:19 +0100 Subject: [PATCH 040/139] Started on skill console --- core/base/model/AliceSkill.py | 6 +++++ core/interface/static/css/projectalice.css | 31 ++++++++++++++++++++++ core/interface/templates/devmode.html | 9 ++++++- core/interface/views/DevModeView.py | 4 +++ 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/core/base/model/AliceSkill.py b/core/base/model/AliceSkill.py index 56ca03105..77303ed25 100644 --- a/core/base/model/AliceSkill.py +++ b/core/base/model/AliceSkill.py @@ -36,6 +36,7 @@ def __init__(self, supportedIntents: Iterable = None, databaseSchema: dict = Non self._name = self._install['name'] self._author = self._install['author'] self._version = self._install['version'] + self._icon = self._install['icon'] self._updateAvailable = False self._active = True self._delayed = False @@ -322,6 +323,11 @@ def scenarioNodeVersion(self) -> Version: return self._scenarioNodeVersion + @property + def icon(self) -> str: + return self._icon + + def hasScenarioNodes(self) -> bool: return self._scenarioNodeName != '' diff --git a/core/interface/static/css/projectalice.css b/core/interface/static/css/projectalice.css index e312fd641..ce04a9c5f 100644 --- a/core/interface/static/css/projectalice.css +++ b/core/interface/static/css/projectalice.css @@ -956,3 +956,34 @@ input:focus { display: flex; align-items: stretch; } + +.editSkillsPane { + position: fixed; + top: 105px; + left: 154px; + right: 0; + bottom: 0; + margin: 5px; + overflow-y: auto; + overflow-x: hidden; + display: flex; + flex-wrap: wrap; + align-content: flex-start; +} + +.editSkillTile { + font-family: 'marskeregular', Arial, sans-serif; + display: flex; + flex-wrap: wrap; + align-items: flex-start; + background-color: #636363; + margin: 10px; + width: 200px; + height: 150px; + color: #d1d1d1; + align-content: flex-start; + cursor: pointer; + justify-content: center; + font-size: 1.5em; + padding-top: 5px; +} diff --git a/core/interface/templates/devmode.html b/core/interface/templates/devmode.html index 10ec2e74d..d274e4295 100644 --- a/core/interface/templates/devmode.html +++ b/core/interface/templates/devmode.html @@ -99,7 +99,14 @@
- +
+ {% for skillName, skill in skills.items() %} +
+ {{ skillName }} + +
+ {% endfor %} +
diff --git a/core/interface/views/DevModeView.py b/core/interface/views/DevModeView.py index b112101f9..295322e84 100644 --- a/core/interface/views/DevModeView.py +++ b/core/interface/views/DevModeView.py @@ -12,7 +12,11 @@ def __init__(self): def index(self): + skills = {**self.SkillManager.activeSkills, **self.SkillManager.deactivatedSkills} + skills = {skillName: skill for skillName, skill in sorted(skills.items()) if skill is not None} + return render_template(template_name_or_list='devmode.html', + skills=skills, langData=self._langData, aliceSettings=self.ConfigManager.aliceConfigurations) From b2b8eb59e2bc9fe30b57c72c72b60821c4369a4e Mon Sep 17 00:00:00 2001 From: Psycho Date: Fri, 28 Feb 2020 17:28:31 +0100 Subject: [PATCH 041/139] Better assistant clearData --- core/snips/SnipsAssistantManager.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/snips/SnipsAssistantManager.py b/core/snips/SnipsAssistantManager.py index 469e86b83..785b2a4cc 100644 --- a/core/snips/SnipsAssistantManager.py +++ b/core/snips/SnipsAssistantManager.py @@ -18,9 +18,12 @@ def onStart(self): def clearData(self): - Path(self.Commons.rootDir(), 'trained/assistants/assistant_de/assistant.json').unlink() - Path(self.Commons.rootDir(), 'trained/assistants/assistant_fr/assistant.json').unlink() - Path(self.Commons.rootDir(), 'trained/assistants/assistant_en/assistant.json').unlink() + for lang in self.LanguageManager.supportedLanguages: + try: + Path(self.Commons.rootDir(), f'trained/assistants/assistant_{lang}/assistant.json').unlink() + except: + # Language assistant doesn't exist on user's setup, ignore + pass def checkAssistant(self): From 1c1feb1cfedab2e37f10b078ae0ee1a3d69895d0 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 29 Feb 2020 06:04:33 +0100 Subject: [PATCH 042/139] Splitting ProjectAlice.yaml --- ProjectAlice.advanced.yaml | 147 +++++++++++++++++++++++++++++++++++++ ProjectAlice.yaml | 75 ++----------------- core/Initializer.py | 11 ++- core/nlu/model/SnipsNlu.py | 2 +- 4 files changed, 161 insertions(+), 74 deletions(-) create mode 100644 ProjectAlice.advanced.yaml diff --git a/ProjectAlice.advanced.yaml b/ProjectAlice.advanced.yaml new file mode 100644 index 000000000..30466d8ae --- /dev/null +++ b/ProjectAlice.advanced.yaml @@ -0,0 +1,147 @@ +--- +################################################ +# # +# Project Alice quick install file # +# For advanced users only # +# Edit the content of this file to your needs # +# and place it in /boot/ProjectAlice.yaml # +# after flashing your sd card with our # +# Project Alice image. # +# # +# Upon first boot Alice will perform some # +# updates and configure according to this file # +# # +################################################ +# DON'T CHANGE ME # +version: 1.15 +################################################ + +# How to prevent frequent errors: +# Always add a space after the ":" (e.g. deviceName: default instead of deviceName:default) + +# If you place this file into /boot after a first initialization it won't overwrite your settings unless you set this to yes +forceRewrite: no + +# By setting the next parameter to yes, ProjectAlice will also install all the required dependencies +doGroundInstall: yes + +# After initialization is done, keep a copy of this yaml file in /boot. Be aware this can be a security risk, as /boot is accessible by anyone mounting your SD card! +keepYAMLBackup: no + +# If you are installing on Raspbian Buster, set the following to yes +installOnBuster: yes + +# Base configs +# Enter Wifi credentials for automatic adding of tasmota/zigbee/netatmo devices even when Alice has wired access +useWifi: yes +wifiNetworkName: +wifiWPAPass: +wifiCountryCode: + +# The name of the device to set up +# Caution: The main device should be named default! This will be changed later. +deviceName: default +soundPlaybackAndRecordEnabled: yes + +# Connection +mqttHost: localhost +mqttPort: 1883 +mqttUser: +mqttPassword: +mqttTLSFile: + +# hardware - Turn only one to yes! +audioHardware: + usbMic: no + respeaker2: no + respeaker4: no + respeaker6MicArray: no + respeaker7: no + respeakerCoreV2: no + googleAIY: no + googleAIY2: no + matrixCreator: no + matrixVoice: no + +# Capture +micSampleRate: 16000 +micChannels: 1 + +# System +# Whether to install Hermes Led Control or not. HLC is the best way to manage your device leds if you have any +useHLC: yes + +stayCompletlyOffline: no +keepASROffline: yes +keepTTSOffline: yes +skillAutoUpdate: yes +webInterfaceActive: yes + +# enabling dev mode unlocks features on the console as well as unpublished skill loading +devMode: no + +# You should leave this by default, but who knows +newDeviceBroadcastPort: 12354 + +# Project Alice +# 'en', 'fr' or 'de'. For more, we seek helpers ;-) +activeLanguage: en + +# The language country code +activeCountryCode: US + +baseCurrency: CHF + +# Either 'metric', 'kelvin' or 'imperial' +baseUnits: metric + +# Telemetry data, such as temperature, pressure, humidity and others depending on your sensors can be kept in your internal database for forecast or AI use +enableDataStoring: yes + +# Set to max entries to keep, 0 to disable pruning +autoPruneStoredData: 1000 + +# If an intent returns less confidence score than this it will be considered as not understood +probabilityThreshold: 0.5 + +# If set to yes Alice will only answer with shorter answers, when available +shortReplies: no + +# If set to yes Alice will whisper instead of using short answers when you are sleeping. Currently only available with Amazon TTS +whisperWhenSleeping: no + +# Either 'pocketsphinx' or 'google' +asr: pocketsphinx + +# Either 'pico', 'snips', 'mycroft', 'amazon' or 'google' +tts: pico + +ttsType: female +ttsVoice: Joanna +ttsLanguage: en-US + +# Amazon Polly +# https://docs.aws.amazon.com/en_us/general/latest/gr/rande.html +awsRegion: eu-central-1 +awsAccessKey: +awsSecretKey: + +# Github - Github limits the api calls to 60 per hour unless you create a token (free) for your account +# Github is used to keep your skills up to date and install new ones as well as updating Project Alice +# This is not mendatory but strongly recommanded https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line +githubUsername: +githubToken: + +# !WARNING! You know what you are doing by changing the following to anything else than "master"! +# This allows to init ProjectAlice on any branches, even unstable ones +# Available: master / alpha / beta / rc +aliceUpdateChannel: master +skillsUpdateChannel: master + +# Google +# If you are using Google as ASR and/or TTS you need to create an account on their console and activate the API +# for speech recognition and/or text to speech. Once activated, choose to create a service account and paste the +# content of the file here +googleServiceFile: {} + +... diff --git a/ProjectAlice.yaml b/ProjectAlice.yaml index f4f45a061..b2b36da7f 100644 --- a/ProjectAlice.yaml +++ b/ProjectAlice.yaml @@ -13,24 +13,12 @@ # # ################################################ # DON'T CHANGE ME # -version: 1.14 +version: 1.15 ################################################ # How to prevent frequent errors: # Always add a space after the ":" (e.g. deviceName: default instead of deviceName:default) -# If you place this file into /boot after a first initialization it won't overwrite your settings unless you set this to yes -forceRewrite: no - -# By setting the next parameter to yes, ProjectAlice will also install all the required dependencies -doGroundInstall: yes - -# After initialization is done, keep a copy of this yaml file in /boot. Be aware this can be a security risk, as /boot is accessible by anyone mounting your SD card! -keepYAMLBackup: no - -# If you are installing on Raspbian Buster, set the following to yes -installOnBuster: yes - # Base configs # Enter Wifi credentials for automatic adding of tasmota/zigbee/netatmo devices even when Alice has wired access useWifi: yes @@ -38,18 +26,6 @@ wifiNetworkName: wifiWPAPass: wifiCountryCode: -# The name of the device to set up -# Caution: The main device should be named default! This will be changed later. -deviceName: default -soundPlaybackAndRecordEnabled: yes - -# Connection -mqttHost: localhost -mqttPort: 1883 -mqttUser: -mqttPassword: -mqttTLSFile: - # hardware - Turn only one to yes! audioHardware: usbMic: no @@ -63,10 +39,6 @@ audioHardware: matrixCreator: no matrixVoice: no -# Capture -micSampleRate: 16000 -micChannels: 1 - # System # Whether to install Hermes Led Control or not. HLC is the best way to manage your device leds if you have any useHLC: yes @@ -74,14 +46,6 @@ useHLC: yes stayCompletlyOffline: no keepASROffline: yes keepTTSOffline: yes -skillAutoUpdate: yes -webInterfaceActive: yes - -# enabling dev mode unlocks features on the console as well as unpublished skill loading -devMode: no - -# You should leave this by default, but who knows -newDeviceBroadcastPort: 12354 # Project Alice # 'en', 'fr' or 'de'. For more, we seek helpers ;-) @@ -90,55 +54,28 @@ activeLanguage: en # The language country code activeCountryCode: US -baseCurrency: CHF +baseCurrency: USD # Either 'metric', 'kelvin' or 'imperial' baseUnits: metric -# Telemetry data, such as temperature, pressure, humidity and others depending on your sensors can be kept in your internal database for forecast or AI use -enableDataStoring: yes - -# Set to max entries to keep, 0 to disable pruning -autoPruneStoredData: 1000 - -# If an intent returns less confidence score than this it will be considered as not understood -probabilityThreshold: 0.5 - -# If set to yes Alice will only answer with shorter answers, when available -shortReplies: no - -# If set to yes Alice will whisper instead of using short answers when you are sleeping. Currently only available with Amazon TTS -whisperWhenSleeping: no - # Either 'pocketsphinx' or 'google' asr: pocketsphinx # Either 'pico', 'snips', 'mycroft', 'amazon' or 'google' tts: pico -ttsType: female -ttsVoice: Joanna +ttsType: male +ttsVoice: en-US ttsLanguage: en-US -# Amazon Polly +# Amazon Polly - Only if you want to use amazon TTS # https://docs.aws.amazon.com/en_us/general/latest/gr/rande.html awsRegion: eu-central-1 awsAccessKey: awsSecretKey: -# Github - Github limits the api calls to 60 per hour unless you create a token (free) for your account -# Github is used to keep your skills up to date and install new ones as well as updating Project Alice -# This is not mendatory but strongly recommanded https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line -githubUsername: -githubToken: - -# !WARNING! You know what you are doing by changing the following to anything else than "master"! -# This allows to init ProjectAlice on any branches, even unstable ones -# Available: master / alpha / beta / rc -aliceUpdateChannel: master -skillsUpdateChannel: master - -# Google +# Google - Only if you want to use google wavenet and/or ASR # If you are using Google as ASR and/or TTS you need to create an account on their console and activate the API # for speech recognition and/or text to speech. Once activated, choose to create a service account and paste the # content of the file here diff --git a/core/Initializer.py b/core/Initializer.py index cc103de0b..0a5f194f3 100644 --- a/core/Initializer.py +++ b/core/Initializer.py @@ -61,7 +61,7 @@ def __init__(self): self._confsFile = Path(self._rootDir, 'config.py') self._confsSample = Path(self._rootDir, 'configTemplate.py') self._initFile = Path('/boot/ProjectAlice.yaml') - self._latest = 1.14 + self._latest = 1.15 def initProjectAlice(self) -> bool: @@ -122,7 +122,7 @@ def initProjectAlice(self) -> bool: subprocess.run(['sudo', 'apt-get', 'dist-upgrade', '-y']) subprocess.run(['git', 'clean', '-df']) subprocess.run(['git', 'stash']) - subprocess.run(['git', 'checkout', self.getUpdateSource(initConfs['aliceUpdateChannel'])]) + subprocess.run(['git', 'checkout', 'master']) subprocess.run(['git', 'pull']) subprocess.run(['git', 'stash', 'clear']) @@ -130,6 +130,9 @@ def initProjectAlice(self) -> bool: subprocess.run(['./venv/bin/pip3', 'uninstall', '-y', '-r', str(Path(self._rootDir, 'pipuninstalls.txt'))]) + if 'forceRewrite' not in initConfs: + initConfs['forceRewrite'] = True + if not self._confsFile.exists() and not self._confsSample.exists(): self.fatal('No config and no config template found, can\'t continue') @@ -152,10 +155,10 @@ def initProjectAlice(self) -> bool: confs = config.settings.copy() # Do some installation if wanted by the user - if initConfs['doGroundInstall']: + if 'doGroundInstall' not in initConfs or initConfs['doGroundInstall']: subprocess.run(['./venv/bin/pip3', 'install', '-r', str(Path(self._rootDir, 'requirements.txt'))]) - if initConfs['installOnBuster']: + if 'installOnBuster' not in initConfs or initConfs['installOnBuster']: subprocess.run(['sudo', 'apt-get', 'install', '-y', 'dirmngr', 'apt-transport-https']) subprocess.run(['sudo', 'bash', '-c', 'echo "deb https://raspbian.snips.ai/stretch stable main" > /etc/apt/sources.list.d/snips.list']) subprocess.run(['sudo', 'apt-key', 'adv', '--fetch-keys', 'https://debian.snips.ai/5FFCD0DEB5BA45CD.pub']) diff --git a/core/nlu/model/SnipsNlu.py b/core/nlu/model/SnipsNlu.py index e4fc269ae..671063fe4 100644 --- a/core/nlu/model/SnipsNlu.py +++ b/core/nlu/model/SnipsNlu.py @@ -33,7 +33,7 @@ def stop(self): def convertDialogTemplate(self, file: Path): - self.logInfo(f'Preparing NLU training file for {file}') + self.logInfo(f'Preparing NLU training file for {file.parent.parent.stem}') with file.open() as fp: dialogTemplate = json.load(fp) From 378e9f5dcb43774871bba6386309785a2f304b19 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Sat, 29 Feb 2020 12:32:40 +0100 Subject: [PATCH 043/139] Make sure to remove old skill instance --- core/base/SkillManager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index f1de24087..ce2fcaef8 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -167,6 +167,7 @@ def _loadSkillList(self, skillToLoad: str = '', isUpdate: bool = False) -> dict: if skillName in self.NEEDED_SKILLS: skillInstance.required = True + self._deactivatedSkills.pop(skillInstance.name, None) self._deactivatedSkills[skillInstance.name] = skillInstance continue @@ -181,6 +182,7 @@ def _loadSkillList(self, skillToLoad: str = '', isUpdate: bool = False) -> dict: if skillName in self.NEEDED_SKILLS: skillInstance.required = True + skills.pop(skillInstance.name, None) skills[skillInstance.name] = skillInstance else: self._failedSkills[name] = None From 69b26aad8b286acd09b2539267c32d4b20dc9673 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 29 Feb 2020 20:23:25 +0100 Subject: [PATCH 044/139] Updating mqtt settings through interface also updates snips.toml --- configTemplate.py | 10 +++++----- core/base/ConfigManager.py | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/configTemplate.py b/configTemplate.py index f2f6db60a..2e6cee2f7 100644 --- a/configTemplate.py +++ b/configTemplate.py @@ -28,31 +28,31 @@ 'defaultValue': 'localhost', 'dataType' : 'string', 'description' : 'Mqtt server ip adress', - 'onUpdate' : 'reconnectMqtt' + 'onUpdate' : 'updateMqttSettings' }, 'mqttPort' : { 'defaultValue': 1883, 'dataType' : 'integer', 'description' : 'Mqtt server port', - 'onUpdate' : 'reconnectMqtt' + 'onUpdate' : 'updateMqttSettings' }, 'mqttUser' : { 'defaultValue': '', 'dataType' : 'string', 'description' : 'Mqtt user. Leave blank if not password protected', - 'onUpdate' : 'reconnectMqtt' + 'onUpdate' : 'updateMqttSettings' }, 'mqttPassword': { 'defaultValue': '', 'dataType' : 'password', 'description' : 'Mqtt password. Leave blank if not password protected', - 'onUpdate' : 'reconnectMqtt' + 'onUpdate' : 'updateMqttSettings' }, 'mqttTLSFile': { 'defaultValue': '', 'dataType' : 'string', 'description' : 'Mqtt TLS file path for SSL', - 'onUpdate' : 'reconnectMqtt' + 'onUpdate' : 'updateMqttSettings' }, 'micSampleRate': { 'defaultValue': 44100, diff --git a/core/base/ConfigManager.py b/core/base/ConfigManager.py index 6799729bc..0c00d7ebd 100644 --- a/core/base/ConfigManager.py +++ b/core/base/ConfigManager.py @@ -493,6 +493,14 @@ def doConfigUpdatePostProcessing(self, functions: set): continue + def updateMqttSettings(self): + self.ConfigManager.updateSnipsConfiguration('snips-common', 'mqtt', f'{self.getAliceConfigByName("mqttHost")}:{self.getAliceConfigByName("mqttPort"):}', False, False) + self.ConfigManager.updateSnipsConfiguration('snips-common', 'mqtt_username', self.getAliceConfigByName('mqttHost'), False, False) + self.ConfigManager.updateSnipsConfiguration('snips-common', 'mqtt_password', self.getAliceConfigByName('mqttHost'), False, False) + self.ConfigManager.updateSnipsConfiguration('snips-common', 'mqtt_tls_cafile', self.getAliceConfigByName('mqttHost'), True, False) + self.reconnectMqtt() + + def reconnectMqtt(self): self.MqttManager.reconnect() From 5c48e8e1af42483e095b282094ea131b5faff54a Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 1 Mar 2020 06:11:15 +0100 Subject: [PATCH 045/139] Preparing italian support --- configTemplate.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/configTemplate.py b/configTemplate.py index 2e6cee2f7..1b75b2e2a 100644 --- a/configTemplate.py +++ b/configTemplate.py @@ -208,48 +208,47 @@ 'dataType' : 'list', 'values' : { 'en': { - 'default': True, + 'default' : True, 'countryCode': 'US' }, 'fr': { - 'default': False, + 'default' : False, 'countryCode': 'FR' }, 'de': { - 'default': False, + 'default' : False, 'countryCode': 'DE' + }, + 'it': { + 'default' : False, + 'countryCode': 'IT' } }, 'display': 'hidden' }, - 'baseCurrency': { 'defaultValue': 'CHF', 'dataType': 'list', 'values': ['CHF', 'EUR', 'USD', 'GBP', 'AUD'], 'description': 'The currency used by Project Alice' }, - 'baseUnits': { 'defaultValue': 'metric', 'dataType': 'list', 'values': ['metric', 'kelvin', 'imperial'], 'description': 'Units to use with Project Alice' }, - 'nluEngine': { 'defaultValue': 'snips', 'dataType': 'list', 'values': ['snips'], 'description': 'Natural Language Understanding engine to use' }, - 'onReboot': { 'defaultValue': '', 'dataType': 'string', 'display': 'hidden' }, - 'webInterfaceActive': { 'defaultValue': True, 'dataType': 'boolean', From de92c4df62af65c8d39179f5cdb12a83d426e918 Mon Sep 17 00:00:00 2001 From: vicvega83 <35502338+vicvega83@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:49:52 +0100 Subject: [PATCH 046/139] Add files via upload Italian translation --- system/manager/TalkManager/talks/it.json | 82 ++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 system/manager/TalkManager/talks/it.json diff --git a/system/manager/TalkManager/talks/it.json b/system/manager/TalkManager/talks/it.json new file mode 100644 index 000000000..3840ab5b3 --- /dev/null +++ b/system/manager/TalkManager/talks/it.json @@ -0,0 +1,82 @@ +{ + "noAccess": { + "default": [ + "Mi dispiace, non posso, non hai abbastanza privilegi per farlo", + "Non è possibile, il tuo livello di accesso è troppo basso" + ], + "short":[ + "Nessun accesso" + ] + }, + "unknowUser": { + "default": [ + "Mi dispiace, ma non so chi sei", + "Mi dispiace, non posso, non ti conosco", + "Dovresti chiamarmi per nome, così saprei chi sei" + ], + "short": [ + "Non ti conosco" + ] + }, + "notUnderstood": { + "default": [ + "Mi dispiace ma non sono sicuro di capire cosa vuoi", + "Non ho capito cosa vuoi", + "Come? puoi ripetere?", + "Come??" + ], + "short": [ + "Come?" + ] + }, + "notUnderstoodEnd": { + "default": [ + "Mi dispiace, ma non ti capisco", + "Mi disipace, non capisco cosa vuoi", + "Ok, ferma, non ho capito la richiesta", + "Ok, ferma, proprio non capisco" + ], + "short": [ + "Ok, ferma, proprio non capisco" + ] + }, + "youreWelcome": { + "default": [ + "Prego!", + "Ma figurati!", + "nessun problema, quando vuoi!" + ] + }, + "error": { + "default": [ + "Qualcosa è andato storto, controlla i miei log" + ] + }, + "newDeviceAdditionFailed": { + "default": [ + "Mi disipiace, c'è stato un problema nell'aggiungere il nuovo dispositivo" + ] + }, + "newDeviceAdditionSuccess": { + "default": [ + "Il nuovo dispositivo è stato trovato e aggiunto con successo!" + ] + }, + "maxOneAlicePerRoom": { + "default": [ + "Mi dispiace ma non puoi avere più di una skill di Alice per stanza", + "Mi disipace molto, ma posso solo avere una skill di Alice per stanza" + ] + }, + "wakewordCaptured": [ + "Ho registrato ed estrapolato la parola di attivazione, controlliamola", + "Ok, registrato e tagliato, te la faccio sentire", + "Cel'ho! l'ho aggiustata un pò, ascoltiamola" + ], + "isWakewordSampleOk": [ + "Pensi che vada bene? Troppo tagliata, o troppo poco?" + ], + "offline": [ + "Mi dispiace, ma non posso farlo se sono offline" + ] +} From 38b73557d36ae60811bfa78a45f1b3c903fc7e50 Mon Sep 17 00:00:00 2001 From: vicvega83 <35502338+vicvega83@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:50:44 +0100 Subject: [PATCH 047/139] Add files via upload Italian translation --- core/interface/languages/it.json | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 core/interface/languages/it.json diff --git a/core/interface/languages/it.json b/core/interface/languages/it.json new file mode 100644 index 000000000..c970d4601 --- /dev/null +++ b/core/interface/languages/it.json @@ -0,0 +1,49 @@ +{ + "home": "home", + "skills": "skills", + "scenarios": "scene", + "syslog": "syslog", + "alicewatch": "alicewatch", + "admin": "admin", + "devMode": "devMode", + "by": "di", + "status": "status", + "enable": "abilita", + "disable": "disabilita", + "delete": "cancella", + "updatee": "aggiorna", + "addWidgetTitle": "Widgets disponibili", + "viewIntents": "Visualizza intents", + "skillSettings": "Impostazioni skills", + "save": "Save", + "followLogs": "Autoscroll", + "adminTabTitleSetting": "Impostazioni Alice", + "adminTabTitleUtilities": "Utilities", + "restartAlice": "Riavvia Alice", + "reboot": "Riavvia il Sistema", + "trainAndDlAssistant": "Scarica Assistente", + "wipeAll": "Cancella tutto", + "devmodeNewSkill": "Crea skill", + "devmodeEditSkill": "Modifica skill", + "reload": "Ricarica", + "skillName": "nome Skill", + "skillDesc": "descrizione skill", + "skillLanguage": "Lingua skill", + "english": "Inglese", + "french": "Francese", + "german": "Tedesco", + "pipreq": "Prerequisiti di PIP", + "sysreq": "Prerequisiti di sistema", + "conditions": "Condizioni", + "conditionOnline": "Richiede una connessione ad internet", + "conditionSkill": "Skills richieste", + "conditionNotSkill": "Skills che non possono essere installate contemporaneamente", + "conditionASRArbitrary": "Questa skill contiene parole che l'ASR non è addestrato a riconoscere", + "conditionActiveManager": "Devono essere avviati i seguenti gestori", + "widgets": "Widgets", + "commaSeparatedExplanation": "Una lista separata da virgole, per esempio 'foo, bar, baz'", + "createSkill": "Crea la skill", + "uploadSkillToGithub": "Carica la skill su Github", + "resetSkill": "Resetta", + "actions": "Azioni" +} \ No newline at end of file From 44e8991e45031454780d0741443e2a2429726629 Mon Sep 17 00:00:00 2001 From: vicvega83 Date: Sun, 1 Mar 2020 17:09:11 +0100 Subject: [PATCH 048/139] strings.json missing italian translation fixed --- system/manager/LanguageManager/strings.json | 33 +++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/system/manager/LanguageManager/strings.json b/system/manager/LanguageManager/strings.json index 56781fc83..be34f816e 100644 --- a/system/manager/LanguageManager/strings.json +++ b/system/manager/LanguageManager/strings.json @@ -8,6 +8,9 @@ ], "de": [ "draussen" + ], + "it": [ + "fuori" ] }, "intentSeparator": { @@ -19,6 +22,9 @@ ], "de": [ " und auch " + ], + "it": [ + "ed anche" ] }, "inThe": { @@ -39,6 +45,14 @@ "in dem ", "in Raum ", "in " + ], + "it": [ + "nella", + "nello", + "nel", + "nei", + "dentro", + "in", ] }, "everywhere": { @@ -50,6 +64,10 @@ ], "de": [ "überall" + ], + "it": [ + "dappertutto", + "ovunque" ] }, "+": { @@ -61,6 +79,9 @@ ], "de": [ "plus" + ], + "it": [ + "più" ] }, "-": { @@ -72,6 +93,9 @@ ], "de": [ "minus" + ], + "it": [ + "meno" ] }, "*": { @@ -83,6 +107,9 @@ ], "de": [ "mal" + ], + "it": [ + "per" ] }, "/": { @@ -94,6 +121,9 @@ ], "de": [ "geteilt durch" + ], + "it": [ + "diviso" ] }, "%": { @@ -105,6 +135,9 @@ ], "de": [ "modulo" + ], + "it": [ + "modulo" ] } } From 61af87c4fea466bb034d191c687d5cb6605bfe59 Mon Sep 17 00:00:00 2001 From: vicvega83 <35502338+vicvega83@users.noreply.github.com> Date: Sun, 1 Mar 2020 18:08:10 +0100 Subject: [PATCH 049/139] Update strings.json --- system/manager/LanguageManager/strings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/manager/LanguageManager/strings.json b/system/manager/LanguageManager/strings.json index be34f816e..b710296a8 100644 --- a/system/manager/LanguageManager/strings.json +++ b/system/manager/LanguageManager/strings.json @@ -24,7 +24,7 @@ " und auch " ], "it": [ - "ed anche" + " ed anche " ] }, "inThe": { From 0839561d43b23ccb4cae961c31edb3c360147cdf Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 1 Mar 2020 18:10:04 +0100 Subject: [PATCH 050/139] Added support for ps3eye thx mpbs --- ProjectAlice.advanced.yaml | 3 ++- ProjectAlice.yaml | 3 ++- core/Initializer.py | 10 +++++++++- system/asounds/ps3eye.conf | 11 +++++++++++ 4 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 system/asounds/ps3eye.conf diff --git a/ProjectAlice.advanced.yaml b/ProjectAlice.advanced.yaml index 30466d8ae..e10ab9c71 100644 --- a/ProjectAlice.advanced.yaml +++ b/ProjectAlice.advanced.yaml @@ -13,7 +13,7 @@ # # ################################################ # DON'T CHANGE ME # -version: 1.15 +version: 1.16 ################################################ # How to prevent frequent errors: @@ -62,6 +62,7 @@ audioHardware: googleAIY2: no matrixCreator: no matrixVoice: no + ps3eye: no # Capture micSampleRate: 16000 diff --git a/ProjectAlice.yaml b/ProjectAlice.yaml index b2b36da7f..796529401 100644 --- a/ProjectAlice.yaml +++ b/ProjectAlice.yaml @@ -13,7 +13,7 @@ # # ################################################ # DON'T CHANGE ME # -version: 1.15 +version: 1.16 ################################################ # How to prevent frequent errors: @@ -38,6 +38,7 @@ audioHardware: googleAIY2: no matrixCreator: no matrixVoice: no + ps3eye: no # System # Whether to install Hermes Led Control or not. HLC is the best way to manage your device leds if you have any diff --git a/core/Initializer.py b/core/Initializer.py index 0a5f194f3..e284de5f9 100644 --- a/core/Initializer.py +++ b/core/Initializer.py @@ -61,7 +61,7 @@ def __init__(self): self._confsFile = Path(self._rootDir, 'config.py') self._confsSample = Path(self._rootDir, 'configTemplate.py') self._initFile = Path('/boot/ProjectAlice.yaml') - self._latest = 1.15 + self._latest = 1.16 def initProjectAlice(self) -> bool: @@ -376,6 +376,14 @@ def initProjectAlice(self) -> bool: elif audioHardware == 'usbMic': subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'usbmic.conf'), Path('/etc/asound.conf')]) + elif audioHardware == 'ps3eye': + subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'ps3eye.conf'), Path('/etc/asound.conf')]) + asoundrc = f'/home/{getpass.getuser()}/.asoundrc' + subprocess.run(['echo', 'pcm.dsp0 {', '>', asoundrc]) + subprocess.run(['echo', ' type plug', '>>', asoundrc]) + subprocess.run(['echo', ' slave.pcm "dmix"', '>>', asoundrc]) + subprocess.run(['echo', '}', '>>', asoundrc]) + subprocess.run(['sudo', 'systemctl', 'daemon-reload']) sort = dict(sorted(confs.items())) diff --git a/system/asounds/ps3eye.conf b/system/asounds/ps3eye.conf new file mode 100644 index 000000000..3fb8f59a3 --- /dev/null +++ b/system/asounds/ps3eye.conf @@ -0,0 +1,11 @@ +pcm.!default { + type asym + playback.pcm { + type plug + slave.pcm "hw:0,0" + } + capture.pcm { + type plug + slave.pcm "hw:1,0" + } +} From f8040c283e6a5452adcc525139c671d8fcfe6e14 Mon Sep 17 00:00:00 2001 From: vicvega83 <35502338+vicvega83@users.noreply.github.com> Date: Sun, 1 Mar 2020 18:11:07 +0100 Subject: [PATCH 051/139] Update strings.json Added spaces in ``intentSeparator`` and whiteline at the end --- system/manager/LanguageManager/strings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/system/manager/LanguageManager/strings.json b/system/manager/LanguageManager/strings.json index b710296a8..88c878776 100644 --- a/system/manager/LanguageManager/strings.json +++ b/system/manager/LanguageManager/strings.json @@ -141,3 +141,4 @@ ] } } + From 1a473715af5c036483903067e33c37e30a47c72a Mon Sep 17 00:00:00 2001 From: vicvega83 <35502338+vicvega83@users.noreply.github.com> Date: Sun, 1 Mar 2020 18:14:34 +0100 Subject: [PATCH 052/139] Update strings.json --- system/manager/LanguageManager/strings.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/system/manager/LanguageManager/strings.json b/system/manager/LanguageManager/strings.json index 88c878776..e5a00e814 100644 --- a/system/manager/LanguageManager/strings.json +++ b/system/manager/LanguageManager/strings.json @@ -47,12 +47,12 @@ "in " ], "it": [ - "nella", - "nello", - "nel", - "nei", - "dentro", - "in", + "nella ", + "nello ", + "nel ", + "nei ", + "dentro ", + "in ", ] }, "everywhere": { From 7eafd18cc4386d13f0ab1061ac6fc26160602e9a Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 1 Mar 2020 18:19:03 +0100 Subject: [PATCH 053/139] Delete greetings.yml --- .github/workflows/greetings.yml | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 .github/workflows/greetings.yml diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml deleted file mode 100644 index 9eb8367d2..000000000 --- a/.github/workflows/greetings.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Greetings - -on: [pull_request, issues] - -jobs: - greeting: - runs-on: ubuntu-latest - steps: - - uses: actions/first-interaction@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - issue-message: 'Hi! Thank you for taking part in reporting issues!' - pr-message: 'Thank you for your first contribution to Project Alice' From 8e90d784758a016daefcf643339077307469301c Mon Sep 17 00:00:00 2001 From: philipp2310 <41761223+philipp2310@users.noreply.github.com> Date: Mon, 2 Mar 2020 00:18:39 +0100 Subject: [PATCH 054/139] removed stray comma --- system/manager/LanguageManager/strings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/manager/LanguageManager/strings.json b/system/manager/LanguageManager/strings.json index e5a00e814..49d365324 100644 --- a/system/manager/LanguageManager/strings.json +++ b/system/manager/LanguageManager/strings.json @@ -52,7 +52,7 @@ "nel ", "nei ", "dentro ", - "in ", + "in " ] }, "everywhere": { From ed84e5f2d0e4313afa87677891efbe38e4258019 Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 2 Mar 2020 13:19:04 +0100 Subject: [PATCH 055/139] Maybe a fix for https://github.com/project-alice-assistant/ProjectAliceSkills/issues/110 --- core/util/ContextManagers.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/util/ContextManagers.py b/core/util/ContextManagers.py index 2af16b940..625478d91 100644 --- a/core/util/ContextManagers.py +++ b/core/util/ContextManagers.py @@ -1,7 +1,7 @@ from contextlib import contextmanager -from core.base.SuperManager import SuperManager from core.ProjectAliceExceptions import OfflineError +from core.base.SuperManager import SuperManager @contextmanager @@ -11,6 +11,9 @@ def Online(): try: yield except: - if internetManager.checkOnlineState(): + if not internetManager.checkOnlineState(): raise + else: + yield + raise OfflineError From ab456111e2a6920bfb1876ab6611eb6b2cc23843 Mon Sep 17 00:00:00 2001 From: philipp2310 <41761223+philipp2310@users.noreply.github.com> Date: Mon, 2 Mar 2020 22:53:33 +0100 Subject: [PATCH 056/139] Update PocketSphinxASR.py --- core/asr/model/PocketSphinxASR.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/asr/model/PocketSphinxASR.py b/core/asr/model/PocketSphinxASR.py index bc9928fcd..ce080a2ab 100644 --- a/core/asr/model/PocketSphinxASR.py +++ b/core/asr/model/PocketSphinxASR.py @@ -114,6 +114,7 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: super().decodeStream(session) result = None + counter = 0 with Stopwatch() as processingTime: with Recorder(self._timeout) as recorder: self.ASRManager.addRecorder(session.siteId, recorder) @@ -125,6 +126,12 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: break self._decoder.process_raw(chunk, False, False) + hypothesis = self._decoder.hyp() + if hypothesis: + counter += 1 + if counter == 10: + self.partialTextCaptured(session, hypothesis.hypstr, hypothesis.prob, processingTime.time) + counter = 0 if self._decoder.get_in_speech() != inSpeech: inSpeech = self._decoder.get_in_speech() if not inSpeech: From b308845927f521216b09849b28a54a007264e2f0 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 3 Mar 2020 18:46:39 +0100 Subject: [PATCH 057/139] Dynamic probability threshold --- core/base/model/AliceSkill.py | 8 ++++---- core/dialog/model/DialogSession.py | 27 +++++++++++++++++---------- core/server/MqttManager.py | 29 +++++++++++++++++------------ 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/core/base/model/AliceSkill.py b/core/base/model/AliceSkill.py index 77303ed25..8035442f3 100644 --- a/core/base/model/AliceSkill.py +++ b/core/base/model/AliceSkill.py @@ -507,16 +507,16 @@ def say(self, text: str, siteId: str = constants.DEFAULT_SITE_ID, customData: di self.MqttManager.say(text=text, client=siteId, customData=customData, canBeEnqueued=canBeEnqueued) - def ask(self, text: str, siteId: str = constants.DEFAULT_SITE_ID, intentFilter: list = None, customData: dict = None, previousIntent: str = '', canBeEnqueued: bool = True, currentDialogState: str = ''): + def ask(self, text: str, siteId: str = constants.DEFAULT_SITE_ID, intentFilter: list = None, customData: dict = None, previousIntent: str = '', canBeEnqueued: bool = True, currentDialogState: str = '', probabilityThreshold: float = None): if currentDialogState: currentDialogState = f'{self.name}:{currentDialogState}' - self.MqttManager.ask(text=text, client=siteId, intentFilter=intentFilter, customData=customData, previousIntent=previousIntent, canBeEnqueued=canBeEnqueued, currentDialogState=currentDialogState) + self.MqttManager.ask(text=text, client=siteId, intentFilter=intentFilter, customData=customData, previousIntent=previousIntent, canBeEnqueued=canBeEnqueued, currentDialogState=currentDialogState, probabilityThreshold=probabilityThreshold) - def continueDialog(self, sessionId: str, text: str, customData: dict = None, intentFilter: list = None, previousIntent: str = '', slot: str = '', currentDialogState: str = ''): + def continueDialog(self, sessionId: str, text: str, customData: dict = None, intentFilter: list = None, previousIntent: str = '', slot: str = '', currentDialogState: str = '', probabilityThreshold: float = None): if currentDialogState: currentDialogState = f'{self.name}:{currentDialogState}' - self.MqttManager.continueDialog(sessionId=sessionId, text=text, customData=customData, intentFilter=intentFilter, previousIntent=str(previousIntent), slot=slot, currentDialogState=currentDialogState) + self.MqttManager.continueDialog(sessionId=sessionId, text=text, customData=customData, intentFilter=intentFilter, previousIntent=str(previousIntent), slot=slot, currentDialogState=currentDialogState, probabilityThreshold=probabilityThreshold) def endDialog(self, sessionId: str = '', text: str = '', siteId: str = ''): diff --git a/core/dialog/model/DialogSession.py b/core/dialog/model/DialogSession.py index b74634850..4bed404de 100644 --- a/core/dialog/model/DialogSession.py +++ b/core/dialog/model/DialogSession.py @@ -5,6 +5,7 @@ from paho.mqtt.client import MQTTMessage +from core.base.SuperManager import SuperManager from core.base.model import Intent from core.commons import constants @@ -20,6 +21,7 @@ class DialogSession: currentState: str = constants.DEFAULT isAPIGenerated: bool = False hasEnded: bool = False + probabilityThreshold: float = 0.5 slots: dict = field(default_factory=dict) slotsAsObjects: dict = field(default_factory=dict) customData: dict = field(default_factory=dict) @@ -28,27 +30,31 @@ class DialogSession: intentFilter: list = field(default_factory=list) + def __post_init__(self): + self.probabilityThreshold = SuperManager.getInstance().configManager.getAliceConfigByName('probabilityThreshold') + + def extend(self, message: MQTTMessage, sessionId: str = None): if sessionId: self.sessionId = sessionId - from core.commons.CommonsManager import CommonsManager + commonsManager = SuperManager.getInstance().commonsManager self.message = message self.intentName = message.topic - self.payload = CommonsManager.payload(message) - self.slots = CommonsManager.parseSlots(message) - self.slotsAsObjects = CommonsManager.parseSlotsToObjects(message) - self.customData = CommonsManager.parseCustomData(message) + self.payload = commonsManager.payload(message) + self.slots = commonsManager.parseSlots(message) + self.slotsAsObjects = commonsManager.parseSlotsToObjects(message) + self.customData = commonsManager.parseCustomData(message) def update(self, message: MQTTMessage): - from core.commons.CommonsManager import CommonsManager + commonsManager = SuperManager.getInstance().commonsManager self.message = message self.intentName = message.topic - self.payload = CommonsManager.payload(message) - self.slots.update(CommonsManager.parseSlots(message)) - self.slotsAsObjects.update(CommonsManager.parseSlotsToObjects(message)) - self.customData.update(CommonsManager.parseCustomData(message)) + self.payload = commonsManager.payload(message) + self.slots.update(commonsManager.parseSlots(message)) + self.slotsAsObjects.update(commonsManager.parseSlotsToObjects(message)) + self.customData.update(commonsManager.parseCustomData(message)) def reviveOldSession(self, session: DialogSession): @@ -68,6 +74,7 @@ def reviveOldSession(self, session: DialogSession): self.notUnderstood = session.notUnderstood self.currentState = session.currentState self.isAPIGenerated = session.isAPIGenerated + self.probabilityThreshold = session.probabilityThreshold def slotValue(self, slotName: str, index: int = 0, defaultValue: Any = None) -> Any: diff --git a/core/server/MqttManager.py b/core/server/MqttManager.py index bda9f8717..7089e6ea6 100644 --- a/core/server/MqttManager.py +++ b/core/server/MqttManager.py @@ -186,13 +186,16 @@ def onMqttMessage(self, client, userdata, message: mqtt.MQTTMessage): if redQueen and not redQueen.inTheMood(session): return - if 'intent' in payload and payload['intent']['confidenceScore'] < self.ConfigManager.getAliceConfigByName('probabilityThreshold'): + self.logDebug(f'Using probability threshold of {session.probabilityThreshold}') + + if 'intent' in payload and float(payload['intent']['confidenceScore']) < session.probabilityThreshold: if session.notUnderstood < self.ConfigManager.getAliceConfigByName('notUnderstoodRetries'): session.notUnderstood = session.notUnderstood + 1 self.continueDialog( sessionId=sessionId, - text=self.TalkManager.randomTalk('notUnderstood', skill='system') + text=self.TalkManager.randomTalk('notUnderstood', skill='system'), + probabilityThreshold=session.probabilityThreshold ) else: session.notUnderstood = 0 @@ -213,10 +216,6 @@ def onMqttMessage(self, client, userdata, message: mqtt.MQTTMessage): # The command was recognized but required higher access level return - # Authentication might end the session directly from a skill - # if not self.DialogSessionManager.getSession(sessionId): - # return - if self.MultiIntentManager.isProcessing(sessionId): self.MultiIntentManager.processNextIntent(sessionId) return @@ -233,7 +232,6 @@ def onMqttMessage(self, client, userdata, message: mqtt.MQTTMessage): sessionId=sessionId, text=self.TalkManager.randomTalk('notUnderstood', skill='system') ) - return else: session.notUnderstood = 0 self.endDialog( @@ -510,18 +508,19 @@ def say(self, text, client: str = constants.DEFAULT_SITE_ID, customData: dict = else: self._speakOnSonos(text, client) self._mqttClient.publish(constants.TOPIC_START_SESSION, json.dumps({ - 'siteId': client, - 'init': { - 'type': 'notification', + 'siteId' : client, + 'init' : { + 'type' : 'notification', 'sendIntentNotRecognized': True }, 'customData': customData })) - def ask(self, text: str, client: str = constants.DEFAULT_SITE_ID, intentFilter: list = None, customData: dict = None, previousIntent: str = '', canBeEnqueued: bool = True, currentDialogState: str = ''): + def ask(self, text: str, client: str = constants.DEFAULT_SITE_ID, intentFilter: list = None, customData: dict = None, previousIntent: str = '', canBeEnqueued: bool = True, currentDialogState: str = '', probabilityThreshold: float = None): """ Initiates a new session by asking something and waiting on user answer + :param probabilityThreshold: The override threshold for the user's answer to this question :param currentDialogState: a str representing a state in the dialog, usefull for multiturn dialogs :param canBeEnqueued: wheter or not this can be played later if the dialog manager is busy :param previousIntent: the previous intent that triggered the method, if available @@ -549,6 +548,9 @@ def ask(self, text: str, client: str = constants.DEFAULT_SITE_ID, intentFilter: if currentDialogState: preSession.currentState = currentDialogState + if probabilityThreshold is not None: + preSession.probabilityThreshold = probabilityThreshold + if client == constants.ALL: if not customData: customData = dict() @@ -593,9 +595,10 @@ def ask(self, text: str, client: str = constants.DEFAULT_SITE_ID, intentFilter: self._speakOnSonos(text, client) - def continueDialog(self, sessionId: str, text: str, customData: dict = None, intentFilter: list = None, previousIntent: str = '', slot: str = '', currentDialogState: str = ''): + def continueDialog(self, sessionId: str, text: str, customData: dict = None, intentFilter: list = None, previousIntent: str = '', slot: str = '', currentDialogState: str = '', probabilityThreshold: float = None): """ Continues a dialog + :param probabilityThreshold: The probability threshold override for the user's answer to this coming conversation round :param currentDialogState: a str representing a state in the dialog, usefull for multiturn dialogs :param sessionId: int session id to continue :param customData: json str @@ -637,6 +640,8 @@ def continueDialog(self, sessionId: str, text: str, customData: dict = None, int session = self.DialogSessionManager.getSession(sessionId=sessionId) session.intentFilter = intentFilter + if probabilityThreshold is not None: + session.probabilityThreshold = probabilityThreshold if currentDialogState: session.currentState = currentDialogState From 20618ed28b11bf1f6ff0fc455c5af35c438e9220 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 3 Mar 2020 19:07:36 +0100 Subject: [PATCH 058/139] Refactor pocketsphinx, supports any languages --- core/asr/model/PocketSphinxASR.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/core/asr/model/PocketSphinxASR.py b/core/asr/model/PocketSphinxASR.py index ce080a2ab..3a91ee756 100644 --- a/core/asr/model/PocketSphinxASR.py +++ b/core/asr/model/PocketSphinxASR.py @@ -29,22 +29,10 @@ class PocketSphinxASR(ASR): ] } - LANGUAGE_PACKS = { - 'en': [ - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/en-us/en-us.tar', - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/en-us/en-us.lm.bin', - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/en-us/cmudict-en-us.dict' - ], - 'fr': [ - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/fr-fr/fr-fr.tar', - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/fr-fr/fr-fr.lm.bin', - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/fr-fr/cmudict-fr-fr.dict' - ], - 'de': [ - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/de-de/de-de.tar', - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/de-de/de-de.lm.bin', - f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/de-de/cmudict-de-de.dict' - ] + LANGUAGE_PACK = { + f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/%lang%/%lang%.tar', + f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/%lang%/%lang%.lm.bin', + f'{constants.GITHUB_URL}/cmusphinx-models/blob/master/%lang%/cmudict-%lang%.dict' } @@ -90,7 +78,8 @@ def downloadLanguage(self) -> bool: self.logInfo(f'Downloading language model for "{self.LanguageManager.activeLanguage}"') venv = Path(self.Commons.rootDir(), 'venv/lib/python3.7/site-packages/pocketsphinx/') - for url in self.LANGUAGE_PACKS[self.LanguageManager.activeLanguage]: + for url in self.LANGUAGE_PACK: + url = url.replace('%lang%', self.LanguageManager.activeLanguageAndCountryCode.lower()) filename = Path(url).name download = Path(venv, 'model', filename) self.Commons.downloadFile(url=f'{url}?raw=true', dest=str(download)) From 3b5399101ed2991cf1a1b7e13cd1e4e4fa632fc4 Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 3 Mar 2020 21:04:31 +0100 Subject: [PATCH 059/139] Interface also add category to skills when creating --- core/base/SkillManager.py | 1 + 1 file changed, 1 insertion(+) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index ce2fcaef8..f4d5fc056 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -764,6 +764,7 @@ def createNewSkill(self, skillDefinition: dict) -> bool: 'name' : skillName, 'version' : '0.0.1', 'icon' : 'fab fa-battle-net', + 'category' : 'undefined', 'author' : self.ConfigManager.getAliceConfigByName('githubUsername'), 'maintainers' : [], 'desc' : skillDefinition['description'].capitalize(), From 37807f5a167d12144766b481defd7e7390cc519f Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 4 Mar 2020 15:42:58 +0100 Subject: [PATCH 060/139] Laying the bases for DeepSpeech. Not ready for us, need a way to implement VAD --- configTemplate.py | 2 +- core/asr/ASRManager.py | 2 + core/asr/model/DeepSpeechASR.py | 116 ++++++++++++++++++++++++++++++++ core/asr/model/GoogleASR.py | 16 +++-- core/base/model/AliceSkill.py | 1 + 5 files changed, 129 insertions(+), 8 deletions(-) create mode 100644 core/asr/model/DeepSpeechASR.py diff --git a/configTemplate.py b/configTemplate.py index 1b75b2e2a..f24e40d04 100644 --- a/configTemplate.py +++ b/configTemplate.py @@ -112,7 +112,7 @@ 'asr': { 'defaultValue': 'pocketsphinx', 'dataType' : 'list', - 'values' : ['pocketsphinx', 'google'], + 'values' : ['deepspeech', 'pocketsphinx', 'google'], 'description' : 'The ASR to use. Can\'t use an online ASR if you have set keepASROffline to true!', 'onUpdate' : 'reloadASR' }, diff --git a/core/asr/ASRManager.py b/core/asr/ASRManager.py index 29a595976..bbe3a3698 100644 --- a/core/asr/ASRManager.py +++ b/core/asr/ASRManager.py @@ -42,6 +42,8 @@ def _startASREngine(self): if userASR == 'google': package = 'core.asr.model.GoogleASR' + elif userASR == 'deepspeech': + package = 'core.asr.model.DeepSpeechASR' else: package = 'core.asr.model.PocketSphinxASR' diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py new file mode 100644 index 000000000..9a1f53c86 --- /dev/null +++ b/core/asr/model/DeepSpeechASR.py @@ -0,0 +1,116 @@ +from pathlib import Path +from typing import Generator, Optional + +import numpy as np +import tarfile + +from core.asr.model.ASR import ASR +from core.asr.model.ASRResult import ASRResult +from core.asr.model.Recorder import Recorder +from core.dialog.model.DialogSession import DialogSession +from core.util.Stopwatch import Stopwatch + +try: + import deepspeech + import webrtcvad +except: + pass + + +class DeepSpeechASR(ASR): + NAME = 'DeepSpeech ASR' + DEPENDENCIES = { + 'system': [], + 'pip' : { + 'deepspeech==0.6.1', + 'webrtcvad==2.0.10' + } + } + + + def __init__(self): + super().__init__() + self._capableOfArbitraryCapture = True + self._isOnlineASR = False + + self._model: Optional[deepspeech.Model] = None + self._vad: Optional[webrtcvad.Vad] = None + + + def onStart(self): + super().onStart() + self._model = deepspeech.Model('/home/pi/deepspeech-0.6.1-models/output_graph.tflite', 500) + self._model.enableDecoderWithLM('/home/pi/deepspeech-0.6.1-models/lm.binary', '/home/pi/deepspeech-0.6.1-models/trie', 0.75, 1.85) + self._vad = webrtcvad.Vad() + self._vad.set_mode(1) + + + def install(self) -> bool: + super().install() + try: + url = 'https://github.com/mozilla/DeepSpeech/releases/download/v0.6.1/deepspeech-0.6.1-models.tar.gz' + self.Commons.downloadFile(url, str(Path(self.Commons.rootDir(), 'var/voices', url.rsplit('/')[-1]))) + tar = tarfile.open(str(Path(self.Commons.rootDir(), url.rsplit('/')[-1]))) + tar.extractall() + return True + except Exception as e: + self.logError(f'Error installing dependencies: {e}') + return False + + + def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: + super().decodeStream(session) + with Stopwatch() as processingTime: + with Recorder(self._timeout) as recorder: + self.ASRManager.addRecorder(session.siteId, recorder) + self._recorder = recorder + streamContext = self._model.createStream() + i = 0 + prevResult = '' + for chunk in recorder: + if self._timeout.isSet(): + break + + self._model.feedAudioContent(streamContext, np.frombuffer(chunk, np.int16)) + + result = self._model.intermediateDecode(streamContext) + self.partialTextCaptured(session=session, text=result, likelihood=1, seconds=0) + + # TODO implement VAD instead of this + if result and result == prevResult: + i += 1 + if i > 25: + break + else: + prevResult = result + i = 0 + + text = self._model.finishStream(streamContext) + self.end(session) + + return ASRResult( + text=text, + session=session, + likelihood=1.0, + processingTime=processingTime.time + ) if result else None + + + def _checkResponses(self, session: DialogSession, responses: Generator) -> Optional[tuple]: + if responses is None: + return None + + for response in responses: + if not response.results: + continue + + result = response.results[0] + if not result.alternatives: + continue + + if result.is_final: + return result.alternatives[0].transcript, result.alternatives[0].confidence + else: + self.partialTextCaptured(session=session, text=result.alternatives[0].transcript, likelihood=result.alternatives[0].confidence, seconds=0) + + return None diff --git a/core/asr/model/GoogleASR.py b/core/asr/model/GoogleASR.py index 6cbf29b82..566e68530 100644 --- a/core/asr/model/GoogleASR.py +++ b/core/asr/model/GoogleASR.py @@ -7,6 +7,7 @@ from core.asr.model.ASRResult import ASRResult from core.asr.model.Recorder import Recorder from core.dialog.model.DialogSession import DialogSession +from core.util.Stopwatch import Stopwatch try: from google.cloud.speech import SpeechClient, enums, types @@ -53,19 +54,20 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: recorder = Recorder(self._timeout) self.ASRManager.addRecorder(session.siteId, recorder) self._recorder = recorder - with recorder as stream: - audioStream = stream.audioStream() - requests = (types.StreamingRecognizeRequest(audio_content=content) for content in audioStream) - responses = self._client.streaming_recognize(self._streamingConfig, requests) - result = self._checkResponses(session, responses) + with Stopwatch() as processingTime: + with recorder as stream: + audioStream = stream.audioStream() + requests = (types.StreamingRecognizeRequest(audio_content=content) for content in audioStream) + responses = self._client.streaming_recognize(self._streamingConfig, requests) + result = self._checkResponses(session, responses) - self.end(session) + self.end(session) return ASRResult( text=result[0], session=session, likelihood=result[1], - processingTime=10 + processingTime=processingTime.time ) if result else None diff --git a/core/base/model/AliceSkill.py b/core/base/model/AliceSkill.py index 8035442f3..bc55adee0 100644 --- a/core/base/model/AliceSkill.py +++ b/core/base/model/AliceSkill.py @@ -37,6 +37,7 @@ def __init__(self, supportedIntents: Iterable = None, databaseSchema: dict = Non self._author = self._install['author'] self._version = self._install['version'] self._icon = self._install['icon'] + self._category = self._install['category'] if 'category' in self._install else 'undefined' self._updateAvailable = False self._active = True self._delayed = False From e8eb757f62995a0705eb355c889f9c3bf1bdc2f0 Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 4 Mar 2020 22:25:49 +0100 Subject: [PATCH 061/139] Widget lang file creation fix --- core/base/SkillManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index f4d5fc056..03441e1b5 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -802,7 +802,7 @@ def createNewSkill(self, skillDefinition: dict) -> bool: widgetRootDir = skillDir / 'widgets' css = widgetRootDir / 'css/widget.css' js = widgetRootDir / 'js/widget.js' - lang = widgetRootDir / 'lang/widget.json' + lang = widgetRootDir / 'lang/widget.lang.json' html = widgetRootDir / 'templates/widget.html' python = widgetRootDir / 'widget.py' @@ -816,7 +816,7 @@ def createNewSkill(self, skillDefinition: dict) -> bool: fp.write(content) shutil.copy(str(js), str(js).replace('widget.js', f'{widgetName}.js')) - shutil.copy(str(lang), str(lang).replace('widget.json', f'{widgetName}.json')) + shutil.copy(str(lang), str(lang).replace('widget.lang.json', f'{widgetName}.lang.json')) content = html.read_text().replace('%widgetname%', widgetName) with Path(widgetRootDir, f'templates/{widgetName}.html').open('w+') as fp: From e0528d557bfd25e24ce26dbcde37c6eede663376 Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 4 Mar 2020 22:28:32 +0100 Subject: [PATCH 062/139] Fix some logic --- core/base/SkillManager.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 03441e1b5..9eae73710 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -414,17 +414,17 @@ def _checkForSkillInstall(self): self._activeSkills = self._loadSkillList(skillToLoad=skillName, isUpdate=info['update']) self._allSkills = {**self._allSkills, **self._activeSkills} - if info['update']: - self._allSkills[skillName].onSkillUpdated() - else: - self._allSkills[skillName].onSkillInstalled() - try: self.LanguageManager.loadStrings(skillToLoad=skillName) self.TalkManager.loadTalks(skillToLoad=skillName) except: pass + if info['update']: + self._allSkills[skillName].onSkillUpdated() + else: + self._allSkills[skillName].onSkillInstalled() + self.SnipsAssistantManager.train() self.DialogTemplateManager.afterNewSkillInstall() self.NluManager.afterNewSkillInstall() From a1a377211bcd333926e532162aa13c76ccca59bf Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 5 Mar 2020 00:11:05 +0100 Subject: [PATCH 063/139] Remove TTS temp mp3 file after conversion --- core/voice/model/AmazonTTS.py | 1 + core/voice/model/GoogleTTS.py | 1 + 2 files changed, 2 insertions(+) diff --git a/core/voice/model/AmazonTTS.py b/core/voice/model/AmazonTTS.py index f81357956..44a9a96dc 100644 --- a/core/voice/model/AmazonTTS.py +++ b/core/voice/model/AmazonTTS.py @@ -219,5 +219,6 @@ def onSay(self, session: DialogSession): tmpFile.write_bytes(response['AudioStream'].read()) self._mp3ToWave(src=tmpFile, dest=self._cacheFile) + tmpFile.unlink() self._speak(self._cacheFile, session) diff --git a/core/voice/model/GoogleTTS.py b/core/voice/model/GoogleTTS.py index 6fb8a13f4..96a302d4d 100644 --- a/core/voice/model/GoogleTTS.py +++ b/core/voice/model/GoogleTTS.py @@ -159,5 +159,6 @@ def onSay(self, session: DialogSession): tmpFile.write_bytes(response.audio_content) self._mp3ToWave(src=tmpFile, dest=self._cacheFile) + tmpFile.unlink() self._speak(self._cacheFile, session) From f68939cfbcf67c3258cfbc85d14e754ef49449f6 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 5 Mar 2020 14:29:25 +0100 Subject: [PATCH 064/139] New first boot dialog flow. Adding user and wakeword through admin. Added admin user, admin pin support --- ProjectAlice.advanced.yaml | 3 +++ ProjectAlice.yaml | 3 +++ configTemplate.py | 7 +++++++ core/Initializer.py | 10 ++++++++++ core/base/ConfigManager.py | 31 +++++++++++++++++++++++++++++ core/commons/CommonsManager.py | 27 +++++++++++++++---------- core/interface/languages/de.json | 4 +++- core/interface/languages/en.json | 6 ++++-- core/interface/languages/fr.json | 4 +++- core/interface/languages/it.json | 6 ++++-- core/interface/static/js/admin.js | 10 ++++++++++ core/interface/templates/admin.html | 12 +++++++++++ core/interface/views/AdminView.py | 23 +++++++++++++++++++++ core/voice/WakewordManager.py | 2 +- 14 files changed, 130 insertions(+), 18 deletions(-) diff --git a/ProjectAlice.advanced.yaml b/ProjectAlice.advanced.yaml index e10ab9c71..511e34706 100644 --- a/ProjectAlice.advanced.yaml +++ b/ProjectAlice.advanced.yaml @@ -32,6 +32,9 @@ keepYAMLBackup: no installOnBuster: yes # Base configs +# Set the admin pin code. This code will allow you to access the interface. Only numbers, 4 digits +adminPinCode: 1234 + # Enter Wifi credentials for automatic adding of tasmota/zigbee/netatmo devices even when Alice has wired access useWifi: yes wifiNetworkName: diff --git a/ProjectAlice.yaml b/ProjectAlice.yaml index 796529401..3cb59f58c 100644 --- a/ProjectAlice.yaml +++ b/ProjectAlice.yaml @@ -20,6 +20,9 @@ version: 1.16 # Always add a space after the ":" (e.g. deviceName: default instead of deviceName:default) # Base configs +# Set the admin pin code. This code will allow you to access the interface. Only numbers, 4 digits +adminPinCode: 1234 + # Enter Wifi credentials for automatic adding of tasmota/zigbee/netatmo devices even when Alice has wired access useWifi: yes wifiNetworkName: diff --git a/configTemplate.py b/configTemplate.py index f24e40d04..454ec3511 100644 --- a/configTemplate.py +++ b/configTemplate.py @@ -1,4 +1,11 @@ settings = { + 'adminPinCode': { + 'defaultValue': '', + 'dataType' : 'password', + 'description' : 'Admin pin code, only numbers, 4 digits', + 'beforeUpdate': 'checkNewAdminPinCode', + 'onUpdate' : 'updateAdminPinCode' + }, 'autoReportSkillErrors': { 'defaultValue': False, 'dataType': 'boolean', diff --git a/core/Initializer.py b/core/Initializer.py index e284de5f9..929daccff 100644 --- a/core/Initializer.py +++ b/core/Initializer.py @@ -192,6 +192,16 @@ def initProjectAlice(self) -> bool: confs['mqttHost'] = str(initConfs['mqttHost']) or 'localhost' confs['mqttPort'] = initConfs['mqttPort'] or 1883 + pinCode = initConfs['adminPinCode'] + try: + pin = int(pinCode) + if len(str(pin)) != 4: + raise + except: + self.logFatal('Pin code must be 4 digits') + + confs['adminPinCode'] = pinCode + confs['stayCompletlyOffline'] = bool(initConfs['stayCompletlyOffline']) if initConfs['stayCompletlyOffline']: confs['keepASROffline'] = True diff --git a/core/base/ConfigManager.py b/core/base/ConfigManager.py index 0c00d7ebd..882429cb9 100644 --- a/core/base/ConfigManager.py +++ b/core/base/ConfigManager.py @@ -476,11 +476,26 @@ def isAliceConfHidden(self, confName: str) -> bool: self._aliceTemplateConfigurations.get('display') == 'hidden' + def getAliceConfUpdatePreProcessing(self, confName: str) -> typing.Optional[str]: + # Some config need some pre processing to run some checks before saving + return self._aliceTemplateConfigurations.get(confName, dict()).get('beforeUpdate') + + def getAliceConfUpdatePostProcessing(self, confName: str) -> typing.Optional[str]: # Some config need some post processing if updated while Alice is running return self._aliceTemplateConfigurations.get(confName, dict()).get('onUpdate') + def doConfigUpdatePreProcessing(self, function: str, value: typing.Any) -> bool: + # Call alice config pre processing functions. + try: + func = getattr(self, function) + return func(value) + except: + self.logWarning(f'Configuration pre processing method "{function}" does not exist') + return False + + def doConfigUpdatePostProcessing(self, functions: set): # Call alice config post processing functions. This will call methods that are needed after a certain setting was # updated while Project Alice was running @@ -510,6 +525,22 @@ def reloadASR(self): self.ASRManager.onStart() + def checkNewAdminPinCode(self, pinCode: str) -> bool: + try: + pin = int(pinCode) + if len(str(pin)) != 4: + raise + + return True + except: + self.logWarning('Pin code must be 4 digits') + return False + + + def updateAdminPinCode(self): + self.UserManager.addUserPinCode('admin', self.getAliceConfigByName('adminPinCode')) + + def refreshStoreData(self): self.SkillStoreManager.refreshStoreData() diff --git a/core/commons/CommonsManager.py b/core/commons/CommonsManager.py index 5fbc60841..5ad63c8fe 100644 --- a/core/commons/CommonsManager.py +++ b/core/commons/CommonsManager.py @@ -188,29 +188,29 @@ def getDuration(session: DialogSession) -> int: @classmethod - def toCamelCase(cls, string: str, replaceSepCharacters: bool = False, sepCharacters: tuple = None) -> str: - join = cls.toPascalCase(string, replaceSepCharacters, sepCharacters) + def toCamelCase(cls, theString: str, replaceSepCharacters: bool = False, sepCharacters: tuple = None) -> str: + join = cls.toPascalCase(theString, replaceSepCharacters, sepCharacters) return join[0].lower() + join[1:] @staticmethod - def toPascalCase(string: str, replaceSepCharacters: bool = False, sepCharacters: tuple = None) -> str: + def toPascalCase(theString: str, replaceSepCharacters: bool = False, sepCharacters: tuple = None) -> str: if replaceSepCharacters: for char in sepCharacters or ('-', '_'): - string = string.replace(char, ' ') + theString = theString.replace(char, ' ') - return ''.join(x.capitalize() for x in string.split(' ')) + return ''.join(x.capitalize() for x in theString.split(' ')) @staticmethod - def isSpelledWord(string: str) -> bool: + def isSpelledWord(theString: str) -> bool: """ Empirical way to check if a string is something spelled by the user by counting the theoretical length of the string against its theoretical spelled length - :param string: string to check + :param theString: string to check :return: bool """ - return len(string) == (len(string.replace(' ', '').strip()) * 2) - 1 + return len(theString) == (len(theString.replace(' ', '').strip()) * 2) - 1 def cleanRoomNameToSiteId(self, roomName: str) -> str: @@ -244,9 +244,9 @@ def getLocalIp() -> str: @staticmethod - def indexOf(sub: str, string: str) -> int: + def indexOf(sub: str, theString: str) -> int: try: - return string.index(sub) + return theString.index(sub) except ValueError: return -1 @@ -321,9 +321,14 @@ def fileChecksum(file: Path) -> str: @staticmethod def randomString(length: int) -> str: chars = string.ascii_letters + string.digits - return ''.join(random.choice(chars) for i in range(length)) + return ''.join(random.choice(chars) for _ in range(length)) + def randomNumber(self, length: int) -> int: + digits = string.digits + number = ''.join(random.choice(digits) for _ in range(length)) + return int(number) if not number.startswith('0') else self.randomNumber(length) + # noinspection PyUnusedLocal def py_error_handler(filename, line, function, err, fmt): pass diff --git a/core/interface/languages/de.json b/core/interface/languages/de.json index 5c31d0073..4de23730e 100644 --- a/core/interface/languages/de.json +++ b/core/interface/languages/de.json @@ -45,5 +45,7 @@ "createSkill": "Erstelle den Skill", "uploadSkillToGithub": "Den Skill auf Github hochladen", "resetSkill": "Reset", - "actions": "Actions" + "actions": "Actions", + "addUser": "Neue Benutzer", + "addWakeword": "Neue Wakeword" } diff --git a/core/interface/languages/en.json b/core/interface/languages/en.json index 4be87fab0..58a77e581 100644 --- a/core/interface/languages/en.json +++ b/core/interface/languages/en.json @@ -11,7 +11,7 @@ "enable": "enable", "disable": "disable", "delete": "delete", - "updatee": "update", + "updatee": "Update", "addWidgetTitle": "Available widgets", "viewIntents": "View intents", "skillSettings": "Skill settings", @@ -45,5 +45,7 @@ "createSkill": "Create the skill", "uploadSkillToGithub": "Upload the skill to Github", "resetSkill": "Reset", - "actions": "Actions" + "actions": "Actions", + "addUser": "Add user", + "addWakeword": "Add wakeword" } diff --git a/core/interface/languages/fr.json b/core/interface/languages/fr.json index b297856f1..fc515d699 100644 --- a/core/interface/languages/fr.json +++ b/core/interface/languages/fr.json @@ -45,5 +45,7 @@ "createSkill": "Créer le skill", "uploadSkillToGithub": "Uploader le skill sur Github", "resetSkill": "Reset", - "actions": "Actions" + "actions": "Actions", + "addUser": "Ajouter utilisateur", + "addWakeword": "Ajouter wakeword" } diff --git a/core/interface/languages/it.json b/core/interface/languages/it.json index c970d4601..484bfa24c 100644 --- a/core/interface/languages/it.json +++ b/core/interface/languages/it.json @@ -45,5 +45,7 @@ "createSkill": "Crea la skill", "uploadSkillToGithub": "Carica la skill su Github", "resetSkill": "Resetta", - "actions": "Azioni" -} \ No newline at end of file + "actions": "Azioni", + "addUser": "Nuovo utente", + "addWakeword": "Add wakeword" +} diff --git a/core/interface/static/js/admin.js b/core/interface/static/js/admin.js index f16b77b03..40172cb24 100644 --- a/core/interface/static/js/admin.js +++ b/core/interface/static/js/admin.js @@ -102,4 +102,14 @@ $(function () { handleUtilityClick($(this), 'updatee', 5000); return false; }); + + $('#addUser').on('click touchstart', function () { + handleUtilityClick($(this), 'addUser', 1000); + return false; + }); + + $('#addWakeword').on('click touchstart', function () { + handleUtilityClick($(this), 'addWakeword', 1000); + return false; + }); }); diff --git a/core/interface/templates/admin.html b/core/interface/templates/admin.html index 8add50951..cdb2c207e 100644 --- a/core/interface/templates/admin.html +++ b/core/interface/templates/admin.html @@ -96,6 +96,18 @@
{{ langData.updatee }}
+
+
+ +
+
{{ langData.addUser }}
+
+
+
+ +
+
{{ langData.addWakeword }}
+
diff --git a/core/interface/views/AdminView.py b/core/interface/views/AdminView.py index 87747ea9d..490ef7c04 100644 --- a/core/interface/views/AdminView.py +++ b/core/interface/views/AdminView.py @@ -41,6 +41,11 @@ def saveAliceSettings(self): if value == self.ConfigManager.getAliceConfigByName(conf): continue + pre = self.ConfigManager.getAliceConfUpdatePreProcessing(conf) + if pre: + if not self.ConfigManager.doConfigUpdatePreProcessing(pre, value): + continue + pp = self.ConfigManager.getAliceConfUpdatePostProcessing(conf) if pp: postProcessing.add(pp) @@ -101,6 +106,24 @@ def updatee(self) -> dict: return jsonify(success=False) + def addUser(self) -> dict: + try: + self.SkillManager.getSkillInstance('AliceCore').addNewUser() + return jsonify(success=True) + except Exception as e: + self.logError(f'Failed adding new user: {e}') + return jsonify(success=False) + + + def addWakeword(self) -> dict: + try: + self.SkillManager.getSkillInstance('AliceCore').addNewWakeword() + return jsonify(success=True) + except Exception as e: + self.logError(f'Failed adding new wakeword: {e}') + return jsonify(success=False) + + def wipeAll(self) -> dict: try: self.ProjectAlice.wipeAll() diff --git a/core/voice/WakewordManager.py b/core/voice/WakewordManager.py index 0f8e3f437..462e89fe2 100644 --- a/core/voice/WakewordManager.py +++ b/core/voice/WakewordManager.py @@ -166,7 +166,7 @@ def _workAudioFile(self): def trimMore(self): - self._threshold += 2 + self._threshold += 3 self._workAudioFile() From 051d13a27ea00bd8952bde58b226bd348f132e78 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 5 Mar 2020 15:10:57 +0100 Subject: [PATCH 065/139] Fix skill update for devs --- core/base/model/GithubCloner.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/base/model/GithubCloner.py b/core/base/model/GithubCloner.py index 3408c5318..c63be9f6d 100644 --- a/core/base/model/GithubCloner.py +++ b/core/base/model/GithubCloner.py @@ -30,6 +30,7 @@ def clone(self, skillName: str) -> bool: else: if Path(self._dest / '.git').exists(): self.Commons.runSystemCommand(['git', '-C', str(self._dest), 'stash']) + self.Commons.runSystemCommand(['git', '-C', str(self._dest), 'clean', '-df']) else: shutil.rmtree(str(self._dest)) self._dest.mkdir(parents=True) @@ -43,7 +44,7 @@ def _doClone(self, skillName: str) -> bool: self.Commons.runSystemCommand(['git', '-C', str(self._dest), 'init']) self.Commons.runSystemCommand(['git', '-C', str(self._dest), 'remote', 'add', 'origin', self._baseUrl]) - self.Commons.runSystemCommand(['git', '-C', str(self._dest), 'pull']) + self.Commons.runSystemCommand(['git', '-C', str(self._dest), 'pull', 'origin', 'master']) self.Commons.runSystemCommand(['git', '-C', str(self._dest), 'checkout', self.SkillStoreManager.getSkillUpdateTag(skillName)]) return True From 4079bdd06c86b807485ba3ec821892684d942900 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 5 Mar 2020 16:47:00 +0100 Subject: [PATCH 066/139] Including mqtt to the interface --- core/interface/static/js/common.js | 54 ++++++++++++++++++ core/interface/static/js/mqttws31.min.js | 72 ++++++++++++++++++++++++ core/interface/templates/base.html | 2 + core/interface/views/IndexView.py | 8 +++ 4 files changed, 136 insertions(+) create mode 100644 core/interface/static/js/common.js create mode 100644 core/interface/static/js/mqttws31.min.js diff --git a/core/interface/static/js/common.js b/core/interface/static/js/common.js new file mode 100644 index 000000000..0292b9a34 --- /dev/null +++ b/core/interface/static/js/common.js @@ -0,0 +1,54 @@ +let MQTT; +let mqttSubscribers = {}; + +function connectMqtt() { + console.log('Connecting to Mqtt server'); + $.post('/home/getMqttConfig/').done(function (answer) { + let host = answer.host; + if (host === 'localhost') { + host = window.location.hostname; + } + + MQTT = new Paho.MQTT.Client(host, Number(answer.port), 'ProjectAliceInterface'); + let options = { + timeout: 3, + onSuccess: onConnect, + onFailure: onFailure + }; + MQTT.onMessageArrived = onMessage; + MQTT.connect(options); + }); +} + +function onFailure(msg) { + console.log('Mqtt connection failed'); +} + +function onConnect(msg) { + console.log('Mqtt connected'); + dispatchToMqttSubscribers('onConnect', msg); +} + +function onMessage(msg) { + dispatchToMqttSubscribers('onMessage', msg); +} + +function dispatchToMqttSubscribers(method, msg) { + if (!mqttSubscribers.hasOwnProperty(method)) { + return; + } + + for (const func of mqttSubscribers[method]) { + func(msg); + } +} + +function mqttRegisterSelf(target, method) { + if (!mqttSubscribers.hasOwnProperty(method)) { + mqttSubscribers[method] = []; + } + mqttSubscribers[method].push(target); +} + +connectMqtt(); + diff --git a/core/interface/static/js/mqttws31.min.js b/core/interface/static/js/mqttws31.min.js new file mode 100644 index 000000000..c83b56096 --- /dev/null +++ b/core/interface/static/js/mqttws31.min.js @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright (c) 2013, 2014 IBM Corp. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + *******************************************************************************/ + +"undefined"===typeof Paho&&(Paho={}); +Paho.MQTT=function(u){function y(a,b,c){b[c++]=a>>8;b[c++]=a%256;return c}function r(a,b,c,h){h=y(b,c,h);F(a,c,h);return h+b}function m(a){for(var b=0,c=0;c=h&&(c++,b++),b+=3):127=e){var d=a.charCodeAt(++h);if(isNaN(d))throw Error(f(g.MALFORMED_UNICODE,[e,d]));e=(e-55296<<10)+(d-56320)+65536}127>=e?b[c++]=e:(2047>=e?b[c++]=e>>6&31| +192:(65535>=e?b[c++]=e>>12&15|224:(b[c++]=e>>18&7|240,b[c++]=e>>12&63|128),b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b}function G(a,b,c){for(var h="",e,d=b;de)){var p=a[d++]-128;if(0>p)throw Error(f(g.MALFORMED_UTF,[e.toString(16),p.toString(16),""]));if(224>e)e=64*(e-192)+p;else{var t=a[d++]-128;if(0>t)throw Error(f(g.MALFORMED_UTF,[e.toString(16),p.toString(16),t.toString(16)]));if(240>e)e=4096*(e-224)+64*p+t;else{var l=a[d++]-128;if(0>l)throw Error(f(g.MALFORMED_UTF, +[e.toString(16),p.toString(16),t.toString(16),l.toString(16)]));if(248>e)e=262144*(e-240)+4096*p+64*t+l;else throw Error(f(g.MALFORMED_UTF,[e.toString(16),p.toString(16),t.toString(16),l.toString(16)]));}}}65535>10)),e=56320+(e&1023));h+=String.fromCharCode(e)}return h}var A=function(a,b){for(var c in a)if(a.hasOwnProperty(c))if(b.hasOwnProperty(c)){if(typeof a[c]!==b[c])throw Error(f(g.INVALID_TYPE,[typeof a[c],c]));}else{var h="Unknown property, "+c+ +". Valid properties are:";for(c in b)b.hasOwnProperty(c)&&(h=h+" "+c);throw Error(h);}},q=function(a,b){return function(){return a.apply(b,arguments)}},g={OK:{code:0,text:"AMQJSC0000I OK."},CONNECT_TIMEOUT:{code:1,text:"AMQJSC0001E Connect timed out."},SUBSCRIBE_TIMEOUT:{code:2,text:"AMQJS0002E Subscribe timed out."},UNSUBSCRIBE_TIMEOUT:{code:3,text:"AMQJS0003E Unsubscribe timed out."},PING_TIMEOUT:{code:4,text:"AMQJS0004E Ping timed out."},INTERNAL_ERROR:{code:5,text:"AMQJS0005E Internal error. Error Message: {0}, Stack trace: {1}"}, +CONNACK_RETURNCODE:{code:6,text:"AMQJS0006E Bad Connack return code:{0} {1}."},SOCKET_ERROR:{code:7,text:"AMQJS0007E Socket error:{0}."},SOCKET_CLOSE:{code:8,text:"AMQJS0008I Socket closed."},MALFORMED_UTF:{code:9,text:"AMQJS0009E Malformed UTF data:{0} {1} {2}."},UNSUPPORTED:{code:10,text:"AMQJS0010E {0} is not supported by this browser."},INVALID_STATE:{code:11,text:"AMQJS0011E Invalid state {0}."},INVALID_TYPE:{code:12,text:"AMQJS0012E Invalid type {0} for {1}."},INVALID_ARGUMENT:{code:13,text:"AMQJS0013E Invalid argument {0} for {1}."}, +UNSUPPORTED_OPERATION:{code:14,text:"AMQJS0014E Unsupported operation."},INVALID_STORED_DATA:{code:15,text:"AMQJS0015E Invalid data in local storage key={0} value={1}."},INVALID_MQTT_MESSAGE_TYPE:{code:16,text:"AMQJS0016E Invalid MQTT message type {0}."},MALFORMED_UNICODE:{code:17,text:"AMQJS0017E Malformed Unicode string:{0} {1}."}},J={0:"Connection Accepted",1:"Connection Refused: unacceptable protocol version",2:"Connection Refused: identifier rejected",3:"Connection Refused: server unavailable", +4:"Connection Refused: bad user name or password",5:"Connection Refused: not authorized"},f=function(a,b){var c=a.text;if(b)for(var h,e,d=0;d>7;0l);f=d.length+1;b=new ArrayBuffer(b+f);l=new Uint8Array(b); +l[0]=a;l.set(d,1);if(3==this.type)f=r(this.payloadMessage.destinationName,h,l,f);else if(1==this.type){switch(this.mqttVersion){case 3:l.set(B,f);f+=B.length;break;case 4:l.set(C,f),f+=C.length}a=0;this.cleanSession&&(a=2);void 0!=this.willMessage&&(a=a|4|this.willMessage.qos<<3,this.willMessage.retained&&(a|=32));void 0!=this.userName&&(a|=128);void 0!=this.password&&(a|=64);l[f++]=a;f=y(this.keepAliveInterval,l,f)}void 0!=this.messageIdentifier&&(f=y(this.messageIdentifier,l,f));switch(this.type){case 1:f= +r(this.clientId,m(this.clientId),l,f);void 0!=this.willMessage&&(f=r(this.willMessage.destinationName,m(this.willMessage.destinationName),l,f),f=y(e.byteLength,l,f),l.set(e,f),f+=e.byteLength);void 0!=this.userName&&(f=r(this.userName,m(this.userName),l,f));void 0!=this.password&&r(this.password,m(this.password),l,f);break;case 3:l.set(g,f);break;case 8:for(d=0;dthis.connectOptions.mqttVersion?new WebSocket(a,["mqttv3.1"]):new WebSocket(a,["mqtt"]);this.socket.binaryType= +"arraybuffer";this.socket.onopen=q(this._on_socket_open,this);this.socket.onmessage=q(this._on_socket_message,this);this.socket.onerror=q(this._on_socket_error,this);this.socket.onclose=q(this._on_socket_close,this);this.sendPinger=new H(this,window,this.connectOptions.keepAliveInterval);this.receivePinger=new H(this,window,this.connectOptions.keepAliveInterval);this._connectTimeout=new D(this,window,this.connectOptions.timeout,this._disconnected,[g.CONNECT_TIMEOUT.code,f(g.CONNECT_TIMEOUT)])};k.prototype._schedule_message= +function(a){this._msg_queue.push(a);this.connected&&this._process_queue()};k.prototype.store=function(a,b){var c={type:b.type,messageIdentifier:b.messageIdentifier,version:1};switch(b.type){case 3:b.pubRecReceived&&(c.pubRecReceived=!0);c.payloadMessage={};for(var h="",e=b.payloadMessage.payloadBytes,d=0;d=e[d]?h+"0"+e[d].toString(16):h+e[d].toString(16);c.payloadMessage.payloadHex=h;c.payloadMessage.qos=b.payloadMessage.qos;c.payloadMessage.destinationName=b.payloadMessage.destinationName; +b.payloadMessage.duplicate&&(c.payloadMessage.duplicate=!0);b.payloadMessage.retained&&(c.payloadMessage.retained=!0);0==a.indexOf("Sent:")&&(void 0===b.sequence&&(b.sequence=++this._sequence),c.sequence=b.sequence);break;default:throw Error(f(g.INVALID_STORED_DATA,[key,c]));}localStorage.setItem(a+this._localKey+b.messageIdentifier,JSON.stringify(c))};k.prototype.restore=function(a){var b=localStorage.getItem(a),c=JSON.parse(b),h=new n(c.type,c);switch(c.type){case 3:for(var b=c.payloadMessage.payloadHex, +e=new ArrayBuffer(b.length/2),e=new Uint8Array(e),d=0;2<=b.length;){var k=parseInt(b.substring(0,2),16),b=b.substring(2,b.length);e[d++]=k}b=new Paho.MQTT.Message(e);b.qos=c.payloadMessage.qos;b.destinationName=c.payloadMessage.destinationName;c.payloadMessage.duplicate&&(b.duplicate=!0);c.payloadMessage.retained&&(b.retained=!0);h.payloadMessage=b;break;default:throw Error(f(g.INVALID_STORED_DATA,[a,b]));}0==a.indexOf("Sent:"+this._localKey)?(h.payloadMessage.duplicate=!0,this._sentMessages[h.messageIdentifier]= +h):0==a.indexOf("Received:"+this._localKey)&&(this._receivedMessages[h.messageIdentifier]=h)};k.prototype._process_queue=function(){for(var a=null,b=this._msg_queue.reverse();a=b.pop();)this._socket_send(a),this._notify_msg_sent[a]&&(this._notify_msg_sent[a](),delete this._notify_msg_sent[a])};k.prototype._requires_ack=function(a){var b=Object.keys(this._sentMessages).length;if(b>this.maxMessageIdentifier)throw Error("Too many messages:"+b);for(;void 0!==this._sentMessages[this._message_identifier];)this._message_identifier++; +a.messageIdentifier=this._message_identifier;this._sentMessages[a.messageIdentifier]=a;3===a.type&&this.store("Sent:",a);this._message_identifier===this.maxMessageIdentifier&&(this._message_identifier=1)};k.prototype._on_socket_open=function(){var a=new n(1,this.connectOptions);a.clientId=this.clientId;this._socket_send(a)};k.prototype._on_socket_message=function(a){this._trace("Client._on_socket_message",a.data);this.receivePinger.reset();a=this._deframeMessages(a.data);for(var b=0;b>4,z=t&15,d=d+1,v=void 0,E=0,m=1;do{if(d==e.length){h=[null,k];break a}v=e[d++];E+=(v&127)*m;m*=128}while(0!=(v&128));v=d+E;if(v>e.length)h=[null,k];else{var w=new n(l);switch(l){case 2:e[d++]& +1&&(w.sessionPresent=!0);w.returnCode=e[d++];break;case 3:var k=z>>1&3,r=256*e[d]+e[d+1],d=d+2,u=G(e,d,r),d=d+r;0b)throw Error(f(g.INVALID_TYPE,[typeof b,"port"]));if("string"!==typeof c)throw Error(f(g.INVALID_TYPE,[typeof c,"path"]));e="ws://"+(-1!=a.indexOf(":")&&"["!=a.slice(0,1)&&"]"!=a.slice(-1)?"["+a+"]":a)+":"+b+c}for(var p=d=0;p=m&&p++;d++}if("string"!==typeof h||65535a.mqttVersion)throw Error(f(g.INVALID_ARGUMENT,[a.mqttVersion,"connectOptions.mqttVersion"]));void 0===a.mqttVersion?(a.mqttVersionExplicit=!1,a.mqttVersion=4):a.mqttVersionExplicit=!0;if(void 0===a.password&&void 0!==a.userName)throw Error(f(g.INVALID_ARGUMENT, +[a.password,"connectOptions.password"]));if(a.willMessage){if(!(a.willMessage instanceof x))throw Error(f(g.INVALID_TYPE,[a.willMessage,"connectOptions.willMessage"]));a.willMessage.stringPayload;if("undefined"===typeof a.willMessage.destinationName)throw Error(f(g.INVALID_TYPE,[typeof a.willMessage.destinationName,"connectOptions.willMessage.destinationName"]));}"undefined"===typeof a.cleanSession&&(a.cleanSession=!0);if(a.hosts){if(!(a.hosts instanceof Array))throw Error(f(g.INVALID_ARGUMENT,[a.hosts, +"connectOptions.hosts"]));if(1>a.hosts.length)throw Error(f(g.INVALID_ARGUMENT,[a.hosts,"connectOptions.hosts"]));for(var b=!1,d=0;da.ports[d])throw Error(f(g.INVALID_TYPE,[typeof a.ports[d],"connectOptions.ports["+d+"]"]));var b=a.hosts[d],h= +a.ports[d];e="ws://"+(-1!=b.indexOf(":")?"["+b+"]":b)+":"+h+c;a.uris.push(e)}}}l.connect(a)};this.subscribe=function(a,b){if("string"!==typeof a)throw Error("Invalid argument:"+a);b=b||{};A(b,{qos:"number",invocationContext:"object",onSuccess:"function",onFailure:"function",timeout:"number"});if(b.timeout&&!b.onFailure)throw Error("subscribeOptions.timeout specified with no onFailure callback.");if("undefined"!==typeof b.qos&&0!==b.qos&&1!==b.qos&&2!==b.qos)throw Error(f(g.INVALID_ARGUMENT,[b.qos, +"subscribeOptions.qos"]));l.subscribe(a,b)};this.unsubscribe=function(a,b){if("string"!==typeof a)throw Error("Invalid argument:"+a);b=b||{};A(b,{invocationContext:"object",onSuccess:"function",onFailure:"function",timeout:"number"});if(b.timeout&&!b.onFailure)throw Error("unsubscribeOptions.timeout specified with no onFailure callback.");l.unsubscribe(a,b)};this.send=function(a,b,c,d){var e;if(0==arguments.length)throw Error("Invalid argument.length");if(1==arguments.length){if(!(a instanceof x)&& +"string"!==typeof a)throw Error("Invalid argument:"+typeof a);e=a;if("undefined"===typeof e.destinationName)throw Error(f(g.INVALID_ARGUMENT,[e.destinationName,"Message.destinationName"]));}else e=new x(b),e.destinationName=a,3<=arguments.length&&(e.qos=c),4<=arguments.length&&(e.retained=d);l.send(e)};this.disconnect=function(){l.disconnect()};this.getTraceLog=function(){return l.getTraceLog()};this.startTrace=function(){l.startTrace()};this.stopTrace=function(){l.stopTrace()};this.isConnected=function(){return l.connected}}; +I.prototype={get host(){return this._getHost()},set host(a){this._setHost(a)},get port(){return this._getPort()},set port(a){this._setPort(a)},get path(){return this._getPath()},set path(a){this._setPath(a)},get clientId(){return this._getClientId()},set clientId(a){this._setClientId(a)},get onConnectionLost(){return this._getOnConnectionLost()},set onConnectionLost(a){this._setOnConnectionLost(a)},get onMessageDelivered(){return this._getOnMessageDelivered()},set onMessageDelivered(a){this._setOnMessageDelivered(a)}, +get onMessageArrived(){return this._getOnMessageArrived()},set onMessageArrived(a){this._setOnMessageArrived(a)},get trace(){return this._getTrace()},set trace(a){this._setTrace(a)}};var x=function(a){var b;if("string"===typeof a||a instanceof ArrayBuffer||a instanceof Int8Array||a instanceof Uint8Array||a instanceof Int16Array||a instanceof Uint16Array||a instanceof Int32Array||a instanceof Uint32Array||a instanceof Float32Array||a instanceof Float64Array)b=a;else throw f(g.INVALID_ARGUMENT,[a,"newPayload"]); +this._getPayloadString=function(){return"string"===typeof b?b:G(b,0,b.length)};this._getPayloadBytes=function(){if("string"===typeof b){var a=new ArrayBuffer(m(b)),a=new Uint8Array(a);F(b,a,0);return a}return b};var c=void 0;this._getDestinationName=function(){return c};this._setDestinationName=function(a){if("string"===typeof a)c=a;else throw Error(f(g.INVALID_ARGUMENT,[a,"newDestinationName"]));};var h=0;this._getQos=function(){return h};this._setQos=function(a){if(0===a||1===a||2===a)h=a;else throw Error("Invalid argument:"+ +a);};var e=!1;this._getRetained=function(){return e};this._setRetained=function(a){if("boolean"===typeof a)e=a;else throw Error(f(g.INVALID_ARGUMENT,[a,"newRetained"]));};var d=!1;this._getDuplicate=function(){return d};this._setDuplicate=function(a){d=a}};x.prototype={get payloadString(){return this._getPayloadString()},get payloadBytes(){return this._getPayloadBytes()},get destinationName(){return this._getDestinationName()},set destinationName(a){this._setDestinationName(a)},get qos(){return this._getQos()}, +set qos(a){this._setQos(a)},get retained(){return this._getRetained()},set retained(a){this._setRetained(a)},get duplicate(){return this._getDuplicate()},set duplicate(a){this._setDuplicate(a)}};return{Client:I,Message:x}}(window); diff --git a/core/interface/templates/base.html b/core/interface/templates/base.html index a42c7950d..f581c28a6 100644 --- a/core/interface/templates/base.html +++ b/core/interface/templates/base.html @@ -8,6 +8,8 @@ + + {% block loaders %}{% endblock %} diff --git a/core/interface/views/IndexView.py b/core/interface/views/IndexView.py index b81800ea7..e53929c8e 100644 --- a/core/interface/views/IndexView.py +++ b/core/interface/views/IndexView.py @@ -93,3 +93,11 @@ def widgetCall(self): return func(**json.loads(data['param'])) except Exception as e: self.logWarning(f"[Widget] Widget tried to call a core function but failed: {e}") + + + @route('/home/getMqttConfig/', methods=['POST']) + def getMqttConfig(self): + return jsonify( + host=self.ConfigManager.getAliceConfigByName('mqttHost'), + port=int(self.ConfigManager.getAliceConfigByName('mqttPort')) + 1 + ) From 1a15101f8cb04c44d7b6ce46494ecd1dadf8ee07 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 5 Mar 2020 17:27:40 +0100 Subject: [PATCH 067/139] Initialize mosquitto websockets --- core/Initializer.py | 4 ++++ system/websockets.conf | 3 +++ 2 files changed, 7 insertions(+) create mode 100644 system/websockets.conf diff --git a/core/Initializer.py b/core/Initializer.py index 929daccff..e41d4f41c 100644 --- a/core/Initializer.py +++ b/core/Initializer.py @@ -186,6 +186,10 @@ def initProjectAlice(self) -> bool: subprocess.run(['sudo', 'systemctl', 'disable', 'snips-audio-server']) subprocess.run(['sudo', 'systemctl', 'disable', 'snips-tts']) + confPath = Path('/etc/mosquitto/conf.d/websockets.conf') + if not confPath.exists(): + subprocess.run(['sudo', 'cp', 'skills/SpeechVisualizer/websockets.conf', str(confPath)]) + subprocess.run(['sudo', 'systemctl', 'restart', 'mosquitto']) # Now let's dump some values to their respective places # First those that need some checks and self filling in case unspecified diff --git a/system/websockets.conf b/system/websockets.conf new file mode 100644 index 000000000..009b0bf82 --- /dev/null +++ b/system/websockets.conf @@ -0,0 +1,3 @@ +listener 1883 +listener 1884 +protocol websockets From fd2ce0ed948c07b1c72a9f4f98c0c1ead4c49898 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 5 Mar 2020 18:53:32 +0100 Subject: [PATCH 068/139] Fix Initializer.py --- core/Initializer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/Initializer.py b/core/Initializer.py index e41d4f41c..a8febb09e 100644 --- a/core/Initializer.py +++ b/core/Initializer.py @@ -188,7 +188,7 @@ def initProjectAlice(self) -> bool: confPath = Path('/etc/mosquitto/conf.d/websockets.conf') if not confPath.exists(): - subprocess.run(['sudo', 'cp', 'skills/SpeechVisualizer/websockets.conf', str(confPath)]) + subprocess.run(['sudo', 'cp', str(Path(self._rootDir, 'system/websockets.conf')), str(confPath)]) subprocess.run(['sudo', 'systemctl', 'restart', 'mosquitto']) # Now let's dump some values to their respective places From 2ae47ca28b56b0d96ccb351582c906dbd05811dd Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 5 Mar 2020 19:22:16 +0100 Subject: [PATCH 069/139] Using inbuilt VAD for deepspeech. Almost working --- core/asr/ASRManager.py | 14 ++++++++++++++ core/asr/model/DeepSpeechASR.py | 27 +++++++++++++++++---------- core/base/model/ProjectAliceObject.py | 8 ++++++++ core/commons/constants.py | 2 ++ core/server/MqttManager.py | 24 ++++++++++++++++++++++-- 5 files changed, 63 insertions(+), 12 deletions(-) diff --git a/core/asr/ASRManager.py b/core/asr/ASRManager.py index bbe3a3698..ec3d1d090 100644 --- a/core/asr/ASRManager.py +++ b/core/asr/ASRManager.py @@ -156,5 +156,19 @@ def onSessionEnded(self, session: DialogSession): self._streams.pop(session.siteId, None) + def onVadUp(self, siteId: str): + if not self._asr or siteId not in self._streams or not self._streams[siteId].isRecording: + return + + self._asr.onVadUp() + + + def onVadDown(self, siteId: str): + if not self._asr or siteId not in self._streams or not self._streams[siteId].isRecording: + return + + self._asr.onVadDown() + + def addRecorder(self, siteId: str, recorder: Recorder): self._streams[siteId] = recorder diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index 9a1f53c86..d580cf4b6 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -35,6 +35,7 @@ def __init__(self): self._model: Optional[deepspeech.Model] = None self._vad: Optional[webrtcvad.Vad] = None + self._triggerFlag = self.ThreadManager.newEvent('asrTriggerFlag') def onStart(self): @@ -58,6 +59,16 @@ def install(self) -> bool: return False + def onVadUp(self): + if not self._triggerFlag.is_set(): + self._triggerFlag.set() + + + def onVadDown(self): + if self._triggerFlag.is_set(): + self._triggerFlag.clear() + + def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: super().decodeStream(session) with Stopwatch() as processingTime: @@ -65,8 +76,7 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: self.ASRManager.addRecorder(session.siteId, recorder) self._recorder = recorder streamContext = self._model.createStream() - i = 0 - prevResult = '' + triggered = False for chunk in recorder: if self._timeout.isSet(): break @@ -76,14 +86,11 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: result = self._model.intermediateDecode(streamContext) self.partialTextCaptured(session=session, text=result, likelihood=1, seconds=0) - # TODO implement VAD instead of this - if result and result == prevResult: - i += 1 - if i > 25: - break - else: - prevResult = result - i = 0 + if not triggered and self._triggerFlag.is_set(): + triggered = True + + if triggered and not self._triggerFlag.is_set(): + recorder.stopRecording() text = self._model.finishStream(streamContext) self.end(session) diff --git a/core/base/model/ProjectAliceObject.py b/core/base/model/ProjectAliceObject.py index 2be9a8a1a..cd257fba3 100644 --- a/core/base/model/ProjectAliceObject.py +++ b/core/base/model/ProjectAliceObject.py @@ -363,6 +363,14 @@ def onNluTrained(self, **kwargs): pass + def onVadUp(self, **kwargs): + pass + + + def onVadDown(self, **kwargs): + pass + + def onPartialTextCaptured(self, session, text: str, likelihood: float, seconds: float): pass diff --git a/core/commons/constants.py b/core/commons/constants.py index b711db32b..24a52aefa 100644 --- a/core/commons/constants.py +++ b/core/commons/constants.py @@ -83,3 +83,5 @@ EVENT_WAKEUP = 'wakeup' EVENT_SLEEP = 'sleep' EVENT_NLU_TRAINED = 'nluTrained' +EVENT_VAD_UP = 'vadUp' +EVENT_VAD_DOWN = 'vadDown' diff --git a/core/server/MqttManager.py b/core/server/MqttManager.py index 7089e6ea6..d5fe4537b 100644 --- a/core/server/MqttManager.py +++ b/core/server/MqttManager.py @@ -1,5 +1,6 @@ import json import uuid +from datetime import datetime from pathlib import Path import paho.mqtt.client as mqtt @@ -24,6 +25,7 @@ def __init__(self): self._thanked = False self._wideAskingSessions = list() self._multiDetectionsHolder = list() + self._vadTemporisation = 0 self._audioFrameRegex = re.compile(constants.TOPIC_AUDIO_FRAME.replace('{}', '(.*)')) self._wakewordDetectedRegex = re.compile(constants.TOPIC_WAKEWORD_DETECTED.replace('{}', '(.*)')) @@ -48,6 +50,12 @@ def onStart(self): for username in self.UserManager.getAllUserNames(): self._mqttClient.message_callback_add(constants.TOPIC_WAKEWORD_DETECTED.replace('{user}', username), self.onHotwordDetected) + self._mqttClient.message_callback_add(constants.TOPIC_VAD_UP.format(constants.DEFAULT_SITE_ID), self.onVADUp) + self._mqttClient.message_callback_add(constants.TOPIC_VAD_DOWN.format(constants.DEFAULT_SITE_ID), self.onVADDown) + for device in self.DeviceManager.getDevicesByType('alicesatellite'): + self._mqttClient.message_callback_add(constants.TOPIC_VAD_UP.replace(device.room), self.onVADUp) + self._mqttClient.message_callback_add(constants.TOPIC_VAD_DOWN.replace(device.room), self.onVADDown) + self._mqttClient.message_callback_add(constants.TOPIC_SESSION_STARTED, self.onSnipsSessionStarted) self._mqttClient.message_callback_add(constants.TOPIC_ASR_START_LISTENING, self.onSnipsStartListening) @@ -100,8 +108,8 @@ def onConnect(self, client, userdata, flags, rc): for username in self.UserManager.getAllUserNames(): subscribedEvents.append((constants.TOPIC_WAKEWORD_DETECTED.format(username), 0)) - subscribedEvents.append((constants.TOPIC_VAD_UP.format('default'), 0)) - subscribedEvents.append((constants.TOPIC_VAD_DOWN.format('default'), 0)) + subscribedEvents.append((constants.TOPIC_VAD_UP.format(constants.DEFAULT_SITE_ID), 0)) + subscribedEvents.append((constants.TOPIC_VAD_DOWN.format(constants.DEFAULT_SITE_ID), 0)) for device in self.DeviceManager.getDevicesByType('alicesatellite'): subscribedEvents.append((constants.TOPIC_VAD_UP.format(device.room), 0)) subscribedEvents.append((constants.TOPIC_VAD_DOWN.format(device.room), 0)) @@ -452,6 +460,18 @@ def onNluPartialCapture(self, client, data, msg: mqtt.MQTTMessage): self.broadcast(method=constants.EVENT_PARTIAL_TEXT_CAPTURED, exceptions=[self.name], propagateToSkills=True, session=session, text=payload['text'], likelihood=payload['likelihood'], seconds=payload['seconds']) + def onVADUp(self, client, data, msg: mqtt.MQTTMessage): + self._vadTemporisation = datetime.now().microsecond + siteId = self.Commons.parseSiteId(msg) + self.broadcast(method=constants.EVENT_VAD_UP, exceptions=[self.name], propagateToSkills=True, siteId=siteId) + + + def onVADDown(self, client, data, msg: mqtt.MQTTMessage): + if datetime.now().microsecond - 500 > self._vadTemporisation: + siteId = self.Commons.parseSiteId(msg) + self.broadcast(method=constants.EVENT_VAD_DOWN, exceptions=[self.name], propagateToSkills=True, siteId=siteId) + + def reviveSession(self, session: DialogSession, text: str): self.endSession(session.sessionId) self.DialogSessionManager.planSessionRevival(session) From 96ad4138c2628d0ffff26bceaf05688416ac57dd Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 5 Mar 2020 22:54:01 +0100 Subject: [PATCH 070/139] Should complete Italian support --- system/sounds/it/end_of_input.wav | Bin 0 -> 33528 bytes system/sounds/it/error.wav | Bin 0 -> 11190 bytes system/sounds/it/error_ask.wav | Bin 0 -> 3244 bytes system/sounds/it/start_of_input.wav | Bin 0 -> 26646 bytes system/sounds/it/start_of_input_ask.wav | Bin 0 -> 8058 bytes .../assistants/assistant_it/Snipsfile.yaml | 2 + .../custom_dialogue/sound/config.json | 5 + .../custom_dialogue/sound/end_of_input.wav | Bin 0 -> 33528 bytes .../custom_dialogue/sound/error.wav | Bin 0 -> 3244 bytes .../custom_dialogue/sound/start_of_input.wav | Bin 0 -> 8058 bytes .../custom_dialogue/speak/de.json | 8 ++ .../custom_dialogue/speak/en.json | 8 ++ .../custom_dialogue/speak/es.json | 8 ++ .../custom_dialogue/speak/fr.json | 8 ++ .../custom_dialogue/speak/it.json | 8 ++ .../custom_dialogue/speak/ko.json | 10 ++ .../custom_dialogue/speak/pt.json | 8 ++ .../assistant_it/custom_hotword/config.json | 21 +++ .../assistant_it/custom_hotword/model.pb | Bin 0 -> 1596685 bytes .../custom_hotword/thresholds_curve.json | 128 ++++++++++++++++++ 20 files changed, 214 insertions(+) create mode 100644 system/sounds/it/end_of_input.wav create mode 100644 system/sounds/it/error.wav create mode 100644 system/sounds/it/error_ask.wav create mode 100644 system/sounds/it/start_of_input.wav create mode 100644 system/sounds/it/start_of_input_ask.wav create mode 100644 trained/assistants/assistant_it/Snipsfile.yaml create mode 100644 trained/assistants/assistant_it/custom_dialogue/sound/config.json create mode 100644 trained/assistants/assistant_it/custom_dialogue/sound/end_of_input.wav create mode 100644 trained/assistants/assistant_it/custom_dialogue/sound/error.wav create mode 100644 trained/assistants/assistant_it/custom_dialogue/sound/start_of_input.wav create mode 100644 trained/assistants/assistant_it/custom_dialogue/speak/de.json create mode 100644 trained/assistants/assistant_it/custom_dialogue/speak/en.json create mode 100644 trained/assistants/assistant_it/custom_dialogue/speak/es.json create mode 100644 trained/assistants/assistant_it/custom_dialogue/speak/fr.json create mode 100644 trained/assistants/assistant_it/custom_dialogue/speak/it.json create mode 100644 trained/assistants/assistant_it/custom_dialogue/speak/ko.json create mode 100644 trained/assistants/assistant_it/custom_dialogue/speak/pt.json create mode 100644 trained/assistants/assistant_it/custom_hotword/config.json create mode 100644 trained/assistants/assistant_it/custom_hotword/model.pb create mode 100644 trained/assistants/assistant_it/custom_hotword/thresholds_curve.json diff --git a/system/sounds/it/end_of_input.wav b/system/sounds/it/end_of_input.wav new file mode 100644 index 0000000000000000000000000000000000000000..1f41f32fcfb1353a84767f1f75bea0fd423a3a45 GIT binary patch literal 33528 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 e{8OCb&{A2mN~nd1p4Lzj^>p@X7h|l`8~Z=aR4 literal 0 HcmV?d00001 diff --git a/system/sounds/it/error.wav b/system/sounds/it/error.wav new file mode 100644 index 0000000000000000000000000000000000000000..b3aab33aae4a914eb185dbdf92480bc71af3bdd9 GIT binary patch literal 11190 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 LW+r4jrltQs_U`Df literal 0 HcmV?d00001 diff --git a/system/sounds/it/error_ask.wav b/system/sounds/it/error_ask.wav new file mode 100644 index 0000000000000000000000000000000000000000..9d0a165547a12b41dcfd5b4ba19eb3088d2808f6 GIT binary patch literal 3244 zcmZveyN(k<6hwRcfP`Q_fiFQKV5Ln7AYKWPk!^~!AH!EJwue4_T)I6rMqbbK+(%X2 z>K?v6JwE>V(AxLU-@g3(_44tdwYKzsub=wG@78whq5XJ%d4BCNOS`PQzU*hY{_fg& zJ+xE*p4WYkSlZg7)|JP*k-;@J*Z!=Hr#vI-GBS*&&awR+b#~WYc}_GHh&T-l)g%4L z-(PzK>DpJ$BQw3Zr=RE(2Od7wf@R`m&^Abo3;$FSA-Sp)exO1j`i4h%sZ4dYtEjdJ ztgb?6AXDq8DqUE;j9yHHX}|j1ebT3K zH}ecHe4rn^vX(l*OQuH07vK#$v1TfEj}P-K{*ry>7u2dJ1O7S@vBMo^Wa?tr#LIDr z7~{HGM<=fHjSg;p({pwSOrxzX5wAU{vF}Knvd)RVZ(U>j9~?7kHP+uEpvqxPJRMn= z84SEuXI9Z(CD@1Vw0Sx~EqfWD)Umy-@B5bw`Y~nC1o%_I`?%0q)#(sz+}-zHoa5ye z*IF^``~?>uH7fk9#s|(<&e1`C6)Pq>pJ(Q0QsrJ11DD=6s~i#pdLxqqVQK`iy`u)R zs0iZ2z-v|Y#MFags~u#8EiSaoDdNc(mUCWV;7SHT?lYrR)IG<#y4FsuI#k*24(rN_ z4l`TsVUv@_6NY&a=Z9Wl%!)bbot0FwkC|L&8s>Sw-7iEGdozgx0qg3&>zq9Yv(waI zt37vCclT{|p_0AG^%U~{79D4892jiI#BXtPv?~{@NGXtcs(VhHdH>QYI;ES)sghai ze9jAYexCEo^y&nnQchS;Z?yDFz1)@O>nc(F8tdQeHBU~~3IY7|r#SM~OebSAP494z zIihD;POR3GU;2US|I>}HvIoT}3;xbi%N`D=ZH}?b-g)I6CH`QcW_r#J+F#$(#e!+z zjarcxI>03-cdE_4H8PIzy`dXWO%K!kmTf%2ZjOr4865X(nJfCs(L)Fztmu~AD&Ld)S6kyEqhS5P6U1Iuda4CHz=2`tM5pnxwaC>oJYJSdiT;g zc1`%lF>;HJG64^jDm&NnbDqKjrNYOzsv4N1MotGeSo^kvvH71`olH?!22ox`xtlv> Pl{MLMl^CyhXC2x|WO+NnURE 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 z z+O9R%sIU`ziAY~_wT!w>si*9dKMUHulR8VP)JgaSv+x#N8fU;q(E+hLpfEZFmy7)X z=>#`_0~^EM!iVs{u7bZuqt7CDd>2|r@+Y|=Z#>PMGGZiO?2 zVdzbuUf{YvoBxS#iLZ$7rl8D1@%__ld8_-z`|kOA`seyP1bPH-1!soZgo{LS2`khc z`=mcM-UyAcldfPV_^)7|SP=~bgx51isx7Y<5tn63NJ!0DVZS73hFB5*7MG+QQM;;s zWv4PmtcULfr#zMBO4X$xnNFPKh~Sj0cpoYvc3CCE!*CdE1@po8;3G1{p4e^qNG#4RVpYwm8NP|wY6GP#iF-Mf|pF?u+mAn zDI&A4rIk`9sWkZsA42i$>qq_#PsgrU=S{Dm%*fdKXzNJx@RiWD;L$+gKzsig-&7y> zE*CK!)%)7>+Cx31y#2hp1hgdekA{z`c*|0C~{_sWS%M6M)y+9)>?R#+>+F(P6h z-6mDYL(z7UShaS**5YL5K{k!Pv-((xrmknx_eMWOYDWfze+eB9J`EHI%=5eaSAD7;I1)A^YOIFH^_MYko4;C*XbNLo zfe+x1s2kStNAg%|A=bZsiY}-#QTgC%ed6g2*bo4A;k}L@Z$i>VV3iis-F?z8hkpb=E=^bw>43B{Tp%L^sfQ z`~Zu6diXGIOnxQ}1rJ^qCq70?MuSR7d1ZTzLbij|G!jW&*~7CEH8p?ASn!Qp|Jf2zNOe}ey8 zKl7dSo%cQQz4y)Z+X4xJc7Zd2?}A^4E{PmOlZZG$6>T5uqIWlPnGLN>^fX(XGEh!wY}vQlW>(@F((p3uQH)dK2$<(A@9Gpjq5W=f)xq@0ik z$_vH3UXjL1U8KrlZJtS5k~-vDa!s6~E02kYsnoy{zK%|yQK&FFjH=@2g1;tfh`&FQ>ckT9nq4?IK8QXE zZGRJ%hVMWx@L8PPe8W1i@pPcI+$>{GH6H6Zbv=rsy(5>x6~m#>@X*enFR&&sC{QJk zAy6YwKd{}u#Q)M?HLxxa33Ln&4ZahrlP!E8JU22e>W=;t>!p8dH-ISKeA-Rw8Nco@?R7VR6{iWVl4b`QsP+O=Qgyhv$ORBmuM9C=p zDz7|NNPtsrBE2Q0g)YfJcH=~0yOqJW&?~eAr9B7b> z9CQWK1#1hs+z%EAO$cobwqS6RiR>}%r`mnM@`9}RtXys~xgUYM7ggtXp`BnKzNiVFLCGt1Is#_#Y z5fZS8bRtLbabdZZ7Hf(Z4HU9eQ^**HAK(Ev3QmAigho0F=fNM~FYu#S-3tqOYlPaN zbLelB2hYO|gHqqJs>=}?0Q(lQ2LvdENU&JC)g1YM7t^WOAHj}LXYDC zG}3P<30K4gg;vMp zEY3s@k)uQ>g{54QPVx&&p{F!a8YLAJCtJ@DH#tlIc`nX_KSftiCt)>YfZaqk-O0y_ zJb6Hzy6c@4Lb6hE~{o3N_lzcKs?b_%NOL$igBJVFLZdF1x; zZ*p}Ji`b~#7t}~rpwK%Xgg<{p8Km?Q(XN9c*J4PQq@z+3!7o3M`2>nRL^ttUv`d_H zz9H78JVKgQ!cOA95`+c+7lL=8jNS=38YL()6LrNq@l3I9*+?NWnLH<3q>REga7$;T zIno2EoX8!`7w6yCOZ6p_aI!>botoqZ{sv2^F**WoiT^FInE$|<(MEKRkfR4iK))D! z79Af&(b|#4f=?QS9t3|4P7G!Zo(%jJxDl8xescz$f<^~|4MY7xEVMG5GxAhunTjz< zf2{X2`iYoS$V#CrSuLIiWD=a-62;JDp=S<~??r|tBq9JCO!BC`9EEq z3A~Nf`p4gQzr)@K;gF%+t|4@YlY=N%s0^7JkVO9uGG3?9Nuwr|Lh6>Gh;k!thDwTi zuVjdFH7O*KA)*LppS|Bu2bp`s-En1zHpOk9yi=w7OklTI>uuQ5)W`V})rI_&8y9Z<}CADbaRI}lkrj~^IEg7nPk@XC!}3lzgxRfdnxv) zx)B_S>%xJ-QvVI_o$Tt&H*S4*m~*fFrgb)*NH0z`NzE${lIi4uWY=V~q(Q4&knEhC zoBScEmUpAxT#?$CnwIWsZMPn@TRKOa)$ZQRf3oAej{XjRCAbB}N*~}y7RP?V67H)j z#*@Zp#xIQErkESdU(Bp|in#*j?9JEA^~`kEK_|X8rWmDIA}M__{?}j8_Ydh+<|B&* z=*3Z5M2}h0pQ-uxYKyc>^e6P|(E7c4FQbKd#u#mWZ`PxoK5VX}?mZT7n-EKPBz8bC z?Nqh+8ndQZVpKLZ>yB2c9f`fFPE_hC4~E6TQ2#NnZZ~bYXf4HREGi zi#6DHg~`2TAC|S?cURf<^g#beRxY1b{uO@7M(HK#!PZUo*Y~ zMzZgR)3HW3sHL$VV!f&J!}PE9%EqnOSp$vj#v!=<0nfoaV}>!FXZIQ%upV~ktLP(d z(8uW-b$KVq4*ls_pTUN$q1UAaH1sz5BeXr|j77##ERPz@K0U+`>+jgn6L! zMR^DD4s>B`(VO|e`x1Mxp`XOx^^~C+>zE~(61z0^6IddpVdtRK@9TBSPS31$XF1Q> zirv$CIK3y8NR2P=T>fQpN^(HbDmzrRyUa-5kerpAliZSQU%sjQ+0-fOz~$CItpBo` zJ9S;xeLd47YkFUM3uqPUhg-uEr2!**c2wa-ypxgJAy#Sh!m604Ptu>$=fFcp{YrK( z*m$7p>+`hXS_dso&o~kci@CACGgJ6XtS+V0TN|X^qz%?iu&b!8QH-n}rr(}w-Vm>m zxDszq?Zm>ws>G$=F0)#nsk@br z!;(Pv|LPsf{wK4|^_*q)eO4>$QmaFHNJ>lfEI*j6S6;jPSn^mhOn#Y+m)}{wtGrQa zajGc2IX%+aZM|gob~4Ua_(BF{>v*4gJ^XILWuUqYVJ5tvx?g=IW@??ZWz2|tu9<(?M zR)^S=^(My0%-KC_?x)s-<{J8%35jnLOYmwBPpreIxGiy#@;*SDvY3*tXLdEZ>eIFL zv8>u&EmZy#whP*TW->lIE3?L(=j^g;+pk%=)hT@@^+2jhDxSI&yWvpzaX77>dN1{t zbm#OYEQPJsK-RIGa9(!nXDrrYweZ^cTm8F(AlMn+p=?r?sF%kk+5V8^KV@HT2gwE>Lkt7+%KBe*M;A4}oc`j@(0eO{dh0?k*n?p0$=V{zKJ-LWF= zd3HVrw3)l~QsZ@FD=YGPnlHrPB416 z(|&q@OAovq>4NZdC7%ZH^rWW94&dGUlMZ zk2NM8^pW~N{Z9QX7%T5<@A70lef5uw$X`T<$HW@PegHG1Dzp{G%GGsn-+<>$n6q?a zs#bzle@e?;#W<;-Wo&xDm|{L{wl=GpDPxei#O#CS);7BtX}zj(tG-Sftu4b7)=mAE zm7E8H*Mfy0QuG6FqBJv(QXS}gVmGwkw_01fD7~1qJl!VUJ$+ePPj5?iv!15EI&8JG zciJnE|*mT2o(FFzEUt*_RYS*3CC)QNH7)7l0+mksp}*l#`cW%^0o zForWrcAc>hU$4RL_d~`v^w%F6vyG`nbwi;P|E#}3y?6?r;KS-~AYWAp9}i~xyS#SZ zB&@kJZbx^9^Nl^)K5PxO&ZpmEMaqq7HJzU}(`QqK=@-)fN}o#iwq{wXz1Z&L>~s3K zTitP)i?ZLdo@s_}f?Cu*{3INqT(9m^>oPW87&{f~p>3p(2{c=4!kFjp`eA)5Tn@)# zSjP2ne*5Un^}lex0x8_1ccC`Ez?{qy{UBrJw^=tbnbG=k{4IM3?djP{&HK!&%(`Yi z{-#N0JM%d0bR**&t7A&^hWew-VONU{WlVUr@-80FKLw5bre447CtzNzahtiFoC)?B ztC;qvzg5?ooox9=H>L3^mFOw(_f~;^s`nMd%GP&vrjq0Ts5Mrbc-KT^Xkp%w1J-m5$HQvE4?E;ie0eZIa( z|3u%f*PxVU8%vE3jBWUthv1*-Pn*&@4iE~y`X903zKGuu&%>_0CO$ddH@*db?&rpI z#*LR7FY52&$LVT`(~Z&D9@ZG^Ija_R^_)G}d4=-3-95?(C6&3AJ>N~e=e@W;#Xrq1K6Wjz;&vW5 zU9FU9*yO*^)7*rA_#ka(M{3^W*vGM|SU4rv!S8BEwX5_;8N08?GggZ+`f@Cg9(a`2 zo2{5Bn1PjEg??meVr^n+VlIC4KFq0Io5)M-kN3gnF%a8nzR}uPgDuiZ`xFaosJae3 zuA=b4V26K|U+ldOw##g^v%CA5)5Uqmo^6k_E7@OIqpX_NCDzT>6V?>#0jtD%8?Vpf z_F=oHGsgMM>E(Xs4$f@LB(gVUSAvK&$IJ5z{Auim>Wmk>a(Fu{#P^4t!0bsY1?pIp zb=qJU&57;7l4#0$=gI8S8IG;ENI#)JV5~A?<|=a!D+vcMDr-njFemZP#KZ7&8eiIv zjAUmfg7{ACgYWQ!ZZtcX^RPB^JRUb~n4kF11fs3#?;S)~e3^So<2ghkd~A=1g_IcWSu#?r674W=@7Z z2H6?e{n;Mgk6tf-j(^XYmzdIqeiuE7_6==Jo@X4zMm8JF?V#9HnyXPz_Oxzzc^-eOO+ zpSRc9ui4Y=8TKrDIs9DZbf-O?>3r-IxKrFcZi7s5W@)Bsc5c?mj`j|C*Z6O|tDQj}GqBmt&~FdZ&+Dy?wfH$-z(%{6K5GtsmywAva55Y|7AK}B zRub}9A@^4NentdZe1RDlZyUE5d+;Isj)&kkZ2hz9{pzpauJ4kjNFr5k=4B0ye(dHf0F-=-!J$yXdEsN>#(x#OKh2q_zCf|(zl)0#$shRGgcUv zm_y9%SRn@U8I$5qpjCU~3*yV^p^M|A<3r<><9iu<8Hi*&*56v(2efb+UfuG;2*xWX@(P zabG2?XFdECZL{681G8hYC9H9s$GX6SS=FoW4e*}!)_Dp@awGkfe%9|2%*9G63ZDc` zuTXhe(U?WqqBcd}K8@wkyM2!}`WS8fPFnc_<1S;4u>}v_X4>jEvB=jkjvR%r?%D(_OTBlzw?U5EhYlU~lHMursONbN{bpe2-QnNm-{w#DH!*su zgePnw7<(&&<3UY4W1oQ-XoW2(m(}cMDx$tVrmj$rt3|QVScopG( zVJbKrYzm$U9)yCsgFZpG;L0G*Q7cFUwS$^0X37gN)VR7LXcDvtItR^yHo;B70JL)| zl3&O?-n!suP|gfq%kU}?&c=mv*(3E8_=hGKjct{Y%Dt=#|3ulXe6N^l19mdDRtLk= zBy|b?>FM}CKEXQNPn*7*`&ZS~>N52?bq>D%?rJ-=K&_>^N|x2%>y@?2BBewrRt73P zl+H?H(7S#npYLfszhk$~qOc?!8%_>i3Lg!N!y#dpup`KIgTtO-yRaGS5?fRt3f2X~ z?c%U$SSJjFO7LGbyo`NxH9{}YL6d6}7KLrYYrsCc8oa>=Nbw3j=U zXTXol1F5l*D2{^a3E@P3N5K7%@UN7JJR3@xkH)VkZ^weN_*nQX z-#^Q_G@Ku<2;bpY0dC)F&<78}=TD^n11Ow=)LI$8wgS&}m8&Sx8>kQ6K<^ugccp~V zodo}nz|BnMIo2M{LJBV-gGF4w#nb7^(;QR4`+Ef6?;uLAA9A}z>8UhVu0V?QNwqd> ziyd$?Gvv3Q8Iq&$x2po{auYo63BL}vVViFVKjQp3=e3mg2EsoW=PRhXig{ZbkyVkV7wUyslTS0hO{D2%=5-x)D6(<8Nt5 zs7nys)HrGD709J2&=g}8$f^v)C{L*+mB3#;53*<&)*xmcR!23ys9qtLIPdd`ZIFt} zcY=8;U!Ujf;FC)sx1$8%<2Xp5hv4mKcrg5h(mMz~=rMjlKtpFv^Ti3m8Qzr>2I^lU8_6@~vRv3J$Cw)5_N&!Qx0)q?08M z9YlpR1K#=I(+bwF;Pgf)zJkTAkh?sM@QOt*R1VRdN^nx0UqPzPhi0L?CZRUhHK4v) z1xHnRB1b;=mHC#bS7fRXVwA4rDy1gay~0_9t1Ae!W$4CP&}&a|{tXQ}h4zRh{fgGe zS+wR1Z+@@%O0ES%_dJp~i~f{xE%>y;yF>aBigASKtUw9I5ZZ^EsZBb0vtq=Xjn(F6SvR;YdnS$~wc@=T{E5LVgN5 zhgkWG6GXa#mK^Dj$h|7pRXL;v*W_HiqC_sPxDvgt!j;qk(Ruk=WK)S!&ZDdolz5~A zB1x$~+5gF1$}GZR7PQ_|E{L0J~8clnc= zD45cMW-U0`au(ccowHC7<2SmNHYcJf!TUJzq@GGD668CHpF@ogpji;bMT>=gxt1>? zByb{Bd@1PH5<`&0BNT0UA}LDB(SIF~_abS@T@bP%S!l@+Q}FRKXhHNp z3nYfnB>k31QLZFE`IB@6%UkG->Y#iXRLQ7O9E^sVwgf59KL2?rL$XR%ozg+IQSVBd_P4q>Sg76uY$Aw?vOVX3? zcSmw#3NMBiE5cawQo_F-j%k>%yBTevZSa3?d2U zo(Y%oB+`75Nse~W(p>38vWVytx^rAf%>N($NQ2Ow<4Y)%JNb<$iJnN>k&LC>qSCt{ zb9t8IIFfYko#Y&qT#knvA5xbh8AO^8$xHH$zQ}1v6g$!_Df>UlKjK1kCkj!m$!Unl zCi-6)5p5CWxj2yorT#^-kyts-E?nhGw1UC^!ERhd5JjJ361MpR_!1-*L}J5&1*{_>c5Dz^Bz~JD_AqCTkE?seN|?x=p4Zh? zw{G3)Zcl#x@!h*Wzd4RyzyIZj-~agQ+qcJY+@1gZ^WAyy_i?;B-X6cb|LgrvXPYm- z?v97kSI4LG&%^1}@%ZA;-Nnt_^X%z#cbrZ{b<{htA5QnrKaXd-<7~rIV%(p{e!741 zrRPu*flNf<91-wQ41B$M@`^S7vL~0<$A@#Q;}Y@VvKH_8%=Z3*hIJy!1GcNjS&JR3 zhsGAu)skcFCIjUq5qwe|$WDf`=Fw#>-O% ztY`eM@!}{8v#lcWW$mr9b)P);Q9ORS)X_P-<;hC(+!)pjUFG-jNlknGu`|!L4%QfN zR!9{ZgGzil^Yihks@d8TM1=9F`7nmRJX(LNhhJx=uD8n2%3gUq+c$y(a-(Ll6U#&% z24rjH2ao1IEP|t#5&6A#lOA9}6mS7Q_3(9Ej)&Di3aT!#m` zO*~WqJnGn$?gaMJSXGb7eboiN^OByloa&}fJc(OwLq05$BPwY>(_Rh8lCeOCHd&d+ z`bk8C2_{=B)>iS}oE%j-nNTI`?r4PvZ>x*8?|!R>@UOpe>xpb$t8r|zo67T~yqh&L zUcl7+jt|!M-KP1K2P4-t>L3jmwN*w*DQaC!mAMRy@m7`1e(8N>-7y*7j&3Q z*37#6u1{149(Qg)VO`auWAmNUPDb)kUwa1hsm|O#%fac)--pwi^NyTO&D!5^#AxaR za$lVxqTKOYvChh}HltxzHrxMFw4U5gh-6LWz@5;X+ZE^Z(%QUS7pj%Ve54CM(_Pk0 zKDc9ay9)8VcNgefz2+z#`aWFZp?p3RGp`Lg@!Zx^3Rq|5vL|}>9>5)n zn6Zat_^cDN%v<@r4ls<0RMhmI+6}Eb8$G$^<3(lb-fabTMtnx>5Q1bKw3$AEdBVIc5uE>(8}*+%@(-#lHyk=ZVGBR%Z`lnM$MD7&9-|eGtm=V#Z}# zE#w>jL}}KOdvdDQJem8=$|+-B>oY#74rdzkv=cT4TUmrTw?LNHwCm@c6?a_KWR+u* zSZROi9y8Y3TGRnCU1U5JllPRBJL%mHDR*3^EIwgiwwDst@Xa>`a z@VoCaXj}aae(VSBUI}Ytm8pSye0;81?D@>6M$F+LZUKD(|Qb?Yyoho_x? z-5pXCNR2++yCbY!uK#kI9d%e4A6S7F#>>zsL~taRV!)<(Fk`hV+xd1JS<$;{8;#7! zdDetoG_9-BgJ~b>$!EL9<{ZE?c!$fWl^mT;Q-dlpN+qwlh*{ORd%Qe8GZGT@G=n z|7aiE_CWdBvBx%9hP%3!`RXm+2dy5)w%vrijtuEkzxg9R-va)7`uh3K9=~w4?-Sqw z`7O7T5xJLLJN&BnmlO#Gk;$-;ub+`my$m1O?$1G=W>f}RKnJrAqdqkz(lQ3Q8RN5D z?ZM_k@X~%`)#0c6qgJgQul0opClZYDTF-=a_bz(5?>D$CM{|1*aTj#I;9KuF1VgX< zb1Gdk396pq7YyQuOLq*ovMW;PbdI)ofOS@+)4Yt=Sp_ms#kU>7Q(2u#zNFQv{PO$w zOtGruRvpx>wuuSBpSu-{}c`^dlDUQ*;YfxMN@#g5PgT}V#>$&+FI(AT&E!jrRTV__#mK+W zxR-Mp`hObUbLW2d622HpJ3CAIHxsh83f56%p#pnn&2@I57E5>B$!xrose5bRw&4qm z;%g_9O`lq~dBW4|tAX_~H+fUc8TgX&eQz8x;ov|^JgoqP7nkWfSvKSRs$k6%R`NhlrL_iKNW zXZ-&hG1e8&I-;ZhS6us_1^CSUzeo7f@}J_9poDEmqPXi{tLQ&1&wDn8EU@{!3}0q^ zspt(?a{^P`U+tGjsc?&^!m=!&gH7Gh=C4TJ$T&UR@q!zIx724ZW28vb|7?XokI;gE zwPT`^MgH{qs$s#Bp@eP*GcqzeQp1#XD~37;%c>q;g2YE=STvO6xq%@!-B-JSUS*7Aa!`q`e%9%j1&{Fq5vp145Qdd`SP6by6pR2E4Ao4nr-oAEA zho%Kw85ngZT+WNFN(JMG;=8F$mq_EtQ+>~ILk+N8XYX#fS=3S6H&7y!I8e{Vi24{l z>1|X~f;X|;Ae||)I5N@nb902A2PVtasLSCKQG?}9ASaevVwOZQM%w8X&e`Df;9+&e z`yBonDP@gYBGfN%$F_>P8LsDLR;`0wLu1_5rWa4|*Xi9up^TyRs;<{5d_JX&&|5XmYZUGhiEpa~j)rarZrR6?;^Es-xzxtsAECnTVZA@R zC%jeXa>s{u1dFNXQN_adBggE`z<;5}fi$*fq;Yt#_gEzeH4FXjB-Ou#lScZQv+jma z?O=at!pt3`#!K_yKcT&Da}z%@ESy`h;iL=I3VrW< z_WFmjM5dc(?v7C5U{fj0%)dqbBRzs^Lv!8o=5u&jxU$~ubO}X*|EM}%_3)HP1N*)p(&kpppDE-W8c)HwO-fh6n1{X_4w+dxHuGyN9+p-{~pgaJZtG4`zM{u9IQt zuToSKDIVMrdge|ySt0|%pS^BQ%}|C=OlOwYHry)WnX-X{p$~zV_H(3Y_)JtXwK_OG zRL#AnPldOHSL)R6=+Kd14Hb?m6FwK&WsjrnE`hxEw@AHkFYl6y6>1xr>txYm!?7am z%w90lJUCuDqwS_qze)4? zs1j;-aAGK@yIt=I9|<4TrQ9i@Ey3*SepKP`o5(f$6wK5L#J61{Ey5GLk19>5VQ7dG z)WgClB4f-IFjFzuU237fzEKOMeQ;A~gIm|cjEoMK(JR1=6FQ{YdiBDiB9-iqffJ#9 zfi?ChmQ{m}oMif0czNWUIqKF9od}ecp-~&q-$}_DEETHZRxvFj$s)7$dSYvh;AJ@- z)iInR>Z)B#CQ~Hk<&iDnmLBLm*Q?}<)5x8m zhMVf%0PnEbrTVz{oc?k^kMlgxKYo0M|qIjvMJyGw7>>1}$|*-7tAljUZIE^c1f`Kq=vLY=pj%~O5D%$5hr zb*@Pfo7Pk|<85m7QB78b01(wK7xvt_Dk9+t=(gS8Z4_ ztFF?~ZZ^AkcZB3pA0)q&w>L~7n?N2(7PV1M+VocJ9NSxBsZUZ@hT1r`lKpJ|m7rQD z?`?IP&Q7*9$QB$$GB3+1K_b*&|~mh77h1>@=I5dA3VyIbxgH zCU%!?Dw}yeo6N9P>;N0FQ)Iu4kmvRXu9w&{vX!^%$QoOor|;Nda+OuZl&&_H9b$9K zF1af`WxLI93)}5>fIOFDl3jY(n6{?%>~0CmBDrjH+Ze35g?x}N(o9BRmGt(yT`4Kl zF$qZ_`_44BMdS_F<7K(kCSsP_@$!xOj5cf8+a{Ye_KxIH`{g1dUpGB%D@mtPslL*e zt54>*-74kPD_D01`=2Rdb4ozfRo~0*DCM=0*Jh_zQ%1S{Y``mIXQ;6zm$~ZXbsy^I zUR>p@L+iy>}8vr81qRVW6sN%N-L{=6 zb+VcwZgV%i>7#R~rczXYu$2S9P?=mei`6aDOUHIn1)ADNUROz@=IgCyvwPT?tsm-M z>YB~0H%ha>4ms`pU?-`T=7`?t9Q1jkz9KuNo^EI31kyTrbr&;J)wZSdkE(LuvpwyF zZAZo|T_=}{f%fXT_u1@It!)D$XQ9ATGt#Rl6;v|Q*1mTOIy1a{ zy12?Lw{;`*_u77l`eNp&r{+(S-|gZa(m#1~B}!tOEK&)~bo45jPR?)A-aJ)X-7_YM zmq^k&&rNze)UE97_HyejDzU0xOa3*Z-xA&Mwk_Lq}yDz z_O|OYYM|sXP1Q^{pZy#)!HSdDo-~i0QSjM)UN%)j)iPz}Z+EsN^_m&wxKhV_P%YeU zCcT$iZmCnIqOIXRQ5(Hddb+w!WF9Kb-4#}O1#M|(f^B2UIR~5_dX^{ZfcnwQvMt@N zD!YDSrZ_`no4zIu+_rX~*G0Z{4w)>bjZ@uOqeEt?^F}Gt!5(oc$!>3@4LfmVoW3tV zI!#PW-AVoE^fk3jL8qefytZbMlR{0^XY6KYh+XQHl-o`Z`!BZ1L*sj+p zRX?YIQM!lf;`BD7OmnBOdhGQ<&KPQuR&vVgB7v5&u(On~TbVzbJf0=B0tcvFzH~%nZc~wLAGZE*I8mC{IEY1dd(`zri-1oM! z{zV?C1m;g&z?tSe)hp2Q5hsD{1!bS3TP~>4eNF3j=!g*<@R_fj+kz3PQtZSO{ zDxRd*b!C^^gS8L0gH#o>Om}j6y0c9a{Yo}UBVEIubKj}DdJ2fIW-I8XDskY2jd-!8 zHr`aprw=Rei!)Oy${GKavSjU5~V(z&rJw{?iOmY3z4;yvi21YCn5% z$n(c_YtzI{fgf+wSye3Qpx4OKKo9lKyJ||PKg?l0!^t1WZXb9#WQz3HMQp0TdS|e{ ztVPwg<#i=u*DN{gRkTJtozWC`&%2{cEdIgni)^3IzAYMSx%d1BXVbKWa1^JSJEX!8aJI_30r zom%y<1N1;OFi=?*dd+P{l>;7A-yP)^F=_NVsU|<_R7Bu4>b}?0)S$_;N~dv(QVVVN zKG-Pvq{}l_Vd}qj`i7jf6LdVaGVoF+c{@!SB1UG=sof1`gI7>~mxX#gjC_mpn~rDV zsf@ORUaVFHI>>&nlf5CAbR#p+z3z@RZS*nvO#8j9c5)zrlU>gZay|ThD!?&*@xhg8j$qDN6zsl|z(oq#RR6&v6O{Qi8CJw7Q;oZ%vNCJZHTA z&ZJf!%ylm;bpyjBr`~U4stsu3voq4&X-?>~Fs=-GyS?LHB;$THQ8L?f(;d`UH?BO> zS*07%XSF%vOmOa*#b%RqvVZDIQr69;I+(F`ocv@8n#n4+bJ6V8?`#1XWH#G&&bO+G zIc8?aTD#wTmBCI+nQOM#sgfO@&`DiUO7UKCrsQK{gj z3vC_w8GhDZ)mAm_aTA8OG=~+FrL($ckC>|Vja_E%VxbT6t9@ox z(XHEUn@esrR&v=aFvc+dZ;(_fB(Ckm-M2QAydXk+n=ypnk!WcQgf_PiS7^i_rBPkX`qV`@uDC$F;yhF{U{Fx_lNHPZP- zDft15%rn>R169D;Os}+nU1ScMh0@>2=uDMm_Jt{8V%cVDh|`g1*uwr|(wQChqsrxM zl&v9+_=EIpk)suE*OHMezA+e4LflzMC{+e#*dF*d357A|(gx;B|PWpb;YP7m0^ zFrJQSez&K{aVO-uEp79dny|Zk&Jxv3Ho{>)>PM!6%I73kN#r-%kJz!_UT4kI<%un7 z6PgZYsbq0ltMB9hD14w(+8>qUJeEXQvzCd+%x~2)^$UIB^!BSBW1dMIC$}ofs(P7i zx}n`fjw_^oV;vEFPv?@P&VOp3ZLj*86}yWuala^ zQpOppCdo}Z()^;0nW_qt!Rw&?xB7~%BJG?gwG!?<$u!h`OjR`$TU3*tR?Hwh&1P~c zIZvo_KA1@`g){QE6L9{Lt@c~0!e{1$n&;FbU*xraWA~)e$4TSNkTZ6fDX9ya%4)qc zTvd?qHm>sHg7U~LPX(kiXAwYT+8`h^|n6meF` zZF|dfC$48wo17V{tjvSW7Sai9ZfB#DOC^-F_E$Yg_mLw`ZfA=8YkxHP^eppGWpdZT zZ5!A ztQY7r@|#=Fxx(EJrnH`Gia0~vN~(^1VD9SH`m-(R9(1zHMyjQ8FUld8|~&698>YC?CMlR`$A_xij}V?U_=?tRq_t8V4# z6ms54>K>J?=9ONl$C}crn%mSlhBwyIm2@^{p5)F`$?R#}2tVj2CEc9vd>Lt$>YgBI zuUg?Ya+cWSW{BRT58DgQ?`{>PK=KbdmU$q<-J4Eva?3WVy_Yb*RqjpI1iSsJ@91HY z$Iaxvl~<;(KImmJz10MFrjuXlnhZL-{?V>>X1aS-S9@N6_8w8|%y!>9_a&wsN}c)E zlyru;2|++W=Rk&nvh;oeYlL-lgMa|%j5@@*b%taf_2i_}QFTL10EH(k{lH-Y<1_8aZ(_lnuk zFs*#fC;LiI_Il{aQr#`#)=(L2Nj<~+)!b22-6>8FX<)W{1$7yDN5?0kZrcTVnb+F< ztO~j7oRGR;Zh23w#To6*TACCw-9Znf>5PtKoem_4IIx}13^ z51qe=op0gP-E>iVSUqtfDu$FWmGyhPq_cB|K2>=;O;^wdO-8ldY3|ICUrcSiM{lt& z)FJ1znrRPFtMs6LYU!+WVyoledQi*v&Z<$)1lV3n{h#h`W2u_X zIOmj9F_m;<6GM8dj!wuqZI|hhIyaq|1F8d0i>;vp=A3oZGgS&X8-etabWhsReOpPj zu|fyU9++=4bwg=c3#*@RipxtGs`in6@97P?y&WkLS)~TUmi~lU2I)2BPskeo#x*7kf!3HizjL{Uz0KuqgAdzGfQ3_Akj`^3(uR*j%)mVJ9(EHR5hMbBTPp zLdMbOIWO-_4r<3MNnF()7E#vz4Oi(S@zpT-o9wCW75L~O zHe#>X3EW*L7o->0Vny{b>@bV+3y1gcEC1QQ<)xsVmPv?d? z?zKtbyRS`ryA&>%lAd6C8BK3$v(2S0$Y#6AZia8{H65g}YA-YChK;amOgrq7L_N3b z;hBZ=R?xBx&%U-lmrl$RbRZGBuPSIUkW0o=23;JaP;aV|lMp)-K^g7IGu6&Mmhn%KltmEbnGaA|MNGWRahvfU-rn9MKuc#*E%81Fx(+f;;S>_aX_e)C?7k~O{ zB9hY`;cT=iOhwi_+}=}V+>z?Eak+cc6q4c2P3L>bZ6bQ8$!KG!Pfl{Dj6JAxnSFkQ zAxmdcgUuD#XKK4f&N;`OloHm-%~p8wFja&u)mO7qS2fR=xrXDoJH_Z<*hk0-&c8Tg zoEdf|_2W_V#(q}i+;Qwt^wdR6X}g`g^2O;ar(tz-%|_c-#YCUq+FxKA@#qYfc2c>; z>65jkW6_@)WwSGtyn9kBQ^A&!f0YZ5Ic1s?C41X85>~67Kjnp|Lr!XJ8q*J&XaA6(Q_o2&OSIn?io#2Na!#puwwX>zjXDHm4}kqAHC^-u z?#59i(8x)|hzA>N_pfUO4lwCSqU86_v(mBJcGdI-i|P%&hB#)gShEozR@5 zE^Dfca#?d%y~R|aWBVt_Pb7QjI1OMoBrCfkzp0|Or>QkF{kFV@hF$p0HGaj`CCYSBk8qb8`2 zAgrU_YbHrZ6~&9nh>$53**Ef)UTHy9*Y?&`OdaaQJJMdQmG8|+I#9dVS$NId#$Klr zk&>AZs++bsNSs%N${6p|K=XDb*#jMEA8B)LiK*)m0}6fX9mLBs3)t z^;avXZ|>1w`A+>ocRnsXn>qTt?X9-SFmzT}PGGrVbmFth38|;bu&M+$joLsi$WGiT zZ#L*;Qcl&DPEtdiW2_^0q^#=E4y zm{=+zIb^qNf%_W$+P0u}%q{oXsmO&-9*|1N(8<@K4dT58)I#~s4woUa-n20t!9X$c z)lT-G8kSW9p0N5LS!o#A#P2A#R@Y>mjU`p6 zxwo0&@;mk1THBf0^cQwWN~x^ubZlkUrGWj(q?Yk&wTz-$5w-`+6Z1lTR596GNg(5h zl)LQ!l|U^fbHtIX_N|#C>!}rgv$xsv`ec5#Rn&6uG0E;@&+Mp4B5R26C)qI@XFt*h zzb+@$W*KRJp~@X;hS(132P*ZS?QC+zY138CsWfV<9cDWaqs!aG>X7O$&Dp1mZTGTg zc!05m+Oa%UNfLWlGCF0EB&$tMe4lTBRf(NtQjKRHn-`|4oZ;!560-jgOPkx*;=wGo zQkDJ9n%>i;3_0iNyUZd2HKn%^rQ$fh%5~Gv+(chmGC0$zyIPq(CJmjKU#Wo=J2sik z8q?SQF0WNASYIKd>1?h>&Q{K0;_NHkoV=V@Hmm7QTs6vEAYzZP^Q96TF^O!~tHAwJ z+l}n;nmF59XCr$~korz`_lw-srSxdDTUZGkdo}&m+4{3dBR5nH_oNzRLSVD8T|!i@ z=q{ECx|Uu=WEi7by33tbHiuqAC6$YwK})y0N@Xue?KjRSn_7?3JIq6y-r3~dQgw`@6Odi|65%`0)&5D>)f3DFJ6x@#W{FEz zc7?u9EcnHF=nhmz^cSxT{hed-om+~1iCtb=-Q5hbJJc<=r!(DL^A6Mht|!`g?Z#9y zbs995(PmT2sAyW*msCzI%>rA>`AS8YmwNdL`C*YXa_76+o@!=luj-?R$tKT zOm=DNWOd`PGgnhT(6`KT8R?{RhEgdEV-+*)O7+y4sBY3TNNnzyZ>6%ckDgX{x=syD zX3%?x%>KbT>^l9_6{NNmMPReMrUS~E%?OS?D|ItPGM^D$?%su@3AE$vzXy5BvX#0S4a(Xxe zrK@>JWxtkaxy*TrzrWX)&}T|&7`#gTXIAJKCNFWZf>V*2xhlJY(_tJxvL|#zjkQ zL%!DjNzU9alj-KxrN4WPDybq_q^>Q-`v=V=yO+KHa`uTSX~RVNMp8m`<4nd6%$o}Ib~7OW|UgW&`VxzZ@})m+L_W;&7uC-O8+=JvV4-_^zOEhRfgLfbc+kC z%h8?Z74)Y{z`Ux#SkBnv^pc;^vv*k4cXa;FQM<&jXC%{DUlghCGrJjR)05P8LMjN!GQsI6aa^ZIZ%d+E(akAJtw)&LO0ugPEO< zegGbEn9~(5)m<3ISe5e;yWkqz(1A7UvClcOdug)eE8$W&;#ED-&`RhCCK@SB_gE3l3c@)7;#qN?dgoxNPXW2{2t;oj^-@RcuTd-voX6{I3+(%MTYgV8F%+89o$q$m0Qz6x`WH;74l%0ul zXsZM$n#{SE_ULmKGj-&&#e8^ODfSJ1W7lE}`Ry!KeQ!yL+znadUe16tmSVhJ5ZOv| zhNceZO+uW<$pFTBN)JiR&u8163Na2RUFvXFCAnPS-6`y>Oh$^g_7k;dZo3z5)RJ@4 z5j=7*h%A5{733v5EU%DbjnA>!1G!~Wf~)5CmF*|7WQu)6?LD3ICr!}&CRj;rRx*%t zGAmi}9QIU(fU{~arGK&USbyh-`g|DqY=q24GxMbllHNprt~9h6x|yp z(x2E6y^5eD0LjOAdV-Bjui=r*x?~2BbL%Ke$K($>8`hMQA?gOZ9#ibU%-z=Bg}v9I8*>P4#V2al zrKfa-HQhjG-?BG4K#c?0d+h<@{A|W5Lcir#dkKxCwpm!kSL3+u`9-b>7czTUJW8+CqNrtz@Bf>3X zZTYAN6XG#xl3FvKpO#Ben6-!tB}phrQQw;;u4x(i5pyv68!>t_HGJ zAl8n;J2KH9Erl#)>H?Y$;l`ilAM(T_%vVd6h%)GIQ&X>T+ zaI*VqPFMJK^B-J)B|3Fsm2Js5CGq1Ca)W%3gxYix`?(Y7PR}6wDk4&Dd)LI~{78Ft z#J`gp_PNPo`w%-)q0LfsP_LSG_9{`|MI*V`oqGk(8TBl6-G z^UkJJ^XO})V&A$PUObU=gC(h&OTi6Nv*zdI-}4|LA2GcIwoI;?&|kd;j>?m9wy`t+ z0)&1hTU7PGokQKboSbkIFLy!0O5*iMaI+m>nML>G2naZdg_p3mo<%;B+5X|o`8FqBcak4R z6K_6}qb`BAJw%g#I2DkMPRBHmzJ$2_lO4re-6g=@_>V~4jky|tfJemMKZqbp!20+2 z$y#JOKzw;iuJ`e`4-G`ZfM4DdF#@}FGK3cmyCJBe|L`E(VmrZuuIK#l-dTu;WU zMVwiK?(cxCmoTJkFxiL1m5ZRb7CL^;-)WF_9?`QaTD^?4jrnvk+^ip7xQ%?Dhm*&P z;j-P~beCWY2AsWvk5+_VB_aau03TIh56_8M-}32VRyB{f*v-yltT3hJLjxtgV6l&?m@)qO=za*76*nT;zc{x7Z0=XLD)o1N`BIvhB0vCXx7KPbfu(i=oZzAkGJ{>~roDKudEZ@Vb zS6~_XI(87)8g5&{qfX&BWnt1ok!QN}BFFz{D-$(pg0*$T{vCADYQr-J!Qba&liOsF z5M1#9Pd7u`>5+B~3_lHi_KrxB5f;$VJ_o9MQ!vM2fyA(U2z2M7spl^d1Eqix#%f3 z@isLm8^Fw|xSIigNyu4~< zHZNMrjpqmz+AwTe9%ST2lGa4SDzLi2Xdx9je4ZTS>5@p23hd=&zp=NpCOf>q>Y8YI ziFZ;WNjCCoBkHrWXgnWmsWjH>M=jA%%D~xf!@$#!jWiDMY zg#JM69ZUAT4(gtnv*h(=RE>|2Z5AiMGV^`cj$EH3V|)uon2PQCbMGiRk4v}WIZyXR z>bb<0ho(JiY)7563)EEPk=(?0 zT8PDvV2v_8g>tFA2yf8+iI55u*}P9wmzIfjd1XgLQ(Dt|7MEAv4BAiVk@AQLx`Fuq*rp7w?BcQAMu^DaOJJ=kpx(M5YcEo zV{av2mcTn(VC9WGza4CM=lno!a@2e(n1AU549Cu4c;25x`fJ40HN@hZj5QmNbvQY@ zfOQ{bta(%x`RP-PU{zarcO;Rn8l8#;SZWj8Xe#R%%GkMxWGi7-lgP#+@!(W2&-GYi zudN54>qlgKNY4M7kNo{%vHq5g@EMvWzFzTkei!uIzB9uE<^h*8ej)eorjuicdB~ zzwO}1$Emso5pVlqjq=nS^Vvlo0*VTQl#j63;#6>}so`qE_j14}I)d0z;JiP+!dWdO zyT`fPb;$h#qx}tQE5P2zbXg{vS9h2K=c|=R|m}G zWVUg5&`REIz{p8iTPt$fO7g&WXfMA^q83^U3iDBoykRvRn7a>tn2G58(YC{DIUP){ zO-%$#f(`P(bXTD73wVjI$IslogjXH}dp(JQH>klh9zYk8h){*<{}A!v0V6g?Q^{ln z94Zx7{K&b6!Q}D9JpGB47Xl3x*oj-k)fKo|HyDfq=l&0590sQoK=om)d7hDW!F3lS z*}rJ?7N|YUTE~z*#^T2p@O#5|vgp3>-K|6T>VCSm3-Hu+V0b4wy-m;OZ#1=#r}wk+ z3|uXQXUqqe`_XmT3s1$GTf;T-=rqYd^iLBpoKKvve(t&I_;r~Cq9RDc^()JNm*Ae>%&<{uhL%9n7^1Cg` zsSo24zZ_2Ixav683V@9*ta$^OWGG|3Fm2FM7iz5-DucvfFK;ULn!zcf{h*HTB!R>B zWTCepAdB5Vesrj7&y!0YvEO*Y{AJ6N2Soi%eYlyu&E)jWUQ$nWk@%d~9E)deq8pW2 zi5xKZ&2`3FL(V!NE$we6CGn>nIXtc^C&$e1=2!UE2==(Y5Jg8Z_9r~^ApPL2WZrIc z)Cv@|F-tkc zJlNMY-;nFc$;ULd3RXWYDUtI7yD)!ncQIqX#Pdd)gXS}wcox}oDs}5moLX*96=oOgaVd43f0k&b`C?L_ug&aA<#y`4tz^qJ zoM|tOl;?Q5H{ZS6kA^ye<$d7dI%ksZnj2K3Ymn?`vidTUlo;*Hy$yfMZqJg{Yl4u& zVC*t|0AtRgq4nhDcG8ctK<(&AE`cL$g^5-o*UkbnOVHr|SXFxJ@8|Xx?yV-i42GTf z9AE~rjKDjafr=HjK39K5qq_o;@EMY^HhFDc6 z@T<`N1Y*D$GJH?aUmLlGkp-{dC3Er6LFl(EJasSJZX=9qJQ4RD(R~x~;~KGS4AJTa z)%giL@;$ceL&iTzMRk==G7}r>aQ6x<@h~yAB-%+!4e*vsdYs(Q6gl4GF@8O`4d&a7 zSaqCHBY5midbpjD@;^}i6+d~8z8euMPLdg4@^nIS(pP-(G043^)mNK{`V2OZj|l&e zSkwmZ-b!T12Y2N=enj7gNNn+-x6EG^eXM7-$;qtO$x2P=oGc+L=Oo_TA*YojmeEBd z%0~FJ8hms*nYS#tKLI_l#?*Zi;q=vE{7Iw|pAEwI>21O_iW5^0Qz}5iCtH}Vc7(poxAcly62;SE$5ODsrtCfBrDDoOG;D!3`fz=lcUzD@ zdVt}XWQwUa1@&wNBKGfG$EJ^zoLJicuCS2Uxd|lJ1|OZMsn#=F2RPywIQbA*@_uqq zA+Wdun@$7Azrxf~GIrSC|Axapc$Sm&GmY!VHl4 z2wY!dpFz>P{~cexOXuk#I^KgFr;{%{yO`&5!de!C$erka4-x1ye#~hip61OHmY|J%rsGhmTV$x%DGdTcwuYSPn*+76o6z?gdC2fk08B#Rz^adw8K z+$0Na!P3`Yob{>C?xCH(@$T0!?KJqqM>yq1IBRn78Gz?xK$`#XxcuPTzw*E9vX@FE z8TmC15zWG%{vn5dW`xwR;~UI%48PRm(fZ)_7CAQrt4j|{`US4|j8)`g9QGqX-4|rN zPsSHK^?NY7A78nSkH-V!oxs&{viU98b$T-Jw^X;YSnC6DSOcz57?!#gZ-0dx-@~cU zCF{PA9J$~?W#tf0AHo7Iwi|#qZYQ_DK$e1_zZV&MBV#>gtSUsJd~}OelI_nBjY{BM zd{YA*A3!%5@zSD1#I-~%zZ+cxEoO&JpI~H*PJ0mnzQBFXFmp^iqX&9A080EmTRb?) zcdU2?bDbuxeZySoh+@l;A#qpYhsQj3@cDeq+aBM!#r1VYE{jJO zhc)gY_BBG9u>e&)LE?DX@o-otTRLf^r;a1k@ zV8fnx&VL~PFdE28G^q}z=HpfK7%@Z)b6}fux!#G~6|u#8-rdGb4_RX`R&gIaKgPz1 zvEop4atj2;25V)&OG~;BtH>Fj&{lmSQzce$6f{~mV;}Nb95CQ#j~C3`9=Q%Mv%mjw z6&;jdq(S)acEdZjo|H>QHR0MC5^cE7=j1*lg2&gEm+P+_c`ku13zjeN#Z6ajitp^l z8gcnMHJm*Ywi<~}`F1KEo1O@|oA~({FYv1aPIJL*|Dv;y70oNq|B~wAFn1Fpb4IX! z8l8Q`uCa(xe!q4#mQ9Z*et?jn8Ti}(#$mwcuBVWZ(aYbTRon8(PmEZKG2lLO?)8#$QBCxXSY}dAc}S{xdrA zC5iUM#PoN^vDz=>o>ti85fObE9*_X*4?+{$$p%O9rlO#DB%EOq)y6qIwG#DLJz~?y z=*Siy98M(~&Ww&#w?XktP<@ulaSdpSqMF!&{g*~pF1PW;b+9>??!{{2%?&y_>lte` z`x}1~gWr?4R-v^?YdAa}qOlFxos&vlrgr;it>!V;?7f{tM3TN8cR+PUpcR6M}`U zbdr{H=3oOc<{k2{f>+&Tk8L)Vdd+)d7%dA-x@|O1;}kO^_`hwWAhv^RpY;&APh$Py;PEykMVk;O9ZS#&xHRF*(ehx?n+;vq6XV=`a{e0@Fk z2@;3-Ek=Cu0FLqxS)K1#V4(z{V;rcgO3$DLvb{tPOY!>tAhs@y@n3e87r`i-;7iG2 zA-{2bgQ}npwMu{<{{(Q99WFV7`x-6HC9Z!_s;=%^*@8{_jaE5P)%Zu?3b{M(a1ikM^s%<=7pX*X| zfOc{B98Y&f!->ck%gN6-i7ZXg(H+*in2aIF*ov5QADkT_%I848rNQh8a>8EZEP>zg z?M3eGB^vo_u8F;GgS)d>s08}Tk8j;&{WtNn%1D`rr~Q0$ft*=5TGw}Y^D4;6K(t(zZcOEA%o13gnm2c zRlr|dw3>`{BPXBTBqkkT)|kBM?=>6+ zySEuR9TMij-doV}JECbSWQ~S!85PhX*-k30vUFhplG{-5#ycZei zDwZhBSZRqV$Fa5F_btcBVUTc&yKk7O0@3XbNV$bnA$+3PsMK1N5E+vHopMvA8`GJNLGf@n7uc*(*HaX>>^;#r8RQmiEjTK88Nhd&GX`!U4W z#OTidJQ>(b27aC}?>C^t0};7+<~(c72RdIMMOs+HPVAYEnfweNBhCgq-vEfz1^9jNK z2(XfuRVBxF5;N0MJg^*^@_Vv=Z+RSfhjJ2Pb^_EOo3@a2Swk{%yB?5&7`N>TT zo5q^ILC!4P4bqXF35K&XS6=Qv1Et5vA!R{F73_3^obn6}72~=RcG-tT{l0TCu$2Q| zy9RA1K^KMbwGdom2Z+doT-ES`*LbP#ExDPyI`%nF@x~l|}p3D=?mlXJZnV zml6#>fr2886~Ru2kW2ikoi#o{<_F}auZ&&>tDXT#A7HhyK%(yv=ZKA8iA~91gn1eJ z3OIYsXSs>3>4H*q&2?KuypDcte z_#KjX$qqcbGIGBIln2zak1uEky1zST=-xKawL3B4=H! zmlmX4B;#Bn&Q}8YnefmxT)SlCvUpAgJYzccDozF|j7^eZy{U{t2C`C5+{F zaWZjt4_WmTUA{U?}GCv)}Dd; z8d>~G*<&>^vGyIJgn!b<*K!K<=0|(K=Ez5k%80b@m`k|wJt!@>et;J_ShoneNXck7 z7%MJUKC%*k#B=B>1NP4iGDFm?N0B@$cT*twBe1du){&D{1$p)uk>eCh*1z`U+(Gv9 zEB@?g*=43Z_)mi9SeFuCzX~2+^KKbNONRd(=Y8RBNo*Q}+Q3IkEUvSmhxd%@cOp{b z5xJ4`J@-zbgPg>e?CA9lNIQiFbFr!n*vS75?pc_Ue@-?D8a>S0&!V%kAB&%p!_Odh zRz~-I^BUK8!A>z`$$(^682uw-mByd^x&5kN6DNw`%b&Qn7mdf`>HLiKhPvYn=tvo@ z!64Xsf(=Zxj*_6yFxQX4Qch;_QT74-KSje?z=yo28&Ah)bx(;758-H;(RnPSxI~_Pi(WFYk^qt)#U@{g4ynM7%k_0UHZ9o5g5*(P z`Z9OF!TRZW{v+A$KID*!0%BsHPgo@(TDyfN zd_NEKPI6>BOZ<(^=V4Zx2qfP?(paF**F}8%;5E+$u|+Bnr;#+mzrIEzEGs$5=hw0E zwYXq82`uU)9JKWad5T7l?ZKD)9!qlc@(Fz>WsFx? zB|q2iz@Z;$eJkZ;oiBJd4$R^t()zsY3v;}|$4^AR<>9-D$$DGCn9p^BTxl}mF(Q#) z&G>!ck6gck{gxxn7Db-x_?^!a3S+gbcf{k=54Y2U*F2z8?Oj#@$2oC{87kh4}05Up->AC0N4~s=u+(wPt+Qkv=*H zu0YO&)B_#JAP?YHm%vIj>e$X;_bPGeHEibxPW3hd*H@4-M1CE?d6y!@)BnJIh8R16+#WrcMK^Hb2lTS zl?NdQV0C__!teJ)?kmLNUF3owF|HhlIYN9r392))#tK;TJi33z(*s&DX5u{b%>`6^3f;r@0 zj~LmE-3sX}kQMd(e>I)SZ=1&zz)6ZC#YM72YL{hMwk0p|1}8z5CPiTc4GQ#9 z^i=fF0=*RIKhRtMjiC2ldq`UZZPC{55~qhCvSQX;N~ zGxO%n+uxh{J~Dcpdf_L)jv<%70Jo2c`);Fsd0_n%dj6LDVg~)cK+WSOd;Eym^Wga* z(pBV4`y(WC8`wW1zb+AP{vONYt=V58mov=$6v?yqmuTA`0}YO-P5zpFl+ZORf@fIw zH|*pNnfxv6fY=ZZQ=Fz^NP@5@)bCkcZ@^$v`0lN4Jx_6&F z|A6}ZMRsL=v4fTPIs4F}`~jJ_p7KMi#s=$rjQ1@DO&&!m{*8u|(TE?>n}EK5#WN(? z<4vNQ3Uc}263Y41DTq}QlymfjM1?oHyAG&*q)8XS{7 zT*EFW+4U_rJA{lBp{^46H>6LWk_-NA7GCwDZKG(a@1*nmX98Q*Ml!XzkHG6XbN7QB zKf@+ZVr@E*AZ7kJD_ucbw!kk9=IdZR6>zE}Yg+vY=FTH6F)-80PXYPsAT9pt#X00- z3oqA=t!xDg-GzOvG0VM7K-nGUCK=ZOos2HLt6gAp0&i2quH6RTZoK|6|K_Q;d1uY4 zWG9}i1|=S1{|o5MNoco?wb({u%(*8SZB0E!kM&L|s~;+Yk^XuZTFfGc#>NA*T=_m4 zlSjjPvCS2Xv{P=F$t%Zkfk|1<~3I8qP>j#901$VaaJ}?Oh7Gf zm{-x;d%){~A354>*3rIsBBHmCvuiW*i(qxc_hvL@EY>8j4rp()TAbcf@VbrU?1b1z z`8i~bBiaqT+c-EcfkPC5UWU45{;sgn1~zmEd3nk%w8ybPzcu8?D5U}YyvwYlW|0@( z5XxF9=+Vjg$~|OKkfS}!w?ehY z?#;*C-9sp6_Lc`)in%Mm9)^xRz&m0Oi^ONAS*06!r~|7)tY@91fV5iuZc+)kft1^C zRBNS6Y9x@CuY*=h)AHR5FN4ll!x{jq2DDhjQ(S?vo$PlJ>3M+!oC1?7kRKsWJJ`7i zaIUcK11Oe(8sn_%4$W9c(dtq5u?LWzb+eDm~ zfmcFP&28+xjKzEaJxWMl5e=Av(s!Yk`9+>Rwb8VHu>UH$Imj++^v+=kbI8>+y17aJ zF7h6;Jt3FJcn#eF!pU$eg*9|gU zvxqbegY_*iJ79E<*=FLr1DRO*D$vbZ9<%ZRmdmx3)w}Sf2mYS~QXadf2QCEpC@}jO zH1KAxR?>>Yr})7m_GOi#2ieuym|u8@=>%MV%IFdPc3)ZAo5;Xv_90DM@XZ`>0JsGx zvYEmj952IM zy-f;QoPlDw@LdL&!>sk~uQ;V>kD)&u$i3Dl2Uh*eO(45k7i%WQeaAr67IpD&2RM1} zn_tC1mul#!nCv5)RX+R3MumPYl~C(^-vG17cE!Qd--qgEr9Ay9prn9l#^wo1i@jK> z(Z&gTKUhr1`c%{_WJe3EAC2mqoAf8aFb%)`?9*R>4=wa^6C1HX?*RQ)rAqv_17*j7 zRz^EEX~o&SHHjU@?t$kRmTfxNwF7q5#=r1XCl+EG*cG^7y(EqeGzY994>zFZ4m!OF zms(iKOYFtdLTgUe;V0Pt3b0q8Omxn)3m)2xG|}vvP`U(;W{_Ht$zYowWB1gcw^+Fh z94oY)=*!h0Io{@51J-wu%_eZ|t#ZTUEhMIbJiMTHl6>ZUXewq;pwMM9mNQUn9x3*Q z$yGEl2kb{!m?idX)u+i^Zz|Q;^SjLTtnv;cI)f!sfBr}BHrDzkR-gsW#uXVLe+Wf| zbq~271FtvW@f>4kfOU@kA@G_BuskEW2Co(vdmkE_ADCS}4)ITn-gmG_o8WvO{){m9 zb$GReEqjEl`7F#iMn8o<#!^0Y;3>!~G&o@N^+1uw!HOOO`x?5ujkcI+d17J&JI~5< zjMmoo5jDr??F9J7qxb;*l!1Y)^-QcwsokZ zXE!E{G5Q5_V`yKRv5|#PvvWbq_ZYp0R;2kDPwW9J4&8d`HB$2A%6S=d%8HnG#rTz> z(5`{wR zm;J=R(x@i^oE&{s<{33Pz5(`|%=RXYXR_As%xAmlj|H3IisMMP)!ZzUItn(wH?)ty zv5901FxtAbbj`3k_mf}`#ziL>*<#HaE4^TEX50s~jFNVPpX-7@(ruaEi^x?TDm9@* ziMgI*wZT_wQN;`DnGYGe$cK0MBMA+lD23}t-6iH$q3Jv_+$Iw`55{%iJZ83;_Nl;4 zpZctz;hv!#09mcfp}`lR(Js0&1HAJ{^9a3b=+%8-z0T+?up@c*jL|x+G4vO#cM)C4 z2Fr6FsrA{c3qdj-(_0E>!Ug7TGWsdp{60F{%P!WiCB8Y~17MrKDgO=bn!L}RwcHPZ z<=Nc@R&xKJK|!Bl($Z|9!9Mr;E>bAjK`7-*QM7}ooEHI{*I7ZuGoA=aUKhGjTn_#>PuZyg7I%tl5(Dz-u zhJ<;VcEE@XJ3I>?H^SP+>}ToS0|zTQ-T)h+S8E^*lgO@f*Z5ms+XEiff_>_!jw}x# zK`r=by`+XjjU!+CjJC?7?HNNRN?>K2U`1wtJ!{kSoK_>d*mF6Iwm$25MF~vws?AV^ zw6@)%zlH|(2mR4!n#ZKk1n*Cn-!!3^QBM=Bn|#{rQj6$qibMLno6{HMUh5E5g1Tw% z0w)0uLs-l-(Du>$1UfLn=q8wW%A?jRZR<#k9=!@Yt&P#X&{B*wd#v!S=RYH0VlDlU zRlC`d_3Y>wPh<8WK0Qd7QAUOx8E2-E{1Ru@pwz zb285h`jM#`G_cR{p4DsTeI8A}V6AQqZkQ{}6YazX7<=o_`F4UGiQ6dbP!)v^$}47t&(=(m2o?q3Whm;rguO31@VwUA;;$5tur!XfOQ6xsV17>Mp zjnVF+o^~5~Fl!iQew|9(XJ9gn-cHcoA}U$|FYhRLel<()E)kZvoJQ_G#~!DEb0%bb zp4phCnN44WE)U6X4uLg6RCF4>{wJ8W(0Q{obIZSD35^j(Xg9#?E?g;qhn1Zra!aeM zwkO!tm*i6AU_UMbEy+prb7bQrcwC|F3C;$*^OVi=zXjUuK;LsABKragCZOa9cowi_ z|AjxE<%oHjJj~j%PiUWkYBlCsMYVn+{TIPw6Ya@Cv1ugF8(rS3@kW);Cws$3DeIws zklwGLr}Z9p*}-Yg1LU9;_+ym+5WKYvS-3ljggpThGnpawVfAJiPAhHW;9{n~8roS} zBgpXFH#SC&^s*0c0o7Ss3MZkNR-*-#&H`_rmA1ho1(mJ>+v-LG*ge2Lhn27{ppF#r zJg4CNDpsRTdz9WjyukvqUoktX_Zj1_z=1e>ECTB}t?i&q(_m5oZ!Mvb&1s~{oI&rB zfkvm0?@d1Y>{@T3JnJvoL59zRS)H+BX2tUybl+yCR=$_fW9-^HAwE|=02Ry`%%Y;2 z#W-?fjAtg5WwdXxSmp1PAW6P~!kZ`+{!>bQ<3yP~dxol)D`JDT_;_Y&PS!?-UNUzD zs>%5l6wx2=u(B167|``7Y4&&n?a=Pm8JmZ`)8MW5(Zdv3%S^~xoHSLgJh?BkmeqaF zG?VmKXdSTYNi@q`&-YwZ@pAfGb2Q^(@z!5BT5fvJN}uUkuh82G_K^?vOiA!W!`ihw z_9+Xki?Oe_}ajX2k8&R%qLIG zO`_^R2CP!7+)eKha9pt!zKJlag*kc%F>8k1=t~(&%j_fpO>?w)*)KaapBN0Vqg*8k zM~p<`%&)=Uc%YeiNhH@vV3{Eqla~WWbHFjPk%QLIlgNtRO?~Tv+vX|mQ2%Eg$_j=& zsw2}Qc$0YGfnLb^ymd-rsD1G4r`H`C)ijY(E8RZ#unWt-qwDg@BB+F+B9Pin* z8D=M#>?1qIYwlTTG0)lw(qOgKoKpMd-76)*+RPT1`0klzSlPJGdoXDr3tNump}yIa zafDG&j?uQ1M{SCnR!Z8e0%b<}SWEwIM37=F?_YSDu01phHHz$KCnJne2Xc(d@|}@_ zw$Mtr(M|)%M!fRuka@dA2HwH6CMDihdA!$ad=+u?Fi^J#$?#@`(rC7rWo7RxDPhX4 z`qF`Y6K)h8wE{1Uv&~SIM{{YTV<}-oBVO{i!HQB*>286M6*2dyL>~n!q)sY-^4K`u zxK!%3neBO!Rem*3o+~X%S&NZnAb5vD88u^FWxRUqF7En&3<@q+S;y@W>P71GK%}Xwv2sB!yZ9OA8k=SNsYnoQ0 zeNN4DkusRbO=Ui^+iL0nSoww(^YVVy%`;j*>&>$fFwdhe-l;LJQ4)^mS%s<@daY43 zv7Ninp&zS11SV$MTTsG^U=|Hoz~ihz!4uF(fAf-WtS73e4InKuIz~%fG`HRYRu8^N zdgw*1*{Hcb(Xb1Dt(=U~&N5m*=?T47!7OVTOuh5!T`p_7EAYannTl{Pf_03I@H{U8 zuf2`#t#E5Y-tRQW;ytU-z|mGOjU7CDl&`MjeRE-}_519>DAH=OH<#tJnNW0!Vm-)u z`XG?KJtOSlu*W@Msd?5+jp~gYlt(iqZ_;@q-kjCbK&uPhijRTQSfIU`qM9aW#G}l| zyEmgyz$o0jw2h@33S4%N+86Dh&oa3yErj)YGdi=*4tj@ad1uI7Sm~ALTa1pLK^vj% zySAcicqok4s#U;CT4(V56=v43bIOGF+gtu-gPuakH?fwQo_2|~)$24Akhb2l(o6Eo zmryT?M~urnS+!bL2C|;t`&{0^vZCb8Uhh0=FXLE0DQ(WmuZ^+89{R=^-J+#86-%Fa zF`H{L_uFR(+@bNKcC5zkcNo!PwrAx=BUS{og4(+hy~b?bL-RJd@}TCckNRObtcA2% zrOgmhlDQ}7Ekj!?6Gjc@OTyA#na{?7&!6Q=$rKcu{5@^LN6>WxAi=wDLM)0p|?p(c`&l^R6{BE e{8OCb&{A2mN~nd1p4Lzj^>p@X7h|l`8~Z=aR4 literal 0 HcmV?d00001 diff --git a/trained/assistants/assistant_it/custom_dialogue/sound/error.wav b/trained/assistants/assistant_it/custom_dialogue/sound/error.wav new file mode 100644 index 0000000000000000000000000000000000000000..9d0a165547a12b41dcfd5b4ba19eb3088d2808f6 GIT binary patch literal 3244 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%0AQGp-pW8rSU6DAN& zBgbJa6LuSt^R9kq5H*I$(RO_KK4Z35OPHj2AEGs%uAWYY z%!EwbS=rA#%Lf{k@Dy9Nj3@WZxU;4krzQG4o%nkuu%jQ_(Yf^ne6$^_Vm-o`W739j z@L(hOcHKfxPSdq6KZ8BwKL}digHfGBv_|~YB+WT}FhkRscfE51PsLY``X+BgH=j#r zw|50rmW8s}hLR*tZ3p8Xp`52X zSrL5~3^%NyZ@u-&Z8n=|hUkN8;!3!6QIvdonGS|hUs>f_X)v;EGl|)6Kt;+6FzTHe z{Uei1`mS+79GeHYr0+K_E7YRNK>}pf=0T9EE+i7;)j(=!kfVytq4Kxfsa0(T6xEB+ zNTCME6j_J@RqFJh@)A&~@}#!W&vAq&L~m;)p~~FZ#5=VWch+*rx7`WwFE#*HJefq- z+=&3u&-WmUOXqgv#p7Pf{qQSiH7zqghP(Xtf=7`mJ#}Rq`DSt+W`9VA&6Y)M_NHaD z)&BxM)9%Ihm9t2LkQN!bc^uA{+R)<@{6O22qu6${#>r_dw{wgMCiUls7>4c-+)!=MyLdJATFm9tMo-Zxp(%BK1 z5|oeTN8-?V^gP=2Cj-NK!rmx+gz87-h_G`n?)2u`n3o+%nwtl@u0+_-oWg#{O@y}V zyBUpXH(@`B5%Ih0$f{^bqGLIONS^1~s?CvHQUu^dUJ0yxo5VV3>ci)`O_~ybAB6Po*Ni>@hRB8-5#< z!ZQaU60G%w>2Pyl_nj9Y2HZAUu&Gt-5!onFCvb_!XITe^O-;Z>!DuQj+Rm@)jA*`1YB;{WHtesg4 zG9gaveEoQ6vdaPyj+tTIpn=meZOG*#c_3h5L@qg(z{}qs`3jXYXn{)%n3ic!g#i)r zuGNFwg+LkyCcgtx(9iFoeVWZUhl*v)Rf&s#D{;NKX<;I<;tle9U9rD z`^T}dx(r2DM8Qa?DLG_Oi&s1C(4xhZWIkKSZ+omkR2-X8*2aQO-TQ}!*q^ySXBvGd^E5{^RDqeZbe z6NWdgrB4b{V1IT))#G1+WS2<^ZhsVu_hznOt8S^#E1%8Cr6VD9)1wM}R$2hdw+hnP z9^692$&Q%j2@#8TZ*go#Ivxr-gOWWAKG7%zJ4<8Q-snR$N7^~sa6Ox$8->9xJkWRW zg4NOUFzc})32JD=XRbbM?n4u@S}_Foecyolnu9?`TNPu9TJYC`Gtln1il{%W#8(4z zL2tGm&%4(u z{J^eaFi;+aLIGF!XY!KosaCk!Gm6OqhBcc?Ji37m&;17nmSU zOZhMT2TBhmVzOR325oI&26l^*mS|xzzE*|tUc+tw9%Ql~Yp21R$>;G__H=wXtU?^0 zmSeo-M4HjZZGhaup*dZa)Q>(w;njk4VfkuovT&!@I3jD{qMIBMwj5q}Ph}qDt%njy ztZxWwfkFOyCbrugW>x)zp)K4!+?%764TWN-|7;raPL<9ncBPJOW@u|8MB99pLZg=@ zdGK0{*{O03q7JvS$%ze^6}Jt&e&@ou_-7F4^8lbB1DEtKCE>P5!JvF21ot&VU{)1I zp8X3dQ=^$H^`J_{J!-YA$MAIvs8ft8yr)cLdJ5 zyZ~K}WGA=g5)7D)$Dt1^aC!=trWsyAuU$yPng=d)!?t1k+U5;w_sk`S+W(-c*JQ}o zd4WRvx1;bRaq=m$$J#4hkhXsg1A8vj<`7s3b;9c8dSDKdz56aiggK(lqay5lYs?&# zi$jx=Rdki5FjcU)!0wN^fJSRxVqo(tc5~Z8p1ocV+hzR(IxnU}^#Lt9|1+mI2%1W= zOk>EPUM<(=acACNxq-J1`p_x8KUlM?p;YJRd!TEg@Wd|>sQjk^qe;WC?{FIA&UYY7 zt&KoiDHHON*I>DL6$JlS3!(>3Lgvakyj!3{LgX}fjg}>_ASVazu6_zRYCICn9arNw zOo2H&J@|NzbD@7(#&k@aO6xP~A?VS5a#rv&H0&$~f#CCK={^cGQ5EHIQittA*}zVY1G~8ty7eQPCg+TD{*LZ&c4mhonVp!MIJhFnJ0Q z)?1E`o|%)=mZLcF<2&g2sYpd?rjRyU530%Eiyi~zc-mH+(~RcfcYgrsUU9m7_CBij zM~j-R+k<(HvUH_L9t?)QK*!g07*P-cw^q8sr_?^E>l2{2*YCulh|4^p$SFZ92N?`m z$==q#fWp&5xUKddcJOs1e3HM!mfLw@mCJlu+`Ai?l4#d(Z8cwZg zV0EKUBmZkWwkC+ss<$`LaHcfKyg<4cTwU&h|3cA>e`rV(`& z2ace28&4Osu&a;GAjq{ori3QrTLXUxGv^3XF+0fj8(K7~&X>Kv5|GDH6*VP}(V3#k z5Pi>@tvE5n{uP@-q^FhOn#MIeSGE8bamlrLn_k1=2g2Z<4p{##6b{622=|_a^mgi* zs*dFMqsj|J2man zpj$KdfWr|J+ICTZZs#fBQs?iW=&+ouN$JN=lb(Qx{RLJgteWvivZosz_#kF?0AQCi zyD#G?P5ZV0BK(x`dBZOJTdz&0o%{^D&z{BW!^ZT6L>_!lf6OH1kEeGXUa|w(CD4XE zdio2Hi*sM2%85E0m(zzK^45@{XiOG_Coo4#7O@|$+A~HQkHe=4(`jwCv9(*4BrTQ` z#g)^B*??#nY!x-3TO&R)R^R=wuT`FW^<4$WOfu-_W?|5L6vTa>=ArIu32eOj11YC= zzIA9XZI)0cIgTVpJkm#R}kt71I6X$X&bpMo7~ry0Am9066e z2%JELd|W((ergQGYxCY?>hfmv_H%_PMN@dkjl8k8_7LV>XoDRmL+R@nU1Fo>h6U@m zHkPt7*|kp*N1te+Rc<0$D2kJJrgzxQE9!afj`loXHCbA+*oplX96$qpDUvz5SMhDw zZ7|-dL-H;!;Rr3d)O>w4vphVq~`MhdT87bb3jxW4(C%QzV0!KWakmqXg6WF@3Ca1 zUyQ2NDR9Z_XDp_08^tXhsCYFL_f}7(V-+P3Ih@aAm0W@qD&d&+auIrSv-O>(8u-#_ z8~jQu!{*_C%AB7jj1;bvOah{-ZZ=vG$)9c4E#c;Vws%;WY!3y=E@lpTf0yzh89LgWs0xjs)&!UGkG#y|Kl^WFm4h0+mzsrq6AvV z(YPu!7t)FMe{ysaijVKavndryD0+Q6RA$6O?M7oFEcgtS$qjhVr3@XFy?HOzsDpd8 zB$blWq(7D^621Htq>R%xgleB+FDI+e!!Z=!28hx2aq}_OX&ZhK^q>kejp(QHUep=X zhLJH1dS&uH+}*jKX&p(yH<`$KrPZ)`KPD0d|03`e3TKWK3!o$6WWJ8G>Fa6SMqfdU z4kU$Q54UMI_0%TUl+!_Sd=Bbq$D`%B^X#-)40u+(V$`CnQE#FRqKSm?eQr6P~uFM0jm#zD@O6m@F&!>~W)%t2I_V0CTHS&(u9~z( za5}Zmm8TafuCuvyduiO!U|c7ej!|SCQ!Ky{=UljEVcc3WwVX%)cHM@K7d6b5^9zX0 zokzI2Mis|L=#Vjf7${ZgQvLT?%zlohv0-y7ypO6y?bcq#UsVMrI}4)epKn;X^%Y~d z%8vLRdIUpabI1c<3#w+EhxNf#@b}Fu_IHv2q@aMEw+?&K(S)51`s z%M(>53y=-}O4#bLZ;)YhmytTHPNVY`Xep-_tV?~sbm~ul?C~9N`%3}tC=tS)%MzJ= zaynElLYiii79&NZNI>=kYQL}^q|RruE)H^Z=8FT&0lp$S zaA!l69j`z{EP=h~AdlZRas=6Fw(z{<2>*}f2l&BN!?_G?;^H%gEAy8#iRlt>L0z7%UdzzN z*5}L(r6{oSP9{#LZJ3Ge0>Hd5#Vbwa%!^ikHve=PWJ*qB^{)nVR9Fde!{!NC*%;C@ znGc!6Tjqd;Q~~5$8B*D$lj-KWT4d_vLDt3Cl#GxhMtsv!`aZveZ8P+PyUhl4P8rwW zy1odV#=pcJYBI!TbsTMZdmkNrbZA50I5H~w5HBy}D7`^0Os(!!=HzyHkp9N6TGAtZaQZfrM*Jme0;jeN;x;M;ltXssR*N$nzxa zHE62*a_EvwV_IBu*h-TFDELB>lz$Z<<9c^uu=hLA(H0>36TaK{?=v99r>`+{ES-^Y z%Z8GcTFl)?fxJ6OT--Ke-<%knwst$IvP*>oPJN_2ScyA*%}L_t1e{u0h9>20sJ z1@{RM`Lr@(-?G8X=5{kL&%!xLDb68ktPH! zB^M7y(?yM&xjoJuki2#rZjhze25Pwf{A)0i6s0pb^4KMxS=fHKinr(JA`&c-h&A8F z(e`a3Af{nT8w9oaW2RydDmBPN_`YH52g2d`KMk5!d5rO2Dn)F;n#$_u zfRF???|WziKc^Xym>+4-yyHCtr#j-2t6`w}?hYn0lc3sHh&-9kJ%>he#3kzj#IHA^ zLmeks;rZI+cm4z3;Iw2|a&rST{aA#qz8)+re2kCStwi~R5^3M?9A6*V1C7$+?CZao z_&FdPOX&LEwa*8D~tr$4t8v3su!*D$TS{C;Sm~E20 zoiFa7%AF$af6A8Z?m7$dPTo{Ud;uIu@xpRWP5JcOCv;EuB%Q8r)r!C z_N&&Bh#Nebx=)cvmrC*qzrN*2>eH}@`*+lcY6 zTw(J5OK?r!5tV1iqn+M{oKIf?PGX&N|T1!X~FeL90~lQ6m6}` zg4pKQAfTZ`AQQ(WQp1Co|crCYc85oMjN?A)1()U;NS>DG(aM4_-XldbRq>Ms+*GoL;nuguC zydYIF1fHe{kw7(5GRg1?6JpNo!)!02chC&tQQrx}e}?evZYk;ZGYm2#uT(I z&%jS9$of1ygZwRPus3@c7Ps%jm(vHa&?FCxGrQqrzA0%Dyn^Avf@JYYT{^5gMD@cz zvfWAbY;koy22J@|i`rTux#SWJ}P&NEK2z;zei9KSizdCFvvA z$D|PNgSlk<3#dAG*mj zlnB0>0Ut9+yEbkkHg;Ji6loOhZ%}J zNzb3V#<%Yi$Ju{|!KSzqL=rfPmf9L35_kgUtWu+4a^Wm?p10w<$Ju;Rp9}h;+qhOs zDViPSS}3*;5Ml!9R-aV7^Va}3T=rn*oKYg@R=B_n!_|zPTp|wr)F%VM^WdVV41OAx zCPo750lx>(^&@ID=W}OOLexn(7rKEm`^KSMPXb-w5lbINMzP)DE!H86IJH{(0&?!T zH5FLk$dk%kOx6gWL?Z`TTCcYT!X$$*e_jvU0C_lj{3=#Hw+F26rlD$T50^iDk3wGG zS>L)@H=()9F|7Ic8E)6f@uiEZ zV3ouwsMHPE+tt$RE^@k7vZjt}^c5REW61R}?(<3~a5R zK}U@#xwdVXHS-I>;%a|fctQ@{PtB%+rZV&}Hv=~}$z~=^IDp*`15L7(qw`vEW{1k-$Ee(6b&?@p4M*N~fLo3}EY@lP`7a7I zJYNHUY&wm)SGiVQ>2d5>dKcVMqKNsJ4|x32AjhP`iI&DGxK}Wfbo&JGZfHdltF_lS zGgc}-`Sy{yUGN?2#@3U0#bw}_V*qE20(pl%|H4~qT}eLp&`Uc;piOfJ%d0e@&MyqW z}bG1zoedO2CL-p54Qd&OvpOE0vWt;*w zy$g!jT%y@*NE?z>NQPGqs?5wM)!Z4jD|Z4F(&E~cBB$Z{YjIXAbtc|f9Eb_oLd>Zh zr!lH+h@D(-NA7kkMlaQPsGhQ&q`eX(hdwF6?E?!*hs{Co^_aj@nqGq^_K1_+CzNUX zyClXkXDc3ci-6$P946U2h2Og~mR+{*F8-_zV`+IU3~7kbD@CGk^w(=N7>a~{OcdF$ zXC91q%DoxAMFLNA_mTr*FX2^9IB(0H3Apy#QrgaLq@hn-NQ;IB^*ZZ<&Kqh#*ZCFu z+9E+Db@wx z`?duvTk?fT=qX_LY?L9&$%nC2h}++AganzfTQ-IcG0=KVnbd?9!dO!%mVVKq*K)XI z`0YH1zMQ}o)mYHvo7{7FYAWu1qzgf_M9Ioh3C=cA2P*T;*fJ4Al7D0|&Aa}X&DZHc z5pfNAPyQcl>UheGsa|KII)%}(#e|LCt4Zv{&*Jfi3Pb@$p|&vu#wSjot_2F@0vpK9 z|G&Zsm+kcNB>_5N&jnoY>^_h0$7lRyD{0oj+c0xc44%pIqkCs>$FnzA(Urj?xXn)u zWaBdE;S%mnG-AsXuW_I?VN-ErW+s@=K13Fl>%mvvQw&6DS|(ZyT~%+ua6tsIdPu0N z%qZj@Y{hs_AnOhFiRGth;LFh!vm{MOmD>w&zW5xrCh1V|Wn*w#=omCSQlrz=Yk}`S zjvOz|bYIKhTz}eqaN&3EV7TXE+(0)CoR30WzijBz(9~z>b**gWsnhM*e;d zx_hvr;0(A+sFBa^zj3atH0c;y%#@#1 zA>9W&Xqmhmb;_z{p3iosuXpXiRpN4RaX1x94P=;OMdx^Tc5Xr2qUWepA_~!$oM4+w zDLZRN5BSUK)0=_rM7vFtZtwpK;XVx@5%UmeyBD**Zz&!d=Z{Hk0l47s1}xg0N!8`I zlT#y_WY;l$&J>bJMk;m5v2F*d_3u0_yDmjvNrbRtAyditeOE!7$0ugK>oF$M53O(7 z;2uRydX1Y!G;kM8ySOs8-z1#Pek($cEUJRCz%;6Tg29%Laabj40f)6Fz*D;@ws)R9 zpl$}~U!p~Nn*7N2{rlMFi=Jc)N0xteful{fPb0M(7Sh)ItNfcX4gB`vP;kBjP~oze z7tUp-_Du{1(}uaY&PaghOOeb-Q6b9%YCx?>li8U33%}X)p^3st!E7mctTqfNTApQ7K{E6b0bl#RNKc(tMIrNXWH=r$KzLIBDw5v85d* z*wbZ3?76*V`j&L^DbXG$_wOP0ne%AsadEm;#e%d-8^E&_x>PMyfK>jz!ZwB_qRepD ze`;8K7$<4_KWw}aWv6cMq^r!!| zTk*fKl>SG_!uCHj7PfY$Z2yx^RA+LCZJ4JOo!hXH7{8FBxBEG4**9lmv)Pj@ydX#0 zR>{&8=RRQ0`yrYXTZsI>^ zGdWD`-OT8(8HYY z(T_LdQ57A2P?0w2Gna+im4Ic&)>QD)2=DaFZRD^1Qle;84QWPkaLh%8EVT#P$VAX> zBH>iqQ=D5s*nnirQvB}YK=zl-rLNEAsMoR+L}6<^bIDnm*vX_|xBODNsdzeldsB`G z7TCgwz8zd#5JV=td54zQd}w^hAQxI)R<-QD9!TXEqVR4)^4AqWy!8@dI6Q*U&J*#M z)-dL7cBH)(bE#BhAnG+0z=&ZeUv*|My%H^e3$+bU*D!*4VAqRp+s(N8@fI>|;~2U= zdxR$1Ml@Mx3UT--P8wcqBau%ASbvy{jtidC(O)I(p(83ZZm%%4e(g@zJR)kjH+ z%W29q)Zx9$zF=tQO`R-bsYH<=dA@HN+>(2V*Ov+NXV#k1O(!zw=oNLszqJHXYA%q| zyf(i1n{?P+5l1{K7t@4Ao5`!_&&>Q*OHwI+j&b2MvB9m67`IP}AfR%F`l%kn*M94% zj9L_mM8AG1jMi--8Q|0>$P6rq_= z3LkZX$dQaRo~EWAeU;^lt5zD&Qy&89?PrOkj>D)njcuXcUbZyvX*{IOk|By$j}wDR z30l>^i8LoJCl>#zS%EiwAl`9=N@i%WWv>onrj!6-_pG43k)zCDP%Tr*NRhD5yXl=7 zMkwIM4Q@xBs8M7r)9N;b`@0HIq2Lg0{rVlmW#*B~@h2%OI)w5S$z;$lm*uBTqFu-K z;iSKWQ>JkT1*NZ;WAcfa_brL>ZM+Vps~Jvh5JLrDBs2H4^-0j#Wi)SZ1gr@u0Y;t+ zwr?z_%7srb`1=+5y7N9H7sgUuy_Mjr@(Lq@dhp5}Rr+?33*BKbRAtz##IICofG3=O z?z4$5_0(TZf>jrA+5l5BBY!1n8L!5LtG}bdAt1h;&2UeeVRBN!sm_7}JlzGsbVM$b zZW@1_woJdnMvfiA-sTDpH)e!YoeiKAdWiO37N_1_wtRJ;B%JGQz_cBCf+yTgd=a6x4x;U=^-{txx9r8PjlO2{KQTkU>)}I6fheQ`<`L3kJ-XR6lz- zd{~TVxZK3WwJRt;CIikSoq?#8DcHX37%|*)oD{s$=l}ZF1>-z@=;SZqB*$Nd{wbEC z84`Q=ejHlJS!*&~>R*9J<<;pE|II{vYXq-U4{^ecRNj8L5$0X#%0Wf-FxJ$CP9xi3yR^(8cQr3 z>ciJ_8mL~-RjdAm}^&E^)@Q!L2a5 zP{uV}N;MT_pzUtNIg{#z`=WrWpX=~vzeTX5Kq`X$QsrmQbKU{s1z>lj3bCQ=6 zzni2XzBf1lT0@eh;7~IAEewI+&LyBLX*W*1+{FEjwdrrn11Ril#;FGvveWTzG{Dyk z792bdV(d9uC-~CW)*aMq74VP9MD+G<1}pz8i28U+nBh_^6t79A4bpQicBd4+y#GzM z;)wzlkT%culi|fZovG!?DSB{gJ2gy?q%Ze1_@$3MDZH@9_lMVT=0r`JWNCtqv(=ux`F=O64?}|13W)^X;sc-D-OE*9=_)(z{JZ#*eg<(!SV36vScu@j|jZD$QC*gFM5y`K)w6$vP-# zxG8guXGi$DUlGqA34o+Ga`?qt3iXZBL9f59aCy5s`xLtK8=+Ph+~bh&-MhIeJMjZO zY@5sVpHoHUPzBs6UH%>n35F9Yj%+^L5&e($!r=!x!#KSseIvqi|ZzS$uy(k<0JC6I<1m@$p|{@ueoBuiJ33a_k1O z-24ZgH{XC=NtrC{DZ`gfUctSl0s^XB7>$Dio-L&v~|K0 zaO>KMyGdoz*K&6JIQjslgjB=Vj^nt{&V}Yniqc1mraxzN<_4qIMH<|wf% zg&v!WwriaD{J=KxblO_HrI<=v^`(++oGKnWo51RFtAtfjC~V7bM*var}&Ia6;=>d1=_vcmWJ@CTJYO%n;hKqg_3E^22Ii;5>Mxz4D zS&!lq77E-FC+#nG8<0g>4%o=4(aWf5Jn7^y@M?*`@!Q{#O5JFF(l?G?)i5;l&lFxn z_r(sKZ$hL?IoH}u!p7d4LH}1MnrarGYUw@(Crl6G#d>BO-a&y&aU~qR@QZ$opNc`- z6Zp95QNHvv9s4<_N{Gnr*eb?SphXfJNZlQe*@;|o@(0=(?4xi83s#oGwyv!&==HK> z*0afgpY3DVz28>YtTCL;jyUuBMs?O`8ih69pW#B9CTHaK$Me!<%*_+8=##DkHw9;c zSynCNPVI!h!(F+e9(d)GF6fw2EL;yMr0mckSp9q;cdY7zy7|)Dcdng|iOV=p+SgA1 zD1}P9y`a0_lF2=IC{*m9&)WO5P}XivuaazKZ-gvxpS`%sQrSm(50u&OKodQGrimBT z;<)j|KGtbl&1*x>(||lXq4Y)zX{s&*3ol*qbG9jO?DJ2UH7ya9m$>r|jg|P$MTIqa z6ppDpM+Fk@xqRY4G-?~cJ@WfwlY|&9Srv=1`>v4A&B3IWF@(lGI}g7EOE&NdMi|1TCNdu{TZ|^c_yO_2=eHV~#l1ht)%!5M0BcWVi#`Zc##? z+wuH&$~5e2xDtbEdT>HzJM@ZsLH7>WQg*5t7fa`!N`FHPd;V88`kAueK43-F`#UO_ zx2aeR`P~Yv&4_=u1omRdI<2=<)+{xlRcz^s% z*|l=gXL}FKRvpGQVZQu*%UVdP)4-`?KS1*oNsHN>Bz%r{=EgrckYPWK<;2~PbHx*f zsoWOU_c%urGuouJen{oH=Lx9%Qqr0gjU_cDXKcGY8Pey^!j4nN$<%t+iQ~>Bi!?Bf z9~5oEUyeK~ZX&cdo+fkm*W#r9^86@Y5zRK|ime6RxTNv}otMyu@qub&`sD>2 zpZ^eECb{zQQN#G<>uN}zV8*wK&I>-p1e51|hpF;2a82bA#)u?AR$o!o@6BKaM^)&u z;u~eaKvcNq2w~ZGNIuB|?E|**l=kD~^G*u3ShkUCcPDnWn@Elh3Ow*2aL+~Vs5wrT z&4)>7M<+vEk|w~zS#7d?(%$oCxl{zo^v7+oE<89d8P87p17chvZS3NV6IZHpLRT{( z>dHS*8@h-gI+^E;8ckPsX`-9&Ra(+Pg{f&X)Yl#m7dLKa%zHzPHu*46cNA;M9I;-p zH-GJYl*Ux-fMC^)@Na+vR-D#kpGI9YEQsXyOB}H=`8(xLuwV~8eat+Uh)X2I%WSHq z*d8S`c+4h>nsk`{s88od{r1tJ>yEhK$69t2M)*LG#hRoQ@5 z3M0tCG7L2|r2V=*a7N1kY#m`iJff*SsaDwC;nnog<5txz-nG`4f*v zJ{$+j4{j)P9$e*mDIcaRip4L3RM@?473#TJuzvVo8lN{F{aocCFS3PXHnTXa`y}W; zHkEQ*TPV}>IXzi6lYhOj=IFhz$i4Xvz)E?{R~w6gPZse-Qx}NKw&tmon?df$MY^OR zLqmH(+`r=_Y`hVSV}A4|a|LbocW}h}Q3V`l0m2VQBkp+C4;NgQR7R`Qa9Y8gs`*`{ zvV|0G>-nGqyleUnsl7w^OVMpQGIS4haJnSz6BY2}tc~oflR`~5YlS|~jS4@e=dt~cOf&%dx| z*Z?s5If&CY+kwudbecZ&7g&CD#Ki-n`D$dDpuE+NXK0M(kW+Eotk8oy-;d#2u~8Ux z(FX!t|53#tD{j7K&o2)Q;vRns;Df54@NWGg9C>INp5FNtlyy>hVEb%7u-14^oycPF5OUN}_bN(gm@jTLovq!2MdPaPeP@L;gz9xngBz&WS?qIh0wOQPl zJFDvPV?|6Dqgv(o&IXbx`O!P{yVD0_O9?l`27f8AGF`(-Vc zOM5rv&U4wk>^JQ%QI}Mdw(Q&-jF~CU+;!nXc-kn#hnL(iW_=v~i*#nY)LpbRYZA|L zkZRXwwn+8kr8HZ@<4%xGg=SAz+`dF8f3 z?MY81p<}`n-uOfhvPQiJ)t3>hQ6Yy4CN|jmxE96^lFDo!95AI#0<6rvA--SX#RG58 zqUlsglUL0IlTFKUv$YKrS$pHAfA6U@`L-BpQHWFKAE#OkM~>}njDJ4gg}URWZ0qRF zC;N6p<%vglbJk2^E{Dqj7a?F|AN;_D*rK|H!>9}e1ME?ftkp}X?CaHAq_;nH{ zWU!ibwBT6h3@XjrD+}9mIe(iy=IkAhB;l=XK6m5Lnd9+H_(!q2bsKh>x&kA;`ip1( zJ%^ssS;%1QJ35>e4hCQJQ6+l`kNPCyI7tsV$ITR5)|+tMqfCe$oz0n5b+jU4H5A`S zqEzRt^ewp+`YUPSvese3*G=~!TgiYmr8&yH^54=WfC;~Skb#}#^1y3F5Hz((CHJXQ zDfW;z%C-XTZj==1-V(~%`YITiY><}Ee=x207+5drjp%rO5gTqBM5Ds43rE*=!Xi&w zq0J$ZClnZCc9J$7O*=@s>o|9oiXHGH>}taAdGplPUyBX5!8v{ z$H6+8!DTbBwXndQQPr?ic9x#6nZ+zJUF;uhjCx(HFmvE(7_}%0r=A** zD|NiMx??l!OcZ#w<_h+@TMx-!b8vF^B)StGfLaSfrErE3RxDnH2Dy&dc|;E^>3j*g zv=k$l_QjJeg<@f+UVN)?0Cmru0w0gp!JWDU=)9p4?<9?8%dCNTuhT~uzOA0NEXXGN z(tPkSn~J;7zNGs4EF9Bx3l1926;`<=&{2OAJko6&?0vDEhoW@e=&_!TtqbC_k0$a$ z!2#`J@>#`rJ-xiqO6Og3P+`hn37Nl1aBWHC$7cdr^{q8G+P#N))e;`C}yN%#EoH?+HBuS%@BQj(rxr zr+Lq;1y83L{8YkgbxnUnI|~{}yZkCtu6<40v^qfSt%3A*&19Os0C`^LjZhF(50x8M zL=Z&ONy&-Vw?CHEz!vx=4i{}!nLil^!0=%<#2)&m2viHUa;ji@s zp0B)&On0S&cEm?2c1p&S2nX?o-wgabVi|gT^TYVrE2!mmF=eMr=ZJSBp?Sq+30v(C ziHCy3zR$JT?Xx_GH9ey9Dc0=qy9OSZmtnP*3OeQggoFD3psm4^H%VoQ#A~CewR070 z)Q#o}uLOLjbDHKE8M1X~A6_Q-@iC?4JU{OlWd!BH%{euoy402qT$75Rl{durBz3%# z-W}4955*XE6?b+X{3VN1 z!?3b=CeBhjD!Sde2+HNEP?TxH=Zf@jfkrGh4z+@**T2XrGv&DMq$#`UyrzYUd$_h@ z8YibV!K_^aATigKx2zo}x;Gr*QkPUTPT$9onvX?G^I7N{)*TKGdq7ts$6;M^D1Y0T zDqM{GBsgRS;`?>Rd`4RZH-sLhQ>I%uWTpr&2216{Cr@BgvL-d8PT@190em{IhN3^Z z;;t{MIN-FTNSx~PscE|c$oKnF@9eX#G{_*azoun zPOR#MSLb)+VUMyY?X(s9do4!Ia0%x+(-If_9#2V8AE9++7#6Qn;Zd)Y`CZ13svN^4 z!Jwx(H>K`^QOylvVAD&%`<@g2?cD{QMeG6d0#(lI?k7Hs8_BAD-cu+4XTmDi0=7T? zijq#gq`lmaeG~l2CnTBgYg=&c+y>a*#|=}H58`#5A?W&O3+&gKj9D?a;E$6Yy|>(e z17GWN_8%?o(GB@djf=D=+yO6&G;wKOAvnuzqFbw?Xk%oN_@@crSBV$#A^FukO!k)8NRf_j_kK^2urFdi1 zNm9OJj?R)M_I!dd=0Eje^@tK2lH$%Lw+HZ+vmw|xc{#6MmoAhH9M5e(8mjvHOy@%1 zMff^+0|x~TW>vwJpPzg}{f3welYbdw#%M_+9Vdmp4C3)!e*zFriHr9A0TtinICV;Q z{4>spvk%qM3sJ)JZTNdml2lSg_GFC*E*=Hut@EpNz{Sy#1ub zg2ilCUNbIG*!$X%{TuqTzVRHMY9Zl>7iNq1rNEPc!68gsugERgzhL|3Xi|P!2HO-e zc=m)27a2e|1iv2)PY-y!|%WYR2-i97WVy5GUIB3}%fxgV1q)E_faZV%>H- z>=1pHta7H~?eqCCMx`?}98Z!8`31E3%>=w77GOy7N}ikxj!tq0OQnZpRvmbx)xkF3#lEPzVuUdvoU0FO;U12|0(usYH9a6hus;&0q7X z%nOV-|Evcbc3MPRn>Cr&#lWdK`I!EDG$voVBxs*VWA6TdCOq{7S36y@Qi;YWB}+`m zn85X`#^9n+V{vd*5_ePShnEIwvSaQ^c=00@D`pkZ99;+O)>KI{=MLhDY&q8WE}?9< zcyNeAG|txu;IzhCp;bbND|!S-p=3!b-7pkKs~)E~7*E~(c2bk88BWcYVOH`u7`|zo zgz4@o9vmipPE&^A(oNF2$k&el&A0*&mr3BN`nIa;^L|wgu#b{v$K4?LQy}k`G#qp0 z9|qeQn=$;?J&?Ugm*&UMz;JYtr0Hl8^v{$Dm*$%DX>lR@6l@0{btQV`X$8Kc;>Ajv zwZdFGX->Srl~-9SV;EP0##1Y_)4fAa>^Jh0!|AxLXtfZzBL<=@7vs8q#bgz;9@SU3 zLo!IJAjQ6rHmyZcBh-m zMn~>8>K5G$h{S?*{ZQxAbPlYjpeOA=;avIzvd-PYbE{R@ROKIy{N%|~PY-1sqY~(_ z+6^N&rBmv>0kD4A6yDL03J*3s1VhPp>$5qDg?+JA|1_qMk*ybM&kp5}dcUcU_9YtJ z^(==w7Rbsj7L)#$rMO`16I#C}g!3PL5CVUU5YEi7#>g98*}FOqhm1&vu`#RgaiXL; zxTA~%V`s5ezCCZ1LP6RSl<{_r13tXHm)7tAzLhnP+7L3dCK)V+mP&vn!2hDN7^^Yxa^_gTm=NiS;3Kinh zu~{@^u`=*`L%vo$LClu|N?i@6;n5;x2}rOL{&$RJyS%E~|L2g!{~>?ypVJoqzl0k8 zSM0+3KVlc-RmXO9`+tjF{2yMnYMjx3=kH${9uyKWCp3Jq)y&Y4Wdmo~ESw!4GJDZ~ zgfRO2M+l>jV`iWK6vEIlUfaj8r#a5wc|kldvM2Z0p~njUZVMsfocWL3NGU=7N_g>Q zC~Wzs!+-8-S5 zDm?kbNfOm}Q*^nE!y-+vF?I}TeLio`++Je&wQG+;vj{tG9bHEi4*Sx|>NWuserdeJysC_XhR0h4{PA9{i&?lv|dq#kxW__Sh56 zB~4v9=YD4#-J=VXu31C7hPK1N_sCwkn!>taC6xI!0eif1#*>?Ra^;mkjF+e+2Pb>u z%fAic(1=(*eeVHGET1EW)hHsg+=D5HL-=QI5Raei$=6&*V9bJnST40Q+*)g^63~Z( zqLTQ?eNWD9ItfAD)1lJ-H_dr4n6-ls!kV+QIc?KC{5%=)N9boEd~%~ut*}?C#Yfr>YTY?1*ok<)X=f~-vGf2F=1f#m@0tFnUX2Th>b$N!OTe%M^ zmTlvu$9iGD&jOC@-Aq$m7h>RoBiMdi8@o@o=6gL7VCbptlFMg~Xl67B%N=wv!7Yi` z2%B)~&&@*Tp*#!pJXh$1aH)lkZTM zf5D{mx`A?|cM0WkGkDLM<za4bxV;f>G@n^#8t}y7cYLi8~~^O(!3IIL29!Pk2E=l}l)qZ6{U@_rZ*G z>0rKN0SC*k=M|9`$kEu7f=)U@Cr?*?I%N#0^t8n4e!r-C>m^t<+8P%g58@iRBk<7i z4F&#K!S}P5!TG5}S)*VRk6AO2ANP|sC<(39xqlBDsdQS*(sblU4IOY&U5Z#U%bo{I zO`U|D#Z=-F2_M!@Ms>s4cxj0q8mEnhJCX;c%-;w{M~uekvp?W-!vwT@n*)N6I@)KA z75Y3&=3ovW^>-gBz4je-YfKd7FL|NX8?Gq~%XR}_}*Q$~eIxwl@V(CzM ziF^kbu+z+Lc&bpIk3}4#9$!0PzO+DZn>7QM#?7FH;0;(%n@{_$^<`T-CEPI5p1=5o zV9+Ir(q=mg#k?HYoSFkG0utD!`$F#9eHhy3O=bVb-5`C*c+R?&#GcZ@CsSz@RqRjW zx&2+aY_B$+zxtaV-&;xdZW*DTyA4Y=FVV!vj7HbkpiXZ))IPmII5b{zin$LE<{6%( zn;8YvqS&9E?xmvYv^i+3fTSHe9DiEPhW%sr$ckNiprx}G*Vin>7oh_1K({~f$uSDe7u9Sdv z&9xBwX$7v#l9InEPIyB@g%tj%WA)kP$X(|Py{iMNMn0NE*$bP&z*a{na!$lz$ziZL zJC`lX=W)iO;e15#8(iGqD%g*8!=n%OL-6%$(k7-GEvSs+*>#Cf{Coi0r~U@ZOA`@Z zjHI&qbh13PoF}}LTqVQuVfEzapqShZwT{h0oNt6Hjbp&T!4A4M3EZK18UG0H#^1-e zvs;U;@b;u5T7FE#BkN8Pp+0<3I8HkkjD}3fnLhPzx&70kPT)U17emiZ;abbL`$rcTqAIgq87_-yUo@hMb3Z3s^&z@ZzX|lf^wvFqD3Px6> z@mHb%q-o=VB?8_k=*v_36he6LTR7u%Lr8g1L(^O&U(4N4RNWFntM=7EFQZQEd(eT- zHYDM~Zqw+h0^+POqww`=3sPu%LFG<0LZwMLJ^wa@BWthFt+rjHpEr`|LN_QqX9{QL zjphdtnxM2lmUer-6gqB+=Cl_#=wrq*8oDD4FO`RhD%I(d%VH-yaR}!by?@G_)E9zJ z*=U5Boj9YvKfWI$dB@j37sIsOIpL!&su(Bm&M6b{q}Cp)IK7bvNdLPNEoyjP>p7W9 zB)mWOd-27i-SF*_36Pe44uXU9aBQYNl?+tH(4X@mO8X$J$n@mOOJ;oT_+Qa6$XVE) zDDvUt6dZj29i6ETCNU{i@kz55T9+z4+wrYc%=G zO)`F($iF}ioM%aX<&W$6u7W$4N*5-@xssQ7^jmm3V=aaqd5W+8qE2y(hO$27 z%2#rmXndPJwp+{d^OY9-H~%)wnP7k!e=mwNcOZsuUco2!E6Y-*8lcj-L<%bUM>nq` zo@mPzFaFhmb>kmH(=|KpX;uS9&T9D4Y&qVuJOurIwv){;ZJzJ8fDe!GMa{DX6jRxQ zXN(QuH=UcnQNDxtthRvy$IQn^c47Q(fUhv1`41f1uZF9a+^3kchoR@yNL*M_1LgbU zaG*jKXDgJ^)N^`VdUQE=3hT+yf5zd?(|h34;@SAnD~kO_JSIPJuUM~noK`CxuCmZr zgHqiEhMHty_X}&$ph2P}N*|~C_5?Z*qlSJ56S(HG3vce#S@@gQfd|*L1JeVgt z{-v9v+&H3hBzL-IiEfwTtC}*#a_-&LWbm*%dI%^;z>Jk7yKTI7(#jr~8Cn zQYWJ*`x+!kYr>9a3;F0%Em)QxDQ2f01)KgG=$OhBQ9fOjpX652Ur*%Gzee&{EfTDx z1E*hcI%fO`~^;&R)00ehsQD?a!Wgn|2Lf0T%SWqJd}UP=kgD!8N6@caq1q^ zgFP;+;z`nT;&A5xTwK2qW|wr~#@Z@j)A_Y%ZS$R-ww^ES*wF6gL zO0LzU8RCpr0UTI)L$Dt5Tg+_gO9iSHOtB3xw}Ud@GO*_Ta=CE0&5nmTrO?|y6@uA2 ziMF-PABTVaOu4W0AE^b9W8I~v`W*z%LB?!0zaGA;VJ z3>O~pfVP9rWG4sB=BKThY`(uMn~#&ht2^?nHsu{nT40Iu_J;Fl^MSnEB^1})4QHe8 zMm#E@8)xqshNZ2@$MgK~)5WVNdpx-UVzvYMwo6pW)_KsF-vLLPd=^b|pTQW(uV%R2 z4~K>w6aPpT9nR8sdR5?BRCbLKe?@DOX^ItU+IE01x_d|Ljd$W)IV<6KyC119R^wg= z%RE$_73DMs9o=%~N*SXPrkiMOM+ZXRkonq?US>=}^eZ zzv4Q{hpZpA04KU1qvzQZFegq0a?467vi_7PMNh=%`sy_4jR)RUcmaxwx{`0Mi`1qc z!4B#hN#$uAE{)OVk1O^H^=W(AbgsgP1mBKW==+N<>L}y3VgJOdmI1g@a*{oL63C9L zl5qQ-aj@0uCX6#WMuoqn{gc8MYBpab{&>BPoMz_>XVd~kTiaP6x(&sZp&nR#{v6av z?X|h*EV!HQY91|W@Ix|4N23$ZFR7ML|pFhlT`%2Q8f)FvM!k{6$M=hyNFInE$JBWTafJV9OqO zwv#^VPqG4yMsLp0H7D-*3(O`DMJxLfQrxOS>-S~AdLzm0zVbeOS#eSPJM0AcEUkjk zV->J_L_g_loCdZop;UPz5pA5V(1v|;h4QkAcpzMrbKloPbh8pZ%NZ^El)oL)+DvJ~ z+NUx+wS{`@NR@(`D>=WX8pTVL{5iek`BqO~h&gA9!6ldBrqyGZ7NdbaTFx+XaJ9V( zzNc|6vAlR@At@BL(0gY^TwpSj*Ppl!Z=Xw-QW5oVMe`N)s_^69s)@1{wlJS!e5PTi*Dg&SzV@$?&up*M~2 z^M}})1?YHtQ&o5ObuiR64Oe6*&?`#|Jn%3~RR0)Dqj%h*MN@x5Uz-OIa-)*?br&w{ zeYC1JG)x$9C{uiLPmvDxs+Mit{SrDozY5nzcHz#~%V3Z+OVImc&T%VdL+Z6}(7dUS z6dbukc5kE^St;=D%ociaV+YA!%Y&Mc$)r4Nq&Q`(h&Jzwl*0123u12 z_g!#i|5#z;*|ntgC5*;SDyKDub1^~Po4!OQySXs;tJF^QHZ&9P+#x<}4|p ztd8gDo7AG5VsM4r&-!pd4-;CyWV}#4cMkhan?U{MpA!0B{7VbH&j^}oE+Tfh0?Ww= z)}3~yafV8G=E6(b-=QZ~M4f?>I1S8;b&<>vZ{dN#FEVzr5=?hgkgwTu`grRTg)h1y z@b{I%(}Bez=nUdaD>>GBtb}m>L)GUQ4?r#Ox_Ix`EUI|EoBE8t3+vx+7J7Zs1%>ff zM88LR{O)-LJaS$^aoHcp!Z?;LX3BEsosV|>X z_@BO@bajkGj7@`6t9qf4Za>a=8Y^AYv_Q{i>PovD=!GWFPXy6DhreioW+}Odf_}!60W37 zK)G+PDi!+fJAz9R~_HK zz5w3Fy@YYW)?B)+r?^P|A1U6{=H6=vRC}k1H!?qvmlQakyC@yreYJ(Lx!c5L`}2kJ z8=1oQAT_qZ^Dro+8_oMH<2}>=34JC$fXIbTtX^!(4U_%oro0{bdw0Ya8Hee0n>@<< ze}|)vyJ(_x4xRY>0{NwQ2$?7U!OQRQ!hF@;)Kvs@pa?h?V1gdA56b=(%IJ-^x&*^m z4x8H)q1;7@%SPN4gNwJoV^YG}Y2C1W$vK)As>@-u%J|iAIE-&lfcR%6_|RG49oPYD z9(f>S>We8IbvUC{oA*Y12k$lgvH!#*$}t~~|1R|6JAPw1p<5`-T{D*htqN(Ja|-B{ zbP&uA)rk9_718J3<1nD#QOdi}3W?AlULCNO{0%bb!rJdb=FEG-#!oI3bTo^+cgB%x zS`^>D{Fn@;S;_p5ybz}!dqa`GKFfx*+Ts=~MTr_(Myt=5!S1E!h2PTW$>QyEQSHG} z`1DO`kvB+lex)a1^fHN_>*v9VDm8XUI|7fFn&7{AAo?c8i$ip**n4rU*s^UR)xPZw zd(C6S5f^*oc~d3Q@v0Zz+eg5xKBwq?h#F^py(-*_e?$ep_tWszHbS|zL>CRZBj&sk zMUDOf4?d|bJGep%CfzF$=GRry;Z}x>U7h&ys_U|Z$=S3jY#c1Ny-gqgcH}p6n?Y@* zF~`?lr?##a!OmVEEM8x#ROxjDOvAG(YZq;#2kz5lZfi?~E}sUA(NnKih9s;e+n6ET zRAI(*%;o8-Vwor=`(w9Z-u%sC8uqk$1DB4Tqcg#lSS1m)XWg=e<2v8PO^HeLI8sTN zCY=ciN53bZA5-DTJyXH6xF3Feycw^UJRwIZP*_@}&q0b)u%fmL3A&~9>+~V`Yc!0P zo+}q0r`QUoKfIF-9iIr7j~kKimQ&&yzn>JfYB4=BdI}?ks7p>*JuWewvO~B60^O7zQ@*JTUJ%B8Z3 zBixSC=3sv-zLTs9M<-^&ynp+tSq|V(xjb~yS%iBW{s^}>4kyJ0!-RKgQ_;q_HybZa z!sVXIT(I2(Pp|j@JN&cZU$6@P&F#&TeLyN-y28`-est~A0a$x^KOC6Zk!}n#5GhBAdBnvwI{RzdKu)n;b_U#(8t1?f@yoeo%Ix?hVcB^;6hV7Z1hn9Z~!IiGS^Bzvgz)?nPH2@U;^!4jK!uXbXIgDid@H;>9(G zkJ2(J?0f0DDEyc|7ha@Zqq48VAWQFxVDB9Z>ARdzm{SM);$MozP3?5!wgR^7w&yt0 z1)Mh2fCnb@rKxj+@Yu?YwBv*Z-MXNF9}IWFolWn=IcG-k_z^+ql64HQX+7<$+$MI2 zxh`~FnGL0Vbl69y6oOyr;_%Iq?a56dRC{iM(Ba_{>Gdj@^mE3S23q8KwTbTaPbA}1 z$-Jd&#|cJ1sI%oFm@#!RSiUvq6Z$=|?1w*})!j(H4k>V_Y!_Cs3BbJB$063~BUOx+ z@jWpf;@%q*%ziDb%;>hXh0f+eh6Xip9mL7WauvAU|Od@oc{g-X)iiV3pbUD#zl&}c-9C?7_^yw z?X^MkUWcf9mJYpJ5dq=SjQF&gCu-;+zt! zUSLLF7G#Kd=}LU*;vw+dI1}m*u#bwUQsTF`~% z{MJ%P@E`Cgz9HJTFQ;s;J{)jYkIlV4(D222yzjFv`b}#Wi|4JS)d`BMY|=se{b(Cp z`1^$d2PiwXjBZqnC>R`heAEDH%A75D~kE>h`OQi8;2(mT7d4(Ox zW^XFQc^)GlxnE%M;}6*0SHc-P0&q&iLds~~M>RtR!`!UFIP<;@edun@!5d~`Th?&# zxx)+5W7I>a)*K0rbd+8jDN<=cl919M&3${Er{cpO#nP+`upaiqnNXqX(~Sr8ZQw2d z=m<*m47z%sAe{s|4*5KsRXl=0<)Agz4BiR<5~oAx-D^+_y>W?y8)+JSr(t_03Z|<( zX^z1?VOwd7;5y+D{ImQj2HSMz#ZT+RhQ%{b%RF3+Z>^-LPLA*<^Dg<0Nd=EsX^x&B zN7nh@==?=L80&N&0+r{%uCPArrsW2&?@6!QN?CmSa)JoM?m?eW6>%(Yt6DXA&xq~g z?$PjiOTo6Er!-?y!{|quqSshMP>#O@XI?!O)sLC;tT%~bocC)u5!?Y6u8+b|Hr*u3 zcqUXokiL`Z3~P=#L%*4=bSy%HU3*&N#JEH--zizzO5RG({8}2@!Q&3ao~bNO0nBa>XDW>&BTm)yUZ3WzBPc~j$(4Wa+l8Mu7gWMeaSpU zhX!dHkPTrUxFRtd{2$MS%iEz~ckBPMye z$~4|B=Vhkn#SxPXuzAl}p=DAqtW3L0TTdBcZ%bzikOE8HetMDON9q35Zaj3qWk&KV zehH(-%p{q^c)@?$d)RqzEb7@5!JymY$#DD&_-c?`X?jsp0yZ3}>S;IxN2c1aska6` zEKh>WNyQLtUJI9-%y>wwnQ)|~Gv7YALo|1uNm&X5FnxKPV6Tt`!84CS>4{oVb#N7( z&5+0)Cea%c9eh3{g*HEYO3$jh;)nOKaBEf`yu8~8!Kda(^hOn&p;Q6Wa+Z?k zb$N6d+6!i+rwK)AN1;+G{@s~)fE-{w)mv|pfEMe)Y)U1CSpT2~y^+GyKEp_7=XJsv zBK$M;gi`lG()S?_oFYF`#P^Cz5 z?>((zyV_+s(?=8SHvbjAJvdE{xo@Fpq=rRc*mP^l-HyM7mHloA zlfTOID3WT&6v1|k6AxVINp9v(N%L(2%#olE2jm**^TQ(O-M0fCsvFAB zy2^7O;{-|`aE@-ccjfLoJ77^xXNVhVk6L3AsMx;*hL3Z@{AGjDKXwMxe)pqlhdY8< zYG1C~Yk*VkJMqC=m%wg99~5Hl!NaFvLdW_xGN@~oRk}Q@($2jDUynW$Tlc3>Pley~ z*=#1h=sXZ7jLC#>eLe1TE?s>0uNS(6u#lfD16>DQIJiEnh)HRp#UB?^Z`*9yooBspSoc1d zfl|rNCPj$%T+YKH#&E&U#WYm1+<50`V~4aSG+k*o4U<)n)xtmIC6%$Kw;!sSeX9f# zh8WSjAbra9l<1+dj;x|qO7|P@z_ycW9Ci4TQ0K286dj#H7vKnOY4XYby)0wwra{FS5A9cM*SLz?q%Mf0hvwo#$zZPyxomg+|z&^9`R!5t!1?L zG(p^)SWpf;1ho&eDpT(E;Pzb?;h4S+;m4Qa>G)JiGYz73YLn4(G z7Afrgd{pdlL@IqO0{k_1ZRNesL+Qe5Z}G(yb*xz3hu)$MFAHykyl77v(>{Sy($3OW zsi0bBA}_K;!P_ZcLJn6h!$plvAa`XzrEW&GuwUK=on5tYp5icmSa6>H{i+o+mZyM| zPm?fzb-fVtG8`@*8wTg6`N<+C#M3r|Hu$$pRrt2s3_gU7;Jn3sK_@#Gw$9%ubPX?s zTYch%6CNkY-KPMo-WfBmR1B!7JSn#(W;I4 zbiHCDT=0;(=br(0a;*F;uHJp3v?U%O&CF~b31U%0t;vzp)K@YZO-?0KcRIW-C=Qg2K0KI zB6O(NY0=P_&*U!_(}0ZKWEG%|;lu9;Z{3Pu+$|G&Wc*lckSxZ1raXdsMNjPmmtGZH zQa`|iA1~qVQ;CZGQc0{B?$6Iuf5W~BBT+9no^E7YOC^|AsQLMjPGzWpI7gYM{vELF+?HE}Ox-1zcUeMy{TY&xtX>T4)!t`% zl#0^i*QAs*my}AV%ppUADN>TDB=&RNr9vu7NQqJ!kx-}%o#*`Xp0(b0z304Zoj?7v zm$li?zVGY$em|eBH(1|`9eiz7Eizfch-}>v0Jl?rFvE+-St+>@HsIM`jNZQ*?pRAv zTm3fJ&Xv)hr)^+{OW+D?q&AJ5zbr4IE?j(p$Je3ID>95-XRqKTsR&5D=8M7-*Vr$-SX?r9 zHTcb%K>ia8!zrdEIPse+=JtnU=kE8o{@uUxZ`}4a2;uNElA< zM7w->5?3F@?|*lKe=8MPe}IO zOp~K}42bZN&^yZqms^Z)ShsGGyaLu8A~5CtDYUgjrZPQG!roRjSN{(jD!5dp8qdvSl}9c(Devw0x-37WZ`;ukY%+AJdpTGBCC(&~#n=T9@Y z4aZpX>Gov(uq08;RR&s0$j&QV(Q2QNc^+*QU342R%} z;8ToB@--^3bPj#+<~_szbRX|My##G*CF$j|EZoF}@oO6cu^GGZfuA%zW@|vxgYNV1 zZ#;_|wvVvqQ{u7o#By@9coS(7YCy%m$`F1n3ENa9u|-CSTALoA{X52C?Xvk;_SBZ_ zjnM!to(Y}2UkYn96L?oe*0R%%>XHizr$KRc5_-9WvRTYue7s5%H*)*crpFp1&|JVc=F+2q# z{u3#EBnvuU9zd7&K{zjqP+4Sx<6*1Vnwm|Rr7r{Z8XReT=Oak3`3Of0oxtL1H#{qL zB#l15@rda^vgp4r*;Uxj?dX>%?Lg0Gzwk7d30S>Ckp>TjfcID@+HNA${HHN( zEj4E6Z|Mbx=4W94rP6wMPZ%S1-V%jGyy1_i2^tnmU|%26ATK`t;wMNgVQAe{@Rz&A zTUfE1?H>~+P2W_gwa9c5JKQP zrXonL)a_t99KOJA;c{FhVoM|6e8Wf?WfJ-JCB!Lh0Z)_v==~?bC?w^AhWk~@-P%-X z>hnh4pvob-qwq2AETUK!Xoy?9Cy?s0>rBVV3>5G^2Vcj;iCxqP=-;~s{f4m+U~~u5 z@0-vd3nB7oNewG=OoX~t=0FvfMck>;0^P}CbhdE^YPLy2%r!w0bbkifn(3dFqnNWap*F=ww>KmK%hk?I|@p*E*5xC+~6Mhb?rjw-*VH%R`S^ z1=?Nm0Nq0V@`T){5apFs?6!dr2+`!BphzH0KR1f0&t&Pm*fcnt@g3%Tm_k2Z)`Tx7 zE`Z_pC@g)mklKDzAXmD-VML_^cyHk|RUfWn$LT>Rj5`DC(zu+)3VANm=L0p%bxGcd z4m6u11NX$9!fLq!^qngQxkHUOtuqWPBEryTU>H}})?)IB9PaKQMjNWW<1Un?A)Xs> z%Fl6FO7!8YM<))5bl~&GXq4uP@7h;yGW(q#V0eZCNXak5*o38!wU8rKlj&5;N1i$_ z+5#WDu3(kKcW_y)L*0$@V9KF;(9x`m^zb3>Oy3QwKMGKZg9}L5C2#61(~VAH-{g+4!o^;XrhhG6KM}MjNzj=>`>cLK4VQtj82bfpo|{o!fgGmY z=Mfw4^%pit0GVIY2ji-%xuW1z_RWd{m>8DM%lxz-Hi;QCUtgtT{rriP-fnUHVI@=HqE4j+VHfsb(=#nnGHW*GRVOnymsG;Lws^*E zl|Ff|*9h-^H{tDMDY`<~m~2g2&IX&6RB(BCT+p zkN_DGNyRH+mY^o8%A8+&kZ!TLk5@vR;PW#JvT2;AtskEl)D83vxLGAp~VBX#jIL~<%k$d_M4Q}<|w#bR(w*ePd z7mmQgeQw0)u^rsa-^Hj;{05ZnAgOW%tcm9xcriSY+DR>>OS@b-(?B(92-$Pg^SSU! zb1mc7kOxZA%8cwL9a^n+nAIFLC)0F(F$ce0huM~o*<<7KG{wS^@Ly;VS~-QH?hp8R zG#Kmd9Y;2QBPb79W66YiG}{$zBe7hLy?16mbTg6oT-1r$(LDS&6ESn=7`k!yd-p2? z`0>;^%nb>lYD!M{zMF%I*d5`?$Jo%StWuCa{|9FJhLLXtgD~Ul2|U~+NuR8WVRHNI z$cwR4DCO{-|EZt=y|(4E6APmF@xMPp%}%b6DmabK6ZOX$_07D<+Zx2|~4qok`4Gx2L?EZM!ja zlwp1Q#mHXfAINhyy;g2Vv>;B9L7!552e^Ni#}hB-&SWdZX};r2$dCTP=zRIcYH;(S z&PxyA+1YsZisoc;efLYgX_b*p*B)#j< zh3jow;A2r1Sf}XHExn83=pJFBk+mA0UYd>~`iYp?eTz5OOoo&lmHqLvVJ_9NIsv1&@5)#AcN&L*o4v9RfvY{uIIL($1i009$(Nr`5zPdY%0}A%O#>Bj%4KZ zcNkqB%4lAE#CF7;0PDvN#8v4GN-7-T2~T+rjseq{h7RuM-+}x)Cw+K*WzV5*j}E^i z`xrj*KMbDbnM~f(XZUA_8kHz&zz>^k=mKW~F6ClGNl*-qZ+`*Xl+7_jB?Lc}=i-SD z4%+%W1un}DvYA(cpu+e7FGG71tW+AnLY-ZBu*{iNdDsdWnUm?F{Klxy zQOA9$60q`88hR*EH8WFEP({JYMml^y7d$EY?@4`&i;tWYg=ICYyylm<>Kp^;$-I6 zKWM4g0d8XQq)_Vuny+(%6KC?+XX8oW??}Kul{LM(F3@(b@mdZSPr(T_t?dNg-yC7P%moxh~8xgCm*U%$D zoXm9>v59`P8Ee8mGw;0?5Yh1{%uo4>U)E0~_FwYAN+%Bow=+!Fzsu}k&nGC}>OpqA zwt)UlMRI<#BLN)~$+`I*OxhhM3^h_A zH(pf3^*uM(%vVyxy!<%R|NI6H#CX!>Asj$$DhE{g7z0z^eZjq6UtmhaeC%8_iG((~ zqfXl=XgU!Jr#Z96+ub2}KWLB%?`y;W{rk-J0vX(#3I)4HiOo~u+K$vQ8{RvhaK-Z@G8MCau3H7q;F=X@_b62Pq z=O=P=TOTFT{hotpzPyju>lNsVo2#h$!6NWCX@E)n0(9%T9&Gr_!AblsvwNn#VRZ`6 zGL1QUD5Xfy+DIDmR=tEsKSOGn_ycw9Gr=l2iap-60>6qZqH`T~;`J{aJSJX^c2>)h zI0rS%3RWgcnKrQH;|pFR*U5c)Q-|qWw4CcJa=-|QRd68A2x|r&;ge_KIN(aTBSnR9>&!Irt~?E6^tIsBGg-3#W-gBjmLwXE3*n#l7<;AUHu$>9lY0$e zG$L#PBsAGkuYL1qItOu8F4iLF4{DOA04G}6;tYqxPUDN~N*KUFoTlhU!C_`Qd|R@O zE>b#&zvUt!aIYb$o$?MRER!X_9-d_Rb~nLp^C4KxZ(#?fZXo)>>a-zs2`KP(VB<*{ zV(ny)2IuX7)QDKH!epnIJblza!A44w?7RL4CHL@%<&_!; zu(QU@!@;c4t~z|F;{-7u^Rd`zE}qJPAT0uVPfOW>gzIqG^gXNgq>nYzuSbV- zkxcR%H7fkrkl0HL(?huwW1qi+*NQ#ZKid-D-${oZSAVmiTrcvj>J4ld`-&3h1M!&n zR}9Uxz(c*_wE2S*8~k??@sPEn=Qqu#J9idgS5y=$;W~^*O#|7giJw$#PH zkGIon78SObO)YLy*kFDW^*As>h;|pAUi%ae%}(XIzKh|dvn!O_H=wqm1hIa?&Ha26 zKvYGTq&^g<|1Qm^H^ZGVWSCIXV+pt_Se)o2Wb$X+{KU@xlL!Up>mWw14I+)x;PK~~ z)Wvp~Jzf3^Z7s}EHA$OYv2ZhP{Wro!b|*rh%};a`ipKFZQ%Hk^2fo(YLDNP#cyw$V zZ;tg9tUpkSUb|+{xmJ-lL3jm9NFQS!EcgjYk3+dW^J;$K2M&a&&VfTt?t$-SFWD_a z>eTIB0^F)t4ApK?kaB(z>D0W4)@DLjc}kM%EzAOs>aTcy*%C4wy_pTa6i74e6sW0r z8ZZ52DhwF3ps~_r=x=!j*Yh9Y--AOOfZ`-s@lBc-Zdwd;rewmY?z!Za!VJ(%5u_i5 zq^asK3u9s?%*wk{$lL`waP}-ivmz(cOEEXGSU?!2J(|pHsI#D@HUs=t6K`C1;5-Z+ z7bD#(KQY3J`{BP8gwE9}gpez1sE^ztu*i4CY?_P6ok0e^doj`(MYw%(K7N0Ej&(9$ zgG`AE%}&)|@2*MWKm7R|P1?sn?$i@_y)y=Gs~=%Li*CU^54)gSa3#&FK@h$mOe)h5 zdsn+d$!;U2_}wq|t-2hE&V0ztJ^q1h(KK4xqD}f&G=s0pA7&t9B0akQ98=V@058QZ z!CjZr`I1KQ{NgX&5VKT(%$VX2H@2-L%dB5viMl2!dYi}wb9b0)4G&<>&j@z5Km;V0 zeZwEilVNZ0PkxcPC~-R5%&LYM(`!8^IIy}G3C@Wh3tck8szVDLt;8@8SUHqlQny}jq7*LAR_Zhap$n^|J1|yIzfE?|E7oW ze^xyBpSu_T|7r~XPv2t6|L9vdiaW^8|9|US{Ga`z;=g>v|93)^|MeCAS8vJxAYJ@_ zHY_yHs*>z!H8A_=Wcnea8lu~*$=!es_!fT|#x~!FT|*tX!D>&Q1L~w(c7I|)CP8Z4T!DYW>AawW%oYEE}P5T2-`&v1ETI+<*)j5B8oGOWV7LUjO zq=Tql4!U|KODvc51K%@=K=D ziH1+%wb6buxd@1SSrD%0rcmChWr(6IlN6eXO3wmm$bzF?=gQgp9J){zoRM>U(H!&%ks}6`<6wF(2LcZbLTr8` zZggTz{dVW6YD9i^h!{uaW1Pd={E#uJqi*?^{6qL86@Rx-O()NU{jF!q1 za1{E3a(#Cp+L2QWnB79<&*Ahxms~8Fp-E@k)H5!-^*Ka$I~FP#!W}Nz81iL1K5_S8 zR%|UtzYJeaQ6WJeannwv-AZ)3XDBRp55Y}Z3t_u8MXOS880Cln1Eug{r7IQ_vM$QuFIZ?4NR+vO^cpz+pLQ`XgAO z!MhAM7uMpr3_0?mum(({Z!)9CEK0muO-B@;!WSuu!Px^SG}s4Mvp0ZSh7vO)QWt{N zMW}|~Mo6%|k2;BqVOPfpE426w^LlmV zeF9ve1OoO`rg`Nr&KFg{`TARq*3RNjfkp3FY0o^yAh@TJ*OMR;&_-jY5XB zuIo5<&XS=XZsG8IqBlLjIg2Iq8O*a&CUHCDXzoQ8w;anwn~CncX5CX%?P3)?^fP0v z2Br`(DJ8y-lo-)@D@tFr+=e9wwCUBdIrN!XA+=JBp|c{K(CFZF@Gg+{0~d_{eztD5q^cj4K_;S4oDp4+~{8NDBkFWO2BP}*RCRJ z-yCVYSRAfQ{mZl(Oe7@l6mw*40+ZUI2oG*gq&XA0R*W!5L^$kEWE$&u1Iq>I%w4yz zbBZ)rkA=|vv;OZ1@Kh>%<_=yj)+Z_#+u(A4GTe;2#k_hoiFR4N#m75)*l7FHP^N7` z=fA9mz*X6}MZAG6d@u?QG>!FQ9wGZoj7ARJfk#XsN*vY4uG{M7xyODq^Lf>CIT<*P)mM@!&PvJPT zN86ByiK?-Kn+&nGHJpB&tPi^CL!iI50M~7G0KeQ{v_iQ6EKaFGrQ{;C@A(Sn&Xi+` zlPj%wbP1+M+d$J9IWqF$7QXy<7i?W};25X>F_>|L2KHrQ(gJI09M*;M85{}W&~lsD zAaxQIYfR&%@8Y&EQRtU_nb%Pw%r$Gg@Rp7er@eI8-bt(~1+YY%?W>?%(U4iEt zT49aHLb50BKjyv48s_v;PkdCA&-@aRV4Lsh;_H?PtiU2a5cS$e!}SP}9(%_VQP#&- zyBw&?XCpeJQkW4{*?`0(Ub~Mb)I)RV>m~rHQ2(T^afQ8``IR%gsUY66Oe%Jk=(f=$6E`AF3 zcIMBknnHd*tYED!I-}p0X(XjVlC^hV!?_>((Ill7=c#OfbjvH;glHy7x_TF; zT)xbo+LTMDWo-fBmuUp;C(y51({S|aA=KCNMS*w@N%)&fJG4w=nmUW|?VT{V7S&D` zls#m%o-{F|qknMMu`;miKFOO?uLVsjSp}Xxr;Fcr(xb=|$)h-X`P{UT-^YJrk z9d5uKZR=R$7++>$n>ynw%+MoIn@OZE*It=qjRhx)SnnT;sae-tlBQ@6FXb;+RB0H| zq@Yc7WwAV+R>0w7b#CIaLn#1{DxkkUlKpy!2a)zK@MlN@I=DZ=wY!(W`rdY%s85s7 zKFyqF`8PuHcRi+OJLjQ}9YaIai5EdhEt zC!TJ)?i?7z zoZVuyKTiteetCn}#@Vck)ENe5hw_h>Wn=lm8z?&(&GueBf^`S{&}{fN1!C|Hug4rfpr^G1hC6LPYQ;;+6N#3N%2gk)CG^0Xavz}26Qeb%H~rR`9E z^d7!^SdS|9Y4}t*fTVx#hgVzXVVbrJYrW?b4&|+w^Aj473UMZjUKe?kQv+dl|w~lmoN_Ae|YPwuF?n6_Utr{NYmw_j&V_Q z=-sr3_*hbv*u2dqJ2hF}>FOAG5p4@nT*_zhg^z6TQg>!m;3fJg{SSWpcoq7$bE=F@ zDx<|oI<4XHeuO1OFCs}CCUER3}Z`HvrA^@fw5pK=$)`f;fE_pKkp=bIp|0S zxIkb)!E;X*&a^RIZR`PqZ>eO?(JkA?m8#sgRzN$#KDdd3xtz`dP8Ul-*&l#qPL9%5MlV&1HR=z0a z9XS36563*jS8|8o)9sVs{hvM&i--l`CBBUF$RK08{SWSS_yL}s6)<7b7G_SMKQyIB zpo{TgzO|AdJ<)WP_1Ucs1u%ym>kfv6M-GrvJ*PPD`!*bnje;7F{aBLfflC97X#AIM zc2s&g9na#5uoh9ElD~m{wCptsL@pD^9(E*A3jK~LFK{9`R2mUx0L%rmY9^``M`MCx-^XLadjo98s_4k zUm@W3=_Iy25P+t=gq(T%4cgwzLd#VJQZS_!g{tk@`R@M_(T__jp6m(*9aGA7oQ=VW zNmJ>`qYSxmX$j2v@fxfvEorFyX$%cWK&uH?nd8bcpu{bm5m?P>BpkKr{5778c4igK z@V|w7mRWO(5M?rIq((j4`av1za>~g#VB(g-+?HANSEmlWFvEkG8ckG|)opyxsw)a5_Kl@izBeCb6=J0 zk|TpM^h1I&@s>AZnuvScxN$IzAl0KEkTrNYiG67z3D>k9A;pehP91R zaFd&ewD`}2Hs`tAcZdLrEDfZ_le6*Mt044jT!*XojbP2(a`3MaBux+Y(*@tfX@tHr zdo1%BxR)$|PlNZ_H9nvDL)G2j@OU}gNRK41niJu}JZ19e>RDEiU5($Tsey=K3T}PX z!xUQFXWzZsLsy*GM2=tX;hrB3WRCJ=vLm4rWC|C9zBQLP@K{4k-Nr!IV>Lhf)kUH_ zXDg}y`W%XS<3QW{HM4gruCf%=WC6riNBVbd@02e0qJ5z4UH94y97;RVV?) z{pL83D?^vbMYHE3j?;({MeQb6L;|@B@ z3uA->582f!BxB)2;60x~OWj{!bgLNs(Xo;kUG$@6Ne`Hk=1SE29Exjh6wxtlW76%? z%X6(E{3jZXScm6mfW}PPvOR@vX_-n7KTKtIO4^~;#tu}yC`@MUt47h{d-!SdX*yFv zgSfH2(DJt%PxBJEvxf<4)`o%e%W+h4zXI!%qi9Ybm!U#&#u!#RBQxCQ+mDPa8VF`Gd- zEjU1zz*gRLDtcIrT)JjU>b^~&5z2n}dHf4LvM_+G+zV*+&>bp9Io$`JJI|fI&z@c% z3@NH>&~|4D+od~+XkOu3=YLILy@(IXI}^_&9{pycBanbqEd%(3Cqg~WpTs+xA27p0 zMpTExBTE+Bl81XF$?<<)aFk1T!TjnweaqXpS$M_gL zfn8ZcOsvUI3~V#RtN&(DTem`pEdB{u{h!znR3UH96*8t@x5BQ07wmUh23Mlp@cV{B zn86Xs?k~$ni%5p1=g%a|$|hm&n#*h**M=Bb9swt=-+~Eix54rDQvTDtH)wrH70FcK z{rs7T7mw|MiHSbwws;)p=lsKzO4md7t-?$gru`&VqHHA#o&$uyaxX-KJKI zj#4?-Z1$is)*8gZ zDa{qM`t~3S?z@gs#jD`pvMY32Mjli9`Xj7-c#}4dIND4sk)z6fv*<(3RM`6MGP8EG zF_F}=raw7MGk;qIoT+h#T;~=H)??wx?{fIuGn2IU-)CR%Sp}0;a~qro-22QWM9;-U zX4Dxbz&?IQC~|$5yhs%m45q!`*1+`z)q{ijd&E z$!Ob^MN0Cc;M3z;C=3;#^%DDd&m)bg^j$gX{e1>opHK~x0tKjEQ4B1t^~bQxX}Hl) zo<2S4jo0D?>8h6jB!PQ2PR%Vcf%+jDG71s^aC2=$S(Jn-qC@{aji{^cJ}PID`R?qT~rH&HpyN97`vOP{ZXR z;F#S9`gQgsTyj6`|2T|AscxKO-3Sy{H-ltY3e&0)hazW;ajp0tG+gA2zGGT!{5^NH z{HIP6v)Z8NiYZZG(m=JY92%C@;+ujG5HeSicXRUzep>Ncd|7-K6f?|0vUwf!O0}|W zYyaWokohEQ@^PrIjzq^OLn1vT73#kgV50nIW{S5Y)g4x(Q9~=RR7Hp+{;-7hYq{tm zFqt&Q9bkTLO<)%;okC!t2ig3-3=LCmfR)B#{2J8&Z~V5f_V-dCy=W1gKM;x;tBvVF z%TIXtwJmMz+6Gag$I$=u0`f{Y4SllInCuCrWSYoJROhyy7JOIcQz+K}R$fVVkZMLn z-_s`9?gB{ADs-M051IC7sP)uqAXB4`w~D#u+uJ3yCw&eT@LEM@HwXc>cjarpNWn+y zd+|n23<}L$My&J%Nrp`qNZa{S?Gi$;w~~J)$Pyy2t)?oXQkbN?fF2Ml$91{kV7M}Z z@*IU}ptKHtXU@}veN#*>Vj~T-xS8EZ=Q_Z8*_P6Z4O|<1t0G7K80+wwWHUPxkQ!I7x;Utn@w}d z;+m{!(Dj0g^>=N7m9>3X`_K(#)gsxKa}+@M+fA_k+6R4sU$J4I7jdw>fH_G%FjLK~ zqI&%^)cnzkZT4D_5>H@ms2uglG=jmM{V2q3SbL2&L*6b~nroy$9P@i|y6YU${#%+V z&5c9_?RvaDE=FverjnQ&*KzIM@37-w4!pgU$bb9pG#q$U%huUM!SS{McBFm+?m66o z{Z3q}-C`Q8w$~-}Ek|iy#id0uYlhlTY6RAZSWPQg~%zyL_ z1yp*#?2#u-iJ3~9D&uezg|IH?0#m)@Ei-@ zf9@G~)s`$8G{SA0vp_Ajgrlh4z~opdI>UjXbAJZ0Wwj%${*f#2E#nu{aHE$;mq^g( z+8z88mwWK}g>7u+*@ZOE|1(5w)usjB<@lVt3;+ER4(bu1_~GDhJP4Y!`cXf*e<&FI zob*Vv$tJcj!;EO}D}%1(gE*Dn$#j1eV0N!6!-c6TbXVaea%j&)+T5DVw7X}4{=o>I z(RN$hnp@4E_3t)&$E%m^og;>J$0iVuutcWl**L6j4x`OmH7GB!2HT{z;WNeUq}zTb zX~fU?d66T%^GO!X4|w7hqauh;8$++_lC-p81UDRXCfEF};JEs0zL>>4B5pGiD$WOj zhY$B!6APfwrUZDez0fFb0OFFYXnEHmc<|>G{%!fr^i7&ej%IbUOvVNxu>3iUT|W+f z=0Bj!J&{Z1U4SA7}@`N0L8BDX8a{;VDC#ETt596^va4sTbl?y?`wwTfy?QN zBivl<;aO(q-4ysog$RG8CZ20a!6(u-@bOJ6JkIrG!ff;quAgD*AbZDH2Y4 zr?QJP7c#z|P2a~mwg2Cz;RPotn;5q0;lbw^ulAPK59Wc$Aw5z z=Xp-y6o-Obf|BBVn@ggG^NYdhKE60h!W5E&hk0MSLuvP~*&u!J zI{ccJ55t?Q*>l^TKt_lQo)H4fm^XtaW@mtNdKqk0c+31#d<#!FQi|_kRr=OigSs}k zQn4Xm8jra_;qMc$XMZhJ1tsF$8d>rsrN`H{1@^PAHyvuO)y}p2ws6bB?;3un*b33$%; z0V)>oXiCjnOmEad^Q8_nI6;u?I;e|Qf0ohVIvw=3h=bQNhEYD%15Dp-!mx$_nEcp+ zUXwdb!xoNX%aAfzt#JX**X$!}-k)OoRpww|p#lBm?SO}uTw&@D+mYfalPT`H1j%W| ztjYNixV3x^@XJ3kckk>ZNown9^VMRiS^Il%S;jBeuy{I11)PBM6;|*q-Ib`n3C0COV<7x{2{GYQE}5f9dbpG# z?^qk23)Z0l+b_ao16wq_zYyNu5yJG<%H&E95B;U3sH;~t&L2=Bl9!T+acnaD$`_>4 zXBaAc`Y-cmjwo5mdj-DThGe3p5>=cV3HxluA?VXtcxJf(9?*JRUekusZBis`Z4`c* zrHh7z?HCs`9b=x9!{low@TYn+om1<^jwL=}UftK_(f8*t_HrJc)w=>dvmNLo-BP$X zSp)WPbD1D7C3^Fg2_1N>$E=hZR7{J=yA1}|FQ`uvUd9vq)jZJ4>1MpvdUNmX zMJDdhY5wSi1iE7q3(h5Qh?kN+C!)o+)wh$Tht;Lb8)9Ek24z|In z2#;;?r2hgeX~K$=?5xf4B?{JELLr`zYuXmsZ5@9mBz=@44N6GcJDXP3G_IU>}7XhTnS@(}&kZ zNo2x*G$2Qk*77gnx5gB-SCzsAAq&_8YD!cu!vHigH{#dQ^Jq2i612~mM>1x{!~9u; z5F(t7fvTKZs4WdIUZx-wVF90{cJPEZ>Deglp=^9mAH1yTXG~g^iTJwDY)-TTY!K9C zx(|Fu-Zv%cITnVidfPBdz63OV`@l@*F=T!H$gH2VgY4cVOayzEGvO1gaO8_4cg~qa zCWJ4l2p^hE=l{J5+Tk%cbqkB3dHI-q`v6GP8sS$qn6!16VA96RaPj92Mp-38Fitsc@nLE^b4EL&Y}f=4RB@qCfMmX7bH(1|3R4FQtYYHLehH}GTYx` zPF4#_ui*6G`@f>@Gj(#o>?8Ye`gGbaFTj~CUNIgf&%h;RG1)Nk77MriMUjwBjEYTW z19OW(#9bLISDvHI2fs4s56`2!l9MVTw6~F7)%8TJV->wMd>2mt9>kqJVOV2&i@o&x z5H4>kATpKiC zm`^F1T-0U~efEH2Y2j~(=jfsPF27>+_AbPR@cWoyBTa4Hz0fKk8xv%=gWDPfQf?Uw zr(@)aW57HZZFit`t{!y77GYXtbe>H&4MvC69Z;8B2WP@xGv8kclV3J*904s0j1OkA zugrwW*m+%QcFKLZsU7+V zM!&@9!yBKVQg1Ce_r#R^tTiVIt#WWuTaK6}Wuv9BIoavx1ziWYIYEmM4SYHT#y?(w z+p>*J#=+BYc4iAxGHoe|POO0!+a#!j)=bEbRKuHi;KO zXyQ#6Hb0BW&-c+2A&zAEk%^=wbv|QB@8WH@7MQx<1eTtSf-Vhxa=&^pm&i}R2ZIOb zr-@vvurQu)=fpMphm$d{OrBbX9RQhX9g=@J6}Ycw81(qb`4UPXV{8F=puG^yH?PF> zr0Lk3DM{<6Plt7FoOz`yk~yGM4i`$U;HYvMv2e|UxyvTeoO=&&d)Nu0xzL;x%JoCX zmzUP+*B4XIRzXs9+J(8S^%!Gx>rv^?T;TU?VZZ%&4q;b6ptA#uQtQoV*ng%pNcA($ zBNIs7<`C+#m20zfo&e)7bIA4>j^xlC!vD{pk@b4Rwf1hjhMpz2L27;rY!vi|0T~n0 zy!R#ESed|dZ*ru)cO%eTAL-DU@F$k3PrPneW-Vw^q1kd~C+XN!5wAgJLD zE~Zbhg=^ofrRQ10#z+*oq`{H=Bw^V~S=#DoiqmFBgTaP6e5`y8CpEUQg>Bg|lW5o3+&b2S3MpHR;da&CK-EgyK(oxMb=)oSOfR@0Zwx>w2SUsmf#`=-i0%d{Z)T>=#V% zJi`=k5h1=x7jZ+~Q%o|~qN%wS64T0p2e@U|%i|JfytggO(C6DcF|U-98Q> z&#dU}&}1gv*^%0{ROOv6eO#wtmyoE`(T3eH(a*y6dpKp8>YrH=)P|asLr_vyy+_BR*e;N;)4M( z$%=#Alo>>yBQ2M1ZpFnKqiEloL#N*<;O$5qgu92rXwI%>SWv4&jnS7i78gem&#Uk- z695=WXQ}w;7g#P44WDY) z!`mo(r?#)7F7+W4HVnC8dL~B=vc`C6wz~hUHW#()ClqefV3nAI^vZAsY*3v|D=R9+ z2l$mf(bJCxJdJ@Fk?ykaz?G7=yhe!idQ0Cb4SB({S;D&!s&Mn?3a+m37mr;x zz+V?LF>kRd8xOfhRg&%G@wv}*x&0ro^jHttefo$t^HFRWe?z=*tOA_fZb90IwSuf( ziI$}2@W1|Hl()QIY?0=k;a1ZB`~JVQ$%{$hq!rhO-=Xy?inyVFAL9Fs;pM<6RL>PPT0wqfpx}-~~6c_qeOl>kE zt;Q{+RAj(E|MaBuAE(3hn@v!lJA*HLx=b6t*3yrM-^jdL%Hiaw;}0cM*rMG5S1SzAheFS_*B8r@>BBHK@!T2u0soDA~DKNO_zpTewi2b0ot~KgW$izo40?JbSr+`-hs1qyW!5Kr-bkdTX=Lej#~@-*e9+xzZ{nh9gM$$!~AcQIBC4>f?SjA z2JM5|tH`dA&d9+wP?&TgResQeM|)_yHt+)6ULh1uY)r_8<+Rx#=% zI8JR*qudkWeB$bG`J`DJd9KSa&MiGgLsWy|f%QhQXz(8j^}Hy!uRIL39nJB;?DlL^ zqfck&?H8h!Jf+BUCbUt#AA2O#$%Ag#V}EN^{BlET6CQschP3F@{Ru~fnzVR{nClO* ztcsJn0%<_GlQ)qDF%XUGOR7U#^lSiG9{e@cP6vM%nSpL2(2gF`j^*Z}jG};jTDD!W4WqZiim#8~9Ds zELo1Nv<&cSkXbJ91aWi|>~EgNJ5mO4WA8{lEUBsza*Jr{b|dVza{;P%o`u_nUZOWUjPT_s<9+vAt8^Xq2V zD}}^$I_t1FPvEEt17UOw!+_}B`2CQU&}(EgpBZ|d&gO50rc1K~lPME%N_i#BKISIw z+qXy7-`oq9Z%ILSsoC_ztS8Ww2|RUnAXlx5XT2Cld_89y^)Ab&hfd72$vX@R zADp8tV(MN-%z(U3;6xzhp3}4my`VSd3~4rg7v#Y=`uW? z6UOil+aO$bq9gu&7fxrT5WH92BXEk1#oQcM@>7b!ZMjPDLj4DA3DiT2+>WUG=Q#|$ zFps>-mkTn>07=QVA6JcOhEuB(xnuloa&;cSDaEg8s7FUkEpZfPQa3tzC<%%_596)x zI`F~;`{CZF-{P3diBgqwAnTS_NXV2@P;~wW%QX5>vGZWiUu%OEMe8Z>S{N>QZO8qS z9C^7o6tADw2DjsO+$-h))Q1+M_x^#%b6>;M-RtPVtq^dJ90Z!d>R>%f0sHwm(6hNC z>C)zWp7u;3Ox}_8`%YmG>sfqeg#{eYa^X>9omln#AU>vE<7nJt48*b)YF_9-Hy%nC^VKTo z^F9vMC#>eOY1S=hVG^`GWo{oUSTs%AJm7k-K5Pdqtv zv*Z(RQy1DknzQXj=@Q$c9s;ZsFeBUym!7N>9!OQ+B!#ZtG0|A8ka+((=1_V_XM70*`3!O zjAD~slQ2ZPn6Eh+xkHz78st z4Mms6Fbo>xgw}0$X>S)jzCUaZ2Mb;K^)xTISKUDIUV8~`x0CJ`KO9-<$TP~O@##1H z@n@J8|EMd(*I71r*QpB%TS{qDe{b$EL}0^eYrKfmkxCI7990WA{Zk++J&VJnpeu6Ekwf7|%wK9)okqPP&VuneeN-N@ z7)+uUV&l_YLWuoQ@rkTAZhRssP+p~=Z5?ucwhPyk9ixU5$6&~iZZz4!0|ny_=<-z& z)nkX^e_-0yFA3wYF%jt2qc5I$_)u^^`v>Uu1`O!0iXCrmM(5XnanfPkKYJAA*yn@Z zbP?u0ZW0_GrwbRm_rUvYmXc1`4QEU{0)a)*e9WdD-ahF_E;pq5qkcM=?*hK~+JvpU zbjCwfm!Q)=OT4Fb6pCN<5EpDRL3J99ewChVXvh@wDuCxqTg79NaxnN^5pU=|4rPN1 zrGs1|?K?FX`skb$+jV>kx4O-s7smR0XO9|px_CvtBtnl*^cjtJy_5O4&S**Vxsyk| zn9L7<=J5CxOYv6ld^)93^+BxoZY%9ut%3Wt&cmg} zcS!%q2Kun^87*3SjQ;qp;)-QoKz;T`PL-_(*L82`^oA8UHe4GEj+>Lw{2k)I(cU=g zT`Za_4CD6WM)2>>mn5`>9i3Y)!<`@RP_geB(EFW>&ksq(jr%HWvf+TVY~6wLh9mYm z*`JLQb1)()22{7V|>HgCW`!5hi*rKAkqod_#r*3>IY zQWJW6u*sX5s2%r&5~P4(zAB|TDL6vxOO1XLJRT3v-31_dL4Op$e^>%#~^FZ z0PdkN9Rs#a;J%+NxNe#mZ^=|dmA5Gr<1v=aZTxXjWgVDR=8zEX=r}TLG`t(qK&#CJ z?4={{$2>_L_cj+gCZ3};cixf5_g(D#^b=Hk>YackGLI9FE-)DHGR zqfP5D`KPJ8*TpSVo#%=_noi2X3ncwP(|7tl_8WNQC*am9Dd_WeBTU>pklkqj_p2A- z!nAN6v`yfpgM8@4-UR5q{RZgA1W7u@XqcGSCXS!p13T_H2Ysa0@5-INa5^lB<1g3I z&!cf*Z`EHOt8q)L9@$Qe|2vG6s|x#dD*4L{ABi(EXq< zO#ORRerfnxunif*=X}j*-Q(*(GrMt{il%5ZWH7e{e}S7bRCuHZ`e8D_){y(8eoss%CCg@5!b1}zWJ9AVy{CQj=!~DTrf08FqVU;L>@VIij~X;btI5*58Aip$@FNy#%g> z|APhdoWw1CmqW_M0zBP$0)DvP2LtR5(glqz@T8p|#;EB_g$k*!GtQ9%Qb%BSg*ftP z{0tk@HK1gn6dG+QqFrheIbpdCD@q!nK%tYUWVM@O!_z6<$q7bIlLiL6q)_p08$PD7 zAC4Goq}127U}4^yZ7s6s`1n$2nOG&>?LQSC7L34d_ehrIXo2H2&q2bJ{+#?#2fxL1 zq#-A5!CbmL-!T3wO#U^VX8CAyvCdlD`JgWsnwayRXjK?GAf10qw&3)=cY!S|Kz~aR ze~Jr-#SL}fb;y8&U-#xH%QrMgvp-K6StM4aPNeoULnyG9^gNed$a_8*hXL;faCt>M z$1lhiowYo$bJ!c2v~0HAIw=$%p1dU!7HhNSq4_vv+%R^#>V_wm#K`1?H!;`-UiPvZC zrs=w#sNZ~%GOXw1xrt=azZsVQv;_0COkw9Z>HB(S3HMxTfUTz@cyaYe&Mfuj z35U0ldUh+l>3WcEIjC(KBv!$HxgB`VZ|!(Xx>FSl$gacmg!*i z8daX-z6m2n2jdE@R8&wN$lX=8L!UmLSaWC-oW3557JuJBijgV4J7Yj(I-RSn!%!uq zJBG*|;M2AMmdt2raXncZzkZLGhz6y=XYUrQx?{l)k@`& zEIJda2}yz~CHss-qqq<%A2$W_uT>LA#0YN7P73XsJG08nP&zxq8Na++ij%L+#C&I4 z={;zU3rqUIC|l`!=D1nB?r@V9ygLK)YhwBCCkcx)LsBmt5J@ySCx#8$Ly2o{A`VxiA^$dNaJX5b+F zFvXC|_q2zrleO@CimPClbrn(^@+l#CKGs`WV4Y(o`enw$4n+kjaf%f7K28#9uj_E- z{=1NH+yNaIhtX(-FutR_i6R9b9F{LFg zvg_}M;62rB_%i)4L^ofB{DN_uS&##L4+ewJ`hjS!p~Stv+T+|WHkg^e8q<6=#I~nl z_`G;9Z$C2+UmXkJ$EI`1puIXSZW@VOU(e?%d1p93%>-lqq~O*E-|320dwOQ|6ITB< z#@caeaAWFt{#Do$UCq|v>2AaMYhFJzG0cNWDaL3zJ&LcgHE(nA!c~9gb4{Q=+?rbf z{ny-vqkC__)K+8ul5 z{lI+?+^-!P_lf5lj(stx*Ed+MG?d2-H{i`CYGmc)hi?YFhOC!Aq@uVTANNLd)0)pc z!&}LF(R0X{V}$Q@j6m<*S<*~&g8aDS6y>vkgC;!}mv^#*uY=#h5$CgXeo_q$?YJ4n z4iDqH7dwRJc1^;QQk0gE(t!SLF)tAg$scJhLi@iC95uoleB6vVPGd7PT>D9f?|BmW zJ)qI2jUn4STznOGo4kA81?TB$P-dnr{M?X$jnZADIXYQTH*@9nZziLsK@t1pc0tX3 zD)_=}4*9Otg9zOenp&ES8){rxcc(843!cHMVHJ?l-5KB9agaDn+W6>3E~PF5O!;wH z=6dm_sOh{H6d&K?DVhZkwL*Pyt1#3q7-vOp zz&Cgnk2lO(86Md)Rs^Va*uuBsjO1e;4 z=_Hn?`0?xdVhXa}PG%2B^39dKS-p262IM^y%7uqvBzn&jEAx=~WTxg$+<91ka^M?#Fc(WLX%(cgZ1s!PJCp!@qZ$iDGpVY2! z0e`3rV9k<`@U&STD*2j0nwkr{;;oN@(w%P{jZp_M#iK0{YG+jNWf`1iF6}K zms3YBVmpO)RPEM-vbIS0o*)Hoj13S*z%t&{?hq`9-AC%}Q^ZGu-^j52Fo-xe9CM{$ zL4GF(9#eP++-6G)E7b(vIX4ORB#*-pQ%8_ZTQ#ic^j`MkkEDscF-)#GCI)@urjpKQ zLw>ezC{1ZMj7Rx&!OI{l>ujhMU52Yv4y*v`fFErt@RnMTyR~d&be*>B0HF@{N zt5C5^(yKj{%9~OURq=6WZfc9g?mdR#%%-JW6j}ozNk06dXcA7}(H+XI>{0Wg5ieIt z#n4tQyfVjvKR9NQe5N}rbAKsZ8#)ZLm+XS&*2Z`@|2D;j-KHtyAJP~J>HXYVmGbOr zgyQqVLE)x3PEFcM9`i?Y<+5aIP&VWa{>^l;U@8YSuEZvl1*qR^B%35B!roX35xuI3 z3Vf=><_mMcGx9E->QIG4r00+MO+#*qPNQSNOPNnDN@1^o$AyW<{OFfPH$JYTH+|-%3_FG2#*X zPLTPnJ&rQC1qbqPLEZHaMAa2wwpE2QUG9Nli8U$-DrjF8jOV1nj;U!p#=ei1abYVY zbU6gcDt?%#lM5SMHaoWT`9v|jrt*?t7ksGV#vz7M!F&7!p3>5TEn5c(x8MduwyM*6 zv+=C6u{W=@OM;R9k*p9@Ng;P#aFNUc$29cdMSE(f!_GB$q{NFKn7Z+R(|76K@h4#6 zqa;7_S{J{6*2GM`MO=M4kTopp;gi`%nzpDHPWC!WEpMlA;OI2Euh5Tu>JO5Rxia6s z>yBGp(!g+AZ@!R9@bz{-boA{?GpC00i}CfO;}$Oq+80mzmhJ<8A8R^$_dW$ZzDW(O zyVzB2A|2J3gTH!gqS(Hu2hS7;AW;Y{2sly!rNOYRocZzgH5fclCT}fwY3UHfM2O{5sZoFpjJJeQ;ah zEZMKi_i5j+Ea(|F9rZ3ef{Z$8*}Y&ipN+aLdUl#E^t{szml<3ljglOkSeQV4Tb2^I zD?xk3QEXC>2iZfd<$Z^y(j$W}bY^=TpLtP5R{DD-{i_u89g|CTf5-B9wNacWv%*dp zQsHda5*#*oH?NjICi8?2;@ff;oV`L)1qJuVugkh~%*hAPE&jUrvZ6g+yZ9P9n3?k& zKQ~;axf+K2^ku~ZJIQO*EK0+jTu>N--r^?#=WLY_b{+7Lwh@|@jN;fULE?tLD;?)o z?}4u0W?+qTyf{nVfs|al1j|98q&}h>SFGtIcVAvXyKT;bgLF?kFuWH|Yf|B$v^nVX zdIoK4)aB(JQ^;Bh=ZCe#(!^+2Y*=hS+a1i%H>i<*ORA;Um*e=;mC;z$_aL->A3q?(@+i*CJz7Z*e@?y-jQqTSJHrvs=u90KjXc~Ji_ z4Wq+Xv6a?x{N&%08^!&C#hh|-*}E94HLUQwq7|0!j^-tjepLOcgM`+;3nMoO{HkRa zB)husp5vk9AzYCFH4m_tU$fZ%cC=I^Pl8iJYG8t16)YS!3Addopg$=FxJlg%4lCMm zpr*3eZLk;4`ZE|dW!Q38i+r>iFp#yL`Xf9LI9)zO*!(&fch`BMs_6$P-)4k*lWu~# zMm7!#w&piQdAQU>&I8^o0_V@(7~5cgh5c4hmz!p?=!yq0?Rh8M<2#dk+zAJZhcpJ1q0Vm;eL^nSF!klxiXM;`q4cMoz zBG0||S=183X9!JvNPlZKaYbe9sXTD+Iyr}pHK$;E86#*+t? zUYFbIEho>acq-3U(Bi! zaE*&U4qq5U+)J62KHVjywm|W-v7@N@q$_s&WrVMSQb|o`9GUn;LWSuy8uvzp8>Tq3 z$$nehbU+czr1|RX;yO`(cZsCbj=>KP(`ZokADCZcAiPM8;1G9H?C>;#TXg&IkANnc z|7HUwiYC0N<^=3ZiJ<*+^-zk#pkd?KDX*_{WD z-2gLJUjmJ*9VAq2N1SuTj|boP#;}?mxI}9UcRGjgIrjq8e@bA(ycN*4D2b+Mq)@UA z;jJ!){3FI1J{Wc8;E@vrZ_f<0u zQR9)H%na;K5b~tFvQjR_zfiH;(4Kfu32FUmZvg+b904Cl#azFym%6JKg$lq_5B_%#P-jwmKowFBhg zs34m+*NPX`uERPjQy!~-fO5XNaD3uoNI#;%Q@)Jkw)?3(P1+geY#Ph0*9F0f(k+c9#U*mFYnl%fPK?6#N_E2RK0`54C7f(tSi#-QOp2bR zh?WTKXRcdQ15-x&^Oc#Vco0Nb(xM?- zv}__~ywT#?$gcP&0QheHOg0Tr0!?s*u`V_^`^Y*nb(h}xtqb^s&NeChkV`v5HVB1F z?+bTkA**d(4HpKq!kC~_RK9vR?ubm|4z=2_?1rR-Kcvd4_m89dB6a)|XF#?I>o~ad z5^TJgj3LXG3CkY-qVdUt_*p{-Jfcv_Id0n6saVebmx|!5gEsa!7>hGCV{p=+OSCoa zv+Ph*3j6$8iBI$6vE`^_ON}um{lXNyF{cZcc@5%}<=q`C9opmP`P;!h#Th&^p3&Tm zB8>_+r?k156t3BempgUgt1?YqYN5~8H0NheUfE=XPm(5~ zn?pLrhq$AfZwj6rcptjuI7mw5cy`V(g!t_XxbG}Ec;+hO)gl*~+in=rF;~1B)Da(q z8*}?@?;t8e(jH{=0;}8?V9`-sC2Z01`QhE#St+XjRaE!*e;u;;U*r$|Yue)fmr%q1 zh+Rzj&)9{x`si*R|9i2E|HYrJ9^3E#RmM4`oq3VubUqN$ zg}crQ!?KxI#FV~o1XV3xNSxG#HEVamg5~p|AY7U4T>A^NW=THGJUlMOqRKO z8d0~nN!TL00?yTd$~w!r_Vo;YdL>c*>-$=2Q$0%;CY+$LJ8wd`d<1{-e=AhC+XMc` zyxFNH5cC&>@r;3ny#2KiPZ;?_*jcgw4@a%UDla{*@0kJ9z>jx!X?1+pYdWfV9|F^W zcft|Lm$po>;<>lyqp4{iiF)RA;>7@*v)M;%dt!roFXZxsQfX-R)t+~MP{LP!5{YP6 zIQge!bIOMGg4NP^T-LM{Hh+qQ5ebEGaBURpW$i)Rw)3=SoDBVxZ248ceVCrO3MGjQ zA6PS(7CHCjpV~*!G^9}?C&oa#?Qyi*ew3Kg?;~uznh3+zZ@|y7g}mkML<*IbxPJmX zU|?1a#ccir9ku?^7XMgyxIGM2JJ|8&mj!TO^-Xe~mjO1Dep6Av1q$|ymfShO{(Dae zhnDVuOYyt;?6x#YGS%a`YrY77vNy|J^sAy>xiCfC1?Y|=fE-+By^ zTRYW)n&&TJQ;8kL>@X!;XJ>5F-6UNAQi#?+fh(jXRC@Ho^1TgUqmbdK*H07Uo?jMx zBL0ahf>UVi6eGDwhg`@B_u$_4_n=B?DYtu`&1WZ^rez(1*y+Yp`Gj5t>~7yi;Q9DrWI8u8YC45Q*&q^gc z8McON7VqcMA?tCY%X(UVR1N*RDdVLjn;+{wC-?ClpOj*9IMS?rmy-Fx9Jqcl4_ac$>0c+~qNNKtX}lJvmm`0~hv0J}fFpAHi?<*2 zAs=NAwrRUc6aK@USullLd+ZloKGe|p&qlc0*9FzeXG&CpDmtZ>%XO81z{#-|t{7&s zuB8r-R`un*?;nc2Lj1Vo+6+uKd;yj76b)_+cEczwDmX;ZC>gHhn zyt{_ZDH{me8s=lSX-<55stSLRymcq4Y6aiZR{U5t9%GEEW$(^ZlD=Ly@fjv@^yVmP zJsZeB7VZL{H5aIHU|$@#!BAo==p_M$Xm3J#*azGh@GXdKHrTCQ_g``ySs4XnG=}) zi|6Tnm9)Lz7(V13gL%CfFZ}opZ$6*q$;q49!?rh$`fyMz`gBCnGu{?2(jJ)OG!xX8 z4dRPZ+oRPm045Eoh6NLyahOF8Sq4Spl?BIO^dW1U`+Os8b#;ct0Ufbm(*k&OX^SxB zsWMNqkPeEbTcIj{8ovy?Bk%s$9qamrans2tUi-wJ|E@{q!|PK7w+AWWyfAIfvDrb+ zd2L`c$rC3(j^Q~1U7i|PTqU;F7A?YT{h8UI%(}WLuKmI z+54FS>nCfF{pTcZOAg`}&z_T$$4u^(m`gFC8vH_|SX|>ehh8mL6DyUbk&oqmXxbM` zMyZ?7>&yj6w~(6OGmLP;w|dC1TF)LTGg$lQCs96PB)T1r!rZ0nIHG*6I3o2e1+~q^ zbI%lnu5vB3RN8?nJa&NJ>UHdvG8b1))WuN^S7?|NNHML=mDvYbQ?SDTjL5Bo=8}!< zUA_$l1RHTpfH@95V*)EytiYdjoxt+ZV^Pgh3BGsE5X?6nA}Q<#M&-6V6P$Q~ z!bBRf^gd|3UQTD4gK*>I5S(;&Kb#%B$bqdhNq){otTZru%#25SjS2kkYc{Ps-Cd%# z*zg16#i;Gt5so|$MKf z%lccmq1P^$aCQb6AB*9VCsXjqigSWqYyrqrPE(cVNKq%;84sUWC@e}!N8PF2G3`fp z447obpSA_y`1*wy5xbwgeCPAKYw_rRIgN2{SFl;TgIXiDpt?;Q)A&&kZ}S|^rf9O# zdwtZ%TZSwA+T-@fA~9Ry&>Lk>!@<*4SRKtprS=n1Oj!pjrfdg4gMoq|`K)KRyF#N! zdE+-@iN@4#4PINC0jDc$sQgnlZ%dc)m@0jqbGSDjzNmoP19edTdjsT@-Ia|kJ}TV# zV=qha+zwu)?_orn7Zf;24#n&|N`JKjheh^9`GYZZx<@fIuh@r)u?19Y9*vvbwu;X_ z9~4V>?*etRd3;X7=_NPnaCTfO)jMp2#)4$DTymU>q$Ty+ETVr?j|p#`EckKHE-)a(6^l(tIcYFwbEz&Qp7fD+-OZ(?kvPV<#TwpwA8NOuSegyd*iroB{VFf3nqSl zF4w%Z9K1|JuxZU~Y}%>Gr_ce{S^8pN;vybV-vqw-XP}$c1m0#jneU}4$Ysr|;8R)% zzV0;(1{vG(QH6cbJf#`dWgeC9m!AQHnqj#7a{=fSF2#W%uFySvn>73%jrqP8!FJIW z8osNX^FMarZX;Uc`X)zdV#i$GvD***3Y~C_x;ytM3+I(*PSL3+g<$ZtE7nP8r!6_o z=x=mPj41pGE3ZAJSv3}zAJUsox+u}JW%2Mha0{r1_C=qZb;4x#eQ4RQiuzw#1OaRQ z(zWLj4d(6ytPx}I+tih~P5enq>zvqg^;cMYxk)fK>cW$*7Lu(*Q~uIl6Q3^n4cyO( zJMA>U2oq1Pw=t*F&P(`f)n=~UV1+R!=U|cL1e|>-ht}wBg-vg73xy{F@oroPc22Go zD#G0PY<3^^JUCGh?YrQp=u)`p7RpPw1aFO=gr<2vE}oiR9}#Gm(Rsc~q9 zKt@{WSTg+qc{m&5f#fOTo%kW+FIyD;4q;`-#tIBM~>D(Hu z#@F3`(;j)VIPSq{96rzsvlR?kH%`X&#r|;FAMo9~SnjMA%a2P2Gp5CWsgVuOHTF4M za(*5f4Oao(@%zd9PnB?AROWtz8$c>uf<~tb9_x1lKYT03n>W{^y4_ua;Er(lEP!iTd543>kjh+ zsG>)g>%^`>$-;#(QrO09g*4bU!PY}N;ogxAI5}zxx?eNn5gxV@Z6%nl#J&{%?0E?l zWskv5wN$`Ki)2%_9~FDYUxdIJmU4@E@sJ>-^JMAlB>Za+&PzrzrF|0`ZJJ@pD>L@( ztj!q~nz*HVFODq9rWZZ0LtcwDZ@qj){v@eC&Fj$*KDqW3)0L_yWwjMm_FoLn{_AO8 zd@Uru3a43_&2%AsCvGbl!mjZ^v97ULXjww4)QkI$>IY}l+_?LfY%q^c{|f%?t9ic3nAht1H#m2x36W6}+jn5QLaCT>bJQ9_-*xrG2!x z@x}x8eVa?}TW6w&Vh-DOj^uvpj`96RuOVT0GE|oMV?jz^v}_oQW`SzF+I|zbEgOys z-K)f>%~51JGY1Dv?kwI-o6h#P1NqyCcu4FKz&a!P^2OXaH0*XTy+1Gkhi}niGanU9 z(CjD;G24@b+vdW`K{!Rhnzx&D$LWENJpI;c%>S4xCU=-b?T_2=467ql+V7g6y|5I+ zJMI#B*DJC80#iO5se@Z43v~Hz0Q`#|iuWcDk(Il6wNv-`-yg#KH$#a3I*Iu|81MWyKly)*V}ky39OJ7#wwurY;W*~M z`8DdTQ`G-E8Oo4>VKZk>T{Lsv+|UJ67lnro8yGQj_M-3w|IHlc|Is*dY{X>l^mvvm z`A?Z>x#Jj>MmVF_)1LS$U^n2~hp?cbfZj|$51YF6Y8cQ8R^G2ZarNLywMfW7w)3kN>!6U?5jkmxq&DB5H^4UmSp z&8{ut31@p@%CK_M`HgtMa|GvttM($L!@i{>3N7cx%V6%ETJZ&J3j z{9TbK^sj57s-inoskVeBN()*$PDu0UdxZ^+LKxR6}Z!{7pIwOa^2rd z80*)M=ML!#YnA%&%EHAkV(3(^-bpa1um_eI9ED0XOPVolF7zq=N!NO5Vi$$eWO==b zR_@cs>&4Enu;YATyR>xo$gPl>XFel0l|b>$UQ@L8?TW9zzo$2kR>KA_8BT6=G~NTk>a<&VdiiQ@hc$V_dZaaJqwOh6E#Qm;PeaY=#%vjFVf(UDN1asA!``~iuE~NBz zD4P|PMt2>jh}I{&;hWbNC2~)jW6tkD+F_b0bkEo&C`4VPx0_B=(S^ey3v8fZ2VOAN}Uy>G1@>uG%_XDgp z38JFgC&YjBPmH-LoqNXbaE$+X8=lqG%4U=faG(ga`WH^(V%v~!xkPnVO z2_Ca|OG`3ERz7GebgG*~U=hKOe^}y0J!Og;l@FFp_XQPi3mhnq6W==hfc$eVLZ=-W zV4^$(wSVYvSzK5CdApgE&wZo1_E~Uf#VZKB^9eVXw zsGmQZ&Ph~|%)qNOyXKR)&*_MG|B?z!n?4P_t}2N#=}gdD?}Mz=y&Znb)__8*rIZa) z8Ekn6igGf5E21gKj+#Joz4g&#;6JDfP>~&9oC{yH!pL^pc2Hi}N4n2{pk9v@aOfLv zG~2(GMjd?v-mg4lY89#&ax|4%!`0;P8`hLfTriP_r)Z%2t6}20mKI3<>qwn*Kgv@) zI&$iVwcR3T?svGgsBi>LW1!j~t`?FfYKv2?h;6IO2Dd(vO zt@cefY4UKsVHf8hJ zAYd^hHYLE)!jYu^`7cz>c@4iFK7er%RiHBL45fU0A@mxP0(o7w$`9{21B*8_!M%b9 zR9ROAn@f7I@nuiQ^4dXZfqRAG>y?6fW|J@>F#!t4xr;$&C#jQ}Dz5XsN{`f6fV+zW zk9Zym=F!)vs&qDu?QO$@V`tKe($~UdsWodcb{8*RYl}`Qy4-D|7VPrhEtVB4!Tr|J zpx4!v^Jf-A#a3c$pX&4W2uReYPoahbv#w}qIVdYv+z>|x?b3p#wc($BVw+k-`F&!kQ0~ z(dGP9VXN{dvR^F~BkE3qgU&%H{#yrq_Ebp=``vUTGKi0#Nr1;SALRuV3Yh;O4;+Vh zqFHar)%Q$C3d1O(mYSMa->3|Wq<7STF>l53F`?)=!Z1oFa6 zD1|%Y4avB1gQto%iY-Ec({yUz)th?S9+A(j?#D6m@qE!bSLkyQJ;d3R71R|yz8BNk(E;3NnM5@I24bYg^5l3P3kBaIHiy}K9W z{xjO3L^}y&cQj~K)hihD;EzNSGNJ9g#^8k_8Nc7q18?-*ERRsP#OdwjWslGKL*alO zbnKHQ)NQ#8j+fl|)mR7mblpNS5p9A;2gY-5t1|~i>C?Tlf8p{gE%Hjb0uPclQE&Sp z@I(JIJsk9vCf^z>oEoKruO3{3n}*4>J+%YIRXh;h`Yn~q({54Kk!;vA$dhj<59Mi9 z4(!o?p3p&>^?B&1ivh+ad}VJ(7PLl7bYuq_TlGxPn7I)jFQ1KCcgM5$!*{g8cpR#x z_vVBd(tS0~2n!!R5u-P+g4CW`Jn4ffJ6rVN?VVisX6RP(43w-mW)$ zdm&U*OQq6i6K*%UQKIT}0hNsvRN1hMADxTBLl4eUoN}6ce0@9d%g(L%*dR&rR=yE@ zZ}?K;>lWw{cwU@$@dv0(zb-^%D)6xG*I;8?I>{T=q|oOnco^IX+P?h|E<_E*zsHx; z?JkIh`#R(EIo%L6L&`M?dyd+6w-KALzy*Tbes>G&Jt&E!xjegx_F_ zH&wUO&sSQo&A!qokw~dA}adhDt+7LX(C{ill+Wd3}C4=eo}K z`kr&H>-+<*xA%NLACLR}cFQaJ0i)bbXlOw;HI#8@+2yR&FQhz;5;*cguL)O^SX=R^4B}bfUC=KAm zZ-{M%ub3;E6Up!QQ7CJD7b=bvW8}(zIB+EorY0;U6@HRLa{2q3TJHamtlvhT2Z!Ow z^P=S0=0oi4Q2`?4vjOL>He?O^RB70QBcN?^7!H*_f)fe0uz9u%ty*UQId{2We-}q( zY2?C|YdbLQ?n3U)R>CzDbx4A>3^DjBOJwfZLsLK`lydG~>oRNNpuQH2_-8@o%W=ll z#}bxqzYkxFenZHbbGU%Suo2G=qm>^=36lxO%|e3o=3pi?7OsS@RF2-#KO4T@1 zuS}fZ7c`x(Oit~*3`f_fvn@W8s7O~eFrf{wecNZ|#e7*-=~q6^l(i-9-qNJ~btT(; zWhMD>D+62q$dIUy2f=Xg0BifU16wkpVRY>Ycq#17t~xAF-+$y`m&a_9s$ogJ+*GJq zj}57?-vHI6f~3W#lcjsUF~9VJ>9i(EVk$bq1pX4o^s9OJv?~`L{+J0yZZF`Mv@v<{ zC>k?9{HXAPNQ(wcFz$j$)p@Y4qlX{gS`ORx zw4j1vGd_7dfR-A?@NTOkKfa9n&APZ7RJWDmy7*Tx>m?s%PAkK8S6g_8n-8IDq+v}T zXLCDuE0rc)8pCh1+IaZ>0Fj+n05|OTC>yf`QfiENza`D+IGZ>~+^t0f5`SnnW@_SUt@RXAzSn)9YEqV0T%yS4Hu`#6F;jUa>n8h7;yy8{e@i&jl71pIrnv=KntT# zcnw!il4GBX3edznFHm3273Ov9+0+p=`U<$B&0B3MbYv!Y?y#eCXMTa?reqjNT?;q& ze!#UVPucpfRnYca0;Q%((dA0g%(-_Zcqn+p-X&-jZnpZ4$;=u29GZyB?zpl|Y!=S+ z5`?v4txT*_2V7~Vcw}uXuH{S9Wba3qzWX_QcY6WO5l!G5Pb)=zj*Q9C*BLe}5Fhn< zQO&9m-hI3GSXDiaDsv_2=RMtUU|}cw-4w-$D&%S%|3$j%Ln+LX)EFSs^vUKt1~#(tU&&TIPiYSR2Z%A&&<(P2rWjEyLK`>lXFF@E;8AxI)XZvvi5YKDc{rIV zxSNI(XTHLVGi1o}wYq33Y7GfjDj{wBcbqIx0F#c4LDs+#&`B=A%m5>jcp(`or6%ws zhOdLt$`KS*zk%Lo%W#*OFdAK&jlKe$ZB*w1D&~yA#ek>mMx7xhe5xV6YE9T>wd+-#VEZv0C`E~5z z-CjuQ&H=3*EBSdkvgGb8XI9Z+JW<=K!CU0*PvCwQrU z2)4vplb?~b%;Byluwz#zc4*W=e5wdl=d;jmwV3GDI#Dnbq=r>SF^z||M|@Z3NP$u(gjxNHKf;>w$OX8r8H zGpAUIUvE)(ix7!wd&%9YUPJ3Q7woB%Vq3KtnkXI&ipOP$)H5xrGCrF<^T(gsy-a2{ ze|Un!Jx3YsWu`D3{FTo?DdV7LauCw;1t5D{HddO5k>vNAP3k)| z?jb`S|0#nj-EDlwSM$lyY;o*pT>`hhO@*Gxdi1+$6*`|f2r7CeB2SzA``*P&h?nEbThE|-cNvhaIvH@D^SXEV6oUQH4~%E2EnoAY z4RI`;%UNh^QQCzgy>)+pbnP`{YK#TpFE(T5eolm!=L?}xxe4lu;?eTF4i(@44Y&7O zQu*O4xWz>lJCcqwlYSeL(~K7JxD^YjE-vK$Iy>|plkzQV4OL3YGWoStdD ziMHzs*z-Zf_}5y4O5Z<+Z+?tI_Rn6_u`$5Nq-&UX!+>ZSN??v_75;QFAfkuY($*D$;i&rs9qHjQLaReK!e~SO6BA>Mj83lv!b74rL2qHgQ zpv#*uIR4(Anesdr6cSQkpyL{2FP+1iHTVj4|FU5ZbGxsa2QRUIqza1;zk(e`CZzY> zFuU3FJT5%`7#q=&$lVQuiTC6|WVZ??I4e-IzXw?DKVqoG?SceiLWba(6cG6RewJF1-5r5&kT!hQPfK;d9nuwnujiJtHvb3Q=ITzQajTSWA|6v@y89#PN?C7ajiqt56PmfzXW*h-l~lCmkW3pT?u zF)_3{n{S7LG`HF`f>nUxAxeL~2~ z4YJfBQxyJjd$UjJ++6N(6>LrtL*J`ODE(ZGXus=YOX3GH|KSNH1`O#j>riaZ?_?iT z)neYw5wspU3ftnR(lbf-c1Em!p4UY!dD=mqssOSGXe?c{z%YbqHMh zx)rUSoyJ`|#_;ew2S)8x79)7U7-sxbr>(~iGwM2%p!w2sXz24n9WPllD;P&KTpxqK zaWwJi>wz}97J?`LL)XKu?Cp~$ApJ=bb8Ai-o0PB`7C+@?b@D%;naf%F1elUdTvo5; zwmen5DnlPd?80gJJUYY5kaX;P4)L8LRBJ{v>^1M?%8O}C*jOx(I2-!D{3PGd%Y^9p zQIM4{V#K>Hp#~#HKXm+H9+uyNi9e2@re_SOIyIuf1OUk*${H)WGfyHOU_s(r97pdl za+ z5H|qQ#Z$>V_iWrgU6*dyn!)aI&&3V$ZQwgBO6smS(0_VU@dtgyA61toL9aZ~Q2qhq z^WK^S+U#SEpVjkZuT()_;v)#V{Sx2!j;GSx`8d092AQz+EM_m2rZUgR(}9ocIfHl) z7Hs1Ry03r1$H7cyZCVkte!!Lb=l{WTxgS9z{5hzVy@Q>-`{;|g$7uIJ2t>yoLLJ{A zI2XAdyk?1Tv(+=`^Qn?;;b1BLPD!lQ19fVd_7JtsJ;v+*Gox)VCE`ni$a4`InhDRK1$dZ&j)MMUsGN$v5 zRae~wX8%OdFOD!T#>vnX?_0oB;2KIS9f2j>cjWK=$!z#*j!r&BoR(@NUtjs^Amh6x zmiR6B3)U;zv2n8>vt@oaq+TmU&$M`m?v|&l=>?`_)id;%VGXA=Oc^%~HyHQ(D%Q6@ zgRCpV?8mHh`+_~4sCD!&^aU8<*WMnsP|b|~3%FY&`J)?N_B1obmqZ}$h!YVTy${RZ zj^PI@H4-djKsI-5z`!knq#$?^^7duGI=7!_GJh9m3X$P~yg1!iC_^&`I3u|G7Km^@ zf%pDh1&@>W*s{HW)TsLt^P_t!P8N%VHMf3)>X#=F_AQLPJhcs9=36jr*MwnH6Ia~U z7)R%d2N9jrsmKhe;2MoIG&illw^`Qot-K(7QMnHPro9EHGb5Zv&V?pm7@MFy!h08` zMKZ0n;Qe`bA;j(vCdD~|GdItR_sj;p*8;@-oB-rizk;K(W+ZOkZEO)-3F{xJ6O}Wf z@GiH8UCtF>cc|~hn-}!xkF&3!JY+8;U7i9CFO@}z(B$J3${`gBvF zGHID5PHa1DG4c$TV!Wh+(IX)|B^x&|QMiakkrt4g1mvuwpWU8s0%WjZ4K`g`L9LsE zVAK0qZJ_t-#r>9;ZPF+lG>wZ*VNV6W;w&Ag$$hVWa&FviKag zH}NatKVmh>0oxwN^4t_M{_QDN+3yq{(U?jq7hB`@U9!xbNO!nAQ3F@}J;WyL*u|)D zjizcRbz9X%%5*SJ0j37Tf}mtSW6~VYPPq_5cRy~#OU_#4uktl~`&Nj&*Ucg)INNUA zLnZPkuOIu*j$^L0b;FMr+-GF;AA5a=4JrI8Ptuaw!0sJ`feS?GyYpgXf>0E8RHd+A zjVD6?_hU7$U8~q*Ax{`*V-t+sV^06o2C)BT$6;>gCUlauBiDalVFuqvuxri&QU1vp zZ{acPviv^8rSehjO*cFbE@6+k_rYY9Kqh!wFT85c;7If$pk8i+t@V@Wh(`;~y-`qqkSQD5|T}q}cR-h5~Yq?_AD%dwRp+;}ze4h4gcWV9H61#SlFn&(5 zT%6H~aFa?7Lh~1OJ~eWC*u4<^ya9JbU1!wuGT97iIlgzCHf7p{sg_AJKG<{XKh{cM zsyDLFih6myO8!u}t(Li+xC3+z`*Fe6Jdi%ELUwQ+khc=Cyuan!nMG8bL>`hRr7I-4 z@0rc~TU=IuL&SLc-SQ{KN!?&QFNBb|+`~9UFbQ6aq=EgMY+CD`0+IXjYy8HGQmZcs zu<3~eeK+Se|NF23eUIZv%j;VB-fBjBfbz1jZX5_JEWW=8VH zAvm+Vh09|3LfQ)vFdQ<5Q9lWK=1vprYzt(5UYtz5O~?2xcbdVq-vtxK8G-KGLadLl zqRM1BS@bg!|1mdM%l%SBQ27n|th@q)d&d(U<`61IEF#^;d>j|Ph&Tlk$mMo}7rJJW zpC*m4=|K@ZRud&RO-z#lN2n89slI;*n#@i!Svtqa{%<#VL#GYNhLY{r zsu4o!EIUE`3PaD$)F5k?uOkiLMImovDU3X8XI@Ij!N+zB>QNfctUhGRSDxqwa}up+ zA^3M{kYnL60?wWSwaX|8i(K zyF70Yr#(`@Q)SU`^^quaES!R#twLl*astM4`NtB~Sd6f%gPmPNXr5-lhAnjhqxTn> zT{l9YdX+2{KNE_@e}z#?MvJO@jNpkSFK~r;9DI&yg9Anr@#}aA=6Sdg)r)wAGi{A% zkn<$^+Nzjo3pK$exhk9!CPW*}Ph%EW5ML{K7uTF|rM4+bbhXi!nj6SqDie4 z4>3pAr;={&cU8Vci42yBFtt-C1Ps;lVy_%RzjDqlEWHx0836S^xR6R{%Hs786Nt6U z9cV3`NY5?`AQ$i|4&()aVZ$|a`m&h6+GPySXX+ClE=zws$c{MHd_jNz_e^V=Dy{B` zVcPc`g!7-Tpko7{F_WG~rZxzWhyMGZFQ^Wy?aqQh|723@JsnHld!zm3ZE&T;g6rKx zql<4ZyZymD8d|4C@AfVQ*>(;-VB?M&nVc=|h%Ux;^yAn5U^=v9C;7f~BVDQz4+cx~ zFvI^GEZ4qRQ@{TVBj_VWHII3+g_0Fas$(%GHhp1_^?!ogi=ROvR*9V9Y!DLCEwIGB z7TqeogUr^4AiVZCyl+2?28PuVO3`bt4Nje&eFq zjch#?Aue8ycL*aig)xc){?0mQM)xHv;)-uJ zgt;;c`;WZGXTqr{9dArJFBwzMSx#_%^K}$A;eqRg7FZOqfPT8{4`DxA z8*N~g=}V(g`$7m7@WOI0F5g`=h3qIAVMgXNtf=h{d~%&d{miF0C8U*c+#tow#&9EG)ms?$@E{GWZp~_w}<;6OwSl zl6P#9>p1SQRO0e!`EF3I=yVd-JvQRoI8uP?oMX9vy#yvcRAa?%mvE0 zal)iaIVkot20E(j$jzH~*j=61FxIXQrcb^P&+jy{!xnGw+^;MM{C5O7$R>Fxa0$M4 z#Nr(}Jz}}8jS)9gVa=E7Fjr@|(a*(lB>mr1AkXHI()?ejYtxO6*vrgwT~1uNvv_l% zHPJWIA~&`AaNzq>-1hk>+v`{aX{WvEKtms_JHH<8=HCLl5)CHUU6P7(JwSy!D{EC!F}Xx5i<@r%3!$FapI|@$gzv zpS0R&(31v%_`T&P=q=_TFpLvTm11I+o4*`3wnX(&~o{_K1*SoDR}&^-=4Q?l8c zLjp85>L|LO<1!?onlWV2uiwIq$CCK=W;;K=?HseZVGhJr z1kg#7j)CX>J`g-2M?CfkQ#IKXrb?s@<|f`|w0GWtn>+1D$^AxN?%ioHVY><`uQr8q z+bEupjp8X5US@d-Wq9lPZ0K0enZ0L+;M$D_WKkN|S5>m2cM`hr>3}ffR&o-8k3GkC zkMA>|n_S6gb|Yi)D;MH7&7uVlH=x1Phw%Nr28oqS>&!yGtCGyT`GKSqIrl zgHGT*?*bW@0MaAU0*|{)NXD|yxY8z!6sd4Kfo+B~w?Umoj9milXLFgIdK|>5x)?r9 z7o>Him+_KZ8}Ib~6)^F031;1KAtKhb5YSYE5pTKuXKoy}WXaLd8{c65KS473)(E4Q zHsbv4-OMe`uS{k1VaOeQ!Mxcr4}1S@2lv0$^!%<$*#5JH+2X$dvrS@&aNbi$eC$oX ztiKH3QpIXSO=dHN%F+1G`Y>!R3J1U2c62f6go#H}SwGPZ82eL?HvXIO6KTV=LCz91 zO9^H-vGC`HA;}%L6D{_9XZ4hq(Zsz+f%($_B4H8yYVSHWUg{@&@ls_@W!~j0Xa^I$ zm9BXE^BziOa^}SOO1Rs)2+|X*@%;liIIw*y_RS6l-+3lP4rXFbVKJ8%p-^TOO->d* zXD*12BW*iPAv0|beOP`2qzhWWa-S<+tL(%Nk<}a|N(LsqoJ^EE9)RXKSvuXS3)Xvm z#;)=6xZm@BW(?+0)VRgwm{PEw&;iyvk~xcO5IbtIikj;jV%6_FL;YtFY|QC6w5j9_ zPm2d|0zZNdrAI++nJDppmWY8C>)`c92DXo+<0e@l@USWe-lhULvJL2fOD3k*KH=R8 zn?QK!OK4kf4=-^d%fvgRahV|-npKK5bs_$8WMeWeori5@u42@?^Lx~sacvQj} ztzA=Sag;UfN>w4eUVW;s>j&X0w4jUIl|Qx{!L>W;p+>k4S1vaqK|j{g+3IOu74B5{^NXb{C)+nMwZM7 za3_5R*$}e&I1X=kjpylN-0nY)HYcw}`@|q7da*I-zVE^EJm2sZmiFW9a6#-1G3Q^B z7=o}T&SY8JONf#*#8ag|xh#(@E@I}gJDpN-h43nv8&UdhAQ`y&6V8rZhpkJEm|wR~LG|3fY$XSf4OtL?38k&D^65If z+miyrA0MIPyISx}7b5~?6`->%7gg1{9Dc=FG+JK{9sc()+Ttj`-RcXd4vi!Gt@x-P z_JP$}`4gHRbz+6VS$6W79vFL?%36)7)73&*D8H+T72H0+J{S0lC5`1UY+(K`UpPU zn2oUoQ|LxPFEl2pU=_L_9x`K`-PZt$&xb?pIWB{dy_|pW?I#%1<(>=0Mf`&$G1TRm zBH6#Vo#$z3O$dO#2-#V)44z3n)@5Pv2{LFI*HPtaYwngd?PcV_a4NERIyQ^<48!57fpPu zM7Gq4Gfq{y^ZMx7*(9IfBwVuQPeyx5DXJkFh4(12xxuM@hF3&YCog zdXH4;hX?KOAXkGfNUsIgnsN@xsY5pA-skQI477$U!Qx6m+LqDAS>;dT#f!7xb^KI3 z@+t$u&1W#8a)s>7n~wPSvo>||mHgj&7@q|tX8t!ljQ_Xd!T;X9`2VXh{I9;nqW{^q zm@P3&Vdnp-Z}I>3KqY<#O8j?1l>hn{{;Rj-f08c#uMG<;j%slA=zZkrNf4V2d%;9N z757AMr=gx|WapZAymiEpOl__O&0pM&BxfTIf6~R;ZW|aaQzb)_9B2l2nT}bbOA}}J z;E{MCa&-T6F#gjDZmLzFmg|6KA%S#fggqHNy%fi|r0{^TKdn?AhfO9@n0t>)nf43P zOI9X0Q7@00Ss!5ctv$*toW2^SI{ILaxFyQm5(8D=BcOTYIbIy7!J}oTK*zqCeda2F z;;z>)$Y(Y5?KQ(=d(VNNgaoNCm7^=RD3Yx!XRx__t&C4~0lGDYlSnRIo1QC7o9@cd ztY8r^;2p$M5IeJ8AEk1o$(y+{^n`o{ zMzC^ZYwsogRP9#Wbcs`O+;@cZY7f%1stjj7_GMMuB1j8%It-@Pp>S#pEIKVhC%5jS zxgrvD_vznYQ!s}dF|We!&eC+I;Rq|baT9tXik}N?_Mv-mTTSyYW3lLUmHAp6?q5Qx7?D954W~tIPZ27(eMiK{^ zTbuo%%U~KwQ}c)Zd-_D^{!w;O&2cE2U_=*o>?U`%TxE4RWyQ5QdXyTxbP$Wp1;OeL z5LetsH=NhNS>z`2f8K#lLbGVax_4m1e75(hD_Fxg3~l>`f&Sl47}P1 zDOXe2vgd~!T5WyFP*NxgFIq%D1&fg5yRI{hLy4@g)Ka=L`8ZgO4KU&7MNwib5*?-6 zpw{UT`%=r1jy_4_t!x-zChzfurKJ-IU3Ld`p16>N)=9YQ^+qh8*2bO@i^X}1r*9)d0Ya;c*1(DREr0V&p!C9ua?X>aSzc#iwbSL${*1#WHEOt zHD`KZ(+~aXDy1nn1lf$g)<;PC9RQn1Gj0g(0E`iZ{@72rNjrczU4D*lOOz2pe`5cR zn~ZA`S9INW4&Tm+CT_YCBz#PS-fYz-QsS}fYMDNE?znKAza@dJk30v8&r->WJ)5~H zSS#F}KacXAc7xoB8|Y_iObV88xVo%`Tx!q(ynT9Mfz3wp@7jH|_1j1MO@omUDFve@0eS+@YUj^fyxscP{^{_0;6>WDaleM<}aQ+L|OzxV-#vaH;f#EZ_ zgG}St1rKoZ1{<1jrVUCijiY~kGjV`xm&{rcPkxlg;aK@qJS!1{!ktbOGtNNQfevJ@ z<&*5$`Rws!<3Tu$kYy_}=vl*T;(aHDO)$;o@SaalU-%@L83&N`t@*S${4Hus_JlFX zs}P})fVZcaQTeb!Hip}7yfMs1S;;9-sE|aL=+B~Twg5S?d@BCj#ciqAnbOiB?u1jH zPPc90v`Ds7sJ)U1+~XRglFt^Ce6N*=0aL)=Ig48HIfT@US~gwd9sY7`fyis}^f8xQ zmQ7!RYn{c326qCk87*VZTJ0cn_&xBoX#u^kg2S7MxzcrssuU{R$SscI@rP?zK9f_V zKK4_wWKAfw9w{bUP5Q94Dj2WnpT`9sxl_vOT4Wozgjz&6MtQa1*mX{qQ)dEC`)k=h zl^fX&93AJx&}y8xOPGAuQiitj0%mxRPmR&seE1U=$6mkF$(Sbjk|{SP!NbEnH6k`K zB$PLf9eQ$`-=A`r`noQJ$9V=_6lP${W@p)!VF4^UxwPBJ&uWKlzgCdwMjXV_`y~i$xJ(^XurTAjjXmi!*nupGuD8 z6l2ee!=%!@8D?Gog{^vFWY)nzDw4yIb~c1F+Q05G)3!LE3isT0G`1jrNf>=QX9XOu zbizq;`-$;pL2}vF7w@YXk}JBVMk6{kEb6S!kKoz}P= zV~%TJ&ioi2@1P0YCS*M3ZJ~6NH z#C~_O@h-RBR+EDP4|)80S(Ye`W}$zh7Rh2t&}{H5j8@4)l8q}V6BMO8+}5FDS}aGB z2!s2o^$yodq@nn9D_W^nf|pZ03@p|sSC>t%ajZ>);8a1PlYJV}2BYCuVK?OM_904J zWUz2YJQ-Kp!2Vh<&f4bpqwxw3c`6o#2acV@7d!=S8r%=PXH-eLn=I|RnP_D0rG(BGv)D!G<&tW6ZOdle9^d3HqcsvNOx zbfJs6c8ZL=1uffa;}EoWG9CT*k4ceL#1X+j+Vo>8P20JOp7w5GrBYpC%^MT4bC)OX zUhx(~IL|7vNA9kbWa7zwkjYz44Xgq%>(LQb z{jwd7uka_8vqFhnsS8oNSH}3~Tu1j#76h%m(D8N+d+NmdbMW1|$LR5V5hYGh>`OmQ*s?kgLN}xlUB5FhPvtBW`F-N= z*c;>U;d(sRyr{uR$$yb^PQkbNbsPmwlI)2+0WyDQ(x+k0tn676_TLs=dS!|q748=W zd#w)AmY@NQYCF67t2CbO`wX9cnvm!p$1trm5)3xwGn<}SlB2?TAmL{Y#=>)PP%0lz zY(9t|x69H+Q}oEIX%>uRh!#1&^#q&1 zlWj0`RU48~x&=f^1n9c?8mK2XiQJ0h9{X4}^N~G__KUUPXw^X&J=(# zg*h1OFpe%^kKmTnSlF1pf@$2}hwoDj$ga*rY#*A1O_m~zZj=TJ?U_J4exBn}wdrit z)CttJXd+y4kL46Sf}|p@0hixkuFf=h~J2GK7ZTC>>ZDjXMaq!RC@;|vcT##YPH zsER9iDpr>Cx(>mH&mDO076aO4oJ!zzF|4jU!={PY5|5S;9FCI41)8E%Ek&4eD|x!Q z{1x2w=bXvgSf#Z{nqg*}mI-h}g`6Tw{b6867e#!Scw=kI%?!CJm)26i#$Ja6v?xzQ!4bk6~O zvR^Z?SLZ@nl{(xJHzSMJ$}n=ll2%kSc%Dq<8rh5GJQU4-L$t(dGuM;?+C2)mH^8{zS8} zE64D*%>mL=n+c)Awd%R zjP;~1Jp;yTDw4nB=dta_7SQ6B{di@!IKr${`nJ%8Sg(x)^$UV@_LpS*7Ud5P%T38q z<*5W$IP<*x0-(OR9HUpPrRkp@quAD8XyKE^%!xK&`;6>KhhQvhnW@Ps*kZ`tzOB&R z5J1fv%2C+=C;HBDp&lip*sbSCg;Kh~aQX=*!Y2&E`(<%s$aLH>Aq9mkI8u$qNyeh* zENic=&g_|A&83$9vfsbQl2_%a%-D}aDsQAkF4&8~-I4GnwmEmN-j8k{-UK#{|sR$M}F4{84rY|0bH?NZl@CH<$~RMcnHO$@puvB>8>B zh{*c+k{cK7;74Z$9FtL?%_{~myZRWY-J4DQ0(D3n*9dW1PzuKDbD&O28eLQMAXoe{ zCL5Xa9DWA_fjex{)?-ZU3{|RW{KI~7q-pk~Eavv)KE~%`5{j<41JBfsL7wF zQIiB@#zD~H-@uG|yC-E}hw2%iMS(g$H-;fbd!7sHKtYpwxR8IV>qIJQxq>9Y3K8e8Q5j5*!Zu$9T_Z zV&}E$@ish?!tj=HT+%6pXY2hApZv){RjNS(I;t57y*liM<(PdSh(`M!LxH=K!P8k+O?>rj799~60N z_;gE%{o5@{N6>_KQs_Kq;$wX={wAXn9cC?%N&TP zCLs4xiEao=N4M3AV8qR(uJ#L&7k&@Xu!x2G+sYudp%5+%7_+M1EJ%a;LVA{0%RYN` z6_4MKz=-58Fc6u6&X?}6RZF^{I`251d@amc-YBI4g5hw=-x|z}Jjm^i?I=0HuqJ=z zIuhN|f##SF)k{lpG%pXe6pxb!^Rw`7wIxjXJ{WLlC4{WzyLedq&nWN#Ec>5Be;bRQhf1wtWUwp^o z!jsASBgV8*_#-3Z{E+3zE~64>ok-#pSDw`TC~%)@#-=GTxX{uY1Q#p@F#Z6U4_-ic z2I5TTxugM)ayWJ$+8*>6^)%nXq=`{@u)Bz@xY^CJO@d@AFO~VXA)1$>JOtx5|6>a- z*^wIsUTESz9-R~F@x=86Vz)J%&Yo;RJG!E2W+K;aX^vu^MVtcJ7VdMh(3uSW+D$~R zPl3(Tr?S0Vq zXF2vJ$WW<0y$~qTff_2Uh!Ty&jNR2eIZ+$$-#t(T!b1)rli%)0A zEab`VpS$7X9x-D4*@Rv2^dY)Vya3vpCJ>hk)tvhI2cuDc3FHJgy1`Q=SY{N6wbkh) zW+4MNYgAz@uMpCCPOvD?6pT2;J<&S}*Lw0{ik>m4TGEdu-)`VSQ$>T$igg1RB2o^K`=+7pgiNN~HwA0UGw}wg!rFZV z-i*o7SZg(Ms_{L_nzREO9Ea{`L3fz@!=Cnc_~=zVG~ZjnUTu{jJ}qCt-6REXb{|FZ z@iGoBcna& zJYz5h8nD&M4Q&0#+$<{*qyJQ;=FC# z9qJUP4?oz<-ZqV7Qo1k0xNYOeI%hpb?)7_Yd}2?gtoR3NqEn#tLnc0Mkw?9Pcf8vu zfQ~cjLFnv1P}DPm8=I!X_(><3`jT|K)U_QeCjA0OEd>&wErV;QIXV@2V}GS3{U#+s zKW#h3RyVY>XJ&k3ibn*g*3fpClW$9N)%MY^2j|iYw+rx48D&1OI`r8LK02S!0WPva z$Kp1?%SwF`zkiJV6u1|wd%RfDaC4%yKn8ux;^9!72=g}d4mQNi=migmLw%|R6ic1qC3HGd&h}u;5O(_vZu7IUa(G!|P!7 zydO}}FrSpN?M#H(7!&!k6$Afp38d1SFzq9c8Q~h#UQL_8E%HBvH*5Gis0e8pcTt7A zGX}e-Lz$dD79K8xdAlXx|aNn=|86;Fbc3EUiIgA zR*J`&^<2YKEI%C&xvn4uyBCw8KZ&^eQW@i}IhTChqfL<`D~9ANQEeSnn$w#EXUmjO z+AfBM9<`^|I(}?i)-SB7mIZQBo{G=YBc1xEVC%>Ev}<}1&R?kuahJaWa;XSooK3R6 zKV^=5s6ZhWxVua`C_fD$xyn4M(*1x{dUcF(Zi(YmxuT5a7DHOQ{~VOh{fg?`U8QIm zr#fK*ss3O#v$}jL$(NjhRVPGgeYuJ>ZfZ+KDV!G2sR`2{!SbmC3hbkvrs zVrs8t^QQQZ@_W-$aPzgB8002QKSy|Q?^}EJkxBxQ@2$nyAM=PaH|smNUXS%QErg|8 zZBZ(2Jz3c=NS5T?hS4X_(e>Opnm0F|l*D<^Kb4Lg@oXkN7qwv9Yp z^Hzop{Cbc5F(^TQw#;Jh?paD_$2P-DT_?J6g*bbq=?Mt!xeJeSxb(!KM3nZaW;V+C zW0+b#ny8$Btlh%I#|oQE+jdHfX|B0r#dj~U(iq?cXEH4cvyPlqpQ|8TVW5}a9} zOtqQ^@PhsUuv>45ORYXYP39f&T&_%%f~Iok?1`Xz@&x;_rxBOh%hBXe3F4@%!0WgC z0vX(8nvU>J;Yv4#vwN6~GNi*ad~YMA_98?#XhxwVG5Kb@nubt-J_( zGs5uP_j72n{ssokt_HK5EIgCo%iK&#BesuCc>Xd0)cwX4I{3B&T3dseSF3%P-J(*| zkV|fDS-%gXJ(Wq>yoKbi)l}kg-j!V7_OJ0W)v$K)7(48d&%QQ10$jC<1YQ=zi;WWG zQn)RhtSAPj1^l5QL7KE0n(~vf(jf4NGx<5;3VhpQiHlzelDUZ%KQ5iBls;znR5~2jTnc+5dyJH~*(Hj{3bbPoXFx3Plkr zW!%?Vp@~$Kq=DvSC^9rjg@^`{B4dM6hKL4XUu!jJp65~Xq{; zp64IfukE$%{k^_xeLn9u-&kdg_5V(gf}}#xxGdc}LppQbmiK~Y(IYyRUP&hX2eX2g z3-XLe%!%Gimg`FBY{h;k3sOgucqg7`oI}P1Z-lYFxq?)`akI%Q;?`$7s6p8ivoq?6 ze@N=10VzCc@;nSo{!JfdNiFCj7MzhV4k}&K$bCzZSQ4kqm;3&J$Hi)JbXz;tTx%@$ z?BGTD$JMyGxFd|)*BN&u&Z4m95b=xUc&?w`hbQE>0bEjp4r)3m>lKLy=IXJdd=a(w zRKnM#7lh=+JL!mdX`{m8JosU^mmaogU{2Esi5TcgtCcOpGfCSZtGzbInxBwbSQT&} z@rOKbqCkFDlfc&eq&W1tHZ05CkoUG|j8pG;D#Sep_L#N~PE8q;Q3-NcG|K5%Bmxz#+odWZVJJYZm zw_xInKK!+3JPkT&g13fs$3H(C>G+cpVATLtSg(L(3r14qnt>SHG8LWAsdMj$1<<6* z)W7Fix-s7pGySxrb1@I5MOjgX(jk3L^weei(DsQx7qj3+#+iAN6$D~UzUP|>ZF3cd0 zk=kg|J6HTt-HxXl-j>ZZuMjnEO%>zj|D`vxJK@DxJ$Ud-uc4h{phWO}4z$&ct2LGI zW$YNTuG|dyYVD;ankh~4D5lCD8WeJBi+Ew10WWdWq#jRBk@dGR*uyTARUbIh$k~@+ z-Z($;PL?CbzUl%&HM;b5O`%LF&KJG~4}lkH`grTOlHd>&37fV)g6!3Od5Y%)x~zU! zRG!gKB1v1~Y^7ve9GZ%AR@Bj_J1RU{Q->oJ4H^T^s-eOCRWL2AFZnHb3b+6C;59uq z&<^`(u-D3=xhtF@{_0@#(@26D`%}Pfet+RX)ke^HD(O!jC4%EuYd-DpKwLLoBDyJ0 z!fs7(=UYdtlPFuuyVGYe$yj~*V+fs&e1ntOer7lgs>2|#xqO^Os z(sKx%4^Wj%GJSBcx-G8ol~l0x=cpHk(FF4%5U)7%Z5Lg9Vqi&g+*CNhWr{3wiwU3A z9Ema4w#tKAD&LDsz1CWJwq7 zD14sjLSt5YitR2Mu-1`}WMLaCzUaM}M=Y1|=AtT`wK5ccx6PIQZ`aYszJtY`;TOnz z${YG+b%hGu8~OcYi3oSHL|9+fCi~N4KL5NpoOdj8;b8xc-1f^DJTz{C<(?$k67Wm7 zP?HXO(rPd-UJupEO33GXe>D0w96v;CC1JE=JX3s$B208&}2}kR%Pn!M(HK;N3aG$i3;{vrL;?9Bfg; zz>;rRoD|D@YSZJ8we+Ry93FDH8=586!o4X&@Kb^s)_qDA&To^5LZAM^kGRX^bk+ovGpI)lz7D51mr_1rOb6&GZ`6(a(^!@%Pw>FApN6fx{C@cA7O4*jU&x-P$5 z6e{e$yV!M5BGJgkU9>%_hQ1uRBij{hLd$)B$=bUOcbgqDMtC%>Cys3x$WLn=_~iLc z@ZH=|jLfm+S#Mfk=eHx`$aYF7yZuWxd-n}EsiMud{m#+Q%~@<|8Ui1d|AnsQ?NM#? z2Pkdp%lF20gCGkRy!lLPa}ZYd1WuwC{*0=WT0V)8 z*sqVUq`VmH1`s3|eG~*~Mq)YfJt?&XpcB86_DM`R>)eGn%X~Cb9Cs+p;2cCnE8{Wy zJ+R6YQDg3DXz@_M4iOX4#Jx@ATvLomX@(bDBz0QPyHMMjK#RWIqN3$bNULoG-I;wv zJap0zZ-gY%<(U$>WvYvCYuZw@{!YRMM*~*WO+~HaA7N;&3brd6igl*laQgEG;cD+{ zI(ud}*cE4rlN3_L!h~@sd>MuR*7WDr+|F$6r-(B9W^m~B5LU>PdEeZVg63R(R&wdg zza$F5xS!QzwCOpO?cPjHr`l8MGzDH7-W44bFNi~Qw!+~rL4wt7Kd6iPCmOcv1YVnM zxNbldB%ZiOMq@vMam*BYHNBMHw=RZ3>2e|dTSra_s-iBE3jIK741Vr1kklh$VQb|Y zv23#A03>>;_T)R?Im_<^q7I!1=x`S4_uoiMP@UZN(p!fgnmtaC%i zseQF;&&%7PUCkA!Fi;huGn1(DfDsRy;{%X2)mu0^ItJ7m5;^YGZMPA-ksU5*_v?X3t^vPJ4);}nFbCV!2R@0 zU`mVh{Cim)JJh$A>*uToyJ6i~K7BDCeP_uti_ZzebxnBeZxu=V9YM#(&88cxm(c3+ zQs{N>Hdrl{cI0*mTvh0b&X1KC8Z|KL>P323p+TKn%yHm@8t@)_mnO$6BRT7^n&N>* zqo-2)-A2HDuSeqXCW&TUcUqR;e=UtEE{4k8Z{b*$l)Wr3gf530>89a7>T7vS{4!-H z#qel+@9%>}Lt3CXSqD!aEtl7rX^NIT{?a|=V-lU+mdp02^UvioF+gDy6`bD&rTHhJ z+IABte2;-i%gjafr6Xy=kr{YQ{UN088w`J?l(*b{wW#nX7iRZW=IGK4;k*BBsG8X# zyHGnuXk79O?q&WETpiBA{-5c1GoVEnGQgi&YRlB_jc`Y>Pw_A8o|A(w2|3WXHCb9JIeCk%b9yh*MW;2UUsP8BXYeTQz>hofslD@`e%LoqA1 z$}T_KCDH6HIPz^LJUdH?pLCUIA2oaEkv+N)TeBem1&{X6h$)q`SI!Yg>D_Z%+Q z$=n<@QhDpOIl_gM<8q@l$#iVZQ87~Uqx~r5ssWHIQ z(tSB-=_lxXwN&id&4Diaj-~6n$ElbAISGj94WB2 z=%G*`A283GCXKx=n>51^Y&;H$FTzbl&2Bfr%3=}!`#6N}OS#{58{OC@XT12JVjE2k zen;Iejo{#itrYj|F6B9BvV^Swt-2(#+^WDS{j~7t>ARFYMj2XLJgNIKbH073f5V58 zT5{Sp96c(I(!{BCf~fgN&>l6L=Ge?3L!(o4J?$VgJAI@C-Ao+QQVP48H__w9d6X4& z9>Q$b!KuM%FjXQ}!lA3nXH@wFh*+(htwB(t*>rvRHA~Pq?$7FFm=m zg*vQ`qaNS)!|k6n5b$9vSX#}3E$SQO`EPScLnT$zIQJYr3tE`}p@EEVUl(fvXP|t( zALLxk0@D?SJUp!py2bYcx;mSNc9C{2mnP6)F9nWRm@Z`4TZ)^f?}o!6iQ>t{!PIQg z1@nu&z*R|v#y4)XsL+s`B*TN7!XV043nI_8VW=iG)=KX7qL}qfRvM{~ zJ)4ig+?J_yu(3&^;wZ3wk~*HyG2wWXRO~G4D$#ZO@s~}7!bq1&!EQ?_T+3~MwK1b% zP1j{Fwg56`3L(;ovJKY{iT&A3|o$|E*FK*fsWku>m4|8 z=P#|R8i22l?xk_66|hvIw*OmX#c+3&lv}jsd>wsM`Rz{KfAr&nOMlY4W!l*EQ6#PP zuNp1?oQAS-mfZ3&k;;!}(oUZ>w7Fjn^=>-}k=>lYGb;lU{_TP0nJeMUXDx7ud@36; z{yN#tz6N!+{?yz*31ikbi$iP&;)1rnwD#B+u;1;)J$n6=J2iyCy_`h2F}*_4g`3LZ z#6<%7r0&c<^P2S;uil6l-*l%K>@$E*-e}KCvyM{Qnk96*JdjVFG8J`qI*4gMeYto} zEG|0b#IY}w==!{9u&^A%e$IpO^7^UxbleZY{P=JV{#S^hy#PCG(}$a3b1}U_px;SJ zY(27EX4^ZM<1E*4dS4CN(NhI~zd1rZe;TvDq}-Wpo5Mq%3g~}+7(0YNfz%ZW5K>w$ zD3k_pfMs84V%TgVzShR~_d`B+&ThWh&x#U_vbg3+rHyyl-i zgq(T}+yAt|Tpd5`UcR691ttnf^-o~n^FBOH)dud(t0j3yJ6vHpfHO=IAbaamsqm_S zuT}(#Y7?FKaoZ#g>>=T{#GbflMKo8`n$f%Dg=Dw3Cm*)Vz|3Z#8;YUqzo8$EtY@

!^^5qAA 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

Dd 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

dMr?+GludWRj@ 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

#`j`x)*NaGq!vEOms>4lWBIflnm8kwb+ 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 z z=k$hoS4X1n&<$YbBB=>(rtnl@7Qef{8_W;)Vi}svdhSvkx%m#PZ3^PC8t2`b7e1wf zdgrKST{!%`ln%O%kK9scYq06adtlph5j*89;hWAQ!Rks5oei%dbGNJF_Jj9G9j?{{ zblnC;`VmsVWiRd7r-r{qjOE1#-1+@Z2}SKR2qQ-2V%@ZcYtZoCCfInqJKH*V2r7|U*x%|nSZrU4 z>avsIy|x2yUQtW^vKCFscjv7a+p~N7H7i5={vGycB=+YgI z&=^iR~(*pMd%x`l3zYzQF&Cg@aWGReC)S@({c}s{@pjjuiDuZvQZCy zG)rX+t>5(T^kNLDi^h$Pai~@pi9XqC!jh9Z?60#uS&3U_>@a1P1o8+j$);AqBiOK!3C43NR#989{ zlc_wR3-X*X*`&uC_$89|@c}XD+ zc`*T7X0F5r-xF};`DgLt^)$GBLIHD+xN=_61iBY+9)@0$lWOBjct_(Pu#EPh73q?` zK+g_uTa3o_---5shAu9*($)6BX5&QUO7 z=~JO$ZZaqR8Oa{aomls^6_yR!jmxT=ga_(=5_&kDDhj)Z5nbfyOItFk{Z^%n@by@h zI|S@}qS>^ilnz`ghJ8n~g$+YhpfGwLSm;W)bO+!LuU#ZtwFWmVeM#;QSMi=-eKEIV zBG>!u)tRg?;HxxE|+Sx5wdA@50+4 zEiRIRdLO$zmb4GLto(EaecmnUs;_2Hl58EcoI$jku8-U{R9Jo2i6-Y?A@9-gv?aC) zo=An=@%dY8GUpwk70Nj^yUr+}@@sqC*n<46>q!* z`4uZ5Hc5`Q{By!~^}d|#?ZrJk=d-TX3)mtp@N~@6F>UxqIOaG8s&}P`pDx?N>)Ita zrhfqDU?m*S=!ONiCX>6gH2)m24BuG#lJ{j}u2_%+fBz=By?UdGcJgsFc(flUceUar zZ{FAB{n`aW6ITY z+q~H|Owz&EEQ+Vp%aZP4vNy{=o5pHGw8imH$FkFzJFcr|1;cCY2)g%d0UudcLN6Nn zqxJnlSRHg6_Do#`ABM)^G{b|^@bnp(9ggAZ@n7LVwKX5eiN*;@t#H9N2_B#OM3KLb z*Q}L>y=Gg7@W9WZSn9HzCtgjVd)!3jE39gI|ELjaV@#lvpCO-Ylf!^DNoYEFf^^dDDxJKI?*#RtxXMt*Bo>S<>j%J(^p)IyiY=#I$`Leo|0Z<>TW)%?n4IFguzrCd-L&1ebr`0c{tUOesFG320-W4`nK=9I8}U)Eozzjt#cOZ(W2*Uq@i@u)#QLOdsC7U=DehL_n+QDY){)7?+0~ zgVvAT>1;+m)fhx#c>g+R$PI*yTSnmYs#%;dqz@(y_T{YFSFVemJ*FRNo1kHnz%~nK zVM&cHtGks^XTwKg|KY~G%1(OrYbT2GGO|$dMg!ySG*e;Lxtcej)~KSR%#+s`Nellf zL21S-amb%Z;=W~CIHuA72aYnqA+O8f%aIQdWF88(>LaPI_h3o0lZ>4!)6nMj0N(x1 zlb=iXQpFuA_^mJyt%EPa{Ap6y73^TlV*^G>QF|t`5ZpK2qYm-6aPPx<={gNMNg`B(kjQf=8!x17}f{cYd17 zpKFuAU-vS|PspX5#fi{RK8iCh8er=INuA+2kykvpLFr|?(5c5uQ1(y&-6PGUA}5c> zE7f^brXJ>w-UrpHQ_)Vr8xDNjif8$3(k;j zq?@49>jz|yDgce;-Qn}PLXy&ZXvmdP|H5M|EPVxNKUB<5>jXBVR|y~Q zxbpkpk>uCB7QZGh6)h{rbLW=J!dsnLT=HZv8*iG26As2m!^7+@_034s>=_l8?kqh_2lC(&O zUrCp}1=4CX;(=wl^xJ3-_cPlJ$BZ{qkN)de4%1lw+as9eQ%OCeOfg=4GE~eg6Xg9A zXLHkj6)`|_l#HE+XzhgJGF0OBGvsI^$%^w&TjBZWrP!lyUp#Uw0M{5UhNN3Tc&$(> zOQ&ff*PN|6n_pLRZ?FM$D(i)n@xwV)u~qE6EPxAwCGDEE11`IJfgWFe1V(6!osX(> zU4s)pHk60Rb}Rf=uMKSti?MTHK7V-f4qhsCZ{=Yyi&#>!pIrVd27fJ=}5f5LH?QLfP-BY;7#Z^S7?V zS#}=y?vn)#df105#woJQ5MBP-ngT|ai*fcLcevL#lv~3bajb&{cB))Wy=505?6;)b zKmFOb+Js^9?3!z)ro17iO;T~2@(Pa-h*!@9E%VM~e!v78y0wy;q=CPDzK#Z@heLV) zCVHx=!bbxW&_Z_=DYmtUt)_j@U*)IZG{6$SoHoG7sxV9&7>;tEGq{heKRV}j1-Y(! zAZOBG9C5BQR}3k|;{1Uex#vC&%#Pqanyn;%xkLP?Vk%UPpN!uQ^kJ2-Qpow-Om=D; z-ReEesPd0DuYF^O&z)WfN2d>gd2ZLFqNxtr$_Has#Z2rd)guSPI65PHNRU%@LbHRz zaQR3UEs}Fkp*a{=YIQ|#x2Z6v<)vuR5R6ay%;fZc6Gca%7$>x(KwmuM6Q?vqrp&*r!AVYY>nd_d4y8!U|fL8DfrywVpx$(xc$sr3#i#^Jg8l#6%2Wf;!sQt9!(1*)tN#=i+JqcQ2yh7ANHLZ37+mwxLoKhY@Bq0-Z&|O zLwPB7O{)^`uI&nutIWC9Go1V9@8fH~CgF%b6EN?rKaTOa1GkTNhm~C{XnN zt!sU0aZ@z}uILaNm8ylH!8s86ei&4z7?FmTbT&HmL+m$6DvWyh;H^W0c##y4zwp@; zgKK=;qPiI2yvlSTY)c#~#!H`>r^-PkEp%M_R82S8NG@&j!Iv*>@W4!IF>8|};d1qG zX+RXX*GFLU(5~3;TP<9PO+ls9UO2s*LlkHXA1No-p!-Rq`>vwY)5d^hGhG>o4J z%bz%M(7|MMzWa=Bm>S}?)n;rOzY(KGX`x!GCVRcO1j(Cr@&V5%*xPL(51+dqEbGU@ zc-@O|MZO!oyW0U>Ubc{?6p~q|JdonQ4dpWEj~@=1;odpLFt>LiU0kpU+%I)vJ(H(G zs^bFGQhf!-GJC+Tvy;VN7K^ZZv^N?j2V&QYdtk)buADM<8)igyLC;CSoS43WpXl52 z*_*i>XJ8i27rLN|x){s`vuTc^OPaG=XQ- zFU5N=a#)lC#wClEQnP#;%=s-R9^rlQS*#Nq4w?y1eyry&QYf~|{z=%^;S+7} z50PLmZdfZ_qw#Ybgc7YJK3XEnxj}2l{FFS^4xW#{)=vA6cU0kD1D~9K4|uKwfeG@j zr`ctbaO-4q@q?sUxbv}w?wZDOURWqr_UeaEmZU=CAT_Q!<3&I8he-j30U-UnHFM+K z$*RB*3>#H={RtZ$m0c>9EyYw=tzJd?wafynqQweR#z)0Y*5~2uGx6srG$u z{39vDi|g&FGI=h#e$nEmw^gvKmmB``dr8V~0(i=?NN(J|QNpSZOjvf(GJGr3m#4KHz@ls&zWwYw zTrKFuE7$bGnl*KFAyxX!svaDBFhvNAS3up2w=mUrEuZ-@mSeId6}&pZ^k`-N)zy<# zef)7wLNb4OrN#Mwlf<%_qjA$yV=mNsMJxM_2uyMBusAU+-~-A8<+`=JyN8F4NSm&7~sx9h2FM8@FpuTB`E zWk|JQBe?m>BCH%WpH-jBaL;e|=&#;Car@J6u<3HX@M82Q3L1JDwvBrYt}903?~E)o z_WcEF?^O7flMH(G84TM)SFuN}wESlW91(rVZN_FLp0P^?f6prsKWpg1!eb98RLzVg zP8g5Mvwn)R;=K9b;)jqWzm+0`C5*jPT%H=$3Ul|Yp|Atv`J_@h)}RTn#v?uO(}C>}a%?Kk?Uv1(n;dbe<3Q5LC={<9=!O~J zB6!fYXwkRVHIQF-9HtH0AueotDmJ%TVeLUfj@fZRd^FL4tA34vWy5`WW)~|wpqNeb z|5;;INIM)_?F4})<@qIqO8$pRmW1NgV8|#kw7Gbb9)5 z9ArMsZN)k*p(Eff^cW|V!z}Bi0M}TQEqBC{d9y(A*h(0ub`0gBY9ZHitLwMdCD12g zi!dcT9$%dbV{;8{7*(}aDqtLk?20Mqdp93rr2RqPD{8nh^(lpEwTZ)0J@{%1L8rR+ zqR_vyxZC;${N1%ecrsLa&OUYI@*Hn)dc7WB+-U@}wlv6-sSy1aw1fV>EL00pL(7dC z*i&{Zt(aW{@t)aK^?N<4g)E^}Qs}THwuYW07;#(uB0hd}4K7YI<=L72AicXfMr!uK zpTSi%nsGaS?)rIx(Bo4BL_+Mk;%5sbJ_mVS8~`r5Pom}DE9c^B`I3wh^y|p{g;r%9~l*& z|Lu^){~~|zU(*)w>6Q+mph{K+UxMcd>C%; zHiSDV{}h`}X7Rzi930XuoKIwS!#x2A=RVBlp~GYFci9-OPP!pAseoeHcUx)HW) zI47pBN)j(@vBh%_FVfkfSk~Y7i{wYWp?RH?@Y>ugo|qrR1(W8VaM~Y=)l1L8rOf{P z=KD|{bs+_1YAR}!W1oxN4!B}!%xLs5?glZgCOE5ie_@*aU9fH*&T7MpsY}^Vy!2O( zZ8B%@-<961^Jf<78$5%hVLPyR`2=v(sl?fj=EAx0l5?f&bJ)7ej}u?t<}G)kd3^RC zc&p-z$srpsTS1F8ySycjK|OJ4%WmlN;t%y*myM_5#>0VlQ=au?Bn0&74b?3YS>xM9 zQn_`S+d8&m+1hr7w*FRKPAvP+8?95Z{iAr zRovrA9NjYRikDAWvPQEFpZRxinR`K=7ETBa=YNIiex_dU@@1;xZvEzJj#%q z!o|%iusY?w+u8*+!ZtZOG=)IUNOj-~ot}Xw58(qBLxksnZ^^-W4=Gj-=F7fEsN;+= z&Qg!T1s}3`##1+_G?Y@RuiuF$A9(Y|CwAQTUDTD)4mbmu2-5CbImweIx_K;ka zEzbEG101viHC^r5ct^nsXRXpeH8kTZ{Q)YoBWh67_7l#bH9SmU_U-|rYnZ@dnKedt;Um{Yp`7I zHcda8hF8<#kS6{VS}|3apzIE_Vk)4_;E#AhNfuHUW^=fvC7;fTkX+vr@ZhCH&Xc_d zJ1$9XU;Pwxd+LipdGhG!Hk3W}Ptk>K8T?^uAZ&CVfHSv5^TmWZekz3uHvRZXwtG%N zbnZb|5?V}o;r=LZ+Zlobx6!`nv-D%QCB4eBMAy|Q8ii~lJ&$@&dlkwtj`Q%G*>z$5 zH+5un4T&;@nAf@sf5ez_p=myj)3@Qfr}Nl1FN;6>twd472OZ8|r%B5$;-Rz;;-suW zD3doB8{cd5$+KHPq#C_KMC0m*AXhPafx` zE|D3wqk(N6_uF(29*xjJ|?F>DVWdi)qB-tiEY{|Tk$uAKz86RUXLn<93Z z?$0jL0>!YriEenErqF~PsM1N5)dp2b!K^U++&MsUruN3d0HvCM>|~yGa|}(MeGsqe z{Q-y8DtNL-YNw4d#qn_+)MeEs3YiuLd-mOiJLY*b{3&3^*Uy6d?d?!pr@&7=7t_J~ z#k?lW1ydU>AXRP{hVLwgS*-z>Zn+dMPb}oN-g#Ivwv3wF`b!5%}WibDvn;>~tDF4C{`3V_NA9cS|QdS z%EHbT>Xh+egR5Fs4Zd(H1@)vM#mK*^aBY$uUrH?(?|qa8{tE@D++~a#UgzPth0=4P zY%{e>H00%d-TBDc)k29)Iy$>Wz_L_ZmKm`CgRC7nt)9X6?S9l6>`QqsPYSBD*5RkV zXHaQp7yephk3NZWVf(l!QRY}MbX$7}BL|k@*PZED*Yza+e51sFXdw^$HyNWQ8nR+r zCv08l!3U;>;+UPm{NzReZ=qBks(J+4N{92keZ5g7*^YIR5{Mjs@AAOq6=X6fc_Uq@Mai>JGX~;#tJ$jgCI}rO^@#JwfJ5kNi9i0moaMZa{ z4(fG{ef6rjN!Q2iQ1&?~m428jUnFyERw=dC$+2?PCVsZCA8&uVo)!u&ct}_R%9Gb& zOv}oAIA|=y^$F#dd)i38v@<$Qvu}45yyB56M!4Z;J6+ zOr0o^2V53o?WV1KFl;kD*i=H}-#9?bECb9|O%;uoIiaWNdj9xaRibg%!?mq@RG*oMzrP=@85$v-3r476sYem3O+N`8=i+e|o+F|94QP4gqnX(% zHY=Lo)-P=nE`QaV+pex9%`F4ysQD1&(JnYOVgL^a_M<_coiS$HY&=-;>126vIr?v$ zi`x&RK-&astTybqCGc0y-%Z*)42OD3)&hv z92d$DW_7PkQi}R8KGKZhJ|Cm_)6k8mQ+6DRBNNfeh9SbXh-{aE_-E}?*iyD1UX76F zIqChrW6SNwr4?S^Oc%~Q=Nnjrkk*2yL2v$N#T#9Z6R!29*y%=$4kMN@oagc z(Bn%Aq^ujpuZutPS-T`2Kk@~;7iI@#P^Hccs(}^7RdM$-4QfJLOd&T*) zqWIs_jraxTqT53?)YeIY3pNF8aCe6=uJqu_hw9!# z*;WcHq!9@37nIW#lN;hNZ+l*S_BkYKN{u1+6uu+5>%VNB$U&0-I$Uxs-c#L<^HS`v zcD_D-YMP3&yB<+?Sp+UL8G~sK>pev_KyQ)ad@i^Qolgi-X>NY+63OtX=0c^zD#lA)X7fhzOBX0bK5P_P>@=Ek79+@T_eeL`#N;qT0qu+ zm9afs2CwZ@f$YZ5G|(-Kr`>!eXzd$CpVxMmd|SGF-uEyrEn36p#!iH(WySnrts#Gl z8OBN8S(N@KftIb_CM4Hxg&70OxoAKxuDn^ywl}2b+@Vtb`dT0N9^JzBaj)p*H*;7Q zyN0za7jpWAPFx@@P+~NOV(j%uHk;|gCFTRT-@5L+Fj9r>3=1*v-%q%!UnJH~NQGY; zS96tZG3GYyg?h^(X@C&Lva6oKofX@_`L-!6YR;oqD~F=4S~M;#wZ$dZw&4N`L(V?1 z7JoYE;Nwk4@S039-3w3S=Ax6TywhMVBf7+?N~mfW^*7hTeo!<3Bo z!laHmVcGgU7*y#BmG6~srl&+DyKaf9Vhv6aSNDc~lLph~8T)bS%ns@vF_njoNrjH$V<-D( z^^lh1RT%!>M)=@m$MzdCrJ!gX+>#U6{eCspq$P>|2UlZPscExHdY@BEY7ufB2g1X^ z7;5Yy`LbWl!)qf>V1UB`{wsOAR^E99MnVoJ%zsS!E`4!i=v;8fD{>v8fn2!QnsvQw zcu7_g_m_q~?YE`xCi@MZ4Os&2e&2+W#W%q(CJt!ULiC$d#j6(wgKR}(zvUxmB6e}P)(!;oS-hyI+*<7qzqdH+wzS+u?vn>_4+;~VqvZ1y`* z=RqQ?PHKTK8wPVrv>J9~p8)GQTLrzKJly)_B#tio2u0Dapod3a9Q{=b-6i(R0~T#%$M%e(EIP9{H(-~lOqc`TFD&G98I9v zHV(YQ@eu9JX+&4~Dcmq~bIqHWSh~)3pe>`zQ)4TI)t@Au%l_wJ{JTzUE}F$|Yg4h* zT!n95a=>S|zmUlfPrjJ_UW_hzPhGDxalbbUF|fK2Pt8un_t)3*s4F$pbH^ymR~GrM z@?9gjBMbDZaHFZ%~bi~ww{Uc}1jgDCK z-^^kDe~lv}_dchht0#n(gq}PtErVW8>wxBcP0%mt+X>@#TRs`v2kz55YHtpqfU2>e zu_g%BHA}?FfyprHkt>#FjOOMEn?OuDLE~r0;9j+~JxSzinCtit^LN|SIX83!U@AR7-`+ci9XxE$n zhCHH>mB(S-CsoWlFHsii)o zeD;whJ^uzbr~V}L?uqdMRZw#?j$V8iE^f{7U=#hnqKDcBYIt`^Jb&a(&8nYgC^k)^ z-u4?x35!Bt#`>;Yr@9(4j&FhlrwZ{(nFd?wcwwl$F%NsfG~~i=u#Y#LUO}uA^t`qz0`0LBi)lpz9W|0 z%&wES7z3Lw>0rHNr|9q*1raO0inYc+A?3nz2+SHJiqTiZZ!T9T>%&NrS5Snz+LADE z>Pwn%T!~?DqeR8@ru$Ycu0uVYx#3#@eQzv>4O8z?Zl}H+mtiHYf6*asi?k5ZrX3Uq z@7Lktf0rOUss-j zqa^y$0qFbsDBZcdK}=py0SAVSqPH9NkwW1OL22i4sFWJ!-xRNtkz#}RGS-u}245ui z{fSTGY4o^x;Mk-TPih*{K8g)gKM^TdmHGEjQ?Nhc8{* zr3aY{oFG|CYB+9{mc$9Sq!4`?XuJG|N3kaSaov3wu<4*6Ta!%+zur;jz-l+EKt~*3 z=FEn7D(KHTTRv{F6E;eY$Ud90=y2kB(z;zvpNx}fNKiLk7$==?v?jW3HkICu`*(vA zR(mMNUly;OPobIL*Gq&OXLxI0O>_4ThUibb1(n-NMWa)lIK*Q%C7J69E7!?UuEIq) zazXOmTB`D@)16??X9IB9I!L%N>=c=WPN(5d)G1)fJy?G#ip_F{0M#FX`FdXz_z3E85Y9|*A***b+~V^{)Ct-l&0kjw%1^#PYr;U( zd~Se;CU!t+MVs5Qh_Syb7nAt2Sd^K)Q&`b0NgR883ay@;D5lBAk=_3H zH06ycG(?(0pH0SWY_ggLxcTAsm|-H!3+6_dXH-Vj@OYv+zFhE)v`&8)?{8MdBg!c- z?S-9?q-e%QehjPjzlF%pOG)eGC*iUFP|?7unT#6lgI?@o_;bh;KE4VR{B&LU;$e4~ zoZAkmJJ#3m{b8)x;EFBUziSNU4#1ZOx?@ysDh-+WmKHhhrRrb>ex_(ACSB;lvJKnm z$icBN`h_eyEzgI!DK9~$_%NLa@rUH0y4*eH5fp!%2C>x^-1OU=8zKy0_VGAUNj*WE zH@*YEjnAn^kM6>K=iA_-Xq03VDZL0QYn6rRYErNx>^#J-SVUSF1uG0A z+$_XVs9#NP-&?MM%e8M5v^N#_gkg=s#%fx!d4zDhTng_L1c+1I2cX5ZsVq038M2d3 zik~tB=>4oS?k|1=i5D&LYV2Sf_NPKfnQM&B4|<`M?p2|wr#X~GcW14PPTYA zK~X8I9)>AP22eK#^sbI{sg-C0T{0$8^>!;Bcy1$vZBpSQFFN3j<3OA?dnY+%){Dk( zuE94k8#-Bi2i-NUc)O`x=sfc_RO{4;wjVRWRq_yLM%vJ?9sl5{U zE~J#NZRE3gjnHEE9Om7(aPq|bW;A8bs}<#LXwl_k%L&y?}pPb==@e|!nx|-Y0&yy4ZUvM28#oKX`XipotUPBo35F&5LpDZOD{>GxGPXsI)qxjTGNDm z->7<2CtSZ+oyBRrIncHO+AU8~=!6zw&X06AcgL={q%=*mxx0xj?~&oXy??>PxBfKq z{2coIVn1#DSOS`DAK}4~VZ!u%Phfav7VJ*y%C-$Z$#U6t@zwq_G+_CEsD#~U&e|PN z@lYPT-1pGVL^dqo>2U_8{XdI1bvS@ByXRi!k$BV++B4& z=-S;S?cL?D*;pQfjOA4YZ3Dd4_TVS$#CX0|sm0 zb4nrn2|7=66*`MOP7LGol6B$BG*3)g`$pVsJ|8si|AmTSzs1#$*0}1f=nbRyDX`X9 zElfJw4%zN&Y0%d`ZfDlM6+ZeuglRfX^yTvj5{iC63dQj8oKo0wO9|g!8H%0CzQf2i z8BFyt<%gHGaO3kDVYJ6e@!Y8QLPNksy0}cTJ4GsSPYfl;XU16AC6nIE-=$?oE2;ay zI+(X=F8+?phdxfLpx@{osHwXPB9`41dsWuLgl;~>#d@@On=b^f*hzR_}Hg6B-7AZ60g=vB*p8(u6bj?ch_C=zm-i*r%R}M$VC{mcdmFm zR9(6+UluDrE2HDB-E`G%E6hzh3diLEdd$&6pA1$0-m5bPiFd(j+F#JSc!dfYI`j6G zL43*biumZPwP5}49-JLH7!4Mf;Cbs3I2LCKmnTieSCh+y9;v;=YfG<+j-bHhPZeoF zpL$`SwJM&DlEIegZ^_ucJ07kaE#{9l2IKWkC_k@(?%KX`8)WD}$7{!N#_L?+^OVIf zRZkt823&)>y>&FFs~(sY*MM2R4Ep!Ys5$KW7mRv(@UoY4nG!maQ>=^IrBE3TN>jxJ z|E7TWZ#OjGxCr&{HP|xJlparC4TDl&3PpMLJo@T6C~T6&PQ!cRx>we4!8F)yOuRg{ z4mtqOYg*~enVVvgQ*TsMSNea0h)1F?z_Fha-8S&M;H^+gsTQ|rv#tw2k>;Uc*19~{ z<(3d_W{&Fj*VjBvsfHkx;X=R9`-R#;FT`ev#A_eepOpRkLuG)CxU^p@Pe`=Y=E=QO(BrW+Ten@N`VY)Chfo)Xx8nBi#o}KdS(Z2Ngfo0zQ22|VHSPP=xcTi_Auw^GXfX2} zdG!k*mk)zbXNVzfFlvD-P6eHU<7_hTG}=spsL#;$j0IUMpRj z5i>4`&2yAQ{N9ZY!geS~nnQ|W8#K0Wq@I`ZVd*SGk}cgr^A?$7iRpc6)F~087aDTr z7F7}-w@}{k5ooON95hUQgb(c|xFxWW?ljlZot<{9dCQN+#)VLNybUJ~m1u|=0=Zwg z1&3b8L0i@?K}qcdTu>UsJIB9=yqN>&zGMDL#iTKUk@q6eqVh8gpSYLmqJkvrg(9Xc ztA=x}W;M@ysE~7B0RNufLCf8bf?Giotv)Wp&l05~^^12@QlyTzhHIE2kQ0riEw&txhNajn`5tOWB<I# z>W9T{6NX^?IWu&kBVuX1Avg6J%a2c+Lzm?rfHs~Gv%BdDKCdP~_?x%%dczQoQkW+U z)%iiUs(+BxuIL)W?yJSpqVD`O?jh(Z6@p(!pmc5Q23ga-AbfaDvUy3cfAl6e8~p=p zc4vu;bUxAET`JUX;z}X2{UXh|KUeI0|A*LZiv`O>ucwa(pPlUX(vG+Mmf^ZRM`*#_ z?Q}J5cg@xUW1jDwD!%XJhF^ZyKz>9wuHC%`1G`;^5!-Z7Yhfq!S!oYf22aH(>d()m zkX}T4G1VS+!F`ME*gA3^Ov;~xLda9dm=TR#WZK}QUIuP!I!?Q1&*UjdlHYq}AbhcI z5&gFmz`h_Y%=ldez8N#&+7(S+cSasQ|JVp#yWR-B!@Q_Yestd1^n#pG1Tgtkf1+Dor@Ide&XuKeuZ(cUTG`*!_ziLGs ze*HH2zjs5Ir_V^sF1aS{OfzWjbEJj!Iw%Pxgj~DFl=G~B8n&jM{IIf-ZgrBVih>$D zb?V2m(hfqw>MV@vJBY1Qy)p2xzuSxQ)!?yg9OhW((%GY?Ff(~B9o60l11qD1(Dwe~ z%I9YAWQIfrs?8wP_+PMK%{?f3UqY(=5u6^`X2t1DiV6&kjHQ#T@U(yAGi!0VZ_rqzR)M-bkR8SF4e_7AiqyfY1h|!VZc$q?-y=}R#I56 zeXJ}`CQqETBphGOD;2MP%AzScd~iSx*C$HN$9<_?bY#o?@K~#RS<*$}{UrpUfKJ+_b?M zaepScl-Ij;ZpamSeP1Tro?Z*B+7755`-h6EE$O+{EwR_nBjCQ;4Trt%0zQXj(e!!+ zj5==w;ekuRbKU@UX_wv$z*b!Ob_!WP`ARmACI~wo`%?bPpC?^f01C=~XS5ev{*u0S5R?U!GOen&|ZX0tlNo9Mz=4 z_!xy|(A6FVa*}oHg;EUNcq$Qjs#f!#m<%#~R7sX$^RfHler{a~_rmwCc9^=ZKaCa_ zQtJoE#LqYr1p)$<|==QHh&y6!d!c3?3XDz(Q&< zZG3Km)y|=?Y*4UZ2z}9PeL~H6{oP>L=Ym*UYJ>Bozgr_fI2=+AQ6mRIj9Cp0-uVa9H#Tu1VIj zj0bH{UTBB%6~%4~d)V^xala(0n?5yY|AT4iU%)A-gv|FHhH=^qTRJ^}FXMW$$qg^z zz+np^djAGE=9@&FhX?UCKP4XOqk@XpuhR4*O59o(Phk#&xFygHpM;fBhguDU-;m|7 zmkDtHwK8gZzW|?F51M@Sj+jywA^eeYO1noNhW*nHQE9hGY(I2Rynen18+-nx9;u3W zO)5Qa@b-hmO>I!6UP&)=8)@aYt~?-qqqqnTK$rA$=-C)ZCiek}}BuS!X_B zHVaeAMhivWD`@uJxnlA1?G&)M6W>Yb4J$rP5sQ{=r38Cxk{Pr{*s<}XVEBO=F-RsIR#Xf^tsZjdIa(Go`n;q6 zhqN<~$}tT0b@QC&d7wd~1}Y8Tdq1Lqk|+@}reqeG$0n&vA&nG5iUyTZ-+Mnqg-TQu z(V$QnlggCr_x!WZT4%3)&R*;M%Ua*c^7X#YbKk$;b>)wU5s8db@YQuZDGS%cZ;r|w z1W14g|I?vPfwOV`&lR2}?uj{xW(2J-)zljs?JCX;r zQz$!f6h2j4Lh~t~A!)5HDA&vIe@$1U{Obx-vQ&(8SJlI;BpI^%kq~3^ESya&6h=S! z-~7s=9AINlVM^jF^kd@S)s86uC8FfRn-;cE*pPWu^%lF8K69mnK=k~236^<%hw)Dx zA$-&mg8BnEs6_^VMQi)shucBmp0vie`{4RoRPtg9x_~+ zz7}R&|A85602im$V%BL(wE24*Zdc|1rQ6QOe5 z-pt45aI(VcI(W_u!)Ny6sC?%{Ms7tft0td}@t3B<+nfMcAtOqiKU`(H-7kXM6^i8 z0K2agLit%wxF>7GT%U9UKJ{|%`;3Xy!qNs44RawwERmhEa2oB}l>&nM)tKdxWgy~G zjJ0PPnbr+9By!<#b_LNVGXq~k&OEMowJ?Cbcq>l=D(boiq>aHvM37?o1@S-f^TjunrDAE5(BwFT!0bL%3c)#{5jt!hLcR z>8)A6!D^;C-JNDivNN|i1)J?*zQo0`*_Wi4E7w=B%?H?u=E>`zrgA47$f{)77$JJ) zs~eNwG~ndH3m^W4wg z!_8omokbuaVG@cZTLEKU#op$RL6rX|+&QF1+We=W%<)99jA?*?z;5Xk!9qnt^=1h%7Z0; z2AIZ_r@Z^#Szz2$iqT;w`PE~h#A&%L^U3%iT{%$*hidP@quc&)N<5kb-0Q$us`hkl z!Ao?w_y^_wZNV>(pE8RgqM@Ql8=If>!rmAuLVedTZSO_-j}jzs`fx0pc-IFMCi&x3 zpGoXc@g11tszs`lIs;XH8-+ZibQGSeQ`qi5Zi$qIt>LaI-lTXptCweC-MQDewtiZhXgP zTfFC4>o^h7x_XRVY0RC(;z)ITFm$3CDcxHQjRPCe6i-5`We7%dWJHDerqpDG4%2;Y z8=MSLA@Ea!en^of&s!pKi~}MKpOhggHc$EXdP#VrqJ>%V!kjss_oDpAePgmnD$`rBVvO&~X=LGZWg6_^MWy9Ai(m8?Ous&X;jO;KFmfpn3o_LG+(E`Qpn~;V zTaQcih2UwxE$*4O9XGnXL6H~xi0ViHzjAd3_%o5vvZ@R6V(n>ynFQ6^Tf^<(zcMp_ zyP;E^0Zm=-29}z=_~QU8Eqat7qRWj6Rrnv7 z1Gp({A3IwQ@!nBmVwtBw9^pb1m6fFvWgYl8mviTqRBec|x`rFpoWQPQ8mOLUNabyZ z(4zYwv-i3kbQh;b@mg2FW+B;q+X zBqXxakFAEeS@+mO9)7$;caFTCEJyDwseng?O3-Q*1iO}-Q|$vycywMo6olqtmzV~b z^-r5RUv;9qcy+umSAdFK5F-ZPE1@ha5^bJrcRJJ)fpeqe@z7@>o`qWyw%C^8Q|A_J z+^R_%)4t;>{}T4w!BS?;b`=`wDMfyMOyDbcOrWQVgy_=mda%@fAvslLPxg*|0bZ;C zqGJ_4-zN-v?mgrv_OdXr))O2?WXY!HaE#RYjT5^@;bl-X>QuF&oZ}3(C_9LWOmK!b zjvOI=K?s(ZN1)D9EgE!L8w6Gbu;0WP5cQl38qxM(J?9s?#XV!*ZkC{NYuuT$Z<6uI zWeZYoyc{FOX>+?rEo7vxf%cM5Oipe%L|7W)_T2jr$C1BV9{s^>{4#tQ9LZ*eW^oh( zGg|p2fHYdE5M9jxG)kJpOKoY!w+04$kwJah+iyzcul3-QFEe@jbWG`M%?en?QI+T1 z=H?~~)kw|+bvkRY3psXmF--tOe?W1J!YY~D&|a_(1Hw3vz!n==t|&^EPS+u0mP0tIeu!Ns-3>xJ#A(gF zrR3yhBb2<|!5W>{r)3xaB2W7)Sm_nRb(aJ@Yr*m=IRH`H)YqV&5kfsmm4SU8fm#o& z>1hjX40bHzrwJ}{q7R%%fcZ4?IsQ7MD{z&4D?Eot)`h@+X+5eIJRa`wJqfeMo&+D6 z!s3IYs3$YV8C;q`VD(3SpxFyh7;z+I(h54Adk%Jb_X2azn#A~U6yb-f$he1PyyrK0 z5Or)4JDV$F`)m!x&M#h!kV`6P=Q>g2CMWvGOqWjcRl`u9!!V$F8JDhU0A80mS;_7H zcV)fDHOH3FJ6f6~V2rcTU*dN1Te&%+eK&@EX#>r}#`J}>GTEB61J6xJVfT7#k<-I9 zF!SUup8VCXaD0mssb1EPQcN^)zmUq;+t9}fHH*@i>C;f@mlu7oUY$POJ%o2t-($G% zakk;I2i{6FqznFi!?5muuxe>EdEn9tffG!rw@n@s%mH7n8KmNtY$=4>eX~gh zlgxoA2$AWy!{%yQGY32G;Ip3>@q|bwBkNtj${X%wyaM;&JtJw{zp9_-!|fb`{9+mZ zXD_kh)P3O4;j};IGE56?!hid@f~p0uDU%+uo{HC5(`XGU$&13bjuV*~@d|W9q$^f) zdw+>BNxI@2mkZ=b#n;ssI_Vo{6EqN}>*i$Q_VIV{Nsl8{C_M~bf$lIb-<(*-9$|lf z2*VFb??EgjlfBTV%RKutAM_6AAWiTFZRbj+;qqSgDV*gOX8yz+wRdPCFG#k&yvbA^ zJPv!gOojD8Bvftb$8+EBv1d;gvHhpR;llXW?0YXw5;^dXO)f8~$ZyQR_uI8d`shm7 z@~nf^Sy>1DU$U9RSK(}2Spu%q5FrL`S8;KpF)^}x04EX((62_02=BiD>s<=;1}oV*>1W{N%h>?$3sTR*ho~{%2fEj1q3`KDw5%FI zuQy-8#6ba9vX;bH(G2WQ>Ep+vV&ni#fE4eStd#C3T#P+kp;NROG+yn8=tM2pbj*f~ zn@wm+KQiSPmHOZt!f7x?S=Ck*^tmwAzEU;evhJ~7U{A{QN>uYb}6K@9x+58I8 z4W(?v*K7EFpAqRWj$(doOT%V~Ow!I-4K+4i!Q18K(A!&x54NqK%?DypP}GG~=`*z8RtM{x zyo95g(5a*lN0gw2uoR#hWg& zJJJ#OEq5UDXgEB-9}GptubD3mt(P`o@#k5){tj%o zv4}_==i~YwDO9gag+sd?p!TgcnIo_O_hu&nwN|3 z2mkz@!AOK8*C3-roI6o6J{bj&mrW^Pi4M)Q_qQrG!5@;Tkg7E95 z@cO_JUO%f!n@t_C(Bd3x)wh_eh?bxuEsxRoPz6M8=s~CcH@wqTd-?NnI2%LpN-Vi1 z2!$71so3Qg5VEX=(Oo8kQ^I)EirX_xmR?A-Ob;+84Gf^-l`>HpeE_05(&Wf8J1o)q z48pGM$al9QdO@o(a;i2Jo~1($%{>omxo*k2tVrO-lF)T^I@*^VhLnl{W;kg)Il4%m zK0gqHh0pjn=I=n(M6+z*nt9L^ql{*SeQ>Qd0uLY6qR~x1aZW6u{WHg5lSelAG{vF# z4JA??`x3e>HR+4n<*a)_9@lx|u}MQR^tY5el?kW=+tpVgThav@YK!s0^gnp*Hjlnp zHiab3?!x@fyRjLr;gr9k#LGsWxNvrg*@lD6Y{^Eb7ZRZn$z9CQpL{l?YcYMT|C`m; z;EV{?j~Uei?|2g&8sMs<2e=m`!xh_YP?uZ7gjy$J|Ez( zgj7x{WVd+M!o?^nGVbnC9H2Qkvr>dA=9?0sq@$9V1&e}cMy55{M{ z#>UcVjL58$xID|4gHHa&LlWZ{kwX)x=*MrE7yk+hew(qOa+^>lO&3xOHR)h$26)mQ zc%P+9ZI@}0Lt7Kz`|U3{JJ^tPd)tsFEl%X;oUcfuKR|tZKl}-3!Igg{=!^Wr5V_?X z{7P|PeO>)wSA8>TRO_L4SwAd&p$Vs|`a!vG67@Q(K|$#y>-pG%EDLr5<@bZABUQ=z zarXhW-`Bt`UWg6RlO(V9a#qA41I&rzpvfh1xIXI*ELqgXTW!m|$LzZquM@NB%-4@l zb36z3FuI0?<;U2NnNjelXOy!?9zd5**5LVj9VBhjquqa{@NjV?b;uB=LGNPNKg=%} zr)3Hq8Ky|*Rl>75bLm@yEs)()$0W(Wfwe8`v1L~+=5Nb^8~-YqMQ86YmGh6{?msfX zEBy`EUSH%NA2Gm1_DyWtW`AO$l8!$%Eu@widJr)uW0b>pqN!m+cmG{u&t^s9i-28dss#)Qgb5Mx3lwSV^@m=#t}YP0ZHmvKUb} z8Jd3y67`mN^q$iWDO@5`MNXU!D`zow!7^0ae?0LPzQ~zt??XyMI&3u#LcRR^Sj?H5 zTwTNYkESmnasuP2veF~QI@+BJlk{Ww<*9gJr#lJktAiQb``~MPDyneuExjRaJT#5V zM9Z+uibvO+*nN3mGS`qk$yg6U^8Y~VtU29t%!DB#r_e286uy2P$QtlO0DKU%i9=jo}dbWhE*|#oMrBm8AzZjzeL)LD(%cz|<;MvzJmW+1bCe z$T(?9JU7KIm_s`o13}L!z^-9o8sK?A!ZI&miPXi z1d-{ov~y-O*?2RQ|HSP*Z+y-RFnY2DzHBIBQuo$Cqv>_XHk^!p#gVKM-;{Rr>a#V~ zgoef-loBAdb8YAujOo}$4+4A#=j81<^$xrt-}4cAA!qSWioVIn%FkT!`tJV zag*6O+?{+HGN{Rh6Q1C|8ua}a0IWumnUaBIs5lV396CD zgGs|jVCV1M%yVr~a{0S3UEQNapf?k$yY9n%BMmY*%@YDWwQ1GqJAD4lm3aHt4K$fC zhD%djKzxS>q@Hl0c9k(;k*|bBZd36?l_*hLWlx>+5enD~?nWB8Z{7<$K5C6`1^Rii<^N#nTo?MK z`W-k%bCAOldpxiq5ohJqF!nDvV6M^v8l(A}Z}eOPQ*Xb=q*+Pe_puMPJS*9vk}yae zibUwkwIJQo)j{354sH&wC)pM|$o_4dHEoGCc^5qbF8hQ?Iw_`0cZtx;d)uICS_02Z zT1qr%`<~EXMImcJsXjre8UIZW<9}8>_&>WB@c;E`|GRH7??3w%?ozIbGyZRVi~rdV zDmAoH>c11B{MS$TuL6_*BwhSJ8x|R(kB;NVW+@kEDJzT1rDS7HiA_%ILAtEtc1a*$HB<%COae82R8Id&>Q0EIQXj) z4`gqlKYeY8%uO{KWN*MFL2rTQ5?|mI_n@8BHF&Ds&HHE6gyq{(G1J+RMoqkj4ijSF z=9&VgB;+!5TkF$AwQxF|sz9c28>u&jEXW@jLhH65W}k#1oi22kE?85Ep@FWLq8Ek1 z!Wv{nY#b>^1#a>=iB>i{vU^*$)7Y>OY`gar9xS)SS<-1&VEbWFc1yJxN%V|p@ zE*(MJX?CRXv==j4JPv0BPiDR!>_Gcb18U--2G--Il1y1q?l!Rr=1pya^vZtL|KI|g z%ejlNsu%K~J%#xyqO9k!N|1N;#rH-2INKu0$^Gh8sMnj#6x^Bt<-Y4E|6l?}ZMTCj zndwlp{sGtsJb}X*qNJ?$6I1S!ihiayFrp+A&F&XLcjb8EcxRLinxo1gtj*|fuMjKB zVZtv-a7~yMdCVzgd){u&E4z{N*DWthmtmKu1ewik8rcJFe1+^GzL@-Y=y_;>f8)MEeN{iUU%bdDg(xz) z4TGShza9TY#o(Lp1o*T}gE2;?i4-waFC3_2mjvr2 zTm#3S_rU#R8%)h=#z^gN?9p*=VRTgz{tWyG*S%Z8px&0)W*AfZmGR8%oKg1VyFF~1 ziwS;GoJZrTMmeV)=kxquNM*16M9aAh+E4g017hN2qe>~By7&~Pb<*1X{R+kxl$N3;q+6d7eSDDN)V5A4qaL?TY4hbAW zeRRL`|7M+s64?w)_fsIeY09Y9vKAZO=HTLq+fnU#4t##6k4it=P*8Io`Mo5B>3%Io z?gaN>r&$&J;*ihVKIoIx<94H6!63I$=lpkcHrcY&id^>3XXjg=XFtEp#gpAa)c=vk1xdy33f@KVL^~W^CdAj?o5hD;b>ps+;lH!=j(@5!6U59)CA1DKHaL?Dfst70&!fMFw3wY&+i+&;d{D72 zgkJ|Ez`|RZ4y*Rj{{sHqr))yID0}33D28>F^Tvb{ zan!s6dq+|kLpwcoWA9NISMY-MR{RP1+*IB%XfJ!=$pgGITbvjf3K6B|MyH?~+Gyc# zLe}iR#D-U{MdBENiYd)-xiBB*$OO@S=JnXwI>Z=0x`^_D2KX^miP(Nv&n&eRN3(2s z>Z5)g?q$_M)`clF;1CZ>M(^R_RWrd;l|$Z}X2B+Z1JK=LNgfYs()M-6RCS&pP3bAt>|V%ST#unDsVmyZ#IfSQVZ9(Sl^Em*HAdL z`Z2g|(WA-MN<`Ow9b26FmyMHCrtKDSp!1z#Ms+#VKNO=?9aa3|!b{+wkqQa52!=bC zfNVuA92S=%)t!^ct2`T0L;4wa$NMNEp3RPLcni-ySdy+aN%&f?1VtUyY1MXf(9WJg zHmu^(z1QuD&5rZX_4zb^9L#~h=4B|kSAsk*{)Z#amAF=KGyf-CMAj{tbxMB>Z)^nl zK8Hg&8cQGKFLOhSN8GJ*`xOlTcgZPeEE9$#R&e$x5z^vR%qops24@a)``t&MSdJ@X z5>2*3!{S|#DSZH)GM_@9W;GW0C%~00y{u*YcAC)Z3z3@A)aYRaGw!||jk}bEXJlk? z)cGu8RT`Wa0vtkaXA(~I+QyK+fEs~p}`4{cH{p-HKs zE2RE7gGS4zlH^O~#J@s;-V&b%8D`S7VR;;cEx(8TEn;ke;A>1(7NFh-_u%&sQR-uM z98_PVGcC!XY}4XTklgKzzj6+M-_d-q!d0+SONhMGvjV{xQTXqwD)2od(fQ+P)H#ub zid@Qiae_1M4<1I#k=xkxL5w2=sZ!132@vqgikK;0hq7J3H{2OP9()R*uqJ_jAhL~p zRP&NqGi5)lixZ@R+qj|NWHHitz>5BEJ_(DP)#=gn3>4xWgd~$RZu8W{Jk}DSDI$&R z_=G+zl~SdNKN7&f$_&%)Ct~4eF-HFyiz{nQ;p*S%6a#LeOhzgOvKsV>cq`xf!x1?A zN0c5s*@{`^Hnh)O5X7VuNJjlbRGHMlJbQbT#H1U++}~yFSC;@ryJ;euzu*&>x zkCRBwKO2tt_5@DqAAs^>q11c0lr2ydByBg8;J`~Aa^3bDe8EGk&irri=D8I5-Yezp z+cb)bZ*q}S!GJc&gb)W8nlAAT9(Oe%TUN_DM`Yp~p-kX>bac6G7Raw$g7fE2<8b^P z`0!OE;2Q_B_je-1nY-fl2j_{LuN>KOCI^p9c*ovK*^h0d&g58zG+y)(r}?I~r101= z#(?|%?A=$vE^5suw(^F=ZE;S;b*}wo@wXA0`wWOhOD`tJPzZ3^$2lhDNRN&fNzz(~ zw`-eW$LUHGcz76JCZ6Qm(CMUN>I6E;BAX5CJcF%J?Yub6YjMIW-G@$ag^N=RUN>c%0yz0uF`}#5Z6A6CqCsD9F&vDUV>y&M&O& zyk$%vGZjMuzC*|@GcrGI5h?VT0kSTg;3D*ncWgwAX-hv3ah%F}ZOTcy>4PFZd%}I6 z{d}l-eGGgS{SJNGoyhxh4IrB>LT7PGh=t1|nE5kKLaq1*%s8=yrh6?ytBcPuFQyU? z-q55G=k~G97ft}L#GChA*^FX`5qW5~1GKuhL`;z)4Q+SE*9LxkUCoy;;@5!tog_Ha zd@EMl`odezIURg<8c{u~LR9k-(f64cE&8TQK3K;f2{D3$vI)${fE^tQ(Be%_7zSR& zc=D$&AAg%YW9xUw5tIE&w7SHJW?&3jzwN{5^m**Cv=F_%xgWl5mZYchM&Q^*>zR72uy4N3vy1HUeuB*TWHxhBDPy?PxyT&N};as-!ZOQRT`{84O56$b}j;X7{ zcu~A`X6@Nn_S9xM+OTda{50f{=N4nQu_}lb_w=#fxv+tIJl2Z)3dXEic zafzO9bm2um#yjm_g`DjLoV@HSq?M{* z$fYqTnfV8*6UHzwT8RD@HzdSY~*FnLjI-Yq>6OB3xG~U%J~drLZ+))E@yR0eUs4`V zb$JQCY^cQbr#0!kkyV)cgb+EY5ZGIC1`1l{!=IIj;P-Yq##c0;=cZU@qRl?s>9-WR zjY5%nUuNu{-@|M6PqFKYB0V%km(F+;O~(X`=-wmy!EM$gy0xs6z3}=lDZ17RJ@KdU zMI>R|YgFl-4gDxF@)1uKSK`>|7$&7Whmk2+0}tQ&L&Y{bq9`Fn=A?VW;FY`3p?VFL zI$AQ1Qzqa!lNSgVjOg{#H&HQdKIE#0vV$KpS%J^R5cf6`+?XCv;J<{b121?3slKS4 z>j;H&2QWZ#7-KpnVwvL|EdQ-aU!1rMi)PxlWO_{k^JfOcW#=b;Ywth)O5KMLeDW~NJe&((LXBvE zi9B7RP|Vo8>f@yhm%@pog6y~*HjKmrXBr;q!JOA`0ErS0Dmv*YPJYL2CHCB56JJ{} z&piAYg}Z5>@>-vYj1QwV!^Tj!Xc=@g>(IXG=A6Tvn@R^yr>c)l@SLMQ-4bR3HmVI3 z&p?oCz9!+c(oU=k+Qqb=eZY#11VNVXI9m3h5o-;&O~;&KwtwGN*7K+cDwZ45$ctyu zJIM^2xIErP!w@j$b7#(#$6?y3WLWwk8&&M=VZ{?En9%r=smWV{F{wwH#OO4XyRS@} zOT;iEMVbC9okMvhhfq8}9X?tw!|!=zV9K>F;%|4r!;%nO*U*H;Vh;4~-zH}69Ubzh z-j0=R(}5!kvjIl>*p%2c@OUkUci$yN(!Y4o^7oum{-q!}&(US4Gzxf$wLij0%fv7)Dx@o)ed*!ZU1PTNoeDf1E&WIL{!5=bKR?A`j6i@3H-T zIJp+CMMM)zSpiLHc6;YTw0hdfrWN#IdUFWcdMXf!EArHN_#w2doLr2*QdczKQT4a0R@kJ!jGZ$C?cx`2XBhg?OFb` z^QRq7KVn0RD>~Tm^bc&@CyDhOVQT9XU#Pi|1mX+oSc{ituxIEv_Hp;|IN?EDsUk`C ze>}&A)D|%ba~9KO{u|MK;}%ejY6s6)1bc-YjGsQJ3}`$6%ZAOH??- zhx@)7=+rd;eW$OpR?DxkcM25ol;R(J-Svto3TbCWFS=2YB`4^H_&xCV_H@z~d;xdN zI0E-f_R?EdKQlAdKEdXZyLif=2K(hWl5^V;Jl0x{>6>TL;Hn~K$)rKHIe#LoZcN9h z3CZm6_Y5ZNVm*fK9bpTT4>A{|xU^HNCmoK`2k~zcY1&{3l*#+B?;n1E5?>{DP&*jQ zE;z!3+;&KCv&MdPFVK2AlZxMZ!2~VK!X5ewAhQ1s4o#g2Ia-^7&%r?ViU%QarS~gEl&M@#L*aMrQX*wttZVc|NBIJPUF_L@)~-{+@wgfoPnNp9C!#A8_9p z7B4F(vl$z&aVDxFcEdV-y4}MOW$!;`58vZRW^)ffcx5$aDafF;Lpi>3l%#QTwaC95 zht9Q=*d2?!i2W*#Uc$GaW8caluaZ-gDx{Kw*8{Qcc{}?pCX8j)Mnl_Xcj9<;6jyyQ zAb(!Tk~R$s&@=NQMZ6^>a!`fZdwSsL0#&jwSP3;F?1*j02T*gY#jiKxI5jzs{uW|^ zw^El59Qy$o4!Wc{t_RFwia_UGJiAc%HXQ%i!brzF23eW6P@bzn>dqp2%gTagWbDPg zyXu&(V``X#ePDX;5{fzc)8wIKh&wdQzuaX_QXKTj!f};ww0%5v(r)K1lvBXtrUR&W ziPIBanZ#>#9Kp-WYau!CE}p3y#BD;K!KCUuHyg~xWn80itO0>d7K72~Rm>0f_i+D7 z8%Nl1hP!-e9FZtN*NeB&*}e^hl@_sg13sgD*9>}3T@F@WI0ZlN7vZD@$&BSse>lJR z2_qailRCI3!Ijbr*qP9XG90mb@2L-{qdAY}h5?j$+fn$}gJm4~W9P6iU2F9TcP;10 z=Q(DqZqy<+-ZcSIlP|;Tc1?EfCVe;?qe5m)SVW>ya(OxymheV#BfDVHkkgc=O6JTV zd#)*FK%X|W;nVCM{9>}7T@jQ8or@?drLBgy21fDHi}5rd(v+U+q9|_h3A*CqS>Km; zQGM_-OtFiE<_~_T^>+-XubV?eR`jF#^^c6Qs|~(~=b)VXi>e;kqbszrH=UM}{N-&uuGr9&3VEcDx*rf0Uq&>7L>m!TI zmv9(f{*&d0-^6oMeCfd(Q|bIO++E&0lr9lG4BvuhqRSzDnAJWT6?e^Lm`RTyE$=Go zwWq+E*OsWT`Z=@sWeRQ#C}x&(#2sVxO>`qa7$;e%@Uq8lv-h@t!uUz{C^h#3%DHv& zqf(pT+Qc&aq~(eB%f%Sa`RB-iAU$&b>;c%cs2jf;OOn>$d(4KvoCafp0dd>df>U;S zGr`FxaIc&!8En`Gdz-bHi6^$=0eOb39Q4EL?=28!C&m7GH4NhEt3mjh3)wv51)g)> zhEEe!qzibbU@;QI3bd?f!E4_Q9A^FV zBB!FHXtW3g{l3HOE72>kwWk`?!$UE4_I%nHeik3O%^+b-cd+tB2;+4}nZExcMJ^st zh4Gui`JYtG$+|PPq^R2%^_Jf#pCKE`y6Q=gyUou)QSvX2E5E|c1C2mTB8lxt7vPc; zlGLuy8LaLLlAEQyO!eBe@ThJK*Oiarj%)X^?pG6Rwp+~h>po>~-a3lgACiaqgoVm$iu9EkWgTzKpxXOx za&v>7bQ6lgyYr7>6W5RzS^b(xnrFzi-fqY3K56K(#DZ3zdWl+3g&_FUOrF|7F5MzN znJPq@5i`9hpgE_Ec@;MuUY#w6^{z{3U&LxKou^F0zNTSo`UcV_DoRMLg&TuEfgQro7q5S5sc~Ge*|oCvH}@<%y~l!PjeN z$jAFz*psgUIThChn043#YjZg@?r1&h_k0`St^UZ|8k~rsjcKr-(|F$SJ%tfB+IY<}@UCLZcJ_3 zlGv!o19;@GC=RAa!#M7<&)a*0xS#^bb7?Ol8QVj}A0sHP<+pb`#s&i}3F&ZK|2`4qsc= zu(9_Zuv(9QGll_+IQrgJ6kN*@J!4klJJDY(>YC7jYd%n5Vn{bm=0osupeyH$K})Uz zm5Y=nD_>uMtgdvF(OykQf4smMsb1)GcQF=pI>Ysc|4{UmF`Xw?0lxArjF`O`phY>m zZ9b2o7V#A)uO;IBuYXWGT$pAZRilmFQ~2+nXM|+wd?>qy=b;jf{If@I@xqA&qrU{r`4u{q#Ve0Y%l=qOuqvsN#OTQL3 z-`BvWmSJhemMizT|@gv-KRTp#PFR-^qWXZ$}X_#N(#ienopy$ka%+6^7 z^`!z-qR*Djs6UHYxBg*J$9TMwbpeLs+;P{JAQVv;L(hUS=H$9pU^-2lHgtNR_@FQ~ z>Jg+LHZFzBSM_KWr++`u7K?YY6tJ)EEqHz12d0;sQPwdDU0t%_^NBHZ)|yHOug*n{ z5Hso<=|=aBGiT1MIEX#Ho^>EU)6d$#o90`~rCZ0D;|o}1!Ij4Zu`FXPN$@WL2-?Zb2;W82F# zGm*G!K`I)^P+ax-tR^W{qZOc-pNzW&e1&_F-)Mj+ z$0Cpy+J`BJmtt~akduPfX7X;`SKx)_q5A@P==jG`e926l{I#8T$z2jpO`b}E?%C3D z7j%e<<}iGa@kHx1LiLxd0R<;rk~?K16>B<9r}3weiQK#>zC@FLwlyU2CF1m(peR+p z`4lWScvBOR1>9_BDb*P?quU1WGL}(62-~OO*r9Zsl2?jt=geqQwhNTs=m0~LNRa*& zNcJd;p;3q}x%saT@0|~Vt>3J1>Wd-vT}(ch)pVkE>L}y!?IAiYRi_(; z4pd75B)u8N%J&Pz!zInI(Ost;*3oZQ%8yNl+%y3Ns(pvmZ@kne>~1|+6Up8#Ga(X%tOjd;0ta)_UjvzcueLf z1Se6NJFh=ekmGNb{DOD1$I~!JH9Dqq0yD-IBlEo#eC3MZdZ#=MdLT^SOPxU1Q=37i zc@*x;1mVY*OW?5YAw2J3N*4^|@q#V5`R>%mu*hOD&AFS7{Dgh<*L5Sj7f}u>gCe{# z{~TOpGmkzQ&?0sTukrg@%Iws7ho0{iVu7szbxU3af7RmH>JWPjn<7Z(y*ZCA`*Sg7 zf*x<_#aAHREJVhIF9g@yh%X&(VyvPPsBhDzy<>C0A!q`M z3DN_b?C{V*V>rO&h%(A}{Tbn+WJ@E2)eG^V9uE|*=^0z7gfLy@%-Nw<^d$1yZY| z0Bhd$Guz7K2w67+H1GP-5dJT8@sDDrJno0b6GMTn;M!w5PlAMXI}8i_WG{9F5gl&d znWDn&Wmf_H=qXNo`~ul)FT`k}g&7%fs9~($r=Z(0L8|B4$;2l8MX8>}czJdhd-RJv zE_$A|DF5r27?fqVKVr zu9|5}4G);o#hC`A>Z2G*qaEm_u-XYX=7G(_Z8$eM953%Oq8qRE^9Ju2z=rJxG^(%z zO=VPxZsmK%D#wq?D!FkMo^oDs?^$@;DoG;UEg^Pb5sF{9fT08CaG>ca)A~Y*2EL92 zk50CtTR9p8v;IPu{wz{2Htr+bg#Ux7x)+m8~M09PcEUA4w2;><^;X^G<-G%oMsRCy2_+&G?F@ z6YDLS3l9zjODfAuI2CLSCw{1LQpqMsbqsLDMu9t2A0?B=o5iX9dkU%vIy9uuXILTc z3NcBGWfh$d(i*{&s$~JBt2_`BN8g~|f(}plTm&oXrQE@HLrjz!CZ^$$a5(-2Wq#~K zzb(TcT-qNxsprwTY5(X?eLV#)*)Mb%B+>VK{DBac%)5 zH05r0EIzJ`88_H1;Y1fMFMTZrm>+?(B~jwDP%Z5E;;viqZx^oq?G2;C?I|`d49=Xh z7JW>X@vMi3Kx^$^nRjk0jFrd(+YXweX?Q!xetU@8g(%Z;_sLLxxt6+48_1tGh44R@ zO=8@ookDlbZhYp`0*FvN2*FaryTwp?2BsNu?+Q^2o|Ob2V%~$>(S73k?IaFU*+&{G z<-*N?9$2@kKUU7kg`DsRoa(oTO7vFYQN>;|%Qw&I{KT$kKJ_)2R5yZ6eI&h~wVaZs zL~}%43dX)xL)4rBRh#dUf5b;h)NUteCq#2wuY0og@=~}ae=J(p9idU4#_;4&BLs=DY%23SqG=LF1E>TF;E?MYoU)d++VH}M^e=^<-p}bs^=bNkF_#L`1mRNr0{Ny>w`9h#N9lspD*o}> zn$Ny8751+`0XtSpbh^hKM3u`2#Q0nVI%*wGsSQ=oW4$fEFESRs__zr2f8HqHzJ)Y( za-g<$J=GWgpo=cE;E22oe%CId_@hyD^+$VN93KH2`pu-VS7t$e^hA1m;|p~E7b9$m zTq{i6@L9;d=`X(MrwbGvDpxmm;}JF8*_pf0mqAftxmG9q+`mP@4hHNV`HT2t8sz*L z2VLLg&^xDkNGbQA^tsh!^j(L$ZJfql1`*t*TnV4@j)78jC~wJgp5mZ4J<6j)UfDEeOCsadS)!wAf$QU#8VYT*=Jm@0@nzXMDPivb9&b(X%57`Z zv5f$eOgmh9O`o4kZGlDFp=kGSD}}WoX7Lr69tM zNWU6*tL=~fRNfG*oXBS$mBEO#b@XbA3~!%_5~G!kXy5JMFh5t?R|XV8hbx^ZV}>I8 zF4yF_j_$neio}kXbA(>&EE0xGGqlPU3;9U-D>(eKBRq`G6=F7KlXpi&tUi4U+&<5v z!B3ZC>iL22Vra6Md-;Q~R_?$f2C7hdPYcqpI!;SQD{)?Q2?fqmhie9#NV~Tl?isQf za9v;4pKQ%H9`2{g{D<^e`aJm?zlOA9OJHTq7%rER^zUWv!nH{oK;`!W%J@(y_At62 zANE5JzeFFG_cuBsPVip_4_*|&fGhXuUZ-#|w_z_dM=ym52NED_M+@yADu=299kdOs z6IPrY4?pb$t`2K}ZN0j2Ok^~i+x#0;M@F!VW}WzXMtA)8<(Y6f`7AgG4&?32mH3bH z11O4*5`F5~&D-fLZ9myWUOzjs^D}2L<>Wi^EbyXhN_QwUVH~b`Z-sNH8&(AVl6BIl zrKrT|VD5Jjd`iDkUU3rGF8Bvg@kfQTU$v=E#xAjU=0kAF9Vs+7t`a&8eL?4L90om$ zcF?xHoy<8%qEES7>3W6UGhY4Cv?Bl$`6 zF8H&kl5#ib^S@DpcyV+T2Xpzal+%0lO9k3lAQzv};*DEe zv2S3Wa3|Q39dizY*8OnUb0i0bKL1PBZ3}72$nMJJLuPMN!=_+@1+Y4 z!UYQ@&YG%>i61`Gz09Xn+hT$bq&cpI^miMW?4b0h65-wOD!A8h7hVkS$c2Srd^C6f zzD^P$d)$27c<-+`>$xv>i^!qC7G-19ZGIe!uAE(jy{6X`I)Gzp8+SHrAH0+^fi#>Z+)NEUGq ziYnu&EKVKEGM8e?sP97XZRDtJ0(x~d#g+n*azFIOqWgo$xgw7~EHlR0ufD(}k2mDH zSq77%H$Y3)b}`|nG|^ls(GD6U!tc){pyC;dN57XR0d zO8-)i|8R?Xc&+jHPi|3TlMD}~i_sY9ACLLF_3*6C9h&GfPRLlf9!@ve;Y3|Ww7<{; zpVdtgeI6vBkAfm*d0vA%s{iP)?+4-UxxwO;U#iq=gCvS|nG#+9))&c0jw7EIi@Siz7Tru*zyC-X1rfmhL|5xZYAGZPzm51UE>6QI}!?{7?Eqb0Dj}LO&il;gR!l|*+&D%JU|GkVreYGp3>}x9tZd>5R&0SDxG7F;% zEoj}*v3$Qo#>?*CfV$`+sy&dzW~~RwQCko{kJ!QOthG^PVXL@fjSuB$Yx9$0#1s=R zKD_K0Jc=%-_v*tqvZqK|^_h!4)0rb-%LcIFOQkZ}Hx^Ubjo7N(tw{9jV#9gA%leb8o&JLiV zuFXRQbLN_}a`(L^d@$t$6{_t9@B6m&=u3rk;|#`GWv%quHVfwO87#4w{MbUzpOdz0 zbM)h*^m>vL&PY+@t=rqdpp*=G^uhxAvALEmei(*PXNEwRkt(ctZUU=(D4-r+lB5K* z7cL*&MiDQkG9LXczPOwt#%x*wCKd@|WYZC{c%zNl(&^p7P!G4cy9$eJqS#m~jR)#f zgX79Huxl#@2DZ)458)$*CCoU{%fXh01;-Moljt&)2t0p9HB26~@MR9)wzSqd3j5gDv4iL)C=>j-yq8q-)X~=DEeJFkVC_w*t=K{ORF59l0FD# z(h2I~8htFx`312QfX8PaCztd`@N8Rm8l&%ngKgY++x$#<2jxzf(Dg0l4C}`lGk3C9 z=2da|v~Tb-`95{(oyncl3c2LNc2>1}4O=vGc|l1I#0)!0-+Thl_u_pze6~G#>AK=D zlRUPjE!=ZWe~fcB$7ytg2lH-g>mAUuCM2@R}9bK&7nbkF&r%r!Gv4EQt@cPOghDwzq}daA=;pY!7K zE!V|R@6i-g^HF$lv{vT3VwmKnQOBytWq3YU^2v3X#6#yg)7~r0%x)_ppna&0V^X0gFA@iXMjx9BTai1r!Z-p(c&M2kL z>x#wWbrX1pdoZZ}h~o6tgW^=*DBO{3#(kPQ^T4EiqFi!8>^Ah|FEZO@5( z+q@(8Xe*<{rIpgDViq;qf1**xzR`|jH=*T{Twb_eO1=zPPjMG73n5O6AiH!j7e6Ty zKWz(U?e5b5MfwykJgg#&R~^WC*9s{`rU`If;d4y!CEZir=`J&V=f7Ytu`JZJZ9DbOa6? zlqJ7x+fUS6vknZFzZ8Yd3==N>l%;O>hQ;Zh#0$^s#L}jfqG=4^lLMLHW@Ad4JwkZg z=1-!ft1lPcucq_oc0%*!k~gUb7Nkb9tV>VE6M3DpA0FvgN40B@P}=GU3?63$n`0`W&%kc3ToM;-q~IjB_)=Q%)L%>sg-!M(-laY>WQ-huh9YXG%;wGJ&$)AkNRe|Xy)>r z@?Le}`WqVLFg=&L4SER&_l0oMemS_Tll;#5HvBkQiNBjSh`awuC&wxWF5G4=+$uGq zg^$<5qwyc0OZ&}GIHnn*umkoMvv{ymq3m6kzC1rHn%#bDu;Gmv!i4BduAI_^dw$g7 z3yvXN<}yg8vZIz7Rz)!d4nem=-MLes2Zp@0$3@46p<-9*GqJi^K0&hsr(E^Gx|gx| zd~Kazw{d{r;MpBh#-xj%QwQO+fv;(xnZ(QJ*^}3}wo!bRBW=7|3j=&UfknH496Y`^ zDr>p$HydN_);<^`w94_>oiEhWv?JQJ*cVaj_t2H~od8rnM1hxfgh#=)ITxb(tM-tK+@?8d3^>N*m0V>Bg)h> z$osny7k!ye3#H`sy1DzLNw+GNOI*8sYA-2joWSX44QW%@a9q|tS)B2w59+sOVV;yY z{MNNA{ONoJ%Bv=$tHts~IdJUhLE7`Hig23}ZaV)>;^igd zQZ-ks3CW@mPC#rahRUV=u+zcabj4os1%w=?^J83bo5f>_ntq&=e|5m)kA}hI?a!&{ z*#?>(z7Y;jb?4(Y3#n~J0RL&|BeunErad7mc$%u@n+_bxn{Afz2n{dx>}x`n4QIrX zk7kg0@+=HwE$n6GjqQI)p4?1jeh|7A#sy8l5c^EL{mhNkcdbDE;8Jm3{z}GAYrrWv zhbPYL&Wf1}*rR+EDH#pLPlF_PZq!Xu_$X~^`uE^;y%2sP_+jpm1YXr%E`}>h9^#H; z@M!WO$=wWM`m9`XU)La|qXwbJvsL0EgA&qt*a_zEq(@zpW^+NLA!}{( zLDLH_#LBRq*wbt||MXkTDc$3__4!)*=B$sO%{$}Wc10ZIm|ZcxLb*lV&+ce8n|i#ZpM)8|9OJkhCK3*+3rkdezRIBz_Z zUAjoku}wz!v*!&8*H|V#>o!v2)m;Il%M#c1m>zmYoB@T~1YKLS@TplGn7>?2bN|Y) z?nfqlx@m`lC%dBimdTuPL`oFiP~vu;R}P1|7;t2y6UKQp)9lDGIQ(H1bXIZWm_EmZ z;p1Mx&t!G3RU3_(O_7{oV8GA(-LTr@8>BgR!2@&didTYk*=oXdc;FDi@8~orbsi60 zU#tbM*Gk-XygB}yFEz6ddE!^+#e96YGY*~AizdVjfP;mGxcQ*2th37+%KlS98!I9) zWk>{;INqk*XJOnb>x=0%E6ID9jQvX&qSbgUYV|hdeJum<%{K!aJ?tSll&!#1M;}ti zhyhTy-i*I&x(7qe$H08W1z7EEh2284Sk*BT+ilC|rt~jV()|xa*?pirv9WyifialB zehZIcT4dUZp)|fm6$Tv*#>A`AR^k09UbX)oXw3=4Fv%+;JNZ!zqsJ1DLYi`%iN{%v zcZF|Noq+iZo;&ikp#a3?ukxIymc55hS8 zD`Y;)Uv@sq7M}05g)=kl#VKYEwCVkQi2AM|aZXl&eGhd!>*tAAeWyW*kvX^Zu|k;; zhE8SK^xbJUe6qPE=AC~>1)rmF_W7YK$x^Xzw^eYYcOw6pw-YqJCgS&7scbdIg44zX zW0HpxIM$BFhCTuGrLoNI$CY^8RIwY1%f@2PvlbX_cors)>VdLpGG6#e4R4NQsCV20 z4SifVLrtAhsul1+;|Mf8G?d5Yo1%85C)@7S1)2IJ_8IVx-ZvOyTucPouaY)WrIJhi z^pm9ob*>_kRi#=XYbkhXfs=P)FpR=ev-A7gmm+(T`}6WB=34+rw@1AAz*wliL_`v6gwDo7`9Dtg;>#R*$~L)m>r3X?wX zztnDpd(EpjV44HxIR6rx;+MeTl>;EVDgswOO&6y(gmUHL_fiY}DiuHPj~%Uhpl;SR zvHEN^^fUhgzeBz7zq$B^?RyKdy4hrAG889$`v}S>O+^DEAAH<=3ii*Oh)Qw(_$1f_ za{I+_ltTrsj`~ZPTkVBq-A_=Y!V&rJz=e3L&YBCuD};TL*LR6aE4}n8ko}S+V%$g# z{&3BeKeYb|c03UuWQSnDeFK{3ABGFe^5kdgr}L8N7}f|GE$DAqO%qPngS>A~4zo(5 z4I$Q`rr94ScF7WIlvAO9hp|w3B@0WHE!f(8F4fJnMBneWJmF?Ko2RJq$8Pjr8@{9$2$~tq@Yt1^fOT z$*=q!v1{QZbTWSf>Fke|IRXc~8HDe)Gz&BSmQhi741W8n$&O!Q#EVb%!tj7lj6E#f z&6e~*Yx^=`Q>S<+4eP#}BnO5$f>u*BINu=)$U-aMLHqRnx`=S8&keGUwci{)$o?udO}eWPi9Nzi!uw_uq0 z4W`YlAx~*qS!iJeOHWqOh4;^3b&E4%H>qLsc^c1l)!}iK`W%_L4Q`okgO(9rXvp;G z+^ec5e)S&$13GHs@7ps&q`@vlXJN*& zF>EX)AcOQx@sW-h+WZ*FR^!94eo_RcE>w|b0MbS@WCTxpyNi3xsep^m&WJ0g_Qw;F z|D>@_m7h+u;sfeyq-R+I_n0>i6Mo+!_enE(og;8FOfG>!vC4Pk$h+*-OOxbyH; z3h4MAjzrkv^zy}|tfj>-4qk>Kecjnm+FUv|DzQV*DSF|27xw-1V0?WK*7nN>v!dH% zCcLKgUlqYPsF5P|B)o6O=hFSW_uJu;OSKRoZ3b8Lv*n_OXq?e`D{atA!Y(sXdDXE@I(2h2=^RicvoN z-gYguj?}`B9h32zX(EPoZ54;=l0?Sn%fr7tCYSMZSW7IXZZ>0ZZ-pZ6d7LSmHL@3P z*7!h%4|Qm~iL&r4t~1}6rHA3ZQ-z$h*?e{NbD{f!zNojd8REX2hcPQl(CmgGxg_`D zXLs8{fey*0t#QGl{f4r0@eL^3wvY`3HraJ&wS4zIOC5JFE~35 zx7?j6{B(2YO_Il9rnM5~_l)H_$0BZ9m@52CJV~FcSt#rl#akZDl${t?4k`LG5Zo^x zlYhw~KD8XT`iJ1JtXP~h<^kAF>j9mwEhfDi`tsx^8T+Y(VBOp*G4NX&z@le~e0jwL+GMwqFv^U^?HrGpcgOPaY2lPL=_u@5w1RW? ze1$ps!#KTmD0|Pygb&G4`1fE(2s2lqIkR_&bGqK50khT!>wS=~o$iM=(uQnbaDROH zzL*mIB*&>Ez<^Q>EQ{^Hf5TF7eoZ5Ivm$FZH^GTJ7lk{Ohv|@imSFwizT|OBVb9>B zwBhtn)G3vG!X}4cZMBNr>d$UyQo2T8ZT)52pDN&vfcK)hc!E%Ipr9i}k!$Nka(@dv z&?g3cLVwc{t4!f)&yJ*|UI>p|8ilCBZQ!#*AO^Y_p`hi! zUw(LDNwWp7(e%WDQ}uCjtR?(gDA7UAM#xP<)gWZhOl(_MLS2J8vTTw9ItDFc&3(!o zncV8O9qYyDT)k=#NcV|97_gp2+EIJRy>g&;Kd4c?mW3;gF#3`v!CGnG`WZS7hW1-!+67jl1d!91?HOSZL z^G%5e^yBSHijNHC!A3s9?jE<{_z)}Z9Nrlw=Y6O0;sfyRTQ;QyUY6}#p~8>cc9XV5 zuKM=c9cQ=cW6-W+V7x4W)79TV>5DK>{`;KV%q@A%UoZCA>4zKEYGSX)QTXZhNPaV^ z6YM*%2)kZy$FnC^kac=5vHp|?51A`DtVsrufshZ=<<-kUv}WSt|P$ zy-Dm7;7r!9Mq&(!k$r*;$C}7JgPa(U>7(Zma1HIA3 zG@-#6##U~pb_>#&IvMge?H;If;;^`Jl>!XsAmOe4GT1tK89Q7s5Z`+}mr_s{A$W*H zX}U6kZ&$5`ho(PaP4Qw>SI!~lKOyWfXC~VYAA|jaEjVF<3fH)mphcYp%<7}Si)Swf z|0lVa966Px@fBU!uhAD9uG+BT zK3{HGwN18fiZA+vnDEY^7ZkK02aU`^*|z6cRx*>GyB(ES??61x_DrTx(tNpLHe%O= zAv}NQ92`{B1@QZA!Qu5z*j8ctC8@O0=@td-`{Yi9i>m-$la=bgF`tvrKgzYB&Jv8Ds9@)X!q)r8X$H8`Ss zF4okYhq1r!3T`9T;>AOiVjr0%r?pcSL&%3iqwVnDPBUsZ;4p+XMGFo^9jIOBwP5MC z1VbBMh!f5iOKI0`LhttbsCP!H~U!sYp95E$B5ekRNw);dVB);;CvYDm2>$NhXWrM-O@9l0Dke%;h)CbF73% zin{PI-;!r8T?het1)QzegJ&I`j?c_bLFJxfaDJx>ehExtv+cp$Rwgy$j9y7+qV7B~ z|5iH3TcN#<#Wgtt za7?>9jfamefJ4{paPDt^G`m#Xr`mQyh}`IQNi;x?LP@eM9IO-0w~t4U#HBq$v71l7L^szd%? zhb;al`GfzQw)p=g)bQV97h(Sqy9iJnrZwb$Eq3ug`L$Iud;jnJ{i)Mql4r!HOrK&M zo02@seu8aM-1OwQ$^T~vqty66au>#4YmEO>?n2Wf!??bsC)|JgO}sH<3htV-308G9 zWt%4+80{K@M^-06^V4;(zyB`KPk89|v!4zw8QG29mnG7OqTg`$%nqT8R|)&%BP+zW z=ay!D7}ata(pH{=-c>_6d!s~qxoJwxpXTG5-wK>DD}$HjOH@C_FYwc2iO~N{8jD_~ z^m@TeT0C?vHihkl%Db<{V$5wSnx~u93IMz^aCEnjYaQywiq={6?0>LxW#mn8U#vx@zRH>*k_tI z`1w_dfAogq;bL<<6dNerTXJ}cvkoies$%l}R`_x7G58G&l+Nj6(Ye`&7aZx$h3+9Z zhePEl`4chc9OC569z3UXAa9zw6Ba0G!0)rkY~vWrf6}*8@LW}>>evqhcUi!Pfs#kp zL%`-B8Fu>NDsJef$id?l@b$|Xn62W$gEuvclYERo@oE}Q{%3=USJtv=wjTD)PRDC$ zQ)JJ}%wg;VM_%Q)i%Tb?wgM&V)mb_k5o8C=v&)a3RU8 z0Ef4(5T`3!p!dkb@HgF^pUl(3nt-)*^OhXmY}+rtZK;ft`kC{O7G3CMvx$ozrtvTh zeN+ewmUadn^f%Iuza4KQm+1@f%ARySDg^W9GlTKFVKTila>ost1{kT@PdK+XgpS!O zV&Lt5SUtxI8eeV=v=Sd-&+V7u-_krFa9SR5SD;5N;05%R0&URHxaDW0?1iPt(QfH@Brge)K0qF zz8d99qW(2Frku_N1H#zl_BFa{uP9TjgE2Wo8&Yw%&qu$v^4Osw^CJg}Kj; zseH|8H8-XVphex^3Q_mZfKR7qaKT?BJ1ON^aZB&dSDp-iY0&41p&j7eSPf z0vk41VuyRk_jKb}Y29K@TjDMMaIZUO&AtwogOo9F{1S{(7)ze6_rx<=qcLFL2z>r( z8NOWkU2v|>#@h79q^#~Bwa=CLtT0h%xLb@HC5MjJdu<-+3T$EJ0p7W@=~7Z5{Z1(s zjZ1q_-PJu5x@`!XNdSXh2{+*RAqSi=b{jZ-PvJ|8Uy1&y1F?UnGPpS0h~H<2VXMwk zIQ#D^)jjHk@4np>%2aG9$Uz_X>}rI|r~gI;~}oxR(e^;RNc(y z)s)c7tN>ol@Dj#pC*xL)AoRZU3j7*<@WdP|)=>$<=0|3@-C~n)sYeG~y`VR%*az?# zw~ml*TZq~+BTRElz#lJ0a>la|yyK*V<6nLvyXz)=^Gh8pD^SLp%9&iRbP!VgJh=3U zF+Xm6PHSIXrPbYrP-Blc%udeY;0gt<-aA&l;nH?t!VDX60(tZDDHW9N?ZlT)meJ~X zW3C!d3|B(d(=LarG^s~E-irMPKU;=!zJu zxbev*8W(j3QVy@+Lz_FGfsz64d$k=RH)X@pcZPVP?g4Fil+CRk(#~VpSl(>yh(|T5 zA$)Zw-jIEd&cB(6FBOhK*sgk+(65NzIF+Z&+38A0}W|+%NN0}ON~%*-hm%E zx5JCCd_;R|J02XelPX7b!2t~>JY(8@=+Y+!3ztsANdqKT?GZ!VTi%cV^gR#n<=?4b zwjaCsu7MNB`t$icf2iPkDjr)8mQr5Z% zquxFyF{~E9-PV=}kC8aMegVj0Ct~W{UliN+5VBs3V2fXp54!Ru;Q3-IecBB}BqqJh ztOsD#xdGn9I<2>7vw&{W{J{_10%OO zq3(*)f?4lIS~#hN;*8+9dU03DM>mWfMUUbW2^kn+)Ce7K-Vtkmxp9Ovh#+tSa zc`9PIPranRQvjY2bU+u@|%KJ;(_|rw5u|N z6-RugvG2_Amk^Ax3md4fD6rAK0a!l5nr`k1M}uC?(tA|O?ATfIW5;Q@yQYSQ9#Nu; zxg&ULSs4X1t7H2^Dtx~#i&LA&VZcXQ$!V8?D*}6Bue=r9bo&A24Co48HeK;(S~zw| zxDH+ciEL8WfxGuAI^H_3BX#~XouRKLD=O-6ZqPKzy;vze3fm!WF#kR6dqokLiEuFchu_e#NA;WvLAVj{ayMxbqZU=#e;{bHkR5dq5Bkxo?%@A z<7Q;??f`S%-8vUvOtdGrPmcxbzA-phn#Y$*KY#R)MVxc*zZH!}VY|fxxvp0}dj#DP z)X%TO_o=BkqoXmm8+Q;y&0LgmItOjn!?CM};J90ssCaxKY#G%TrmV2Qes+GSxzHLr zw#&kgK9M-a^r6hqxQ+^)ma@%-@mLz?B(S^*F6&A&mi-xAUTh3A=OptDt8d4*xTfK@ z!7t>W4HR&d*+jl%qJV{Unml7`2qzZTz@4+wUO<|4T<$g)dtMp<-4**^`J?Htdl zOOL@`?@^plXwHk&d+^G#6uLNcJ?wDW3xGN`U0QN-zdcO zP{dw(+v)vvLtZNL=iyE^P%=S@f7N*6F!?4pb*u=)nYy&TCYql&H`23?JyF^JC8VsH zf+yRnL8F>IrUW=~ukBr6cdm;>BW};fLbI_YeHN+im;~j`7btm&JDymW$M!{|p$nzc zoK@o>yF~*p*c=yIw!aoWUX^@%JuNY}UYb#NHpGk-9?&H&lm~8Yk?(E04dW$Jq+?$* z-e{x6yXU!JT3RHim2~FL(w?M6c{do1A0>IGk3wI=K%SVHgsA~bVNkUywB@f8W*UVM zZX79dtvBEqNv^nI=rf4zsl{23|3Q7@Fh2QbxYY8Rir051;fWy0hd9?2??kxc#esW3 z=}NGa5p<)|;z1g8SdTq*f6E7GMdP&H4dD$+KWC{OR;3|R{qs)< z>(?qSjNVTLH}AnnX-+*`Uz4kwdh;ZU3Ebz011~!{iG_12IP*at76!G-t-m|MRIk~* z!^oBYY>>!g+inV;R&h)vA>=yM0bXrYz_BxYWGQxADWWQo?N;{Z;Jn2gal#FAJ`RG% z4g%_}&w|CD^LWhQmAIwY5Vv2prMoVUtZ-YRmECwxI?JCxt$j~?cHJHPdfBp9l;n@O zAA)OjM)RF$Eu8qZ3~x_;OYNR_VzpOo!r4JZ^eSYTP&n>-faUsd3Z)i#g2y zqj5wbZ!9>HCn-t9gZ*1vkJWyb@~vSq@wU047_-xe!~W{yuAh_OZ&L?xXPFA$^KXH( zi@Rg2purdZ>EJ-!&w|E<_Yn5xCV4+lzoC}q=CF`aSC<&-2tB+s)JcsB5XO)4!@0CDSw-z1?k~>cq?@wS;-!NYv&Q*sh9*u zIy@oG4XLnN+EZpls^Nq#(^%%Mfjdt6Q@0HtXwCBoTGrJVE$=)R3}Vhh&NqD+Q&mN= zS*Iu~d>Y?b+6OhHGq2VqCz@elf**=QWJh-HrCy~^0J7BOd5y2Bqml_Y{hCHHVI+w$ zFQIa4Ep2TmrAFty^kCl&cwE~Z3)^Dx-CkW(wq7H2`V)cXwQK3KJ>?TzkE$%A~U z-qsDXLyDns_dfBZ+)B{hG+we8d=o>mo1l+wldLYlACqilXsvop?D%-I&~Nk!==xHk z>`tCR&+Z(fh(C(B^89dYpSn>zxVzitfonek4aQtXR*u4H;`lbQt%qP z2S!zGqRwCXV*K63ZUe(Rv*)(mQ1|E!L@oFu^jSQT!;g9M`Cf+D{Pr0|Xw~!V3|;<` zZ-S>9tEv0bm()3AKP(^d9^AuLQ1>z;+SAJuD+l-q3k|Yy)*K6-?&yls0z6^z<=ON$ zV3Ro5p#plIH%B;81A~8kmfT8D$t(kRyTYzB zi@DwHDrrvf0k+x&;;TaquA2Lu?J4cZ6E1

ywCGjFLl!y=SY$E$L2YXQxc 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%0A`P-HN8b2BV6!)K4T>~S^IJiN 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 z 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

e;Q zffmDq;-ekUA*#fcdp3#UaqU`)_ps%jBmP3okRzZpQ;{2Vx1#F%&b;A|Gmny8hi^C? zTPznbL2{sCq5x04GOepKgRQ%9=Z zoXDql&BjxWE@*DqgWs-Q#BXb}1kH$*cslkexSl>LEPt{A;(uJAckQ8Y_1X-6;OQvM zSOQS{c_Y+5nTpdrW5oeF_4KbL46iDlrQD07X@z_zntW~!M|Rpq+K+;;*R~nldT^Iu zb2J)8`kC@ueLGyQdQqxc&&KnYcfcu=%Yw|t5lpu&K-1Za@aVbK*!$HY?Dxir-=8`u z8Wy==CkJbu+u56JET;0@3S-vleNk*5Hv>2IwHA~W-&53$LDJs(g&3my0{m>A(Cut* zGEA4pQ;AV{ZBqrL^CW!!HXV3*8vmIv02AXtF z52JEI(XZAW3yzK8``yeSP_+W;lm1el#;Ihv*9r}PcV^R|QDTLDnNSd_&VlDT3K5UZ zd8yJS>b}nq&sQeE|BSPYm+#{Ce{Qt+-xv`7v*Y6bA6vu!uwMB6hxNjn|5ktLq zyh;A|uV6Y~qBY98!<1Q$d}3Y#tQ(vMt%B6E;+!FNYYXJdeZsioMk^c{)1On0lnaZ` z2XJ&=0*_7FieDOg!On*o^m$qw{+zW5*UFh-bKkk_`(zIvOV8$OshzobdL)jVeUFP( zchEtl656o1JHOG9Xc+9wt$W%!l$4^9=sv*^%c)f1^Gd%=pa8 zchEF_I~Ucv;*-hE(4xJ8A03(xIltTJW7<*oLjp#0#Z8=H-6>fNLmo4jMe-o{yttFd8kMi?stEfR? zF~+QYL5XK}K{xqWIN|jX2KSxD5BE)m8pqu@Bi@M9aeMz_I1?p_mghow)!J&--u(ghxX3rbQrTFz#EBqMd&4!L?c(_Ol zt)+u$WQ!fk8@RIklysIoT}&(YB=d*FZn!l2HdW2MSQdNWpOk9e2y-`Ca4)5|5c^b< zY)=grHyG=|S^b0b&es^{>3SO3-2f!j4SWH z12g;pI@Jfz>Aj^eJ31A2r=4QQ!QRxKl?9!5UgdAf&0>A`IJ`WiCtDbppx2*vNLuDc z`3BozNXlLCTw6>jJNx4towFb}aVYBSItfK_X;4>|fZLWdN}cTkFl34??041V!+p2G zw7GLIruqtBxcXL*+vtNuJ>5w)pkWx59U%XN%h1qUfsbdOVnvGt?yNo>J-W6-#?(~M z+1f_;l-6@_$QV|9{0-h{q{-TP4U~E{vvB{PPJDS{2|9=9;G@VDxb9aME-wEo-aa-2 zZI6{v>-QTx+~oqV{M-}0o~8>09#O)EPmyf&C6b5lQRcBK>3l@P3p4M#aQ=6H{ycOt z&vzzz|F{o+9-mM4XMm-e%k#pF2i52 zdU_h4EA3#RaV~G!F&_iB3}mahPdK&7ms4vu5a|r%j7ySm3E#MvTPRAp<`fGDqYq(vHBoo8a!#0I?b&f~f(xOoir-YX}Jl4G*JznTM1W@1E#<@hdoAbG5ujX(Xvv3}_vuy)hu(k;2D_b8j; zxUrP5B{2C{h`+s3Fz$>TD)?B^!afpNwBaY*8{)(+1!c5qjS^1o{gC7be5P#uFEpZ` zKUf=%rANC|9QU<_&{F$J{H#6)JwG|}wctRkkM6-=S4$K-|LY`YsKdvuWbo4Jb+~lr z0!%7R$I(OEY4X4AJa6=2)|0|XT5jjL=ZZ`Uix^J?xabW7u1WFbE;QjId%KvbQZk@41kK?zY z;!r%g8rRUHmbo1IA`)FHs~~fBGxv*ELu>cbaM)@spM23KQ79*~sc{d~j9h}p@9JZ0 z%OlFokQnH)8=!M&9f)R4vYLaR7?$!EiXLs^M`JGIxMF?ixz`h|J7m!zwI;YXawvIBkoq@A%J@U1 z1Iv60pwruN9D0$_`K#1pRdj$ow{*cCyMBl}tixb)+-*+Tp#;lUtcJH;Dn%-*jiqI{$>r`8Gl?58(}_1jP`zv}~-{dx`eF=gib@QHE_F+ASVkVV`qZKKc01NR(~p}fL&S_m zW>?D$Y;$v_57t8YoIP1MdR=$?w04?UvQ32zswVNrmUXnVQ5v{(%yL||r5hi})a46_ z?%cll7%wVw0{gYQIpJ#;^w<@P^S`U|>Dp~mVc9am=8W@(Q#pzrrfj8ReF#2RZt3JQZG8fe*FQ z@nF(=j+E`>H1)MS?d%%-+L(oYpDX#U_H6nirL{ap&EPd%yW+i`dwHbJ6Y!HCz+vlk z(e~Fvh$)c1mGv_)&g`<-FD#c1yL;ir9249h7==SVtSdkJdkdX;Q-^bFPC4c-QAQOL zz^t>!!0ymR(lHx?Q%_E%XRm#P<%!bp+Tl9QSdc{167}hsB>E+X-4*1N;xR_87eC*A z3CwMBNq1T=^nNE9e2UJ|&E_Pgs3^1=brR&@2dG&0=Y)%~Z2L18&u;C>)cAqAO>&^F zKG%fV9|qycDUrB3@(`BnSHFS7ZAB-E3J-PPk4((wyf^wc$gtA|?ghQw1~@pB<( zkJrGX36mk^Pa+iexFBl9Z)YQ?&176~n=CCmLg~~#!orKwvDa5$e0brt_-DEj_L(yZ zpVW-udy^A{C%KwzX4M9xb~*9=WMACkC(&7N)PwDyskHNKADrqsflA{OQ5demv!wKO z&Ij+nV_YC>u<2PWXoR5oUOya4Ee%O*6!oA;E<1as7ezP|N8dN_BJIzdFrEe86 zVe&-wE;-9r0^QM2)WjqmT?&FDBpgwq0Qr%8N!?7=r_xX~i#;I3Mf*du=K#2{i7B6mT#X zA06EaQ|yzWo6Ap{zoUSYOGa?!y@^sEXBeA?`X6Z~+Ec`hxMdgVIU z&Egfuv{`4=V^}?1k-d{rV3X%dA!?jHWvz(f+^veJS^E;o@@pWe>IGOI-$Lb+w(!%! zVp^HF9?lF&$MIK_Iiu_Y$W>l}WnJ$&s+FE%{UQ3iW$qBJUYx=!7R%$2JqM_3|9)7t z*aKeF8R7lk4Yb{{9>VYD^1b#zE`5+sht#cTp@J2!+PFs4(Hh5dXPxGhV>W!%w-QSt z^|60zJ~vF*N0AqOK#9tQPcxJ0WqK4}a&^M2vTT0jdbdoR*A7PEVYpmMeq^t=;?0#u z=<4p7(vYk#j-U4#jEtuuX3sDG^&R;3Ll@rra})nP@R;7n%%E!HMAY0pnn!i|NM^a$ zg?{-5ICf%exv_8pH)x;5hS|P+$3>2J_%9IUhqt2di<4l!u@97$DPq$+73}Xch_nto zfsc}rvq8m|LN&kBp8R}X{l1=dK9H9Rd!5lkt{)b7gu}q-b&`2$BZm%{3zt;V@KE4H zoHg+{@3NGJUd7>((WF@zICvK?HUA6IOAWX&cqAPQ-XZnHM$@i6D(I>*hh;zYm?q6< z&w^ht#cUHTc(4!d##rO{@tgTg|6$PQOLKXgNdd2~`3W{(`r-SxM=>6R%y_NJXc@ zc$;LHs*^v4hg;msKUV#KK~p@a_pSu=d^`_tsJ$b<`w6TkOeeXY!!hypO`My0jH)Yd zh!r==gt3YHq;Hcqre@9(^-k}WXfZZCqGl2#lwwg^q8?6JLs(N!#xc5 zdm+CM-UXFn4mR$QX!MUsXcWBB<3%6Q=u(mx_BRK6O6ij;vz*va+FRMD@8vaT24nSt zft-2zEk)Lp@!G$|d}C7%Iuxj)jsFLs-{9RmAtjM|8wT_Bx?McU)1Ob5CZla&yKG;g zCjHYrP8u1hn4e`vmp+ces~$GI)+h)I+9X5GJXaj6-UzotyfDB=4|Au!fMwrO`HPT) z=UYSZWzj@+1aSkqJY&`08SMmOO-p zoo%C>l(iT?_ZZymxe;RR)w#}HqD3@JV~yll_`FgX=Y^%ho_tHZ^z;E3o_h+8Crz=i z<3e2AmL$T10Mw0E#GqZ5>GP5|u>FTVsnyTH9Ai5UOLF2pN{0A93o+~EyLkOKgqZ(A zh4{~E%zsDY`7i#uf53kzG2UG!XnOs3m6-qP@0GjAP12ONmh19;MwkDp8fCEcz@Rzd zGb86Lh?u^3W@PYmn}H#7!Xtwh{})=!jQ`MLW;o}}_eA1tcl?Z2ox8C2 zK{zZ4G^XDZwa~<}16RyBB&?e>fYtL7NY68!25B7ztuZ&@TYEDNY%t_ED@Wpqdjg-n zTr69*Bt?uE`ImkI`IVBXFi<&-PkYRVJsQ`g4CIGM_Ueys*_=#E5O#T1Mq?* zx|Yjl!Sc6D@m1D(GO9Tbv%4A6ls8h+am@poDj7;vnD2lM9#3g|;6oZ%q=?_1NPS$v ztAxWQ65&p<7b@IQ!N3k#Lc(25biC7nmTq1MT%!ZaRer8?78AoDQd49R#Fu9)zroKHysW+}GENCmDBUK$J)4EL%>I7K|}tc#EKSYUp&ywpUXESaVN)JC6&35JMO`Oc)DZN||SYvE^rsxa~VJvyGh zP~1BO!DMe=FnDmE201*WOrK6XY}{92*cdx;Tgp)GRMv@yWUBGNx$Sf} zMGE*RJHg?r%{1;`2m0b5fXSyq;lz^TlE_;pbXvYjEFL`0NZRTgimN*g3*|{}C9N{hK~{ zNwgEyLJ0Z&3|?Qib<8>a6z*m0p+upL{%UFAA=9TYKck4MFQ-F$a~9ME+DiIS5RpVp zF>qKT{!vPRu)wzv(f2g@tvm(m{PiUo%zbE9y+v(aqr|)Y-8t&?3;MUx0Ak`C;bE6L z${OiMCWBtky(MYFpw-%BoZm?O4U^&Cwm=?NQ%IA2yTbT_{9%%dTGR^fgu`xKrhoIF ziUr!z^H(H~{X?TDt6EEtk5t3MeHW4UlQIgfz9LMY{1Pr(zJgJ@1#tSE1A7{2u|{1k zS#@@UhvIXoyG#qKd-M=9(*S#ZUM>2DIMIq;Htcue1r17Qp-XZ)T(rAhG7t3==b0RX zFK7C4`PjA8fldl5nczy~c!<|&hLm?hkhhINjZQsfjwhE;*Nz{kd0-tKyK$cGZw`ZR zgKB7ax7p+$;E9^YUkm3lwupJnarCa`61;Jk4g2?d;4Zx>tT=fkG`dyMk&aRuhMUx5 z82wT-nlBO2?igSk%WD=G9cGq1r z{OArk|J(sq(*;tw=pnu}_a}|ehvFis%k9j}7-4ahC12=O51l_Lak3|}7F@*IP?@HhT1L@3S#-^0J5m+4XH z(D0ESN`2x5NgJv8ygH~9N^KCMG&r<#XWZv9my$Ai!0_N&Iw_ftrr&=KZZku~(4}_x zPZIp9I~)Xs@jFSeRTB)g1K`cQPLNkRlfSf%rO+xJ9wf~gG_%d2?3)`Mos~;e=0u_4 z&xMH-yWrVZ^Tb7K#=!U;mtp6%Pq5>M2K$;0$B)Gup)N6s-dCj2w~`FOYwAh3QJpAM zEA0WFY8M_e>n3Rz<%@3THiG}X*_v}bccdiW=XKz!2#`Bxt z?1*lnk22BIN(Js^eMb1>X#>-nuG2}2$HKU#8aiH^4zi~mg)23V<*n^!snF~htzDyr z(??tcdkb^)%|8fMay{_p&>hg)Zvvdq9RrJZKM^xC(_%KLA(fo3oOC%1*)7W+QCS&ZHRzgV-YWz2H8v zg>+N*g3aA>iL9@}V5sAJnkipx6cm0= zq5ZyZ;Qyw2W&M)E1d($1SM`X{d2x5pnCwHBHtLDO-;QF)Pd_21ZVIH|?!)IAZpkL6 zn)8)rf%+=^p>I-mXW4C47=0pvyf0ai&6Zsh?57MXN9nfUfqQi- zC%gOW;l$2`Lcv8B-2U_cIgY+9zG^IoqYtmc{jd65^-rIQU)`jE3sZ!x()+EqMHyd4 zY$27?m9$Z(SWpd-y0(X%gT1c$Bz7K$;;Aax0rON+njHc&R$nboQF{hOPfw7W%V0rC zJT6$yQWDZ4ETH}L8klnJ0T|Da!&7Hs!17l)_-QYp3)>4}_E>v9rXa(YkH^sX4QJ_N z!B@w|Eqma2&|RvH>A_kH*0I{F7(sQaFWieUfS#*$G0jqdF3wUYXonRp+x`N!D0JYh z#vO3%h*IkNF_0E7lA09^C4DQ_j}P?T4 zH_6df8##OtZ%a~qf!iibMn$6dcTDZv`IQw+XV1l)mk@o4s!k_aeVdvHk zn0dlObddX@$Gm@OD!XxJ-XP* z=?U!Y_E>E7xIl`BK2UXN9c=$@&TH=cp%X(dlqu-;g+&eiIPGx`csAP$8^Q)rhi_!w>Cjd{u7~J;WW@1wHk(XO&3=#?2MMv z!zrYq2Oo+nqUn!EiGdw!;MC}yqWT`mJUFojtPOTx`xvG#ig#(5yCL@-s)a8W22;U| zBf?C*$+Wcb6Md4tt7jbg^ACwM?(@TwDx5cqAC{{?kJdsOw0$P&OU7_V7Zcvz%Yx-Y zUW-51o8hANrSP&oOIWpa0M|VJBb&2(1vp$4>EYTgqT?(DdQv=x{)tKS@>PLoqGm?- z78O&aK?R*&(Gd;SJ_VPk>S5oeNsTrOIWZ3RtZ-is=XK6 z&KE&*l05EFIS4guj1zWz1@D;C!q2-iphmI=jl3wpL$6d!wE+|x%z65 zO*X-^_qS5`-ANRqwiRM@x^d7#OP>3(tC+gE74D5&Pu_hTX+ZoFSo@_nNB7@BZpnS= zrfVY@7Jq~5^Y_zn*WKcUeZ zk?7?i>rgP!Pxl>OMIhUKCE7inky&1Dq!YxA6W&Xf?!P)Ybc_f}FG$WW*> zY81_*N*Rg8kVsiS_ePj@PqxJXq*LWHjIP^U&Pqw%r-hLdM)|& zg+oz$Q_?<9mlX4FPcG9CxG5iabHGM2#b70TtCb+_ho#Zu=pcl?evU;^UQ8rA4X&RW z1JnJh;OR9_Qd*Hszghkr$2#J^Hr1ZsDwVfg#0DS`ahIzRE{aV4IjV}cI!?ang zgDG=b)kq5%;=0UWFkSQt4~}xjp|xX4US%xyEeoR=Dpzr`o+cP+j%RH%-QkV_U!Hq9 zhGjG~()wGvv?#%W-i#g3=J6ie*Cr;g?wAe=7Dy6z=;T61l?kn@vq1bTg0;E@C`ew$ z7zrgD>vj`5orbf%UH#DcNS3II8bNdEYMj^blO~s?;+;itc=f?S3|DkzH%J@z^Oz*p z62-Ar2}dZ{z7-aGS~H)kOTj&8Ea|sUrrE!aV94uD0<-16QA_(bu*3m@&Zws_KC=*? zmd#^kcZTC!l_qZc+(77DI}KNh+p}?MF`Vs zlRpb1W=;XIk0PvuKM8-S#h{;w2FhGgVfunpC=l3^zK?1w##|ic1@Fc5eZxs|gdJOz z6hmtGfaNg$yXAB;8orLN5z210W;>UD;9S=IgSIitF*?PZt-7X<6+eC{F&X?e}>@-C01hD0;Z1+!ZfW3L9&?o*Ahuvwz%gvI4sQkm+&2cZVp+=4*xZH;I z_RF~U6GfSm+j&?XEWsu@s0j6NHfp&clH23@{BS`hW&9_&-(?Nwh}u}0!M7zBL9kqskZ zOP>;+D4GY_J8!_%b=Ii9!3~4g+Th7vB{ry6M}z8LqsOI7SeuZBSzm_XO!<>^)Qo%x zpRCRvd7Ov#rBldG&(pYL=O3)PQB1vBUPJ1sPT|X~_h>@a9cY~L03`iYNs-$rVY;mo zN0nZ%vDcLJ1-&L9f=9)YcB4-UpB;A(z{ zo*18kmP?j#T}LMgo~7@BJrSnFc8Mmjo*Pa7%x&bZE%*l^GcMxvV?(%2&BOrrGF&+10f~W20Q#SC zLwTCCs$huP?`GWKgfy(58H7oFOKQn(!J{ z%(vvtOAMsvqj1ro`Pc@P{7m$TRv+$%k@2!jesVI69WZ65SB+)ooX?gR7FL6Qv=-}q z&69IODR*dvK9gN#$=$6KBVLiloWaB!)VFIH{b~LeiX3+#D>;KN+J_N4kNdFe`6!@c zZ{tRR3vA>5UGhuOo3?wnnm+}TV#6%>Pdo6K2Ae;q2Q>%dDIgHEzr!Lh8F zyV`jQMn2)c(R0Q567E}mUu;TNKZ}43q8q7E$1rwngddgkH6}F;Ex5*54GQA}FysC% z%s#ygF6B9}i1>HH5z73Wa?_HpcNf8FePi&Qkc-_b9>c%S3*pM-kdk3vRLSH}N67Xs zg`%md%xu^fIC1zs#^pYR31H41olV1*Ty3I0O+pl09ONn1&Q7o`Jl?VC(@acsHRp>@OK{=g zY;3!mT(aIKAM}h{xj6p)#O1IvF&(Ce>#VXk)h~*$B`cXb!@psQ?70TVx<;}|mu-pY z&=}m|V+eCCjaW1p&9=*K;XJ;Yz{GLc+!&s~Jd`BQWKSNT4M$7S@fuIcpBoSAucByO z_XRjw5DdLZMOaW%i^)2rIIYiwUFHiJH=gQ{oSkcN?U-7ydSSp+`X0lt;(D0h#oJNn z1*fdVe4$T&A}&5GhbzP0pg~^?E_u{&yMD_qxEQKSHncQBx_2zxSQ7|eURbgbZ~8%( z&%o_y%%BZ9modv{7N?u`01KsC=t~O==6U)x8XV8T!saj7Y~2fHnq!#A!t>~?e4EQz z{t#@APay@O-I(Gp1wXTGSjdq=jJSB#Y521rIKQYE|Gs%aQ+X3g&uAfB!ekf`!56i~ zWmtCqOPJ=A#&sp0g@Ew=u-5(xT9zkboRkQudtrtXvczeWwkNq!cpay?PZdnGQ)6Rg zy`d{qpY^9qV&R2(w|zP-nUv5SFX4ldmFlmBk_rs7ysWtX+$fw8&`%f6H75!0hLP1z zr?T$`3@&R?h+p;)ny!vwk*d-x_f`@;d%Y0Ox-kJ=H3w^~cjA%F0c3j261;uf8y^jq zW8#Am-166zP_MCyy*!u%g&PBKuD2@{tC|9nzA4~Mp*vKjzZR4>KLPPYb`Z%M?SAlp z4dqxVR#Ez0a7{T2R5`}&m+Pa$k9MwC5r`Gc|DcVKC?0vqbviHh|nV7d|?zfZHFBff|WmZ1o^Wz1qz z4+_Y(zXk#`)zR#F-CW zU!VufJAWJ&th@`k{JV1lZ(8w5wd3cnvLFSr=J4AkyD7EWHM20haOKFZiJ!@OXS z+j`UDu*ypHDinUm5^bynRljH$hpCExC9Q~3$Ms0ROM-C(Ifydp$NwDfP3 z?`ptvCbzM!ty)-qOqzRq;{@l;8wSsf$i?ef`7nEy7E}7V2@`ya=&~Jw@PZ41twfPk zfBlD4Z!w^b6FKCpKsG#0Ll*K1%r=bxvnNfk)%Cu>@}(uHWLdM0-L*6DX)qc}XU@di zs@L$u9!)Zn6M}xpb?(3$4OZ|%k!7~bg)c@4Fl%ovPx%eR@qV9Ss(%-5$~g{+UdXu_ zNs;7s8T$U8CX@C~N1MC?7>bl6UhWyFKTruq>yE*oV=H8LM1b5xePRCzL*^f@Kw|Zl z;=B2JH0Uv(8)rdK>u>wy`TUR7g(`}iW)37=as-UBA@=gIfshy1jL!Uwb+`ead2qAG-a{M z?Cxx7SQhR>L^fn#j1hk?EVJZigfw)IixnD=i09l!4AT4gW>8%?UGRI)D?#z>0y-{R z72;ao;mE9bZtf~=sK{QAv!}G;xwJLxTd6HHX2;-NOB3klso*_ehxo>w>iTS>P0!At z=-tn__{tx!#0%i&+{JwiOh>a)FQSsAOh#Mia=j`S(Q?BJ$9ji)^m*?C3B8x;2Yqdv zSvwmpyz0b;2d*Ug<0<_1O@XCkDzW)nHF-MvE8KBC9Cm4|vG-p@plb$iD(>Kk@9Z1| z3`SwzGY@J@hm#bU4{+IRDciOC1719+1^M%Tg4t(Twhs-?v;m zcbTpoIDq4)ovIsqY0O_H;W|E!Yj$;yo}S zIi8-}cbdkAr((OECb!gHlqe}SAm@x52=wr!!yO)ij;tT7&1ph$epYGJHiDCuvUo$e2L`VV0`it9 zecH~=$km66$ZEL8m$hna1VpZ3vv9RiWU%x5_<*VqzNc%ndl?v-NW z!<WyX|H8XWd#HGsy-*4Oen+3o_tsS_NdQ z8G_&?|2AlZRO96^^pZS+JH+fskfnrh)6!`y&0(eB?Y0x#51&s^@=}DvI4z-lyN+Z1 z^AK|LR}6LEa}vhKt%aGh#}enI&vDusH*VcUj`{oY1o-Yz5N2|8d!t# zAb;Lfq@Y2{X;`_s5F*%RaP^cRZ8?kJ{BCWQDJM%5J$upShdFsow(@%=A-5pK1RV!Q zF%`iClCj&8MR(0Z=dks7FKsf-04pw|ydQnjlt`CaHuhGDkTD`9CGKvFcx%@KcnP^QHi_b(4H^NU5?oUQUgZ?5+kfx zseL!zNf`?o{og=8LAT`BI(72#wFzzADZ#^UyznvofUru79e@3iOSvc_d=y+-;@4_M z6a$x`|2;DZYaB(Ce4^l7L?f(i9?m4XBp_~GCY&khhQA3d*mp>st>(c7eTt@JPoENO zz4;aFY;U1;zA8-j>`gzL(Ogplj71&5~GsRYd-^5|; zWxodNth|GNii;gjg`UP)pM6+alL~lfh~T3G)ewHOnnqMPl8TUbyy@o#m;WnVcuHjj z*Q+@RV$XcWtse{Mu1^$h+^wRYf25&lD@Q+$S0hJ-C#j+rz<|vmxF`Ar=1MzYTV*^R zH%=AW^Olxnw)*7Z`HAE;i{)hROOs@eIBI%e1qMx>4r`*)N*uoPd8QGbppe+iIX=+h zTz5`q0gH4<%Qs0DCNYM~GiNxoUy9$Y9t9<@960#i5q8CW#)LSYPCQnbw^ECdgdG-4 z(K7|UzWa&ZPgGfd<0F(2DMd@31$_pL>-u1pj(of-My#PCIjG^U?7nasF*w^z#ygjWUI-uRKgeFOO^A z-hrDR?L~d-R&?EZi+k=QMUIb4#hx8;G$ei!C(PkZG>NL6pbwOK&u zOWY{wiA1>;b8E}s-Ql0q?_ejFqFM)IHzK#`g$1UXL}TTSR18;DfIFvmfpw@Sp;Iox z-so|V999BbugoI8XT*goY+vJrpZr7BhWq%$S)H^C(lGc@vv9_aSuA#!3QuaB%&oFj zXNL~gz|VzR!rmlT*8TS}CWqHJ<+d%Q^TvuY&)>ErvurOWMD+-V``&`Mxob$<>W`?= zssN4kcTsEU4^XhaCTuw*CRm51^t8nm=#zPXa##7XT9!Du|M?%1GH>!$>^-+~YB&z3 zD$Gn;m9>}chQ$WEoN~2`;E|;X5eu41%40;>@i}eOHZPLXc3(hsN;A0W^)b*Z(*Wx% zcw_x$S<-JF4jYPWxPZT@iOBKkIo^N3C{3r%nI1ryQ8Pa;}5lGCh z#IP(SGHr?mGx(8?BN~sw2@4x6TQC;Pl_GFYi74~=k-~X@O^5OM=P~6$ze7rwJ~3Wf zz(sHI!>=xd`24VyFyW~X>!onZu98y>3umi)Z{Ud4 zBIN9?6p2A89gK?i!qYAjb~t zOoe;R2f0y-@3B}~iR_;{0RFL&7&kEi3fgtE zK;Q2ee0R4XHxiLc(}~7m(@j8s>S*rq=nHr|z>4i{iG-QxpO65 z!lrg@a&u_`{8bxHyiVG~<#FPW{m-A@p)G~lx0+=Vo{y7pBD8-@fMs+q;Wj|*>~LO)%|)rAu#j~X2+P40rgOnY##udede$!>X@)F zI~f(Lt%>EScvwBiXhQTj6u+rT6y_fRyF;(RcWb_I_KqSvuphoR z6obI}4(EMVgS}gyMLVu8#Xo$mID$n$-qAViG0Tlk^)Ew+;kxEB}!?(eGv+$}fqJCTPg9?>A#t#aJEPc?X;J01TPXhP52PRul{ z#H)VVOzGAtsJrxlYh2(72WLy-0(~=fK6?~rk||9b&UB-0xgVY%rpXSBd@S5EUV|Lu z-a>%`d`0GO=ch<2GMdvKVbQLM0pZkfL`}%Wt58p(*)Q_-Chs7Ek07U0w?GV;K5i8ee}{B5AIB6R>{$R zOX7J%6KO&Oc3t*?xa033s{JhFD-O`WYaM8jr^SrdYm+O52e>Qme!}o|^`Ptg0QPnr zf(;iuIQO8Bu-f1YguOe#1#K*cXC}9~`cZ{oDt`|egsEuvcpB@=G(*3=`>@aBjZliu zcD+nK2jOd7;il6p?#5L+W~uv#_UO#y_S&`L*r-o1Fx(dWDmOamZx2LOZD%BBwD6}H zurzKFN1m zj;ALD!sB-)Ec3|-T&J@dwf^m+RZl5rqJIIlo?ikMotp6YrvXu1DgtKG5!@F(Bmdej z9^+nG!}X_EanCB=;;=jpi*#?}(hrgF=&2N2X{N)9sw;59r>F2QQ5( z1c%aSr2T2|`Za|`r*xv)_a0CQNCm?W|6u)CEp*lE<<4>ioVH~LZKzZx!JB!|*-d*` zhMjPxP?a;$QFORrh~PaBIqBD#2cMqy3FfXiLGxazkT6db7+)5I)$4ZR(wB`e zEqnln1y|EKO?o&urUHx_mSD>qSKEW$Zoa-S029d`c@l#u$qJG7kN9p zPZMToI+N7MJDg&nCGp$U1yu|DgeUlSPKCe$7_`{I)y4Y5vUOD`x}*-gBJ;SPV`bU- z#$NQwwB@eYe!}&!^&s#~26OLwkg`PyvhL+#y&wuqC8kmZT@N_Dp&CCIHNg7mLv(s; z2pA|{f(~CFaM%(h%zmQELmrQ#OUiY+dewYz$xvq%(qmcS(0=d;v7&jO3SdH@IMi*; zN6&{kBzuPz7+n$vu}MaBCAQ+5%qYk`xCo3UchgOICiwo}d3xoQ78%@p2;RQw#t`u* zkWe{|ew!x2p1!r<=R`4lZQX&z1&DX%@c`5Obg+yZ!6M$~2w%MTga0!Wv#+89$j$&h zm+*o!OBRqW5q{1vYKL<^_s}(O7~9offhO)SpUqw*O&G&V!%4@uI# zMGbrSIr*@TG8<*A!~!jDVtG>y+Fl;QSt5QU-SjC{TTu_uDzoO|!Lq>; zUq2n9Ufp5@9`Oh=`DZvL_)f8nyaGG*>mrvgn8}tqFJqcN)A4OIhk+5_(b{7odC+f# z-2*ikldzt(HyJ^P1;^CCDS^%D1>|SLXyWhbLY{85M(f0@IQ91w7%_H8u)+TkoM{`t zjS6GQTG4T&!RkIPm?6po>g+M%axqR@_=P^1_Yc)_zTkrP1~8jM=#m02i0?_kH!kyV zrOOrg9idQcZ(f4M7Q?uHJq3u2wnCTcyI5N|gYD`zgWDU|V)G0Kc$}d|G$%g>(Fw}r zDvY8A?!X0g)WT<@X=LsvAIx2AK~7CHAxjL^Sfi3Uv$>f{Z(fmSDbfytzj;zny}b{f zX1|A=M?8S)yef9B2bhz71Aln#CgRn+*)qV0uh91;4Oa$dpr(tg{}9X^Ux`rmctvkN+z>No%dYt z2_q6)wH3zQyAWcJxb5GH>Y-V8oPt~i74=&garLN8L~r^PDd`2A++c9^{Q z1e8ovCZ`>r;Cj^}G#z%IE3FQvj$<-8Xtjam7ev^H_*l5Jd@|l_l7}B1x@3S~%x~NL z6BfCMlce82U~=g)Tsm8l>@2r|jRkFR`C$_Mx8W<_8JGmy!?#eM>PB4p=K!R7+~h3N zN5bDzFYui23YOZ(}o`sW~=|mfl>066=fTrR=j@QgamOhqhwD zYIzntsUL0lob>dKi0jlZad)}Tpp|kQ8r0WQ zoyTS|T0S0at8#FWt|_^pxCOHJNwd1gbyzE%K|^*cu%;>vR_s3kLe~}G$vulM~+*As1)e7|FulzC}GM#w<2;U^c%K8|0xP##7}n zHD{zCd)_A4k(@>i7CXVz#g@#+un?p3hQF!cA_f>XiRm`QpF%Ta_DJD)(RMQT`7<#s4lb`48g7|FdPWCu=t9MWxb@ zdsFbP)))?7ogqC74Os2F8ZiF179?)-Zer7qbno;oe6p$;`@Tw$49_vl|I1~e%6xeU z*W69s7i@v2Zqr%ybO~}L$plZuh>#~cKA>Z<2Kjc?o>jjP6`nrjOngT=v6)GEd_!#z zWcR)R`~Eb}QcaOfvl|U2%> zYOkVU&#L=)&)1PGR*1vF9kS$}#xbnamxd`x>A2hU5S+cHMr`ao$nsbBxX*uj>9HI? z6#XiWLoM3mlJ9UfZk#W1d=UpjR??`GgV@N*it;A2A7w`v0(5WX?QMh0p+Fn_W`&B#PvQZYd z@81M0>wJmNt&B)(Q6r80FatF0hm*if#zZpz9GYLvh6veYPyz{j|6GxUN>)JRHCe9j z#}SAg$EUHKWC^!w1RgI(44AkcCcmSwI$as=SM|W#w*lyUHy3`c>c&$CwYaB`2k^&K zak4%>3-|c)nC;Q);H6+acq{e8P|F##ok38v&;q4=97tsj$3Bm|jXR!GZueAicJVSp zu^ELJwzv*%2>FftR&{(hH;a2c>=AAVNJjoe9OktChSYNxXw>pUFuP5jn6~A?cH4I- zW_FP-=r==~SIL-L_6$z%mtwKCZ(y{yJS&gf3~>Y3>2L8Vcs1`TKA-7E*kx~Y_|9Ya z9=U*O_%?2n|5>Qj9nIt948g;A3=5Enf}x*}adpFFNDwz>+lwB|@D5}IA-(-h* z)6Q{?v0;S1S0z^QE4kfy6hB4_SV)9Av$VL!*>B%Tg?B8;2oe6r^%D9;R)NKry5TUZ z9YTrb4_w5P8<3j)1Sh`}BgGA8Fw$cm41ABpvFT%2*YFyY-G3OGT6x6p!{2D*mI}U2 zyU}u4yrA1cj5R*^D)3J-WG<84@L^0cxFrnXsz-&OAJc;?ip%g&&<5zbbr|R6R&t)n zy{I$C7A6i%;ev8vxd$=!_`B}}Hp`D^@+-c<{b@hZb{b&73<)MvErmU5*35laGoF4{ z0Fr~%sN-qL$}P-rUHB~W-th{Z?SB#T_>^IyVGh@H{vnt7$s3lWAH+j-Ygo_s$KXDS zP~$7%7|`I3hey5Q_Gqm`kt=Js;Q8io_0oH~dDd!Z7-)qB8j>Vhei|3tqexN?6$?XC zKVj~yZEX3N)%bBR8DnQ`hYaQCyd(4tHIi5lx?@K|U_GxxSZm88UB{AoD#{-A^KQJ=vnQF)r!v3(UUbP(&sSYgowE}YLZ+a%>n7+6TMHACl1ofKAI2v)ClaH?8?bnuC|h3J ziCu;=WSxIBRpa$OQToP=o=?Xu5*aYoZ7MfTeJo7zUka^tfR;&6L#9= z3-11{$3~@V62Cp0pzXT^iyfSX^G59i?M0$=%-|P{5gCVF(jVy8{+qCIb|ap+S_T`A zZ$`PvCQSV28C(8_V0wE_QL{2Xe0Pcom!C_7 z`Jr!6>gf~w%S_m-$E~pM@F?PGXo|1DMWR+n5!X!TK(FH$ZmanfJg`>4CcL#~uSShP zO_6Wd)_79zMmPzwi!LCXyh)WWcfqkpWt!HU$i*d!plYcsArE=CoaSO&KBG;Tvq~RR z6^vnE<1A=AD#5wz+C=Y#o`F4nYMjjHooF|7jV2o?(@)W7ush%fnx$Rm_DxpAg+}GH zbDR#Fb!{d5S{uL;=0wx87As)*-XEN+h!m4Hg+Tq}fgE-HLl_85$8ng_8Rcksr#9Q>Z{j=jy(*@=sbF^-+5H60vzV4;DPn^%F_ zq#fX&eTnuJU*@J9a;I~~Dl+|D`>DX@BfQh|q!q{W;j>ITE>`@6Nr|O!c0o2=n5<5= zkBDZc&PBtFNpUcD)G^fLl{n#Z6QD4Y!qRaS*l~XgTK@6_l@&vHqfeInejtEl`O56~ zRRZ(uL>cLp)_BO&F%O zjX9ki4vi`cSbW7xa9HkwGxiS&%@$_RG;3oPa`y7to=d-{~y9 zR%}-K0HL;eOo?v<+&;1tlxy<vBoSse@7Bu;9D&H;zDAqMne6Ca#-78h%?x~y7nwv`g6g`L5?^<|8JDAO_Hzw8oo3IR%6kS92`^ABMG6WakEqwcjx&Rlsu!s z0w&ZtZU|gJCZx)+k4i>dh=&YM0vo{l_ZNZ7S-#2{P|T?(tYn$;aX6hvJx}iRVpD$~ z!oF=yczMJdsERaZ-u23`e}4>g6>Q@4lUBms)%)0+-Q^H>TAAoJeiQbtdx6={_1XA} z3=HnR#h+7+C>C@Tek^%}Z!U6>z4{}V9&*4rkO`)G+Uy(e{}iv!gs+dsv6quA80t%~ ziqB#=`|wN(Jbv86L6n_Rb*8s%B-!7|;_xWsES0hR%PmWnAbUrP3*MyVqp7e$VDs!3 z9O2tWH%w!2#frUHYczv>kQm0YOuoRj>3S?9eg|k7ShCEug!$B$afO>qnDiVEVw;)^ z7k)m&IihW7d_xqf;?DD$pE6vMC`DYxeL;o4r5G5c!^E^(QF2uVm241W`LC{Gm`VvZ z;>12Kc((yte6bvkTW-gUFb=+a-3UvU?}AWiAy1L1=9-&zn0tZ++yBFybKSsuybT$h zdS4Vi8ePG}Zy#Yqs1(fm*3G$Z9HJ+r;_=CcdfNDM8D~CesWRabjeYAKz@u*C*}#%S+D&JyLsg2(9L+5t%EUFl}cn4wjq(HnxI( zI7-+7&E;syHxqpeKVtWs1=#!S3?~_J0uQ-`U~u$NzTtZxLN+|WpwLg$sj!9)z3Hbp zdg?*A=TG^T&NQ-o z{wMD3Rb!zlkHmM5*o2eko#&k2^uWnXRd$ze^S6(Bj*hGj6tzt`=|$SOHYpCSxAf4Y z{Vv2b@i;6>RA!B<+ORJ&p1+~%vCSt4c>EpD-e*kbYUL}rhimp@{`uYDVLzJ`+^&J) zpUZ?U2TwuTO8%u#&kSI<2-DeFh^D0@*_9Xp8IxnkRQSJx4fFHqmzE1SRZf*f^Dke8 z_1kfx7zaK4uxzgD2hIBp7`x23ODd4IQ$sYHP{f@}vtp)V$Ztvn0=@bZXk04I&z#lV z;>??{tRotHK74`Exl8OEl6$6fb4OyY|QD|kT@)|#P9xjn3wCw ztK#w?ZpR#&+k6zxBuxSdo2ht5u>k$rt1!5_TIVc(1R zkkoRY;?H5&489e8=QaeJN?|~e5}f>-4)11e!d~V1tiv$`k^^ILR@8F%cpI@yWf2{^ zTmm}|48We7*D-VBNb;b>3#WyCf{s8(coZr^cWhH+A)P&F9D5MG{%N9-ya6gCZKLOu z_mX2G(qvMfHz|Bj3`=a^@+qbWh@HO?jvQ!#o&Mvwn(5^z?fRE~pFW%&E0)FX621-b zLmER5KBZ}rQ7Ex3il@A&U~=kY-(HW78~PqBkpx}z~5SQ3xe7{Hl%m9W~5KfCQe z;}W0ya9j4hV6V}0u42q5?tS7QRlO_+WyRL;^!p?-{Pa{#Jgb(|;a|~5Z~lqfv}Uq$ z#WC{2Vzm6%UNRFMKQf1D_uMhUbSyW3sm%?o!uudT96tnpPH|g-lwjhvRu&Nn;ludbuteCwj=!oSGiqtomtDvak$}p9%#zwkOPnWFl_LsU{%E- zRI`@Gg*sJqz%>9)y6LhX-xbJ%HD9^g=2rz{wwL41Z;I^r;0KhPbW`~LS_PzitU#;b z-$2S@898zMI2!V5K(AGVj5<9M;;!6*)$VFc!(b5qTF8-&n^!<{@;JuT^n%KAHEyT# zLX3~_#GM_7as4u94A<2rQZvh7(a|_4dmYFe+TNkIz>+*{*vEUKZRo6Tfsic&xMR(0 z_&H3G6}|7oWnn7VK6npy9@q$l{ASECG>c2SX3oAw+(pF_IdiDv%XdA+XJ>^g}ph1k?>!7DxjYMi40sru2 zVAAjf{*B1Twcis!vA_|KzZ*5#Cjv{q3~z1uyM(MIH2UX4nf^t1xpE^~#xH?|pBLb( zhr7_rN|vzQ`k1|1lnh^;f_M02%=VTF9991Z-DHE|)*`+&cTp8A5dl9LQ#_a^AD<4C%~4uX*lH{;S!E@a<3~5 z**HEO?BTHq-?{oQPDzhl7!wXAKa=q`zfA8wRRW!(o#|oMO!nNZcV8LS`P0*~}k{3H5{ z*4@!y8I|+NxitmC#E@!q%(epi3QP8LY!*r^;8WOR`(XXnf|3b;qM=t130IbsP-SO% z*3mx?f*nqwKsQG4{pB_g4=w_)+E#(os(8Ws@2bpZi6QBZbYNYf8FbpBAczy2iLrIJ zaBH?9Ys--o>{)*SpTyjw+t@p-nO}_~@?&whsR#_2N>HEcLHJB;6NpE>fwd2Zvl#yV zU;W3B9Xz2=27Y*8Tlrf-{Z>`dJ4cTE30z3HGbW_jQIXWN&F0#+EW_L_C&BmN1eQF5 zm!}Bqu;aOqzR-7|0})Cju4e#>7L~x?v`VKINfp?){0Z(;(-5Zn6{760dN}jVjK!$% zx+MNw36FUKO@r&{44F9U`8NhXEjk6E;Z7tjDxQixBRx=WiGGw z;-hmDX7if60C6JgsKj9Wd{SM$o0Ge;7)F2Q8`xIPw6v{K>^Iwkrh(&WjW2 zk+P`u;x9Z*yMkHYR}nisKS9lkX(;{?aKX72?yS`h2+x&gI|ewoIK7=tv9N*ktu1(@ zL5CF{*#r|mX5&8c1kDHSSieA>sU+pX_N#_m^@4G5$7lqRdG-_ro4PQ043O?^ju0z$3Uw{h}&j=|ftCRkd*C+?E{1?8K>S+&-7wh``9 z+f79{S}h8`9unnp_+;CQHVU`3#UNJaGOnx&10Bz+^vz}o#&bx8KKt&#!^;vSj_oU8 z$=G^08?Xa=D!?sQ7xKK!~idU~m|NjBg|Rxs4MQd&kWvHxT$}w{shph~uailZDO~c%7KWZH&KnOgK;c13ox8 z8JsomMZxww2sit9MSAIA*usaQRrvAo^{d^*e-|EzDmSxAy)F8&|G8evDhbpD_M`}}ca^l{MmlZCB&o>OVTd2Voa11`jD40Jt> zyE3)eqS@}WdpUrp&S!j`*@QuHlH}4;4}3a(7@OQ}gj+uBf)YEz1zwv#FA3y{5>JkB z_dWuvf2Tvfm_3V5GUY}jacq?KNNQSFj&2Ki0@jNYT&mv|G!8d}m9J;BruI|NA=QNO zNd`>h$u7atyhWJECx^eOS8;PL6~pkISE2HzBynA>PnL@tva`-o{m*c7$N()ocZ%!ytjH5Z+fe=eG5itm88uh&_ln))=%b~L+^J2c-yd$xdFNr1Q2qu5VIloG|lxIR*@GA{otyv0m`3XqtR3T&M z#=)|A(rkXqd+eXZzdP_P>$PEV(7N~xoDhzN6(==dz4sJ+u`&{!hBeXgnoTsd;T$|V zV9kE}mVu1%9GLi2gxoSwB@;$f@h_FKCx!gaT8a- z1ytk}C_UrP(DxrTnb6RO$sbEW|6DcF^>-4guR8+EUG`w*3>QexGsBCAJE>spcDPp} zOWrxmhpZ_pp&(=f`phfGh;YzI?{&hkOfI`8j%8d1KBFDTJGzC|JxBi6hs6 zif;+6t?9zVyVG!z!zc6*^o2}5jOpAD0gA3* zvQn0GZ?F=ERV2b!8*@;bGZ%B0iIZ(|lI-p9LcZbg5Cd-AMH15l^*c@q=oJfK`Dygl zj$imP>jTQG%d(~M4$S1(eX8WxNQ-hcS>VT+CB{!0aGcu=BA(le?YpBP(MOrody9}^ zoG97;aw{BAyx1I^=i!4_=jU<8R=>e)bP(P%P8M8fT)<`Kq(IbXU9v3Z7moLFg@6Z9 zbdL3Vh^#C{hmo4N_HHH)SzhB}yG5SJ^{QwbTq$6#KYLN{UodwrCK2_=84_#RE8OOL1|%un0vu<>LirVQPSwV} zMEajC+dbM3tuB@`XC63cq-_xt_@Ctb`D-G3W3b_LOdhk$m}J~qug2}R_Q(i z9jyr5mY%>XV);Zs&oGqE)P$s%)3Eu^pwODX%j#J^#IY4IkRvw89e?IRmPv`SO||lP z#loEJ9##n|=Lt&IAHXSl^I_~yU2gRG=Xh%3SFSiX7blvG<98x|phWZmJk02)gHw*+ zNVlr8 zX&9Las!VO*7P{V@fUo5i^9sUySaxe9`Uw6BHAip8y@s*uwdXM5%(`97cv~&FRldaw zyN8kRrZhAP;*)Dj#hKd#4yIqcj&GCrlu_M3DmZS(x{Exavb7jOjDaBE}ro?;fKghG4 z$=p@t$sW5b9c%ddeKxkgA4BT7aFkj% zmk8F(B>#BY^|I<>aND;Q*4jvtwv~OD7Sw__>n~vv9E3KNT?oP!v^V>L6W*GF$lWE( z(Jl@i2Tddw!VF0Js)c-#;W-X>Jpw`5&v0arB9l$CC8dheT)b7Huy}+#487IBDWicr zIQ5K5uY3d<4v}2QiPP|AqC00IwS)$Sdk7~8^JAHwbs}gam)do%^#2V(tZl&paOvx7ad(?ZzEl8{00{toq zWU-1So_ai)=}j{xqc0k8H?67#rOH>hwU)}ma6Wvc&_u)xgu~6qwzO~X%0HfNjYtvLzU+s} z+B$f)TppeF4P%G>uhG84JNeycD1NInMsLLmZm4Pnrmrf%MW+tI<0yI7?Cea0{9e;J zT856u+DDJC7bDXR_&r#0)fvgvT(UGdFECL2Uc~%8Qrf?Hu85qarSBFifoE#t z-Z_kIz<&RHiLfwvg!odf{psQmh zw(f6)Ir~J)mr|1NLe)SvYX_~L(g+_PO7z1K>&39Kr##*a>>yrjuf&($dI(V^N%Tm% z`#(K5j8}G!5-htl3xBscQRf5)shPbSMoF}if3sFWa@1v5Dc6uFyzk+c)*5k};Rv7% z2kIR83&JxcfZ@h?(0pzu9te9%g`G=;3Clavpf_LORi)HwNj(nH({qIA{>!M_vp-^} zyaIexFOq)wZn0T?0DG?*gFbklDlQ(A_FFY{J~~7E{X0(9wo0FS*KVQQp6_7(-7}!3 zzgN_6ErpR?Dj;a)IGVrT2WACo^5sryoY5+vM{A-iX`myi=eonl^%{Jz$5S$tcVXGb z&V2UMc<3E!!pCdUg$ElBLDuq>;(_HB@F-{y*eWcK z_D}Yp&*vLxy+I?Hg{*k z!M6OZUyTrFKa};Q?8dL{G2|3Jg|+Uv@ZsV5oS#@Ff7+T&7u;QBe=~l8RUdb%&pR%x zc>h`)_-8(8NEQ_n7bnh`bW_avS1FPaQF^`!=T$YqjG@{R#Y#$^OYi5Ck#gvA@0irk zEQFmUV}xS?cGzoK01Wu^UPvsQ$WDiXS+1vy6?|UkRNDrxdq>il>kpvbki}Hhg_Q8; zFl26&+B3cj;8j2ih~b zlGg>LxWE&hNSEg zaKEqzTGgznD0h?i+2XYjs-lUTGaRJ3T8*UW>yAFEFW|bg|I!LyO-_@a()gRZq5q&* zNcrTCBWvDLMp!EaYTF1Qb7zC`Qh#_g-jrvV>EXYlN2T4X0cRh+D+!6|d1wA^ngOX-mqP43{c)Uk@b};|rVf^bDI5b$X z_xM^m>AnYM{+J|0cS)oTPWSrfs>i^dAvSzy-7DxYya?Xp_Mi=}lj(RMw6N$QG;S!8;{=o}7sedEGy!I7`>~NwAzF1(#&JKaVdjb`8hG*W>wjUcqR`H!h zL#bug_v%jy`0Gf&D|GPJN)2i!Q6bf0_CV>^j}oP;Czhvea!*^ej}E1FV$F5?2ygzQ z(uC{uAju4m4{U+Q{Y`Q1o9nVCn}92i7QnIXM}(2{=aJ`AZF-o$5UyU!B%U-xD4A#` zOxvJ{!HwIf$bT&DxVV_U+3yj4)CG{&AgS%4b(Ko0`l40`U791ECq9O(1k0b9!WT13 z_!Z^EbAx@jbmK;PX8Vnb2Dj(-%728}8`r@Mak)ILd?yW-Xj3mrYN@w*zIgENOVQlc z6kK^{zK0Rp0dML+d zRBm=bR=9RD)GrAXT-O?5b51c7oGgRwYaH>FdW96I3!!rlSJH$~BTOjUK|8b-(Ws7A z82vsF%e|GL^Te)LvaSe9_fF(T8mlQaVmo1qF|MDjMr%iE@`JO|d_AXHELV_71~$`# z;5&&lzFCVmX8DWtL8g3sU?sVS*kZVBE6nZJCQNyfPW-(Y3^tH3^065eKmSY7(al12 zc0UNLSWX9x?m@)0Y*09*!&}1V(Vhi;WG>T8`4>pfre{(+xUnBoUG zUkqBgn_*DqTUwY9A!z(P1WFFaV9MpLd@@b?f3O`W%#hAQPt-TVz5_(8F3z=dom z-n9qbA1Q(9%ZF0Eow`Kk>&q|hXNY#=M$*oys?;u3Y9B_|P*k4)TI62|wgZL<8~y~+ zkvY-A*Tfunyw+bln6Z-*K16|RQdco2s~4L2YT`A|6I7mKBlwm?@@fM`95JF8X54nB z#uLR<-)R~A%GKc=jYNr-X<~@aPk3dX2@4*@Qe5s;pc5%D!{d&yrt>veWo-m`O7=W{ z%zZI7@{_z|`eW+d5Jk2|b6`YOD;OTK5tM8kWa<6$#b>2Mq((zes*_A*c3l)9`gJR< zJ2X&C+h9vhJCDQ9t*0sM$Ua&;WsNkSk>3Bog{0$ANvDK;WY}|K3yXuI zJEq*Vw*zmSVh8U&HN%C_53uFQarE4#gV4gV64F;7yg1gI??0}E;PzfnZ)3{kA8M#^`*!M>qQ*r-{o&WQ z`80ED6QDeR4=)@n#wAsN@T>zb*!Y-69ch#=I$bTi>HUBL8kA)h`)sA81)acPa|5(U zcgyll)q<*uEkE38!;ijAguZsU&^bAU7Mv`l$qiLdKTpa}dfUR%TUKYKILJKqCa+oq-n70q&pNuD~l)v&PTZiDg#;;=1vqLc5;k0;T`cBA?c?jA= z>&c|n5vd9}G*Ew@_~6 z8zJm)N1oU7Bkb9jMAw#;(3^7?V0ZTmWMs7%o)1=mn%svZTiIRaxLkqVqFlJ3bt3lo zRRD?M-{IM@Dp+oG9@;upQ-bLp7*R0@%v4M0fyo<>Dy3~;?3E;0cGU2tixWN{smt;8 z&bT4Mqi}19J`W$(k=;gLg{Xb;V7jA}hGfm;OR@Pd zbgUvC&~64Nlamx_Z;eZhvPl2KSTK`Fy#w<_x>ZsHu9A&vXR!ibFJBJ3bGJ(bqcc?J zYtMdXq}16q+J7@&9vACHHUm#VlXER)8LSj~=QPk{%jLBF z&F7?V-X0(yqE*5gVk2_@ac-&~3KV?6Xzjd$-Su-B;Rx!8%nuyz4Kh z&ACk7FQmg7??!kZZ%O~X@#3YT*1-Sumc{?rJNVBXi~mn0hX2;E2>6eNg|C*k!NC8` zhQaCbkP z$dmlGIq!tbvZ4I=au#$`aYny^U*Ysl1s=H90&{(HXv>V*!jVxew0liH-QOkf@Z(0f z^SKEd&XiMdvJCeO&A`z&JK`N-IM08U3p0 zu@`*`xCYJnqcC0VrnE3#j!UL3KuycL5_0N}d`E;C&S-B+?HB(dV~b|cj2VgVPyVJ^ z($c9UT8noSjmKvV!8kl^J6Rom1RG|5kUc$L3dvK0_?|3_g31Hn(8o@2&2}NLxaPo1 zq>A&=FUn{iAIzVn`u()@K|EWk!jD&8EX;BmPOrDO$8Et0{Cl=Kk4d-1e!)}W@{%`T zf}s*Z>M84>jkyv8XRaRg{3F>p?i`Odre5=t7-kHGNyq#hwhRvg>gLb z=R`bZJ%x0)Tj0WHnzUx^QK}tmk0G12IlodvsBZcKq3})E{ZkQYc4t8Dpj+V3)q-by zABRWg&!r>!7Wlp3k`Vk|hf><#5r<7lrJ3^`_}sF-TvS)UPExSP(d{-YJ7vrkKRZBO zSr}#~zXk7Q%4m9cCI;@;5-Ycj<{e>1;`@YGaOI&N(Aqol`%VhD^=yq$b3}{F8%?mh zIY6qT9)fdufpB}JVkte^DyZz z4#r5!YI1taZ|Ii$Om)_wor>Ep;D zcf>#4)1^yg1{~?x6^$-S3fVj*wmI$0_qC=937TKv!i|}nx<-w^J{D=wM-yQQ?-w)s zAC*F^ju>^bSqilD$LTbh6FXw~vSuJQLkn+6M%D#5TV zZw&g6vJ+=+)kNd4Ze(m_2!?yN!3u{Qp&)4m&C7}7u=RK7xfJesbY%=r&wdJ{y83`? z-42?3FqGF`MH-l@&jo%bXnnUX+}GNjD+4U?pi&~)kJ|`SXRM}T{|s!tQX)b4byCr)D@ za-^)K)ikHq1U^^dB5cyuz(og!@i5y&T;x9H^LSYg%wM@*TsE(pba2hY)@k3U=Yp4##_EN4mwh=wW1IZ(l>TV?V(-u8ML-+ccjEe!$nK?Mc(YOo=r-Hq^C8)ocDqzK zte1q((?fA-=wMce(PWceo1tfGkMftRy0JX`9O>1ZguT+i)$#OTE5G4BE1{Q!3+}tO3?>Zi#)kveb7s8>-{y1h@A>5ojovRYn_}7V582@7lUOBb`?maT2F+)}P2}wG; zjAOLtNH%(oEs_>$VR&`FF0UxvD(twn9y%nvAmK_Fe;V8u{UjXwJ)KIZ|GX6vl%I&Z zW*jb`{aOXY^WmNt zd~F5lY6Vm1u#s$@?#)F#BlvTh8ykLbKohS(=yXy6a+Ec2-Uu~Zf3gcI^_fB)kEi0( z$ICdsFcd%cSHN{~UC`itS4qW}Kznc4@vMcP38dHH)_E-ngfoOqc3YxN`*HATh&_)~ zcg29YMYL{Mofz<7I-hwYAsgl@aMtfw)chyl=kAL9JLe>H8#NZ@-gaWM@9o zd%GA8mK-6y#@C;Ign!|lcqF+CubSY`p}WR#h2|M3P}k<*krGDpTpu**6M>#XJMgFv z8wAkrLZ$cOpzcg0zKMuL`29j$xOp&sF80UeI)h{%+C<8{Je+sk%EdpEep2bjH1H}3 zq!#ONj`xYi1|K)JJTjLJA1a~l$U=DVU<}#)$;EgH9 zZvAVGpD+J_q3gt$3=!bat%!0oe`6y(N@gbW9-s8xo7#)zvU1(39iV*s}JgReVb~ zjJI4o0&j#q^lFCKNbXS($J$kP{A^O5 z*!jFnEL}K_??|Y-^p@^;TUmN8J`CpF3SsQ9)=rpUFq@2@MM(>}t-^luC~3m&08 z7>hjp@ZjHpblzZ!7-BpXT@!}T#ee>^qq!%Wyf9?5ih4RS^)GyxzlF?uuctFf<+O9` z5Ufa2V27sXuz2$n?pAY$UP+;}p2?YDQ4q*B5qDtU+;;GK(OEjZWGKD3(hEB;Q{?V@ z0QV1H33Z#DXo+_fq+HjNUY}^5)UpsS&zypJS~8izWd|C4GlYAT4S@09Sso=kR4^FO z8T0i@$Ukfx8hbNoS*F6;U%gR0E-7lt4LHj8hcH4K(43sGOZN1sJxOd(Rl74|&UB8edIpx`LVYtmpohL4_=Sx{q`SPC^nyX30T74(9{v5(@ z#(#yyx99NF!b_x$to5<0sMkIC^ox2>gF5ae6PW%YuOQp zXo+#*%o*v_$j^>8HJ}i?48fQAHp-03eveANpbU9LWY|>8;ZFP!fE-#P}Wvl3$SFbtXK+5`pAv2=7XuYqI)+~vem(x zH;pjr<77OoDTB-UV{opTBlud{ai=DIo@SXZDvzAb?GD;XQOij%?zbyW+L}aP51YW2 zOSX7V?Y;DOaKMVUs@SdF6mGs5MV@x|gbgtoFev9axDU%04oy!N51duuE#0KTQU7sp zHOPjeB$W6Di@rRm%oFveZ2);vFX`{0AjI?@4qNB9M`!nC)Z_jw`h38d2bt#J`NOKb zulzQcbTUOfaV!;=4wqM0T%uD4+hNgd70l5{r)Os_)1pON=)xTc?$r2f*O^?~hB zb6G6K_EqL-g9mZTmmIJ>Wxy8;PC>@Hj_hPGM3(IC4yKDX!kpg{Kl(!=7ml*yTMbgU zH#r-BJekN7b`_J}T><~vU84TZU*NH0wEVtk3Pa+)h*Q-gxcS+6;lq^Au)0?kUM*U{ zqgE|vl^LU8soyE_fYlt94LS?~jph)4Du$aCi+ObKB>WqDkMv;(EA$${k*AM~i&PQ? zb~M1MTxmGyTPrG5Ux#s%kp{(U@R#cK)P9yRzLPW_2Rkn0@&{VzViklgHiq1nB`x;p z7%;FZ*mx3}%1Gzm>w5;7Np0#}f&wKA6|>tp>KrW2|X#;Z9TZ{7;vsBkZQ zwweH6l+?CEczE9zMhZ_opi8k}AR(u_H08jrE$I@*sGIQT zl0P2S$-?(tj!8O!5WbBcM62vRXxS#h$0w@r(K`h8cb3pB`?I*^c>olydqI{xYiQ@c zOrhRZN8V@AY}vTqPwDR1y|gj@4W%o5lid&%@YcdK%(Ooar`v53x_&zZNh#szH#n0{ z4Yy+rg&0^lq?R5H{s0xf-ikLT=i{Vn>A1{l5ab+>!~55a;771Fs|^~CmD1p?CgvEF z{<~0q;F5%w{MlF@(W=64evQVz#s9!nPoG0eGT7_A8+2=PK;xmsuwg(J*p|8Crl$r{ zVIfcS8xCmvdzd&oBZH^Ac%jRN8RDyR48MA5VuVzJEULUE?xTLf*9GnP>8S$3nle76 z+zE$nAA$=9IO6dVOWtwnuJAYcs4#i5ynj_r6pq)qL+zW_L-mRPs6V(u$Q!W$@8;bV z)T8GV24WZk0d_2Y1o1 z@u`@6$_=x0XYh-_4OEyil(oY~^YhMgdEm27IO3`sthyD9->zp$g?M%DoU6;N!Tz}6 zF(YYYMBUt{=^ zzAFw2u9aEu^ATxdDv!&(CDW8No2FIebmPc&sdxqWd(_u49+?okY?=DS26 zXDxmZew$uqAER?&j%amje?~SzJNIRi_}aErGKe^?1p>v4YiwNNOxFr|6?Of?4T5 zh>WWfl%DURac);3R&z05)44)#(gxx1dq-*5O%?1hr5gMW?55w_Y*0d{r0DWacQ3TeaD*=nz1Sw^7j3p?;akOEE}J)%`%FoYv{Wi+xNI}^)yUvI4$^12 z?|B%!a{@*zx=qMbk7Ter(JexyqJ>3C29S@Q3W$!I^Z#s#4sw>oH7PYb$m*l7n@&zSORxDnFV` zlrI%}3cn{x??DsUmBw7bbF~lu-Dt*PAH#+G1Vhf0&%raPgJJrp1h{sm3yx`!Q2fUY zFl(nw=(MpE?tReW3inUc!O2kcb<_W;dHyH^Sn!C;+t=|bjhX@biSDc4PX2q{PAYG`6duY zU8oVJzgh)Sg_BQKi}d-1J$7y1NO^t6qt>Ke_<4|yq#bLLMR)2(zR#1y&=;xfc%La| z+!#!cJ|^#ykpoIL5?E&LDzWieCvx#V0YR=_u;!>f7PDo{(-q?Xgd2(Zz3Jlv=xnrieSFTXj+pDp>Pax4v6 zuf)*}Q^|C)wREReLqmT*E;R9A(^ZT3;zB!qFX7V8WJ~w9kSj3h<^@4RM;8XPcgJIW zQpw3agmb++BTe^#_&`6p`zV)Z#&qX61r~~J=fG9Sq*wF1;%7Hae(Vy?A@jzF`&Dm= zg4P{USfYVL>)kN_?;t#sX^GQbS+jFuvasvEGzTItoT*d7x3sTI%E>&aInxfjLUYSM z!2();cMDNb7arBDDr@l!@mRHfIxc!)fGhSnp)6$*5BMvfIMGy4KDrm)rCpG}DP~EP zIFfJhKB~X$&1sT?+2i{l4!JF(gob?fEcKun{xkWlX$P!$vjMh8T!55NeZfds8^&6O zV&r5Oo_sTaTO9X;hSP4kR#ip{F&oH7!g=lr4d+ZlL+-D$fgXK-BAcxA0cJNXCGqPd zZXD1=Wnv37pIJ^zLS|#{9_{$vbp^<{u7e%J$J0{_XWW>UAm&WakWkg1sMhGQSoqH# z>(jr}@jZQL_rDMr=4C^7x>>;8yX_d41kns>sg`g+Lf;qmz+cfhCEBXTWowaiZjBWF7&dVt zMJgn7!OKQrRMBAUaoHFn&%YDW-Ny3_ZAqgzVH&%ZEQM~@TwsyCfTsor#mI2Cm z?4lLFsNYMI-s;Lx1$mRmJ3K7Cfk17^XeykEPWnv~iBLe8I3Q zg6Gj7yzISXvYAQ7{iz)Z({~8wCY76Pz*d z9i4k;%$c#3U}di_%`OsIC4C6a>Z-}tWxZg4`VT>+TRzyj><~kW_EK8Aj#!ixA()OB zDwRu(=wCrL)vVbG)-5CHex!6(_c3PmX@?>F%Xpq(a7cdA-Gb{+*V8wh3gKFa73fUK zBIVs zhP}biqv*^c)j9|a%4PKlhUDtL6?!jo#zmdFqPi4fIOewi-Nr?-eb_{<_%#;A8fSLu zV1ffb1!ATCKsH%?gsK+UV>hQnIG=hyJeGc3{Jc4cORC(>4 zUi>_66g1r|rd|Uw`B6$Vzy0FKj-Iu`j-z)-U+#_zCVr*O``ht=yVamJ@fIx}XUZB$ zZ{ViR9PGBaUi|CUAfMB245}>efw6Hb$?N=0@_1&1Wo^JQqm1z4*+^1+IsoC~aUpQ^ z9{E=99&F(@03Ccun0zjcu3Cf({`0LVHK73B+_ixC@h^qZ+w9S0jT{bZ8$nXS7I=Ns z6^A}}1rK+B24|z^P>ZFaQd=5NTsefdrWnx3S{dGWjO-Pp&o9%w>0Mv|f2ua+j&HN* z&%PcMZR;T1xILI}T0Vp=tu~lxsDNI(?YW)jY0?_7g)UCchn3H#ve?cOgKjv}zTwk( z#pWPR4ypmgmCL!yuD-nIn<4yjHZ6auenK4mCkZyZabr+<15vb>ELV+W?Ku@fWPe}m z_AD3ICnbp5dzMkhm}k(Xsyq5mSHFI~E(=OTN5LO#Y$x%2X&${~eh0Sr zPyxk`ZqknFuWadru^3X9Cw}eomJ%bj;0%}~SXRpMuAU>lw_6E!cm5#liM23B&5)Bv z^hfi(F~awy2dQRDEu7w?j_Wke!b9f+@|+`9oa%F&D)$8N7KNU4bc-gNUi?8L0#?wZ zZz1e!TQCOv!X$zzNRaP>nK(frSM+WsJz=XE|tnK8larLc;6 z6$G=47z)L^xazIfGV5G!FAuUO*1=B+90Jms@seDo%5JTm})dN)#K=Ot1QWD%D2 zzC?d&J@~Ij8oRwxLnmp!^R#IaYMpVzjpH)0v%*{qo}$CEMm(fl<&VW9=jx!_X@N`c zKczKRk}@jQ0*9Gxg0jppd`qnol!M}V?b>#HKXoWi-|Ngb7HZ+I8Ir%{`UlI5g{NR@ps*k2Bs|3Xkr z3IPS5w`2dW8tA^X6TN$+h@TB7p-f#Rx5bgQ5SM z(To4dFRqnt`G52hB*ssQO^BQwKg(&#?ARoism?Le;$x@H{Er|;*Z&A&boDCi`k#Ur z`c|o3KP(-O!Rx+@K?h85PGby&hc4s?H$qWw{Zx9aZp6wLtWg*)hijvk;q$k zs7b8@4>R7*%QWY5Q$?0IJ!k{XpJ0Yd=61mMcT?F@(-CzCR>9@G`>`9o_FDZ=E(Azqu_1yWWE^_H3K*X?Rx(40=qr7F`1K_)%EsIEqTHbVJW2 zEBJW9L3;8fR$O)V4EgE0VW$V-vX^E-lsfu|N8OtwoOVx5Xu1C$PDJ>TOQN)Z=(3jg z$b0Ytw-id*GX&)Y2YBe1o8qfa4PtC?D7e2}h+WSOmff&*1<@m(UO!%q;3u_hvfH7} zj*AkR;Hpq_H5^}eohvWx(Us+|>frgi0*up1W1V16SyR?gSY0-lhMZeM&rLUh&xCjM zrB^Qg*mRx(Om@r9$48+;?EuuB@Pp>tDB{?6!91mZUvaZ?{T4`3p2f66jM9JO4@kaewY7STi!Jvzg z*Io(d6Ql%q<|W+V^MYz#jDwe*0?;xY_|UF#xYIHPrp#H)kz~PTgV#}X{3tjzuRDA{ zQ$&qN%|UyDBQA0|jYY1T(4n^!g!p=kiY;AmRCzpjCJp1B&%eQ)7m67Bb%M~N^C)cI z>yH%VhneU5gT1m6=o!UIbj56{+BT3^|C}f+)}Kcsq{ZeW0~X?D_2BP;;n-w37Vq}X zz{exa(Qa8Nc1}9P=hiB6#0O>mx}urFC8x|olkISMd>HyJc~4z0O~$q|3smfjykB># z*fo3->NdXw`RbPxsB6YGFS_tG*L-dnyMu@9^yCroi$x{1z2uM;L4%H^h$Z_=VB?a7 zT&CNbx7Hiu!k~88@?<{u@b=)oyHl}d{&pU@wrC*9dQ|6~(`Bj*dUiLzQ?> z{(Vn{t^e8Lu>9aPFiFZU5Dq zCtj_Ud@ysM<kW*QOGKWm^+G{<8+i}iMTc$6an|HQ9yI2vytZ-$y!=qeqx^KaI4vRay>o*hw=J=5hRniEOafnp`d)=Bv|{aIs@1`(GM_7dPJ)Z=Lhvs=Z;H zI$|(-o$rj^mKsu{#{<_tOXaTn&Dixwg(MCPk{$Av2sD!-@L;;sjK3h#%10(>quCCB znplYKenvn~S_Ml_dvH4^Dg4sa4|^`#1Z_Qy*j#-L`P-TZdd{gh@81&adL@D?iX=x; zumQzN#J;}6f5Ifm^V)Cp5Z*Cu8&$4P`UU>xX3Er(v65*P;V3{c{$VRX%{p94PL~KMddY?4oVs2V%h0bPmu~;FK>G zbi@Sk!-I*UitBDVIO~x(u%Sdo{r6JC%y+Ob_86_2WydLBd*h<#?b%;U5jr+RQwLi| zUgZ`@P0N~L=>@4}a^ogNOP_iEgKfB{Qh!vI>+s{6bTn49hX!+Hx^6g|7vv`MB#+Uc zwQvewJMszC`baL*=wc2|Ux>pem15-mT`+yNGp8P3z;%nJ*H(TW} z>R}m_7H@!VTUBsgeFQ(=ISacDZKks(5?SuI6^&~eD@z$Qim&d7k zLeYL->i;haJr_1W>HK{DQx?Jr9!q7_J$!ghTog+G254J8f!mjK#!9=>wEx9eJTW?* z^_2Z^Rfkc$OlcV28Xe9~7m`uI!3(o=v@rQ*7Ebxgl!>+xL+Nu+Gew^K?k<~ zDA7XO3i)GW6w7)zL$l66PW;;)W!6*BFQbIxKXyfff&{cE-pcc?=HSDs&tUd*D|H%N zPd^6cV&iuQ)PH%EoOd7sWZ}h71=xOeHd?GHq2wpYSOyO$)USX)b~fTZ^VaZto9l3S zX&{%oY=o^{2lAKAMr&gd|d-Q!kZY}x@hu+IlO5AVw@ zlmR1FF5w&P?Rn;6pl}Tnw5)0)1J6Wp?6htyNh)!p*-3wdX;0{s0%E-D?37z_AfkyTD z++n^Ab?myFQ#3u%<-k6;FdguK=_TP{iawvG~k8gX5qO zyI;FV{pLGk{pxT&WET!A=IEnXaF$N$?1C1B8?v6hsbb>aEUb>6fEN$j2pjXdqTbeD zpd~TdEy~VQ7CU0?_u15Rp#$g1GU2k>Xr6GhFZYiv;JrUqqWKN0@|=XR;6BojsvIow zg}WjiqW*Zozd`bZsbjNA47UWmrPGpI%T?PGXLXTi1 z;{@8fNF5hlt|oUehl<0mlIy1&Zv3u>ZOa!nHeG7$yr%PgHc-IRa_V%uL}-}eC=O~~h57z@==FV$*iiZk%wAX0?~~&sGLpc( z4QImY_I?;Px-a_NQo?nlf4aPm@>QjjzqIoTzIFm;1iABDT?MSv9>JsbOBb23 zjWB%lFRDt*!gFd9q0%-At+$$>!g*~lJ8#J2u7~hOO>69M{TNvNegH4^e9=PbDm-6i z%m2D6@U-($=xZ~QQo0`ohrXM5_fQWo-D`j)Ra&I1I+cKfgZfDyO-4Mk&vzL#^g7z`x(c@4FQ-2iis<6B7R&E> z;t;zD*gb9#9^352`&{Gr;%#GIc~ctvF6)AKFBjmY4nM`RoM6s>8G=X5N3x4Y6u-;L zfWj6pp7O#)3f(DCyN{vN($NGmGE=zj&MLI1cuNn;4$<$Dy|~GDgXC;V6RMi8kix5z zF!R0(bs6}CJaeXV>jhS_oJPPW3^0qN{!@*E6Ae+a5MBxD;%p;o0d@r1sB zJ33wmlY1ZG&FIlEcP_BDp8-#u=pqexom3 zdKQQ=2i&>3>87wPtG8HM=+2)#Ct>6|Wn5+U6xN+zM^2xo(;SuWLSD>PeswpHC(T`o zZAEr8C4VAjxXGz|tUb1r>WKG*Uii~m7Y+oPbCrf6PLoI%UcT#4apY{SR$s=}mxr+G zye{aJQbQ4zhcQgSjAeC(_%6l+$NGh0hoofGo4i$=uxGt^UU4e3UlH87y_91Omg1JJ zMtG;MD^6Tn@!u7arLUCIR&b3^Jt@EO>YPmgr+9V;2eFo6tgw61$aEug=y(vAf zf6<}ZFZ6M-Ia=jg^W_^#c)(g0liOxsSx$Q#AD;&CU*^EVDbwIeyK$J_sV5fp&4u58 z>R@Ty0&twVmFMa;P`?AkFwshZ>!%m;z{p$VZ<)?-c6srh2i5T1RJwnr^`OD)?g*3o zR^xZmr93P@hy2^E6BXmG2-$Y^<(C6Yp>zE|__ewZ1)h9ECF#R)Zg?Dw`Z@>Sz3hV- zzmD*|ya2v!x}Wk)Z7}bM2P=*8B_r!m`07qiwDT*6BbgR7ut$|xVRn}8`{v1_p4ZWr zAXnMVqeF4!ZbjZyAIW1~AJL426|&%KV{u<`NA!QPmj>j_$3sK>cx>Eayr8=sw^w=7 zjcu!;;K~NrKUAWG=b6%x_CLW;Ta}ZsGpc`?jK`8(aF^3gxccWF^_JW(s!RTggQsMm zV(ELB`OAsr*8?$CBKH?~yOEDo8J^Beqpdsk(?mu?Q=pog>g zL&jA|X-H+VAA@yC51^0wER6GV$Hvkg_@>?-+?Rcz&|XW?et{Eq*!`OtU3dPc#>+}2 zt$_c7LCk+Kh4|0YnE#U*&wuf)|Jz7r;(v@}g0w~&1pJ?lWd4hvqxC&PItNZlnie}P z(Rpgr%t?t+vtz?&PMSY0KHSyC=|8>_KPhoqxT{lS)Xcei)(aGYM&?~-~ zy8DC+I>!ddUB4ZqnW0m~K6D?lS|u{z*VnS-3w2`4e0}a0y%-Lk=t$WbRl>}d%fvei zDxqp}HU&P^p_r$?;gjD{*_z~Cw5waZ@Zv`;S@-M>3QmEvXN?9}Hnc-^b*XsqX$1U| zo;6Vl>qN_Ga#&Se1UAVNgcFz3Xw#uwFzL4)w(jY~lS>Z?UhCG1O(zct-HV1|ztzU9 za!4Cb=;`wMjlROYaC20SQs9DwCP8hK3Jm&PAO=s~Ae_8=2iAi%_7*L0{H9IxynBnN zWNrfShWcDIKob|06~QnVjYc)ekXPEB=hdp?&eH1?bf6oEwe8rj{W{uhug8{M%1Hh% zR$l32fRi7#$90L`nAO1uZZsVeXAP5Rt?gdYxGq;<*T*7Iayvjduipu&b$)XF!-whX zyC)EuTS`5jwt%L=U)qtEN#o4dpBerdI4t1-xjvGX2kK4Kt2IlEfBqdhHt+M8vo{km z++>`pqX{q5_JPBqSJX7DMxuF|;xZ+7ntJ^Mef+72nx1unZJZ8%%D)bcraNI?cTIE{ z`-{AKNwmD;0c>(ohu8jVlBo8BVC>c$+VklLv|sy#x=3ECiU~U9-H4#bcnG(PH z;)a63O!36MW%9DVo5<$aIZ!t253_2_ajxof+LYE0!q%$ey~)-nueRsL0u{b|Lb`L@ z8Z3R!FR*2pD*m2mNBdvdf%ySD?mjCNK29^^$mN}}VzWT2&FV$_?Z$j)(gVtEIx9K6 zT7{kwhoHiBC~x^&M*Aj9B%Dk`P_8w=H{Gt#sEsmu)ptF)&8dVejgBxNwj4BLRVn!F zH=1B*N=;EK$>fYLT+s<7&;N_GGyldi4A(Xy^DHxwdCU~@KG&^MNt7lPm1c!TnlzfC zR5C;vibyFWb9tZZRw#rd6-A>|lm<$q@;&>P{jIh4`i8akAHaGo?=#%jb)LuZQjj{? zRk4eMZozbGEp9QdPF^)~gj*3U$_BoH+^;*Z%6lJs?6NJ9toMXDy)&3$M`!ep%f+;w z@lc;8hxcdi0j(P>)}6hF=eGTV%H27TH%EuR=r#jwmU^UEP?*N95Q6vN%H;GmM-1l% z>B-UxR4iaRU+!87?leb!$3;dnq!jrTMwXbrfp!ql9QS$+(vEWpUkQ1kq7FR)&&MVv| zl7l8MI$+|bJvgso4$TY|qY6fC@O85RiJA2U8aRScbNn!@JIT>$EW9!9FjqWsIdiK_ zT#OuUGs4l30X8vs0Xx3b1t&+J!C5~P*oWt;Fj6L#wgu!d2frt5wD}#BmtDqqE8TEI1;61PDed!-XGOB>#FN6mRD|tsR}HCXx-E<@4dMr2xjg8RE!qU*Jf-1~|@FM*QUJc~I#{_g4)17i#lKCn zQTJE{9Mi2~<3+=vbJ7W(X@?L*7hK^ftDbpcl#gX5ub8uZ{#{@a$_h~{*$5BRMzU8I8`EC@Fjl;>lcm0K|RuMmW=x zz%E>#j9u3q@d`KhSpWAq3ik?#s#0x5Zgu{@*uSq zO}s&SMLgYihB4S22}%14_``+r$bY6tS5=4di~qL6ugDo#q!@)ulG`GpRYmMnL8*qDIY#Aw}$W!-%#2_mbmnc z;i1*`aAT=CJ@Z>1+>=Bx=5;@IUMXXD{nB8kX*OaEN0-~OrNYUg+l=XR)`ZjH;^Y9g zu$6X6V8{FZ0UpjN06 zX2t!)(STDZW660JXK?rAQVa5OES_(zCPr*{6;P%vLq`{Ll%3U9^g~}eBj%tFpY#Ih zlu4HOR9T3Ab?9J$jn@rvwj@!hCKyOTwewdd8 z6}_*)b|eWt=`KVV>GM7Ca%p~jy>E8Tw9!bs*e zXnUs(ckd`blX?xF-nf$Ld7eR`^6&g5BI1m5-*s4CC`%0wPNu16Pr*O}Ww({4VBwG) zeoeF|n@uLLTjvUq8~c`#DFc4Ix;<~fXT^Lr`QbE3s^3S>l^W12vGX{=dk*-N97LrZ zB^YyBi7YL8$8#D@0nyw^?1jv$P956?aQt>{yrcOS7o2p3u`6P9*W*2?86t#xI-NlJ z$0VwMj&raoCZIk?DAI1tWlILMsmY(0%=4!XjLdK$>r&`KYGiH5(#w3T+-vT1q+vSs z(tia}H|L}CvI3O*+X)9opTk~(?~Kq$Ja}Ewq%i^htbCjf{nI%g>iM?7ubxO(70krY zoVWPd>pYmQ9Zye{$KuXYgV1wVhThz1$L>+`CJO_a`R?=ONWH>R{OMv(pH*>m<4fxF zO{5M{HO~V7`^V7PX98JyOorULP>;FYi=egq8A^T4#63L)7&tQvF0B88C07hdm!dSC zP|X8x>1rJCPl1|i70fcoSeu0`B48b)-Xf;@EY{RMY+>2dq>Xjr+33$w!otW7swv;u%QP62jr;ek_Die{}N_yNkdHy9pW=#DK1D>h3D~wAZZbgk`qUv z$S;y!>h8x$cbnLa!MmBw7Z)=o!!w+`uVzxcnS#{q&_eu|El-w=q+*_FGtAi2i>U{; z;O=D;*m?UMsCRfV3<@=4VC#Gmqa8{YJ4+F|$sL?t|A5f+0r1EYfVZ2pN!;I3xZ`vU z%m;ly#_%;86ndQIf4I#rJz<6m7d2t$3vW;wo zue=?zd``Er?o7nP;EtsD5o^gJp z3wd%jwCIcr(cBw~xn~5(!{_2ODR_i^>X-mIKV0a=6T9J=fjz5ZvP~d2KJzqrVq05|e{&@x5t?+@v+vSK)8gQZ8$6%Ryoy{C_B7L);!kxR?%)id# z%+e)}l+k|AB$#Bu??xRuzkU;Rz44|GCPZ^C*cEu>#!_l+t`0{G?|{mYE!=0)Ay*97 zV@$Uu)f^iIn{{#^-To1l*GZG!{aPFmtRIv(vbMop8FFCWSv(-q&kxZkXLpALgPL~) zT>t(M56tIm1wu|3kd*^J233f0m=S5H{m#VXO=6}Rcftf;Wjfa&6~ZQq(uEv7Ds;ON z=9zopP{kG4yfXpL#$>V13&p75nGvS}$Hi#UphtG`Za{djD6KsZi#qo?NW%|x{<+WJ z*cCBTi0rF>_+;5Qyk)A;%$bHypgbvo@l6-ObYQHjX^B@EOvj2HP)f>v}_g5jwV^npA` z+5d!zv-jt`!?}2=`!w8TbjhgodG=qNG?}<*fL;A^6dP~W!y0`!@w>#ld?iOc-%lcoZo6UG*)L9Ol*W)P z@FO!9cEF}?dH7;}8LL*P6YDPhTcOnhj77&2Oij4YN?%Dur4%i6_%2S${&DxVRCSuH z)(zdh=a{n0n~aCsV%S~5Iqd`FcyHR|X%cw5Of0)->o`3@TWoS!+ zBe=|Y1V_5Jv(-i%QE6{7J`aAtB2UT&D?GmS8;=AoVlQ*|qL!PJ8I`L!Fu1;oxA!L(;B{;OPNE8nOAq2fT0?#1L|HrM z$IOE#kNCd=(iwY^QTBqiHcg7{V=`V;!w?rR{`Pzxbbgnjv3GvJ@%$VVnW2ZgNrE){ z9=Aoclp)e5WQdZbnZ}|FW4*q=(NiGfb^W;^oVHo&!SM_E6M!KZajk zX0!bXFW`n=B(pcSi;+xggAu8-;QDMfUV3RpnlARCc)~-h`PRqG40{QB)31Y}GasJ) zUB=pMw1@W9<*03d!24YQOB)sNT37%`%;mBCVsoSuGTAfFFEOGXYV=5rJhrrvKiA;rm}>=c;SW zyZb9aXGZ>J{^ z*<)@nv_523l+Q*7QNNS?~4;rm)Aa=iBtjwysdC7X!9BUa$5<}3J3?HpE?JjNfV z5@4oXJF~Y~0>oVGSf@^LvM)6Zem$!K*|~BYjHZ#r%4nEXdJi|vs0Jnd<8a|l90;ws zguhog(4HeYl+NvizlP#;X=EA9cihcxa6F9XCg>35_G>62Z-#TdFTnHf4UBKiNf6{_ zl;)vn?2*-L@VS`;?UC_Dg;^^6X&s#$RA(GXi2H|y|Ng-Ffe#RTrUK)i{bh~SKY~EP zS>~t4TjtPqDg3%qoo;$J6MozjVRLWF!Z8;Kx^vlFX5f21RxVJ3jp<^{eP?Hq*EhT2KDz7mTbRLa;l7KzQ_7`r0W8wXSFo z%SWeKHl>|O7~>30!R3&UaSK1n`oT@16u3<&lMw98)*YBh{FTkPecwG8&9VS3mB+9d z-0`=XG-(Oz!zRH^;Nj8@Rh#Q@m#H~<)Bg-^tCyhXlx|kmCxST^o{dr+fxOAD7vnJl zX;>aJz#Q)^#e?S?FhP?ejJLJ&Q&)%+fA0EpC$(@&?;Ny`m!}`+aI@l&kCi<^lj*0X z23Y-WKdv*#XFeCYVy}@BSf|coTqkkg6@%S8w>OgD*yjpTVUBPK5Dm;y(exAPyNgkzd^<)A?q#DFU*)-S zdz-GIM0TlXH*7e*kqzd^98FIrF$y0R!ok==R&jj~_6}yko=+{jXw|QfqTkJCtdk`b z-_F6~mv>?LzmM3y_yKrMEQctKCOA2#8wYKC(LMMq99!ZC!O7)l#2IvR{1oVc!7I2Y z{yF5`d=5ct=doS?0ZTe5z`QG&Kx<52fRM#6kd~eanS;;p=#M(Q;y#rFJw0c=Bh+DU ziYWz!PUcO36{zhF15=JN&0r=jo+1Es@gmf}_9%1it|5{2)kN*4BY0U;oV@v}MJ~DR z#`5>_Xz<-{3*=o@KGcR!whHBaoxHt2>jmp1S#tpfucG0t9J zjn(S;;2|)Gi)tjP!^ZQ_$CIO4-`arAdJ6P|pFSSOHZ&jilL-iW!n$jBGCpVXafkGE2vgOd*2stR{!e%Wjd{hF zL`d_=A*kM4#D*8zW1vGebLy%X`M#$aqd(+3?W!naE@r92!+V1`6zPMj--r zDtKrwiPNX_V*JDwP?xvHo$M0!Utcm)WbqRo?2w^WDv_{D&Jm~gS^=Z77FJH-z!B&>|^39imG$@5mFk@T*v`H? zVINivBHu-UELT|t6V}Vnh*@cXR{B(aq6~aA<<4l1Cm_jUJ8JM+u{rJuv^2RflPxAg zkBv4>`FR1Z38)a#I2FGM1+w?e znK;6wWQ8bs=XMVLHifayyCTuK=rDv-&%m#*Oz@4`LZ&eM6>L;F2gb)WNL79`^4Mg! zHR}#;dZ9#LIxb+!YQb%zBDgqg;eKaaV|emw{fSBhD74 zbI%45ei*z^F{U#*)WPJ$7`s87Bf=+qL8ogYur}^KlUw_RU8LOug9T4_AcA1r}34*548~CMu6AHA8p_};=UMLkO4oT| zxD8&*K0(XPHcUc(1Us-Jk_r6f57*vTg16gsD0h};$eLORd$JcUh4T5|63;VN$5Ns4 zbrR$Z_9Fxnydxn+X8Mm{Syl=bv9%~|_Zgk<5H!3ui7ZD6a>PWGY+7NAImw(MM8gE? zO?2?be}LN>-^1ptV$`lwqZiYKI5XBcxHTh#&0i6Qb~`qMZ9WIXKoM%uJ`=ohDB3*c zO4w%@vS`zFJo&+e{Fq)1GxUboouA8izqawwc7`!ufK)MQVq&=L^I}%-Q74GCwL#Di zCs>re3%b7D<%}Vw#N>%CYXO;T=ia#}dAkg5rC75O0#l%a1A}d{c+DgVh|rFVGjLAZaiDwQpkPq{cD&Gvvv}c@yYaQVfdb z@-)jfw(?t59UI$N&uUIPiGNm76#kfj()FcmK(`)7{?H+n$^K*ty@7p0oy_jfg3K-9 zZvexyangZFq;yn?u{G=D?4BYdCG`hm=Pbi!+%1EgE@5KwuMfV>@Pp?$)etRL1@k19_~=ods4j8pt^WZ}t$HBh!5C8}S->tSv!j9)&zUm0ePr!4 zW4d~M79`fC;g9QFX=~9t_KUe0Zkip(>k4p%>*H_0AJu=1*Q1jN`B{+tkHy2fn^CGk z8{};C$t9s%%sr2{yoysn;KeK=^V19<@!m0*lVwlNi+MnDa|^z>sYai>$K&%GV|cmn z1RjZ$Vm6!>!;YEP86U+~Y+v7isMgI~eW^jGcaPJ5;Dpa}WOG`7@t4nDY*D&%b!~ z8Jg(nvL7B+GV`Vm^8$^(F-?bm!abWc;BWK=w|;MBAM@(@{~{XT<83!u(yI%O7q~*@ z_YwZQ_x`Z0vr4Zy^DAoLoZ|6dQKSw&M-^#z zeIEK+>fqVLd$_X6o;u~;XZxe7S)KEBP}W`mcgJrA-@v`N;E+2Gti8^db*8}Fe}jy_ z!z%QA_la@au@S?XdEn=zL=JOZk}YRy;pX+d{Pc!5%r4IKwET!FSDxO4vy+~|CcXJ^ z=8rLJ!)s)GDk$z4jo@3~F2{3km8sa2R#Z9j9fqPfutC9Z_+GLO^mduj(A+DSoHv4- zO!esBVLvjhEeK=3-GFcBH?zJ66TpiD9oAWAFqSJH!i*g;(8!tdG_Tswti=|1J^K#t znWHEpBvi@Id~8XIf4o8=p-v`Fu@KYBjEUsSl{^Po1#)CNX9D^zP1*ypp>(1V&6=Bx z!O=xH^j)6h!VGQ?Gaom`oWS9Lqs*^sAHnMHIXLn1K2~LkQm1)N?C~@w96O$Y8#v3t z(}ayO+Jg(Do$E*M6+{JPKkDd^Cd4pNqCbWndA+DV;+&u^sYYKay+ zDOU`=8Tz!^_dI0Fz5>Q?4klfcBZ+s!Ep86WxVJ659SP9hZnGnUX8+Y(JUQNy?8@)Q1$$SrsikpD`4n}!PNWDz^J1A8 z(aoTBcnw|^v7;+j4uR+@4WhqQ9sgLKgyq*JQ1SLh7^1ZZSJb6qpF=kO37kuvQqQ2L z(o-0GZ3qEDxwy?x9^I=DVg*LoC2xjVBY$gH5&8pTpQwZ3BzNMJeVwN*X9y1m$FTCQ zG)+I<%x`@7lS!Vj3Usd3fY^?!;OVKuew}U(PQ{I=_xT0~Ca8qjdp@FK(F0UyD1=Oz zRk&i#K1{e(%^Y0GTQ>YqpT-l$-VG}gPMeq)5byVGG}!j0<#_J^lP>XH5#~yEjHPZ%VoJrlsiHGuR5daAwj-)Ie_~9-&i)uo@~#G z2M1Lfns&Gwmv#!0E$<#OlPim{Y5guxj~qp(E%6vSra(;v67kBhAg1{8S%^{NK+wH< z&~h>rZ>LORqwHT`>3VT8s%U~O?*1S%TL}KB^?}>1Hi-Oq2UdLx$Ftk(adg%J7;sW1 zho*l);jMR>(FsxT;>8k7a}|ceu12`%?+{a*{07pOS<|Plsu{{25H=-Z7@YTjDbB69UQdL1(C3Jzvh`T{q=J#G7NA-kEdE^i)=$hvOfd;EgDzR4`UzCOH1Pbs+{A&a6KLluFDyS`g7+_Y zKxFe|re%K$>_4GIGtB40*_mai{jz~6U093{AB-p7>AT4ny$*QUVMryUXA$N80rp@@ z48+(S0pXP@WWnlA47A;ZrkA^M$nG{K8ehh>XC-l<)*2EEZ6POP8Imdme4gM)t+pC) zoi{TO6qI1|oJX-$UX9$3w;--R-hq(TICA2zJqC0Ajm9%!3{%$3bSq`E9s$AVWzxp| zyg1zr9GthVnKdbo#G^j1F>RYTK&mJ4sN*_+JJr}(+z!(J$T)m>;sT0qQlfe*ji3cJhWTKg6CQbkWqWV{5~l_CU>gQoh`9oV%&#vk+1OA1`AkWG#NJvE8*#TL+Hb9 zz=>9WdFdr)jQm|i^cZ={m>ixEjzcT= zW0JQGn_R-c(7$xn~i12K_$3MA}Wq$AjM(h@|MSu@DRx z#O>D>z)Sb@T*l9ZzOL8?Wk1T%$xVpJd1_P99g_66nGvmjn#ZpEbB{A83}TXhJRW;> z5?Q-;{P$gwKF;_Cu~n5^Z!NX*cn)HCkQ+Qyp60eB5 z)7rBc{GE9wSh+)zwH0)&JlQ>wsA^QA?19;IRa+HLqQ?*q=^4kupG9R_WGVsWagC0|fUl-^R(#I%b!ctR*} zs^It_2)wu!uLb2!ty4YAWDZ9g8)m1715zOnl*MB-TPA;^GT;HBA%m219X z(gj;KEwh}BDX}8v<-f6Tpo__=t7nrx`jfxT#dzW0ewg1-jCCH%@kifrMz5w5-FAs# z{SHs^mkEM|kZRZ`%K@wBa|X2dQ&5p2%f7s#0*U)IY1EXL_Cz9d<2g*%rY z*gy&sW}}I{6Xex!CfA4v$od)!4r^whfP1jhykApc#p(mtf0fVCdZyC2!)n@R5Ilofg8qB4Q>92!r_<)0Dv}}xF8}lS+qvdxH z`67hBIeO-?_sM8~w}(x&kfdMZUE$88VO%~q4eB~Mdxv~Bj-TQV4@+dR@4Fmkn=GdN z{mR6)UItHbJGHZQDU7M(8`yVaDzmdJ4E_7jbBq8y0 zjl};^kMiGt#ebKW{3r3^|Jky*@^~Kka&iQXZ(qc~Pt zBJ{F1riy~fq;UF7Cf!2{W}JD1P3e|wrMv)1_g17kFZsedE)kgZsg4z%RDqcSK6uC7 z9IK@=P)N#}(MSx$xzAp*k|(EPjDR_g)S5HvDz)f#nSS1`%=y$efSVXN*7Nc=$TRgd zXJM3|$kx8khM%)j`FCRjAm!c*uw3i~CUs_LBl`_5a#!ca#|v;`yF4*p>WN36xKQT@ zKN+)s^N5M*DfUUy9(?$<1V=R*K(0cJ+VeGt`C3gPC$J8BrZ+H#?d|Mt_c}BA6%TzyixMeCB(ipy00z&1!lBzHQ;~*X=lF zY2~84=t4$#IpDYqQF_)&nw}eH%%w0DskXEbNvQeFuHMHbE*->4!rf}lb3B5RrA*1e zSz2(bqJY~z`r%bg5o-T^CZ22)AiR%yjIiEpxcp`lq>7)$(GRx7r-Dm|?DPe%_9jf; za~-$Y%*6H&nT-19Om?8+BIw=Z61Kh{U~&3n(lHo{Z>){z`SD%M*7spFtvi?%4G@F= zkel%OUpo8a?P_qZwq-K%hrrjU3H5cu;n9d5>6GooznR>$`Di(&^$F4gH!FEcFMGi{ z?KNo3K7&{I`qU%egG=^Ek@Gi>Ktzl%)Xz01b;jbDoxFrTFVv&Q$`8<4oi@ymPFajs z5~Ay!lR=`7LR{1ZMucm}nX@#pSJ#xM~wKrk}&qTdagWZF6cCG>I|LI}P1d z!f2!_&#v+Aht4cbdUH-I_WUu02AL7ucaK7s{RS-GnZr$@YC(?lX8t>TouW=xUp9EMaJ*0$MDHlzv1G`vt;c?wzn zd@rmj;N!oiD$u-TB94x~kI`GElAVh$-wN9OnZGVZi#kQ!Wn6VE>6tI{nS)76^woMh zT<_0dU3UUHd@8{LlmOWYj%3?^w9j2DoKE&_#xz|G4oMn-LB>yD1J`suS#l6wT`J{o zI}s0E{6VZfTf#`Jeh#x{uA_n$AK>$_A&#qD1q%6Lc(YZUww|4dtIi42xX>c_^imJP z?xcg{DRpw^wmr2|v*k{u8T@ap5xg(2YT-ObsF*w|LJxLaVN0LV1IsMBKb;2cIEL4T^oUOQB5sM?r;-=FExpDMz1`~E~WbkGuZM;(RQS}p}I@E0Dv8;`Fl+IZ0-=F}(El-jJ4 zpqark5Hq(JjOceRecXjB6XnSEBM+Iak$Z9XiVL9TC5*u@Ga=x>7c8r&#^Et@V*BSE zoR$%WIWx*&^zsrszmG?bZD$B8Qi`uj|r#FW6I+W zeCOTF`zWM{AC*} zly-zfGAf)iuT1$hE+=QMG-daV{vosdXxW>SF&vc0Y6acS7|Bc zZK*t&G2%s6ygSFC0ENL*CKGF%jqvf0dGND)5KbQah_~*^WmaQ%oEX`E z=p5wE{s1kb(HPxx8&_Wnq)h1rSQ391*BB_%+9NeMS4^Hpn`e?nQ5Qz|P#AaOjDp!~ zqS1L#CiJX5&5F*D2TIiG)qS=wDrP`rUAoZx4`E|~hbgV+ku-B#&Y1#4C&HLS)i}}! z>5JeJ6qk5jGZqK4)Rh(B&c{QW%0X_u*>V<$oM8-~EZ)*EFmf8h|{1+e%| zET&q0#7@;gkZ}rwt7~VFCm9*Ar|<@rOt^yPhH4me!xvk>`O$T&_2|UmUF_#umCQN? zEn;EQh>s_qfs2JTDpcrqQQ}@y{N_|8!f4**(Kl|xWP_Y+X6e)xv8i6 zRVsdbAq1~p1q(Y5GZpk2M3hX2m+O{ebcrIFc+QOkx4eRhuBy1+HVL29DuYbvI5J@( zA2%`D-v%) z4E@4vpH&48i|SyYOP%ac{Rk2r21I{Ui>!1n#*;NS;i!iZl|8nS_1fKt>x`$9KQlOd z(+UH4xcV7yyZBEgN2H!-b~z5)`ScqOThP^SZFf-Q) z6D=>oyR57mf#tYPjq280JrU0<3Z?+(^-$RbFHCtOEK$a z=S=Ilc5T0-2`}9KIB(tHW&H3ehCiUx1s>}!fnT8%H9lsJc}uUs@;E>I8YM?HEAJuC zdl(%Z!r<_#c8ogp9(v!Y(7dajycenlWLt?J9*Ne*8{c~1)4r>q?Qx7Zt7S9WKctOI zA6Sx?@4ZoSK@q#y&x@X%)P)s|^KeV^OWc3=BIvj%vnm35wEWjyY<```zCOAaD$}KC zG`F2LtZ@ciGMoCp?&@n=+~{iIDFE8DlluAk?<^-ms82k!4>d!yCtWm zSpuhWp268uZzvRyg~>3ceNg!LJS6Sxh^+ zGWbOtddp@rT5Ah0;i*CO$3*cZ(x|LfR@=V;Jaxaooaps^yg^7*xkdR8~zeE zuB=1JAb%>q>n8uP4+|G-UxBlXE;TJ1K~=x2;8)iL(w{DYO~7=}e8yW%kFF?d zhJuU*v%Wf zIa5>5wdUs~A?fPrNsG2q#?ff+yOAK=g9$sO;rf zw*HAWoxidaN2fdor9we+WH)z~?6#*~ZeN&h|Bk`I%J0m<71J2!)m)N9_68%Z%7Fix z1`KI;Voz8Ka^JHXtj@wvIMHAP$5n5kuhSHIJNy*bl?hTIXCpX#R-F|jA|NLsPsO~W zVNc{7=0&MCS+Y2RUGzwcuCm$2q&)afs1y2lX&nI|Z9csVSqc*m5!YeCPS zzrgZWJ{C4aVzt0!PVbO_O~XFS`(iO7I-<^BH4Tqcc9S2$N z-(h$AC4S}Pjku3foahW+=I1Fn5VO<=DBdxR+3Dg02DL|7%eB@Z_~;r0=>@Vo_em1- zs0Zx81sHEG@QIgs`DuhW@Tzw!5DLn0a7!&tpth_1W}OuiopM`sUVfL;!U znf72~kP!W1;E3zD-GsKWH>~xGx9s%{6MFkY7Us#ffX=aS*uu4@EKU_*=%5s69p$u1 zOU$WmSU5LN`N*ztY3F^hkH0nMTmY5p6QL#b0$kdp#F|O#(A}L}f;Im*o6uDO>S;&d z&bkUF>xUM7&AnqEQW{Ui)t}%UvwOe`Ddeze2Z1JZL+s=-Rx|NC^F~*c*iSr%PP{}| zV6lQr@sIGc<+R!4;T*{Rmca}zM5sOe5}u7|qeS~To@8uMl`B%!!)wOw0 zCb@wqIefyv4PUr-%M;*sa~9~F?PuS z`0q^`AyX@r^}3(NHt3|YBC5Gidz0J3-jRcGlRofx5xWujYeC7D+cuf)L6xW6-@_$Q zH~9;Zi76>qqnQF-e`DEI&XZW>n@`!*X}xSkt|yV`vSRzEuAm*wVW@b(3IaJY;+DYy zaAxCRg*Oi(;%AbZHS^H@@%iKF#{}~lI}#a8FKV`0nmMiKVZIq6_Fiqfc*AD@ULHunopZb z-Z|{$i)2+XGpEVpTFYs~Xz&e0Gy5=F;Wh-$%VFyro?((sI%v+2r21{bG%fQhn4~^u z4$IBw4VG_(Q%fvp>vkF9SUeTOBe+&_wE~HoJj45xr-t zaZbQFX8BtuBAk@~_dc)Uh_$LD(V4}psvHP>$>7P{hpccbM|!%P&yJ3>Cd#t9(CzcT zSbOuR9K)#XyIC3)4N@9KbD_e0?JX)vsECkE4I+e+AwzS9k|7kykXe~S-Phh_CUd69 zREjcZmg&2`Ki=nE>v`7utoMDt@6Z0K)w=KVJoi41<99p(g>P=CvbS_h9sJqDzkI@K5S^Z7vkUlgo~LsDX!9v4}EzJ4%hF)fs@y% z-FgjfTYQiv)t7)vw>9v!WGv|QNTHUWl6yefrCxC_g*BV@2xC162Fnxq(OHs+2Tpv` zpCtuIm31VdXTz*We4slS*1dgAv!&{vDRl?IbH;JOZ_#!k-g~|HtD7!|+UQWxM{T?w zl1D@G>L4t{l-%o1f?I?MSgkLGv){G&N7fYCqhA5w(5WZ*wtW%Zn|6_{&0kpjIakfg%h{*azlPLz~*{MVMfht%p(Ka@O{e{OpuYqsIbQroS8=B4(K(T2K zY+LWewTIeKi>Wm}Qp$%&ZFLszjG$-YTo}Lc1^tmyUmoA9;m9xMx@gKl94x7NfHE$?G?hhx$)56WyzoCNOoWIuu=UxeysI>0NSLhv`p*R5O;KEY67AMEABRaI%FO&yPAte;oYi_lZF~b#X8>TTKxY zZm)qyzm(W|_+FSb_BSmbHb|_VS0JQMP!X&(botWx_B^)Rdpb999+XOMcSn;6v~kD{ zxbEY?(M6KOy>c{Um_LV)2Rm?FLZNtV%xCfSjoCCLtqZ!m3!_(eG$mDCpo;-bqS$K` z&FTG^9veIoT*v+aOLG&b4aoyl-JjxuPj5*nCWaoI?t)S63#fPVMrvx4k@&(4QzDXK zN1+17d|40C(=UO_;$QH{eJJnj?TdHv$I$&__n}?KA8_rdHeJ5e8881@Bvku#;o%XV zptrgFt(E{LskTXrdG>t3|Ih@k{^kOKC=Eb&6yVf&$jDgi^>ndecyBP4jBhWqAm!8aft#_ z^bqDg*XF!MPT&*i4&g)cX==QKP}y_>u2kE@$}uaz@p^!$x;Yj6yBvqQgl<&U)e$3; zv!Q2#jgXKc?N8b%lWL(EKU3ZSccZV9OQJd-7*_*!PvhA>&k@&6y922{f%vd*B`rEI zUbuH+H}noyz=CZnXnD&+j7OT-U0 z>bPp04h~tQFWf!8UaHFkm%Ye3%4!KPvmRDw?DGelIju zcq)ea8BkuB5_@dCMcqHW5)F;RscCXY8gwX|+86DD$-D>7P6`)4-+w|QFC3w+rn~8L zdM=H#^Ty(gyYzHdC$#IPj?cHc;Y$-;P}nM`-fDZ`a(-8yc{f4)dSMFBJz$8pA4*P` z)Jrh0tqdl_oCkfq!hZ2<8-Zh(U1p>+AZboVY^3pe_9C>s$4X6;>tQyG@%Ayt}LD^7ra zBQJ?MJ5SQF=X>Q2@Ap$M2cYf0QktR_$)SqrFyT-MoIYZJbN!2;X2EpfT}UkWgzpE3 z0|#NV%@<+#+ofVZS_lKP*OA&CTlDy9gw{$C!ql@t^3;lQ(e~#Y*sobcn_q=e)Pf9< z+_&^0v>oraFQVMq!Bn`m13tR!2W2%jVEkHgjk(`~#xCg~3fiogwVRxLF2j%x1F{N-KY(WrVD)Gvpe?h_E?ObqQGjI z`>40C4LWQe3Y&dyfQjA7ip3wA#6NwsIC4i4dCpfutCcEPZZ6Rx8-9upLtDl13kJhF z4>eLcBQ;Omo=O)tzl0sC=DbelA5HoAiAD{{68cogVX%3daJ<9=9n#yw_^IJM|Ca%t zd^S_8%N}*ffj2Tl=8>>QOY}mLrtx8;lnZtMl$%& z8X0uqg$WOHaS)C++z`u7z7TJ%TT8N-9Z+v;g;OIgp5~X=Y?<- z7m(SvzhE4?kgoReq(cSAV7BBYH#EHsqyFrK_%T1hz56b@;$$SHQ5EUR_Mfoj+8v6v z-zD65zLoa7b|BZPdo;623A>g&6uQI>7fT%d;h#^M{Ql;RFr(uQa@eyRzC`)aKm%*+ z`_PCM*bHZLNmDynFS(msGlYS+O|X`np{%VPj!iX{B}-cL+~aAqDW?P1H57oyYi$e^ zCUK>kM6`K-3$D48L6u5-+*)uz7{AXI4ruv+XTN>IhH*OdyksP8|8^NPzUkuEpHA5E zSbunz{+5PbxeiVCI;eAXHlzpN5v8mGP1?~)4;LHYwi}ihNS-`br41(idIx_R9NDf` zUAQ-69u1qg4$Q}EP{fq4g6H#@ps%6AeCZI?iH zD^Qi8HZoc#O&&D)?)UhYpN zV)`yhlafCUyYG>ar4`s@w#U5pwZe}DY8-mdm5WSQL-%&2bj(#E{0$w96M9S+m$XC) zUM0E^9=w;nNoC-7BW*#iYYim)3q#qS9aJCc_!`q;7 znX);Sh=9 zJRWTC7fC4{TQ>3^Aeh85?aki_ePYi-lxr#sA25u2u2bYrMZ4(fBRkOjrHF0Ub@=^J zdz_kkP?+}hg{Y{T2E$aPpQFzT4ui%(+ng=(yDl;PGQX+u0~`Yzl#U9i{8{ce`#$xW zaa$JIR0FZAyVCiEjY7M_Pw3UT264USJ*rw?PmOcOL(Bqc_oZ?XMsIu$x?aBA{B9kD zZ~sUa_Ad}uu2E#QjK_kmX*heQyWrHJ7W{FZJ{*7a1NOZ<*w0!04b09ohlpDPc(IiV z);%&7&y6}I?AzA{_xyhdy?e9@Weo*_+V?vG-I8>mylYTA=3V)G?>)k;!I{wA^aUNg zwTu2X%z>qN73>X)!0v@9s&4Y)!@auk;4}SkM!X?gpIJl6bycux&r>1(UKG>B7Y4P~NA%PhUHnOU?64ywzb+77i~KXC=sEvSYM z(roJymI?jLc9B=OGY-0=jh)AC6Mc;OVwS>BXiD#jv$qe29jS8!JL61JNbL!a{w$#Z zF1}DW(3r<)yrNpEfGcg!Xvlmvo(CRO#a(KLsL>-t(BHR5-s-C(ooDZab}fCV%cget zy~Y7GgJYoJWDOKam4Jt1tSM(gghbOalE5uuzd6_`TOA#;S#h_p_?aHe5-;T&1c06CB1QTVHVt*+eUG+ z-ZZnGrDVr3(X-Hx(n2r8o=)nxZKreJh=ipO>$D6Kmka~%$^9U^IKNkz6}=a z-wAbM1D&e-W_cf23=9cpacF?I7FJo^F&ZN zu87^+Tkt(a>D~V;AD$+yq|EaMd}{nj`kB!T0lP+EC0)pA z2WLJJmCUl^6Zb!YJ=yb%NGaX4_@;1myOjLC~VDQnzrx)Y|# zmxA1Rz*a?^e$)^@?`{^xgsg$AZ=+~UPi=gfv|Y}y@JLCZ37Ft&otY(1Oobx#`A^dbj0E; z8I7qT;nxju!_VzPqv8o+v-&z%vAP(_Uq6LnN&9t_w8-Hev*}4!A4vaNAkmd{fg5+y z_Or|6&mxA%mVE1mAIi_setkK0#8P^6?J?!)C(-6UA%OCir$&0m!OK3E|8#}VbNX}iqRpgmO&g6S9v7BP*X1)=YXrvvecZgE zGgZyg=INJK!r>pADW}euCOaj=gNRXV!z-!CERMoT+q1{#F#2-16O@`(3K#UtgetFh z&>?0o=$)79=-$nyprzm7#Iz$6ZyO~O4D#vFrVp^OQmRS)W6XiM^$>g7LU>YLKvTOv zfU^p3$US5UdG|X7jlZA3wgicQvS=oK|0fZQA`Zht7cIDNxRdg3=XZFTkZ*4iO!g;(<+)9w=Kw8iC`qQ=lr-=ZUeIyNNwh$3I*gq!@ccLJFz5A2 zBJB}W=d~GL+8WWx%Z9x1y5#Epdz{|JodT7!85CJClq%vJ`9^3YWFJ3F-DY2g&EI>G zo>Z4y_DPx5?~Ne;)#hUPJYx=0z6P_M+_8iAQ+T@4nO3dRr^_t>Cki&w%n>PAvo@T_ zuMj4G9S#GchtQ*a2SL`!siLy^AZZoW)0##F`h5E)?E34$Li^2v_9+#t^bv$PT^50T zw!pTxM&P7?O^{eB(UP)vQ?Gxi;CwR|_O|SS*%A%T;I1JqyF8EPpO}GLXC{lET%71v z^C7s^c^9eY8Izmda~h$}bh%HJXmI5k*gW|xlWkDsyH*#-=gABdR4xj~W}GK(^CNqQ ztK?i znlG=8+asw@YIq?`F3YwSI9kh&&3Y?C)x!PsO`_3f)JyFLAOAp7|2OjNxV%rTSmk*SPMobJd15Dg>RL)acX;rJ*|zev(z_|>-KtS&0|KA#NA@ZK#*LXYp2i)i@lEKDrGj z3cc{x>owFT(2b4Unqha1J>TBA0q)&gDQk=DOon}vXq=ZKM?X_w4bT44beIQq8i0>l zoS`i{fToA-B-KfteC@9lu9IqbLzVNyg$;-3)?=cOuJ=W)YbT%}LYrgk)v?##qmZ~! z7o#Nor)+sMz3tac$XW74NZn$-h$;dSye;8NC~J1yKQOplA?q0h$Co2ROD zev}hbd-cPg6;fLC*;Lc!jb;i}M?ilJQ{e>9dJy}AL->AmTXO9Om*`arz7tpS{KcF@g@mcsVIN9anvo0!+$O=vgi znIN0Ck`InuNJ+ZkaB51Vyyo9>;h2{hf9tpzY^MwW#|NEp%-skGzZpvjJ{w@kVntqA zvPz;m8>9Wd8oH`~RA{m6&VMboK<$Ee!s^sBbVebJMj2MZ9_hZG`&FAC#iPIRS2GEu<2ANSGEnf6%J z>Aa{lZ;7B3C$)Q=Q=r(I3|P8)UB6+IdJ9J9t=Z5C-w-Z&ahlh!U120smivump8xlT9yGtY?%_jrjN zUX;m>hK$1GzGh;*L>pDKE2B%(O+>9jYov70RXWow&B)81QE+8}umB_A+R^nwh*%B^ zOY10lo(^c8?Mxj@kAPpyZsE(zhxAX)3@UyX5Dq>ES>pOwC+pgds_tu!B^g`KC*g?EA+PkZ89-C|Q*tj6b=e;y~6j;heJpX1%>D7~L_F z=wH#2F2c}U-%RPZ_QL+>JA|=4Eco^zOV0N;CQC`5J>YIFj?QSuy>=&4z&THT;N{Gl zQ>MvQrhkN-v`Z9|<4dL!%pfYvksX&$6AZ82kecIWkZYne(<-G3PXk}U-s(JRJuIc+ ze{2w5oj*t0y&j0CKK8&(gy>-rviG^K zs83BE;>eZ$U*U8OX3lKo89UT(p;*-{$lUkBGkP;P<`$Ce`>sFQq&mmzn`-BuepQ&oU!=-6k_4RndOC*MIbkdJSCf z^`Cl1Ev%Bgf&!n)yGk3YL0->=iM@Zw7L1n)wAWT-5!o<2L|$) zPD{|wc_}abV}*{Q2etmbCmS-iR=Nd~`NgH-e9X}X%qCf2FK7^K)vLkvS1)?4qyvjv zg4tqj6WM>bNb3?F32jf6IJ(UjM+#|dtv6EYR#S}k$czg~Dt3T85Uk1EoiYCl@xe8AzeU(?;_u?Og z9;|js9TSf|6U*|9aQv~G6^a(pYa^r*7VCx3nq?)hy`>2IZu$mmcDu^bg45}@jWd<+ znhu4|*7Dme*I;MPOuq4a6h_tS;nNT4*eOzhZYa5-Qgl8U>dwHrMq{2is+!&}j}edH zBO0c>R~-Apm)riN!HIA=l{}h`C(eHtO8*534;q!psZ%R|nC<*#sMhfAPbS-wS2SlVkAS*UR+o9pK+j zPU2>{0RHk*BL6%^`AQPk_W4=JetBKgPgg|ilUM19YYlx5Sj0L~2hvb&ZMyX}33e8C z#(zt++349UT3WS?eh%skHzY@DnZ6BAFB*!yVoinLk}Gub%yF1y@<=dSp@t7khT+V8 zqp-hLJj>5(@rpAKU`w*JeVr@q@qZ?h=gv$H^PDA&Ec;B`SAKyVKIxQTtxxBEuaF-Z zyN{gxf6|C>TP&5jF!s-E&%Jd5aBFQWYnY|*$h!q3{8pA}pX-E!2iI1FY5al^$;s@I zrNo{yR^Z%&b+YTZ6Ulv*0({FDh&~A;M3pzgdC$5|_{ls5y*BJ5U6c9vIAjUjI_8a+ zYytE(mxG3h5vu(e!Kl%lPoE5A?+-FePdi8U9X;^D@t!!4>S%<-YMjw!JD3&fATRCD zTfe@B+7_wHqHHovX^G(nZhN3W>eQ6~EE5VZUz9snoDmJT$pzzseK=#K9$jC4k$SG4 zFIp!k`i)#*MEoOV08!*n6e4g(;rPyYy9X zy{rXN4qO4V9un7KjtX9RpaxQn9M6!Z)8*y^IMe9>CG7D>>k|hnoUb~A(!2-^A7=}b zUgg8V+c{!$LOZgO_-6+$6btEFw}a8kC#3MLJE@j49bGe@2N>I7UAi`_g_>dZ$82%V zK!HDPQswD0V;Q%lem{X`CbR7Rvt;O?p4Ob7Z|C=N>;Sc8N&ke|x9$*j4xB zN;cQPZ{`>*osx+kF8HECz9qL0o5S84=fKs=Hr#gE1m^YHBfa#}v0!o-s+3!?YQ!8m zkRb8omB(XYaS!|+iQN5)6*^sM5W*J+a@59yqQl=zalK~>8D8BE7rdnJkn=zeaJw#? zoHLJ-7pw7>;BZ=dGnm$1oQ4|LW4LL%3m^KcjkS?s{L?m)ozE)Eur3(h?^Q>~wkFZ1 zeGj~IaWAfP(8O)NYvdO-Y{l}RR2a47CU`}Jqr%i7{Nj8^&Km57r&a`G@3w4;gfW~p zLQccaj6j`6bG&hKJ!|@`;FaBcrNZ`8^yhIYEgRv+KG`mWJ-eVd*hE|qJ(s%POhlI% z-)U>60?yiBNTUivFnyv9&b=3ap9h%6TY`NQ2?(3t2 zmUq-}p3*5QZa0gYo!dzJzL88g@|1@BoWq@W4d-uzhe?Wp4esbWjoWul;XjA`xYIm) zeABv?`hA>^|E8J=-mjPQjL$czZ}&V1{(OM^->2b%y$M`*VFOK8NTqj^2gB;DN%*1b z1g`J8kzPr!t@5UiWN2={^{un%SIKg|iS2R3(~j(Ji8$=@6^ivM67E@N!D7{Jf>XD> z5H_SnTzA(W)wfOpm%lpbb=^YHSS%%ELN>5vUvCVLX{ICJi>Uv)I@yM4@f5adBvP*+ znNM#=ycMB=_Ak!}YS#j&Nnr{8de|9FZQ4_?u|3Rv@D%*gyWo{m0_Ptd!?z0EFf?@# z2E^D1`_*@dP4U*;cy25!9$Lsz_Y=8~i!FMNo{6hh{SY%P@6)}=0{Yte8iuYJ#gKae zmftYPO0VJkWs5ovypb)Mb=(8x$J?=5qXsHFEyT9EuP|hw4!7*FV2A6ze90<`pG&Vy z-^Pw?+$j{r@kwlRyf=1S(w|GKhTtT<2KkIV-mKT{nwTndB~CH*<})XHW3{gm7JrlR{)59%x18v^`XrpCl!)TuYC$VB z3*G-Y;g=SvFEyi{Y6s=v)o!O?>zP^N=#w_I=js#KW8;Ng#Uh%2XrJIQ@R=+&WhmD> z^ry2e>tOqkQ&iEq4CGzYxV7{$X;nLmUoy%eJa;Yqs&v7+8OfM-!kLb%24RhV8@(LX z7y2FA2^Rhf(7t3dO^)cmOG9pm*2}I@lH|tG{A7l{QeWg|o2lrs(pKVo@08MLvAm*w z4QxL%i9c%PfJRFYsLYsvjlE0Y_e({*BDrkx7yqMo0X=YC=NK5%FHzpp&Xs><4rhbX zMv3J%my0GyjO+g0FtutVPWU{E+D_{Ww}1Z6i`=byzUvk~X z8`7Bwdk)QO7AM>`woewV|s^@bfbgs;RE@k8;Kbi3D{ohpRJ zYGZkzuBf%tk2Nkdz=KdrSU50|PTu(@%zH4Em)30%U#WePFIr&0cX|i&?^EO9xPkQh zDvO}@lb2A?t6A9g&xKcy&_ySUj(l*29@lvu6{1q@xqOx*pR##PIrCW@=i!MlhB@e@ z5R8U9RM31%Ft@(mhe->aaQD;`ux*+TR~)q90sjWzqTY#u5E_CS(k4Wxd<{dIqOkKI z57_p`68Eo5hNq8D2)UMBF)=xm#nsDk+K(OL>fe4aWzl%_I~2u9J67S=mdj$jv=Lfi zZ^`4A7QhNMS19_^OtR46ZzeGNnNEHq5JhA*n2<_d?{?Eh|Ect-qaEG?`go)%*FWh zjEnBM#uwkl^1VPkG@L7-hr2P^BxP~3>jK=8y#iKlRHT(1?#MdT9Tsni z6Vc8z7DrtR;uW){Zu7CZp!m}hb*28*x;<9lIa@B=dZZ#;sDC4zli2ucUXS8Mf23Zu zWyATeSpeHPA%Acf0v&r9@u&z}o*QDq%N77T77l89=@8mvGWe<6h0rkGEUI~dnqCEU^@i#?N7^2UlSkZ4uMZc zBBTzSXRtJJ8lFtcCUeX2m|o+Ag;R!#cX!UgS3!E1B5l%MEpEr!uo=YS0FIbbSA$vY~9=eI=Z(A3zhj7s25{ zrU;A9f<@GFGFsdbcdl!Ju}^xlOYwT(UPV+>XoD4*XGrtLI@+xLSNyg{6NX)LK(hnD zUwoINe|L$IHmEzh?O)8B&UoU9+1k9xs}gpm9H(QeM)NRP9bGq1#~{U}Xd?_@<%~5z zGKnYmxSGO@&Qgk`hG*$zVVr6gEZX^q+{XLy-hFnsjlb_Y z3X%P7LDbCPtz~m@ja`4iX`mS|9-c4WbBM(~k^OLR8DQOlL_S{G74r}85}a2I#*VkM zsBK~xHrDk5^{TB@R0brz_F*f#k8momOGVgzd%j{C%v2#ZF$T37(lGY%TAbF|g9lAm!{ITTW#QXqVEvU9U=p?zU#Fzw z1&vp5DCGq_8WM@ibCWSKa52~yzM}Cbl3-|b7-rW4Z$92aiBSr?ea9jWySRa#-#<;B zWsbb}$pgA;G8Ipc3F8G9?P;UrKIj^8osK=ZBAS2Ha0fFqWXs3AhaUgZQ5riKnJ7Ua?5NbHq6Pi~!qwBs^ zTsW+8va`f=4K3(datqS*lK4}6IDd9i;F@tAaY9E6>`Zm=x@`({ zuYU_W`uF6(4ikm4{GU+KIsnuk8E{6U8ZZ3WgghGXJPmY?wCM^;nugm{qd-*u7BplVu`=!LP(&9tZ`j|>7bgjR?ZDr=jlAvvPF zP^_RgO6O=$%Q;e6=)qRsuhM~PyNdFDkKyVp6LF@$2QQoNk4t(w%}E^M4GkE1G^qtj&DXT#u7zS-WPI+K2F<1rFmZka|IJ& z(f|*7d;S-dmh~1>oED)x%7u;PfmqP_D(!n8&zpVHc9q-xl#z&r_ z%I1HRDk*EB7|6-jA~^10d#oAc4(;swp~h`<%-UK`M>0J4i%$~_`{uyo{BDcJz85L# z$6)B40xy@yraiJc!)+iX{iE_24DOb5XM-2E)z; zvD%$s(u_EmmuD{Ho_2-e+nlfT>TeI!-=)sYpZ-XEw?w|x?JK-nVTKE(PDF#QMerd% zfWxfaqz?5(Q2Eh_uk2Q5ZO`LqYyV=z|SH^9)V2B=@P7EZ6YK&Nl1@aADR=!wK? zKWd>S_`FEOpaq_|JhmNIYP<2pzhl|VEtRc%d87B%E|_4Yir@Fe;g}5r`S(^&iP~`$ zPQ9ss+Mpbgz9Lw6sV65&o7(c_lHyn}kgaajgDS2hTg~Ut*DDzt_fF$2s-rLhPm9C+ zkxg!Imp^wJ%kH}~`0kTrRDKc4Q?uT}m?*?;n$FO}Rh4Z6tSO++RkDdhG&Rb?X>|)& zQ}E~6i7#N&CuekeV8n~B2XU;K0JDZL*+@yp*8x%woM_0E>Jb>Ux(`_PnuZ6rIn!pz zahsK+gT8lMu+L8~DdBcbG&s~OcTq^ge+t@|95SAjYkO1DU1dHo>myy-r^IK|k|=2V zAu&y77pppqBja~N*|xtb*7wcAe%r2tp_>=P`<){DWnS#qPLnsk?S)Y*g4uNV3Nkj6 z&OnJk(7m7@;?(xYeLF}z=-yTsbM_vsN|ny6AxY%_DU=&sC-6yC2eHC?vc%*%D*pZX zK~&vjAk3bo35u#)=y*t;VC2*jQ?{(9!cCv#?&GuQPG&mBUvr1lflI01Y%gwKdl9I_ z7B2jj~&3+Y9;QGMG&UXoQR4BPD` z?ml#$a(4cOWQldZVyYVlWjE2mv_2@GvP8CNzAcYg5YCQ&Ls_f!i?F1n5IR(N!pD)@ z=<@+(E+47@qu$zK@nK_rq)`r=r{z;sQapv8+bLGxl%d{-9C$WLoo#X)$UJhGq`3HV zWDjfJa<>!q$Qz6%>X~#(+Y#T3v&iz_R8;Bp3cd{AEr!X`A@4&+JUyig3Cew?gyu53 zzeWis952Mw-hQZjGzZ_F?um24QgNPfw9r}YlQ6EA5%%9Y1lPKxu=55j{`6s&5RLip zt1=pUFC9;R_79c|gF1@^>sFK1r%`>r&dFnF4(!#`o@=&q6_lviPQI9`-ZafDUE-Wo;9b*~sx5l-`<( z=IbsAw!Kb?Z}(|Z_}lyRE#{3dR{slix;zA@>q($G?UaGKm8)%faW^N(^3-K_bMfGg&5XdFYy(%JFrzr27Kw|fxX(Qg)VM> zc>0f8WW zdoP>=PDk*dyl4*HdTFF?l~t z_nSuMbvmTK*+ZxhD``r}OkRH>kF>^ zQ4Llqjbh)W60yU75c`?+;0|+oh%0*fajs)GR)4L*de3`szp+1{z-KNF5uQSZ_GsRh z8-eFjRzu;Xcp5oqAB~)tOY{4!6P3;D1jX*b*#B=lzjI3G_D@Yn*y#+jP8!l6^K4pjV|v^)F7DPYrOEg1SI1(kM%LS99aVCg;` z6Ab3Er*BVcaGr_>UOs}iN2bu-G!0mFUKigljiVIFLGgX13xC=<8smhH{HL%pwKO+U zPXDD8R7p^9X#zhlG6w&1+u?Fm2kt5L2h40WgCqacxkPt5shTA)NJJHnzB2ZeP2`Jp zW~}Zw7yHQCqnU3HzBphW4On{&JXw{sjrwEVr|vxZ*%L8xkc;@E+yK{~dL>kUsuJf% zS;2^!Z{oM)RWggtE#ROt7b8A+Vak(dFnY##lo<|XU3Cxq8x;yoIgw~GQ6`3dL1zaJ#oLFZVmY2Oh&zF%6O?w`kX4ngOU4Y zcp%ZywuX9gQi&rb)py6_^;;qRr9TREQd|_E%S$gSVaUry*;XgVzoB=loM8N<_2BV*wCq!WF)sR=P04ysU_i{FetM?S zpzPu%X-3o8yr&5y9CTzGY@&V9YV=!T^+hj5*H0FFYfn8q zbc)7tUBl>jv;p?L?83#P!s*}CyA+z-1}`hx(|1>G`S8`caC&+mNjPBM|MelMEV9LK ziQ!n+C5TOHwl;%&dBKtjL7cPU@XWojM#~Ot!9TCpCT!4_f%dH(gt;^2;=+Cb zT(C(+2)ysj3T|D*SIIR{(IXi~PR=0z_|p}CRPKtQO;eG_Oy_Zz+L8N#@$iniu~w}q zPycxY_HI}TgJL8n`g})<>N*v(YZJd6m(EqPDp;0c!jX2m{3pd2 zO&=$seu*z@(h_cdAA&o&Sab8!6h5-d0q+h|6z2(wc&3+>0G3ja17kZ&ck^`0a{flE zGQ+sX&K2WsbGFN7elYv2%Y@e4f68tUAudsm?t(<%7LjNFz7k>PP`e|Rq}2CldGPu`0TR>>AQt9`hifir1rZI6#<`}2|`rugMU8b)oLEuHlM z*WCs5(!4C3R}05W3QM{2MlW2s*HLt;x(}YJ|6r;8e5B7`$*1>bTpSgLsin!-y|)cV zI+*iCKN-GlQQ~oR&S*Y6fV$sFV+e4YJ_AkWZ)U`BZ^*oHBJRWxE1G(NB$}Ua?*kbYk z#?8zJC#4#=UVcTqs=1PSc3i_H5{++{axPs9JudiUcj9Z7j`H2nZ)sn=F8=E94qiyQ ze{--I_gdOYf*78ah&;Wb4wv1QYG z@yNAw(O&rkJZC8U1DiVMLBF$*)9J*VhTQc)fpo`t^&uEFF@(8j85*| zf|F*fL3z$Ifc?^rU;tvsiWjV|Q;1qBWoW13gPP{*9RB13*T0sd`h;<;VK;}1-ELCn zsR}gxbtmp>nIPSBN;p)~+BQCy5;SvzDRTL4GWGQ1jRuDy^Rp#yF<6Ldi@VV;t`aw; znBpG&4|Hjg6JLF!h7Qwu^NlB!)a_Wdyf!3WxDcF$ZxUysTS5x<7bc^6AaMV0zGB_} z61uR`6CXAL6H-?zwypKVcJ8B>fhfZ);T_gu%gqq8lvSVh~X@Z5c+rJfw zTOu4dX3`A4JoS(G&9SRc-mr-;mE4ym(Tn1lfk_y4t1AwF{*tQR#NeAvbEu@ZM6Xh8 zrLnsJ&)z>qG9M{rY~}}UT_;P~lI!GlaRt_@&fqf>;<4eyD|(ba0Zoc3ARm_Ci{Ko| z)p>}mo0m}QidAIo`(9|f6Nc_CQWD#92bgcq!nQY)*nX!HCY9n8R`YHu$7?1?!}Jq>saA@r;?8C`lS%^mjCm>?woI_pNcB ziV|O(X@bAvc2T`F*V=4wn+@QU*y6XoqOFsiTn62R3g*EW^b07|E?8EI|&Sc%wQhKDv z3gOR!O}txq8b*CDK<5jyF>n3=NZu`q=ga0}^!_lItLn?I^&R<4a0BEfIl#!86_{H% z7xMQf^W2+-SoQu3%)I%Y#BR5#cKTDO)42lwDqT^KNHvpp{-ax2bD5o``C-9Ss!I36 zVxQB(=(V2&8-p(Bzci2Xzk1-SkVrg}eqI>8^nh$!O%cA{vQ~In=7G&-hB&&ogk!6c z@kj7M$gaK&H;g9o@^!=bo#a}+6D8-bOJXTyqoR;dy%{=%=HY~J8DCvnPrr75mR#9+ zxGu&Gv>XlT`N=p|1RqYzw@2r3saSGj3)c_N5>#3f`<4}DNL_`ig^G_ZT%9ZMo3bSQ zqa1+AdWO7k>L?tr;{{zjIf=LWdgJl>|Cj!jf@U|n^Mm!~;+YO-pk{C`e7o+&!B~lTCkp82Ze^Hy_a;p$4&|I0Q;u`25J)Ot>jlojn6{u;N zU7`9F4Z?Vvq4@ar1f1_Xk$+8;QgO{M`FB|sj#j$_N(q*rGI$2xbUnudp$J!0Eu~Xt zjvP`O$saTVG4$9RF1WZD9~|z+As_Bj>4Qw{bLJ3ysmo<$w;1}m#2V}l3kd&);q(QE z>DKjV9Qbb|4e{=exBkAQoJV^2W~VwIn)3_(O?oL_k$glx()^R6wi~nBSyIikXHcAO zMQNL2XpFKc&o2TtHE=`Sdw)P_=nC%E5+Z4KnFw3$aK2|erj3Z@#Bmxz?x|#s?tT?k z?(U8QuMMNa+n>?W^Pj=Ap$K}I55zNbc0s|F@8U<7i)8Jf!qZP`!rIJ1Y;ZJ%eJ**T zU5h7oPj%(xx>+vZ_{&ek8f=t)d$#B=0xn?kt1V?cLXg`BjB@AA$#V2T>Kk6x z0VOi?0_Q8&lw%fN-$ugp4w4JW^GLC=4`p2KIZ?!FFnl(JOnteUJUM@fCWo&E@iA^6 zZ=Oi(wR6as>^$lwf$Y`yHq`%*Iq_&Y$y!W1OSDhr(fz-Tsc<^5y8;Fhx3zyW3AL&U(C6I6-eQ6|icXlks-7yb8nOPDO2gZDxfkgbo*$+u@?cwlHZy}C`C ztPpjfj+&yZ%EQ@Y<@$1nuq=Y*E-GZo)m}&~-A+dh>`1fIKAiV@GZoWyWz_eG5foTJ z^)2tf@ijW+pMNfcySLNWlQK;Is{k54cN%ffOJRE)kCM*Kcj4jby<}F*W?F7F#dUL8MjkG;OWj;P*Z`iXibB;d#yy-A_9!tm<)|r zoke=XZu2Im&Y^nWf3q(#!-?3hJGfPTF;yBL0_mgnboz&47eNay7 zA6)9sVYUZvqjxNfXmH>XqNn6br{~9z$LYhE@oOQqcMT?^WqZg+lXRT&ScZ6yIk4(B zT~zH7Ln8xMlGh$HxN%w#713zsTuP%j%-z#uOOBIz%YUqS*IeS%vzd162%&!R(PVy- zC6Vzt#qM7mLY7i>Ug@Dc>rD&R(KeepJj+o~boiHH(S?a*hqERrogzk_pM47s(t-3% zm>wB_Jb_f@>k$1Gd(yn36sufEFeiT(2@}_$HFt-3Br=1pcjsEU9yVmiOoPnWVof~k zEO`3oeuDo;j{KUqfWDj(jW1Rlrh`syqYf7b}zJSv@4f1Qr8&G`yjk&(}C4cJ`J-RkKn#NAdrqkt;snN<6#9GaWE@{M zOChJkZHettUw&44B2n5cM^D>x4vJfgX~dupYx9`%gD#&+8eBp#cY7J<$5N+G(>^g9 zAM0}yG95B`iZ5B2^FER7T8;;8ETx%BikGcsZGA~H0#g?wGF1dsR6qPv5osK0U-yDxkOm9^c5 zo;tBC^KBFLw_c0`KMsPEVg}^TBJ{!(A*yEB4{syqQNc||Vb)av>hs2o%f(j^^N?^n z#pCj`Wed4;@^!fMGLKwPnL#JR26}9#4xKnVn&h+UoD*AtKGQHHE$+T_9e0+=b6G^r zeUl@ab{b$`oQg&(?4b8xD!HC1LE96Lu~MF1q#|w&wU{@F+>|M%lT412Yd7MFGt4L7 z&h?>??qYiX!W8PH&SiNkCXmCCRwN`;itbyrg7iHf=17sgJYDsFkR&ETgbwbYA8o#2 zO|>;)S$lFb{4(11MANsG7l?!Iahlp>Px+73(CDEam8^;(`SvTxI-V$9X68q({Eecg z^YWPEcdGERq#8ZYp+f9N0!TsCA!6yx-J2OLAnPJi7 zN%X9v6IpCx0zTc>n34qLg50!3(Ke95{6*^%L8Q24LRa|_b4ff z5hh0eV^>4+xR9jVe`65yAEprh^EBqaGvoOWFKx8yza}wDBs~<}{=1Wy|Mc==l7dVB z@Aiu1Z(qs(s79GNJz&G;wL3QiZ(Xx}?ash87Sn?^Y~C5T{r`Oy^FO}PMyLO`Dw4(0 zznRtY3rSSFCG=~XGy8rhW5-<&bco@w&S%`Q@6;>I@%xS;i4)f?p< zNrra~s>F6cjNXjUBDuK`Rd_XUMwAs65oxf9Lgc}tV+ol#KcEl-N~)Z#m^B6%8w ztok#Hz3rO|w*pqcHu+hsbks}eHcrCZN$a?vmk@oYRERm;pKf^{;k2T}HK zj4gv$oN^hxo4=w|{zv>*>I08X_k!%=MQlXA5fMLO1D}3B#ncZINKXDu^gRCt*Z189 ztE-Xt;*vPo_fCoqsYc=Bg$(1fCRT*w7UL2CZPAGV(35POZ?C=_Xe zYy3D!OUZVi6Y_YcXUov!#5mZ!HG}uOCm9cFDzfi`mD$cvcSv0Q9uHm8p!PS`q4EAM zuFPae%Uq;U{R+245!3=d4hJyoKAo&=@+T^-oA_DPIn{bwX5dSuQ4U2J1$NY)xl|-f zJae|9N!nz19#X(OHBlvACTYxao9Q$|^b3luRfn>b7Sx|x%IMu~h9ff@agIVZj_-}d zS@YMy+`V7%`5R+0wx}CI+_-{33lKBkEjE$p?M6i-T+Rc31D??KpCW{W4`I*}1U_r(I5m4Vp9fWT_%vip&DZP~?RypH4oKJMb}c z9Xs(UhlP7?MP~O1kx8+VWXWG+l9PE6>qJDc&PI>B1cxFM5ePNWNBC(IN_j?kw;i+7F7v7Q@ zB?PH9C9tEk30BrD#;njdkg?(dwL-RJkF*jYCQte9J2umXB|>DHNhs?hxP_@Uvw%_w zSz`7spD%KFIn(8#MP0S6=EkUU$2=G8oh{ULX6q{gYyPbG5bxu^>E`izIBFafgE zEgz%&PH|u2C1`VhDayq+v9-ywh(X*+_UgM~P<{cYV349dD0pxO5Z1^v&!dv;2|>vR?}74-~$)X zv?2+IYkU}0Fu)&k&SUp2C1&l(lMt@)3;P7s;Qq{Uw5zNU+7z>3|Fa+PHuW{0DAFLt z(jnyTQ||wxCQQFiZo$ddB3Y04a&XE`g=SGs@XHloV&AIcOAh;({C*Upmo5TUQJ5;W zuYfeZBPoA%ic$J*N%ww!%sb~XALed-#I7+|jPK7mU|QlmRDE{}VM8nK`x?duThzb~ zVMC^Wv=jdRIf&<1^+J-(N_OFE1(H(cLS!DwQr;0I61-_0PHS0A)48%$M{+MNd-Q;v zqHq?s-ZX=_@~`M?-Hs-g-+~&4ZOs3+1Om5RVN_0Q(*)i!T=QOoD4(QoF^7}5zPpE^ z>$*Uj%8(zbPoZIgGF|rVByQf6$mx<|nJS%O)~a?3-cqf{Pg^5!Z;&`RMvRB2Rl&Sn zPCR(#Fa#m97?|lS#qJz7Ar5kHaCiD4`2DYtDO-HZcDz52WGk!Un8imtw6Fl1@`dT+ z+<)-u+;t4e{mN{E&K~BW|Q5&Ca{9+38tawJBLJ@K&FUE)1G@e#5d6r z8osU~J03{Ti{9xmcviEm>qxx(#}d`l|ow2<~}+D&H%Y0(6KQ8Kmi0E+J0%p3txPB+C}>cjIe z>ZBSpJu1YJq*lmS(8Hk`?7?brJgcWs4MGh$d_Qe%FeugGkVpCu-DHT@zRx6~M({_DAB0|iVG5=-;=^N^P+_b|l6qD#4@C;0j>AuzUUKIos=eTJ zVHzfcS3;tTB%0}-!1m2I(agpGM$CH9ctIE7Qekr4bvmAKQX_&LlZZpX8ZchF5svNs zh=N6npsU~(CS*MZ5t&Z-@nt&I5qrV>-CP1D1zZ`eW|Tj}D-s7JMOcZxON@>}GxJ#b zJII)DVR&~Zs#x^}%{LkoweAP(jtLw}LiRp8Jm(!-qdk>ui_&BAL}%kvz9(v|@?@g| zMal9hYQ(-~KZ@$CU?N}qVnTivGHOSsl2zyJsWp7VzOOeyWL7bHg>|tv2Nuz(lTS1H zwdc|I!clPfVU2dzUC{Q%b1vw97yhjU8uZAUo=Avh7Z4@#`Oart@za%+dL=+Q`lr%e zg{|Oxcs#j0LyN;N$&kg|66D<}QBrKCOV=KH2&>Pi5q&9XvKVgh*DPH_hQ|k^Mc{aR z_*xV@cl^aQGK=6#n>YpC zi)Sa;*HKj6io0FpL@uzJczS7jatIWT>_p0wb+3I4ke~wAWaY zUHimIoZ4diGrb+|hQ4N`zjI5B?in;jaV|(Z>C&hD*V)QgW4hqRCRE@)bB+rI=={PC z-1z-I6Sl#G>fZdtep>Ps%eF4Z0;Q$I!DA75z#)xGCwXGrAr<;SxRb9$^`;j&zX2e^-7nx|N)BxIhzCHU`4k*|F8Dg>J%=IXCd{(Q?mWIa@AT8Uw#anhj(GQLLR=*{Q@@kJ}_U5$J4x4 zL*B8hr%bN72-=*gW$c$81m{VoA(unXJNeY}9q$cda{hLxFCXDw=e~n3dMJ?_cpRao z88-|1p|Gh5zV{L*AAO_2QTPU&_#;7%pRVPK=ZUsYH=V=`JuMQjCY~XQ-V7NqhmFDs ztka)NMs0#FX`L$UxpjI=RP zhr{m10uH_Uh`g!ouz+ub-WuAFX#WlRc`5iXK#ZokSE9w+EKqo|nW5ZLa_x^e*lMA*ZD~8+j>yz38%53`Qp?f@s4@_`B!~UqiPaeRsdb0RL&k zHRuUI>Ig)}ETv)af>nvFW=owNsZqo{thzXW8|U<6vG)iHQVX*4;1rPG`k9sgGiFmi zLmN}A`q^i1H(IY*p+PJaMG5a=HrNgiz@+)ph;N7- z{V1B$Hm!$W>nD*e`4rw6^(wTQx(U3wAiI7@H+v)k!Ca#W_Na14@_jYzk|;GgqfD7@ z^5OJ+`*zUEW#?J5sxg!~Ey~@&+*x0HKKmxt9=-48@WT?m@N{EV1J`dLj#F=9j)gP1 z_S>7x59N+SLgR5|yfzxujHgb`;#?6n6F$y0sJ^_j5o9m^K>B)!f4gNFE}Er4;3)iP(e@+-E!3cZk z#|Lz(T*SKl76sMAw!~!IDb{ZDYfRl;j=u|vpgT#PddJ*>8E+5r$LeH=t*Zd?hMTaw zIG4lT|7E>`jiGn44~V!4)1A>jAhbb4k}U$4u$RJ z`wAZa&c`6`+3-w8n0nOgg9D#$Lv*4LRW@mWfzOhJEkBHzi8DyHOac}wE+IahZOoLo z2aJ2!BiQTz7M9k_(Q$95)00<<;m@u+?82X&xbH{|c7|A@BwAzp-)l^d*aSN3oe8f0 zK8d};;k<)f&FEKG0a`w8Gx$2B^ZWy6LE@VRc6XaKfB9M-e3;K+xjPHsyqzAKQ2!c^ z?CAkj9w({Zu>vQ%3$f|RU9d#)4R`mc;KbJ9D3dHqENc#9xrQKFQRxV8nmK)3$r)7f znMC=2&f%Iygs(R@vdJg;tnUna*d6YP>wUVRtN$rn^c9C^u{}7WB9i~AQy78<5o^tm z_2@f-y#?lsiseyQ@pBMH-p9iR?JWG3-ou>R*8%r0T*Czlx^!xvJoM{W6Q^TixPMa+ zNCl^{J5BfEmKo#7r|gfst{;B5uPF#H@fuF4)1+oK-SE+QK7LDhj=>XG;&pCeV|kLp zO6qUIK=-u}YotalIjIoALLqo&tU_PL$HP_bGvXYR&h8v9NUf`e@#0%^GVQS~ow=F7 z^o{PYUi20WsXG#r&+=$&HHqXMDCcw&5;W!54?MF!2feq*;5yxREM|OR!rnAuhN>9h zr4=(&B93{?rm$X*IL!3de<+bs0WY7Gpy^3#@YdJB-}xWd2Ad416$!?P{^G=4uNtaf z3Q@~P&zZx%t;jPlf#E|{(DQH*{k!kL+Iuo&v{#9Snk$hffq$W>?K~7`=#hsZQMgzk z8GVPgz&$x+Q#>EA3450k^`PnGka7!X`xLSDr@KL*zXWrH8F(x%51TfK!A!R*cH*CL zSiPLZ3JYm?-eyhC926&QobqGlgT3_I>L^x-cMcT4aOL)gPWaxN!}1+ZK=cqLvy&fz zQ+y7VFBGPGPAI|~Pc_naj?;OqeGE^kqw$7xBASgCrcGn!{HPugXzy!=(HERp-Z~2n z`b5ZjoAIROqB7}nG*1PGNz}FBffv)*-ySjILrPR`*oHuOgGJB1Cvj) zPyGmZS?H3$w`1&P3GVwaOqN_Z5dzf@`mk$Y94Xjc1ZTypsrrW`W}mD&Vf3spBvOmn zASX+VmZmXQsosoBZ3#a4^cg=K{f;-jeZZHYVxX@qL1V6VvYA;w;K`ASk>>zAl(-O zj`QTG+1V(VD{&J}#vjL9fiBSIlZRucEQ!l!imt6+vD$h+Hecm_&b~j)I@QCR8nFQr zRy$+t>S=_3`V+IN=n1UhtPQ4gO?eSgd&7F*+>;@e$z zOP>d=ieV1k=Vnjt+U)B76J*EneayzQAJBXmLl?D-aI36gys0u5 zCdf*W{c<0{$GiYn#V8OLyOr>}lv5WC{=hzuW=0*ZA{h}P+bd_Fk(d$vJ@^71SbagO zZ>q#Fb0=?g|1mZ}ND2NtmZPrWMbK!UP;J|&NY+|^X9h27lQ%`y;9;*v165k^S)n1V zPWi`5wIFQW5RFf{dFQ@y40LeigR`@ruzsssur-%^U0((nf zp{gu7uB1%P?r(xa%PUZ^v=~dy9%Gzlx`NQc2JqKZXEt;X@+Cs7aNs9b5KN0kqwB$} zK!F%Ly_*pbC@+m7JBu#D$iI7v5y`XX1EIMRZg&SupG35sH z$@j!|NO>kmJ`_B_`h`m5qP;xzeU}97ZDY{2KO1k9X^=BJm59t@4#WJ=6C;g1=vb>C zZb|)!A4gAOn#(EX;oA$)8O);Lx3f^r9eh_Wo`nyumh$z2ykSugA$ErGplGg+u_a^J z@sN)j|9!=pk=xKPSsU!lzp$}>4QyFM9rLziBJIQ&+wJ_RH0+5w%rTSzcZ;W(^PDn^ z-#Jv5zjc7K5<*1g@d|i+-bqDJqNM^>!4zr)`2S`+7iR ztcMND6(EM=^uT8IJ7#O!88*|&o_(0D!>PG0px|f$yh#Arh~uL?hiS$^H3G^!+M%Sm-tzo-DK?f~~EnZ^NP}PXV6mT*ib@6>jD(PlgU8 zv)XP#BuQ8V(ljjTWxWR6@Hhrv9+^)2l(*p4f_q@mIv326)M#aiCM~^XO9q7{Xw!QE z+Wn*v>+hJ+CRuTms8Jze!xh{tgF3!C6CbO#jeD{Bx<3 zH}B^U_?UK)*@D^-pqmVTxSwJ0WD5Biwg`d`XJhiYXf`XN73+iaxfuo*7Tg(#%035B z`)vX&^Ek!C%lM#*^D|uQxD=MwDv<%{Z@5bAGSn@7jk#kCKjWkrnV*vmKd&~xojJMa zJi>=do|)?H`{OW+( zSHvMOR+z3=5TF@@x^R8N7k1ybpR9g}7rfQdCNck%Y2fy=aAp$+dYhw1pF7+E2ck@@ zhQd%ntpcm<@}QHyg~1IXWV$_vjDOk%E?@4#?n168yi5i2pI+wuT6z~B%Kl=--n7H5 z@>u*QT#GG(N0`E_54=ADKXA^92iQF67pIfS!FuL99tn#^uQ^K8LFywEyC{=Q@jq~Z zQ!;j*|Abi)3jF=ut*|>npGr<%!<#aDJ#Nm{AqsU(%pq4_exu|AEZWTH&34sgT)rsK z>mjxfxnMRgcH1PnJ&8xk=SvaJ8&2NscW24larE!6R@CM8j&TF=aC`Q7$TJzOu6HZt zy?R=O3Xp{U4{KT5z!Ug&(LIp*sSkdO`OwOhJJ(-%$c9BXf?8i3JE~W}98WzA5^pAv zR_!@VL5mH2ad!!(RYH+kOVNM)Bi=zG+IQH>kwZ-i&xE7X< zN`Jp$EC;Cgw4KvH=b8{X$1Z61Tg<%n`@_gQcjI>coNibA5yt%DKHsZ(toivJgXSijr=G@Vz9%CTxbl&y{o+O z!Glr0Q_>#}#I*+ceI@B*%UEc?B10lxa)HDdj!ey*ZP>hf3iEv4B+zLa#pjp1p)!4t zJ>MjZt>-j|%dRWvR-{aG0$btw8cx~TAw$=t7BJzPw1}p;7YTIVL|&|5(2%<$`_~_X z2Lt6y*K+~ld%Bd-bgy9Utq>vB+-(RBw!^@P3%d2xNeRj5t;Io4bl^1 zOU=9ZKAtipt4);|J^qq?(5MUx=iG)piVs=c)_HK$Q=WP__aC?REYkAQP{a+3-}u;kuOb)ac}BwRMq9E z3pZB4n`d9)R%rvQGJOMg?pf1i;oJ_w?lx-4g`@xGTUaB^-9Ic#;j=j($*)e45or-N1+yr=fXzBD?9r0rWO&hQm+g$*a=+?3E?a%-_=w zApXu&lJ$KC2OZgdu;3Rl%=*9U9n=bJbtkj`iCZvM!9uU`ejEv0bMe0|E+^vi5{?wL3U=58G9MLGx#FQ`$kC;5!?>+`ljJbM~ozn`s3 z6eT@e#>h?mJX$Z#z!0T%RM9mHPUIJY?$vCVr1%&`EO*#usu`1d8*`$T`vXrFjH8#V z^FXTmv<9v;EsZe#j{)-&3*YDCST8k)MSc$br| zV|zby)OZa;w&E3<*wJD>K3y#xzI1A5P(1?LuDL%EV! z#QDY?m=YcX>D^{*pAy@k1k@qJRDW`b15LH97!h9Sjriq#t z{=rSNKB(sc`|R?^P{yeS*1PBunF(@4s=o;jb+3dgTXkW}3UBJ#*TxikJYxbPH_+QI z0_4_SLNfDOA&CRfL{I8EKt>2D`0*zc?yA$nZ>e9zt=A*u67g#>BB-%zE z#N=EuOUyTdp}8LIFxH^Qazf!kR&7Kd5|$VBMmw0R^gPRU2rztm$1`?sGgP&EK?ta)eoZ~ zevS#0CM)8_j*)7k5gj_JU&z=x)PbnuG(3Mmnk+w^$b1?Xz?98vL*D1VV4HX!V!~&_ ziSOe0`>HVg`Ywrmn~;VlzQy3CF&k*m-^S_~`Y?O;Y{uzs5=8m-cl@+vBGt}4iSL5O zaq8_!Sm7JbKAp|72{oMB&Q1@PN-oF!9hum@DiPnUZ8>(I8W64^7@_V3{>3o)fpR$8- zYvM)le|;H(-*z%_dd>;iNVU2RK4dE8Ws)W?eYQe;hsmqjUvqH z&T05J^9`zvn$o7-&(UsG9th2zN;IQN@$eQ3>p9QBx2r}NwDc7ir@F97kybEgl@wK( zGLGurjf43cZo=e#h69#;Wril|k{h?Z=$7d^)Gu>0zBm$%+ah^XdX6X+^4bH79e==@ zTS*{lC`KiG53%zbUa@+!&d_1ImGtQAx3-aQMls~A8evkU$QV^++5=5#dv1ztBJ%_{ z^vr^31_K2Fj~!b=7YRPyjrlE?iH6k7Da_XF!N zq`wZ%#zw*C%LEUt=254chq*bPB$+Fr%#!V^k(qQ5&GxSaw{yWz;mQ4-!{JPj@CQ)c zZ@~W&(+RClHR%M2O*pzKAEb^`V4wfM-pOLvF-w-_MaWX8bbH2rn;J=RRwg+oo zGME(C1XHV|a1on`Rm-huYxrxp(lw5xc8nwb601S?lLVgAe#<8aI4~R)=Bk4UGMfKCJz1PWEh+1>TGT zkO|ufeQkR5+p#*Z@cGMV_N1V*ULts>>0{75K~l5O8~Tf;lT!VA%)9O~h;>7dT{Z+O zPwA4dAvwNNf-Bp(w*%d!Q&}meP>?>l3TX$Iof<^oUjn={@(Yc=4?={e6eN!`fjM2) zbi2WE_C)hAMDOq?2H(zM)Q)C&V;V>TC%l5wpk4%`P9x-VU zgmF{Xv3pl;W)4XS5`lUX*!;F1-+yxCW}lTXw(co}?{}i%)xVf=rsrY!!aZcwWNadb z9@%IpS91Hy-S9QxF3z25!V@17qm4e#@xVh-IHGS41xx)fgD*hCawd=kii>f0+gA)t zIRegpgXm*<8hNRTBvG~xZu?Az_r~(Ha0Z2dtX()}T8D@Bh!XyV@4RIN+_PX(4unos zhu;rYV&8*JOk&JIGU}7yl1-50q0Vl^7Aq{;I4}DFFA;-z!;h=JcqjX zj-&9wC$PIWg!$#CNNx|Rz`_@L*z}g#PVP-*P2Ig{yzm*wjr@qYHfL~jUI$df-C|-> zJJ^-n??h3uG7TS!K$E}q%=^=m$+$2H5?V76Q%(lqnrmyHl z$?X%~xZH^uGF-m#kp@UgZ9&U6AH3!zLs~mHF_@qq)P8Ga8zU0gf2qlM^WHY1`g$6T zeWXe5+-QeG#}&vKSp!_7u?+gxP9i;jf>6jZhb=eMhS66aLETo4?&b~#Z{}-~AJ^+~ zYx_Y)=Fo50W$*}t61~V8pAlHpG!F%m&)J>}PsLKjWO(W62}-7xTxnH=r%pq$FMwdp zfq9rX!-Xu!(V^LcZn)|~8-yth;F1MTP)~Oz(bbP*gD!uAltohHc=&C0hDIowjx!*N zhL)sdcq$$J=ZX!+_B3XdJ+9d=z?5!O$2Zp_p-w{@CBFzt+W)66#{XIK;D7F4{QoR6 z{682BkN+xP%$IajwEzDsU;Ll_QzZv|CI6!y<$ryN|5al0U&M?5ZLvZwSB^N{En!_Y zPN$Eo(X#0r>+aWxWf!}#%lQose^sDuM`T!+f3>jS@g*>< zaAhjEi+tJ9_iR;94VX1L^QPD@rg5Ie^uu~JF6i|ZMj}ta{hH?}KhS``lNO-pyF_g3 zK91YVr_vPzM|e)>WavnZJ04zE51B_#L&@oJxK>e?rb}~eQ!N=1`S2!OlGngVL6vYN zgljG?P^MqShfw?L11Kq!<3fH@n9oi>z_X-?S@9qbUp~0bzjc7moW4?zGlp)1Zh0wc zR2_m7Ab=XhcQHGy9_+G3iOv-nT6yamJ}Hfbxz_oxwOWD3SGn6o(N{7J_6d@Z|W zVkRDYEJ#Xnc45NIc-Do_wdgt((KgYLXg#$e!^2N;g_01p-Y3p^Q4@HjWi#oxfdZJv zIa`-=mk+VY?=f?>EK%DlLvtTary}bY(+AlIeapW>q327SVrk24%Mb^_iNo-=)sS{F z_c*s^D_ddN4m+m15u@z4SekW^r?kof&dCR$R%`&C`YuCSHhV(k^w)5)trWa!UxR12 z7|stYW7?#5;00e9a#V>6poG;TqFR zHCx!;(>K7mg=L#MPPtN9?YOCIoez4%R07otPQqy>e9g!3v%;%4m&tFo@Bbr;|QDt zu4FA@*2~_3annCwd^AN9yD&VPbsr@w?5Tv+FJS(hhh+_7WW`ZwI5wdX(k!?EJqEC9 zPsVXRyIUA%6ARuymqKRWY}lW1kY@im0REnjS;@g(#JyUmRP+O~07ietF5k&A3rbGgPU1F~q03(N0i zL3PtGD5YfJ*0e&Lr1>1`jkU??a0WJfSHuS|C8&4hVfLr>8d|NBi~|em(QD;fuyqv2 zPwksg+ASPR+})_rhzfaMPWbgrXF=i1RNCS68T&qp5XX%9kdiQij^Vs?$%U$|X#8$}&r@Iyi;78mO>_0tV$-0*!ks&7bx1kUr* zzn)@`)qe#CSBhFg-Y_ZsA-}xtFf5kkUhA6z_1c`uM%nYIg0K?JoU2V=sVLL6H@`3* zxh^E=@)fv!Y!x-V{uvHgi9y`T2Atcb1|L+*tCW<_nEavtt` zprSm3xK0fLn+fFmM581dZ}qgkCf4ewqZek781G5yI=480R5DwF)VA zuTvzvRl2lOl`|k6sI<-2RAY)Xo7jX+<9X-HCZXN&JGf-oL_RN2mS*upvC)=CY8N%~ zKg<`Vn!ozsV7&$zVI)!WNfF48xKgdV@A(B1so=F>HGkQ}e<;1r8@o8mk$f|^=qtX& z3JpvnJBE)#WR4y!mGDFpRUYJ~blGb3C!^Q%Z@8dpCnl~IB;}pI;Ve-DMn@J)Mc1Q) zbpRgI97isvw}QCmGN=~+4!rFHC?dZO_xDG$KbGG{{`X7}T9g0+N9{1->`ioO{0BMZ zUC`4T!@Xx0nb4$4+_*uQxJ7=(97`?k@F+?*Wn5x|@0K%js|(qZ@-k+gl_2iF*?<|* zV)T~TWpMIUqZyCAnKB1S+W+eddu+Bkj4X5IiUl(;V}T}yXq^MSdp7v%WC>drxd`P~ zETfyRtI>aXzNk@A4sK4d%$`66dcRARep~ni>;KtOtyP6seC!04)Hh(Qg+3kedX9~c z$Kj{0U!0}jD&r?Lo7tfuKw8Uw!pHY%*c@I6pJ(<%ZuLB}y+nb&GZdi1^1q-%^(^o0 z)T_LaHU(l`C`EFrWnlkQJy<)9kJU{xaqXHO2>7E&KTkBL-)fhlZ`m}GFYE?=#d4%x z{15Ck55(bV+u&;Q6}Ty}1jXb_LE}pqD*1Gw{%%3i9iT@{tpusZ%}T7Br2+TC%h{4? z0wiCW&wd}ufz)O*?7y1^s+CZAR_(|2fZ=S@-=_<_M&`wkeDMYD; zY0$J@9=~YB(wF}GAg%E_TXOnZwY#Y*`?0qZdo?3KYT^xi6sAYbIws{X7mvQoIDRTK%C2T!72I~LDVMO3myx!{qY^XkQU4H|LG-u)|ZLVPUM}%grI)p9- zOGsgW2i}<$52A1Mh~mnhe+1usarbl7zKfxh&&0`sPvOogGgC9nRw1 z17c)(UkBKY^nl>ZZYVq2gz6VBFvn#Ba8{~57Dvew&zPAcvuQa_ioU^Jc+QPbFk>N z2r&)2!n|I15+aA(>G71cSl2R7nU)THndIbzL;Vz{_^5mBod0^MZOr5qJAI>a>lDCKO{*qY86I3VH zI9hDd<|TO5!yG2ODCFNJ^y zZ;wK;>`d0?84G2iGstV_WneZviW%BCh0c=@$8dfkI``IrRGJw*FkphJK6dmSca{kB zZNRy=r;#zuiS%*jH@vb@ovwOqz~4G}5~tZX;FD5rA=ZQ_o0bA9j_O#hB*=Y#dYQC* zbt04}Kzo}v>4Q{!3we$t!BybZgw5uI9&Cn!Ca^=vwtsAC(JqZtA zs4(82Cc%+V7WS?X21~C3C=%pjOQ1RZ6?_7wMg&vQl)>7RJVo+*$8okU|1kScshi#6 zTMIuD&SPo$L42>+gNp@|$oe84FSu?c+4n#PD=%|P;>q)ILHR=dj+AOvHFg-ixcUuBu1dYtM~#5{^Bg#LZaIIZ5Cw9dVTw^VIOgp3t^i8nDdsutol{)5v&li6Tb zhNRq{M=x)A0ZaEDVl4hmrc0}Guix%)rDvxDgpCkR=Hk z4Yn9Dv|oP;YC<`*0MWfFa+5Q*KMKOtdLV0(A{1!De$IEY2{dHJZO6%V;*KmYGN%*1TlDSt`+7(OB%ca|oLKzrw(J1-hyF zCeLR+_j5j;OmCas8-#H z{EsK`*KA4nYGX>%?#?DPvUA8#*c@yP=VR;(4YX-Y#p9u!&@DWRDp)pPrJN?Ik6X_q zpD*T?+SxckqL6Vf&WDvArevnWU)VEg64}HR8Q134Fjs{ivO(8=<3zndxE(CzFlk~0 zJd3{%L61c3zvLLOiMn^Ncu;$}ofl9x!vt(3CcxI``{3W-SBzOnF}{At zy~q2ng!lTvc<5&+TK+i21lCMvDmPYPH0KTec2EG9e9Gtn{ zfyvPKON%buRE>5)Iq>9tE2v-If&I)eCeidM-@vO9cQ{#bVcmH!F%wxD# zY{m@tm*A!{1CsE!goz8{hVWWl@M=j1M9-~)ukH0Hf^$mcUFjF*C}YbyU;fi5m1YZ>7i&!Ct} z(Do+I&7Qai1KqXgS<8GZ&m2JMGfUv5&Q$JQKc87T9!}jdXAqs|t>~Zs5XH|ou=)$m zV(KMbD)(aw>~|2NuMFp6eakR=?BFnSy!RZpd^m`g{@V%lp(`Oj-;9(laV8)5vWHGLWSsd(;h7??GJcef<6x6WF@O?NRe!(##s{8`C9mr%eoKtX}Tp$xZD`Cy893`%~qo)rv`%ZjW^7xDHp*qaU;8F z;#=nJGcz>V{D^a!4}$1jaVmUvDO5-60~0X9vJ&$2B0l3N>%Vc!ZEwEc^eDWcp2DO2 z2G%(QlB%o&{k?mlTjW)|v_!Iz?BU*B2OeQ}rZas7lc zVz~~-ida-Hcc!xAb*$kuDfoWl5DI)1AXR6&?KYGz#GR>;Oop)o^S9Cr-SaiTTxuF! zFwz0KoAm-CHG2{kO>Fhsjs;J z#eTMH;XGDaxBxxaQCwW8gKM83#Nb&;5FH%DS3g|Hw)J|#i{WeR{SDIOuGm8^l*wXL z;XM=xYsDF5fiS*oB6B(ACur5N+`VNY(fNHDPCu(-Xo3X2VPcK*Htd6gX`S3sZ3uT9 z(V{z~q9EyLDV&;N3sRqx;q$&{C_Tv$VitNpn%8BRAF_b%>TiHGV*Mx=qDcHWIKye@ zcW|~`hl=k$1#t%i;XvSO>REUOBGaUC!UQg)E?x&G{C+c*X|jxM&HyYv^%u{byMr>N z-C*72#_OC}j*}f9;F$(f2~+kJu2TvW-Mb7Ka2&ijgu?M=|X){xhcbPm4z zkAa2F9L7NL97cZ)q0z&yS%sQvRB&;jgI4PFhw*pFzTyLN2LIsb&IO=*;vzQwmLmBa zIAhlXDKf%A7B0p~((L&6aBQLghzZVvW!nTG877dv1xED#*c|*CdJXjQoH66UevIE# z2g{CDI`LRfY`aP;dr$6cF=Jk-ZwETo&m6tGHaynkl_lHft|3U9}VcHno z1EW`E3BEJJH*lRXQn8~G@={<{lqX48JR6)E_TuKv2iWII0;F(8J~|c)6J4dRAo0C{ z-QBKC?oYadD_4c{LM2WyIw>Equvvl{9zKSp^S|&)mw5A1I`W|o%lOfIKSM);6VrYNX#B(ff$O+)DW>KflUqy?0IKf@(ze_`DY6C&~G z4t6ZDf_Wb;;h(B1{c&Uq<}}=7=k22)n>5Z9y35hb`Zkm&-$7}yE`Z@!o=4&kyZo*W zd3hof9<_0%tD>JcgL~E-=E_oDNBMlY1w-gKy%O{y6<|VFBI~kh9&C~J#KyHVsC>FP zeIF->7bA-Bwcb8G5_9-Y*aBjtJd|IQy9MzxX5PLfk_lb&-N`DEQGHX3{iZ`%BX0O=y zt>)A^PmfIAeF(P+awY4{EEayw#l`j6$TPpl2wQ~Uzo>KItX9VFkgo^DacO2(Y#6K) zKEW>-yUpFT-?9rU)k$pPL^^-@2k_WFjoj_6KwX_f(0)CUx$w6ZGDh7VVNCW1z8HSV~+6&z3GLqpX&I3Ci7Q<9{~>pT~_)mWRP`@4b3 zsyO%-aETR{wFSS|2tzTKLHFQMI8T=_>AxR-pI0xm? z=RjP!zaSyajy9!!V7}O4AFX zv0$_hf3@jRVO~AE&gv+ri|mGDH(v4kS9CdSy>3SH*2&U0PA4$y#||Jrt8x2v2O^{G z3$dMs;NY6a+z)o4=QsZW%#or^on7o$z83NL*9CVw%}M@TQ)20q$pNR-NJefFmU2OH zKL>r<+bu!&R6K@Xnhwmun@6zfw7x3`wWm^2)QBx)v<36usg2OXvRl=sz z3)?+l-s(E+uQ~~&)r`8Bbg*aNFT}LI6O7>{D|Tu7IP+R&2-~-GVp(e%ws`!;cbBC> zwjmGSt{;VEN2G{my)9LGP=yKl`S|pp2}zaj#hMfws$Comh1ZMNNNzs+x@akL<;-<7 zm^6vT2Y%*20jb=XnZ%y`=EZ1YNlEv8y)j}c~h=jhol@)DEd#Bv}yoj;hO?Y zf(F>J{5HmO5Cr!hhcWJo3Z2>{f^lvUWX8iR_;p>3v%TMh&+1~N<61ns^yo+Ya^xy9 zIf5i&dohNM2$DmsM<6Be5vFP_p!+x9;?Ikjj4$7Y($Ax3!TQrBnEKh2Y~x9id7~`b z*gKmw5HG|dHOfrw0E@u}NAb_;$FOzPBAWj4Jlp)h4_`~UQ)lTSm~5Yic2@mt_Q+94 z>wS&MYi7f*Z{BP4sl== z8}6XI&=|xYyw5tz9>occNjMmG77V7!miHR*nW7bQH)oE z$3W7fjNKFX65DMK!LzL^c_o@Jpx=BOKW17sw~^xtw7gu_=krlWPkjlezo^%K7Aogv ziK)y-&w4)1d&Ta)V8BH5Ns`rGPr+pKWpLvQG0oF#8AfI=EXSKH?vkTXyp8C&RvqWr z>|U}0E?sQC6MkiU0F9Z`aQT5&es5$ata?xkGfVu)`knbuSeC(l z$sd5DMsN5(T0cSNXgoVU5(CF2=CA^Xy=igPG4^-<7Z?*!L$%vo;JjU$uIX^VvXLa1 zSZ2)aeLZ2v#@qOQ)iC7AOk}DP)##5O3Fx-=DX+S%7N(0gu}RLe;K=MtC|8(`PYf$y zov%Je@jZup<5D=U#2L6Qx8tP`@9>?_E4(me3mDHZVqT^-u})3zaHQY^KFl`6Pc}PI z>CJB#e)t$O@7%{5nY-zK`xsgrwh{M+$3yBW2M~2=0FB4C-25f0HpgHpZSI|qB@1hy zqEwIu;UEXNu%yzux|mrWg*|E0h-zmsEMt2ZOEnEW=CQ8tEEyn1+ zupYnlInk_l1x&T&0Q0^_n#R>nps^bpVZDPb)ecm}td|2IEX*0y&Qw9{i6>w>|0jf; zT1vj(;1Rz-ITG5f0Z)e&IpXzV-1T@WFPE=MoB9vHE@A>NPOQd~1aJB@Xfn1m|3rtd z2{>HefDT{g(Sf08&eA7D3)C;MU5qnb^uvu(=Qd4z8w7XkQjC4)6@csfOs zplxs=mvIUT8E5?!K7H`s*Etnx_bvT0-aF(QyPZEbi=+)y=+VA9ejD!7M}fahdW

}j;?wHc8ZfkL;tSd71a#U=z3Ijv9KvtV7?QJrH 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 literal 0 HcmV?d00001 diff --git a/trained/assistants/assistant_it/custom_hotword/thresholds_curve.json b/trained/assistants/assistant_it/custom_hotword/thresholds_curve.json new file mode 100644 index 000000000..0e64dc75c --- /dev/null +++ b/trained/assistants/assistant_it/custom_hotword/thresholds_curve.json @@ -0,0 +1,128 @@ +[ + { + "threshold": 0.998, + "recall": 0.8845846645367411, + "sensitivity": 0.0, + "far": 0.0 + }, + { + "threshold": 0.998, + "recall": 0.8845846645367411, + "sensitivity": 0.05, + "far": 0.0 + }, + { + "threshold": 0.987, + "recall": 0.9636581469648562, + "sensitivity": 0.1, + "far": 0.0 + }, + { + "threshold": 0.98, + "recall": 0.9692492012779553, + "sensitivity": 0.15, + "far": 0.0 + }, + { + "threshold": 0.707, + "recall": 0.9912140575079872, + "sensitivity": 0.2, + "far": 0.3461397298829652 + }, + { + "threshold": 0.934, + "recall": 0.9828274760383386, + "sensitivity": 0.25, + "far": 0.04326746623537065 + }, + { + "threshold": 0.92, + "recall": 0.9844249201277955, + "sensitivity": 0.3, + "far": 0.04326746623537065 + }, + { + "threshold": 0.894, + "recall": 0.9864217252396166, + "sensitivity": 0.35, + "far": 0.04326746623537065 + }, + { + "threshold": 0.842, + "recall": 0.9892172523961661, + "sensitivity": 0.4, + "far": 0.08653493247074126 + }, + { + "threshold": 0.807, + "recall": 0.9892172523961661, + "sensitivity": 0.45, + "far": 0.1298023987061119 + }, + { + "threshold": 0.787, + "recall": 0.9896166134185304, + "sensitivity": 0.5, + "far": 0.17306986494148255 + }, + { + "threshold": 0.749, + "recall": 0.990814696485623, + "sensitivity": 0.55, + "far": 0.2596047974122239 + }, + { + "threshold": 0.72, + "recall": 0.9912140575079872, + "sensitivity": 0.6, + "far": 0.3461397298829652 + }, + { + "threshold": 0.695, + "recall": 0.9916134185303515, + "sensitivity": 0.65, + "far": 0.3461397298829652 + }, + { + "threshold": 0.683, + "recall": 0.9916134185303515, + "sensitivity": 0.7, + "far": 0.3461397298829652 + }, + { + "threshold": 0.504, + "recall": 0.9924121405750799, + "sensitivity": 0.75, + "far": 0.6490119935305596 + }, + { + "threshold": 0.356, + "recall": 0.9936102236421726, + "sensitivity": 0.8, + "far": 1.2980239870611205 + }, + { + "threshold": 0.289, + "recall": 0.994408945686901, + "sensitivity": 0.85, + "far": 1.6441637169440853 + }, + { + "threshold": 0.216, + "recall": 0.9952076677316294, + "sensitivity": 0.9, + "far": 2.2499082442392764 + }, + { + "threshold": 0.156, + "recall": 0.9964057507987221, + "sensitivity": 0.95, + "far": 2.8556527715344644 + }, + { + "threshold": 0.12, + "recall": 0.9972044728434505, + "sensitivity": 1.0, + "far": 3.807537028712616 + } +] From 1b29fbfca3f594c62babfa7e4b42de7315436b5b Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Fri, 6 Mar 2020 16:01:32 +0100 Subject: [PATCH 071/139] Core support for wakeword tuning --- core/interface/languages/de.json | 3 ++- core/interface/languages/en.json | 3 ++- core/interface/languages/fr.json | 3 ++- core/interface/languages/it.json | 3 ++- core/interface/static/js/admin.js | 5 +++++ core/interface/templates/admin.html | 6 ++++++ core/interface/views/AdminView.py | 9 +++++++++ 7 files changed, 28 insertions(+), 4 deletions(-) diff --git a/core/interface/languages/de.json b/core/interface/languages/de.json index 4de23730e..e20593127 100644 --- a/core/interface/languages/de.json +++ b/core/interface/languages/de.json @@ -47,5 +47,6 @@ "resetSkill": "Reset", "actions": "Actions", "addUser": "Neue Benutzer", - "addWakeword": "Neue Wakeword" + "addWakeword": "Neue Wakeword", + "tuneWakeword": "Tune wakeword" } diff --git a/core/interface/languages/en.json b/core/interface/languages/en.json index 58a77e581..52b13cf18 100644 --- a/core/interface/languages/en.json +++ b/core/interface/languages/en.json @@ -47,5 +47,6 @@ "resetSkill": "Reset", "actions": "Actions", "addUser": "Add user", - "addWakeword": "Add wakeword" + "addWakeword": "Add wakeword", + "tuneWakeword": "Tune wakeword" } diff --git a/core/interface/languages/fr.json b/core/interface/languages/fr.json index fc515d699..ffa91c370 100644 --- a/core/interface/languages/fr.json +++ b/core/interface/languages/fr.json @@ -47,5 +47,6 @@ "resetSkill": "Reset", "actions": "Actions", "addUser": "Ajouter utilisateur", - "addWakeword": "Ajouter wakeword" + "addWakeword": "Ajouter wakeword", + "tuneWakeword": "Tuner wakeword" } diff --git a/core/interface/languages/it.json b/core/interface/languages/it.json index 484bfa24c..a6289031b 100644 --- a/core/interface/languages/it.json +++ b/core/interface/languages/it.json @@ -47,5 +47,6 @@ "resetSkill": "Resetta", "actions": "Azioni", "addUser": "Nuovo utente", - "addWakeword": "Add wakeword" + "addWakeword": "Add wakeword", + "tuneWakeword": "Tune wakeword" } diff --git a/core/interface/static/js/admin.js b/core/interface/static/js/admin.js index 40172cb24..e702f0d1a 100644 --- a/core/interface/static/js/admin.js +++ b/core/interface/static/js/admin.js @@ -112,4 +112,9 @@ $(function () { handleUtilityClick($(this), 'addWakeword', 1000); return false; }); + + $('#tuneWakeword').on('click touchstart', function () { + handleUtilityClick($(this), 'tuneWakeword', 1000); + return false; + }); }); diff --git a/core/interface/templates/admin.html b/core/interface/templates/admin.html index cdb2c207e..3750ca5e2 100644 --- a/core/interface/templates/admin.html +++ b/core/interface/templates/admin.html @@ -108,6 +108,12 @@

{{ langData.addWakeword }}
+
+
+ +
+
{{ langData.tuneWakeword }}
+
diff --git a/core/interface/views/AdminView.py b/core/interface/views/AdminView.py index 490ef7c04..7bb6e9451 100644 --- a/core/interface/views/AdminView.py +++ b/core/interface/views/AdminView.py @@ -124,6 +124,15 @@ def addWakeword(self) -> dict: return jsonify(success=False) + def tuneWakeword(self) -> dict: + try: + self.SkillManager.getSkillInstance('AliceCore').tuneWakeword() + return jsonify(success=True) + except Exception as e: + self.logError(f'Failed tuning wakeword: {e}') + return jsonify(success=False) + + def wipeAll(self) -> dict: try: self.ProjectAlice.wipeAll() From f98af60bb8bc60de7a659fbd0c5c54aa917af9a3 Mon Sep 17 00:00:00 2001 From: Psycho Date: Fri, 6 Mar 2020 21:37:24 +0100 Subject: [PATCH 072/139] Wakeword tuning core side --- core/voice/WakewordManager.py | 59 ++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 8 deletions(-) diff --git a/core/voice/WakewordManager.py b/core/voice/WakewordManager.py index 462e89fe2..fa8b4577c 100644 --- a/core/voice/WakewordManager.py +++ b/core/voice/WakewordManager.py @@ -1,7 +1,9 @@ import json from pathlib import Path +from typing import Optional import paho.mqtt.client as mqtt +import re import shutil import struct import tempfile @@ -57,9 +59,6 @@ def onStop(self): def onCaptured(self, session: DialogSession): if self.state == WakewordManagerState.RECORDING: - # self.MqttManager.mqttClient.unsubscribe(constants.TOPIC_AUDIO_FRAME.format('default')) - # for device in self.DeviceManager.getDevicesByType('alicesatellite'): - # self.MqttManager.mqttClient.unsubscribe(constants.TOPIC_AUDIO_FRAME.format(device.room)) self._workAudioFile() @@ -79,11 +78,6 @@ def addASample(self): self.state = WakewordManagerState.RECORDING - # self.MqttManager.mqttClient.subscribe(constants.TOPIC_AUDIO_FRAME.format('default')) - # for device in self.DeviceManager.getDevicesByType('alicesatellite'): - # self.MqttManager.mqttClient.subscribe(constants.TOPIC_AUDIO_FRAME.format(device.room)) - - def onAudioFrame(self, message: mqtt.MQTTMessage, siteId: str): if self.state != WakewordManagerState.RECORDING: return @@ -318,6 +312,55 @@ def _prepareHotword(self, path: Path) -> tuple: return wakewordName, zipPath + def getUserWakeword(self, username: str) -> Optional[str]: + wakewords = self.ConfigManager.getSnipsConfiguration(parent='snips-hotword', key='model', createIfNotExist=False) + + usernameMatch = re.compile(f'.*/{username}=[0-9.]+$') + for wakeword in wakewords: + match = re.search(usernameMatch, wakeword) + if match: + return wakeword + return None + + + def getUserWakewordSensitivity(self, username: str) -> Optional[float]: + wakeword = self.getUserWakeword(username) + if wakeword is None: + return None + + sensitivity = re.findall('[0-9.]+$', wakeword) + return round(float(sensitivity[0]), 2) if sensitivity else None + + + def setUserWakewordSensitivity(self, username: str, sensitivity: float) -> bool: + wakewords = self.ConfigManager.getSnipsConfiguration(parent='snips-hotword', key='model', createIfNotExist=False) + rebuild = list() + + if sensitivity > 1: + sensitivity = 1 + elif sensitivity < 0: + sensitivity = 0 + + usernameMatch = re.compile(f'.*/{username}=[0-9.]+$') + sensitivitySub = re.compile('=[0-9.]+$') + update = False + for wakeword in wakewords: + match = re.search(usernameMatch, wakeword) + if not match: + rebuild.append(wakeword) + continue + + update = True + updated = re.sub(sensitivitySub, f'={round(float(sensitivity), 2)}', wakeword) + rebuild.append(updated) + + if update: + self.ConfigManager.updateSnipsConfiguration(parent='snips-hotword', key='model', value=rebuild, restartSnips=False, createIfNotExist=False) + self.SnipsServicesManager.runCmd('restart', 'snips-hotword') + + return update + + @property def state(self) -> WakewordManagerState: return self._state From 71f0e04b704e3c91abf929a0b4f4550ba0b8777e Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 06:16:33 +0100 Subject: [PATCH 073/139] Do not temporise VAD --- core/asr/model/DeepSpeechASR.py | 17 +++++++---------- core/server/MqttManager.py | 23 +++++++++++------------ core/snips/SnipsServicesManager.py | 6 +++++- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index d580cf4b6..1fcc9caf3 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -12,7 +12,6 @@ try: import deepspeech - import webrtcvad except: pass @@ -22,8 +21,7 @@ class DeepSpeechASR(ASR): DEPENDENCIES = { 'system': [], 'pip' : { - 'deepspeech==0.6.1', - 'webrtcvad==2.0.10' + 'deepspeech==0.6.1' } } @@ -34,7 +32,6 @@ def __init__(self): self._isOnlineASR = False self._model: Optional[deepspeech.Model] = None - self._vad: Optional[webrtcvad.Vad] = None self._triggerFlag = self.ThreadManager.newEvent('asrTriggerFlag') @@ -42,8 +39,6 @@ def onStart(self): super().onStart() self._model = deepspeech.Model('/home/pi/deepspeech-0.6.1-models/output_graph.tflite', 500) self._model.enableDecoderWithLM('/home/pi/deepspeech-0.6.1-models/lm.binary', '/home/pi/deepspeech-0.6.1-models/trie', 0.75, 1.85) - self._vad = webrtcvad.Vad() - self._vad.set_mode(1) def install(self) -> bool: @@ -61,11 +56,13 @@ def install(self) -> bool: def onVadUp(self): if not self._triggerFlag.is_set(): + print('up') self._triggerFlag.set() def onVadDown(self): if self._triggerFlag.is_set(): + print('down') self._triggerFlag.clear() @@ -89,11 +86,11 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: if not triggered and self._triggerFlag.is_set(): triggered = True - if triggered and not self._triggerFlag.is_set(): - recorder.stopRecording() + if result and triggered and not self._triggerFlag.is_set(): + self._recorder.stopRecording() - text = self._model.finishStream(streamContext) - self.end(session) + text = self._model.finishStream(streamContext) + self.end(session) return ASRResult( text=text, diff --git a/core/server/MqttManager.py b/core/server/MqttManager.py index d5fe4537b..bca9f248f 100644 --- a/core/server/MqttManager.py +++ b/core/server/MqttManager.py @@ -1,6 +1,5 @@ import json import uuid -from datetime import datetime from pathlib import Path import paho.mqtt.client as mqtt @@ -25,7 +24,6 @@ def __init__(self): self._thanked = False self._wideAskingSessions = list() self._multiDetectionsHolder = list() - self._vadTemporisation = 0 self._audioFrameRegex = re.compile(constants.TOPIC_AUDIO_FRAME.replace('{}', '(.*)')) self._wakewordDetectedRegex = re.compile(constants.TOPIC_WAKEWORD_DETECTED.replace('{}', '(.*)')) @@ -33,12 +31,6 @@ def __init__(self): self._vadDownRegex = re.compile(constants.TOPIC_VAD_DOWN.replace('{}', '(.*)')) - # noinspection PyUnusedLocal - def onLog(self, client, userdata, level, buf): - if level != 16: - self.logError(buf) - - def onStart(self): super().onStart() @@ -88,6 +80,12 @@ def onStop(self): self.disconnect() + # noinspection PyUnusedLocal + def onLog(self, client, userdata, level, buf): + if level != 16: + self.logError(buf) + + # noinspection PyUnusedLocal def onConnect(self, client, userdata, flags, rc): @@ -451,6 +449,7 @@ def onSnipsIntentNotRecognized(self, client, data, msg: mqtt.MQTTMessage): self.broadcast(method=constants.EVENT_INTENT_NOT_RECOGNIZED, exceptions=[self.name], propagateToSkills=True, session=session) + # noinspection PyUnusedLocal def onNluPartialCapture(self, client, data, msg: mqtt.MQTTMessage): sessionId = self.Commons.parseSessionId(msg) session = self.DialogSessionManager.getSession(sessionId) @@ -460,16 +459,16 @@ def onNluPartialCapture(self, client, data, msg: mqtt.MQTTMessage): self.broadcast(method=constants.EVENT_PARTIAL_TEXT_CAPTURED, exceptions=[self.name], propagateToSkills=True, session=session, text=payload['text'], likelihood=payload['likelihood'], seconds=payload['seconds']) + # noinspection PyUnusedLocal def onVADUp(self, client, data, msg: mqtt.MQTTMessage): - self._vadTemporisation = datetime.now().microsecond siteId = self.Commons.parseSiteId(msg) self.broadcast(method=constants.EVENT_VAD_UP, exceptions=[self.name], propagateToSkills=True, siteId=siteId) + # noinspection PyUnusedLocal def onVADDown(self, client, data, msg: mqtt.MQTTMessage): - if datetime.now().microsecond - 500 > self._vadTemporisation: - siteId = self.Commons.parseSiteId(msg) - self.broadcast(method=constants.EVENT_VAD_DOWN, exceptions=[self.name], propagateToSkills=True, siteId=siteId) + siteId = self.Commons.parseSiteId(msg) + self.broadcast(method=constants.EVENT_VAD_DOWN, exceptions=[self.name], propagateToSkills=True, siteId=siteId) def reviveSession(self, session: DialogSession, text: str): diff --git a/core/snips/SnipsServicesManager.py b/core/snips/SnipsServicesManager.py index b116dfc89..7501fd40c 100644 --- a/core/snips/SnipsServicesManager.py +++ b/core/snips/SnipsServicesManager.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import Union from core.base.model.Manager import Manager from core.commons import constants @@ -33,7 +34,7 @@ def onStop(self): self.runCmd(cmd='stop', services=self.snipsServices()) - def runCmd(self, cmd: str, services: list = None): + def runCmd(self, cmd: str, services: Union[str, list] = None): if not Path(self.Commons.rootDir() + '/assistant').exists(): self.logWarning('Assistant not yet existing, shouldn\'t handle Snips for now') return @@ -41,6 +42,9 @@ def runCmd(self, cmd: str, services: list = None): if not services: services = self._snipsServices + if isinstance(services, str): + services = [services] + for service in services: if service == 'snips-tts' and not isinstance(self.TTSManager.tts, SnipsTTS): continue From 6aa187b03f6af57a134138d753d33fdd71d420d0 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 06:35:54 +0100 Subject: [PATCH 074/139] Recorder should stop yielding when it is empty, not before or we get cut utterances --- core/asr/model/DeepSpeechASR.py | 26 +++++++++++++++----------- core/asr/model/Recorder.py | 7 +++++-- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index 1fcc9caf3..9b0f5e4c6 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -1,3 +1,4 @@ +import threading from pathlib import Path from typing import Generator, Optional @@ -33,6 +34,7 @@ def __init__(self): self._model: Optional[deepspeech.Model] = None self._triggerFlag = self.ThreadManager.newEvent('asrTriggerFlag') + self._vadTemporisation: Optional[threading.Timer] = None def onStart(self): @@ -55,15 +57,24 @@ def install(self) -> bool: def onVadUp(self): - if not self._triggerFlag.is_set(): - print('up') - self._triggerFlag.set() + if self._vadTemporisation and self._vadTemporisation.is_alive(): + self._vadTemporisation.cancel() + + self._triggerFlag.set() def onVadDown(self): + if not self._triggerFlag.is_set(): + return + + if not self._vadTemporisation or not self._vadTemporisation.is_alive(): + self._vadTemporisation = self.ThreadManager.newTimer(interval=2, func=self.vadDown, autoStart=False) + + + def vadDown(self): if self._triggerFlag.is_set(): - print('down') self._triggerFlag.clear() + self._recorder.stopRecording() def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: @@ -73,7 +84,6 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: self.ASRManager.addRecorder(session.siteId, recorder) self._recorder = recorder streamContext = self._model.createStream() - triggered = False for chunk in recorder: if self._timeout.isSet(): break @@ -83,12 +93,6 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: result = self._model.intermediateDecode(streamContext) self.partialTextCaptured(session=session, text=result, likelihood=1, seconds=0) - if not triggered and self._triggerFlag.is_set(): - triggered = True - - if result and triggered and not self._triggerFlag.is_set(): - self._recorder.stopRecording() - text = self._model.finishStream(streamContext) self.end(session) diff --git a/core/asr/model/Recorder.py b/core/asr/model/Recorder.py index 057599583..101bde006 100644 --- a/core/asr/model/Recorder.py +++ b/core/asr/model/Recorder.py @@ -46,6 +46,9 @@ def stopRecording(self): def onAudioFrame(self, message: mqtt.MQTTMessage): + if not self._recording: + return + try: riff, size, fformat = struct.unpack('<4sI4s', message.payload[:12]) @@ -71,12 +74,12 @@ def onAudioFrame(self, message: mqtt.MQTTMessage): def __iter__(self): - while self._recording: + while not self._buffer.empty(): yield self._buffer.get() def audioStream(self) -> Optional[bytes]: - while self._recording: + while not self._buffer.empty(): if self._timeoutFlag.isSet(): return From 7ef6cc982a87a4eb0d28189d8c85ed2812c51259 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Sat, 7 Mar 2020 07:44:10 +0100 Subject: [PATCH 075/139] DeepSpeech should be working, untested though --- core/asr/model/DeepSpeechASR.py | 7 +++---- core/asr/model/Recorder.py | 5 +---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index 9b0f5e4c6..db6969174 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -1,9 +1,9 @@ +import tarfile import threading from pathlib import Path from typing import Generator, Optional import numpy as np -import tarfile from core.asr.model.ASR import ASR from core.asr.model.ASRResult import ASRResult @@ -79,15 +79,14 @@ def vadDown(self): def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: super().decodeStream(session) + result = None + with Stopwatch() as processingTime: with Recorder(self._timeout) as recorder: self.ASRManager.addRecorder(session.siteId, recorder) self._recorder = recorder streamContext = self._model.createStream() for chunk in recorder: - if self._timeout.isSet(): - break - self._model.feedAudioContent(streamContext, np.frombuffer(chunk, np.int16)) result = self._model.intermediateDecode(streamContext) diff --git a/core/asr/model/Recorder.py b/core/asr/model/Recorder.py index 101bde006..e8a48c118 100644 --- a/core/asr/model/Recorder.py +++ b/core/asr/model/Recorder.py @@ -1,9 +1,9 @@ import queue +import struct import threading from typing import Optional import paho.mqtt.client as mqtt -import struct from core.base.model.ProjectAliceObject import ProjectAliceObject from core.dialog.model.DialogSession import DialogSession @@ -46,9 +46,6 @@ def stopRecording(self): def onAudioFrame(self, message: mqtt.MQTTMessage): - if not self._recording: - return - try: riff, size, fformat = struct.unpack('<4sI4s', message.payload[:12]) From fe449d6e6bd39b7ab30939dc1dfcded9c363ce01 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Sat, 7 Mar 2020 12:13:12 +0100 Subject: [PATCH 076/139] Fix for Google ASR --- core/asr/model/Recorder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/asr/model/Recorder.py b/core/asr/model/Recorder.py index e8a48c118..85cdbb9fa 100644 --- a/core/asr/model/Recorder.py +++ b/core/asr/model/Recorder.py @@ -71,12 +71,12 @@ def onAudioFrame(self, message: mqtt.MQTTMessage): def __iter__(self): - while not self._buffer.empty(): + while not self._buffer.empty() or self._recording: yield self._buffer.get() def audioStream(self) -> Optional[bytes]: - while not self._buffer.empty(): + while not self._buffer.empty() or self._recording: if self._timeoutFlag.isSet(): return From a9651642c43523ca134372cd02a604dca4229554 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Sat, 7 Mar 2020 15:40:16 +0100 Subject: [PATCH 077/139] Changed some illogic --- core/base/SkillManager.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 9eae73710..316264f80 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -1,12 +1,13 @@ import getpass import importlib import json +import os +import shutil +import threading from pathlib import Path from typing import Dict, Optional -import os import requests -import shutil from core.ProjectAliceExceptions import GithubNotFound, GithubRateLimit, GithubTokenFailed, SkillNotConditionCompliant, SkillStartDelayed, SkillStartingFailed from core.base.SuperManager import SuperManager @@ -44,7 +45,7 @@ def __init__(self): self._busyInstalling = None - self._skillInstallThread = None + self._skillInstallThread: Optional[threading.Thread]= None self._supportedIntents = list() self._allSkills = dict() self._activeSkills = dict() @@ -57,7 +58,6 @@ def onStart(self): super().onStart() self._busyInstalling = self.ThreadManager.newEvent('skillInstallation') - self._skillInstallThread = self.ThreadManager.newThread(name='SkillInstallThread', target=self._checkForSkillInstall, autostart=False) # If it's the first time we start, don't delay skill install and do it on main thread if not self.ConfigManager.getAliceConfigByName('skills'): @@ -67,6 +67,8 @@ def onStart(self): if self.checkForSkillUpdates(): self._checkForSkillInstall() + self._skillInstallThread = self.ThreadManager.newThread(name='SkillInstallThread', target=self._checkForSkillInstall, autostart=False) + self._activeSkills = self._loadSkillList() self._allSkills = {**self._activeSkills, **self._deactivatedSkills, **self._failedSkills} @@ -138,7 +140,9 @@ def failedSkills(self) -> dict: def onBooted(self): self.skillBroadcast(constants.EVENT_BOOTED) - self._skillInstallThread.start() + + if self._skillInstallThread: + self._skillInstallThread.start() def _loadSkillList(self, skillToLoad: str = '', isUpdate: bool = False) -> dict: @@ -389,7 +393,7 @@ def checkForSkillUpdates(self, skillToCheck: str = None) -> bool: @Online(catchOnly=True) def _checkForSkillInstall(self): # Don't start the install timer from the main thread in case it's the first start - if self._skillInstallThread is not None: + if self._skillInstallThread: self.ThreadManager.newTimer(interval=10, func=self._checkForSkillInstall, autoStart=True) root = Path(self.Commons.rootDir(), constants.SKILL_INSTALL_TICKET_PATH) From 2fdd79b2899734c2d938da3abbc6148da8c0f33a Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 19:20:11 +0100 Subject: [PATCH 078/139] Working Deepspeech in EN! Google ASR and Pocketsphinx also working! --- core/asr/model/DeepSpeechASR.py | 7 +++++-- core/asr/model/Recorder.py | 22 +++++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index db6969174..3927a4dc2 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -1,9 +1,9 @@ -import tarfile import threading from pathlib import Path from typing import Generator, Optional import numpy as np +import tarfile from core.asr.model.ASR import ASR from core.asr.model.ASRResult import ASRResult @@ -68,7 +68,7 @@ def onVadDown(self): return if not self._vadTemporisation or not self._vadTemporisation.is_alive(): - self._vadTemporisation = self.ThreadManager.newTimer(interval=2, func=self.vadDown, autoStart=False) + self._vadTemporisation = self.ThreadManager.newTimer(interval=1, func=self.vadDown) def vadDown(self): @@ -87,6 +87,9 @@ def decodeStream(self, session: DialogSession) -> Optional[ASRResult]: self._recorder = recorder streamContext = self._model.createStream() for chunk in recorder: + if not chunk: + break + self._model.feedAudioContent(streamContext, np.frombuffer(chunk, np.int16)) result = self._model.intermediateDecode(streamContext) diff --git a/core/asr/model/Recorder.py b/core/asr/model/Recorder.py index 85cdbb9fa..c94a330ea 100644 --- a/core/asr/model/Recorder.py +++ b/core/asr/model/Recorder.py @@ -1,9 +1,9 @@ import queue -import struct import threading from typing import Optional import paho.mqtt.client as mqtt +import struct from core.base.model.ProjectAliceObject import ProjectAliceObject from core.dialog.model.DialogSession import DialogSession @@ -71,8 +71,24 @@ def onAudioFrame(self, message: mqtt.MQTTMessage): def __iter__(self): - while not self._buffer.empty() or self._recording: - yield self._buffer.get() + while self._recording: + chunk = self._buffer.get() + + if not chunk: + break + + yield chunk + + # Empty the buffer + data = list() + while not self._buffer.empty(): + chunk = self._buffer.get(block=False) + if not chunk: + break + + data.append(chunk) + + yield b''.join(data) def audioStream(self) -> Optional[bytes]: From 2159f739e074dd4098dbe801b327056de24be900 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 19:26:44 +0100 Subject: [PATCH 079/139] Deepspeech becomes the new default ASR --- configTemplate.py | 2 +- core/Initializer.py | 8 ++++---- core/asr/ASRManager.py | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/configTemplate.py b/configTemplate.py index 454ec3511..2b0141656 100644 --- a/configTemplate.py +++ b/configTemplate.py @@ -117,7 +117,7 @@ 'description': 'Should be left as default, this is the port used to find new devices' }, 'asr': { - 'defaultValue': 'pocketsphinx', + 'defaultValue': 'deepspeech', 'dataType' : 'list', 'values' : ['deepspeech', 'pocketsphinx', 'google'], 'description' : 'The ASR to use. Can\'t use an online ASR if you have set keepASROffline to true!', diff --git a/core/Initializer.py b/core/Initializer.py index a8febb09e..aef7cee2e 100644 --- a/core/Initializer.py +++ b/core/Initializer.py @@ -211,7 +211,7 @@ def initProjectAlice(self) -> bool: confs['keepASROffline'] = True confs['keepTTSOffline'] = True confs['skillAutoUpdate'] = False - confs['asr'] = 'pocketsphinx' + confs['asr'] = 'deepspeech' confs['tts'] = 'pico' confs['awsRegion'] = '' confs['awsAccessKey'] = '' @@ -225,10 +225,10 @@ def initProjectAlice(self) -> bool: confs['awsAccessKey'] = initConfs['awsAccessKey'] confs['awsSecretKey'] = initConfs['awsSecretKey'] - confs['asr'] = initConfs['asr'] if initConfs['asr'] in {'pocketsphinx', 'google'} else 'pocketsphinx' + confs['asr'] = initConfs['asr'] if initConfs['asr'] in {'pocketsphinx', 'google', 'deepspeech'} else 'deepspeech' if confs['asr'] == 'google' and not initConfs['googleServiceFile']: - self.logInfo('You cannot use Google ASR without a google service file, falling back to pocket sphinx') - confs['asr'] = 'pocketsphinx' + self.logInfo('You cannot use Google ASR without a google service file, falling back to Deepspeech') + confs['asr'] = 'deepspeech' if initConfs['googleServiceFile']: googleCreds = Path(self._rootDir, 'credentials/googlecredentials.json') diff --git a/core/asr/ASRManager.py b/core/asr/ASRManager.py index ec3d1d090..a4e70f5a7 100644 --- a/core/asr/ASRManager.py +++ b/core/asr/ASRManager.py @@ -67,10 +67,10 @@ def _startASREngine(self): self._asr = None if self._asr is None: - self.logWarning('ASR did not satisfy the user settings, falling back to pocketsphinx') - from core.asr.model.PocketSphinxASR import PocketSphinxASR + self.logWarning('ASR did not satisfy the user settings, falling back to Deepspeech') + from core.asr.model.DeepSpeechASR import DeepSpeechASR - self._asr = PocketSphinxASR() + self._asr = DeepSpeechASR() self._asr.onStart() From 15c1239ab03fd7393248718a9a5bb5d3c2527510 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 19:46:04 +0100 Subject: [PATCH 080/139] Deepspeech auto dependencies check and language model download for EN --- core/asr/model/DeepSpeechASR.py | 33 ++++++++++++++++++++++++++++++--- trained/asr/deepspeech/.gitkeep | 0 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 trained/asr/deepspeech/.gitkeep diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index 3927a4dc2..81a45e6ff 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -32,6 +32,8 @@ def __init__(self): self._capableOfArbitraryCapture = True self._isOnlineASR = False + self._langPath = Path(self.Commons.rootDir(), f'trained/asr/deepspeech/{self.LanguageManager.activeLanguage}') + self._model: Optional[deepspeech.Model] = None self._triggerFlag = self.ThreadManager.newEvent('asrTriggerFlag') self._vadTemporisation: Optional[threading.Timer] = None @@ -39,20 +41,45 @@ def __init__(self): def onStart(self): super().onStart() + + if not self.checkLanguage(): + self.downloadLanguage() + self._model = deepspeech.Model('/home/pi/deepspeech-0.6.1-models/output_graph.tflite', 500) self._model.enableDecoderWithLM('/home/pi/deepspeech-0.6.1-models/lm.binary', '/home/pi/deepspeech-0.6.1-models/trie', 0.75, 1.85) def install(self) -> bool: super().install() + if not self.checkLanguage(): + return self.downloadLanguage() + return True + + + def checkLanguage(self) -> bool: + if not self._langPath.exists(): + self._langPath.mkdir(parents=True) + return False + + if not (self._langPath / 'deepspeech-0.6.1-models/output_graph.tflite').exists(): + return False + + + def downloadLanguage(self) -> bool: try: + self.logInfo(f'Downloading language model for {self.LanguageManager.activeLanguage}, hold on, this is going to take some time!') url = 'https://github.com/mozilla/DeepSpeech/releases/download/v0.6.1/deepspeech-0.6.1-models.tar.gz' - self.Commons.downloadFile(url, str(Path(self.Commons.rootDir(), 'var/voices', url.rsplit('/')[-1]))) - tar = tarfile.open(str(Path(self.Commons.rootDir(), url.rsplit('/')[-1]))) + + downloadPath = (self._langPath / url.rsplit('/')[-1]) + self.Commons.downloadFile(url, str(downloadPath)) + + self.logInfo(f'Language model for {self.LanguageManager.activeLanguage} downloaded, now extracting...') + tar = tarfile.open(downloadPath) tar.extractall() + downloadPath.unlink() return True except Exception as e: - self.logError(f'Error installing dependencies: {e}') + self.logError(f'Error installing language model: {e}') return False diff --git a/trained/asr/deepspeech/.gitkeep b/trained/asr/deepspeech/.gitkeep new file mode 100644 index 000000000..e69de29bb From d909cf6e79dba38f965913d6f3776d0f343d64ea Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 20:05:05 +0100 Subject: [PATCH 081/139] New downloadFile common method, large files throw buffer overflow and files don't download, need streaming download --- core/asr/model/DeepSpeechASR.py | 12 +++++++----- core/commons/CommonsManager.py | 12 +++++++++--- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index 81a45e6ff..297833920 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -66,20 +66,22 @@ def checkLanguage(self) -> bool: def downloadLanguage(self) -> bool: - try: - self.logInfo(f'Downloading language model for {self.LanguageManager.activeLanguage}, hold on, this is going to take some time!') - url = 'https://github.com/mozilla/DeepSpeech/releases/download/v0.6.1/deepspeech-0.6.1-models.tar.gz' + self.logInfo(f'Downloading language model for "{self.LanguageManager.activeLanguage}", hold on, this is going to take some time!') + url = 'https://github.com/mozilla/DeepSpeech/releases/download/v0.6.1/deepspeech-0.6.1-models.tar.gz' - downloadPath = (self._langPath / url.rsplit('/')[-1]) + downloadPath = (self._langPath / url.rsplit('/')[-1]) + try: self.Commons.downloadFile(url, str(downloadPath)) - self.logInfo(f'Language model for {self.LanguageManager.activeLanguage} downloaded, now extracting...') + self.logInfo(f'Language model for "{self.LanguageManager.activeLanguage}" downloaded, now extracting...') tar = tarfile.open(downloadPath) tar.extractall() + downloadPath.unlink() return True except Exception as e: self.logError(f'Error installing language model: {e}') + downloadPath.unlink() return False diff --git a/core/commons/CommonsManager.py b/core/commons/CommonsManager.py index 5ad63c8fe..c3bd2f7ee 100644 --- a/core/commons/CommonsManager.py +++ b/core/commons/CommonsManager.py @@ -303,10 +303,16 @@ def runSystemCommand(commands: list, shell: bool = False, stdout = subprocess.PI def downloadFile(self, url: str, dest: str) -> bool: - try: - with Path(self.Commons.rootDir(), dest).open('wb') as fp: - fp.write(requests.get(url).content) + if not self.Commons.rootDir() in dest: + dest = self.Commons.rootDir() + dest + try: + with requests.get(url, stream=True) as r: + r.raise_for_status() + with Path(dest).open('wb') as fp: + for chunk in r.iter_content(chunk_size=8192): + if chunk: + fp.write(chunk) return True except Exception as e: self.logWarning(f'Failed downloading file: {e}') From 39532cd3fac481230b1abfed12927b003bf7aaf4 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 20:12:41 +0100 Subject: [PATCH 082/139] Unhardcoding deepspeech paths --- core/asr/model/DeepSpeechASR.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index 297833920..8c4b523e0 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -45,8 +45,8 @@ def onStart(self): if not self.checkLanguage(): self.downloadLanguage() - self._model = deepspeech.Model('/home/pi/deepspeech-0.6.1-models/output_graph.tflite', 500) - self._model.enableDecoderWithLM('/home/pi/deepspeech-0.6.1-models/lm.binary', '/home/pi/deepspeech-0.6.1-models/trie', 0.75, 1.85) + self._model = deepspeech.Model(f'{self._langPath}/deepspeech-0.6.1-models/output_graph.tflite', 500) + self._model.enableDecoderWithLM(f'{self._langPath}/deepspeech-0.6.1-models/lm.binary', f'{self._langPath}/deepspeech-0.6.1-models/trie', 0.75, 1.85) def install(self) -> bool: From 27601466a6babd157701cf5445010695741b5d06 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 20:44:03 +0100 Subject: [PATCH 083/139] Fix model download --- core/asr/model/DeepSpeechASR.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index 8c4b523e0..d531007ce 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -3,7 +3,6 @@ from typing import Generator, Optional import numpy as np -import tarfile from core.asr.model.ASR import ASR from core.asr.model.ASRResult import ASRResult @@ -74,8 +73,7 @@ def downloadLanguage(self) -> bool: self.Commons.downloadFile(url, str(downloadPath)) self.logInfo(f'Language model for "{self.LanguageManager.activeLanguage}" downloaded, now extracting...') - tar = tarfile.open(downloadPath) - tar.extractall() + self.Commons.runSystemCommand(['tar', '-C', f'{str(downloadPath.parent)}', '-zxvf', str(downloadPath)]) downloadPath.unlink() return True From a78920cc96556e232eb0ac12d16df6a4305cb833 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 21:24:57 +0100 Subject: [PATCH 084/139] Writting Alice's running version into created skill readme as min version --- core/base/SkillManager.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 316264f80..0a41e7c8a 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -1,13 +1,13 @@ import getpass import importlib import json -import os -import shutil import threading from pathlib import Path from typing import Dict, Optional +import os import requests +import shutil from core.ProjectAliceExceptions import GithubNotFound, GithubRateLimit, GithubTokenFailed, SkillNotConditionCompliant, SkillStartDelayed, SkillStartingFailed from core.base.SuperManager import SuperManager @@ -842,6 +842,7 @@ def createNewSkill(self, skillDefinition: dict) -> bool: # Readme file content = Path(skillDir, 'README.md').read_text().replace('%skillname%', skillName) \ .replace('%author%', self.ConfigManager.getAliceConfigByName('githubUsername')) \ + .replace('%minVersion%', constants.VERSION) \ .replace('%description%', skillDefinition['description'].capitalize()) \ .replace('%conditions%', readmeConditions) \ .replace('%requirements%', readmeReqs) \ From 5b56db67843593596fd0d9a926a20f82bf5bd5e1 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 7 Mar 2020 22:22:00 +0100 Subject: [PATCH 085/139] Fix deepspeech redownload --- core/asr/model/DeepSpeechASR.py | 1 + 1 file changed, 1 insertion(+) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index d531007ce..4ff8eceb7 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -62,6 +62,7 @@ def checkLanguage(self) -> bool: if not (self._langPath / 'deepspeech-0.6.1-models/output_graph.tflite').exists(): return False + return True def downloadLanguage(self) -> bool: From ab2cca701ac2b345f575394577803c104231210c Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 8 Mar 2020 06:15:55 +0100 Subject: [PATCH 086/139] Simplifying returns --- core/asr/model/DeepSpeechASR.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/core/asr/model/DeepSpeechASR.py b/core/asr/model/DeepSpeechASR.py index 4ff8eceb7..0ac89fca1 100644 --- a/core/asr/model/DeepSpeechASR.py +++ b/core/asr/model/DeepSpeechASR.py @@ -50,9 +50,7 @@ def onStart(self): def install(self) -> bool: super().install() - if not self.checkLanguage(): - return self.downloadLanguage() - return True + return self.downloadLanguage() if not self.checkLanguage() else True def checkLanguage(self) -> bool: @@ -60,9 +58,7 @@ def checkLanguage(self) -> bool: self._langPath.mkdir(parents=True) return False - if not (self._langPath / 'deepspeech-0.6.1-models/output_graph.tflite').exists(): - return False - return True + return False if not (self._langPath / 'deepspeech-0.6.1-models/output_graph.tflite').exists() else True def downloadLanguage(self) -> bool: From 52eeb04b85e07c29a16c9f3309cc9605af480fbc Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 8 Mar 2020 06:20:22 +0100 Subject: [PATCH 087/139] Fix for #212 AWS regions missing --- configTemplate.py | 225 +++++++++++++++++++++++++--------------------- 1 file changed, 122 insertions(+), 103 deletions(-) diff --git a/configTemplate.py b/configTemplate.py index 2b0141656..88e23637a 100644 --- a/configTemplate.py +++ b/configTemplate.py @@ -1,216 +1,235 @@ settings = { - 'adminPinCode': { + 'adminPinCode' : { 'defaultValue': '', 'dataType' : 'password', 'description' : 'Admin pin code, only numbers, 4 digits', 'beforeUpdate': 'checkNewAdminPinCode', 'onUpdate' : 'updateAdminPinCode' }, - 'autoReportSkillErrors': { + 'autoReportSkillErrors' : { 'defaultValue': False, - 'dataType': 'boolean', - 'description': 'If true, an error thrown by a skill will automatically post a github issue and ping the author' + 'dataType' : 'boolean', + 'description' : 'If true, an error thrown by a skill will automatically post a github issue and ping the author' }, - 'notUnderstoodRetries' : { + 'notUnderstoodRetries' : { 'defaultValue': 3, 'dataType' : 'integer', 'description' : 'Defines how many times Alice will ask to repeat if not understood before she gives up' }, - 'ssid' : { + 'ssid' : { 'defaultValue': '', 'dataType' : 'string', 'description' : 'Your Wifi name' }, - 'debug' : { + 'debug' : { 'defaultValue': False, 'dataType' : 'boolean', 'description' : 'If true debug logs will show' }, - 'wifipassword' : { + 'wifipassword' : { 'defaultValue': '', 'dataType' : 'password', 'description' : 'Your Wifi password' }, - 'mqttHost' : { + 'mqttHost' : { 'defaultValue': 'localhost', 'dataType' : 'string', 'description' : 'Mqtt server ip adress', 'onUpdate' : 'updateMqttSettings' }, - 'mqttPort' : { + 'mqttPort' : { 'defaultValue': 1883, 'dataType' : 'integer', 'description' : 'Mqtt server port', 'onUpdate' : 'updateMqttSettings' }, - 'mqttUser' : { + 'mqttUser' : { 'defaultValue': '', 'dataType' : 'string', 'description' : 'Mqtt user. Leave blank if not password protected', 'onUpdate' : 'updateMqttSettings' }, - 'mqttPassword': { + 'mqttPassword' : { 'defaultValue': '', 'dataType' : 'password', 'description' : 'Mqtt password. Leave blank if not password protected', 'onUpdate' : 'updateMqttSettings' }, - 'mqttTLSFile': { + 'mqttTLSFile' : { 'defaultValue': '', 'dataType' : 'string', 'description' : 'Mqtt TLS file path for SSL', 'onUpdate' : 'updateMqttSettings' }, - 'micSampleRate': { + 'micSampleRate' : { 'defaultValue': 44100, - 'dataType': 'integer', - 'description': 'Your microphone sample rate' + 'dataType' : 'integer', + 'description' : 'Your microphone sample rate' }, - 'micChannels': { + 'micChannels' : { 'defaultValue': 1, - 'dataType': 'integer', - 'description': 'How many channel does your microphone support' + 'dataType' : 'integer', + 'description' : 'How many channel does your microphone support' }, - 'enableDataStoring': { + 'enableDataStoring' : { 'defaultValue': False, - 'dataType': 'boolean', - 'description': 'Enables local telemetry data storing' + 'dataType' : 'boolean', + 'description' : 'Enables local telemetry data storing' }, - 'autoPruneStoredData': { + 'autoPruneStoredData' : { 'defaultValue': 0, - 'dataType': 'integer', - 'description': 'Set to max entries to keep, 0 to disable pruning' + 'dataType' : 'integer', + 'description' : 'Set to max entries to keep, 0 to disable pruning' }, - 'probabilityThreshold': { + 'probabilityThreshold' : { 'defaultValue': 0.45, - 'dataType': 'float', - 'description': 'Capture intents with lower probability score than this settings will trigger Alice not understood' + 'dataType' : 'float', + 'description' : 'Capture intents with lower probability score than this settings will trigger Alice not understood' }, - 'stayCompletlyOffline': { + 'stayCompletlyOffline' : { 'defaultValue': False, - 'dataType': 'boolean', - 'description': 'Nothing goes out! Well, that also means no skill updates, no access to web APIs' + 'dataType' : 'boolean', + 'description' : 'Nothing goes out! Well, that also means no skill updates, no access to web APIs' }, - 'keepASROffline': { + 'keepASROffline' : { 'defaultValue': True, - 'dataType': 'boolean', - 'description': 'Do not use any online ASR such as Google ASR' + 'dataType' : 'boolean', + 'description' : 'Do not use any online ASR such as Google ASR' }, - 'keepTTSOffline': { + 'keepTTSOffline' : { 'defaultValue': True, - 'dataType': 'boolean', - 'description': 'Do not use any online TTS such as Google Wavenet or Amazon Polly' + 'dataType' : 'boolean', + 'description' : 'Do not use any online TTS such as Google Wavenet or Amazon Polly' }, - 'shortReplies': { + 'shortReplies' : { 'defaultValue': False, - 'dataType': 'boolean', - 'description': 'Use only short replies from Alice, when available' + 'dataType' : 'boolean', + 'description' : 'Use only short replies from Alice, when available' }, - 'whisperWhenSleeping': { + 'whisperWhenSleeping' : { 'defaultValue': True, - 'dataType': 'boolean', - 'description': 'Only available with Amazon Polly' + 'dataType' : 'boolean', + 'description' : 'Only available with Amazon Polly' }, 'newDeviceBroadcastPort': { 'defaultValue': 12354, - 'dataType': 'integer', - 'description': 'Should be left as default, this is the port used to find new devices' + 'dataType' : 'integer', + 'description' : 'Should be left as default, this is the port used to find new devices' }, - 'asr': { + 'asr' : { 'defaultValue': 'deepspeech', 'dataType' : 'list', 'values' : ['deepspeech', 'pocketsphinx', 'google'], 'description' : 'The ASR to use. Can\'t use an online ASR if you have set keepASROffline to true!', 'onUpdate' : 'reloadASR' }, - 'tts': { + 'tts' : { 'defaultValue': 'pico', - 'dataType': 'list', - 'values': {'Pico': 'pico', 'Mycroft': 'mycroft', 'Amazon Polly': 'amazon', 'Google Wavenet': 'google', 'Snips Makers TTS': 'snips'}, - 'description': 'The TTS to use. Can\'t use an online TTS if you have set keepTTSOffline!' + 'dataType' : 'list', + 'values' : {'Pico': 'pico', 'Mycroft': 'mycroft', 'Amazon Polly': 'amazon', 'Google Wavenet': 'google', 'Snips Makers TTS': 'snips'}, + 'description' : 'The TTS to use. Can\'t use an online TTS if you have set keepTTSOffline!' }, - 'ttsLanguage': { + 'ttsLanguage' : { 'defaultValue': 'en-US', - 'dataType': 'string', - 'description': 'Language for the TTS to use' + 'dataType' : 'string', + 'description' : 'Language for the TTS to use' }, - 'ttsType': { + 'ttsType' : { 'defaultValue': 'male', - 'dataType': 'list', - 'values': ['male', 'female'], - 'description': 'Choose the voice gender you want' + 'dataType' : 'list', + 'values' : ['male', 'female'], + 'description' : 'Choose the voice gender you want' }, - 'ttsVoice' : { + 'ttsVoice' : { 'defaultValue': 'en-US', - 'dataType': 'string', - 'description': 'The voice the TTS should use. Find lists on respective TTS websites' + 'dataType' : 'string', + 'description' : 'The voice the TTS should use. Find lists on respective TTS websites' }, - 'awsRegion' : { + 'awsRegion' : { 'defaultValue': 'eu-central-1', - 'dataType': 'list', - 'values': ['eu-central-1', 'eu-west-1', ' eu-west-2', 'eu-west-3', 'eu-north-1', 'us-east-1', 'us-east-2', 'us-west-1', 'us-west-2'], - 'description': 'Region to use for Amazon Polly' - }, - 'awsAccessKey' : { + 'dataType' : 'list', + 'values' : [ + 'eu-north-1', + 'ap-south-1', + 'eu-west-3', + 'eu-west-2', + 'eu-west-1', + 'ap-northeast-2', + 'me-south-1', + 'ap-northeast-1', + 'sa-east-1', + 'ca-central-1', + 'ap-east-1', + 'ap-southeast-1', + 'ap-southeast-2', + 'eu-central-1', + 'us-east-1', + 'us-east-2', + 'us-west-1', + 'us-west-2' + ], + 'description' : 'Region to use for Amazon Polly' + }, + 'awsAccessKey' : { 'defaultValue': '', 'dataType' : 'password', 'description' : 'Your Amazon services access key' }, - 'awsSecretKey' : { + 'awsSecretKey' : { 'defaultValue': '', 'dataType' : 'password', 'description' : 'Your Amazon services secret key' }, - 'useHLC' : { + 'useHLC' : { 'defaultValue': False, 'dataType' : 'boolean', 'description' : 'Enables Hermes Led Control for visual feedback from your assistant' }, - 'activeLanguage' : { + 'activeLanguage' : { 'defaultValue': 'en', 'dataType' : 'list', 'values' : ['en', 'fr', 'de', 'it', 'pt'], 'description' : 'Project Alice active language' }, - 'activeCountryCode' : { + 'activeCountryCode' : { 'defaultValue': 'US', 'dataType' : 'string', 'description' : 'Project Alice active country code' }, - 'aliceAutoUpdate' : { + 'aliceAutoUpdate' : { 'defaultValue': False, 'dataType' : 'boolean', 'description' : 'Whether Alice should auto update, checked every hour' }, - 'skillAutoUpdate': { + 'skillAutoUpdate' : { 'defaultValue': False, 'dataType' : 'boolean', 'description' : 'Whether skills should auto update, checked every 15 minutes' }, - 'githubUsername': { + 'githubUsername' : { 'defaultValue': '', 'dataType' : 'string', 'description' : 'Not mendatory, your github username and token allows you to use Github API much more, such as checking for skills, updating them etc etc' }, - 'githubToken': { + 'githubToken' : { 'defaultValue': '', 'dataType' : 'password', 'description' : 'Not mendatory, your github username and token allows you to use Github API much more, such as checking for skills, updating them etc etc' }, - 'aliceUpdateChannel': { + 'aliceUpdateChannel' : { 'defaultValue': 'master', 'dataType' : 'list', 'values' : {'Stable': 'master', 'Release candidate': 'rc', 'Beta': 'beta', 'Alpha': 'alpha'}, 'description' : 'Choose your update frequency. Release is the only supposedly safe option! But if you like to live on the edge, alpha will allow you to preview what\'s coming next!' }, - 'skillsUpdateChannel': { + 'skillsUpdateChannel' : { 'defaultValue': 'master', 'dataType' : 'list', 'values' : {'Stable': 'master', 'Release candidate': 'rc', 'Beta': 'beta', 'Alpha': 'alpha'}, 'description' : 'Choose your skill update frequency. Release is the only supposedly safe option! But if you like to live on the edge, alpha will allow you to preview what\'s coming next!', 'onUpdate' : 'refreshStoreData' }, - 'supportedLanguages': { + 'supportedLanguages' : { 'defaultValue': 'en', 'dataType' : 'list', 'values' : { @@ -231,50 +250,50 @@ 'countryCode': 'IT' } }, - 'display': 'hidden' + 'display' : 'hidden' }, - 'baseCurrency': { + 'baseCurrency' : { 'defaultValue': 'CHF', - 'dataType': 'list', - 'values': ['CHF', 'EUR', 'USD', 'GBP', 'AUD'], - 'description': 'The currency used by Project Alice' + 'dataType' : 'list', + 'values' : ['CHF', 'EUR', 'USD', 'GBP', 'AUD'], + 'description' : 'The currency used by Project Alice' }, - 'baseUnits': { + 'baseUnits' : { 'defaultValue': 'metric', - 'dataType': 'list', - 'values': ['metric', 'kelvin', 'imperial'], - 'description': 'Units to use with Project Alice' + 'dataType' : 'list', + 'values' : ['metric', 'kelvin', 'imperial'], + 'description' : 'Units to use with Project Alice' }, - 'nluEngine': { + 'nluEngine' : { 'defaultValue': 'snips', - 'dataType': 'list', - 'values': ['snips'], - 'description': 'Natural Language Understanding engine to use' + 'dataType' : 'list', + 'values' : ['snips'], + 'description' : 'Natural Language Understanding engine to use' }, - 'onReboot': { + 'onReboot' : { 'defaultValue': '', - 'dataType': 'string', - 'display': 'hidden' + 'dataType' : 'string', + 'display' : 'hidden' }, - 'webInterfaceActive': { + 'webInterfaceActive' : { 'defaultValue': True, - 'dataType': 'boolean', - 'description': 'Activates the web interface to be reached by browsing to x.x.x.x:webInterfacePort, e.g. 192.168.1.2:5000' + 'dataType' : 'boolean', + 'description' : 'Activates the web interface to be reached by browsing to x.x.x.x:webInterfacePort, e.g. 192.168.1.2:5000' }, - 'webInterfacePort': { + 'webInterfacePort' : { 'defaultValue': 5000, - 'dataType': 'integer', - 'description': 'Change the web interface port to be used' + 'dataType' : 'integer', + 'description' : 'Change the web interface port to be used' }, - 'devMode': { + 'devMode' : { 'defaultValue': False, - 'dataType': 'boolean', - 'description': 'Activates the developer part of the interface, for skill development' + 'dataType' : 'boolean', + 'description' : 'Activates the developer part of the interface, for skill development' }, # ----------------------- # Skills # ----------------------- - 'skills': {} + 'skills' : {} } From a73e8658ac4b4000f0556259f87b1907f3d113e5 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 8 Mar 2020 06:31:55 +0100 Subject: [PATCH 088/139] Some unittest fixes --- tests/unittests/base/model/test_AliceSkill.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tests/unittests/base/model/test_AliceSkill.py b/tests/unittests/base/model/test_AliceSkill.py index 4142d76e1..85d562e08 100644 --- a/tests/unittests/base/model/test_AliceSkill.py +++ b/tests/unittests/base/model/test_AliceSkill.py @@ -3,11 +3,13 @@ from unittest.mock import MagicMock, PropertyMock from core.base.model.AliceSkill import AliceSkill -from core.util.Decorators import IntentHandler, MqttHandler from core.base.model.Intent import Intent from core.user.model.AccessLevels import AccessLevel +from core.util.Decorators import IntentHandler, MqttHandler + class TestAliceSkill(unittest.TestCase): + @mock.patch('core.util.Decorators.Intent.ProtectedIntentManager', new_callable=PropertyMock) @mock.patch('core.util.Decorators.Intent.ConfigManager', new_callable=PropertyMock) def testFindDecoratedIntents(self, mock_config, mock_protected): @@ -19,19 +21,23 @@ def testFindDecoratedIntents(self, mock_config, mock_protected): mock_protected.return_value = property_mock class ExampleSkill(AliceSkill): - #ignore all stuff that would happen in the AliceSkill init + + # ignore all stuff that would happen in the AliceSkill init def __init__(self): self._name = 'ExampleSkill' - @IntentHandler('intent1', authOnly=AccessLevel.ADMIN) + + @IntentHandler('intent1', authLevel=AccessLevel.ADMIN) def single_decorator(self, *args, **kwargs): return self, args, kwargs + @IntentHandler('intent2', requiredState='exampleState') @IntentHandler('intent3', isProtected=True) def multiple_decorator(self, *args, **kwargs): return self, args, kwargs + @MqttHandler('hermes/intent/unittest:intent2', requiredState='exampleState2') def mqtt_decorator(self, *args, **kwargs): return self, args, kwargs @@ -98,7 +104,7 @@ def exampleFunc(self): # no decorated functions initIntents = [ - Intent('Intent1', authOnly=AccessLevel.ADMIN), + Intent('Intent1', authLevel=AccessLevel.ADMIN), 'hermes/intent/unittest:Intent2', (Intent('intent3'), exampleSkill.exampleFunc), ('hermes/intent/unittest:intent4', exampleSkill.exampleFunc) @@ -143,7 +149,7 @@ def exampleFunc(self): } initIntents = [ - Intent('intent1', authOnly=AccessLevel.ADMIN) + Intent('intent1', authLevel=AccessLevel.ADMIN) ] mappings = exampleSkill.buildIntentList(initIntents) From 2b5d45a9dc3f16696fe5a5cf1e2550d27492736e Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Sun, 8 Mar 2020 08:08:01 +0100 Subject: [PATCH 089/139] Fix #213 integer password settings turned into strings --- configTemplate.py | 59 ++++++++++++++++++++++++++--- core/interface/templates/admin.html | 21 ++++++---- 2 files changed, 67 insertions(+), 13 deletions(-) diff --git a/configTemplate.py b/configTemplate.py index 88e23637a..08d43bd18 100644 --- a/configTemplate.py +++ b/configTemplate.py @@ -1,7 +1,8 @@ settings = { 'adminPinCode' : { 'defaultValue': '', - 'dataType' : 'password', + 'dataType' : 'integer', + 'isSensitve' : True, 'description' : 'Admin pin code, only numbers, 4 digits', 'beforeUpdate': 'checkNewAdminPinCode', 'onUpdate' : 'updateAdminPinCode' @@ -9,116 +10,138 @@ 'autoReportSkillErrors' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'If true, an error thrown by a skill will automatically post a github issue and ping the author' }, 'notUnderstoodRetries' : { 'defaultValue': 3, 'dataType' : 'integer', + 'isSensitve' : False, 'description' : 'Defines how many times Alice will ask to repeat if not understood before she gives up' }, 'ssid' : { 'defaultValue': '', 'dataType' : 'string', + 'isSensitve' : False, 'description' : 'Your Wifi name' }, 'debug' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'If true debug logs will show' }, 'wifipassword' : { 'defaultValue': '', - 'dataType' : 'password', + 'dataType' : 'string', + 'isSensitve' : True, 'description' : 'Your Wifi password' }, 'mqttHost' : { 'defaultValue': 'localhost', 'dataType' : 'string', + 'isSensitve' : False, 'description' : 'Mqtt server ip adress', 'onUpdate' : 'updateMqttSettings' }, 'mqttPort' : { 'defaultValue': 1883, 'dataType' : 'integer', + 'isSensitve' : False, 'description' : 'Mqtt server port', 'onUpdate' : 'updateMqttSettings' }, 'mqttUser' : { 'defaultValue': '', 'dataType' : 'string', + 'isSensitve' : False, 'description' : 'Mqtt user. Leave blank if not password protected', 'onUpdate' : 'updateMqttSettings' }, 'mqttPassword' : { 'defaultValue': '', - 'dataType' : 'password', + 'dataType' : 'string', + 'isSensitve' : True, 'description' : 'Mqtt password. Leave blank if not password protected', 'onUpdate' : 'updateMqttSettings' }, 'mqttTLSFile' : { 'defaultValue': '', 'dataType' : 'string', + 'isSensitve' : False, 'description' : 'Mqtt TLS file path for SSL', 'onUpdate' : 'updateMqttSettings' }, 'micSampleRate' : { 'defaultValue': 44100, 'dataType' : 'integer', + 'isSensitve' : False, 'description' : 'Your microphone sample rate' }, 'micChannels' : { 'defaultValue': 1, 'dataType' : 'integer', + 'isSensitve' : False, 'description' : 'How many channel does your microphone support' }, 'enableDataStoring' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Enables local telemetry data storing' }, 'autoPruneStoredData' : { 'defaultValue': 0, 'dataType' : 'integer', + 'isSensitve' : False, 'description' : 'Set to max entries to keep, 0 to disable pruning' }, 'probabilityThreshold' : { 'defaultValue': 0.45, 'dataType' : 'float', + 'isSensitve' : False, 'description' : 'Capture intents with lower probability score than this settings will trigger Alice not understood' }, 'stayCompletlyOffline' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Nothing goes out! Well, that also means no skill updates, no access to web APIs' }, 'keepASROffline' : { 'defaultValue': True, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Do not use any online ASR such as Google ASR' }, 'keepTTSOffline' : { 'defaultValue': True, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Do not use any online TTS such as Google Wavenet or Amazon Polly' }, 'shortReplies' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Use only short replies from Alice, when available' }, 'whisperWhenSleeping' : { 'defaultValue': True, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Only available with Amazon Polly' }, 'newDeviceBroadcastPort': { 'defaultValue': 12354, 'dataType' : 'integer', + 'isSensitve' : False, 'description' : 'Should be left as default, this is the port used to find new devices' }, 'asr' : { 'defaultValue': 'deepspeech', 'dataType' : 'list', + 'isSensitve' : False, 'values' : ['deepspeech', 'pocketsphinx', 'google'], 'description' : 'The ASR to use. Can\'t use an online ASR if you have set keepASROffline to true!', 'onUpdate' : 'reloadASR' @@ -126,28 +149,33 @@ 'tts' : { 'defaultValue': 'pico', 'dataType' : 'list', + 'isSensitve' : False, 'values' : {'Pico': 'pico', 'Mycroft': 'mycroft', 'Amazon Polly': 'amazon', 'Google Wavenet': 'google', 'Snips Makers TTS': 'snips'}, 'description' : 'The TTS to use. Can\'t use an online TTS if you have set keepTTSOffline!' }, 'ttsLanguage' : { 'defaultValue': 'en-US', 'dataType' : 'string', + 'isSensitve' : False, 'description' : 'Language for the TTS to use' }, 'ttsType' : { 'defaultValue': 'male', 'dataType' : 'list', + 'isSensitve' : False, 'values' : ['male', 'female'], 'description' : 'Choose the voice gender you want' }, 'ttsVoice' : { 'defaultValue': 'en-US', 'dataType' : 'string', + 'isSensitve' : False, 'description' : 'The voice the TTS should use. Find lists on respective TTS websites' }, 'awsRegion' : { 'defaultValue': 'eu-central-1', 'dataType' : 'list', + 'isSensitve' : False, 'values' : [ 'eu-north-1', 'ap-south-1', @@ -172,59 +200,70 @@ }, 'awsAccessKey' : { 'defaultValue': '', - 'dataType' : 'password', + 'dataType' : 'string', + 'isSensitve' : True, 'description' : 'Your Amazon services access key' }, 'awsSecretKey' : { 'defaultValue': '', - 'dataType' : 'password', + 'dataType' : 'string', + 'isSensitve' : True, 'description' : 'Your Amazon services secret key' }, 'useHLC' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Enables Hermes Led Control for visual feedback from your assistant' }, 'activeLanguage' : { 'defaultValue': 'en', 'dataType' : 'list', + 'isSensitve' : False, 'values' : ['en', 'fr', 'de', 'it', 'pt'], 'description' : 'Project Alice active language' }, 'activeCountryCode' : { 'defaultValue': 'US', 'dataType' : 'string', + 'isSensitve' : False, 'description' : 'Project Alice active country code' }, 'aliceAutoUpdate' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Whether Alice should auto update, checked every hour' }, 'skillAutoUpdate' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Whether skills should auto update, checked every 15 minutes' }, 'githubUsername' : { 'defaultValue': '', 'dataType' : 'string', + 'isSensitve' : False, 'description' : 'Not mendatory, your github username and token allows you to use Github API much more, such as checking for skills, updating them etc etc' }, 'githubToken' : { 'defaultValue': '', - 'dataType' : 'password', + 'dataType' : 'string', + 'isSensitve' : True, 'description' : 'Not mendatory, your github username and token allows you to use Github API much more, such as checking for skills, updating them etc etc' }, 'aliceUpdateChannel' : { 'defaultValue': 'master', 'dataType' : 'list', + 'isSensitve' : False, 'values' : {'Stable': 'master', 'Release candidate': 'rc', 'Beta': 'beta', 'Alpha': 'alpha'}, 'description' : 'Choose your update frequency. Release is the only supposedly safe option! But if you like to live on the edge, alpha will allow you to preview what\'s coming next!' }, 'skillsUpdateChannel' : { 'defaultValue': 'master', 'dataType' : 'list', + 'isSensitve' : False, 'values' : {'Stable': 'master', 'Release candidate': 'rc', 'Beta': 'beta', 'Alpha': 'alpha'}, 'description' : 'Choose your skill update frequency. Release is the only supposedly safe option! But if you like to live on the edge, alpha will allow you to preview what\'s coming next!', 'onUpdate' : 'refreshStoreData' @@ -232,6 +271,7 @@ 'supportedLanguages' : { 'defaultValue': 'en', 'dataType' : 'list', + 'isSensitve' : False, 'values' : { 'en': { 'default' : True, @@ -255,39 +295,46 @@ 'baseCurrency' : { 'defaultValue': 'CHF', 'dataType' : 'list', + 'isSensitve' : False, 'values' : ['CHF', 'EUR', 'USD', 'GBP', 'AUD'], 'description' : 'The currency used by Project Alice' }, 'baseUnits' : { 'defaultValue': 'metric', 'dataType' : 'list', + 'isSensitve' : False, 'values' : ['metric', 'kelvin', 'imperial'], 'description' : 'Units to use with Project Alice' }, 'nluEngine' : { 'defaultValue': 'snips', 'dataType' : 'list', + 'isSensitve' : False, 'values' : ['snips'], 'description' : 'Natural Language Understanding engine to use' }, 'onReboot' : { 'defaultValue': '', 'dataType' : 'string', + 'isSensitve' : False, 'display' : 'hidden' }, 'webInterfaceActive' : { 'defaultValue': True, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Activates the web interface to be reached by browsing to x.x.x.x:webInterfacePort, e.g. 192.168.1.2:5000' }, 'webInterfacePort' : { 'defaultValue': 5000, 'dataType' : 'integer', + 'isSensitve' : False, 'description' : 'Change the web interface port to be used' }, 'devMode' : { 'defaultValue': False, 'dataType' : 'boolean', + 'isSensitve' : False, 'description' : 'Activates the developer part of the interface, for skill development' }, diff --git a/core/interface/templates/admin.html b/core/interface/templates/admin.html index 3750ca5e2..6032162a2 100644 --- a/core/interface/templates/admin.html +++ b/core/interface/templates/admin.html @@ -35,14 +35,21 @@ {% elif aliceSettingsTemplate[settingName]['dataType'] == 'integer' %} - - {% elif aliceSettingsTemplate[settingName]['dataType'] == 'password' %} - + {% if aliceSettingsTemplate[settingName]['isSensitive'] %} + + {% else %} + + {% endif %} {% elif aliceSettingsTemplate[settingName]['dataType'] == 'string' %} - + {% if aliceSettingsTemplate[settingName]['isSensitive'] %} + + {% else %} + + {% endif %} {% elif aliceSettingsTemplate[settingName]['dataType'] == 'list' %} {% if aliceSettingsTemplate[settingName]['values'] is mapping %} {% elif skill.getSkillConfigsTemplate()[settingName]['dataType'] == 'integer' %} - - {% elif skill.getSkillConfigsTemplate()[settingName]['dataType'] == 'password' %} - + {% if skill.getSkillConfigsTemplate()[settingName]['isSensitive'] %} + + {% else %} + + {% endif %} {% elif skill.getSkillConfigsTemplate()[settingName]['dataType'] == 'string' %} - + {% if skill.getSkillConfigsTemplate()[settingName]['isSensitive'] %} + + {% else %} + + {% endif %} {% elif skill.getSkillConfigsTemplate()[settingName]['dataType'] == 'list' %} {% if skill.getSkillConfigsTemplate()[settingName]['values'] is mapping %} {% elif aliceSettingsTemplate[settingName]['dataType'] == 'integer' %} - {% if aliceSettingsTemplate[settingName]['isSensitive'] %} + {% if aliceSettingsTemplate[settingName]['isSensitive'] is sameas true %} {% else %} @@ -43,7 +43,7 @@ id="{{ settingName }}"> {% endif %} {% elif aliceSettingsTemplate[settingName]['dataType'] == 'string' %} - {% if aliceSettingsTemplate[settingName]['isSensitive'] %} + {% if aliceSettingsTemplate[settingName]['isSensitive'] is sameas true %} {% else %} diff --git a/core/interface/templates/skills.html b/core/interface/templates/skills.html index 13d48968d..a002058e2 100644 --- a/core/interface/templates/skills.html +++ b/core/interface/templates/skills.html @@ -31,7 +31,7 @@ {% elif skill.getSkillConfigsTemplate()[settingName]['dataType'] == 'integer' %} - {% if skill.getSkillConfigsTemplate()[settingName]['isSensitive'] %} + {% if skill.getSkillConfigsTemplate()[settingName]['isSensitive'] is sameas true %} {% else %} @@ -39,7 +39,7 @@ id="{{ settingName }}"> {% endif %} {% elif skill.getSkillConfigsTemplate()[settingName]['dataType'] == 'string' %} - {% if skill.getSkillConfigsTemplate()[settingName]['isSensitive'] %} + {% if skill.getSkillConfigsTemplate()[settingName]['isSensitive'] is sameas true %} {% else %} From d92738868fe7aded016603993e064df6e8e3ae0d Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Fri, 13 Mar 2020 13:02:31 +0100 Subject: [PATCH 109/139] Trying to fix #211. This is untested! --- core/base/SkillManager.py | 32 +++++++++++++++++++----------- core/interface/api/SkillsApi.py | 12 +---------- core/interface/views/SkillsView.py | 25 ++++------------------- 3 files changed, 25 insertions(+), 44 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index a4686f1b2..5b55789db 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -1,13 +1,13 @@ import getpass import importlib import json +import os +import shutil import threading from pathlib import Path from typing import Dict, Optional -import os import requests -import shutil from core.ProjectAliceExceptions import GithubNotFound, GithubRateLimit, GithubTokenFailed, SkillNotConditionCompliant, SkillStartDelayed, SkillStartingFailed from core.base.SuperManager import SuperManager @@ -365,16 +365,9 @@ def checkForSkillUpdates(self, skillToCheck: str = None) -> bool: elif skillName in self._deactivatedSkills: self._deactivatedSkills[skillName].updateAvailable = True else: - req = requests.get(f'{constants.GITHUB_RAW_URL}/skill_{skillName}/{self.SkillStoreManager.getSkillUpdateTag(skillName)}/{skillName}.install') - if req.status_code == 404: - raise GithubNotFound - - remoteFile = req.json() - if not remoteFile: + if not self.downloadInstallTicket(skillName): raise Exception - skillFile = Path(self.Commons.rootDir(), constants.SKILL_INSTALL_TICKET_PATH, skillName + '.install') - skillFile.write_text(json.dumps(remoteFile)) if skillName in self._failedSkills: del self._failedSkills[skillName] else: @@ -605,7 +598,7 @@ def checkSkillConditions(self, skillName: str, conditions: dict, availableSkills raise SkillNotConditionCompliant(message=notCompliant, skillName=skillName, condition=conditionName, conditionValue=conditionValue) elif requiredSkill['name'] not in availableSkills: self.logInfo(f'Skill {skillName} has another skill as dependency, adding download') - if not self.Commons.downloadFile(requiredSkill['url'], Path(self.Commons.rootDir(), f"system/skillInstallTickets/{requiredSkill['name']}.install")): + if not self.downloadInstallTicket(requiredSkill['name']): raise SkillNotConditionCompliant(message=notCompliant, skillName=skillName, condition=conditionName, conditionValue=conditionValue) elif conditionName == 'notSkill': @@ -706,7 +699,7 @@ def wipeSkills(self, addDefaults: bool = True): 'https://skills.projectalice.ch/DateDayTimeYear' ] for link in tickets: - self.Commons.downloadFile(link, f'system/skillInstallTickets/{link.rsplit("/")[-1]}.install') + self.downloadInstallTicket(link.rsplit('/')[-1]) def createNewSkill(self, skillDefinition: dict) -> bool: @@ -910,3 +903,18 @@ def uploadSkillToGithub(self, skillName: str, skillDesc: str) -> bool: except Exception as e: self.logWarning(f'Something went wrong uploading skill to Github: {e}') return False + + + def downloadInstallTicket(self, skillName: str) -> bool: + try: + tmpFile = Path(self.Commons.rootDir(), f'system/skillInstallTickets/{skillName}.install') + if not self.Commons.downloadFile( + url=f'{constants.GITHUB_RAW_URL}/skill_{skillName}/{self.SkillStoreManager.getSkillUpdateTag(skillName)}/{skillName}.install', + destination=str(tmpFile.with_suffix('.tmp')) + ): + raise + + shutil.move(tmpFile.with_suffix('.tmp'), tmpFile) + return True + except: + return False diff --git a/core/interface/api/SkillsApi.py b/core/interface/api/SkillsApi.py index 066c096d3..6aff9d7d4 100644 --- a/core/interface/api/SkillsApi.py +++ b/core/interface/api/SkillsApi.py @@ -1,11 +1,6 @@ -import json -from pathlib import Path - -import requests from flask import jsonify, request from flask_classful import route -from core.commons import constants from core.interface.model.Api import Api from core.util.Decorators import ApiAuthenticated @@ -113,13 +108,8 @@ def put(self, skillName: str): return jsonify(success=False, reason='skill already installed') try: - req = requests.get(f'{constants.GITHUB_RAW_URL}/skill_{skillName}/{self.SkillStoreManager.getSkillUpdateTag(skillName)}/{skillName}.install') - remoteFile = req.json() - if not remoteFile: + if not self.SkillManager.downloadInstallTicket(skillName): return jsonify(success=False, reason='skill not found') - - skillFile = Path(self.Commons.rootDir(), f'system/skillInstallTickets/{skillName}.install') - skillFile.write_text(json.dumps(remoteFile)) except Exception as e: self.logWarning(f'Failed installing skill: {e}', printStack=True) return jsonify(success=False) diff --git a/core/interface/views/SkillsView.py b/core/interface/views/SkillsView.py index 64726e1d7..60954042c 100644 --- a/core/interface/views/SkillsView.py +++ b/core/interface/views/SkillsView.py @@ -1,7 +1,3 @@ -import json -from pathlib import Path - -import requests from flask import jsonify, render_template, request from core.base.model.Version import Version @@ -73,21 +69,14 @@ def saveSkillSettings(self): def updateSkill(self): - try: - _, author, skill = request.form.get('id').split('_') + _, author, skill = request.form.get('id').split('_') + try: self.WebInterfaceManager.newSkillInstallProcess(skill) - req = requests.get(f'{constants.GITHUB_RAW_URL}/skill_{skill["skill"]}/{self.SkillStoreManager.getSkillUpdateTag(skill["skill"])}/{skill["skill"]}.install') - remoteFile = req.json() - if not remoteFile: - self.WebInterfaceManager.skillInstallProcesses[skill['skill']]['status'] = 'failed' - - skillFile = Path(self.Commons.rootDir(), f'system/skillInstallTickets/{skill}.install') - skillFile.write_text(json.dumps(remoteFile)) - return jsonify(success=True) except Exception as e: self.logWarning(f'Failed updating skill: {e}', printStack=True) + self.WebInterfaceManager.skillInstallProcesses[skill['skill']]['status'] = 'failed' return jsonify(success=False) @@ -97,16 +86,10 @@ def installSkills(self): for skill in skills: self.WebInterfaceManager.newSkillInstallProcess(skill['skill']) - - req = requests.get(f'{constants.GITHUB_RAW_URL}/skill_{skill["skill"]}/{self.SkillStoreManager.getSkillUpdateTag(skill["skill"])}/{skill["skill"]}.install') - remoteFile = req.json() - if not remoteFile: + if not self.SkillManager.downloadInstallTicket(skill['skill']): self.WebInterfaceManager.skillInstallProcesses[skill['skill']]['status'] = 'failed' continue - skillFile = Path(self.Commons.rootDir(), f'system/skillInstallTickets/{skill["skill"]}.install') - skillFile.write_text(json.dumps(remoteFile)) - return jsonify(success=True) except Exception as e: self.logWarning(f'Failed installing skill: {e}', printStack=True) From d5907d265f56f89559224964eec67ded4381e0e7 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Fri, 13 Mar 2020 14:49:18 +0100 Subject: [PATCH 110/139] Fix for #223 --- core/base/SkillManager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index 5b55789db..a04455fb5 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -594,11 +594,11 @@ def checkSkillConditions(self, skillName: str, conditions: dict, availableSkills elif conditionName == 'skill': for requiredSkill in conditionValue: - if requiredSkill['name'] in availableSkills and not availableSkills[requiredSkill['name']]['active']: + if requiredSkill in availableSkills and not availableSkills[requiredSkill]['active']: raise SkillNotConditionCompliant(message=notCompliant, skillName=skillName, condition=conditionName, conditionValue=conditionValue) - elif requiredSkill['name'] not in availableSkills: + elif requiredSkill not in availableSkills: self.logInfo(f'Skill {skillName} has another skill as dependency, adding download') - if not self.downloadInstallTicket(requiredSkill['name']): + if not self.downloadInstallTicket(requiredSkill): raise SkillNotConditionCompliant(message=notCompliant, skillName=skillName, condition=conditionName, conditionValue=conditionValue) elif conditionName == 'notSkill': From 8947af850a7c9dbaff9dabb31632cca15afe1eb0 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 14 Mar 2020 06:21:37 +0100 Subject: [PATCH 111/139] Added info when NLU training fails --- core/nlu/model/SnipsNlu.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/nlu/model/SnipsNlu.py b/core/nlu/model/SnipsNlu.py index 671063fe4..a8623af49 100644 --- a/core/nlu/model/SnipsNlu.py +++ b/core/nlu/model/SnipsNlu.py @@ -1,5 +1,6 @@ import json from pathlib import Path +from subprocess import CompletedProcess import random import re @@ -132,7 +133,9 @@ def nluTrainingThread(self, datasetFile: Path): if tempTrainingData.exists(): shutil.rmtree(tempTrainingData) - self.Commons.runSystemCommand([f'./venv/bin/snips-nlu', 'train', str(datasetFile), str(tempTrainingData)]) + training: CompletedProcess = self.Commons.runSystemCommand([f'./venv/bin/snips-nlu', 'train', str(datasetFile), str(tempTrainingData)]) + if training.returncode != 0: + self.logError(f'Error while training Snips NLU: {training.stderr.decode()}') assistantPath = Path(self.Commons.rootDir(), f'trained/assistants/assistant_{self.LanguageManager.activeLanguage}/nlu_engine') From 4d41de84abe2d60f304855241967215962513c94 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 14 Mar 2020 19:31:28 +0100 Subject: [PATCH 112/139] Avoid NLU training failures by skipping undeclared slots --- core/nlu/model/SnipsNlu.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/nlu/model/SnipsNlu.py b/core/nlu/model/SnipsNlu.py index a8623af49..4d016a129 100644 --- a/core/nlu/model/SnipsNlu.py +++ b/core/nlu/model/SnipsNlu.py @@ -79,6 +79,10 @@ def convertDialogTemplate(self, file: Path): text, slotName = match.split(':=>') entity = slots.get(slotName, 'Unknown') + if entity == 'Unknown': + self.logWarning(f'Slot named "{slotName}" with text "{text}" in utterance "{utterance}" doesn\'t have any matching slot definition, skipping to avoid NLU training failure') + continue + if entity.startswith('snips/'): nluTrainingSample['entities'][entity] = dict() From 4555d5b7b185d3683f9b1f2a3abdef55fab90d79 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 14 Mar 2020 20:24:49 +0100 Subject: [PATCH 113/139] Username on interface as a text input to trigger keyboard overlay on touch devices --- core/interface/static/css/projectalice.css | 8 ++++++++ core/interface/templates/adminAuth.html | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/core/interface/static/css/projectalice.css b/core/interface/static/css/projectalice.css index 1cd772ec0..0175946f9 100644 --- a/core/interface/static/css/projectalice.css +++ b/core/interface/static/css/projectalice.css @@ -885,6 +885,13 @@ input:focus { color: green; } +.centered { + display: flex; + width: 100%; + align-items: center; + justify-content: center; +} + .adminAuthDisplayUser { display: flex; margin-top: 25px; @@ -895,6 +902,7 @@ input:focus { font-size: 2em; align-items: center; justify-content: center; + text-align: center; } .adminAuthKeyContainer { diff --git a/core/interface/templates/adminAuth.html b/core/interface/templates/adminAuth.html index dc2359814..d1d7425eb 100644 --- a/core/interface/templates/adminAuth.html +++ b/core/interface/templates/adminAuth.html @@ -13,7 +13,9 @@ {% endblock %} {% block content %} -
+
+ +
From 3b1cb876a6bfdb5a882ff97cebe61588b3b163bb Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 14 Mar 2020 20:38:30 +0100 Subject: [PATCH 114/139] Now working --- core/interface/static/js/adminAuth.js | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/core/interface/static/js/adminAuth.js b/core/interface/static/js/adminAuth.js index 67a459114..1b7df9071 100644 --- a/core/interface/static/js/adminAuth.js +++ b/core/interface/static/js/adminAuth.js @@ -10,7 +10,7 @@ $(function () { checkAuth(); }, 250); } else if (response.hasOwnProperty('username')) { - $('#username').text(response.username); + $('#username').val(response.username).prop('disabled', true); $('#adminAuthKeyboardContainer').slideDown(250); setTimeout(function () { checkAuth(); @@ -21,18 +21,11 @@ $(function () { }) } - $(document).on('keyup', function (e) { - let $username = $('#username'); - if (e.key == 'Backspace') { - $username.html($username.html().slice(0, -1)); - } else if (e.key.length === 1) { - $username.append(e.key); - } - + $('#username').on('keyup', function (e) { $.ajax({ url: '/adminAuth/login/', data: { - 'username': $username.html() + 'username': $(self).val() }, type: 'POST' }); From 7d6ea4b713f5d34ca09393d8298d54de5a26f1c4 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 14 Mar 2020 20:39:40 +0100 Subject: [PATCH 115/139] Oops --- core/ProjectAlice.py | 4 ++-- core/interface/static/js/adminAuth.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/ProjectAlice.py b/core/ProjectAlice.py index 6c5f02f96..bfc74487e 100644 --- a/core/ProjectAlice.py +++ b/core/ProjectAlice.py @@ -17,7 +17,7 @@ class ProjectAlice(Singleton): def __init__(self, restartHandler: callable): Singleton.__init__(self, self.NAME) self._logger = Logger() - self._logger.logInfo('Starting up Project Alice') + self._logger.logInfo('Starting up **Project Alice**') self._booted = False with Stopwatch() as stopWatch: self._restart = False @@ -31,7 +31,7 @@ def __init__(self, restartHandler: callable): self._superManager.commons.runRootSystemCommand(['systemctl', 'start', 'hermesledcontrol']) self._superManager.onBooted() - self._logger.logInfo(f'- Started Project Alice in {stopWatch} seconds') + self._logger.logInfo(f'- Started --Project Alice-- in __{stopWatch} seconds__') self._booted = True diff --git a/core/interface/static/js/adminAuth.js b/core/interface/static/js/adminAuth.js index 1b7df9071..c983d19e1 100644 --- a/core/interface/static/js/adminAuth.js +++ b/core/interface/static/js/adminAuth.js @@ -25,7 +25,7 @@ $(function () { $.ajax({ url: '/adminAuth/login/', data: { - 'username': $(self).val() + 'username': $(this).val() }, type: 'POST' }); From 89fb01aa39a7c5066645d321dbdb6852018e97be Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 15 Mar 2020 06:22:00 +0100 Subject: [PATCH 116/139] Started to implement some sort of markdown support for logs, tired of those white logs --- core/ProjectAlice.py | 2 +- core/util/model/BashFormatting.py | 62 +++++++++++++++++++++++++++++++ main.py | 2 + 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 core/util/model/BashFormatting.py diff --git a/core/ProjectAlice.py b/core/ProjectAlice.py index bfc74487e..d1e15db7f 100644 --- a/core/ProjectAlice.py +++ b/core/ProjectAlice.py @@ -31,7 +31,7 @@ def __init__(self, restartHandler: callable): self._superManager.commons.runRootSystemCommand(['systemctl', 'start', 'hermesledcontrol']) self._superManager.onBooted() - self._logger.logInfo(f'- Started --Project Alice-- in __{stopWatch} seconds__') + self._logger.logInfo(f'- Started Project Alice in {stopWatch} seconds') self._booted = True diff --git a/core/util/model/BashFormatting.py b/core/util/model/BashFormatting.py new file mode 100644 index 000000000..dac77dee2 --- /dev/null +++ b/core/util/model/BashFormatting.py @@ -0,0 +1,62 @@ +import logging + +import re +from enum import Enum + + +class BashStringFormatCode(Enum): + PREFIX = '\\\\033[' + SUFFIX = 'm' + + BOLD = '1' + DIM = '2' + UNDERLINED = '4' + RESET = '\\\\033[0m' + + DEFAULT = '39' + RED = '31' + GREEN = '32' + YELLOW = '33' + BLUE = '34' + GRAY = '90' + + +class Formatter(logging.Formatter): + PREPEND = '%(asctime)s [%(threadName)s] - [%(levelname)s] - %(message)s' + + BOLD = re.compile(r'\*\*(.+?)\*\*') + DIM = re.compile(r'--(.+?)--') + UNDERLINED = re.compile(r'__(.+?)__') + COLOR = re.compile(r'(?i)!\[(red|green|yellow|blue|gray)\]\((.+?)\)') + + COLORS = { + 'WARNING' : BashStringFormatCode.YELLOW.value, + 'INFO' : BashStringFormatCode.DEFAULT.value, + 'DEBUG' : BashStringFormatCode.BLUE.value, + 'ERROR' : BashStringFormatCode.RED.value, + 'CRITICAL': BashStringFormatCode.RED.value + } + + + def __init__(self, msg: str): + super().__init__(msg) + + + def format(self, record: logging.LogRecord) -> str: + level = record.levelname + if level in self.COLORS: + record.levelname = f'{BashStringFormatCode.PREFIX}{self.COLORS[level]}{level}{BashStringFormatCode.RESET}' + return logging.Formatter.format(self, record) + + + @classmethod + def formatString(cls, string: str) -> str: + string = cls.BOLD.sub(r'{}{}{}\1{}'.format( + BashStringFormatCode.PREFIX.value, + BashStringFormatCode.BOLD.value, + BashStringFormatCode.SUFFIX.value, + BashStringFormatCode.RESET.value + ), string) + print(string) + + return f'{cls.PREPEND} {string}' diff --git a/main.py b/main.py index a79b573c8..0d28010cf 100644 --- a/main.py +++ b/main.py @@ -33,6 +33,8 @@ formatter = logging.Formatter('%(asctime)s [%(threadName)s] - [%(levelname)s] - %(message)s') +# formatter = BashFormatting.Formatter() + _logger = logging.getLogger('ProjectAlice') _logger.setLevel(logging.INFO) From 2165aad5fdf2c1794436ff702dc52f5c1e6e7253 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 15 Mar 2020 06:46:09 +0100 Subject: [PATCH 117/139] This now colors the logs based on log level. Markdown is WIP --- core/util/model/BashFormatting.py | 11 +++++------ core/util/model/Logger.py | 2 +- main.py | 5 +++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/util/model/BashFormatting.py b/core/util/model/BashFormatting.py index dac77dee2..be2d7aa69 100644 --- a/core/util/model/BashFormatting.py +++ b/core/util/model/BashFormatting.py @@ -22,8 +22,6 @@ class BashStringFormatCode(Enum): class Formatter(logging.Formatter): - PREPEND = '%(asctime)s [%(threadName)s] - [%(levelname)s] - %(message)s' - BOLD = re.compile(r'\*\*(.+?)\*\*') DIM = re.compile(r'--(.+?)--') UNDERLINED = re.compile(r'__(.+?)__') @@ -38,14 +36,15 @@ class Formatter(logging.Formatter): } - def __init__(self, msg: str): - super().__init__(msg) + def __init__(self): + mask = '%(message)s' + super().__init__(mask) def format(self, record: logging.LogRecord) -> str: level = record.levelname if level in self.COLORS: - record.levelname = f'{BashStringFormatCode.PREFIX}{self.COLORS[level]}{level}{BashStringFormatCode.RESET}' + record.msg = f'\033[{self.COLORS[level]}m{record.msg}' return logging.Formatter.format(self, record) @@ -59,4 +58,4 @@ def formatString(cls, string: str) -> str: ), string) print(string) - return f'{cls.PREPEND} {string}' + return string diff --git a/core/util/model/Logger.py b/core/util/model/Logger.py index 8e9b62fe2..43c8a50e9 100644 --- a/core/util/model/Logger.py +++ b/core/util/model/Logger.py @@ -4,7 +4,7 @@ class Logger: - def __init__(self, depth: int = 4, *args, **kwargs): + def __init__(self, depth: int = 4, *_args, **_kwargs): self._logger = logging.getLogger('ProjectAlice') self._depth = depth diff --git a/main.py b/main.py index 0d28010cf..bc4ef7e12 100644 --- a/main.py +++ b/main.py @@ -30,10 +30,10 @@ import psutil from core.Initializer import Initializer +from core.util.model import BashFormatting formatter = logging.Formatter('%(asctime)s [%(threadName)s] - [%(levelname)s] - %(message)s') - -# formatter = BashFormatting.Formatter() +colorFormatter = BashFormatting.Formatter() _logger = logging.getLogger('ProjectAlice') _logger.setLevel(logging.INFO) @@ -48,6 +48,7 @@ handler.setFormatter(formatter) rotatingHandler.setFormatter(formatter) +streamHandler.setFormatter(colorFormatter) _logger.addHandler(handler) _logger.addHandler(rotatingHandler) From 1f53e04cf9531d6cd1bfb967ecd518fe4eedac0c Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Sun, 15 Mar 2020 14:40:31 +0100 Subject: [PATCH 118/139] Fixed bad formatting for adminPin config dump --- core/base/ConfigManager.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/base/ConfigManager.py b/core/base/ConfigManager.py index 882429cb9..84beafdb5 100644 --- a/core/base/ConfigManager.py +++ b/core/base/ConfigManager.py @@ -1,8 +1,7 @@ import json import logging -from pathlib import Path - import shutil +from pathlib import Path import configTemplate from core.base.SkillManager import SkillManager @@ -538,7 +537,7 @@ def checkNewAdminPinCode(self, pinCode: str) -> bool: def updateAdminPinCode(self): - self.UserManager.addUserPinCode('admin', self.getAliceConfigByName('adminPinCode')) + self.UserManager.addUserPinCode('admin', int(self.getAliceConfigByName('adminPinCode'))) def refreshStoreData(self): From 6404df2a27744f2658906d5f80e7d1ab629672ee Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Sun, 15 Mar 2020 15:17:43 +0100 Subject: [PATCH 119/139] Save work --- core/base/ConfigManager.py | 2 +- core/util/model/BashFormatting.py | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/core/base/ConfigManager.py b/core/base/ConfigManager.py index 84beafdb5..2b9cfb4fd 100644 --- a/core/base/ConfigManager.py +++ b/core/base/ConfigManager.py @@ -537,7 +537,7 @@ def checkNewAdminPinCode(self, pinCode: str) -> bool: def updateAdminPinCode(self): - self.UserManager.addUserPinCode('admin', int(self.getAliceConfigByName('adminPinCode'))) + self.UserManager.addUserPinCode('admin', self.getAliceConfigByName('adminPinCode')) def refreshStoreData(self): diff --git a/core/util/model/BashFormatting.py b/core/util/model/BashFormatting.py index be2d7aa69..018e87830 100644 --- a/core/util/model/BashFormatting.py +++ b/core/util/model/BashFormatting.py @@ -27,6 +27,8 @@ class Formatter(logging.Formatter): UNDERLINED = re.compile(r'__(.+?)__') COLOR = re.compile(r'(?i)!\[(red|green|yellow|blue|gray)\]\((.+?)\)') + GLUED_CODES = re.compile(r'\\033\[([0-9]+?)m+') + COLORS = { 'WARNING' : BashStringFormatCode.YELLOW.value, 'INFO' : BashStringFormatCode.DEFAULT.value, @@ -43,19 +45,23 @@ def __init__(self): def format(self, record: logging.LogRecord) -> str: level = record.levelname - if level in self.COLORS: - record.msg = f'\033[{self.COLORS[level]}m{record.msg}' - return logging.Formatter.format(self, record) + msg = record.msg + if level in self.COLORS: + msg = f'\033[{self.COLORS[level]}m{record.msg}' - @classmethod - def formatString(cls, string: str) -> str: - string = cls.BOLD.sub(r'{}{}{}\1{}'.format( + # Replace markdown to bash code + msg = self.BOLD.sub(r'{}{}{}\1{}'.format( BashStringFormatCode.PREFIX.value, BashStringFormatCode.BOLD.value, BashStringFormatCode.SUFFIX.value, BashStringFormatCode.RESET.value - ), string) - print(string) + ), msg) - return string + # Let's find starting codes that are together and merge them + # matches = self.GLUED_CODES.finditer(msg) + + + + record.msg = msg + return logging.Formatter.format(self, record) From 6aa0f40b13912847a25a3e9b33e54507b9203822 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sun, 15 Mar 2020 20:26:05 +0100 Subject: [PATCH 120/139] I give up markdown for now --- core/ProjectAlice.py | 2 +- core/util/model/BashFormatting.py | 42 ++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/core/ProjectAlice.py b/core/ProjectAlice.py index d1e15db7f..6c5f02f96 100644 --- a/core/ProjectAlice.py +++ b/core/ProjectAlice.py @@ -17,7 +17,7 @@ class ProjectAlice(Singleton): def __init__(self, restartHandler: callable): Singleton.__init__(self, self.NAME) self._logger = Logger() - self._logger.logInfo('Starting up **Project Alice**') + self._logger.logInfo('Starting up Project Alice') self._booted = False with Stopwatch() as stopWatch: self._restart = False diff --git a/core/util/model/BashFormatting.py b/core/util/model/BashFormatting.py index 018e87830..d7e2bb352 100644 --- a/core/util/model/BashFormatting.py +++ b/core/util/model/BashFormatting.py @@ -5,19 +5,19 @@ class BashStringFormatCode(Enum): - PREFIX = '\\\\033[' - SUFFIX = 'm' + # SEQUENCE = '\\\\033[{}m' + SEQUENCE = '#033[{}m' - BOLD = '1' - DIM = '2' - UNDERLINED = '4' - RESET = '\\\\033[0m' + RESET = 0 + BOLD = 1 + DIM = 2 + UNDERLINED = 4 DEFAULT = '39' RED = '31' GREEN = '32' YELLOW = '33' - BLUE = '34' + BLUE = '94' GRAY = '90' @@ -27,6 +27,7 @@ class Formatter(logging.Formatter): UNDERLINED = re.compile(r'__(.+?)__') COLOR = re.compile(r'(?i)!\[(red|green|yellow|blue|gray)\]\((.+?)\)') + GLUED_RESETS = re.compile(r'(?:\\033\[(?:0|2[1-8])m){2,}$') GLUED_CODES = re.compile(r'\\033\[([0-9]+?)m+') COLORS = { @@ -48,20 +49,33 @@ def format(self, record: logging.LogRecord) -> str: msg = record.msg if level in self.COLORS: - msg = f'\033[{self.COLORS[level]}m{record.msg}' + msg = f'\033[{self.COLORS[level]}m{record.msg}\033[0m' + + record.msg = msg + return logging.Formatter.format(self, record) # Replace markdown to bash code - msg = self.BOLD.sub(r'{}{}{}\1{}'.format( - BashStringFormatCode.PREFIX.value, - BashStringFormatCode.BOLD.value, - BashStringFormatCode.SUFFIX.value, - BashStringFormatCode.RESET.value + msg = self.BOLD.sub(r'{}\1{}'.format( + BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.BOLD.value), + BashStringFormatCode.SEQUENCE.value.format(str(BashStringFormatCode.BOLD.value + 20)) + ), msg) + + msg = self.DIM.sub(r'{}\1{}'.format( + BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.DIM.value), + BashStringFormatCode.SEQUENCE.value.format(str(BashStringFormatCode.DIM.value + 20)) ), msg) + msg = self.UNDERLINED.sub(r'{}\1{}'.format( + BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.UNDERLINED.value), + BashStringFormatCode.SEQUENCE.value.format(str(BashStringFormatCode.UNDERLINED.value + 20)) + ), msg) + + # Find reset codes that are together at the end and merge them + msg = self.GLUED_RESETS.sub(BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.RESET.value), msg) + # Let's find starting codes that are together and merge them # matches = self.GLUED_CODES.finditer(msg) - record.msg = msg return logging.Formatter.format(self, record) From 1c34fc21d9104df76ee71849f3aee313e0e35cea Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 16 Mar 2020 20:00:53 +0100 Subject: [PATCH 121/139] Fix install ticket download --- core/base/SkillManager.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/base/SkillManager.py b/core/base/SkillManager.py index a04455fb5..0ef4fe1b7 100644 --- a/core/base/SkillManager.py +++ b/core/base/SkillManager.py @@ -1,13 +1,13 @@ import getpass import importlib import json -import os -import shutil import threading from pathlib import Path from typing import Dict, Optional +import os import requests +import shutil from core.ProjectAliceExceptions import GithubNotFound, GithubRateLimit, GithubTokenFailed, SkillNotConditionCompliant, SkillStartDelayed, SkillStartingFailed from core.base.SuperManager import SuperManager @@ -910,11 +910,12 @@ def downloadInstallTicket(self, skillName: str) -> bool: tmpFile = Path(self.Commons.rootDir(), f'system/skillInstallTickets/{skillName}.install') if not self.Commons.downloadFile( url=f'{constants.GITHUB_RAW_URL}/skill_{skillName}/{self.SkillStoreManager.getSkillUpdateTag(skillName)}/{skillName}.install', - destination=str(tmpFile.with_suffix('.tmp')) + dest=str(tmpFile.with_suffix('.tmp')) ): raise shutil.move(tmpFile.with_suffix('.tmp'), tmpFile) return True - except: + except Exception as e: + self.logError(f'Error downloading install ticket for skill "{skillName}": {e}') return False From 2ac47d3d2b7cb8dc8455ab9a031ade86dca1d217 Mon Sep 17 00:00:00 2001 From: Psycho Date: Mon, 16 Mar 2020 20:49:14 +0100 Subject: [PATCH 122/139] Fix manual training --- core/snips/SnipsAssistantManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/snips/SnipsAssistantManager.py b/core/snips/SnipsAssistantManager.py index bc30c5b0b..94ae2b430 100644 --- a/core/snips/SnipsAssistantManager.py +++ b/core/snips/SnipsAssistantManager.py @@ -149,7 +149,7 @@ def train(self): 'enabledByDefault': intent['enabledByDefault'] } - if not intent['slots']: + if 'slots' not in intent or not intent['slots']: continue for slot in intent['slots']: From 7ea09cc16ffaadc7faa81bc2aea5be9cacc9fbba Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Tue, 17 Mar 2020 07:50:45 +0100 Subject: [PATCH 123/139] Might fix the fact logs are dumped to files with color codes --- core/util/model/BashFormatting.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/util/model/BashFormatting.py b/core/util/model/BashFormatting.py index d7e2bb352..ef036e138 100644 --- a/core/util/model/BashFormatting.py +++ b/core/util/model/BashFormatting.py @@ -1,6 +1,7 @@ import logging import re +from copy import copy from enum import Enum @@ -46,13 +47,12 @@ def __init__(self): def format(self, record: logging.LogRecord) -> str: level = record.levelname - msg = record.msg + rec = copy(record) if level in self.COLORS: - msg = f'\033[{self.COLORS[level]}m{record.msg}\033[0m' + rec.msg = f'\033[{self.COLORS[level]}m{record.msg}\033[0m' - record.msg = msg - return logging.Formatter.format(self, record) + return logging.Formatter.format(self, rec) # Replace markdown to bash code msg = self.BOLD.sub(r'{}\1{}'.format( From bdda7928bbfa671f7f77d31045d1bbb864e100b4 Mon Sep 17 00:00:00 2001 From: Psychokiller1888 Date: Tue, 17 Mar 2020 13:22:01 +0100 Subject: [PATCH 124/139] Some cleanup --- core/Initializer.py | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/core/Initializer.py b/core/Initializer.py index aef7cee2e..67489fd2e 100644 --- a/core/Initializer.py +++ b/core/Initializer.py @@ -12,10 +12,15 @@ from core.base.model.TomlFile import TomlFile from core.base.model.Version import Version +PIP = './venv/bin/pip' +YAML = '/boot/ProjectAlice.yaml' +ASOUND = '/etc/asound.conf' +SNIPS_TOML = '/etc/snips.toml' + try: import yaml except: - subprocess.run(['./venv/bin/pip3', 'install', 'pyyaml']) + subprocess.run([PIP, 'install', 'pyyaml']) import yaml import configTemplate @@ -60,7 +65,7 @@ def __init__(self): self._confsFile = Path(self._rootDir, 'config.py') self._confsSample = Path(self._rootDir, 'configTemplate.py') - self._initFile = Path('/boot/ProjectAlice.yaml') + self._initFile = Path(YAML) self._latest = 1.16 @@ -128,7 +133,7 @@ def initProjectAlice(self) -> bool: time.sleep(1) - subprocess.run(['./venv/bin/pip3', 'uninstall', '-y', '-r', str(Path(self._rootDir, 'pipuninstalls.txt'))]) + subprocess.run([PIP, 'uninstall', '-y', '-r', str(Path(self._rootDir, 'pipuninstalls.txt'))]) if 'forceRewrite' not in initConfs: initConfs['forceRewrite'] = True @@ -156,7 +161,7 @@ def initProjectAlice(self) -> bool: # Do some installation if wanted by the user if 'doGroundInstall' not in initConfs or initConfs['doGroundInstall']: - subprocess.run(['./venv/bin/pip3', 'install', '-r', str(Path(self._rootDir, 'requirements.txt'))]) + subprocess.run([PIP, 'install', '-r', str(Path(self._rootDir, 'requirements.txt'))]) if 'installOnBuster' not in initConfs or initConfs['installOnBuster']: subprocess.run(['sudo', 'apt-get', 'install', '-y', 'dirmngr', 'apt-transport-https']) @@ -289,11 +294,11 @@ def initProjectAlice(self) -> bool: subprocess.run(['wget', '--content-disposition', 'https://github.com/project-alice-assistant/snips-nlu-rebirth/blob/master/wheels/snips_nlu_parsers-0.4.3-cp37-cp37m-linux_armv7l.whl?raw=true']) subprocess.run(['wget', '--content-disposition', 'https://github.com/project-alice-assistant/snips-nlu-rebirth/blob/master/wheels/snips_nlu-0.20.2-py3-none-any.whl?raw=true']) time.sleep(1) - subprocess.run(['./venv/bin/pip3', 'install', 'scipy-1.3.3-cp37-cp37m-linux_armv7l.whl']) - subprocess.run(['./venv/bin/pip3', 'install', 'scikit_learn-0.22.1-cp37-cp37m-linux_armv7l.whl']) - subprocess.run(['./venv/bin/pip3', 'install', 'snips_nlu_utils-0.9.1-cp37-cp37m-linux_armv7l.whl']) - subprocess.run(['./venv/bin/pip3', 'install', 'snips_nlu_parsers-0.4.3-cp37-cp37m-linux_armv7l.whl']) - subprocess.run(['./venv/bin/pip3', 'install', 'snips_nlu-0.20.2-py3-none-any.whl']) + subprocess.run([PIP, 'install', 'scipy-1.3.3-cp37-cp37m-linux_armv7l.whl']) + subprocess.run([PIP, 'install', 'scikit_learn-0.22.1-cp37-cp37m-linux_armv7l.whl']) + subprocess.run([PIP, 'install', 'snips_nlu_utils-0.9.1-cp37-cp37m-linux_armv7l.whl']) + subprocess.run([PIP, 'install', 'snips_nlu_parsers-0.4.3-cp37-cp37m-linux_armv7l.whl']) + subprocess.run([PIP, 'install', 'snips_nlu-0.20.2-py3-none-any.whl']) time.sleep(1) subprocess.run(['rm', 'scipy-1.3.3-cp37-cp37m-linux_armv7l.whl']) subprocess.run(['rm', 'scikit_learn-0.22.1-cp37-cp37m-linux_armv7l.whl']) @@ -361,7 +366,7 @@ def initProjectAlice(self) -> bool: subprocess.run(['sudo', 'sed', '-i', '-e', f's/%HARDWARE%/{audioHardware}/', str(hlcServiceFilePath)]) if audioHardware == 'respeaker6MicArray': - subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'respeaker6micarray.conf'), Path('/etc/asound.conf')]) + subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'respeaker6micarray.conf'), Path(ASOUND)]) elif audioHardware == 'respeaker7': subprocess.run(['sudo', Path(self._rootDir, 'system/scripts/audioHardware/respeaker7.sh')]) @@ -375,7 +380,7 @@ def initProjectAlice(self) -> bool: elif audioHardware in {'matrixCreator', 'matrixVoice'}: subprocess.run(['sudo', Path(self._rootDir, 'system/scripts/audioHardware/matrix.sh')]) - subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'matrix.conf'), Path('/etc/asound.conf')]) + subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'matrix.conf'), Path(ASOUND)]) snipsConf['snips-audio-server']['mike'] = 'MATRIXIO-SOUND: - (hw:2,0)' @@ -388,10 +393,10 @@ def initProjectAlice(self) -> bool: subprocess.run(['sudo', 'sed', '-i', '-e', 's/%HARDWARE%/googleAIY/', str(hlcServiceFilePath)]) elif audioHardware == 'usbMic': - subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'usbmic.conf'), Path('/etc/asound.conf')]) + subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'usbmic.conf'), Path(ASOUND)]) elif audioHardware == 'ps3eye': - subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'ps3eye.conf'), Path('/etc/asound.conf')]) + subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system', 'asounds', 'ps3eye.conf'), Path(ASOUND)]) asoundrc = f'/home/{getpass.getuser()}/.asoundrc' subprocess.run(['echo', 'pcm.dsp0 {', '>', asoundrc]) subprocess.run(['echo', ' type plug', '>>', asoundrc]) @@ -416,9 +421,9 @@ def initProjectAlice(self) -> bool: subprocess.run(['sudo', 'rm', '-rf', Path(self._rootDir, 'assistant')]) if initConfs['keepYAMLBackup']: - subprocess.run(['sudo', 'mv', Path('/boot/ProjectAlice.yaml'), Path('/boot/ProjectAlice.yaml.bak')]) + subprocess.run(['sudo', 'mv', Path(YAML), Path('/boot/ProjectAlice.yaml.bak')]) else: - subprocess.run(['sudo', 'rm', Path('/boot/ProjectAlice.yaml')]) + subprocess.run(['sudo', 'rm', Path(YAML)]) self.warning('Initializer done with configuring') time.sleep(2) @@ -436,12 +441,12 @@ def warning(self, text: str): def loadSnipsConfigurations(self) -> TomlFile: self.logInfo('Loading Snips configuration file') - snipsConfig = Path('/etc/snips.toml') + snipsConfig = Path(SNIPS_TOML) if snipsConfig.exists(): - subprocess.run(['sudo', 'rm', '/etc/snips.toml']) + subprocess.run(['sudo', 'rm', SNIPS_TOML]) - subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system/snips/snips.toml'), Path('/etc/snips.toml')]) + subprocess.run(['sudo', 'cp', Path(self._rootDir, 'system/snips/snips.toml'), Path(SNIPS_TOML)]) return TomlFile.loadToml(snipsConfig) From d8de812bd239320f69b7625ec7f70f0be204299d Mon Sep 17 00:00:00 2001 From: Psycho Date: Tue, 17 Mar 2020 20:38:44 +0100 Subject: [PATCH 125/139] Cast uuid to str missing --- core/device/DeviceManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/device/DeviceManager.py b/core/device/DeviceManager.py index d77aa39bc..e3e74d2b8 100644 --- a/core/device/DeviceManager.py +++ b/core/device/DeviceManager.py @@ -89,7 +89,7 @@ def deviceMessage(self, message: MQTTMessage) -> Optional[DialogSession]: # if not 'projectalice/devices/' in message.topic: # return None - return self.DialogSessionManager.addTempSession(sessionId=uuid.uuid4(), message=message) + return self.DialogSessionManager.addTempSession(sessionId=str(uuid.uuid4()), message=message) def loadDevices(self): From cfa4b0c551f654ef21fef7f24d897b22973bd1cf Mon Sep 17 00:00:00 2001 From: Psycho Date: Wed, 18 Mar 2020 14:11:32 +0100 Subject: [PATCH 126/139] typo --- core/dialog/model/DialogSession.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/dialog/model/DialogSession.py b/core/dialog/model/DialogSession.py index 6d84276a1..ea81fad55 100644 --- a/core/dialog/model/DialogSession.py +++ b/core/dialog/model/DialogSession.py @@ -99,7 +99,7 @@ def slotValue(self, slotName: str, index: int = 0, defaultValue: Any = None) -> def slotRawValue(self, slotName: str) -> str: """ - This returns the slot raw value, what whas really heard / captured, so it can be a synonym for example + This returns the slot raw value, what was really heard / captured, so it can be a synonym for example """ return self.slots.get(slotName, '') From 1c121454a163e7a8362fb9c8ac3b2a531fd15113 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 19 Mar 2020 13:41:38 +0100 Subject: [PATCH 127/139] Interface now uses mqtt for sys logs, supporting colors --- core/base/SuperManager.py | 4 ++ core/interface/static/css/projectalice.css | 36 +++++++++++++++ core/interface/static/js/syslog.js | 29 +++++------- core/interface/views/SyslogView.py | 33 +------------- core/util/model/BashFormatting.py | 5 +-- core/util/model/HtmlFormatting.py | 52 ++++++++++++++++++++++ core/util/model/MqttLoggingHandler.py | 35 +++++++++++++++ main.py | 24 +++++----- 8 files changed, 157 insertions(+), 61 deletions(-) create mode 100644 core/util/model/HtmlFormatting.py create mode 100644 core/util/model/MqttLoggingHandler.py diff --git a/core/base/SuperManager.py b/core/base/SuperManager.py index dc30b07d9..67bc00442 100644 --- a/core/base/SuperManager.py +++ b/core/base/SuperManager.py @@ -186,8 +186,12 @@ def initManagers(self): def onStop(self): managerName = constants.UNKNOWN_MANAGER try: + mqttManager = self._managers.pop('MqttManager') + for managerName, manager in self._managers.items(): manager.onStop() + + mqttManager.onStop() except Exception as e: Logger().logError(f'Error while shutting down manager "{managerName}": {e}') diff --git a/core/interface/static/css/projectalice.css b/core/interface/static/css/projectalice.css index 0175946f9..f89292399 100644 --- a/core/interface/static/css/projectalice.css +++ b/core/interface/static/css/projectalice.css @@ -52,6 +52,42 @@ nav { size: 1em; } +.logBold { + font-weight: bold; +} + +.logDim { + font-weight: lighter; +} + +.logUnderlined { + text-decoration: underline; +} + +.logDefault { + color: #d1d1d1; +} + +.logRed { + color: red; +} + +.logGreen { + color: green; +} + +.logYellow { + color: yellow; +} + +.logBlue { + color: blue; +} + +.logGrey { + color: grey; +} + .mainMenuList { list-style-type: none; margin: 0; diff --git a/core/interface/static/js/syslog.js b/core/interface/static/js/syslog.js index e79c217a3..d3c7c273f 100644 --- a/core/interface/static/js/syslog.js +++ b/core/interface/static/js/syslog.js @@ -1,5 +1,4 @@ $(function () { - function getLogColor(line) { if (line.includes('[INFO]')) { return 'logInfo'; @@ -12,20 +11,15 @@ $(function () { } } - function refreshData(type) { + function onMessage(msg) { let container = $('#console'); + let json = JSON.parse(msg.payloadString); + + container.append(json['msg']); - $.post('/syslog/' + type + '/', function (data) { - for (let i = 0; i < data.data.length; i++) { - container.append( - '' + data.data[i] + '' - ); - } - }).always(function (data) { - if ($('#checkedCheckbox').is(':visible')) { - container.scrollTop(container.prop('scrollHeight')); - } - }); + if ($('#checkedCheckbox').is(':visible')) { + container.scrollTop(container.prop('scrollHeight')); + } } $('#checkedCheckbox').on('click touchstart', function () { @@ -40,9 +34,10 @@ $(function () { return false; }); - refreshData('refresh'); + function onConnect() { + MQTT.subscribe('projectalice/logging/syslog'); + } - setInterval(function () { - refreshData('update'); - }, 500); + mqttRegisterSelf(onConnect, 'onConnect'); + mqttRegisterSelf(onMessage, 'onMessage'); }); diff --git a/core/interface/views/SyslogView.py b/core/interface/views/SyslogView.py index 2b49927e7..366a0af63 100644 --- a/core/interface/views/SyslogView.py +++ b/core/interface/views/SyslogView.py @@ -1,46 +1,17 @@ -from pathlib import Path - -from flask import jsonify, render_template +from flask import render_template from core.interface.model.View import View class SyslogView(View): route_base = '/syslog/' - counter = 0 + def __init__(self): super().__init__() - self._logs = Path(self.Commons.rootDir(), 'var', 'logs', 'logs.log') def index(self): return render_template(template_name_or_list='syslog.html', langData=self._langData, aliceSettings=self.ConfigManager.aliceConfigurations) - - - @classmethod - def setCounter(cls, value: int): - cls.counter = value - - - @classmethod - def getCounter(cls) -> int: - return cls.counter - - - def update(self): - return jsonify(data=self._getData()) - - - def refresh(self): - self.__class__.setCounter(0) - return self.update() - - - def _getData(self) -> list: - data = self._logs.open('r').readlines() - ret = data[self.__class__.getCounter():] - self.__class__.setCounter(len(data)) - return ['] -'.join(line.split('] -')[2:]) for line in ret] diff --git a/core/util/model/BashFormatting.py b/core/util/model/BashFormatting.py index ef036e138..f118fd1d3 100644 --- a/core/util/model/BashFormatting.py +++ b/core/util/model/BashFormatting.py @@ -6,8 +6,7 @@ class BashStringFormatCode(Enum): - # SEQUENCE = '\\\\033[{}m' - SEQUENCE = '#033[{}m' + SEQUENCE = '\\\\033[{}m' RESET = 0 BOLD = 1 @@ -19,7 +18,7 @@ class BashStringFormatCode(Enum): GREEN = '32' YELLOW = '33' BLUE = '94' - GRAY = '90' + GREY = '90' class Formatter(logging.Formatter): diff --git a/core/util/model/HtmlFormatting.py b/core/util/model/HtmlFormatting.py new file mode 100644 index 000000000..44c5ff24e --- /dev/null +++ b/core/util/model/HtmlFormatting.py @@ -0,0 +1,52 @@ +import logging + +import re +from enum import Enum + + +class HtmlFormatting(Enum): + SEQUENCE = '{}' + + BOLD = 'logBold' + DIM = 'logDim' + UNDERLINED = 'logUnderlined' + + DEFAULT = 'logDefault' + RED = 'logRed' + GREEN = 'logGreen' + YELLOW = 'logYellow' + BLUE = 'logBlue' + GREY = 'logGrey' + + +class Formatter(logging.Formatter): + BOLD = re.compile(r'\*\*(.+?)\*\*') + DIM = re.compile(r'--(.+?)--') + UNDERLINED = re.compile(r'__(.+?)__') + COLOR = re.compile(r'(?i)!\[(red|green|yellow|blue|gray)\]\((.+?)\)') + + GLUED_RESETS = re.compile(r'(?:\\033\[(?:0|2[1-8])m){2,}$') + GLUED_CODES = re.compile(r'\\033\[([0-9]+?)m+') + + COLORS = { + 'WARNING' : HtmlFormatting.YELLOW.value, + 'INFO' : HtmlFormatting.DEFAULT.value, + 'DEBUG' : HtmlFormatting.BLUE.value, + 'ERROR' : HtmlFormatting.RED.value, + 'CRITICAL': HtmlFormatting.RED.value + } + + + def __init__(self): + mask = '%(message)s' + super().__init__(mask) + + + def format(self, record: logging.LogRecord) -> str: + level = record.levelname + msg = record.getMessage() + + if level in self.COLORS: + msg = HtmlFormatting.SEQUENCE.value.format(self.COLORS[level], msg) + + return msg diff --git a/core/util/model/MqttLoggingHandler.py b/core/util/model/MqttLoggingHandler.py new file mode 100644 index 000000000..7440fd075 --- /dev/null +++ b/core/util/model/MqttLoggingHandler.py @@ -0,0 +1,35 @@ +import logging +from queue import Queue + +from core.base.SuperManager import SuperManager + + +class MqttLoggingHandler(logging.Handler): + + def __init__(self): + super().__init__() + self._buffer = Queue() + + + def emit(self, record: logging.LogRecord) -> None: + record.msg = self.format(record) + + if not SuperManager.getInstance() or not SuperManager.getInstance().mqttManager: + self._buffer.put(record.msg) + return + + if not self._buffer.empty(): + while not self._buffer.empty(): + SuperManager.getInstance().mqttManager.publish( + topic='projectalice/logging/syslog', + payload={ + 'msg': self._buffer.get() + } + ) + + SuperManager.getInstance().mqttManager.publish( + topic='projectalice/logging/syslog', + payload={ + 'msg': record.msg + } + ) diff --git a/main.py b/main.py index bc4ef7e12..19733ea09 100644 --- a/main.py +++ b/main.py @@ -30,29 +30,33 @@ import psutil from core.Initializer import Initializer -from core.util.model import BashFormatting - -formatter = logging.Formatter('%(asctime)s [%(threadName)s] - [%(levelname)s] - %(message)s') -colorFormatter = BashFormatting.Formatter() +from core.util.model import BashFormatting, HtmlFormatting +from core.util.model.MqttLoggingHandler import MqttLoggingHandler _logger = logging.getLogger('ProjectAlice') _logger.setLevel(logging.INFO) -date = int(datetime.now().strftime('%Y%m%d')) +logFileFormatter = logging.Formatter('%(asctime)s [%(threadName)s] - [%(levelname)s] - %(message)s') +bashFormatter = BashFormatting.Formatter() +htmlFormatter = HtmlFormatting.Formatter() +date = int(datetime.now().strftime('%Y%m%d')) logsMountpoint = Path(Path(__file__).resolve().parent, 'var', 'logs') -handler = logging.FileHandler(filename=f'{logsMountpoint}/logs.log', mode='w') +logFileHandler = logging.FileHandler(filename=f'{logsMountpoint}/logs.log', mode='w') rotatingHandler = logging.handlers.RotatingFileHandler(filename=f'{logsMountpoint}/{date}-logs.log', mode='a', maxBytes=100000, backupCount=20) streamHandler = logging.StreamHandler() +mqttHandler = MqttLoggingHandler() -handler.setFormatter(formatter) -rotatingHandler.setFormatter(formatter) -streamHandler.setFormatter(colorFormatter) +logFileHandler.setFormatter(logFileFormatter) +rotatingHandler.setFormatter(logFileFormatter) +mqttHandler.setFormatter(htmlFormatter) +streamHandler.setFormatter(bashFormatter) -_logger.addHandler(handler) +_logger.addHandler(logFileHandler) _logger.addHandler(rotatingHandler) _logger.addHandler(streamHandler) +_logger.addHandler(mqttHandler) def exceptionListener(*exc_info): From 58fc3c3f76dc13611580c099b81979e67719675f Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 19 Mar 2020 14:27:02 +0100 Subject: [PATCH 128/139] Custom markdown support for logs --- core/util/model/BashFormatting.py | 36 +++++++-------------------- core/util/model/FileFormatting.py | 29 +++++++++++++++++++++ core/util/model/HtmlFormatting.py | 22 +++++++++++----- core/util/model/MqttLoggingHandler.py | 1 + main.py | 4 +-- 5 files changed, 57 insertions(+), 35 deletions(-) create mode 100644 core/util/model/FileFormatting.py diff --git a/core/util/model/BashFormatting.py b/core/util/model/BashFormatting.py index f118fd1d3..8ae36773b 100644 --- a/core/util/model/BashFormatting.py +++ b/core/util/model/BashFormatting.py @@ -44,37 +44,19 @@ def __init__(self): super().__init__(mask) + # TODO implement mardown support for stdout def format(self, record: logging.LogRecord) -> str: level = record.levelname rec = copy(record) + msg = rec.msg if level in self.COLORS: - rec.msg = f'\033[{self.COLORS[level]}m{record.msg}\033[0m' + msg = f'\033[{self.COLORS[level]}m{record.msg}\033[0m' - return logging.Formatter.format(self, rec) - - # Replace markdown to bash code - msg = self.BOLD.sub(r'{}\1{}'.format( - BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.BOLD.value), - BashStringFormatCode.SEQUENCE.value.format(str(BashStringFormatCode.BOLD.value + 20)) - ), msg) - - msg = self.DIM.sub(r'{}\1{}'.format( - BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.DIM.value), - BashStringFormatCode.SEQUENCE.value.format(str(BashStringFormatCode.DIM.value + 20)) - ), msg) - - msg = self.UNDERLINED.sub(r'{}\1{}'.format( - BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.UNDERLINED.value), - BashStringFormatCode.SEQUENCE.value.format(str(BashStringFormatCode.UNDERLINED.value + 20)) - ), msg) + msg = self.BOLD.sub(r'\1', msg) + msg = self.DIM.sub(r'\1', msg) + msg = self.UNDERLINED.sub(r'\1', msg) + msg = self.COLOR.sub(r'\2', msg) - # Find reset codes that are together at the end and merge them - msg = self.GLUED_RESETS.sub(BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.RESET.value), msg) - - # Let's find starting codes that are together and merge them - # matches = self.GLUED_CODES.finditer(msg) - - - record.msg = msg - return logging.Formatter.format(self, record) + rec.msg = msg + return logging.Formatter.format(self, rec) diff --git a/core/util/model/FileFormatting.py b/core/util/model/FileFormatting.py new file mode 100644 index 000000000..00701ee58 --- /dev/null +++ b/core/util/model/FileFormatting.py @@ -0,0 +1,29 @@ +import logging + +import re +from copy import copy + + +class Formatter(logging.Formatter): + BOLD = re.compile(r'\*\*(.+?)\*\*') + DIM = re.compile(r'--(.+?)--') + UNDERLINED = re.compile(r'__(.+?)__') + COLOR = re.compile(r'(?i)!\[(red|green|yellow|blue|gray)\]\((.+?)\)') + + + def __init__(self): + mask = '%(asctime)s [%(threadName)s] - [%(levelname)s] - %(message)s' + super().__init__(mask) + + + def format(self, record: logging.LogRecord) -> str: + rec = copy(record) + msg = rec.msg + + msg = self.BOLD.sub(r'\1', msg) + msg = self.DIM.sub(r'\1', msg) + msg = self.UNDERLINED.sub(r'\1', msg) + msg = self.COLOR.sub(r'\2', msg) + + rec.msg = msg + return logging.Formatter.format(self, rec) diff --git a/core/util/model/HtmlFormatting.py b/core/util/model/HtmlFormatting.py index 44c5ff24e..032272e46 100644 --- a/core/util/model/HtmlFormatting.py +++ b/core/util/model/HtmlFormatting.py @@ -1,11 +1,13 @@ import logging +from typing import Match import re from enum import Enum class HtmlFormatting(Enum): - SEQUENCE = '{}' + LOG = '{}' + INLINE = '{}' BOLD = 'logBold' DIM = 'logDim' @@ -23,10 +25,7 @@ class Formatter(logging.Formatter): BOLD = re.compile(r'\*\*(.+?)\*\*') DIM = re.compile(r'--(.+?)--') UNDERLINED = re.compile(r'__(.+?)__') - COLOR = re.compile(r'(?i)!\[(red|green|yellow|blue|gray)\]\((.+?)\)') - - GLUED_RESETS = re.compile(r'(?:\\033\[(?:0|2[1-8])m){2,}$') - GLUED_CODES = re.compile(r'\\033\[([0-9]+?)m+') + COLOR = re.compile(r'(?i)!\[(red|green|yellow|blue|grey)\]\((.+?)\)') COLORS = { 'WARNING' : HtmlFormatting.YELLOW.value, @@ -47,6 +46,17 @@ def format(self, record: logging.LogRecord) -> str: msg = record.getMessage() if level in self.COLORS: - msg = HtmlFormatting.SEQUENCE.value.format(self.COLORS[level], msg) + msg = HtmlFormatting.LOG.value.format(self.COLORS[level], msg) + + msg = self.BOLD.sub(HtmlFormatting.INLINE.value.format(HtmlFormatting.BOLD.value, r'\1'), msg) + msg = self.UNDERLINED.sub(HtmlFormatting.INLINE.value.format(HtmlFormatting.UNDERLINED.value, r'\1'), msg) + msg = self.DIM.sub(HtmlFormatting.INLINE.value.format(HtmlFormatting.DIM.value, r'\1'), msg) + msg = self.COLOR.sub(self.colorFormat, msg) return msg + + + @staticmethod + def colorFormat(m: Match) -> str: + color = m.group(1).title() + return HtmlFormatting.INLINE.value.format(f'log{color}', m.group(2)) diff --git a/core/util/model/MqttLoggingHandler.py b/core/util/model/MqttLoggingHandler.py index 7440fd075..dcf8896ed 100644 --- a/core/util/model/MqttLoggingHandler.py +++ b/core/util/model/MqttLoggingHandler.py @@ -15,6 +15,7 @@ def emit(self, record: logging.LogRecord) -> None: record.msg = self.format(record) if not SuperManager.getInstance() or not SuperManager.getInstance().mqttManager: + # cache the logs until mqtt manager is started self._buffer.put(record.msg) return diff --git a/main.py b/main.py index 19733ea09..b85e87faa 100644 --- a/main.py +++ b/main.py @@ -30,13 +30,13 @@ import psutil from core.Initializer import Initializer -from core.util.model import BashFormatting, HtmlFormatting +from core.util.model import BashFormatting, FileFormatting, HtmlFormatting from core.util.model.MqttLoggingHandler import MqttLoggingHandler _logger = logging.getLogger('ProjectAlice') _logger.setLevel(logging.INFO) -logFileFormatter = logging.Formatter('%(asctime)s [%(threadName)s] - [%(levelname)s] - %(message)s') +logFileFormatter = FileFormatting.Formatter() bashFormatter = BashFormatting.Formatter() htmlFormatter = HtmlFormatting.Formatter() From c4eb3a163240640f4bfdcb47932a647f15639ff4 Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 19 Mar 2020 16:19:32 +0100 Subject: [PATCH 129/139] Interface logs now reactive --- core/interface/static/js/syslog.js | 17 +++++---------- core/interface/views/DevModeView.py | 5 ----- core/interface/views/SyslogView.py | 5 ----- core/util/model/MqttLoggingHandler.py | 30 +++++++-------------------- 4 files changed, 13 insertions(+), 44 deletions(-) diff --git a/core/interface/static/js/syslog.js b/core/interface/static/js/syslog.js index d3c7c273f..23ed0fd16 100644 --- a/core/interface/static/js/syslog.js +++ b/core/interface/static/js/syslog.js @@ -1,22 +1,10 @@ $(function () { - function getLogColor(line) { - if (line.includes('[INFO]')) { - return 'logInfo'; - } else if (line.includes('[WARNING]')) { - return 'logWarning'; - } else if (line.includes('[ERROR]')) { - return 'logError'; - } else { - return 'logInfo'; - } - } function onMessage(msg) { let container = $('#console'); let json = JSON.parse(msg.payloadString); container.append(json['msg']); - if ($('#checkedCheckbox').is(':visible')) { container.scrollTop(container.prop('scrollHeight')); } @@ -36,6 +24,11 @@ $(function () { function onConnect() { MQTT.subscribe('projectalice/logging/syslog'); + + $.ajax({ + url: '/syslog/connected/', + type: 'POST' + }) } mqttRegisterSelf(onConnect, 'onConnect'); diff --git a/core/interface/views/DevModeView.py b/core/interface/views/DevModeView.py index 295322e84..76dc4713c 100644 --- a/core/interface/views/DevModeView.py +++ b/core/interface/views/DevModeView.py @@ -6,11 +6,6 @@ class DevModeView(View): route_base = '/devmode/' - - def __init__(self): - super().__init__() - - def index(self): skills = {**self.SkillManager.activeSkills, **self.SkillManager.deactivatedSkills} skills = {skillName: skill for skillName, skill in sorted(skills.items()) if skill is not None} diff --git a/core/interface/views/SyslogView.py b/core/interface/views/SyslogView.py index 366a0af63..7f2825a39 100644 --- a/core/interface/views/SyslogView.py +++ b/core/interface/views/SyslogView.py @@ -6,11 +6,6 @@ class SyslogView(View): route_base = '/syslog/' - - def __init__(self): - super().__init__() - - def index(self): return render_template(template_name_or_list='syslog.html', langData=self._langData, diff --git a/core/util/model/MqttLoggingHandler.py b/core/util/model/MqttLoggingHandler.py index dcf8896ed..b1e1f1a63 100644 --- a/core/util/model/MqttLoggingHandler.py +++ b/core/util/model/MqttLoggingHandler.py @@ -1,36 +1,22 @@ import logging -from queue import Queue from core.base.SuperManager import SuperManager class MqttLoggingHandler(logging.Handler): + def __init__(self): super().__init__() - self._buffer = Queue() def emit(self, record: logging.LogRecord) -> None: record.msg = self.format(record) - if not SuperManager.getInstance() or not SuperManager.getInstance().mqttManager: - # cache the logs until mqtt manager is started - self._buffer.put(record.msg) - return - - if not self._buffer.empty(): - while not self._buffer.empty(): - SuperManager.getInstance().mqttManager.publish( - topic='projectalice/logging/syslog', - payload={ - 'msg': self._buffer.get() - } - ) - - SuperManager.getInstance().mqttManager.publish( - topic='projectalice/logging/syslog', - payload={ - 'msg': record.msg - } - ) + if SuperManager.getInstance() and SuperManager.getInstance().mqttManager: + SuperManager.getInstance().mqttManager.publish( + topic='projectalice/logging/syslog', + payload={ + 'msg': record.msg + } + ) From a7fbe3aa532b2e0e518bdf6f89ef7f626fc8c25d Mon Sep 17 00:00:00 2001 From: Psycho Date: Thu, 19 Mar 2020 23:02:52 +0100 Subject: [PATCH 130/139] First step for stdout markdown support --- core/util/model/BashFormatting.py | 54 +++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/core/util/model/BashFormatting.py b/core/util/model/BashFormatting.py index 8ae36773b..d48b4c9e5 100644 --- a/core/util/model/BashFormatting.py +++ b/core/util/model/BashFormatting.py @@ -1,4 +1,5 @@ import logging +from typing import Match import re from copy import copy @@ -6,19 +7,19 @@ class BashStringFormatCode(Enum): - SEQUENCE = '\\\\033[{}m' + SEQUENCE = '\033[{}m{}\033[{}m' RESET = 0 BOLD = 1 DIM = 2 UNDERLINED = 4 - DEFAULT = '39' - RED = '31' - GREEN = '32' - YELLOW = '33' - BLUE = '94' - GREY = '90' + DEFAULT = 39 + RED = 31 + GREEN = 32 + YELLOW = 33 + BLUE = 94 + GREY = 90 class Formatter(logging.Formatter): @@ -44,19 +45,38 @@ def __init__(self): super().__init__(mask) - # TODO implement mardown support for stdout + # TODO implement markdown support for stdout def format(self, record: logging.LogRecord) -> str: level = record.levelname rec = copy(record) msg = rec.msg if level in self.COLORS: - msg = f'\033[{self.COLORS[level]}m{record.msg}\033[0m' - - msg = self.BOLD.sub(r'\1', msg) - msg = self.DIM.sub(r'\1', msg) - msg = self.UNDERLINED.sub(r'\1', msg) - msg = self.COLOR.sub(r'\2', msg) - - rec.msg = msg - return logging.Formatter.format(self, rec) + msg = BashStringFormatCode.SEQUENCE.value.format(self.COLORS[level], msg, BashStringFormatCode.RESET.value) + + msg = self.BOLD.sub(BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.BOLD.value, r'\1', 2), msg) + msg = self.DIM.sub(BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.DIM.value, r'\1', BashStringFormatCode.DIM.value + 20), msg) + msg = self.UNDERLINED.sub(BashStringFormatCode.SEQUENCE.value.format(BashStringFormatCode.UNDERLINED.value, r'\1', BashStringFormatCode.UNDERLINED.value + 20), msg) + # msg = self.COLOR.sub(self.colorFormat, msg) + + return msg + + + @staticmethod + def colorFormat(m: Match) -> str: + color = m.group(1).title() + + if color == 'red': + code = BashStringFormatCode.RED.value + elif color == 'green': + code = BashStringFormatCode.GREEN.value + elif color == 'yellow': + code = BashStringFormatCode.YELLOW.value + elif color == 'blue': + code = BashStringFormatCode.BLUE.value + elif color == 'grey': + code = BashStringFormatCode.GREY.value + else: + code = BashStringFormatCode.DEFAULT.value + + return BashStringFormatCode.SEQUENCE.value.format(code, m.group(2), BashStringFormatCode.DEFAULT) From 756baf4cd063c94af6a17bd467af491cecf0941e Mon Sep 17 00:00:00 2001 From: Psycho Date: Fri, 20 Mar 2020 18:43:10 +0100 Subject: [PATCH 131/139] First step at alicewatch, removing snips-watch --- core/base/SuperManager.py | 5 +- core/base/model/ProjectAliceObject.py | 5 ++ core/commons/constants.py | 2 +- core/interface/static/css/projectalice.css | 8 +- core/interface/static/js/alicewatch.js | 48 +++++++----- core/interface/views/AliceWatchView.py | 27 +------ core/snips/SnipsWatchManager.py | 89 ---------------------- core/util/AliceWatchManager.py | 44 +++++++++++ sysrequirements.txt | 1 - 9 files changed, 90 insertions(+), 139 deletions(-) delete mode 100644 core/snips/SnipsWatchManager.py create mode 100644 core/util/AliceWatchManager.py diff --git a/core/base/SuperManager.py b/core/base/SuperManager.py index 67bc00442..63d669eed 100644 --- a/core/base/SuperManager.py +++ b/core/base/SuperManager.py @@ -49,6 +49,7 @@ def __init__(self, mainClass): self.nluManager = None self.snipsAssistantManager = None self.dialogTemplateManager = None + self.aliceWatchManager = None def onStart(self): @@ -144,12 +145,12 @@ def initManagers(self): from core.voice.TTSManager import TTSManager from core.voice.WakewordManager import WakewordManager from core.interface.WebInterfaceManager import WebInterfaceManager - from core.snips.SnipsWatchManager import SnipsWatchManager from core.interface.NodeRedManager import NodeRedManager from core.base.SkillStoreManager import SkillStoreManager from core.dialog.DialogTemplateManager import DialogTemplateManager from core.snips.SnipsAssistantManager import SnipsAssistantManager from core.nlu.NluManager import NluManager + from core.util.AliceWatchManager import AliceWatchManager self.commonsManager = CommonsManager() self.commons = self.commonsManager @@ -173,12 +174,12 @@ def initManagers(self): self.wakewordManager = WakewordManager() self.talkManager = TalkManager() self.webInterfaceManager = WebInterfaceManager() - self.snipsWatchManager = SnipsWatchManager() self.nodeRedManager = NodeRedManager() self.skillStoreManager = SkillStoreManager() self.dialogTemplateManager = DialogTemplateManager() self.snipsAssistantManager = SnipsAssistantManager() self.nluManager = NluManager() + self.aliceWatchManager = AliceWatchManager() self._managers = {name[0].upper() + name[1:]: manager for name, manager in self.__dict__.items() if name.endswith('Manager')} diff --git a/core/base/model/ProjectAliceObject.py b/core/base/model/ProjectAliceObject.py index 8954de10c..1ee79afd6 100644 --- a/core/base/model/ProjectAliceObject.py +++ b/core/base/model/ProjectAliceObject.py @@ -512,3 +512,8 @@ def DialogTemplateManager(self): @property def SnipsAssistantManager(self): return SM.SuperManager.getInstance().snipsAssistantManager + + + @property + def AliceWatchManager(self): + return SM.SuperManager.getInstance().aliceWatchManager diff --git a/core/commons/constants.py b/core/commons/constants.py index a542e9ddb..560ebc89a 100644 --- a/core/commons/constants.py +++ b/core/commons/constants.py @@ -1,5 +1,5 @@ VERSION = '1.0.0-a6' -DEFAULT_SITE_ID = 'default' +DEFAULT_SITE_ID = 'office' DEFAULT = 'default' UNKNOWN_WORD = 'unknownword' UNKNOWN_USER = 'unknownUser' diff --git a/core/interface/static/css/projectalice.css b/core/interface/static/css/projectalice.css index f89292399..0f85dfbfc 100644 --- a/core/interface/static/css/projectalice.css +++ b/core/interface/static/css/projectalice.css @@ -53,11 +53,11 @@ nav { } .logBold { - font-weight: bold; + font-weight: bolder; } .logDim { - font-weight: lighter; + color: #919191; } .logUnderlined { @@ -88,6 +88,10 @@ nav { color: grey; } +.logOrange { + color: orange; +} + .mainMenuList { list-style-type: none; margin: 0; diff --git a/core/interface/static/js/alicewatch.js b/core/interface/static/js/alicewatch.js index bf47960d2..a4df672f2 100644 --- a/core/interface/static/js/alicewatch.js +++ b/core/interface/static/js/alicewatch.js @@ -1,21 +1,32 @@ $(function () { - function refreshData() { + + function onMessage(msg) { let container = $('#console'); - $.ajax({ - url: '/alicewatch/refreshConsole/', - dataType: 'json', - type: 'POST' - }).done(function (response) { - for (let i = 0; i < response.data.length; i++) { - container.append( - '' + response.data[i] + '' - ); - } - }).always(function () { - if ($('#checkedCheckbox').is(':visible')) { - container.scrollTop(container.prop('scrollHeight')); - } - }); + let payload = JSON.parse(msg.payloadString); + + let pattern = /!\[(Red|Green|Yellow|Orange|Blue|Grey)\]\((.*?)\)/gi; + let text = payload['text'].replace(pattern, '$2'); + + pattern = /\*\*(.*?)\*\*/gi; + text = text.replace(pattern, '$1'); + + pattern = /__(.*?)__/gi; + text = text.replace(pattern, '$1'); + + pattern = /--(.*?)--/gi; + text = text.replace(pattern, '$1'); + + container.append( + '' + text + '' + ); + + if ($('#checkedCheckbox').is(':visible')) { + container.scrollTop(container.prop('scrollHeight')); + } + } + + function onConnect() { + MQTT.subscribe('projectalice/logging/alicewatch') } $('#checkedCheckbox').on('click touchstart', function () { @@ -43,7 +54,6 @@ $(function () { return false; }); - setInterval(function () { - refreshData(); - }, 500); + mqttRegisterSelf(onConnect, 'onConnect'); + mqttRegisterSelf(onMessage, 'onMessage'); }); diff --git a/core/interface/views/AliceWatchView.py b/core/interface/views/AliceWatchView.py index a9379ed17..2d8b18c53 100644 --- a/core/interface/views/AliceWatchView.py +++ b/core/interface/views/AliceWatchView.py @@ -1,6 +1,3 @@ -import tempfile -from pathlib import Path - from flask import jsonify, render_template, request from core.interface.model.View import View @@ -10,36 +7,16 @@ class AliceWatchView(View): route_base = '/alicewatch/' - def __init__(self): - super().__init__() - self._counter = 0 - self._thread = None - self._file = Path(tempfile.gettempdir(), 'alicewatch') - self._process = None - - def index(self): - self.SnipsWatchManager.startWatching() return render_template(template_name_or_list='alicewatch.html', langData=self._langData, aliceSettings=self.ConfigManager.aliceConfigurations) - def refreshConsole(self): - return jsonify(data=self.SnipsWatchManager.getLogs()) - - def verbosity(self): try: - if self._process: - self._process.terminate() - - verbosity = int(request.form.get('verbosity')) - self.SnipsWatchManager.setVerbosity(verbosity) - return self.refreshConsole() + self.AliceWatchManager.verbosity = int(request.form.get('verbosity')) + return jsonify(success=True) except Exception as e: self.logError(f'Error setting verbosity: {e}') return jsonify(success=False) - - - diff --git a/core/snips/SnipsWatchManager.py b/core/snips/SnipsWatchManager.py deleted file mode 100644 index 2c63be38f..000000000 --- a/core/snips/SnipsWatchManager.py +++ /dev/null @@ -1,89 +0,0 @@ -import subprocess -import time -from pathlib import Path - -import re -import tempfile -# noinspection PyUnresolvedReferences -from fcntl import F_GETFL, F_SETFL, fcntl -# noinspection PyUnresolvedReferences -from os import O_NONBLOCK - -from core.base.model.Manager import Manager - - -class SnipsWatchManager(Manager): - - def __init__(self): - super().__init__() - self._counter = 0 - self._thread = None - self._file = Path(tempfile.gettempdir(), 'snipswatch') - self._lastCheck = 0 - - - def startWatching(self, verbosity: int = 0): - self._lastCheck = int(time.time()) - self.stopWatching() - - self._counter = 0 - if self._file.exists(): - self._file.unlink() - - flag = self.ThreadManager.newEvent('snipswatchrunning') - flag.set() - self._thread = self.ThreadManager.newThread( - name='snipswatch', - target=self.watch, - args=[verbosity], - autostart=True - ) - - - def watch(self, verbosity: int = 0): - flag = self.ThreadManager.getEvent('snipswatchrunning') - - arg = ' -' + verbosity * 'v' if verbosity > 0 else '' - process = subprocess.Popen(f'snips-watch {arg} --html', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - - # This makes stdout.readline non blocking! - flags = fcntl(process.stdout, F_GETFL) - fcntl(process.stdout, F_SETFL, flags | O_NONBLOCK) - - while flag.isSet(): - out = process.stdout.readline().decode() or '' - if out: - with open(self._file, 'a+') as fp: - line = out.replace('', '').replace('#009900', '"yellow"').replace('#0000ff', '"green"') - line = re.sub('(.*?)', '\\1', line) - fp.write(line) - - if int(time.time()) - 5 > self._lastCheck: - # Don't let snipswatch run for nothing. - flag.clear() - - time.sleep(0.1) - - process.kill() - - - def stopWatching(self): - self.ThreadManager.getEvent('snipswatchrunning').clear() - self.ThreadManager.terminateThread('snipswatch') - - - def setVerbosity(self, verbosity: int): - self.startWatching(verbosity) - - - def getLogs(self) -> list: - # _lastCheck is set to current timestamp everytime the interface asks for logs. If user changes page, it won't be updated anymore - # and thus snipswatch will be terminated - self._lastCheck = int(time.time()) - try: - data = self._file.open('r').readlines() - ret = data[self._counter:] - self._counter = len(data) - return ret - except: - return list() diff --git a/core/util/AliceWatchManager.py b/core/util/AliceWatchManager.py new file mode 100644 index 000000000..8ba0402cc --- /dev/null +++ b/core/util/AliceWatchManager.py @@ -0,0 +1,44 @@ +from datetime import datetime + +from core.base.model.Manager import Manager +from core.commons import constants +from core.dialog.model.DialogSession import DialogSession + + +class AliceWatchManager(Manager): + + def __init__(self): + super().__init__() + self._verbosity = 0 + + + @property + def verbosity(self): + return self._verbosity + + + @verbosity.setter + def verbosity(self, value: int): + self._verbosity = self.Commons.clamp(value, 0, 4) + + + def onHotword(self, siteId: str, user: str = constants.UNKNOWN_USER): + if self._verbosity < 1: + return + + self.publish(payload={ + 'text': f'[Hotword] Detected on site **{siteId}**, for user **{user}**' + }) + + + def onIntentParsed(self, session: DialogSession): + self.publish(payload={ + 'text': f'[Dialogue] New intent detected ![Yellow]({session.payload["intent"]["intentName"]}) with confidence ![Yellow]({round(session.payload["intent"]["confidenceScore"], 3)})' + }) + + + def publish(self, payload: dict = None): + topic = f'projectalice/logging/alicewatch' + payload['text'] = f'![Orange]([{datetime.strftime(datetime.now(), "%H:%M:%S")}]) {payload["text"]}' + + self.MqttManager.publish(topic=topic, payload=payload) diff --git a/sysrequirements.txt b/sysrequirements.txt index 9d31c5668..73ae5d133 100644 --- a/sysrequirements.txt +++ b/sysrequirements.txt @@ -22,7 +22,6 @@ flac libttspico-utils libav-tools snips-platform-voice -snips-watch snips-makers-tts snips-hotword-model-heysnipsv4 libatlas-base-dev From b60ac530ea6b6be23cca81420d9545e45cc24cd6 Mon Sep 17 00:00:00 2001 From: Psycho Date: Fri, 20 Mar 2020 23:58:18 +0100 Subject: [PATCH 132/139] Adding some AliceWatch level 1 --- core/base/model/ProjectAliceObject.py | 4 +++ core/commons/constants.py | 1 + core/interface/static/js/alicewatch.js | 13 ++++++-- core/interface/static/js/common.js | 23 +++++++------ core/server/MqttManager.py | 27 ++++++++++++++-- core/util/AliceWatchManager.py | 45 ++++++++++++++++++++++++++ 6 files changed, 97 insertions(+), 16 deletions(-) diff --git a/core/base/model/ProjectAliceObject.py b/core/base/model/ProjectAliceObject.py index 1ee79afd6..4689c6142 100644 --- a/core/base/model/ProjectAliceObject.py +++ b/core/base/model/ProjectAliceObject.py @@ -379,6 +379,10 @@ def onPartialTextCaptured(self, session, text: str, likelihood: float, seconds: pass + def onEndSession(self, session): + pass + + @property def ProjectAlice(self): return SM.SuperManager.getInstance().projectAlice diff --git a/core/commons/constants.py b/core/commons/constants.py index 560ebc89a..af51f85d8 100644 --- a/core/commons/constants.py +++ b/core/commons/constants.py @@ -68,6 +68,7 @@ EVENT_PARTIAL_TEXT_CAPTURED = 'partialTextCaptured' EVENT_NLU_QUERY = 'nluQuery' EVENT_INTENT_PARSED = 'intentParsed' +EVENT_END_SESSION = 'endSession' EVENT_SESSION_ENDED = 'sessionEnded' EVENT_USER_CANCEL = 'userCancel' EVENT_SESSION_TIMEOUT = 'sessionTimeout' diff --git a/core/interface/static/js/alicewatch.js b/core/interface/static/js/alicewatch.js index a4df672f2..7cac27230 100644 --- a/core/interface/static/js/alicewatch.js +++ b/core/interface/static/js/alicewatch.js @@ -1,7 +1,8 @@ $(function () { + let $console = $('#console'); + function onMessage(msg) { - let container = $('#console'); let payload = JSON.parse(msg.payloadString); let pattern = /!\[(Red|Green|Yellow|Orange|Blue|Grey)\]\((.*?)\)/gi; @@ -16,16 +17,22 @@ $(function () { pattern = /--(.*?)--/gi; text = text.replace(pattern, '$1'); - container.append( + $console.append( '' + text + '' ); if ($('#checkedCheckbox').is(':visible')) { - container.scrollTop(container.prop('scrollHeight')); + $console.scrollTop($console.prop('scrollHeight')); } } function onConnect() { + let date = new Date(); + let time = ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2) + ':' + ('0' + date.getSeconds()).slice(-2); + $console.append( + '[' + time + '] [AliceWatch] Watching on ' + MQTT_HOST + ':' + MQTT_PORT + ' (MQTT)' + ); + MQTT.subscribe('projectalice/logging/alicewatch') } diff --git a/core/interface/static/js/common.js b/core/interface/static/js/common.js index 1ccb0590c..7274e520f 100644 --- a/core/interface/static/js/common.js +++ b/core/interface/static/js/common.js @@ -1,5 +1,7 @@ let MQTT; let mqttSubscribers = {}; +let MQTT_HOST; +let MQTT_PORT; function mqttRegisterSelf(target, method) { if (!mqttSubscribers.hasOwnProperty(method)) { @@ -39,17 +41,18 @@ $(function () { type: 'POST' }).done(function (response) { if (response.success) { - let host = response.host; - if (host === 'localhost') { - host = window.location.hostname; - MQTT = new Paho.MQTT.Client(host, Number(response.port), 'ProjectAliceInterface'); - MQTT.onMessageArrived = onMessage; - MQTT.connect({ - onSuccess: onConnect, - onFailure: onFailure, - timeout: 5 - }); + MQTT_HOST = response.host; + MQTT_PORT = Number(response.port); + if (MQTT_HOST === 'localhost') { + MQTT_HOST = window.location.hostname; } + MQTT = new Paho.MQTT.Client(MQTT_HOST, MQTT_PORT, 'ProjectAliceInterface'); + MQTT.onMessageArrived = onMessage; + MQTT.connect({ + onSuccess: onConnect, + onFailure: onFailure, + timeout: 5 + }); } else { console.log('Failed fetching MQTT settings') } diff --git a/core/server/MqttManager.py b/core/server/MqttManager.py index 85f8c41a6..f1c9a691c 100644 --- a/core/server/MqttManager.py +++ b/core/server/MqttManager.py @@ -79,6 +79,8 @@ def onStart(self): self._mqttClient.message_callback_add(constants.TOPIC_HOTWORD_TOGGLE_OFF, self.onSnipsHotwordToggleOff) + self._mqttClient.message_callback_add(constants.TOPIC_END_SESSION, self.onEventEndSession) + self.connect() @@ -108,7 +110,8 @@ def onConnect(self, client, userdata, flags, rc): (constants.TOPIC_TEXT_CAPTURED, 0), (constants.TOPIC_HOTWORD_TOGGLE_ON, 0), (constants.TOPIC_HOTWORD_TOGGLE_OFF, 0), - (constants.TOPIC_NLU_QUERY, 0) + (constants.TOPIC_NLU_QUERY, 0), + (constants.TOPIC_END_SESSION, 0) ] for username in self.UserManager.getAllUserNames(): @@ -311,6 +314,7 @@ def onSnipsSessionStarted(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.addSession(sessionId=sessionId, message=msg) if session: + session.update(msg) self.broadcast(method=constants.EVENT_SESSION_STARTED, exceptions=[self.name], propagateToSkills=True, session=session) @@ -320,6 +324,7 @@ def onSnipsSessionQueued(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.addSession(sessionId=sessionId, message=msg) if session: + session.update(msg) self.broadcast(method=constants.EVENT_SESSION_QUEUED, exceptions=[self.name], propagateToSkills=True, session=session) @@ -330,6 +335,8 @@ def onTopicNluQuery(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId) if not session: session = self.DialogSessionManager.addSession(sessionId=sessionId, message=msg) + else: + session.update(msg) self.broadcast(method=constants.EVENT_NLU_QUERY, exceptions=[self.name], propagateToSkills=True, session=session) @@ -340,6 +347,7 @@ def onSnipsStartListening(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId=sessionId) if session: + session.update(msg) self.broadcast(method=constants.EVENT_START_LISTENING, exceptions=[self.name], propagateToSkills=True, session=session) @@ -349,6 +357,7 @@ def onSnipsStopListening(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId=sessionId) if session: + session.update(msg) self.broadcast(method=constants.EVENT_STOP_LISTENING, exceptions=[self.name], propagateToSkills=True, session=session) @@ -358,6 +367,7 @@ def onSnipsCaptured(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId=sessionId) if session: + session.update(msg) self.broadcast(method=constants.EVENT_CAPTURED, exceptions=[self.name], propagateToSkills=True, session=session) @@ -413,7 +423,7 @@ def onSnipsSay(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId) if session: - session.payload = payload + session.update(msg) siteId = session.siteId else: siteId = self.Commons.parseSiteId(msg) @@ -433,7 +443,7 @@ def onSnipsSayFinished(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId) if session: - session.payload = payload + session.update(msg) self.broadcast(method=constants.EVENT_SAY_FINISHED, exceptions=[self.name], propagateToSkills=True, session=session) @@ -444,6 +454,7 @@ def onSnipsIntentNotRecognized(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId) if not session: + session.update(msg) self.ask(text=self.TalkManager.randomTalk('notUnderstood', skill='system'), client='default') else: if session.intentFilter and not str(self._INTENT_RANDOM_ANSWER) in session.intentFilter: @@ -499,6 +510,7 @@ def onNluPartialCapture(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId) if session: + session.update(msg) payload = self.Commons.payload(msg) self.broadcast(method=constants.EVENT_PARTIAL_TEXT_CAPTURED, exceptions=[self.name], propagateToSkills=True, session=session, text=payload['text'], likelihood=payload['likelihood'], seconds=payload['seconds']) @@ -515,6 +527,15 @@ def onVADDown(self, client, data, msg: mqtt.MQTTMessage): self.broadcast(method=constants.EVENT_VAD_DOWN, exceptions=[self.name], propagateToSkills=True, siteId=siteId) + # noinspection PyUnusedLocal + def onEventEndSession(self, client, data, msg: mqtt.MQTTMessage): + sessionId = self.Commons.parseSessionId(msg) + session = self.DialogSessionManager.getSession(sessionId) + if session: + session.update(msg) + self.broadcast(method=constants.EVENT_END_SESSION, exceptions=[self.name], propagateToSkills=True, session=session) + + def reviveSession(self, session: DialogSession, text: str): self.endSession(session.sessionId) self.DialogSessionManager.planSessionRevival(session) diff --git a/core/util/AliceWatchManager.py b/core/util/AliceWatchManager.py index 8ba0402cc..cdfb88ce4 100644 --- a/core/util/AliceWatchManager.py +++ b/core/util/AliceWatchManager.py @@ -37,6 +37,51 @@ def onIntentParsed(self, session: DialogSession): }) + def onSessionStarted(self, session: DialogSession): + if self._verbosity < 1: + return + + self.publish(payload={ + 'text': f'[Dialogue] Session with id "**{session.sessionId}**" was started on site **office**' + }) + + + def onCaptured(self, session: DialogSession): + if self._verbosity < 1: + return + + self.publish(payload={ + 'text': f'[ASR] Captured text "![Yellow]({session.payload["text"]})" in {round(session.payload["seconds"], 1)}s' + }) + + + def onEndSession(self, session: DialogSession): + if self._verbosity < 1: + return + + self.publish(payload={ + 'text': f'[Dialogue] Was asked to end session with id "**{session.sessionId}**" by saying "{session.payload["text"]}"' + }) + + + def onSay(self, session: DialogSession): + if self._verbosity < 1: + return + + self.publish(payload={ + 'text': f'[TTS] Was asked to say "![Yellow]({session.payload["text"]})"' + }) + + + def onSessionEnded(self, session: DialogSession): + if self._verbosity < 1: + return + + self.publish(payload={ + 'text': f'[Dialogue] Session with id "**{session.sessionId}**" was ended on site **{session.siteId}**. The session ended as expected' + }) + + def publish(self, payload: dict = None): topic = f'projectalice/logging/alicewatch' payload['text'] = f'![Orange]([{datetime.strftime(datetime.now(), "%H:%M:%S")}]) {payload["text"]}' From 717d0c86bfe787dd8076a6b712b5b1eb557acef1 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 21 Mar 2020 10:19:38 +0100 Subject: [PATCH 133/139] Fix wrong session update --- core/server/MqttManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/server/MqttManager.py b/core/server/MqttManager.py index f1c9a691c..1946276bb 100644 --- a/core/server/MqttManager.py +++ b/core/server/MqttManager.py @@ -454,9 +454,9 @@ def onSnipsIntentNotRecognized(self, client, data, msg: mqtt.MQTTMessage): session = self.DialogSessionManager.getSession(sessionId) if not session: - session.update(msg) self.ask(text=self.TalkManager.randomTalk('notUnderstood', skill='system'), client='default') else: + session.update(msg) if session.intentFilter and not str(self._INTENT_RANDOM_ANSWER) in session.intentFilter: return From 9606b195b610691e8b625362b07861766874e6f4 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 21 Mar 2020 10:22:26 +0100 Subject: [PATCH 134/139] Update all install tickets --- system/skillInstallTickets/AliceCore.install | 10 ++++++---- system/skillInstallTickets/ContextSensitive.install | 12 +++++++----- system/skillInstallTickets/DateDayTimeYear.install | 10 ++++++---- system/skillInstallTickets/RedQueen.install | 8 +++++--- system/skillInstallTickets/Telemetry.install | 8 +++++--- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/system/skillInstallTickets/AliceCore.install b/system/skillInstallTickets/AliceCore.install index d0dcf4850..ef26a90c9 100644 --- a/system/skillInstallTickets/AliceCore.install +++ b/system/skillInstallTickets/AliceCore.install @@ -1,7 +1,8 @@ { "name": "AliceCore", - "version": "1.0.48", - "icon": "fab fa-battle-net", + "version": "1.0.61", + "icon": "fas fa-biohazard", + "category": "alice", "author": "ProjectAlice", "maintainers": [ "Psycho", @@ -9,14 +10,15 @@ "maxbachmann" ], "desc": "AliceCore is the official skill that handles all core intents.", - "aliceMinVersion": "1.0.0-a5", + "aliceMinVersion": "1.0.0-a6", "systemRequirements": [], "pipRequirements": [], "conditions": { "lang": [ "en", "fr", - "de" + "de", + "it" ] } } diff --git a/system/skillInstallTickets/ContextSensitive.install b/system/skillInstallTickets/ContextSensitive.install index 4d9c8a654..c84bcd00a 100644 --- a/system/skillInstallTickets/ContextSensitive.install +++ b/system/skillInstallTickets/ContextSensitive.install @@ -1,21 +1,23 @@ { "name": "ContextSensitive", - "version": "1.0.14", - "icon": "fab fa-battle-net", + "version": "1.0.17", + "icon": "fas fa-brain", + "category": "alice", "author": "ProjectAlice", "maintainers": [ "Psycho", "maxbachmann" ], - "desc": "ContextSensitive is the official context sensitive skill. It handle intents like 'Delete this', 'Forget about that'", - "aliceMinVersion": "1.0.0-a5", + "desc": "ContextSensitive is the official context sensitive skill. It handles intents like 'Delete this', 'Change that', 'Please repeat", + "aliceMinVersion": "1.0.0-a6", "systemRequirements": [], "pipRequirements": [], "conditions": { "lang": [ "en", "fr", - "de" + "de", + "it" ] } } diff --git a/system/skillInstallTickets/DateDayTimeYear.install b/system/skillInstallTickets/DateDayTimeYear.install index 5527b58e9..74fb1f78d 100644 --- a/system/skillInstallTickets/DateDayTimeYear.install +++ b/system/skillInstallTickets/DateDayTimeYear.install @@ -1,14 +1,15 @@ { "name": "DateDayTimeYear", - "version": "1.0.21", - "icon": "fab fa-battle-net", + "version": "1.0.24", + "icon": "far fa-clock", + "category": "assistance", "author": "Psychokiller1888", "maintainers": [ "maxbachmann", "SkyHyperV" ], "desc": "Ask for the time, date, day and year", - "aliceMinVersion": "1.0.0-a4", + "aliceMinVersion": "1.0.0-a6", "systemRequirements": [], "pipRequirements": [ "Babel" @@ -17,7 +18,8 @@ "lang": [ "en", "fr", - "de" + "de", + "it" ] } } diff --git a/system/skillInstallTickets/RedQueen.install b/system/skillInstallTickets/RedQueen.install index b12b26148..d25971df4 100644 --- a/system/skillInstallTickets/RedQueen.install +++ b/system/skillInstallTickets/RedQueen.install @@ -1,21 +1,23 @@ { "name": "RedQueen", - "version": "1.0.19", + "version": "1.0.22", "icon": "fab fa-battle-net", + "category": "alice", "author": "ProjectAlice", "maintainers": [ "Psycho", "maxbachmann" ], "desc": "Red Queen is the official Project Alice personality skill", - "aliceMinVersion": "1.0.0-a5", + "aliceMinVersion": "1.0.0-a6", "systemRequirements": [], "pipRequirements": [], "conditions": { "lang": [ "en", "fr", - "de" + "de", + "it" ] } } diff --git a/system/skillInstallTickets/Telemetry.install b/system/skillInstallTickets/Telemetry.install index ce4ea2c00..efe7d5047 100644 --- a/system/skillInstallTickets/Telemetry.install +++ b/system/skillInstallTickets/Telemetry.install @@ -1,7 +1,8 @@ { "name": "Telemetry", - "version": "1.1.0", - "icon": "fab fa-battle-net", + "version": "1.1.5", + "icon": "fas fa-database", + "category": "alice", "author": "ProjectAlice", "maintainers": [ "Psychokiller1888", @@ -14,7 +15,8 @@ "conditions": { "lang": [ "en", - "de" + "de", + "it" ], "activeManager": [ "TelemetryManager" From a71b351a1391ced89025b0556fed6d96ca91f23d Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 21 Mar 2020 11:09:38 +0100 Subject: [PATCH 135/139] Missing deepspeech in yaml --- ProjectAlice.advanced.yaml | 2 +- ProjectAlice.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectAlice.advanced.yaml b/ProjectAlice.advanced.yaml index 511e34706..4e00c497c 100644 --- a/ProjectAlice.advanced.yaml +++ b/ProjectAlice.advanced.yaml @@ -114,7 +114,7 @@ shortReplies: no # If set to yes Alice will whisper instead of using short answers when you are sleeping. Currently only available with Amazon TTS whisperWhenSleeping: no -# Either 'pocketsphinx' or 'google' +# Either 'pocketsphinx', 'deepspeech' or 'google' asr: pocketsphinx # Either 'pico', 'snips', 'mycroft', 'amazon' or 'google' diff --git a/ProjectAlice.yaml b/ProjectAlice.yaml index 3cb59f58c..aefdc835a 100644 --- a/ProjectAlice.yaml +++ b/ProjectAlice.yaml @@ -63,7 +63,7 @@ baseCurrency: USD # Either 'metric', 'kelvin' or 'imperial' baseUnits: metric -# Either 'pocketsphinx' or 'google' +# Either 'pocketsphinx', 'deepspeech' or 'google' asr: pocketsphinx # Either 'pico', 'snips', 'mycroft', 'amazon' or 'google' From 6c838481a045f511f35cbe06ec64160fa188a880 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 21 Mar 2020 11:10:21 +0100 Subject: [PATCH 136/139] default pico settings --- ProjectAlice.advanced.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectAlice.advanced.yaml b/ProjectAlice.advanced.yaml index 4e00c497c..1c1f58ebd 100644 --- a/ProjectAlice.advanced.yaml +++ b/ProjectAlice.advanced.yaml @@ -120,8 +120,8 @@ asr: pocketsphinx # Either 'pico', 'snips', 'mycroft', 'amazon' or 'google' tts: pico -ttsType: female -ttsVoice: Joanna +ttsType: male +ttsVoice: en-US ttsLanguage: en-US # Amazon Polly From 6fae8912b6a10b756c893038de24d51f34a30461 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 21 Mar 2020 14:30:09 +0100 Subject: [PATCH 137/139] Should fix "RuntimeError: dictionary changed size during iteration" --- core/base/SuperManager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/core/base/SuperManager.py b/core/base/SuperManager.py index 63d669eed..bb2ea6191 100644 --- a/core/base/SuperManager.py +++ b/core/base/SuperManager.py @@ -43,7 +43,6 @@ def __init__(self, mainClass): self.userManager = None self.talkManager = None self.webInterfaceManager = None - self.snipsWatchManager = None self.nodeRedManager = None self.skillStoreManager = None self.nluManager = None From 4ec1faf2262af285c0bd4b54f79676faeacc9911 Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 21 Mar 2020 14:32:15 +0100 Subject: [PATCH 138/139] Simplified yaml will take more work --- ProjectAlice.advanced.yaml | 151 ------------------------------------- ProjectAlice.yaml | 71 ++++++++++++++++- 2 files changed, 67 insertions(+), 155 deletions(-) delete mode 100644 ProjectAlice.advanced.yaml diff --git a/ProjectAlice.advanced.yaml b/ProjectAlice.advanced.yaml deleted file mode 100644 index 1c1f58ebd..000000000 --- a/ProjectAlice.advanced.yaml +++ /dev/null @@ -1,151 +0,0 @@ ---- -################################################ -# # -# Project Alice quick install file # -# For advanced users only # -# Edit the content of this file to your needs # -# and place it in /boot/ProjectAlice.yaml # -# after flashing your sd card with our # -# Project Alice image. # -# # -# Upon first boot Alice will perform some # -# updates and configure according to this file # -# # -################################################ -# DON'T CHANGE ME # -version: 1.16 -################################################ - -# How to prevent frequent errors: -# Always add a space after the ":" (e.g. deviceName: default instead of deviceName:default) - -# If you place this file into /boot after a first initialization it won't overwrite your settings unless you set this to yes -forceRewrite: no - -# By setting the next parameter to yes, ProjectAlice will also install all the required dependencies -doGroundInstall: yes - -# After initialization is done, keep a copy of this yaml file in /boot. Be aware this can be a security risk, as /boot is accessible by anyone mounting your SD card! -keepYAMLBackup: no - -# If you are installing on Raspbian Buster, set the following to yes -installOnBuster: yes - -# Base configs -# Set the admin pin code. This code will allow you to access the interface. Only numbers, 4 digits -adminPinCode: 1234 - -# Enter Wifi credentials for automatic adding of tasmota/zigbee/netatmo devices even when Alice has wired access -useWifi: yes -wifiNetworkName: -wifiWPAPass: -wifiCountryCode: - -# The name of the device to set up -# Caution: The main device should be named default! This will be changed later. -deviceName: default -soundPlaybackAndRecordEnabled: yes - -# Connection -mqttHost: localhost -mqttPort: 1883 -mqttUser: -mqttPassword: -mqttTLSFile: - -# hardware - Turn only one to yes! -audioHardware: - usbMic: no - respeaker2: no - respeaker4: no - respeaker6MicArray: no - respeaker7: no - respeakerCoreV2: no - googleAIY: no - googleAIY2: no - matrixCreator: no - matrixVoice: no - ps3eye: no - -# Capture -micSampleRate: 16000 -micChannels: 1 - -# System -# Whether to install Hermes Led Control or not. HLC is the best way to manage your device leds if you have any -useHLC: yes - -stayCompletlyOffline: no -keepASROffline: yes -keepTTSOffline: yes -skillAutoUpdate: yes -webInterfaceActive: yes - -# enabling dev mode unlocks features on the console as well as unpublished skill loading -devMode: no - -# You should leave this by default, but who knows -newDeviceBroadcastPort: 12354 - -# Project Alice -# 'en', 'fr' or 'de'. For more, we seek helpers ;-) -activeLanguage: en - -# The language country code -activeCountryCode: US - -baseCurrency: CHF - -# Either 'metric', 'kelvin' or 'imperial' -baseUnits: metric - -# Telemetry data, such as temperature, pressure, humidity and others depending on your sensors can be kept in your internal database for forecast or AI use -enableDataStoring: yes - -# Set to max entries to keep, 0 to disable pruning -autoPruneStoredData: 1000 - -# If an intent returns less confidence score than this it will be considered as not understood -probabilityThreshold: 0.5 - -# If set to yes Alice will only answer with shorter answers, when available -shortReplies: no - -# If set to yes Alice will whisper instead of using short answers when you are sleeping. Currently only available with Amazon TTS -whisperWhenSleeping: no - -# Either 'pocketsphinx', 'deepspeech' or 'google' -asr: pocketsphinx - -# Either 'pico', 'snips', 'mycroft', 'amazon' or 'google' -tts: pico - -ttsType: male -ttsVoice: en-US -ttsLanguage: en-US - -# Amazon Polly -# https://docs.aws.amazon.com/en_us/general/latest/gr/rande.html -awsRegion: eu-central-1 -awsAccessKey: -awsSecretKey: - -# Github - Github limits the api calls to 60 per hour unless you create a token (free) for your account -# Github is used to keep your skills up to date and install new ones as well as updating Project Alice -# This is not mendatory but strongly recommanded https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line -githubUsername: -githubToken: - -# !WARNING! You know what you are doing by changing the following to anything else than "master"! -# This allows to init ProjectAlice on any branches, even unstable ones -# Available: master / alpha / beta / rc -aliceUpdateChannel: master -skillsUpdateChannel: master - -# Google -# If you are using Google as ASR and/or TTS you need to create an account on their console and activate the API -# for speech recognition and/or text to speech. Once activated, choose to create a service account and paste the -# content of the file here -googleServiceFile: {} - -... diff --git a/ProjectAlice.yaml b/ProjectAlice.yaml index aefdc835a..1c1f58ebd 100644 --- a/ProjectAlice.yaml +++ b/ProjectAlice.yaml @@ -2,7 +2,7 @@ ################################################ # # # Project Alice quick install file # -# # +# For advanced users only # # Edit the content of this file to your needs # # and place it in /boot/ProjectAlice.yaml # # after flashing your sd card with our # @@ -19,6 +19,18 @@ version: 1.16 # How to prevent frequent errors: # Always add a space after the ":" (e.g. deviceName: default instead of deviceName:default) +# If you place this file into /boot after a first initialization it won't overwrite your settings unless you set this to yes +forceRewrite: no + +# By setting the next parameter to yes, ProjectAlice will also install all the required dependencies +doGroundInstall: yes + +# After initialization is done, keep a copy of this yaml file in /boot. Be aware this can be a security risk, as /boot is accessible by anyone mounting your SD card! +keepYAMLBackup: no + +# If you are installing on Raspbian Buster, set the following to yes +installOnBuster: yes + # Base configs # Set the admin pin code. This code will allow you to access the interface. Only numbers, 4 digits adminPinCode: 1234 @@ -29,6 +41,18 @@ wifiNetworkName: wifiWPAPass: wifiCountryCode: +# The name of the device to set up +# Caution: The main device should be named default! This will be changed later. +deviceName: default +soundPlaybackAndRecordEnabled: yes + +# Connection +mqttHost: localhost +mqttPort: 1883 +mqttUser: +mqttPassword: +mqttTLSFile: + # hardware - Turn only one to yes! audioHardware: usbMic: no @@ -43,6 +67,10 @@ audioHardware: matrixVoice: no ps3eye: no +# Capture +micSampleRate: 16000 +micChannels: 1 + # System # Whether to install Hermes Led Control or not. HLC is the best way to manage your device leds if you have any useHLC: yes @@ -50,6 +78,14 @@ useHLC: yes stayCompletlyOffline: no keepASROffline: yes keepTTSOffline: yes +skillAutoUpdate: yes +webInterfaceActive: yes + +# enabling dev mode unlocks features on the console as well as unpublished skill loading +devMode: no + +# You should leave this by default, but who knows +newDeviceBroadcastPort: 12354 # Project Alice # 'en', 'fr' or 'de'. For more, we seek helpers ;-) @@ -58,11 +94,26 @@ activeLanguage: en # The language country code activeCountryCode: US -baseCurrency: USD +baseCurrency: CHF # Either 'metric', 'kelvin' or 'imperial' baseUnits: metric +# Telemetry data, such as temperature, pressure, humidity and others depending on your sensors can be kept in your internal database for forecast or AI use +enableDataStoring: yes + +# Set to max entries to keep, 0 to disable pruning +autoPruneStoredData: 1000 + +# If an intent returns less confidence score than this it will be considered as not understood +probabilityThreshold: 0.5 + +# If set to yes Alice will only answer with shorter answers, when available +shortReplies: no + +# If set to yes Alice will whisper instead of using short answers when you are sleeping. Currently only available with Amazon TTS +whisperWhenSleeping: no + # Either 'pocketsphinx', 'deepspeech' or 'google' asr: pocketsphinx @@ -73,13 +124,25 @@ ttsType: male ttsVoice: en-US ttsLanguage: en-US -# Amazon Polly - Only if you want to use amazon TTS +# Amazon Polly # https://docs.aws.amazon.com/en_us/general/latest/gr/rande.html awsRegion: eu-central-1 awsAccessKey: awsSecretKey: -# Google - Only if you want to use google wavenet and/or ASR +# Github - Github limits the api calls to 60 per hour unless you create a token (free) for your account +# Github is used to keep your skills up to date and install new ones as well as updating Project Alice +# This is not mendatory but strongly recommanded https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line +githubUsername: +githubToken: + +# !WARNING! You know what you are doing by changing the following to anything else than "master"! +# This allows to init ProjectAlice on any branches, even unstable ones +# Available: master / alpha / beta / rc +aliceUpdateChannel: master +skillsUpdateChannel: master + +# Google # If you are using Google as ASR and/or TTS you need to create an account on their console and activate the API # for speech recognition and/or text to speech. Once activated, choose to create a service account and paste the # content of the file here From f77ac9a805dc2d09288fb882e7401a323a0d735c Mon Sep 17 00:00:00 2001 From: Psycho Date: Sat, 21 Mar 2020 14:44:52 +0100 Subject: [PATCH 139/139] Fixing pincode wrong type --- core/Initializer.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/core/Initializer.py b/core/Initializer.py index 67489fd2e..3b2d5b981 100644 --- a/core/Initializer.py +++ b/core/Initializer.py @@ -37,7 +37,7 @@ def __getitem__(self, item): try: return super().__getitem__(item) or '' except: - print(f'[Initializer] Missing key "{item}" in provided yaml file. Are you using a deprecated yaml file version?') + print(f'[Initializer] Missing key "{item}" in provided yaml file.') return '' @@ -122,12 +122,14 @@ def initProjectAlice(self) -> bool: if not connected: self.fatal('Your device needs internet access to continue') + updateChannel = initConfs['aliceUpdateChannel'] if 'aliceUpdateChannel' in initConfs else 'master' + updateSource = self.getUpdateSource(updateChannel) # Update our system and sources subprocess.run(['sudo', 'apt-get', 'update']) subprocess.run(['sudo', 'apt-get', 'dist-upgrade', '-y']) subprocess.run(['git', 'clean', '-df']) subprocess.run(['git', 'stash']) - subprocess.run(['git', 'checkout', 'master']) + subprocess.run(['git', 'checkout', updateSource]) subprocess.run(['git', 'pull']) subprocess.run(['git', 'stash', 'clear']) @@ -209,7 +211,7 @@ def initProjectAlice(self) -> bool: except: self.logFatal('Pin code must be 4 digits') - confs['adminPinCode'] = pinCode + confs['adminPinCode'] = int(pinCode) confs['stayCompletlyOffline'] = bool(initConfs['stayCompletlyOffline']) if initConfs['stayCompletlyOffline']: @@ -271,7 +273,7 @@ def initProjectAlice(self) -> bool: else: confs['aliceUpdateChannel'] = aliceUpdateChannel - skillsUpdateChannel = initConfs['skillsUpdateChannel'] + skillsUpdateChannel = initConfs['skillsUpdateChannel'] if 'skillsUpdateChannel' in initConfs else 'master' if skillsUpdateChannel not in {'master', 'rc', 'beta', 'alpha'}: self.logWarning(f'{skillsUpdateChannel} is not a supported updateChannel, only master, rc, beta and alpha are supported. Reseting to master') confs['skillsUpdateChannel'] = 'master'