From c1144922c78835dcdceac45994abc8e6b2c78b06 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Mon, 24 Apr 2017 08:02:59 +0100 Subject: [PATCH 01/20] Added KNN, SGD and Time Series Split I could totally automate 90 % of the work --- persimmon/view/blocks/__init__.py | 4 +++- persimmon/view/blocks/knnblock.kv | 12 ++++++++++++ persimmon/view/blocks/knnblock.py | 16 ++++++++++++++++ persimmon/view/blocks/sgdblock.kv | 12 ++++++++++++ persimmon/view/blocks/sgdblock.py | 15 +++++++++++++++ persimmon/view/blocks/tssplitblock.kv | 12 ++++++++++++ persimmon/view/blocks/tssplitblock.py | 16 ++++++++++++++++ persimmon/view/view.kv | 27 +++++++++++++++------------ 8 files changed, 101 insertions(+), 13 deletions(-) create mode 100644 persimmon/view/blocks/knnblock.kv create mode 100644 persimmon/view/blocks/knnblock.py create mode 100644 persimmon/view/blocks/sgdblock.kv create mode 100644 persimmon/view/blocks/sgdblock.py create mode 100644 persimmon/view/blocks/tssplitblock.kv create mode 100644 persimmon/view/blocks/tssplitblock.py diff --git a/persimmon/view/blocks/__init__.py b/persimmon/view/blocks/__init__.py index 3adf1d9..62ef5ab 100644 --- a/persimmon/view/blocks/__init__.py +++ b/persimmon/view/blocks/__init__.py @@ -1,5 +1,7 @@ from .block import Block from .svmblock import SVMBlock +from .knnblock import KNNBlock +from .sgdblock import SGDBlock from .fitblock import FitBlock from .dictblock import DictBlock from .printblock import PrintBlock @@ -10,4 +12,4 @@ from .gridsearchblock import GridSearchBlock from .randomforestblock import RandomForestBlock from .crossvalidationblock import CrossValidationBlock - +from .tssplitblock import TSSplitBlock diff --git a/persimmon/view/blocks/knnblock.kv b/persimmon/view/blocks/knnblock.kv new file mode 100644 index 0000000..1b79531 --- /dev/null +++ b/persimmon/view/blocks/knnblock.kv @@ -0,0 +1,12 @@ +: + block_label: 'KNN' + block_color: root.b.CLASSIFICATOR.value + outputs: outputs + est_out: est_out + Widget: + id: outputs + OutputPin: + id: est_out + x: root.x + root.width - 10 - 5 + y: root.y + root.height / 2 + _type: root.t.CLASSIFICATOR diff --git a/persimmon/view/blocks/knnblock.py b/persimmon/view/blocks/knnblock.py new file mode 100644 index 0000000..643ae60 --- /dev/null +++ b/persimmon/view/blocks/knnblock.py @@ -0,0 +1,16 @@ +from persimmon.view.blocks import Block +from persimmon.view.util import OutputPin + +from kivy.properties import ObjectProperty +from kivy.lang import Builder + +from sklearn.neighbors import KNeighborsClassifier + + +Builder.load_file('view/blocks/knnblock.kv') + +class KNNBlock(Block): + est_out = ObjectProperty() + + def function(self): + self.est_out.val = KNeighborsClassifier() diff --git a/persimmon/view/blocks/sgdblock.kv b/persimmon/view/blocks/sgdblock.kv new file mode 100644 index 0000000..41fae89 --- /dev/null +++ b/persimmon/view/blocks/sgdblock.kv @@ -0,0 +1,12 @@ +: + block_label: 'Stochastic Gradient Descent' + block_color: root.b.CLASSIFICATOR.value + outputs: outputs + est_out: est_out + Widget: + id: outputs + OutputPin: + id: est_out + x: root.x + root.width - 10 - 5 + y: root.y + root.height / 2 + _type: root.t.CLASSIFICATOR diff --git a/persimmon/view/blocks/sgdblock.py b/persimmon/view/blocks/sgdblock.py new file mode 100644 index 0000000..0de9149 --- /dev/null +++ b/persimmon/view/blocks/sgdblock.py @@ -0,0 +1,15 @@ +from persimmon.view.blocks import Block +from persimmon.view.util import OutputPin + +from kivy.properties import ObjectProperty +from kivy.lang import Builder + +from sklearn.linear_model import SGDClassifier + +Builder.load_file('view/blocks/sgdblock.kv') + +class SGDBlock(Block): + est_out = ObjectProperty() + + def function(self): + self.est_out.val = SGDClassifier() diff --git a/persimmon/view/blocks/tssplitblock.kv b/persimmon/view/blocks/tssplitblock.kv new file mode 100644 index 0000000..ec46936 --- /dev/null +++ b/persimmon/view/blocks/tssplitblock.kv @@ -0,0 +1,12 @@ +: + out_1: out_1 + block_label: 'Time Series Split' + block_color: root.b.CROSS_VALIDATOR.value + outputs: outputs + Widget: + id: outputs + OutputPin: + id: out_1 + x: root.x + root.width - 10 - 5 + y: root.y + root.height / 2 + _type: root.t.CROSS_VALIDATOR diff --git a/persimmon/view/blocks/tssplitblock.py b/persimmon/view/blocks/tssplitblock.py new file mode 100644 index 0000000..90dfe4d --- /dev/null +++ b/persimmon/view/blocks/tssplitblock.py @@ -0,0 +1,16 @@ +from persimmon.view.util import InputPin, OutputPin +from persimmon.view.blocks import Block + +from kivy.lang import Builder +from kivy.properties import ObjectProperty + +from sklearn.model_selection import TimeSeriesSplit + + +Builder.load_file('view/blocks/tssplitblock.kv') + +class TSSplitBlock(Block): + out_1 = ObjectProperty() + + def function(self): + self.out_1.val = TimeSeriesSplit() diff --git a/persimmon/view/view.kv b/persimmon/view/view.kv index a2d7c9f..a9a3b47 100644 --- a/persimmon/view/view.kv +++ b/persimmon/view/view.kv @@ -22,18 +22,18 @@ FloatLayout: size: '100dp', '100dp' pos: 0, 0 on_release: blackboard.process() - Button: - text: 'See Relations' - size_hint: None, None - size: '100dp', '100dp' - pos: 200, 0 - on_release: blackboard.see_relations() - Button: - text: 'See IR' - size_hint: None, None - size: '100dp', '100dp' - pos: 300, 0 - on_release: blackboard.see_ir() + #Button: + #text: 'See Relations' + #size_hint: None, None + #size: '100dp', '100dp' + #pos: 200, 0 + #on_release: blackboard.see_relations() + #Button: + #text: 'See IR' + #size_hint: None, None + #size: '100dp', '100dp' + #pos: 300, 0 + #on_release: blackboard.see_ir() TabbedPanel: pos_hint: {'top': 1} size_hint_y: None @@ -67,8 +67,10 @@ FloatLayout: on_release: blackboard.blocks.add_widget(b.SVMBlock(pos=(300, 250))) Button: text: 'KNN' + on_release: blackboard.blocks.add_widget(b.KNNBlock(pos=(300, 250))) Button: text: 'SGD' + #on_release: blackboard.blocks.add_widget(b.SGDBlock(pos=(300, 250))) TabbedPanelItem: text: 'Fit & Predict' BoxLayout: @@ -101,6 +103,7 @@ FloatLayout: on_release: blackboard.blocks.add_widget(b.TenFoldBlock(pos=(300, 250))) Button: text: 'Time Series Split' + on_release: blackboard.blocks.add_widget(b.TSSplitBlock(pos=(300, 250))) TabbedPanelItem: text: 'State' BoxLayout: From e42940bfdfcc9a69a3e8ee73013313217ff1c0fb Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Thu, 27 Apr 2017 18:29:12 +0100 Subject: [PATCH 02/20] Merged changes --- docs/Makefile | 19 +++ .../libs/garden/garden.notification/LICENSE | 21 --- .../libs/garden/garden.notification/README.md | 77 ---------- .../garden/garden.notification/__init__.py | 137 ----------------- .../garden.notification/notification.kv | 71 --------- .../garden.notification/notification.py | 139 ------------------ .../garden/garden.notification/screenshot.png | Bin 27976 -> 0 bytes persimmon/view/blocks/block.kv | 10 +- persimmon/view/blocks/block.py | 22 +++ persimmon/view/view.kv | 2 +- persimmon/view/view.py | 14 +- 11 files changed, 61 insertions(+), 451 deletions(-) delete mode 100644 persimmon/libs/garden/garden.notification/LICENSE delete mode 100644 persimmon/libs/garden/garden.notification/README.md delete mode 100644 persimmon/libs/garden/garden.notification/__init__.py delete mode 100644 persimmon/libs/garden/garden.notification/notification.kv delete mode 100644 persimmon/libs/garden/garden.notification/notification.py delete mode 100644 persimmon/libs/garden/garden.notification/screenshot.png diff --git a/docs/Makefile b/docs/Makefile index 0910522..9dd82c6 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -34,6 +34,25 @@ $(PDF): $(MARKDOWN) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(M --metadata sansfont:"Helvetica Neue LT Com" \ $(METADATA) $(MARKDOWN) --include-after-body $(APPENDIX) -o $@ +hertfordshire: $(MARKDOWN) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) + pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ + --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ + --top-level-division chapter --highlight-style breezedark \ + --include-in-header question.tex \ + --metadata geometry:top=2.5cm,left=4cm,right=2.5cm,bottom=2.5cm \ + --metadata sansfont:"Helvetica Neue LT Com" \ + $(METADATA) $(MARKDOWN) -o persimmon_herts.pdf + +hertfordshire_apx: $(MARKDOWN) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) $(APPENDIX) + pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ + --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ + --top-level-division chapter --highlight-style breezedark \ + --include-in-header question.tex --include-after-body $(APPENDIX) \ + --metadata geometry:top=2.5cm,left=4cm,right=2.5cm,bottom=2.5cm \ + --metadata sansfont:"Helvetica Neue LT Com" \ + $(METADATA) $(MARKDOWN) -o persimmon_herts.pdf + + complutense: $(MARKDOWN_COMPLUTENSE) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ diff --git a/persimmon/libs/garden/garden.notification/LICENSE b/persimmon/libs/garden/garden.notification/LICENSE deleted file mode 100644 index ae712fb..0000000 --- a/persimmon/libs/garden/garden.notification/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Kivy Garden - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/persimmon/libs/garden/garden.notification/README.md b/persimmon/libs/garden/garden.notification/README.md deleted file mode 100644 index dee40fe..0000000 --- a/persimmon/libs/garden/garden.notification/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# garden.notification -:name_badge: A floating popup-like notification - - - -This widget provides a browser-like - -notification with all of the basic Kivy features available. You can use it -either in its default state, where is only basic title and message with some of -the color configuration, or you can input your own message layout in kv -language. The message string is available through ``app.message`` property. -For more such properties, read the code. - -## Features: - -- message scrolls -- available icon option -- title will be shortened if too long -- callback after the notification disappears -- stacking multiple notifs on top of each other -- markup turned on in title and message by default -- kv language input - -## TODO: - -- Ubuntu's Unity & OSX window hide implementation - (needed for hiding the window another python interpreter creates) -- grab window focus back - each notification steals focus from the main window - (linux & OSX) -- position relatively to the taskbar (or at least not on top of it) -- forbid notification to print Kivy initialisation logs to output - unless asked for it - -## Example: - -``` -from kivy.app import App -from functools import partial -from kivy.uix.button import Button -from kivy.resources import resource_find -from kivy.garden.notification import Notification - - -class Notifier(Button): - def __init__(self, **kwargs): - super(Notifier, self).__init__(**kwargs) - self.bind(on_release=self.show_notification) - - def printer(self, *args): - print(args) - - def show_notification(self, *args): - # open default notification - Notification().open( - title='Kivy Notification', - message='Hello from the other side?', - timeout=5, - icon=resource_find('data/logo/kivy-icon-128.png'), - on_stop=partial(self.printer, 'Notification closed') - ) - - # open notification with layout in kv - Notification().open( - title='Kivy Notification', - message="I'm a Button!", - kv="Button:\n text: app.message" - ) - - -class KivyNotification(App): - def build(self): - return Notifier() - - -if __name__ == '__main__': - KivyNotification().run() -``` diff --git a/persimmon/libs/garden/garden.notification/__init__.py b/persimmon/libs/garden/garden.notification/__init__.py deleted file mode 100644 index b48ff1e..0000000 --- a/persimmon/libs/garden/garden.notification/__init__.py +++ /dev/null @@ -1,137 +0,0 @@ -''' -# Copyright (c) 2013 Peter Badida (KeyWeeUsr) - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -.. |notification| replace:: notification -.. _notification: https://developer.mozilla.org/en-US/docs/Web/API/notification - -This widget provides a browser-like |notification|_ with all of the Kivy -features available. You can use it either in its default state, where is -only basic title and message with some of the color configuration, or -you can input your own message layout in kv language. The message string -is available through ``app.message`` property. - -Features: -- message scrolls -- available icon option -- title will be shortened if too long -- callback after the notification disappears -- stacking multiple notifs on top of each other -- markup turned on in title and message by default -- kv language input - -TODO: -- Ubuntu's Unity & OSX window hide implementation - (needed for hiding the window another python interpreter creates) -- grab window focus back - each notification steals focus from the main window - (linux & OSX) -- position relatively to the taskbar (or at least not on top of it) -- forbid notification to print Kivy initialisation logs to output - unless asked for it -''' - -import os -import sys -import threading -from subprocess import Popen -from os.path import dirname, abspath, join -from kivy.app import App - - -class Notification(object): - def open(self, title='Title', message='Message', icon=None, - width=300, height=100, offset_x=10, offset_y=40, - timeout=15, timeout_close=True, color=None, - line_color=None, background_color=None, parent_title=None, - stack=True, stack_offset_y=10, on_stop=None, kv=None): - - app = App.get_running_app() - - # set default colors - if not color: - color = (0, 0, 0, 1) - if not line_color: - line_color = (.2, .64, .81, .5) - if not background_color: - background_color = (.92, .92, .92, 1) - - # stacking on top of each other - if stack and not hasattr(app, '_gardennotification_count'): - app._gardennotification_count = 1 - elif stack and hasattr(app, '_gardennotification_count'): - inc = app._gardennotification_count - app._gardennotification_count += 1 - offset_y += (height + stack_offset_y) * inc - else: - app._gardennotification_count = 0 - - # Window name necessary for win32 api - if not parent_title: - parent_title = app.get_application_name() - - self.path = dirname(abspath(__file__)) - - # subprocess callback after the App dies - def popen_back(callback, on_stop, args): - # str(dict) is used for passing arguments to the child notification - # it might trigger an issue on some OS if a length of X characters - # is exceeded in the called console string, e.g. too long path - # to the interpreter executable, notification file, etc. - # https://support.microsoft.com/en-us/help/830473 - os.environ['KIVY_NO_FILELOG'] = '1' - p = Popen([ - sys.executable, - join(self.path, 'notification.py'), - args - ]) - p.wait() - callback() - if on_stop: - on_stop() - return - - # open Popen in Thread to wait for exit status - # then decrement the stacking variable - t = threading.Thread( - target=popen_back, args=( - self._decrement, - on_stop, - str({ - 'title': title, - 'message': message, - 'icon': icon, - 'kv': kv, - 'width': width, - 'height': height, - 'offset_x': offset_x, - 'offset_y': offset_y, - 'timeout': timeout, - 'timeout_close': timeout_close, - 'line_color': line_color, - 'color': color, - 'background_color': background_color, - 'parent_title': parent_title, - }))) - t.start() - - def _decrement(self): - app = App.get_running_app() - if hasattr(app, '_gardennotification_count'): - app._gardennotification_count -= 1 diff --git a/persimmon/libs/garden/garden.notification/notification.kv b/persimmon/libs/garden/garden.notification/notification.kv deleted file mode 100644 index 728f5e1..0000000 --- a/persimmon/libs/garden/garden.notification/notification.kv +++ /dev/null @@ -1,71 +0,0 @@ -#:import dp kivy.metrics.dp -#:import stopTouchApp kivy.base.stopTouchApp - -BoxLayout: - canvas: - Color: - rgba: app.background_color - Rectangle: - size: self.size - pos: self.pos - orientation: 'vertical' - - GridLayout: - cols: 2 - size_hint_y: 0.2 - canvas: - Color: - rgba: app.line_color - - Line: - points: - [self.pos[0], self.pos[1] + dp(1), - self.pos[0] + self.width, - self.pos[1] + dp(1)] - - Label: - color: app.color - text_size: - [self.width - dp(10), - self.height] - text: app.notif_title - halign: 'left' - markup: True - shorten: True - shorten_from: 'right' - - Button: - background_normal: - 'atlas://data/images/defaulttheme/bubble_btn' - color: app.color - size_hint_x: None - width: self.height - text: 'X' - on_release: stopTouchApp() - - GridLayout: - id: container - cols: 2 - size_hint_y: 0.8 - - FloatLayout: - size_hint_x: 0.3 - Image: - source: app.notif_icon - size_hint: (None, None) - width: dp(64) - height: dp(64) - pos_hint: {'center': (0.5, 0.5)} - - ScrollView: - Label: - color: app.color - text: app.message - text_size: - [self.width, - self.height] - size_hint_y: None - padding: (5, 5) - text_size: self.width, None - height: self.texture_size[1] - markup: True diff --git a/persimmon/libs/garden/garden.notification/notification.py b/persimmon/libs/garden/garden.notification/notification.py deleted file mode 100644 index e72dbff..0000000 --- a/persimmon/libs/garden/garden.notification/notification.py +++ /dev/null @@ -1,139 +0,0 @@ -import os -import sys -import traceback -from ast import literal_eval -from kivy.utils import platform -from subprocess import check_output -from os.path import dirname, abspath, join - -# waiting for https://github.com/kivy/plyer/pull/201 -if platform == 'win': - import ctypes - import win32gui - from win32con import ( - SW_HIDE, SW_SHOW, - GWL_EXSTYLE, WS_EX_TOOLWINDOW - ) - u32 = ctypes.windll.user32 - RESOLUTION = (u32.GetSystemMetrics(0), u32.GetSystemMetrics(1)) -elif platform == 'linux': - o = check_output('xrandr').decode('utf-8') - start = o.find('current') + 7 - end = o.find(', maximum') - RESOLUTION = [int(n) for n in o[start:end].split('x')] -elif platform == 'osx': - o = check_output(['system_profiler', 'SPDisplaysDataType']) - start = o.find('Resolution: ') - end = o.find('\n', start=start) - o = o[start:end].strip().split(' ') - RESOLUTION = (int(o[1]), int(o[3])) -else: - raise NotImplementedError("Not a desktop platform!") - - -KWARGS = literal_eval(sys.argv[1]) -WIDTH = KWARGS['width'] -HEIGHT = KWARGS['height'] -OFFSET = ( - KWARGS['offset_x'], - KWARGS['offset_y'] -) - -# set window from Notification.open arguments -from kivy.config import Config -Config.set('graphics', 'resizable', 0) -Config.set('graphics', 'borderless', 1) -Config.set('graphics', 'position', 'custom') -Config.set('graphics', 'width', WIDTH) -Config.set('graphics', 'height', HEIGHT) -Config.set( - 'graphics', 'left', - RESOLUTION[0] - WIDTH - OFFSET[0] -) -Config.set( - 'graphics', 'top', - RESOLUTION[1] - HEIGHT - OFFSET[1] -) - -from kivy.app import App -from kivy.clock import Clock -from kivy.lang import Builder -from kivy.logger import Logger -from kivy.properties import StringProperty, ListProperty - - -class Notification(App): - title = StringProperty(KWARGS['title'].replace(' ', '') + str(os.getpid())) - notif_title = StringProperty(KWARGS['title']) - message = StringProperty(KWARGS['message']) - notif_icon = StringProperty(KWARGS['icon']) - background_color = ListProperty(KWARGS['background_color']) - line_color = ListProperty(KWARGS['line_color']) - color = ListProperty(KWARGS['color']) - - def build(self): - if not self.notif_icon: - self.notif_icon = self.get_application_icon() - Clock.schedule_once(self._hide_window, 0) - if KWARGS['timeout_close']: - Clock.schedule_once(self.stop, KWARGS['timeout']) - if KWARGS['kv']: - path = dirname(abspath(__file__)) - kv = Builder.load_file(join(path, 'notification.kv')) - kv.ids.container.clear_widgets() - kv.ids.container.add_widget( - Builder.load_string(KWARGS['kv']) - ) - return kv - - def _hide_window(self, *args): - if platform == 'win': - self._hide_w32_window() - elif platform in ('linux', 'osx'): - self._hide_x11_window() - - def _hide_w32_window(self): - try: - w32win = win32gui.FindWindow(None, self.title) - win32gui.ShowWindow(w32win, SW_HIDE) - win32gui.SetWindowLong( - w32win, - GWL_EXSTYLE, - win32gui.GetWindowLong( - w32win, GWL_EXSTYLE) | WS_EX_TOOLWINDOW - ) - win32gui.ShowWindow(w32win, SW_SHOW) - self._return_focus_w32() - except Exception: - tb = traceback.format_exc() - Logger.error( - 'Notification: An error occured in {}\n' - '{}'.format(self.title, tb) - ) - - def _hide_x11_window(self): - try: - # Ubuntu's Unity for some reason ignores this if there are - # multiple windows stacked to a single icon on taskbar. - # Unity probably calls the same thing to stack the running - # programs to a single icon, which makes this command worthless. - x11_command = [ - 'xprop', '-name', '{}'.format(self.title), '-f', - '_NET_WM_STATE', '32a', '-set', '_NET_WM_STATE', - '_NET_WM_STATE_SKIP_TASKBAR' - ] - check_output(x11_command) - except Exception as e: - tb = traceback.format_exc() - Logger.error( - 'Notification: An error occured in {}\n' - '{}'.format(self.title, tb) - ) - - def _return_focus_w32(self): - w32win = win32gui.FindWindow(None, KWARGS['parent_title']) - win32gui.SetForegroundWindow(w32win) - - -if __name__ == '__main__': - Notification().run() diff --git a/persimmon/libs/garden/garden.notification/screenshot.png b/persimmon/libs/garden/garden.notification/screenshot.png deleted file mode 100644 index 787921d538879160584b6d7714bfe78c35cba4c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27976 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 KMV0xrxc>n`?}PXN diff --git a/persimmon/view/blocks/block.kv b/persimmon/view/blocks/block.kv index ad1de2e..9390d12 100644 --- a/persimmon/view/blocks/block.kv +++ b/persimmon/view/blocks/block.kv @@ -5,13 +5,19 @@ drag_rectangle: self.x, self.y, self.width, self.height drag_timeout: 10000000 drag_distance: 0 - canvas.before: + canvas: Color: rgb: .2, .2, .2 Rectangle: pos: self.pos size: self.size - + #canvas.before: + #Color: + #rgb: 1, 1, 1 + #BorderImage: + #pos: self.x - 5, self.y - 5 + #size: self.width + 10, self.height + 10 + #source: 'tex2.png' # Children Label: pos: root.x, root.y + root.height - 20 diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index e602289..d1e954b 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -2,6 +2,8 @@ from kivy.uix.behaviors import DragBehavior from kivy.properties import ListProperty, StringProperty, ObjectProperty from kivy.lang import Builder +from kivy.graphics import BorderImage, Color +from kivy.uix.image import Image from persimmon.view.util import Type, BlockType @@ -30,6 +32,8 @@ def __init__(self, **kwargs): pin.block = self self.tainted_msg = '' self._tainted = False + self.kindled = None + self.border_texture = Image(source='tex4.png').texture @property def tainted(self): @@ -66,3 +70,21 @@ def on_touch_up(self, touch): result = super().on_touch_up(touch) return result + def kindle(self): + """ Praise the sun \[T]/ """ + with self.canvas.before: + Color(1, 1, 1) + self.kindled = BorderImage(pos=(self.x - 5, self.y - 5), + size=(self.width + 10, + self.height + 10), + texture=self.border_texture) + self.fbind('pos', self.bind_border) + + def unkindle(self): + if self.kindled: + self.canvas.before.remove(self.kindled) + self.funbind('pos', self.bind_border) + self.kindled = None + + def bind_border(self, block, new_pos): + self.kindled.pos = new_pos[0] - 5, new_pos[1] - 5 diff --git a/persimmon/view/view.kv b/persimmon/view/view.kv index a9a3b47..915c9a8 100644 --- a/persimmon/view/view.kv +++ b/persimmon/view/view.kv @@ -113,8 +113,8 @@ FloatLayout: text: 'Dictionary' on_release: blackboard.blocks.add_widget(b.DictBlock(pos=(300, 250))) - : blocks: blocks Widget: id: blocks + diff --git a/persimmon/view/view.py b/persimmon/view/view.py index 10a5afe..0e79417 100644 --- a/persimmon/view/view.py +++ b/persimmon/view/view.py @@ -13,7 +13,7 @@ ListProperty) # Miscelaneous from kivy.config import Config -from kivy.graphics import Color, Ellipse, Line, Rectangle, Bezier +from kivy.graphics import BorderImage, Color from kivy.core.window import Window from functools import partial @@ -34,7 +34,7 @@ class ViewApp(App): background = ObjectProperty() def build(self): - self.background = Image(source='connections.png').texture + self.background = Image(source='connections2.png').texture self.background.wrap = 'repeat' self.background.uvsize = 30, 30 #self.background.uvsize = (Window.width / self.background.width, @@ -149,6 +149,7 @@ def to_ir(self): function=block.function, outputs=block_outputs) self.block_hashes = ir_blocks + print('Blocks ', ir_blocks) return backend.IR(blocks=ir_blocks, inputs=ir_inputs, outputs=ir_outputs) def process(self): @@ -158,6 +159,8 @@ def process(self): self.popup.message = tainted_msg self.popup.open() else: + for block in self.blocks.children: + block.unkindle() threading.Thread(target=backend.execute_graph, args=(self.to_ir(), self)).start() @@ -176,11 +179,16 @@ def check_taint(self): def on_block_executed(self, block_hash): block_idx = list(map(id, self.blocks.children)).index(block_hash) block = self.blocks.children[block_idx] + block.kindle() if block.outputs: for out_pin in block.outputs.children: for connection in out_pin.destinations: connection.pulse() - Clock.schedule_once(lambda _: connection.stop_pulse(), 2) + #Clock.schedule_once(lambda _: connection.stop_pulse(), 2) + if block.inputs: + for in_pin in block.inputs.children: + for connection in in_pin.origin: + connection.stop_pulse() def spawnprint(self): if not any(map(lambda b: b.__class__ == blocks.PrintBlock, From c6a38f35b80888fe5803640e2e916313dc6d1ad5 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Thu, 27 Apr 2017 21:47:57 +0100 Subject: [PATCH 03/20] Pulse now lasts while block is executing --- persimmon/backend/backend.py | 1 + persimmon/view/blocks/block.py | 9 +++++++++ persimmon/view/util/connection.py | 7 +++++-- persimmon/view/view.py | 12 ++++++------ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/persimmon/backend/backend.py b/persimmon/backend/backend.py index a9f3ac8..2a36192 100644 --- a/persimmon/backend/backend.py +++ b/persimmon/backend/backend.py @@ -15,6 +15,7 @@ def execute_graph(ir: IR, blackboard): print('Done executing') def execute_block(current: int, ir: IR, blackboard, unexplored: set, seen: {}) -> (set, {}): + print('Executing {}'.format(current)) current_block = ir.blocks[current] for in_pin in map(lambda x: ir.inputs[x], current_block.inputs): origin = in_pin.origin diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index d1e954b..2800eef 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -88,3 +88,12 @@ def unkindle(self): def bind_border(self, block, new_pos): self.kindled.pos = new_pos[0] - 5, new_pos[1] - 5 + + def is_orphan(self): + for in_pin in self.input_pins: + if in_pin.origin: + return False + for out_pin in self.output_pins: + if out_pin.destinations: + return False + return True diff --git a/persimmon/view/util/connection.py b/persimmon/view/util/connection.py index 75b4d7c..e748796 100644 --- a/persimmon/view/util/connection.py +++ b/persimmon/view/util/connection.py @@ -163,7 +163,7 @@ def warn(self): self.canvas.before.remove(self.lin) with self.canvas.before: Color(1, 0, 0) - self.lin = Line(points=self.lin.points, width=2) + self.lin = Line(points=self.lin.points, width=3) def unwarn(self): self.warned = False @@ -174,9 +174,12 @@ def unwarn(self): def pulse(self): self.it = self._change_width() - Clock.schedule_interval(lambda _: next(self.it), 0.05) # 20 FPS + next(self.it) + self.ev = Clock.schedule_interval(lambda _: next(self.it), 0.05) # 20 FPS def stop_pulse(self): + #self.ev.cancel() + #self.lin.width = 2 self.it.throw(StopIteration) def _change_width(self): diff --git a/persimmon/view/view.py b/persimmon/view/view.py index 0e79417..f14bdd4 100644 --- a/persimmon/view/view.py +++ b/persimmon/view/view.py @@ -24,7 +24,7 @@ from collections import deque import persimmon.backend as backend from kivy.lang import Builder -from kivy.clock import Clock +from kivy.clock import Clock, mainthread import threading @@ -118,6 +118,8 @@ def to_ir(self): ir_inputs = {} ir_outputs = {} for block in self.blocks.children: + if block.is_orphan(): + continue block_hash = id(block) block_inputs, block_outputs = [], [] avoid = False @@ -149,7 +151,6 @@ def to_ir(self): function=block.function, outputs=block_outputs) self.block_hashes = ir_blocks - print('Blocks ', ir_blocks) return backend.IR(blocks=ir_blocks, inputs=ir_inputs, outputs=ir_outputs) def process(self): @@ -176,6 +177,7 @@ def check_taint(self): return True, block.tainted_msg return False, '' + @mainthread def on_block_executed(self, block_hash): block_idx = list(map(id, self.blocks.children)).index(block_hash) block = self.blocks.children[block_idx] @@ -184,11 +186,9 @@ def on_block_executed(self, block_hash): for out_pin in block.outputs.children: for connection in out_pin.destinations: connection.pulse() - #Clock.schedule_once(lambda _: connection.stop_pulse(), 2) if block.inputs: - for in_pin in block.inputs.children: - for connection in in_pin.origin: - connection.stop_pulse() + for connection in map(lambda x: x.origin, block.inputs.children): + connection.stop_pulse() def spawnprint(self): if not any(map(lambda b: b.__class__ == blocks.PrintBlock, From c51d00c20def868ffd924039d8572d109e39b967 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Fri, 28 Apr 2017 00:04:57 +0100 Subject: [PATCH 04/20] Changed tainted to a property --- persimmon/backend/backend.py | 6 ++++-- persimmon/view/blocks/block.py | 4 ++-- persimmon/view/blocks/csvinblock.py | 11 +++++------ persimmon/view/util/connection.py | 4 +--- persimmon/view/view.py | 5 ----- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/persimmon/backend/backend.py b/persimmon/backend/backend.py index 2a36192..66b3202 100644 --- a/persimmon/backend/backend.py +++ b/persimmon/backend/backend.py @@ -1,6 +1,9 @@ from collections import deque, namedtuple +import logging +logger = logging.getLogger(__name__) + # backend types InputEntry = namedtuple('InputEntry', ['origin', 'pin', 'block']) BlockEntry = namedtuple('BlockEntry', ['inputs', 'function', 'outputs']) @@ -12,10 +15,9 @@ def execute_graph(ir: IR, blackboard): seen = {} # All output pins along their respectives values while unexplored: unexplored, seen = execute_block(unexplored.pop(), ir, blackboard, unexplored, seen) - print('Done executing') + logger.info('Done executing') def execute_block(current: int, ir: IR, blackboard, unexplored: set, seen: {}) -> (set, {}): - print('Executing {}'.format(current)) current_block = ir.blocks[current] for in_pin in map(lambda x: ir.inputs[x], current_block.inputs): origin = in_pin.origin diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index 2800eef..a59856b 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -30,14 +30,14 @@ def __init__(self, **kwargs): for pin in self.outputs.children: self.output_pins.append(pin) pin.block = self - self.tainted_msg = '' + self.tainted_msg = 'Block {} has unconnected inputs'.format(self.block_label) self._tainted = False self.kindled = None self.border_texture = Image(source='tex4.png').texture @property def tainted(self): - return self._tainted + return any(in_pin.origin == None for in_pin in self.input_pins) and not self.is_orphan()# and self._tainted @tainted.setter def tainted(self, value): diff --git a/persimmon/view/blocks/csvinblock.py b/persimmon/view/blocks/csvinblock.py index f479c60..9ed2958 100644 --- a/persimmon/view/blocks/csvinblock.py +++ b/persimmon/view/blocks/csvinblock.py @@ -20,14 +20,13 @@ def __init__(self, **kwargs): size_hint=(0.8, 0.8)) # This binds two properties together self.file_dialog.bind(file_chosen=self.setter('file_chosen')) - self.tainted = True + self._tainted = True self.tainted_msg = 'File not chosen in block {}!'.format(self.block_label) def function(self): self.out_1.val = pd.read_csv(self.file_chosen, header=0) - def on_file_chosen(self, instance, value): - if value.endswith('.csv'): - self.tainted = False - else: - self.tainted = True + @Block.tainted.getter + def tainted(self): + return super().tainted or not self.file_chosen.endswith('.csv') + diff --git a/persimmon/view/util/connection.py b/persimmon/view/util/connection.py index e748796..ecabdde 100644 --- a/persimmon/view/util/connection.py +++ b/persimmon/view/util/connection.py @@ -175,11 +175,9 @@ def unwarn(self): def pulse(self): self.it = self._change_width() next(self.it) - self.ev = Clock.schedule_interval(lambda _: next(self.it), 0.05) # 20 FPS + Clock.schedule_interval(lambda _: next(self.it), 0.05) # 20 FPS def stop_pulse(self): - #self.ev.cancel() - #self.lin.width = 2 self.it.throw(StopIteration) def _change_width(self): diff --git a/persimmon/view/view.py b/persimmon/view/view.py index f14bdd4..f589b88 100644 --- a/persimmon/view/view.py +++ b/persimmon/view/view.py @@ -168,11 +168,6 @@ def process(self): # TODO: Merge this check with block tainted property def check_taint(self): for block in self.blocks.children: - if block.inputs: - orphaned = [x.origin == None for x in block.inputs.children] - if not all(orphaned) and any(orphaned): - return True, 'Block "{}" has unconnected inputs!'.format( - block.block_label) if block.tainted: return True, block.tainted_msg return False, '' From 512e58f000885d266e77ecf1926720d6487a7c18 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Sun, 30 Apr 2017 16:22:53 +0100 Subject: [PATCH 05/20] Added intra-document references --- docs/src/risk.md | 2 +- docs/src/types.md | 2 +- docs/src/workflow.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/src/risk.md b/docs/src/risk.md index 426330a..6193982 100644 --- a/docs/src/risk.md +++ b/docs/src/risk.md @@ -49,7 +49,7 @@ refocus on ever-changing requirements. In the case of an unreachable goal partial objectives could established that would be easier to archive, splitting the main goal into several smaller goals, making it easier to at least accomplish some, if not all. -This is explored on the milestones chapter. +This is explored on the [milestones chapter](#tree). Performance issues can be countered reducing the data used for processing, making it more of a proof of concept while retaining the validity of the diff --git a/docs/src/types.md b/docs/src/types.md index faefe1f..f5b6fb2 100644 --- a/docs/src/types.md +++ b/docs/src/types.md @@ -33,7 +33,7 @@ compile time (on the literature referred as write time). The two languages ----------------- -As seen on the previous sections and the implementation chapter Python and +As seen on the previous sections and the [implementation chapter](#implementation) Python and Persimmon are essentially two different languages, but just how different are they? diff --git a/docs/src/workflow.md b/docs/src/workflow.md index 3bcb13d..d27b125 100644 --- a/docs/src/workflow.md +++ b/docs/src/workflow.md @@ -61,7 +61,7 @@ interface being limited on the number of blocks, as not to allow the graphs to become inscrutable, and as mentioned on the introduction this also allows making assumptions about the interface which reduce the complexity such as not needing an explicit flow line, more on the explicit flow line can be read -in the implementation chapter. +in the [implementation chapter](#implementation). [^plc]: Programable Logic Controllers are industrial digital computers used for From a4fed476f3cd89ad077a52cbf3c69d6c0525437f Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Tue, 2 May 2017 20:16:03 +0100 Subject: [PATCH 06/20] Small refactoring, moving threading to backend --- persimmon/__main__.py | 7 +- persimmon/backend/backend.py | 16 ++- persimmon/view/blocks/tenfoldblock.kv | 2 +- persimmon/view/blocks/tenfoldblock.py | 2 +- persimmon/view/util/connection.py | 5 +- persimmon/view/view.kv | 2 +- persimmon/view/view.py | 186 +++++++++++++------------- 7 files changed, 120 insertions(+), 100 deletions(-) diff --git a/persimmon/__main__.py b/persimmon/__main__.py index 170483a..540018b 100644 --- a/persimmon/__main__.py +++ b/persimmon/__main__.py @@ -1,8 +1,9 @@ -import os import sys -if hasattr(sys, '_MEIPASS') or getattr(sys, 'frozen', False): +if hasattr(sys, '_MEIPASS'): + import os os.chdir(sys._MEIPASS) +import logging +logging.basicConfig(level=logging.INFO) from persimmon.view import ViewApp - ViewApp().run() diff --git a/persimmon/backend/backend.py b/persimmon/backend/backend.py index 66b3202..7593f52 100644 --- a/persimmon/backend/backend.py +++ b/persimmon/backend/backend.py @@ -1,4 +1,5 @@ from collections import deque, namedtuple +import threading import logging @@ -11,13 +12,23 @@ IR = namedtuple('IR', ['blocks', 'inputs', 'outputs']) def execute_graph(ir: IR, blackboard): + threading.Thread(target=execute_graph_parallel, + args=(ir, blackboard)).start() + +def execute_graph_parallel(ir: IR, blackboard): + """ Execution algorithm, introduces all blocks on a set, when a block is + executed it is taken out of the set until the set is empty. """ unexplored = set(ir.blocks.keys()) # All blocks are unexplored at start seen = {} # All output pins along their respectives values while unexplored: - unexplored, seen = execute_block(unexplored.pop(), ir, blackboard, unexplored, seen) - logger.info('Done executing') + unexplored, seen = execute_block(unexplored.pop(), ir, blackboard, + unexplored, seen) + logger.info('Execution done') def execute_block(current: int, ir: IR, blackboard, unexplored: set, seen: {}) -> (set, {}): + """ Execute a block, if any dependency is not yet executed we + recurse into it first. """ + logger.info('executing block {}'.format(current)) current_block = ir.blocks[current] for in_pin in map(lambda x: ir.inputs[x], current_block.inputs): origin = in_pin.origin @@ -29,6 +40,7 @@ def execute_block(current: int, ir: IR, blackboard, unexplored: set, seen: {}) - current_block.function() blackboard.on_block_executed(current) + logger.info('block {} executed'.format(current)) for out_id in current_block.outputs: seen[out_id] = ir.outputs[out_id].pin.val diff --git a/persimmon/view/blocks/tenfoldblock.kv b/persimmon/view/blocks/tenfoldblock.kv index 46f9c70..98f7ff4 100644 --- a/persimmon/view/blocks/tenfoldblock.kv +++ b/persimmon/view/blocks/tenfoldblock.kv @@ -1,6 +1,6 @@ : out_1: out_1 - block_label: '10-fold' + block_label: 'K-fold' block_color: root.b.CROSS_VALIDATOR.value outputs: outputs Widget: diff --git a/persimmon/view/blocks/tenfoldblock.py b/persimmon/view/blocks/tenfoldblock.py index 33bc7b0..2034367 100644 --- a/persimmon/view/blocks/tenfoldblock.py +++ b/persimmon/view/blocks/tenfoldblock.py @@ -13,4 +13,4 @@ class TenFoldBlock(Block): out_1 = ObjectProperty() def function(self): - self.out_1.val = KFold(n_splits=10) + self.out_1.val = KFold() diff --git a/persimmon/view/util/connection.py b/persimmon/view/util/connection.py index ecabdde..5473a0c 100644 --- a/persimmon/view/util/connection.py +++ b/persimmon/view/util/connection.py @@ -178,7 +178,10 @@ def pulse(self): Clock.schedule_interval(lambda _: next(self.it), 0.05) # 20 FPS def stop_pulse(self): - self.it.throw(StopIteration) + if not self.it: + print('Connection {} -> {} failed'.format(id(self.start.block), id(self.end.block))) + else: + self.it.throw(StopIteration) def _change_width(self): """ Ok, so let me explain what is going on, this generator/coroutine diff --git a/persimmon/view/view.kv b/persimmon/view/view.kv index 915c9a8..d8a50de 100644 --- a/persimmon/view/view.kv +++ b/persimmon/view/view.kv @@ -21,7 +21,7 @@ FloatLayout: size_hint: None, None size: '100dp', '100dp' pos: 0, 0 - on_release: blackboard.process() + on_release: blackboard.execute_graph() #Button: #text: 'See Relations' #size_hint: None, None diff --git a/persimmon/view/view.py b/persimmon/view/view.py index f589b88..82fdb13 100644 --- a/persimmon/view/view.py +++ b/persimmon/view/view.py @@ -1,33 +1,30 @@ +# Persimmon imports +from persimmon.view import blocks +from persimmon.view.util import Notification +import persimmon.backend as backend +# Kivy imports from kivy.app import App -# Widgets +from kivy.lang import Builder +from kivy.clock import Clock, mainthread +from kivy.config import Config +from kivy.properties import ObjectProperty +from kivy.core.window import Window +# Kivy Widgets +from kivy.uix.popup import Popup +from kivy.uix.label import Label from kivy.uix.image import Image from kivy.uix.widget import Widget from kivy.uix.button import Button -from kivy.uix.popup import Popup -from kivy.uix.label import Label from kivy.uix.tabbedpanel import TabbedPanel from kivy.uix.floatlayout import FloatLayout from kivy.uix.scatterlayout import ScatterLayout -# Properties -from kivy.properties import (ObjectProperty, NumericProperty, StringProperty, - ListProperty) -# Miscelaneous -from kivy.config import Config -from kivy.graphics import BorderImage, Color -from kivy.core.window import Window +# Others from functools import partial - -from persimmon.view import blocks -from persimmon.view.util import (CircularButton, InputPin, OutputPin, - Notification) - from collections import deque -import persimmon.backend as backend -from kivy.lang import Builder -from kivy.clock import Clock, mainthread -import threading +import logging +logger = logging.getLogger(__name__) Config.read('config.ini') class ViewApp(App): @@ -45,53 +42,18 @@ class BlackBoard(ScatterLayout): blocks = ObjectProperty() popup = ObjectProperty(Notification(title='')) - def __init__(self, **kwargs): - super().__init__(**kwargs) - - def on_touch_move(self, touch): - if touch.button == 'left' and 'cur_line' in touch.ud.keys(): - #print(self.get_root_window().mouse_pos) - touch.ud['cur_line'].follow_cursor(touch.pos, self) - return True + def execute_graph(self): + """ Tries to execute the graph, if some block is tainted it prevents + the execution, if not it starts running the backend. """ + tainted, tainted_msg = self.check_taint() + if tainted: + self.popup.title = 'Warning' + self.popup.message = tainted_msg + self.popup.open() else: - return super().on_touch_move(touch) - - # TODO: Move dragging info into blackboard class instead of touch global - def on_touch_up(self, touch): - if self.disabled: - return - - x, y = touch.x, touch.y - # if the touch isnt on the widget we do nothing, just try children - if not touch.grab_current == self: - touch.push() - touch.apply_transform_2d(self.to_local) - for child in self.children: - if child.dispatch('on_touch_up', touch): - touch.pop() - return True - touch.pop() - - # remove it from our saved touches - if touch in self._touches and touch.grab_state: - touch.ungrab(self) - del self._last_touch_pos[touch] - self._touches.remove(touch) - - if ('cur_line' in touch.ud.keys() and touch.button == 'left'): - print('Delete connection') - touch.ud['cur_line'].delete_connection(self) - return True - - # stop propagating if its within our bounds - if self.collide_point(x, y): - return True - - def in_block(self, x, y): - for block in self.blocks.children: - if block.collide_point(x, y): - return block - return None + for block in self.blocks.children: + block.unkindle() + backend.execute_graph(self.to_ir(), self) def see_relations(self): string = '' @@ -153,46 +115,88 @@ def to_ir(self): self.block_hashes = ir_blocks return backend.IR(blocks=ir_blocks, inputs=ir_inputs, outputs=ir_outputs) - def process(self): - tainted, tainted_msg = self.check_taint() - if tainted: - self.popup.title = 'Warning' - self.popup.message = tainted_msg - self.popup.open() - else: - for block in self.blocks.children: - block.unkindle() - threading.Thread(target=backend.execute_graph, - args=(self.to_ir(), self)).start() - - # TODO: Merge this check with block tainted property - def check_taint(self): + def check_taint(self) -> (bool, str): + """ Checks the tainted property on all blocks, returning True and + the message if some is tainted. """ for block in self.blocks.children: if block.tainted: return True, block.tainted_msg return False, '' - @mainthread - def on_block_executed(self, block_hash): + #@mainthread Concurrency bug? + def on_block_executed(self, block_hash: int): + """ Callback that kindles a block, pulses future connections and + stops the pulse of past connections. """ block_idx = list(map(id, self.blocks.children)).index(block_hash) block = self.blocks.children[block_idx] block.kindle() - if block.outputs: - for out_pin in block.outputs.children: - for connection in out_pin.destinations: - connection.pulse() - if block.inputs: - for connection in map(lambda x: x.origin, block.inputs.children): - connection.stop_pulse() + logger.info('Kindling block {}'.format(block.__class__.__name__)) + + # Python list comprehensions can be nested forwards, but also backwards + # http://rhodesmill.org/brandon/2009/nested-comprehensions/ + [connection.pulse() for out_pin in block.output_pins + for connection in out_pin.destinations] + [in_pin.origin.stop_pulse() for in_pin in block.input_pins] + + # Touch events override + def on_touch_move(self, touch): + if touch.button == 'left' and 'cur_line' in touch.ud.keys(): + #print(self.get_root_window().mouse_pos) + touch.ud['cur_line'].follow_cursor(touch.pos, self) + return True + else: + return super().on_touch_move(touch) + + def on_touch_up(self, touch): + """ Inherited from + https://github.com/kivy/kivy/blob/master/kivy/uix/scatter.py#L590. """ + if self.disabled: + return + + x, y = touch.x, touch.y + # if the touch isnt on the widget we do nothing, just try children + if not touch.grab_current == self: + touch.push() + touch.apply_transform_2d(self.to_local) + for child in self.children: + if child.dispatch('on_touch_up', touch): + touch.pop() + return True + touch.pop() + + # remove it from our saved touches + if touch in self._touches and touch.grab_state: + touch.ungrab(self) + del self._last_touch_pos[touch] + self._touches.remove(touch) + + # if no connection was made + if 'cur_line' in touch.ud.keys() and touch.button == 'left': + logging.info('Connection was not finished') + touch.ud['cur_line'].delete_connection(self) + return True + + # stop propagating if its within our bounds + if self.collide_point(x, y): + return True + + def in_block(self, x, y): + """ Check if a position hits a block. """ + for block in self.blocks.children: + if block.collide_point(x, y): + return block + return None def spawnprint(self): - if not any(map(lambda b: b.__class__ == blocks.PrintBlock, + """ Spawns a print block only if no print block is currently present. + """ + if any(map(lambda b: b.__class__ == blocks.PrintBlock, self.blocks.children)): - self.blocks.add_widget(blocks.PrintBlock(pos=(300, 250))) - else: self.popup.title = 'Warning' self.popup.message = 'Only one print block allowed!' self.popup.open() + else: + self.blocks.add_widget(blocks.PrintBlock(pos=(300, 250))) if __name__ == '__main__': ViewApp().run() From 562d0abdcf64c10f4bda2c7d6a8c2077298b11d7 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Wed, 3 May 2017 17:17:17 +0100 Subject: [PATCH 07/20] Refactoring code int olist comprehensions --- persimmon/__main__.py | 8 ++- persimmon/backend/backend.py | 6 +- persimmon/view/blocks/block.py | 15 ++++- persimmon/view/util/connection.py | 19 +++--- persimmon/view/util/inpin.py | 9 ++- persimmon/view/util/outpin.py | 11 ++-- persimmon/view/view.kv | 15 +++-- persimmon/view/view.py | 96 +++++++++++++++---------------- setup.py | 20 ++++--- 9 files changed, 110 insertions(+), 89 deletions(-) diff --git a/persimmon/__main__.py b/persimmon/__main__.py index 540018b..a53f46e 100644 --- a/persimmon/__main__.py +++ b/persimmon/__main__.py @@ -1,9 +1,13 @@ import sys +if (len(sys.argv) > 1 and + (sys.argv[1] == '-d' or sys.argv[1] == '--debug')): + import coloredlogs + coloredlogs.DEFAULT_DATE_FORMAT = '%H:%M:%S' + coloredlogs.DEFAULT_LOG_FORMAT = '[%(asctime)s] %(name)s - %(message)s' + coloredlogs.install(level='DEBUG') if hasattr(sys, '_MEIPASS'): import os os.chdir(sys._MEIPASS) -import logging -logging.basicConfig(level=logging.INFO) from persimmon.view import ViewApp ViewApp().run() diff --git a/persimmon/backend/backend.py b/persimmon/backend/backend.py index 7593f52..3f505fb 100644 --- a/persimmon/backend/backend.py +++ b/persimmon/backend/backend.py @@ -14,6 +14,7 @@ def execute_graph(ir: IR, blackboard): threading.Thread(target=execute_graph_parallel, args=(ir, blackboard)).start() + logger.info('Execution done') def execute_graph_parallel(ir: IR, blackboard): """ Execution algorithm, introduces all blocks on a set, when a block is @@ -23,12 +24,11 @@ def execute_graph_parallel(ir: IR, blackboard): while unexplored: unexplored, seen = execute_block(unexplored.pop(), ir, blackboard, unexplored, seen) - logger.info('Execution done') def execute_block(current: int, ir: IR, blackboard, unexplored: set, seen: {}) -> (set, {}): """ Execute a block, if any dependency is not yet executed we recurse into it first. """ - logger.info('executing block {}'.format(current)) + logger.debug('executing block {}'.format(current)) current_block = ir.blocks[current] for in_pin in map(lambda x: ir.inputs[x], current_block.inputs): origin = in_pin.origin @@ -40,7 +40,7 @@ def execute_block(current: int, ir: IR, blackboard, unexplored: set, seen: {}) - current_block.function() blackboard.on_block_executed(current) - logger.info('block {} executed'.format(current)) + logger.debug('block {} executed'.format(current)) for out_id in current_block.outputs: seen[out_id] = ir.outputs[out_id].pin.val diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index a59856b..13832ea 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -1,11 +1,14 @@ +# Persimmon stuff +from persimmon.view.util import Type, BlockType, Pin +# kivy stuff from kivy.uix.floatlayout import FloatLayout from kivy.uix.behaviors import DragBehavior from kivy.properties import ListProperty, StringProperty, ObjectProperty from kivy.lang import Builder from kivy.graphics import BorderImage, Color from kivy.uix.image import Image - -from persimmon.view.util import Type, BlockType +# Types are fun +from typing import Optional Builder.load_file('view/blocks/block.kv') @@ -43,7 +46,9 @@ def tainted(self): def tainted(self, value): self._tainted = value - def in_pin(self, x, y): + def in_pin(self, x: float, y: float) -> Optional[Pin]: + """ Checks if a position collides with any of the pins in the block. + """ for pin in self.input_pins + self.output_pins: if pin.collide_point(x, y): return pin @@ -81,12 +86,16 @@ def kindle(self): self.fbind('pos', self.bind_border) def unkindle(self): + """ Reverts the border image. """ if self.kindled: self.canvas.before.remove(self.kindled) self.funbind('pos', self.bind_border) self.kindled = None + else: + logger.warning('Called unkindle on a block not kindled') def bind_border(self, block, new_pos): + """ Bind border to position. """ self.kindled.pos = new_pos[0] - 5, new_pos[1] - 5 def is_orphan(self): diff --git a/persimmon/view/util/connection.py b/persimmon/view/util/connection.py index 5473a0c..305da05 100644 --- a/persimmon/view/util/connection.py +++ b/persimmon/view/util/connection.py @@ -1,12 +1,14 @@ +# Kivy stuff from kivy.uix.widget import Widget from kivy.lang import Builder from kivy.properties import ObjectProperty, ListProperty from kivy.graphics import Color, Ellipse, Line -from functools import partial from kivy.clock import Clock -from time import sleep +# Numpy for sin import numpy as np +# Others from math import pi +import logging """ @@ -25,6 +27,8 @@ #points: root.lin """ +logger = logging.getLogger(__name__) + class Connection(Widget): start = ObjectProperty(allownone=True) end = ObjectProperty(allownone=True) @@ -140,7 +144,7 @@ def uncircle_pin(self, pin): elif pin == self.end: self.canvas.before.remove(self.end_cr) else: - print('Attempted to uncircle pin without circle') + logger.error('Attempted to uncircle pin without circle') def circle_bind(self, pin, new_pos): if pin == self.start: @@ -148,7 +152,7 @@ def circle_bind(self, pin, new_pos): elif pin == self.end: self.end_cr.pos = pin.pos else: - print('No circle associated with pin') + logger.error('No circle associated with pin') def line_bind(self, pin, new_pos): if pin == self.start: @@ -156,7 +160,7 @@ def line_bind(self, pin, new_pos): elif pin == self.end: self.lin.points = self.lin.points[:2] + pin.center else: - print('No line associated with pin') + logger.error('No line associated with pin') def warn(self): self.warned = True @@ -178,10 +182,7 @@ def pulse(self): Clock.schedule_interval(lambda _: next(self.it), 0.05) # 20 FPS def stop_pulse(self): - if not self.it: - print('Connection {} -> {} failed'.format(id(self.start.block), id(self.end.block))) - else: - self.it.throw(StopIteration) + self.it.throw(StopIteration) def _change_width(self): """ Ok, so let me explain what is going on, this generator/coroutine diff --git a/persimmon/view/util/inpin.py b/persimmon/view/util/inpin.py index 55f92d0..709429b 100644 --- a/persimmon/view/util/inpin.py +++ b/persimmon/view/util/inpin.py @@ -1,13 +1,16 @@ from persimmon.view.util import Pin, Connection from kivy.properties import ObjectProperty +import logging +logger = logging.getLogger(__name__) + class InputPin(Pin): origin = ObjectProperty(allownone=True) def on_touch_down(self, touch): if self.collide_point(*touch.pos) and touch.button == 'left': - print('Creating connection') + logger.info('Creating connection') touch.ud['cur_line'] = Connection(start=self, color=self.color) self.origin = touch.ud['cur_line'] @@ -21,11 +24,11 @@ def on_touch_up(self, touch): if ('cur_line' in touch.ud.keys() and touch.button == 'left' and self.collide_point(*touch.pos)): if touch.ud['cur_line'].end and self.typesafe(touch.ud['cur_line'].end): - print('Establishing connection') + logger.info('Establishing connection') touch.ud['cur_line'].finish_connection(self) self.origin = touch.ud['cur_line'] else: - print('Deleting connection') + logger.info('Deleting connection') touch.ud['cur_line'].delete_connection(self.block.parent.parent) return True else: diff --git a/persimmon/view/util/outpin.py b/persimmon/view/util/outpin.py index 74ea001..1103c7c 100644 --- a/persimmon/view/util/outpin.py +++ b/persimmon/view/util/outpin.py @@ -1,13 +1,17 @@ from persimmon.view.util import Pin, Connection from kivy.properties import ObjectProperty, ListProperty +import logging + + +logger = logging.getLogger(__name__) class OutputPin(Pin): destinations = ListProperty() def on_touch_down(self, touch): if self.collide_point(*touch.pos) and touch.button == 'left': - print('Creating connection') + logger.info('Creating connection') touch.ud['cur_line'] = Connection(end=self, color=self.color) self.destinations.append(touch.ud['cur_line']) @@ -18,15 +22,14 @@ def on_touch_down(self, touch): return False def on_touch_up(self, touch): - #print('on touch up') if ('cur_line' in touch.ud.keys() and touch.button == 'left' and self.collide_point(*touch.pos)): if touch.ud['cur_line'].start and self.typesafe(touch.ud['cur_line'].start): - print('Establishing connection') + logger.info('Establishing connection') touch.ud['cur_line'].finish_connection(self) self.destinations.append(touch.ud['cur_line']) else: - print('Deleting connection') + logger.info('Deleting connection') touch.ud['cur_line'].delete_connection(self.block.parent.parent) return True else: diff --git a/persimmon/view/view.kv b/persimmon/view/view.kv index d8a50de..ed9ae82 100644 --- a/persimmon/view/view.kv +++ b/persimmon/view/view.kv @@ -22,12 +22,15 @@ FloatLayout: size: '100dp', '100dp' pos: 0, 0 on_release: blackboard.execute_graph() - #Button: - #text: 'See Relations' - #size_hint: None, None - #size: '100dp', '100dp' - #pos: 200, 0 - #on_release: blackboard.see_relations() + Button: + text: 'See Relations' + size_hint: None, None + size: '100dp', '100dp' + pos: 200, 0 + on_release: + blackboard.popup.title = 'Relations' + blackboard.popup.message = blackboard.get_relations(); + blackboard.popup.open() #Button: #text: 'See IR' #size_hint: None, None diff --git a/persimmon/view/view.py b/persimmon/view/view.py index 82fdb13..54a384b 100644 --- a/persimmon/view/view.py +++ b/persimmon/view/view.py @@ -40,78 +40,74 @@ def build(self): class BlackBoard(ScatterLayout): blocks = ObjectProperty() - popup = ObjectProperty(Notification(title='')) + popup = ObjectProperty(Notification()) def execute_graph(self): """ Tries to execute the graph, if some block is tainted it prevents the execution, if not it starts running the backend. """ + logger.debug('Checking taint') tainted, tainted_msg = self.check_taint() if tainted: + logger.debug('Some block is tainted') self.popup.title = 'Warning' self.popup.message = tainted_msg self.popup.open() else: + logger.debug('Not block is tainted') for block in self.blocks.children: - block.unkindle() + if block.kindled: + block.unkindle() backend.execute_graph(self.to_ir(), self) - def see_relations(self): - string = '' + def get_relations(self) -> str: + """ Gets the relations between the cables as strings. """ + relations = '' for block in self.blocks.children: - if block.inputs: - for pin in block.inputs.children: - if pin.origin: - string += '{} -> {}\n'.format(block.block_label, - pin.origin.end.block.block_label) - if block.outputs: - for pin in block.outputs.children: - for destination in pin.destinations: - string += '{} <- {}\n'.format(block.block_label, - destination.start.block.block_label) - - self.popup.title = 'Block Relations' - self.popup.message = string - self.popup.open() - - def to_ir(self): + for in_pin in block.input_pins: + if in_pin.origin: + relations += '{} -> {}\n'.format(block.block_label, + pin.origin.end.block.block_label) + ['{} <- {}'.format(block.block_label, destination.start.block.block_label) + for out_pin in block.output_pins + for destination in out_pin.destinations] + """ + for out_pin in block.output_pins: + for destination in out_pin.destinations: + relations += '{} <- {}\n'.format(block.block_label, + destination.start.block.block_label) + """ + return relations + + def to_ir(self) -> backend.IR: """ Transforms the relations between blocks into an intermediate representation in O(n), n being the number of pins. """ ir_blocks = {} ir_inputs = {} ir_outputs = {} + logger.debug('Transforming to IR') for block in self.blocks.children: - if block.is_orphan(): + if block.is_orphan(): # Ignore orphaned blocks continue block_hash = id(block) block_inputs, block_outputs = [], [] avoid = False - if block.inputs: - for pin in block.inputs.children: - pin_hash = id(pin) - block_inputs.append(pin_hash) - if pin.origin: - other = id(pin.origin.end) - else: - avoid = True - break # This means we are not connected - ir_inputs[pin_hash] = backend.InputEntry(origin=other, - pin=pin, - block=block_hash) - if block.outputs and not avoid: - for pin in block.outputs.children: - pin_hash = id(pin) - block_outputs.append(pin_hash) - dest = [] - if pin.destinations: - for d in pin.destinations: - dest.append(id(d.start)) - ir_outputs[pin_hash] = backend.OutputEntry(destinations=dest, - pin=pin, - block=block_hash) - if not avoid: - ir_blocks[block_hash] = backend.BlockEntry(inputs=block_inputs, - function=block.function, - outputs=block_outputs) + for in_pin in block.input_pins: + pin_hash = id(in_pin) + block_inputs.append(pin_hash) + other = id(in_pin.origin.end) # Always origin + ir_inputs[pin_hash] = backend.InputEntry(origin=other, + pin=in_pin, + block=block_hash) + for out_pin in block.output_pins: + pin_hash = id(out_pin) + block_outputs.append(pin_hash) + dest = list(map(id, out_pin.destinations)) + ir_outputs[pin_hash] = backend.OutputEntry(destinations=dest, + pin=out_pin, + block=block_hash) + ir_blocks[block_hash] = backend.BlockEntry(inputs=block_inputs, + function=block.function, + outputs=block_outputs) self.block_hashes = ir_blocks return backend.IR(blocks=ir_blocks, inputs=ir_inputs, outputs=ir_outputs) @@ -130,7 +126,7 @@ def on_block_executed(self, block_hash: int): block_idx = list(map(id, self.blocks.children)).index(block_hash) block = self.blocks.children[block_idx] block.kindle() - logger.info('Kindling block {}'.format(block.__class__.__name__)) + logger.debug('Kindling block {}'.format(block.__class__.__name__)) # Python list comprehensions can be nested forwards, but also backwards # http://rhodesmill.org/brandon/2009/nested-comprehensions/ @@ -172,7 +168,7 @@ def on_touch_up(self, touch): # if no connection was made if 'cur_line' in touch.ud.keys() and touch.button == 'left': - logging.info('Connection was not finished') + logger.info('Connection was not finished') touch.ud['cur_line'].delete_connection(self) return True diff --git a/setup.py b/setup.py index 1695807..b7adb21 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,14 @@ from setuptools import setup, find_packages -setup(name = 'persimmon', - version = '0.5', - description = 'A visual programming interface for sklearn', - url = 'http://github.com/alvarber/Persimmon', - author = 'Álvaro Bermejo', - author_email = 'alvaro.garcia95@hotmail.com', - license = 'MIT', - packages = find_packages(), - zip_safe = False) +setup(name='persimmon', + version='0.7', + description='A visual dataflow language for sklearn', + url='http://github.com/alvarber/Persimmon', + author='Álvaro Bermejo', + author_email='alvaro.garcia95@hotmail.com', + license='MIT', + packages=find_packages(), + install_requires=['Kivy', 'scikit-learn', 'pandas', 'numpy', + 'scipy', 'coloredlogs'] + zip_safe=False) From bc52866cd6cdddb71484772307e8118e7df1f1fd Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Wed, 3 May 2017 18:26:47 +0100 Subject: [PATCH 08/20] Renamed block_label to title --- persimmon/view/blocks/block.kv | 2 +- persimmon/view/blocks/block.py | 4 +-- persimmon/view/blocks/crossvalidationblock.kv | 2 +- persimmon/view/blocks/csvinblock.kv | 2 +- persimmon/view/blocks/csvinblock.py | 2 +- persimmon/view/blocks/csvoutblock.kv | 2 +- persimmon/view/blocks/csvoutblock.py | 2 +- persimmon/view/blocks/dictblock.kv | 2 +- persimmon/view/blocks/dictblock.py | 12 ++++---- persimmon/view/blocks/fitblock.kv | 2 +- persimmon/view/blocks/gridsearchblock.kv | 2 +- persimmon/view/blocks/knnblock.kv | 2 +- persimmon/view/blocks/predictblock.kv | 2 +- persimmon/view/blocks/printblock.kv | 2 +- persimmon/view/blocks/randomforestblock.kv | 4 +-- persimmon/view/blocks/sgdblock.kv | 2 +- persimmon/view/blocks/svmblock.kv | 2 +- persimmon/view/blocks/tenfoldblock.kv | 2 +- persimmon/view/blocks/tssplitblock.kv | 2 +- persimmon/view/view.kv | 17 ++++++----- persimmon/view/view.py | 28 ++++++++----------- 21 files changed, 48 insertions(+), 49 deletions(-) diff --git a/persimmon/view/blocks/block.kv b/persimmon/view/blocks/block.kv index 9390d12..d860d28 100644 --- a/persimmon/view/blocks/block.kv +++ b/persimmon/view/blocks/block.kv @@ -24,7 +24,7 @@ size_hint: None, None height: '20dp' width: root.width - text: root.block_label + text: root.title canvas.before: Color: rgb: root.block_color diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index 13832ea..941eb9d 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -15,7 +15,7 @@ class Block(DragBehavior, FloatLayout): block_color = ListProperty([1, 1, 1]) - block_label = StringProperty('label') + title = StringProperty() inputs = ObjectProperty() outputs = ObjectProperty() input_pins = ListProperty() @@ -33,7 +33,7 @@ def __init__(self, **kwargs): for pin in self.outputs.children: self.output_pins.append(pin) pin.block = self - self.tainted_msg = 'Block {} has unconnected inputs'.format(self.block_label) + self.tainted_msg = 'Block {} has unconnected inputs'.format(self.title) self._tainted = False self.kindled = None self.border_texture = Image(source='tex4.png').texture diff --git a/persimmon/view/blocks/crossvalidationblock.kv b/persimmon/view/blocks/crossvalidationblock.kv index 5fa1a3b..aac134c 100644 --- a/persimmon/view/blocks/crossvalidationblock.kv +++ b/persimmon/view/blocks/crossvalidationblock.kv @@ -1,5 +1,5 @@ : - block_label: 'Cross Validation' + title: 'Cross Validation' block_color: root.b.MODEL_SELECTION.value inputs: inputs outputs: outputs diff --git a/persimmon/view/blocks/csvinblock.kv b/persimmon/view/blocks/csvinblock.kv index a2a980a..b44fdb6 100644 --- a/persimmon/view/blocks/csvinblock.kv +++ b/persimmon/view/blocks/csvinblock.kv @@ -1,6 +1,6 @@ : out_1: out_1 - block_label: 'Read .csv' + title: 'Read .csv' block_color: root.b.IO.value outputs: outputs Button: diff --git a/persimmon/view/blocks/csvinblock.py b/persimmon/view/blocks/csvinblock.py index 9ed2958..22e0687 100644 --- a/persimmon/view/blocks/csvinblock.py +++ b/persimmon/view/blocks/csvinblock.py @@ -21,7 +21,7 @@ def __init__(self, **kwargs): # This binds two properties together self.file_dialog.bind(file_chosen=self.setter('file_chosen')) self._tainted = True - self.tainted_msg = 'File not chosen in block {}!'.format(self.block_label) + self.tainted_msg = 'File not chosen in block {}!'.format(self.title) def function(self): self.out_1.val = pd.read_csv(self.file_chosen, header=0) diff --git a/persimmon/view/blocks/csvoutblock.kv b/persimmon/view/blocks/csvoutblock.kv index 510e0b0..6e99fa4 100644 --- a/persimmon/view/blocks/csvoutblock.kv +++ b/persimmon/view/blocks/csvoutblock.kv @@ -1,6 +1,6 @@ : in_1: in_1 - block_label: 'Write .csv' + title: 'Write .csv' block_color: root.b.IO.value inputs: inputs Button: diff --git a/persimmon/view/blocks/csvoutblock.py b/persimmon/view/blocks/csvoutblock.py index 03e0021..198cb7f 100644 --- a/persimmon/view/blocks/csvoutblock.py +++ b/persimmon/view/blocks/csvoutblock.py @@ -21,7 +21,7 @@ def __init__(self, **kwargs): # Let's bind two together self.file_dialog.bind(file_chosen=self.setter('path')) self.tainted = True - self.tainted_msg = 'File not chosen in block {}!'.format(self.block_label) + self.tainted_msg = 'File not chosen in block {}!'.format(self.title) def function(self): diff --git a/persimmon/view/blocks/dictblock.kv b/persimmon/view/blocks/dictblock.kv index 77d6480..463456f 100644 --- a/persimmon/view/blocks/dictblock.kv +++ b/persimmon/view/blocks/dictblock.kv @@ -1,5 +1,5 @@ : - block_label: 'Dictionary' + title: 'Dictionary' block_color: root.b.STATE.value outputs: outputs dict_out: dict_out diff --git a/persimmon/view/blocks/dictblock.py b/persimmon/view/blocks/dictblock.py index c155a47..71b5342 100644 --- a/persimmon/view/blocks/dictblock.py +++ b/persimmon/view/blocks/dictblock.py @@ -15,7 +15,8 @@ class DictBlock(Block): def __init__(self, **kwargs): super().__init__(**kwargs) self.tainted = True - self.tainted_msg = 'Dictionary not inputed on block {}!'.format(self.block_label) + self.tainted_msg = ('Dictionary not inputed on block {}!' + .format(self.title)) # TODO: Perform this check at unfocus time @Block.tainted.getter @@ -26,12 +27,13 @@ def tainted(self): self.tainted = False else: self.tainted = True - self.tainted_msg = 'Block {} requires a dictionary, not a {}!'.format( - self.block_label, type(string).__name__) + self.tainted_msg = ('Block {} requires a dictionary, not a {}!' + .format(self.title, + type(string).__name__)) except Exception: self.tainted = True - self.tainted_msg = 'Invalid input on block {}'.format( - self.block_label) + self.tainted_msg = ('Invalid input on block {}' + .format(self.title)) return self._tainted def function(self): diff --git a/persimmon/view/blocks/fitblock.kv b/persimmon/view/blocks/fitblock.kv index 5c6de15..7d899c0 100644 --- a/persimmon/view/blocks/fitblock.kv +++ b/persimmon/view/blocks/fitblock.kv @@ -1,5 +1,5 @@ : - block_label: 'Fit' + title: 'Fit' block_color: root.b.FIT_AND_PREDICT.value inputs: inputs outputs: outputs diff --git a/persimmon/view/blocks/gridsearchblock.kv b/persimmon/view/blocks/gridsearchblock.kv index 479c4ea..09d419f 100644 --- a/persimmon/view/blocks/gridsearchblock.kv +++ b/persimmon/view/blocks/gridsearchblock.kv @@ -1,5 +1,5 @@ : - block_label: 'Grid Search' + title: 'Grid Search' block_color: root.b.MODEL_SELECTION.value inputs: inputs outputs: outputs diff --git a/persimmon/view/blocks/knnblock.kv b/persimmon/view/blocks/knnblock.kv index 1b79531..29eecc6 100644 --- a/persimmon/view/blocks/knnblock.kv +++ b/persimmon/view/blocks/knnblock.kv @@ -1,5 +1,5 @@ : - block_label: 'KNN' + title: 'KNN' block_color: root.b.CLASSIFICATOR.value outputs: outputs est_out: est_out diff --git a/persimmon/view/blocks/predictblock.kv b/persimmon/view/blocks/predictblock.kv index e01e101..1ff9dbc 100644 --- a/persimmon/view/blocks/predictblock.kv +++ b/persimmon/view/blocks/predictblock.kv @@ -1,5 +1,5 @@ : - block_label: 'Predict' + title: 'Predict' block_color: root.b.FIT_AND_PREDICT.value inputs: inputs outputs: outputs diff --git a/persimmon/view/blocks/printblock.kv b/persimmon/view/blocks/printblock.kv index f7ff1fc..0182fd9 100644 --- a/persimmon/view/blocks/printblock.kv +++ b/persimmon/view/blocks/printblock.kv @@ -1,6 +1,6 @@ : in_1: in_1 - block_label: 'Print' + title: 'Print' block_color: root.b.IO.value inputs: inputs Widget: diff --git a/persimmon/view/blocks/randomforestblock.kv b/persimmon/view/blocks/randomforestblock.kv index 89c6795..7ca63cc 100644 --- a/persimmon/view/blocks/randomforestblock.kv +++ b/persimmon/view/blocks/randomforestblock.kv @@ -1,8 +1,8 @@ : - out_1: out_1 - block_label: 'Random Forest' + title: 'Random Forest' block_color: root.b.CLASSIFICATOR.value outputs: outputs + out_1: out_1 Widget: id: outputs OutputPin: diff --git a/persimmon/view/blocks/sgdblock.kv b/persimmon/view/blocks/sgdblock.kv index 41fae89..9e60958 100644 --- a/persimmon/view/blocks/sgdblock.kv +++ b/persimmon/view/blocks/sgdblock.kv @@ -1,5 +1,5 @@ : - block_label: 'Stochastic Gradient Descent' + title: 'Stochastic Gradient Descent' block_color: root.b.CLASSIFICATOR.value outputs: outputs est_out: est_out diff --git a/persimmon/view/blocks/svmblock.kv b/persimmon/view/blocks/svmblock.kv index 9ae83ca..b2eca48 100644 --- a/persimmon/view/blocks/svmblock.kv +++ b/persimmon/view/blocks/svmblock.kv @@ -1,6 +1,6 @@ : + title: 'SVM' out_1: out_1 - block_label: 'SVM' block_color: root.b.CLASSIFICATOR.value outputs: outputs Widget: diff --git a/persimmon/view/blocks/tenfoldblock.kv b/persimmon/view/blocks/tenfoldblock.kv index 98f7ff4..6724279 100644 --- a/persimmon/view/blocks/tenfoldblock.kv +++ b/persimmon/view/blocks/tenfoldblock.kv @@ -1,6 +1,6 @@ : + title: 'K-fold' out_1: out_1 - block_label: 'K-fold' block_color: root.b.CROSS_VALIDATOR.value outputs: outputs Widget: diff --git a/persimmon/view/blocks/tssplitblock.kv b/persimmon/view/blocks/tssplitblock.kv index ec46936..6e463e8 100644 --- a/persimmon/view/blocks/tssplitblock.kv +++ b/persimmon/view/blocks/tssplitblock.kv @@ -1,6 +1,6 @@ : + title: 'Time Series Split' out_1: out_1 - block_label: 'Time Series Split' block_color: root.b.CROSS_VALIDATOR.value outputs: outputs Widget: diff --git a/persimmon/view/view.kv b/persimmon/view/view.kv index ed9ae82..8da4438 100644 --- a/persimmon/view/view.kv +++ b/persimmon/view/view.kv @@ -31,12 +31,15 @@ FloatLayout: blackboard.popup.title = 'Relations' blackboard.popup.message = blackboard.get_relations(); blackboard.popup.open() - #Button: - #text: 'See IR' - #size_hint: None, None - #size: '100dp', '100dp' - #pos: 300, 0 - #on_release: blackboard.see_ir() + Button: + text: 'See IR' + size_hint: None, None + size: '100dp', '100dp' + pos: 300, 0 + on_release: + blackboard.popup.title = 'IR' + blackboard.popup.message = str(blackboard.to_ir()) + blackboard.popup.open() TabbedPanel: pos_hint: {'top': 1} size_hint_y: None @@ -73,7 +76,7 @@ FloatLayout: on_release: blackboard.blocks.add_widget(b.KNNBlock(pos=(300, 250))) Button: text: 'SGD' - #on_release: blackboard.blocks.add_widget(b.SGDBlock(pos=(300, 250))) + on_release: blackboard.blocks.add_widget(b.SGDBlock(pos=(300, 250))) TabbedPanelItem: text: 'Fit & Predict' BoxLayout: diff --git a/persimmon/view/view.py b/persimmon/view/view.py index 54a384b..c747aa9 100644 --- a/persimmon/view/view.py +++ b/persimmon/view/view.py @@ -60,23 +60,17 @@ def execute_graph(self): backend.execute_graph(self.to_ir(), self) def get_relations(self) -> str: - """ Gets the relations between the cables as strings. """ - relations = '' - for block in self.blocks.children: - for in_pin in block.input_pins: - if in_pin.origin: - relations += '{} -> {}\n'.format(block.block_label, - pin.origin.end.block.block_label) - ['{} <- {}'.format(block.block_label, destination.start.block.block_label) + """ Gets the relations between pins as a string. """ + # generator expressions are cool + ins = ('{} -> {}\n'.format(block.title, in_pin.origin.end.block.title) + for block in self.blocks.children + for in_pin in block.input_pins if in_pin.origin) + outs = ('{} <- {}\n'.format(block.title, destination.start.block.title) + for block in self.blocks.children for out_pin in block.output_pins - for destination in out_pin.destinations] - """ - for out_pin in block.output_pins: - for destination in out_pin.destinations: - relations += '{} <- {}\n'.format(block.block_label, - destination.start.block.block_label) - """ - return relations + for destination in out_pin.destinations) + + return ''.join(ins) + ''.join(outs) def to_ir(self) -> backend.IR: """ Transforms the relations between blocks into an intermediate @@ -176,7 +170,7 @@ def on_touch_up(self, touch): if self.collide_point(x, y): return True - def in_block(self, x, y): + def in_block(self, x: float, y: float) -> Optional[Block]: """ Check if a position hits a block. """ for block in self.blocks.children: if block.collide_point(x, y): From dfe89f365eade4e79ae7931a49f57979b689e888 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Wed, 3 May 2017 18:31:12 +0100 Subject: [PATCH 09/20] Renamed png resources --- persimmon/border.png | Bin 0 -> 461 bytes persimmon/connections.png | Bin 268 -> 293 bytes persimmon/view/blocks/block.py | 2 +- persimmon/view/view.py | 4 +++- 4 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 persimmon/border.png diff --git a/persimmon/border.png b/persimmon/border.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a04b6e8efc7606e8ec27de1414d96fc881c80a GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b zKxzXBGxjN8HDzF6%=L6}45_&F_V(VaLjep&KmI?fHj(B2f{fQs1Pb_ewC;1Z+U9?O z{}+?!D*X#qX72+wajp}UnX^dr{sN7OdA`$Gwgf+)U3{#1`RB()+mkKMR!$NtcaXO> z?pHQu3%lBAxy#1;(xbxi1-tJU{J3@d>Yk^L>(5>(Kl$i{4fFit40E@CpWps>`_6f~ zCmNS6)o(ChSRd%KPH(PyLUu#9if tMrM)b!dzX6fcZ}n z5469ZWa&`9b7g2{L)y)q?-_1 zzuek0>dy5P8(Wrb1-s|%kp(V69( z=@sf>X6Nv~Fe9r|o5Ki9dGM6uG$!RJ1NAV7Icy0t3|fU50fkD30SQ{hy$-EfLV*IuAPGlf`%gO-Ho1=P+W=00000NkvXXu0mjf({*hs delta 240 zcmVACBM9sJS&0000 Date: Wed, 3 May 2017 19:06:37 +0100 Subject: [PATCH 10/20] Deleted check taint function --- persimmon/backend/backend.py | 2 +- persimmon/view/view.py | 21 ++++++++------------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/persimmon/backend/backend.py b/persimmon/backend/backend.py index 3f505fb..2d197d2 100644 --- a/persimmon/backend/backend.py +++ b/persimmon/backend/backend.py @@ -14,7 +14,6 @@ def execute_graph(ir: IR, blackboard): threading.Thread(target=execute_graph_parallel, args=(ir, blackboard)).start() - logger.info('Execution done') def execute_graph_parallel(ir: IR, blackboard): """ Execution algorithm, introduces all blocks on a set, when a block is @@ -24,6 +23,7 @@ def execute_graph_parallel(ir: IR, blackboard): while unexplored: unexplored, seen = execute_block(unexplored.pop(), ir, blackboard, unexplored, seen) + logger.info('Execution done') def execute_block(current: int, ir: IR, blackboard, unexplored: set, seen: {}) -> (set, {}): """ Execute a block, if any dependency is not yet executed we diff --git a/persimmon/view/view.py b/persimmon/view/view.py index 3bdd183..0e73164 100644 --- a/persimmon/view/view.py +++ b/persimmon/view/view.py @@ -19,7 +19,7 @@ from kivy.uix.floatlayout import FloatLayout from kivy.uix.scatterlayout import ScatterLayout # Others -from functools import partial +from functools import partial, reduce from collections import deque import logging from typing import Optional @@ -48,14 +48,17 @@ def execute_graph(self): """ Tries to execute the graph, if some block is tainted it prevents the execution, if not it starts running the backend. """ logger.debug('Checking taint') - tainted, tainted_msg = self.check_taint() - if tainted: + # Check if any block is tainted + if any(map(lambda block: block.tainted, self.blocks.children)): + # Get tainted block + tainted_block = reduce(lambda l, r: l if l.tainted else r, + self.blocks.children) logger.debug('Some block is tainted') self.popup.title = 'Warning' - self.popup.message = tainted_msg + self.popup.message = tainted_block.tainted_msg self.popup.open() else: - logger.debug('Not block is tainted') + logger.debug('No block is tainted') for block in self.blocks.children: if block.kindled: block.unkindle() @@ -107,14 +110,6 @@ def to_ir(self) -> backend.IR: self.block_hashes = ir_blocks return backend.IR(blocks=ir_blocks, inputs=ir_inputs, outputs=ir_outputs) - def check_taint(self) -> (bool, str): - """ Checks the tainted property on all blocks, returning True and - the message if some is tainted. """ - for block in self.blocks.children: - if block.tainted: - return True, block.tainted_msg - return False, '' - #@mainthread Concurrency bug? def on_block_executed(self, block_hash: int): """ Callback that kindles a block, pulses future connections and From 97df1359cf46243e3c5ea192052d23956e7b5d4b Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Thu, 4 May 2017 12:46:48 +0100 Subject: [PATCH 11/20] Fixing LaTeX --- docs/Makefile | 30 +++++++--- docs/metadata.yaml | 4 +- docs/template.tex | 141 ++++++++++++++++++++++++++++++--------------- 3 files changed, 115 insertions(+), 60 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index 9dd82c6..4c6c7a6 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,4 +1,4 @@ -PDF := persimmon.pdf # PDF Main Target +PDF := persimmon.pdf # PDF Default Target MARKDOWN := introduction.md literature.md workflow.md milestones.md \ risk.md interface.md implementation.md types.md \ evaluation.md postmortem.md # Markdown files @@ -30,28 +30,40 @@ $(PDF): $(MARKDOWN) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(M pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ --top-level-division chapter --highlight-style breezedark \ + --include-in-header question.tex \ --metadata date:"$(shell date +%Y/%m/%d)" \ - --metadata sansfont:"Helvetica Neue LT Com" \ $(METADATA) $(MARKDOWN) --include-after-body $(APPENDIX) -o $@ -hertfordshire: $(MARKDOWN) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) +hertfordshire: $(MARKDOWN) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ --top-level-division chapter --highlight-style breezedark \ - --include-in-header question.tex \ + --include-in-header question.tex \ --metadata geometry:top=2.5cm,left=4cm,right=2.5cm,bottom=2.5cm \ --metadata sansfont:"Helvetica Neue LT Com" \ - $(METADATA) $(MARKDOWN) -o persimmon_herts.pdf + --metadata institution:"University of Hertfordshire" \ + --metadata school:"School of Computer Science" \ + --metadata degree:"Modular BSc Honours in Computer Science" \ + --metadata degreecode:"6COM1054 - Artificial Intelligence Project" \ + --metadata date:"$(shell date +%Y/%m/%d)" \ + --metadata supervisor:"Dr.Mariana Lilley" \ + $(METADATA) $(MARKDOWN) --include-after-body $(APPENDIX) \ + -o persimmon_herts.pdf -hertfordshire_apx: $(MARKDOWN) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) $(APPENDIX) +hertfordshire_print: $(MARKDOWN) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ --top-level-division chapter --highlight-style breezedark \ - --include-in-header question.tex --include-after-body $(APPENDIX) \ + --include-in-header question.tex \ --metadata geometry:top=2.5cm,left=4cm,right=2.5cm,bottom=2.5cm \ --metadata sansfont:"Helvetica Neue LT Com" \ - $(METADATA) $(MARKDOWN) -o persimmon_herts.pdf - + --metadata institution:"University of Hertfordshire" \ + --metadata school:"School of Computer Science" \ + --metadata degree:"Modular BSc Honours in Computer Science" \ + --metadata degreecode:"6COM1054 - Artificial Intelligence Project" \ + --metadata date:"$(shell date +%Y/%m/%d)" \ + --metadata supervisor:"Dr.Mariana Lilley" \ + $(METADATA) $(MARKDOWN) -o persimmon_herts_print.pdf complutense: $(MARKDOWN_COMPLUTENSE) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ diff --git a/docs/metadata.yaml b/docs/metadata.yaml index 32c3565..785cb08 100644 --- a/docs/metadata.yaml +++ b/docs/metadata.yaml @@ -2,10 +2,8 @@ --- author: Álvaro Bermejo García title: Persimmon -subtitle: A visual programming interface for scikit-learn -#date: 2017-03-01 +subtitle: A visual dataflow language for scikit-learn documentclass: scrreprt -#sansfont: Helvetica Neue LT Com colorlinks: True lof: True papersize: A4 diff --git a/docs/template.tex b/docs/template.tex index e50e97e..d4b2b21 100644 --- a/docs/template.tex +++ b/docs/template.tex @@ -54,8 +54,8 @@ \IfFileExists{upquote.sty}{\usepackage{upquote}}{} % use microtype if available \IfFileExists{microtype.sty}{% -\usepackage{microtype} -\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts + \usepackage{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts }{} $if(geometry)$ \usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} @@ -85,18 +85,18 @@ breaklinks=true} \urlstyle{same} % don't use monospace font for urls $if(lang)$ -\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex - \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} -$if(babel-newcommands)$ - $babel-newcommands$ -$endif$ -\else - \usepackage{polyglossia} - \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} -$for(polyglossia-otherlangs)$ - \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} -$endfor$ -\fi + \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} + $if(babel-newcommands)$ + $babel-newcommands$ + $endif$ + \else + \usepackage{polyglossia} + \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} + $for(polyglossia-otherlangs)$ + \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} + $endfor$ + \fi $endif$ $if(natbib)$ \usepackage{natbib} @@ -183,7 +183,7 @@ % set default figure placement to htbp \makeatletter -\def\fps@figure{htbp} + \def\fps@figure{htbp} \makeatother $for(header-includes)$ @@ -191,40 +191,85 @@ $endfor$ $if(title)$ - $if(titlepic)$ - \usepackage{titlepic} - \titlepic{\includegraphics[width=\textwidth]{$titlepic$}} - $endif$ - \title{$title$$if(thanks)$\thanks{$thanks$}$endif$$if(subtitle)$% - \subtitle{$subtitle$}$endif$$if(institute)$\institute{$institute$}% - $endif$} - %\makeatletter - %\def\maketitle{ - % \newpage - % \null - % \vskip 2em% - % {\sffamily\Huge\bfseries \@title}\par% - % {\@author}\par}% - %\makeatother - % Let's make titles better - %\newfontfamily{\titlefont} - % [UprightFont = {* 43 Light Extended}, - % BoldFont = {* 107 Extra Black Condensed}]{Helvetica Neue LT Com} - %\usepackage{titling} - %\renewcommand{\maketitlehooka}{\sffamily} + \renewcommand\maketitle{% + \begin{titlepage} + \centering + $if(institution)$ + {\scshape\Large $institution$ \par} + $else$ + \null + $endif$ + \vspace{0.25cm} + $if(school)$ + {\scshape\large $school$ \par} + $else$ + \null + $endif$ + \vspace{1cm} + $if(degree)$ + {\bfseries\large $degree$ \par} + $else$ + \null + $endif$ + \vspace{1.5cm} + $if(degreecode)$ + {\itshape\large $degreecode$ \par} + $else$ + \null + $endif$ + \vspace{2cm} + %$if(date)$ + %{\large \@date \par}% + %$endif$ + \null + \vfill + %{\LARGE \@title \par}% + \null + \vfill + %{\large + % \lineskip .5em% + % \begin{tabular}[t]{c}% + % \@author + % \end{tabular}\par}% + \null + \vspace{0.25cm} + $if(supervisor)$ + { Supervised by $supervisor$ \par} + $else$ + \null + $endif$ + \vfill + \end{titlepage} + } +$endif$ + +%$if(title)$ +% $if(titlepic)$ +% \usepackage{titlepic} +% \titlepic{\includegraphics[width=\textwidth]{$titlepic$}} +% $endif$ +% \title{$title$$if(thanks)$\thanks{$thanks$}$endif$$if(subtitle)$% +% \subtitle{$subtitle$}$endif$$if(institute)$\institute{$institute$}% +% $endif$} +% %Let's make titles better +% \newfontfamily{\titlefont} +% [UprightFont = {* 43 Light Extended}, +% BoldFont = {* 107 Extra Black Condensed}]{Helvetica Neue LT Com} +% \usepackage{titling} +% \renewcommand{\maketitlehooka}{\sffamily} %$endif$ %$if(subtitle)$ - %\providecommand{\subtitle}[1]{} - %\subtitle{$subtitle$} -$endif$ -$if(author)$ - \author{$for(author)$$author$$sep$ \and $endfor$} -$endif$ -$if(institute)$ - \providecommand{\institute}[1]{} - \institute{$for(institute)$$institute$$sep$ \and $endfor$} -$endif$ -\date{$date$} +% \providecommand{\subtitle}[1]{} +% \subtitle{$subtitle$} +%$endif$ +%$if(author)$ +% \author{$for(author)$$author$$sep$ \and $endfor$} +%$endif$ +%$if(institute)$ +% \providecommand{\institute}[1]{} +% \institute{$for(institute)$$institute$$sep$ \and $endfor$} +%$endif$ +%\date{$date$} % Make sections great again \usepackage{titlesec} @@ -242,7 +287,7 @@ {\bfseries \abstractname\vspace{-.5em}\vspace{0pt}}% \end{center}% \quotation - } +} \begin{document} $if(title)$ From a16efe50d540ee60292ea4b15f64cb94317cf656 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Thu, 4 May 2017 21:45:23 +0100 Subject: [PATCH 12/20] Both hertfordshire and complutense cover are now parametizable --- docs/Makefile | 40 ++++++----- docs/metadata.yaml | 3 +- docs/template.tex | 169 +++++++++++++++++++++------------------------ 3 files changed, 102 insertions(+), 110 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index 11e3980..015bccf 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -2,7 +2,7 @@ PDF := persimmon.pdf # PDF Default Target MARKDOWN := introduction.md literature.md workflow.md milestones.md \ risk.md interface.md implementation.md types.md \ evaluation.md postmortem.md # Markdown files -MARKDOWN_COMPLUTENSE := introduction.md focus.md literature.md \ +MARKDOWN_COMPLU := introduction.md focus.md literature.md \ workflow.md milestones.md risk.md interface.md implementation.md \ types.md analysis.md postmortem.md APPENDICES := packages.md how.md eval_form.md # Appendix after bibliography @@ -13,7 +13,7 @@ TEMPLATE := template.tex # LaTeX template for producing PDF # Add src prefix to markdown files MARKDOWN := $(addprefix src/, $(MARKDOWN)) -MARKDOWN_COMPLUTENSE := $(addprefix src/, $(MARKDOWN_COMPLUTENSE)) +MARKDOWN_COMPLU := $(addprefix src/, $(MARKDOWN_COMPLU)) APPENDICES := $(addprefix src/, $(APPENDICES)) GRAPHS := $(wildcard graphs/*.tex) # Latex diagrams @@ -26,54 +26,60 @@ APPENDIX := appendix.tex all: $(PDF) +# Default pdf, no information about university, no extra complutense chapters, +# no cool font $(PDF): $(MARKDOWN) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ --top-level-division chapter --highlight-style breezedark \ --include-in-header question.tex \ - --metadata date:"$(shell date +%Y/%m/%d)" \ $(METADATA) $(MARKDOWN) --include-after-body $(APPENDIX) -o $@ -hertfordshire: $(MARKDOWN) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) +# Hertfordshire digital submission +herts: $(MARKDOWN) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ --top-level-division chapter --highlight-style breezedark \ - --include-in-header question.tex \ + --include-in-header question.tex \ --metadata geometry:top=2.5cm,left=4cm,right=2.5cm,bottom=2.5cm \ --metadata sansfont:"Helvetica Neue LT Com" \ - --metadata institution:"University of Hertfordshire" \ + --metadata institute:"University of Hertfordshire" \ --metadata school:"School of Computer Science" \ --metadata degree:"Modular BSc Honours in Computer Science" \ --metadata degreecode:"6COM1054 - Artificial Intelligence Project" \ - --metadata date:"$(shell date +%Y/%m/%d)" \ --metadata supervisor:"Dr.Mariana Lilley" \ $(METADATA) $(MARKDOWN) --include-after-body $(APPENDIX) \ -o persimmon_herts.pdf -hertfordshire_print: $(MARKDOWN) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) +# Hertfordshire print submission +herts_print: $(MARKDOWN) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ --top-level-division chapter --highlight-style breezedark \ - --include-in-header question.tex \ --metadata geometry:top=2.5cm,left=4cm,right=2.5cm,bottom=2.5cm \ --metadata sansfont:"Helvetica Neue LT Com" \ - --metadata institution:"University of Hertfordshire" \ + --metadata institute:"University of Hertfordshire" \ --metadata school:"School of Computer Science" \ --metadata degree:"Modular BSc Honours in Computer Science" \ --metadata degreecode:"6COM1054 - Artificial Intelligence Project" \ - --metadata date:"$(shell date +%Y/%m/%d)" \ --metadata supervisor:"Dr.Mariana Lilley" \ $(METADATA) $(MARKDOWN) -o persimmon_herts_print.pdf -complutense: $(MARKDOWN_COMPLUTENSE) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) +# Complutense digital submission +complu: $(MARKDOWN_COMPLU) $(APPENDIX) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ --top-level-division chapter --highlight-style breezedark \ - --metadata title:"A scikit-learn visual programming interface" \ - --metadata date:"Director:Manuel Freire Moran, Codirector: Pablo Moreno Ger" \ - --metadata sansfont:"Helvetica Neue LT Com" --metadata keywords:"Serious Learning","Visual Programming","Dataflow Programming" \ - --metadata titlepic:images/fdi.png $(METADATA) $(MARKDOWN_COMPLUTENSE) \ - --include-after-body $(APPENDIX) -o $(PDF) + --include-in-header question.tex \ + --metadata sansfont:"Helvetica Neue LT Com" \ + --metadata institute:"Universidad Complutense" \ + --metadata school:"Facultad de Informática" \ + --metadata degree:"Computer Engineering" \ + --metadata degreecode:"Tecnología Específica de Computación" \ + --metadata supervisor:"Manuel Freire Moran" \ + --metadata cosupervisor:"Pablo Moreno Ger" \ + --metadata titlepic:images/fdi.png $(METADATA) $(MARKDOWN_COMPLU) \ + --include-after-body $(APPENDIX) -o persimmon_complu.pdf # For standalone images images/%.pdf: graphs/%.tex diff --git a/docs/metadata.yaml b/docs/metadata.yaml index 5b532e9..40a0771 100644 --- a/docs/metadata.yaml +++ b/docs/metadata.yaml @@ -2,7 +2,8 @@ --- author: Álvaro Bermejo García title: Persimmon -subtitle: A visual dataflow language for scikit-learn +subtitle: A visual dataflow language for machine learning +date: \today documentclass: scrreprt colorlinks: True lof: True diff --git a/docs/template.tex b/docs/template.tex index 01e7262..55fbe56 100644 --- a/docs/template.tex +++ b/docs/template.tex @@ -191,59 +191,6 @@ $endfor$ $if(title)$ - \renewcommand\maketitle{% - \begin{titlepage} - \centering - $if(institution)$ - {\scshape\Large $institution$ \par} - $else$ - \null - $endif$ - \vspace{0.25cm} - $if(school)$ - {\scshape\large $school$ \par} - $else$ - \null - $endif$ - \vspace{1cm} - $if(degree)$ - {\bfseries\large $degree$ \par} - $else$ - \null - $endif$ - \vspace{1.5cm} - $if(degreecode)$ - {\itshape\large $degreecode$ \par} - $else$ - \null - $endif$ - \vspace{2cm} - %$if(date)$ - %{\large \@date \par}% - %$endif$ - \null - \vfill - %{\LARGE \@title \par}% - \null - \vfill - %{\large - % \lineskip .5em% - % \begin{tabular}[t]{c}% - % \@author - % \end{tabular}\par}% - \null - \vspace{0.25cm} - $if(supervisor)$ - { Supervised by $supervisor$ \par} - $else$ - \null - $endif$ - \vfill - \end{titlepage} - } -$endif$ - -%$if(title)$ % $if(titlepic)$ % \usepackage{titlepic} % \titlepic{\includegraphics[width=\textwidth]{$titlepic$}} @@ -251,25 +198,22 @@ % \title{$title$$if(thanks)$\thanks{$thanks$}$endif$$if(subtitle)$% % \subtitle{$subtitle$}$endif$$if(institute)$\institute{$institute$}% % $endif$} -% %Let's make titles better -% \newfontfamily{\titlefont} -% [UprightFont = {* 43 Light Extended}, -% BoldFont = {* 107 Extra Black Condensed}]{Helvetica Neue LT Com} -% \usepackage{titling} -% \renewcommand{\maketitlehooka}{\sffamily} -%$endif$ -%$if(subtitle)$ -% \providecommand{\subtitle}[1]{} -% \subtitle{$subtitle$} -%$endif$ -%$if(author)$ -% \author{$for(author)$$author$$sep$ \and $endfor$} -%$endif$ -%$if(institute)$ -% \providecommand{\institute}[1]{} -% \institute{$for(institute)$$institute$$sep$ \and $endfor$} -%$endif$ -%\date{$date$} + \title{$title$} +$endif$ +$if(subtitle)$ + \providecommand{\subtitle}[1]{} + \subtitle{$subtitle$} +$endif$ +$if(author)$ + \author{$for(author)$$author$$sep$ \and $endfor$} +$endif$ +$if(institute)$ + \providecommand{\institute}[1]{} + \institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +$if(date)$ + \date{$date$} +$endif$ % Make sections great again \usepackage{titlesec} @@ -277,45 +221,86 @@ \titleformat*{\section}{\sffamily\LARGE\bfseries} \titleformat*{\subsection}{\sffamily\Large\bfseries} \titleformat*{\subsubsection}{\sffamily\large\bfseries} -\titleformat*{\paragraph}{\sffamily\large\bfseries} -\titleformat*{\subparagraph}{\sffamily\large\bfseries} -\renewenvironment{abstract}{% +% Better abstract +\renewenvironment{abstract}{ \clearpage\small \null\vfil - \begin{center}% + \begin{center} {\bfseries \abstractname\vspace{-.5em}\vspace{0pt}}% - \end{center}% + \end{center} \quotation } -\begin{document} - %$if(title)$ - % \maketitle - %$endif$ - %\begin{titlepage} - %\end{titlepage} +% Title page +\makeatletter +\renewcommand\maketitle{ \begin{titlepage} \centering - {\scshape\Large University of hertfordshire \par} + $if(institute)$ + {\scshape\Large $institute$ \par} + %{\scshape\Large \@institute \par} + $else$ + \null + $endif$ \vspace{0.25cm} - {\scshape\large School of Computer Science \par} + $if(school)$ + {\scshape\large $school$ \par} + $else$ + \null + $endif$ \vspace{1cm} - {\large\bfseries Modular BSc Honours in Computer Science \par} + $if(degree)$ + {\bfseries\large $degree$ \par} + $else$ + \null + $endif$ \vspace{1.5cm} - {\large\itshape 6COM1054 - Artificial Intelligence Project \par} + $if(degreecode)$ + {\itshape\large $degreecode$ \par} + $else$ + \null + $endif$ \vspace{2cm} - {\large Final Report\par} - {\large \today\par} + $if(date)$ + {\large \@date \par} + $else$ + \null + $endif$ \vfill - {\scshape\Large Persimmon: A visual dataflow language for machine learning pipelines \par} + {\scshape\Large \@title \par} + $if(subtitle)$ + {\scshape\Large \@subtitle \par} + $else$ + \null + $endif$ \vfill - { Á. Bermejo \par} + $if(author)$ + {\@author \par} + $else$ + \null + $endif$ \vspace{0.25cm} - { Supervised by Dr.Mariana Lilley \par} + $if(supervisor)$ + {Supervised by $supervisor$\par} + $else$ + \null + $endif$ + $if(cosupervisor)$ + {Cosupervised by $cosupervisor$\par} + $else$ + \null + $endif$ \vfill \end{titlepage} +} +\makeatother + +\begin{document} + $if(title)$ + \maketitle + $endif$ $if(abstract)$ \begin{abstract} $abstract$ From c3122c66f5182c4a6a94755197c683fd91a5f51b Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Fri, 5 May 2017 16:18:07 +0100 Subject: [PATCH 13/20] Added abstract classes --- persimmon/view/blocks/block.py | 46 +++++++++++++++++++--------------- persimmon/view/view.py | 3 ++- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index 0b257b3..cecd829 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -9,11 +9,19 @@ from kivy.uix.image import Image # Types are fun from typing import Optional +# Metaclasses are even more fun +from abc import ABCMeta, abstractmethod +from kivy.uix.widget import WidgetMetaclass Builder.load_file('view/blocks/block.kv') -class Block(DragBehavior, FloatLayout): +class AbstractWidget(ABCMeta, WidgetMetaclass): + """ Necessary because python meta classes do not support multiple + inheritance. """ + pass + +class Block(DragBehavior, FloatLayout, metaclass=AbstractWidget): block_color = ListProperty([1, 1, 1]) title = StringProperty() inputs = ObjectProperty() @@ -40,11 +48,18 @@ def __init__(self, **kwargs): @property def tainted(self): - return any(in_pin.origin == None for in_pin in self.input_pins) and not self.is_orphan()# and self._tainted + return (any(in_pin.origin == None for in_pin in self.input_pins) and + not self.is_orphan())# and self._tainted - @tainted.setter - def tainted(self, value): - self._tainted = value + def is_orphan(self) -> bool: + """ Tells if a block is orphan, i.e. whether it has any connection """ + for in_pin in self.input_pins: + if in_pin.origin: + return False + for out_pin in self.output_pins: + if out_pin.destinations: + return False + return True def in_pin(self, x: float, y: float) -> Optional[Pin]: """ Checks if a position collides with any of the pins in the block. @@ -54,12 +69,11 @@ def in_pin(self, x: float, y: float) -> Optional[Pin]: return pin return None + @abstractmethod def function(self): pass - def pin_relative_position(self, pin): - return pin.center - + # Kivy touch events override def on_touch_down(self, touch): pin = self.in_pin(*touch.pos) if pin: # if touch is on pin let them handle @@ -83,26 +97,18 @@ def kindle(self): size=(self.width + 10, self.height + 10), texture=self.border_texture) - self.fbind('pos', self.bind_border) + self.fbind('pos', self._bind_border) def unkindle(self): """ Reverts the border image. """ if self.kindled: self.canvas.before.remove(self.kindled) - self.funbind('pos', self.bind_border) + self.funbind('pos', self._bind_border) self.kindled = None else: logger.warning('Called unkindle on a block not kindled') - def bind_border(self, block, new_pos): + # Auxiliary functions + def _bind_border(self, block, new_pos): """ Bind border to position. """ self.kindled.pos = new_pos[0] - 5, new_pos[1] - 5 - - def is_orphan(self): - for in_pin in self.input_pins: - if in_pin.origin: - return False - for out_pin in self.output_pins: - if out_pin.destinations: - return False - return True diff --git a/persimmon/view/view.py b/persimmon/view/view.py index 0e73164..95dd62a 100644 --- a/persimmon/view/view.py +++ b/persimmon/view/view.py @@ -24,6 +24,7 @@ import logging from typing import Optional from persimmon.view.blocks import Block +from itertools import chain logger = logging.getLogger(__name__) @@ -75,7 +76,7 @@ def get_relations(self) -> str: for out_pin in block.output_pins for destination in out_pin.destinations) - return ''.join(ins) + ''.join(outs) + return ''.join(chain(ins, outs)) def to_ir(self) -> backend.IR: """ Transforms the relations between blocks into an intermediate From b55758abee26493cad65d8b0bc56e0335928aac6 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Fri, 5 May 2017 16:53:59 +0100 Subject: [PATCH 14/20] Pin now also has abstract methods --- persimmon/view/blocks/block.py | 11 ++--------- persimmon/view/blocks/csvoutblock.py | 10 ++++------ persimmon/view/util/__init__.py | 2 +- persimmon/view/util/pin.py | 20 ++++++++++++-------- persimmon/view/util/types.py | 7 +++++++ 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index cecd829..ec0a7e6 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -1,5 +1,5 @@ # Persimmon stuff -from persimmon.view.util import Type, BlockType, Pin +from persimmon.view.util import Type, BlockType, Pin, AbstractWidget # kivy stuff from kivy.uix.floatlayout import FloatLayout from kivy.uix.behaviors import DragBehavior @@ -9,18 +9,11 @@ from kivy.uix.image import Image # Types are fun from typing import Optional -# Metaclasses are even more fun -from abc import ABCMeta, abstractmethod -from kivy.uix.widget import WidgetMetaclass +from abc import abstractmethod Builder.load_file('view/blocks/block.kv') -class AbstractWidget(ABCMeta, WidgetMetaclass): - """ Necessary because python meta classes do not support multiple - inheritance. """ - pass - class Block(DragBehavior, FloatLayout, metaclass=AbstractWidget): block_color = ListProperty([1, 1, 1]) title = StringProperty() diff --git a/persimmon/view/blocks/csvoutblock.py b/persimmon/view/blocks/csvoutblock.py index 198cb7f..aa4774d 100644 --- a/persimmon/view/blocks/csvoutblock.py +++ b/persimmon/view/blocks/csvoutblock.py @@ -20,7 +20,7 @@ def __init__(self, **kwargs): size_hint=(0.8, 0.8)) # Let's bind two together self.file_dialog.bind(file_chosen=self.setter('path')) - self.tainted = True + #self.tainted = True self.tainted_msg = 'File not chosen in block {}!'.format(self.title) @@ -29,8 +29,6 @@ def function(self): self.in_1.val = pd.DataFrame(self.in_1.val) self.in_1.val.to_csv(path_or_buf=self.path, index=False) - def on_path(self, instance, value): - if value.endswith('.csv'): - self.tainted = False - else: - self.tainted = True + @Block.tainted.getter + def tainted(self): + return super().tainted or not self.file_chosen.endswith('.csv') diff --git a/persimmon/view/util/__init__.py b/persimmon/view/util/__init__.py index be09402..46ac646 100644 --- a/persimmon/view/util/__init__.py +++ b/persimmon/view/util/__init__.py @@ -2,7 +2,7 @@ from .connection import Connection from .filedialog import FileDialog from .notification import Notification -from .types import Type, BlockType +from .types import Type, BlockType, AbstractWidget from .pin import Pin from .inpin import InputPin diff --git a/persimmon/view/util/pin.py b/persimmon/view/util/pin.py index 8654035..40e3515 100644 --- a/persimmon/view/util/pin.py +++ b/persimmon/view/util/pin.py @@ -3,12 +3,13 @@ from kivy.properties import ObjectProperty from kivy.lang import Builder from kivy.graphics import Color, Ellipse, Line -from persimmon.view.util import Type +from persimmon.view.util import Type, AbstractWidget +from abc import abstractmethod Builder.load_file('view/util/pin.kv') -class Pin(CircularButton): +class Pin(CircularButton, metaclass=AbstractWidget): val = ObjectProperty(None, force_dispatch=True) block = ObjectProperty() ellipse = ObjectProperty() @@ -19,15 +20,18 @@ def on__type(self, instance, value): """ If the kv lang was a bit smarted this would not be needed """ self.color = value.value - + + @abstractmethod def on_touch_down(self, touch): - pass - + raise NotImplementedError + + @abstractmethod def on_touch_up(self, touch): - pass - + raise NotImplementedError + + @abstractmethod def on_connection_delete(self, connection): - pass + raise NotImplementedError def typesafe(self, other): if ((self._type == Type.ANY or other._type == Type.ANY) and diff --git a/persimmon/view/util/types.py b/persimmon/view/util/types.py index 0cbc37e..5bee449 100644 --- a/persimmon/view/util/types.py +++ b/persimmon/view/util/types.py @@ -1,6 +1,13 @@ from enum import Enum +from abc import ABCMeta +from kivy.uix.widget import WidgetMetaclass +class AbstractWidget(ABCMeta, WidgetMetaclass): + """ Necessary because python meta classes do not support multiple + inheritance. """ + pass + class Type(Enum): ANY = 0.9, 0.9, 0.9 DATAFRAME = .667, .224, .224 From 4536cfdf334ce3ff44708803fe1bde466583688f Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Fri, 5 May 2017 16:57:13 +0100 Subject: [PATCH 15/20] Pandoc travis does not feature highlight? --- docs/Makefile | 5 +++-- docs/question.tex | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 docs/question.tex diff --git a/docs/Makefile b/docs/Makefile index 015bccf..1e061e0 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -87,6 +87,7 @@ images/%.pdf: graphs/%.tex @mv $*.pdf images/ @rm -f $*.log $*.aux +# Appendices $(APPENDIX): $(APPENDICES) pandoc --smart --no-tex-ligatures --top-level-division chapter $(APPENDICES) -o $@ @@ -96,8 +97,8 @@ APPENDIX_TRAVIS := appendix_travis.tex travis: $(MARKDOWN) $(APPENDIX_TRAVIS) $(TEMPLATE) $(IMAGES) $(BIBLIOGRAPHY) $(CSL) $(METADATA) pandoc --smart --standalone --latex-engine xelatex --template $(TEMPLATE) \ --bibliography $(BIBLIOGRAPHY) --csl $(CSL) --table-of-contents \ - --chapters --highlight-style breezedark \ - --metadata date:"$(shell date +%Y/%m/%d)" \ + --chapters --highlight-style espresso \ + --include-in-header question.tex \ $(METADATA) $(MARKDOWN) --include-after-body $(APPENDIX_TRAVIS) \ -o $(PDF) diff --git a/docs/question.tex b/docs/question.tex new file mode 100644 index 0000000..f3489e8 --- /dev/null +++ b/docs/question.tex @@ -0,0 +1,44 @@ +\def\question#1\par#2\par{\hbox to \hsize +{\vbox{\hsize=0.72\hsize #1\dotfill}\quad#2\hfil}\medskip\goodbreak} + +\newdimen\scalewidth +\scalewidth=0.3\hsize + +\def\xfamiliar{\xscalee{not familiar at all}{very familiar}} +\def\xagree{\xscalee{strongly disagree}{agree completely}} +\def\boxes{\fiveboxes{}{}{}{}{}\ignorespaces} +\def\xscale#1#2{% + \setbox0=\hbox{\boxes}% + \setbox1=\hbox to \wd0{\small\strut\hfill #2 $\to$}% + \setbox2=\hbox to \wd0{\small\strut $\gets$ #1 \hfill}% + \vbox{\vbox to 0pt{\vss\box1\box2\kern2pt}\vbox{\box0}}} + +\def\xdifficulty{\xscalee{very difficult}{very easy}} +\def\xscalee#1#2{% + \setbox0=\hbox{\boxees}% + \setbox1=\hbox to \wd0{\small\strut\hfill #2 $\to$}% + \setbox2=\hbox to \wd0{\small\strut $\gets$ #1 \hfill}% + \vbox{\vbox to 0pt{\vss\box1\box2\kern2pt}\vbox{\box0}}} +\def\boxees{\sevenboxes{}{}{}{}{}{}{}\ignorespaces} + +\def\boxit#1{\hbox{\lower0.7ex\vbox{\hrule\hbox{\vrule\kern1pt + \vbox{\kern1pt\hbox to 1.4em + {\small\strut\hfil #1\hfil}\kern1pt}\kern1pt\vrule}\hrule}}} + +\def\fiveboxes#1#2#3#4#5{\hbox to\scalewidth + {\boxit{#1}\hfil\boxit{#2}\hfil\boxit{#3}\hfil% + \boxit{#4}\hfil\boxit{#5}}} + +\def\sevenboxes#1#2#3#4#5#6#7{\hbox to\scalewidth + {\boxit{#1}\hfil\boxit{#2}\hfil\boxit{#3}\hfil% + \boxit{#4}\hfil\boxit{#5}\hfil\boxit{#6}\hfil\boxit{#7}}} + +\def\freequestion#1\par{#1\par\nobreak + \begingroup\nobreak + \advance\leftskip by 2pc + \hrule width 0pt height 1.7\baselineskip\hrulefill + \hrule width 0pt height 1.7\baselineskip\hrulefill + \par + \medskip + \endgroup + } From 1c0a71fd8b1439a356b10fc9e8be1f405f32cd7d Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Fri, 5 May 2017 17:40:54 +0100 Subject: [PATCH 16/20] More type hinting --- persimmon/view/blocks/block.py | 2 +- persimmon/view/blocks/csvinblock.py | 3 +-- persimmon/view/blocks/csvoutblock.py | 2 +- persimmon/view/util/inpin.py | 4 ++-- persimmon/view/util/pin.py | 4 ++-- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index ec0a7e6..8eaeb0f 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -64,7 +64,7 @@ def in_pin(self, x: float, y: float) -> Optional[Pin]: @abstractmethod def function(self): - pass + raise NotImplementedError # Kivy touch events override def on_touch_down(self, touch): diff --git a/persimmon/view/blocks/csvinblock.py b/persimmon/view/blocks/csvinblock.py index 22e0687..00a31ba 100644 --- a/persimmon/view/blocks/csvinblock.py +++ b/persimmon/view/blocks/csvinblock.py @@ -20,7 +20,7 @@ def __init__(self, **kwargs): size_hint=(0.8, 0.8)) # This binds two properties together self.file_dialog.bind(file_chosen=self.setter('file_chosen')) - self._tainted = True + #self._tainted = True self.tainted_msg = 'File not chosen in block {}!'.format(self.title) def function(self): @@ -29,4 +29,3 @@ def function(self): @Block.tainted.getter def tainted(self): return super().tainted or not self.file_chosen.endswith('.csv') - diff --git a/persimmon/view/blocks/csvoutblock.py b/persimmon/view/blocks/csvoutblock.py index aa4774d..bb901da 100644 --- a/persimmon/view/blocks/csvoutblock.py +++ b/persimmon/view/blocks/csvoutblock.py @@ -3,6 +3,7 @@ from kivy.properties import ObjectProperty, StringProperty from kivy.lang import Builder + import numpy as np import pandas as pd @@ -23,7 +24,6 @@ def __init__(self, **kwargs): #self.tainted = True self.tainted_msg = 'File not chosen in block {}!'.format(self.title) - def function(self): if type(self.in_1.val) == np.ndarray: self.in_1.val = pd.DataFrame(self.in_1.val) diff --git a/persimmon/view/util/inpin.py b/persimmon/view/util/inpin.py index 709429b..99f31e0 100644 --- a/persimmon/view/util/inpin.py +++ b/persimmon/view/util/inpin.py @@ -34,8 +34,8 @@ def on_touch_up(self, touch): else: return False - def on_connection_delete(self, connection): + def on_connection_delete(self, connection: Connection): self.origin = None - def typesafe(self, other): + def typesafe(self, other: Pin) -> bool: return super().typesafe(other) and self.origin == None diff --git a/persimmon/view/util/pin.py b/persimmon/view/util/pin.py index 40e3515..cea652a 100644 --- a/persimmon/view/util/pin.py +++ b/persimmon/view/util/pin.py @@ -30,10 +30,10 @@ def on_touch_up(self, touch): raise NotImplementedError @abstractmethod - def on_connection_delete(self, connection): + def on_connection_delete(self, connection: Connection): raise NotImplementedError - def typesafe(self, other): + def typesafe(self, other: 'Pin') -> bool: if ((self._type == Type.ANY or other._type == Type.ANY) and self.block != other.block and self.__class__ != other.__class__): return True # Anything is possible with ANY From cbf7204c70d279f7735f916b915b608b97e2a42f Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Fri, 5 May 2017 21:11:03 +0100 Subject: [PATCH 17/20] Refactored overriding property on derived class --- persimmon/view/blocks/block.py | 9 +++++++-- persimmon/view/blocks/csvinblock.py | 7 +++---- persimmon/view/blocks/csvoutblock.py | 8 ++++---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/persimmon/view/blocks/block.py b/persimmon/view/blocks/block.py index 8eaeb0f..1fa281b 100644 --- a/persimmon/view/blocks/block.py +++ b/persimmon/view/blocks/block.py @@ -41,8 +41,13 @@ def __init__(self, **kwargs): @property def tainted(self): - return (any(in_pin.origin == None for in_pin in self.input_pins) and - not self.is_orphan())# and self._tainted + # TODO: Check for orphanhood is not necessary + return (self._tainted or (not self.is_orphan() and + any(in_pin.origin == None for in_pin in self.input_pins))) + + @tainted.setter + def tainted(self, value): + self._tainted = value def is_orphan(self) -> bool: """ Tells if a block is orphan, i.e. whether it has any connection """ diff --git a/persimmon/view/blocks/csvinblock.py b/persimmon/view/blocks/csvinblock.py index 00a31ba..600916a 100644 --- a/persimmon/view/blocks/csvinblock.py +++ b/persimmon/view/blocks/csvinblock.py @@ -20,12 +20,11 @@ def __init__(self, **kwargs): size_hint=(0.8, 0.8)) # This binds two properties together self.file_dialog.bind(file_chosen=self.setter('file_chosen')) - #self._tainted = True + self.tainted = True self.tainted_msg = 'File not chosen in block {}!'.format(self.title) def function(self): self.out_1.val = pd.read_csv(self.file_chosen, header=0) - @Block.tainted.getter - def tainted(self): - return super().tainted or not self.file_chosen.endswith('.csv') + def on_file_chosen(self, instance, value): + self.tainted = not value.endswith('.csv') diff --git a/persimmon/view/blocks/csvoutblock.py b/persimmon/view/blocks/csvoutblock.py index bb901da..4975534 100644 --- a/persimmon/view/blocks/csvoutblock.py +++ b/persimmon/view/blocks/csvoutblock.py @@ -21,7 +21,7 @@ def __init__(self, **kwargs): size_hint=(0.8, 0.8)) # Let's bind two together self.file_dialog.bind(file_chosen=self.setter('path')) - #self.tainted = True + self.tainted = True self.tainted_msg = 'File not chosen in block {}!'.format(self.title) def function(self): @@ -29,6 +29,6 @@ def function(self): self.in_1.val = pd.DataFrame(self.in_1.val) self.in_1.val.to_csv(path_or_buf=self.path, index=False) - @Block.tainted.getter - def tainted(self): - return super().tainted or not self.file_chosen.endswith('.csv') + def on_path(self, instance, value): + self.tainted = not value.endswith('.csv') + From 01098962c0cce47513b45ffbbcf09e0a95d35c45 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Fri, 5 May 2017 21:24:44 +0100 Subject: [PATCH 18/20] Pypi ready now --- LICENSE => LICENSE.txt | 0 Readme.md => README.md | 0 setup.cfg | 2 ++ setup.py | 5 +++-- 4 files changed, 5 insertions(+), 2 deletions(-) rename LICENSE => LICENSE.txt (100%) rename Readme.md => README.md (100%) create mode 100644 setup.cfg diff --git a/LICENSE b/LICENSE.txt similarity index 100% rename from LICENSE rename to LICENSE.txt diff --git a/Readme.md b/README.md similarity index 100% rename from Readme.md rename to README.md diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..b88034e --- /dev/null +++ b/setup.cfg @@ -0,0 +1,2 @@ +[metadata] +description-file = README.md diff --git a/setup.py b/setup.py index b7adb21..d9363bb 100644 --- a/setup.py +++ b/setup.py @@ -2,11 +2,12 @@ setup(name='persimmon', - version='0.7', description='A visual dataflow language for sklearn', - url='http://github.com/alvarber/Persimmon', author='Álvaro Bermejo', author_email='alvaro.garcia95@hotmail.com', + version='0.8', + url='http://github.com/alvarber/Persimmon', + download_url='https://github.com/AlvarBer/Persimmon/archive/v0.7-beta.tar.gz', license='MIT', packages=find_packages(), install_requires=['Kivy', 'scikit-learn', 'pandas', 'numpy', From 4845b1ad952db4f4e4839464ead148c5614104d4 Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Fri, 5 May 2017 23:56:19 +0100 Subject: [PATCH 19/20] Pip install now actually works --- .gitignore | 3 +++ MANIFEST.in | 1 + setup.py | 6 ++++-- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 MANIFEST.in diff --git a/.gitignore b/.gitignore index c7f5d98..bb0b9cb 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ dist/ # CSV Files *.csv + +# virtualenv +env diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..873f5bc --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +global-include *.kv *.ini *.png diff --git a/setup.py b/setup.py index d9363bb..3859973 100644 --- a/setup.py +++ b/setup.py @@ -10,6 +10,8 @@ download_url='https://github.com/AlvarBer/Persimmon/archive/v0.7-beta.tar.gz', license='MIT', packages=find_packages(), - install_requires=['Kivy', 'scikit-learn', 'pandas', 'numpy', - 'scipy', 'coloredlogs'] + include_package_data=True, + setup_requires=['Cython'], + install_requires=['Cython', 'Kivy', 'scipy', 'scikit-learn', 'pandas', + 'coloredlogs'], zip_safe=False) From 411394c64f399a37169f126072f6e7681404bbcb Mon Sep 17 00:00:00 2001 From: AlvarBer Date: Sat, 6 May 2017 11:53:51 +0100 Subject: [PATCH 20/20] Updated README --- README.md | 50 ++++++++++------------- docs/images/final_aspect.png | Bin 0 -> 66940 bytes docs/images/full_use.gif | Bin 0 -> 3453073 bytes docs/images/fully_automatic_workflow.png | Bin 101140 -> 0 bytes docs/images/type_safety.gif | Bin 0 -> 109087 bytes docs/images/weka.jpeg | Bin 38509 -> 0 bytes setup.py | 2 +- 7 files changed, 22 insertions(+), 30 deletions(-) create mode 100644 docs/images/final_aspect.png create mode 100644 docs/images/full_use.gif delete mode 100644 docs/images/fully_automatic_workflow.png create mode 100644 docs/images/type_safety.gif delete mode 100644 docs/images/weka.jpeg diff --git a/README.md b/README.md index feb55ca..3839248 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,27 @@ -Project Definition ![travis](https://travis-ci.org/AlvarBer/Persimmon.svg?branch=master) -================== +Persimmon ![travis](https://travis-ci.org/AlvarBer/Persimmon.svg?branch=master) +=================== -Problem -------- -Machine Learning is a multi-disciplinary subject. Because of this learners come from a variety of backgrounds, -and the mastering process can be though, specially when some of these backgrounds don't have strong programming foundations. +![Final aspect](docs/images/final_aspect.png) - +What is it? +----------- +Persimmon is a visual dataflow language for creating sklearn pipelines. -Approaches ---------- -A visual interface for programming could help easing the steep learning curve, focusing on the methods, the intuition and -their connections instead on the technicals details of the underlying library. +It represents functions as blocks, inputs and outputs are presented as pins, +and type safety is enforced when the connection is being made. -Possible Outcomes ------------------ -* Greater engagement than traditional coding -* Similar engagement than traditional coding -* Less engagement than traditional coding +![Type safety](docs/images/type_safety.gif) -Each of these outcomes can occur for the same project based on the user background. - -Experimentation +How to install? --------------- -The ideal experimentation would include trials with subjects from the following backgrounds -* Statistics -* Mahematics -* Physics/Engineering -* CS -* Others (Business, etc...) - -Trials would be based on -* A/B Testing based on different interfaces paradigms (Including no visual interface at all) -* Focus groups with iterative feedback that can influence development +If you have pip (Python 3.5+) you can simply type + +`$> pip install persimmon` + +For windows self-contained executables can be found on the [releases page]. + + +![Full use](docs/images/full_use.gif) + + +[releases page]: https://github.com/AlvarBer/Persimmon/releases diff --git a/docs/images/final_aspect.png b/docs/images/final_aspect.png new file mode 100644 index 0000000000000000000000000000000000000000..574de3c282e09c4fd9df9baf43677173ad3ceb63 GIT binary patch literal 66940 zcmcG$1yq$=+cvt8?(PN&K`H5O5Rg&v28vne)!;y6zRCsw{_zMurA~Kro-lORGa5@H7y}17{Q@@SEJB zHD2%y>8+xiG~^!kC%qvz7W@X)R{pgE1cHta`wIt2N+AKiM0R}kTn2dw5ebce<1%*$ z0Ro|cJd>7q={miW>gM=rwc#!e+KIt*+!xL9o+cU&t_?@6+1xA!ZF=jwdz{5?rSoZS z!@N7I6N=SlL)C6WfcmPo3=ZoLUxkvk@7fX!sxO1ZyHOrK{Lm-B)bmVvpx)cNy{gTpjg8&k$j1M&3;wZHKIFcx|^dZdCoCZTuGgF~c z4i4$6K>=;%JW>QQwNigxK&ply;UoC?fnCTWQ!6vyKI8K5#}a?NL@2H1-)|hCo-gaI zkIlay3VT0)9Ih=CUr2I)C)Qtgcz1#;gNq~M{GU4-jiJH`(fo09|LC$UpI{$f-ar4R zWIb+C^h&2G<`I2cOrh!n$n;~P6dsa8!xE|njW>C^INdLD`&lw7!96N3_QdAG`U)*y zzS3~@th)5THs}mbRqN8xUNGhGo-ocxuUGKEC1Wy_RI)yXcFS# zl97eBJl4U(>2q&o%BS#7cs-m_Q+#DmXkWzq40Y)K+4Dh%&E-;1Obv9 zyNtW)EY(X)mumoSG}ivM%wVE$3MDGIIbd3Q^O$_1P~wdR>o*ppT;toqcdT3N6B$)i z$V*F0ze?@!t!tdz_pjI`{k-mG)u#K+v3ZmmD>4>q3#E!)F2tB637a&VKNh0k^q!%yX6cRm^XD=ais;6JspycrI@=bbsp@L} zzW%;e@7tqw5)u-hmZ7Ncu}qv|e8kylp5fD5ES?T+RXBu{m{1$APzP1#BL@OK2h5i& zgnhy*ijfgE`2%(9Fs0;jv#nJD119 z(<8nqm&a;vbTJFYx2E7OkCbPcL>gtTlo(?rX2uaA8=ITJ7|_?=8!v^uV2VjhjesxN zlXI6vGVcH4R~tsmVX`Oed9oD5{RKx-@?B^6rj|n+OFsTl&+rK6Toa18Nx7o8#S@KR zOJ^K4BsXWj;Ap|QDZQ6LJVHl1?1`c8{+SqcKJPWNZ7-XJ>s*J~^w^Cob8gQmF=>nC zo$>pOC3TTc3JluX+Ny6}_|+sPmQELPU}2}=ey>}`$$!|knl5K-4D^cRlUMPJvwnMb1{DPnt%~WbB@23Co3D$LTFeE z_%Vf&#P;=Cg(1zxt^)$hnK|YJDYcVI7Pq%2SC%i2Igk%!nm505&Dw9v*56I* zr;nP)d`v>iRu54;J%#wJv1%HWX_YS5ZXcZKW5Yqn$jN{WMb!H~pm4vX!DRA}rahRf znkOB-h5jn&iYOz?N9x|^%Bl0b?+4cK^sFFg2ziH2bY~d30UGIp1A8Z^kyDlGim3#AZBa~sg1KNjWQ`TH_VItZuy8GDyo@tz~_GIh`^twHy!TCQc=$>D?TaY7s6 z$!`FQfv`)L2^;zYrD~}tMoz^++*c1Pzp`&Zv_RW^NUphVB*-?7Pz;rbiqC6Q9>hNl0AwU07LcBoN_IKGVR3$l3eL9qtv}Rqmd9DrxL08`QU1-X~Fa!(vx*_kaB3&aAM+*Ym34 z1W&D^?QL0Rb~ffP=P(L7`mvVlS|91qX02iQ6a->kNe0|nS67?lIb(ZAha?UHbq>k! z@H}b+Bc5?NA{2USTI-3})ALM~Sw}I3nE=f{AfV+PSDPiTRJH~!2^33kTF8(q(RYNH znmTA+PXy%FadS+Cw6G5m@qQD3t>y29ExbH0`Cg0GTAOT*n>&~gSX-;e%&ZmM{#Ckr z)m~c0tiE_`bQHZ{Jk;Oc)zQTTtXpA$fx&J6QDVRG$;k;FCnub7IcY;MpJY3wRjg5^@qMG?HgF`}c8gWjXoXkLA9-bNw0XLCXP>}x0_~5CrlANO> zx1}?=be;S?V~nT-qc~e^R#g>oJiESxcN!ceWh&Tlf3J2BVUzd+?8m&3T<0e#BYdzNDUsy+x*Vm^G{rsdOaddTP`}*sC zXvv#B7k}f9pLC{`f-g146&5Z>T@HrG{V1a=%<@ZrDM6&QiZt@$Wf_U>YbekH9zdZ; z+&tX$E)tB=ot_HqIzEs99ZaY`c5CZ+_$5Jzn|>NDo#l`z9m(+{9EXDOKwGDWg}nF< z*90Lo{l;>an=AxudfgV)j~p>Ib?x9FIOODh0d6&3LNvgV)(7>aP2`AuS{}U)BWCxd z!S{3)hlm%9XME2jgV4nGaM;XKJj{J~x#QFQj*BEhHs$69ebYn#3X94e{;02JiXkQj zmxBzmRI9O;T!E3=xsH-33=u?YT}nabaWs?%f2=9FA1Oc*5vtEFt@f@jSH6!YMy*u) zd8u|0Sbne@*dFaS)3`*%%a@*^?X$r43#5XoFGxDUzjWB*;iEH}79d%}{sYQSmX}v_ za)fz!^<*tAF*1!ZX=8h$6B2w%OF0~!%nU21hsL=11C+8Z&40X*^I!s5(zq`H3xa}; zEeDRaLYuNsgSED{f`o%CCLw{QXeEJ;_bC(!Sb}6mbKeOmN1~F~=_?J*rGh2|I4%jK z#BlabGORnYrV;@!BPc{pT3Vcv2uY2AHkNbk1?^gMyr4A4+Kb0)Ts0Iv-3clm62dZ3 ztm3iMhH-<(V6V`uIbScD20_FPtkbw^L|84TxXCcL*e2QxI2M1ezlWnXS5bcE%gBQF zDy|ab|K@;Wr;X9`YpAKPI(~>n7*SSjEm10^?uO~Uf1~F9d4{tDigFsADh`4K$syIL zDS{m{a=)wKkf#~xH!L-RY^T(FYLa?Le{Zi$?vGT?G&;`7?Q0t1PnPR1nAiGtU$Czk zZgHS+!8s2PB$THAGiTo37*-0khZ58=&)UR^12kUeJ>a_Zb3`=)x*6L)m*apJSa!|aFQ zuZM1Sjkp7`yQE5-@&sjnvaZ9E;-tUKgGl^w`u)aF2PVg8Ss3xmD?>Tc9&lDo?Wh*C z8k8kX4FKafp_S_LCnxT^Qo)H;^LBi7#Ls^M@UM3W57*jST!^J%azpb&`z~Lm%2GBbi}~; z3WJ+h4+&CH<&vHSJ%IDlTw~>igxDV9ihK6 zCd%>GIyRS~7BLB*I4q$f1do%UJM&2#6D?#v?__g{#YF2zwomgOmvr>KHWSsa>PyfU zVeCZ>=R6mty_#My-Q>S?Bb^a&5Hb?&nGt|&Tweii!gFZQi#i$|hl{Us%*TyqM0NzZEjEPUC2b;lzHjrcr=d`N~N> zH?{_9UU8g|SDh||y;7#`VWElsj-~SFwv@$PIBK@sx|Ua=dzRGPq`YZL_b~yKM|}MP zaeFYKY3)@?f?m{b-H*cwWCZ5*xj)DJVuCN_T?xY@LA2+Z%q!`^|M3Y>_0-nWnI-Q?lHM*8K;eys1!{_w!gP`SUdYOt~Y(ylqSBH7UjX1 zIS(W~XHD4Lg57g!^Ds&lU*K1nsa0E<5mWsZI{FJmo300tsfvo1X(~-Zz5?pVOQw|F z^CyT|Zh6}gCpHdZm)Mj0;@g-cNSzNgvf}E6JtYqsFOS^|gWTrMg_1a_LrYc!*OuEO zVXHP3=|T+YFh@<8>1ylo=2~<1?xLQ#?EW!%I6ctCQY9ztAGO6Z>l$?_zmdW`Y3mal zn-(vTyM0zS1{P4LRikuut>c#6YZ@@N6obmF^C@U!gPEDY{&B+@nVF!z#~V4-(Sjp% zB03YViFCm_8)(m?XW%NnUvQV-&NC0)7WIn0SeD**`b8GZZDVKCYFlZ1N)uV4%l zEI~7+pta`cr_Z&mm#I$fc4yCEFU|Drz213HXB71{!LAjh*QA|yo=CLllspOlNOe<$ zL4CcQeDg+qr6K!j*KDWfL$4Ki3v!jV^4KLzox6E)t}k9I)!iaeC-l6$ zNHL;ow~_G)*r!%fS)04k5jDf6(z?30)t2ikJh}S2D>mQPo%OBKM6q=hKQW?#hlcp< z?NNP76so${reg;kx7Z)c?UuJ&CJanlc*?G7}2U!wt9 zHN6jXm^6B9B>H8>ZODpBbNy9BhTf;hGt4ekBT+3>=uPLWTHT`g>RC+nCC`_)#k(UJ zO(ots>t|)6QCD+~K6aO(r#&BMpk|FpB{NhJ4p#}CIuNi}!-3f;2+b=pm$BamGWH61 z#jkaI4h~v2-H8V#ms&3co3{B`GK6GRK~-jVbj;OM;^y*F68ozPXOgk#%|RQejaml1 z?~c_lwM&T|7VhuP4Y|q6Y!*Zz;*ydN_Uez72?z+pv(=YIvK3u#Pbby%^dfu0OB6OT zK7RV-FSK8e@8;&F$`WU4Y1!W5hpc-uQ)Yx5NhK0GsqYO{@|tm))D6nXVdUoKmQRE3 zTIjb0Vv^$!5(Y4(dE$|hlA4;Ew`MEGbG$lug$n)ptJaD2dwIEtsExICXI7MG=<@R0 zsA`0^(@FiP=gGXZf`Vj(goLhpH6UfoY&%?j{D?gKLrdkc!^zFV6F{+U za1^tmCE|H;@T#VUn^2XRKCL5^J1^?*i+akP4rHB`!D^~{uWm^B0WwDCvG24!T& zTm*Q2!>&k5J&y_i)bxIS($+=ojRAojAG`OZ;zK5;l_>8Udav7U{j7`(xG1qZ{?BZ> zWG9V$*0aI8GgVQhgOiso;f%OmImQT~nmRfZKdfc~{rwSkrYq5BeppGpdPVrda?1DS z=7zHder0!{bF%5qiGYYmq4#Tcw&C$w|HVdD)WO&bm5j>DSK7u8_dNN#EV%au!VR{h zFQ?G7tR~bfvT~JETfw<)9qq$57t&16)>4sdHkz}ff48cCaCg1G(!-P{4GQkY>$!cT zlcK^xrRjTMehw*uPH5O7CpZ&@ub;lWLGav4>J+ai!x6mG|A{wHp=Y}XFBjb89ELS3FC$-RZD!-O2&iqQDi5PFd z?b`eP+`D0Iw*V^YV%bztL2!6@*gY_C_G{t$``)2nzcxlLQ5e?tE={ZXyP$({!7xSbXACe6U*HUll05Xc;QF<#<@SU!aT z$@})rS0TG~tv}grYwXc{&jJ3i&|Wn>Fzcq9Rd&NlEWI(kdRN^1{QTvd5`@Tqf@}+;go_o)GQ(dB`Dr4XMXgX z%%8c4QY*5su%wThmsw76jg5`Trv(KC(Tj;umo%JBf3hl}hl)0lai+;zxzeesCLkAS z1pP!CRNHx)+pDIUuzpyxl5rTD=8Zej__?H-=+6!!zIQz}RTu1`N!F3>EIH8y56x3G|!Uf=h=_n;8-qJRY*EDC-fnJ}VfO-A>3w--0ZgF&}K zvUH4XMW0zw9uzm6Y1iML&6G}AvR%7_w<`rZ13I3P{YYhb`Q|y7g@~IQPZVFDq$IMP zsdD7qUBA&5b#--Ha48)V6EbLeVBVE>cfz!p$vkvEAhmmcqH^yKyZ{cO=XofTBIJSv z9Ql|e612S4+r@RT8-Ruw?EYeQyq=_mg@t&3oy-2`<V~IaIXhEhl$!Tgk1rY0jTb$odY8%--yJsd)l3fZZ2lgIKnY z@sD3W2$1|>)D?*c)jN!j@)giXtzwVuQ3ZEs@Hlr*flpbXvP_XXqOh$zx>iNW!Mr}= z{pIleSg_@{@1f(UfT|F74&Ie!?>VCGIOsP6U&75%+GNo*M&}sx_%9Zi1YT`%t-t5B zn)V+VQ5U{F8RhrB6Q=S!kl6e{Vqn{NH)GQjVKwt3qpS?~e*gYf48(Wj*)Az;5r4jU zSNPrC-Cy-?m8 z#ibx>s~Os?bB>$@5tXT98zh4+5YEd?2B~g#OvKtc!iZrP z(K9e~yk7vtg9xZjq`(`C{a)Zpx^O34l&|OI{AF}=wA#yW{~HCiSC(_Ngupwf?(WW; zf-2Yn7HCmigH)hV)VevE3%&AMfSzaM<)MI;Nk4mr3TPe2;niRhXJ_6o(6iS&zslgt zjr)Do^G~kHp_DJ^$23R60oD9Dp=saJn_lcBor!jH#T$zjWxX*>!lk9L9bn z+&CxF+udz@_&9p~L*$?zGWOfKS|`_wrJ$Jjc;rMSBmh?W=jSJHBttDqYg#62?DJ~oVyY-pAFVs@ZP3i@I&YS5mo!m%-(N43 zfj9>C{Q6#?bT6iF0b+Zyp$1SnT2@xYE6b_x@ALBVe3Wz1uj=uF#k;mvqQoMDgHd1` zqau3wkN_=U(!s}Jwrg9U`HfYyxB#@m+#A8Xt+5{SEM=!&nWM%avmW}Gg$1o+^2zx{ z)w@j|y?AW&7b{5}h!Q9pK;AfYpS5kngoA&} zm1t0@O&dywgoO0<9vO*RiH)6I&c&t55l}=|*ViK401*SMQq!QE>rC#jDWKqD8$Cez z2}_Y<6BB_aLgBJmz5BNFYva`@r=JTch}Z7+x?P0;)Y81~buI)u-RIArS9@M^&3oTN z`%;C7K`;WC`qjy1UVeVdYHz&St5*TKb?Ri#tB#1rBF>+Kb!&!2N(-tMq zdIdejpjX_PSy^SyyV^VR4diigaj=@&VNfIpB>8tHCiIMqNWJmwU5(J|1MrAT%N=2^ zYl$YpdvxABg{i@rnRGjIb(7nitMi>uE0bzYWZx41VpV3_ivz>HFCyeH7Xip*RFoV@ ztyt8ek9EUCGJ_KmNMHv!aya+vSFni3SvAGNys*dFlu7miS@*HQ0Ox-FF&3;Ah20%i zi#qR42kd*U3ysKYzI;hAQLGzAtmg^`ih0mCoYX~$CsEir4G<2BUKbK*dUsVymDjo4 z*-NE6ywCH8Uam>`wJbiZ5~5ZCDZaUGzcGxx@!|p4`D(+{^u0l``&o-Vss4q#qhu*X zkj2Qz$zfFoI3(Z-zt`96>Q!3>j38*X+_2Hs%LMNIQysu}}XHy)q+uoczeD|nt zD8e^yBpo;%k)JC(t||s?(Oz7qUy=Ww*He}Rg$;-G0T_%3Xr0FT7TjvQ+AcQ}ZEY5S zAq`Iq;~m+ma;(*g!H=w;q<>m@&M-hvGaxqhwk*B47zR%9y90cI>xOvCz z`9jp}tWJApr^3P`0!ND&!xjxr6>@nCx(XO7 zIp5&XP`q9U_+yEJ@mfdUIjD+?N{|v`+o+1zZduXq-|s+@2bIzE^mMv%I{?HHIQXmP zXE=F?tY$BL+uv5wV3;?-c1Nei9udTvc;zuzji#uG{;iF^?_^N+Jex=SiTPn5E@L^R%Fk>)^7vgT=XrdZ-{rh! zeH5ioV2Stb_OB`%>d&B_sGDPZZi3~gr^XT|8unBW#j#NE$9=;-lzjt)=oIMXYQKp- z6%(p&9=D5n;>rU zrM}jBoejsiJbul98{YsxALbQ*i=#3>2f7Y%}Fn&=a7>2XE8?D!YUDrkjp}oF{L7z%2evm9>nC2@@I`+CgmEjkNY! zQPsSpnb{+vC))m?Fb0hUW)K$T$F(h_E3Z7J_cl$Vb~}h8J4^fVE(5dsWT2968g-Uk zImcYz3#&TM_Bj4|c)y43jU5yoj`3Kl6rv)0hycR(!OX%P5x7@}Rn=VJ4j|;Y+sRut z4xIUHK~KH0Y1be%wy?l1g0XL*ol$b3zw5l0=WqQTp)rvzwudH^4n)9kkG&dX@2k-? z5CHiW8_wq)rlM$2MpB{4{cH9q{L~9rD)4S=y~pD1?d>!?JcOVE#*x9Lq@;8`?&q^x zYDENTyW{=O0g(T{4%@6lFMe*%bDy4`)>w`nyQ1x#rnL27O01W2>@S?2owb^B*DAr; zy8@C#`0?xS?e9MgU6P1wp_*+%YsA*^fl3Q0xY-tHB|FE7D1d-gM zp;__SGYJI+G+0ipsH_Cd?K3GTBswW6v_F{-kb{c{OKrazp+c}$>~wqb`sS{3Qm+m8 zv=r5z<7017AA__Y;ILNRzMT<7CF$-i_%Sy2*8I#_iI0Z|0DMMwo|APLH8nLT_M0!r?6Frno8>V_h1gsvm<|F1kzmzr_3n=u7@CzO7ZoTRG&N}t+6~a# zCkQw&*4Ea3^%fBk0hG^3x$*#Ux_!-T?m}Z^KK0Eavb>54_Vh{&&6vVQR}^&+4a&v* zd1KJ8Us@C*?qe%1wbTod3mo2eo|_j~zZ2VzPfi?7E44S%+8nBqp;TqcDk^e-AmsMl z6kX2IC>S0ad)P6)AWAWV@wG?47&PVwPFW-GsUspHfFhy02Q`H}aAe^2m88qS%pMhX^%UMi)&ppQ+rt9)IeV4dKy~VwGRRs~R0O!Q5z|*3d=n2S3nF)$ zK<6qt2)E}+xK5F~!fTr%b!y6AGpDKS(pV!rG8#H-!&OsdC|6Hu^=qbawuHXEV+Ja6 zPO;Co5bo2J#i`q$*rSdrvN3sZrQqJ;$Sj#?UuxKfR8dtWRWiAfyl}(FO&0MIWdjr^ z7t@oCft{VQ%y9~{Ue~)+E^GMs_%X4uers#S7#J7^9ifDJ)S`F2`ggvd#Q?s92x6?h zVWl<2O46Y62k1yPof$c=rTCjS6c9nAn(6aX%%Vf{N`w^!aQToKtjIKY~s;LHupa^_IIs1N50-qgu_ zHi7-dQee>lA@c*7XDNVK?_f&w#Jyo*K`bQ!`@EG=)#Txra&(=^Ue`q&tEQ@^X3+J1 z6EzH&0BbZJ{DN6GhXvdeV1Ds+=^1ytCJP?!?f~}0odwk*fF-H{`L;Hg76mJEE;d!X zL+9u9D1@9b0OrBI<1AF6{iN|Q!bTpOv2Juc`_x0J=Eq?QZPlRx489hr-uw=jGO+h; z5q$H(_)N;Kvrm9x12}+Q)INv|M(2BT>Yk}0qnnOwU!1_BcE`|H1NaIYT!Z_br%~7K zR5r*9896yfQNl+kF#l!MET-Y*C8}ER5)u>=QhV_NKDLK|qj;c8lIFSguBP2wgGUv? zBqBP|Vh8d0g-9{w_0aaIzPk&xC2zsPEXP=aMV(`CXr%a8#@1~&8vu>K(80rrH#RNi zm9@XEZ1_kitsW*M1SP@zV0}SLTRRk>IoBJzyQi)l9_h!SB_AP?_t>yJ-2{yFj}w0W zyu+pGTG#BlahYmIpjm_+Yn_5)Y*tj8ukr>!<5Z=X=)Q|fRvd@UgC#A$FUm;3pV_)<}KK1tn&4d?{H{Tr2}PbAZ`r z?2iLlK620`n=)<)elyl&pr38nl+Lg$3Hl{ZYSWg#9ES3Yn|t0Ib^)l0oX@(QSl^SD zCkHUrh5AiYa#2(=ppW1MC@?sbbkJ;oOZ;WCT8;lLJdPuy!RL7lIG^;twE}%8xt38Gz$u z8?BU_TL+z08GwIM`0XA{>bg(@hywvUI{?n3Mp6zkEFHd*wJ%CMX$#*RHRQ$=&wq*a zXzlj)mf!8@;nDGNnca#k0Wq;u{>$Z>^)Io?IFYSBAdKY|7J?424Y*LL{i=fJaq@!n z+qZN8#&0ql&XnPI+9Ci5rrp`jYaNf>%4!g*vajGlTObVV{xMP5!aiK}4mL?4{P(vV zX!)_5R*9hUeG9}@u;^_&`kW62M#12};kh|VRR>UnOwY`~YCueKUim{7(3paj1-5|z zYLmc$0p^N=pW$39f(*PCRE>%!&!zHJTP-;y@?VCV3Lztfjgw*^#n(&?RC`eMaq59A z1}YHG?Kcapz%x()sB?`>xU zXvFhX5&L$r1}SU~fy-4Nc9O$LolU~HfPerX6YKya2wzW$cvn@qN#q%qQ76Vr&;kRF z2TsIA%y{;)OYH7Lcenhk=W#z^Cq#(Ybb^7g7)%!Hjs$q;U87Xo0H2Qe{5f#Ox(*YT z&p|A8-ud+buxTj1=he0QE3-8YwChOg4)5Q*Nghn-MId#orIPNDmMqe6du+l%VhbAi z->a*aeKXCArN}AXu5JLFF^Z)6es^E1 z!FK7vK$=(-01D%Gg^qkm9L`jicY3p6CZ=ao9h`|$rz@?QivnVPoHo*Iy%Cj@&ZNltR8=$tO1O_#Geun z-3d*WxCGuOgmZHsoA+&OZ_ACYvdSwf`zjas0U#%wbhJUaM4crLFhn0Z-pVK{CRgl6 zo+!7A?eeMnM+ew5wcy+`qi@^kwia^ zAB_x9)`++mGSc_}8ON?LBg??5LzmRbKwnZ^B$5)IIx8jY(3qX)QC7H=hrN7XQ0RY9dv8a` z9+6lxoa7TZc)QR)*gp7D(J8p5$$F{MnSiWEOp84lrO~J2rN;|4LhE|XVx9+Rm-=>b zn3RN&Ay9p4Bd@rDbtB4S1J(@v+Oc58c(S1SG*y;NYB3^r30*TZjn17-ptzBjV%A)t zGp%+B=<@5#z-o&8;nmf6`@E%Ao48Rb;#zBqG9u`rShlaOf)XVPCAoChvydB`$y#)h z5MF;Q{9WJal_>LjbAOp{#qL6BC^b-5J7U?@y^WXsyGFTF_bGQF(KAIFL%zpjradKO9MlZ?WI1rnu_J4F~Fh^P0UAvX2Na5;iWmC zb`fj;&`CVjt2b5nLc(aVg8J2{nS+A?zkNKUqh0Kb6+zw_~q{bz7H(m z=UApHA(o77$2qU~q|cv230dQxd8e_KIFc4cpE2R9Rx@J{538v&ICeQU0vk`y(Oe~d zEIn}3qAdv8(D@UF+=m&qYE+P1N&glNN$d$`s$VO_pvlP?Kr-w@H4?qEdnswsmy0!k z=#n@C{#}y~8e@mmIJkHRFVk5yRDgLjK^(nJZ-5GBcz$BZh4MUT8YJY1_72^bzMosf2B1MMBgnEhi}U`*!Mlj0^Yht3tsf4^dvQZk0|B(R z#Tge)z=x_7Ho&`yq^ShXit3pcD{nZgQ1r2^fX?F%A7h<)NO5c2M?%4 zi3+9)XtPeIr}9HMjImj-ywe&W*^-DTbVi~-LmVF89uPZ}PlX@zI0c7>_-hxv?dw|V zajcjYaJU}p*#*Kx(oND0zLT<4l^Eyw1sic27wT5JvGB{%h%fw;wuW0R@mQeiSNf++ zi-Z3*zw8hQyo}u~nHYFTabs`+Y4|`oy`}~x8?>*%cxvog@`Z{py9FrnOfBm%Af`6^ z;y}#@NzdOz!w7_ndJxcfa*BB((a8Yp-m`~B*D6QeQ|I5-+H?&+ zi*@9`-94~9K-JdN5By$YFyQM8QDY1;D6cJKXZhqa{y-)TOY!a7ujVyUW?$cVG7g4R z?}l_ryQ5E}2$X+?S)(Zx{z?{+JgAsHKYngxZDI}V&dxdt@Qa5|y&|G6#oT*J09M6f z8F*DQws&x@dfgFrYHDVEdNHfd;AjFwpGKv4wRu=UX2xumJ)}OS)b*~FGZ2Zj;e6Ys zUrsuD-f>VFGtQRH%$f4zPJ$XeN zd5kRClsb=!NY#>^hyP&Q%>T)_3{mVWGv79uEk^oMoX-ce3oJ*jZKRCFHP^{sY28p z;G(kquJWS(>x;3m(JyHJVvF|VQ2SBLf4u~*WQ_X5(>`t_m;yflnm`)By8zv`RuL~K zUIG=0?A@|tfms9M>m;f8;K26b!*;2HanSu_7AS_nW#NW|=!?+WaFYRXcSz#qQyP>9 z1ZarHIfFhxsp;JW2Q=oXsoL!wT@o1=-?*O{t-J?;-{*g=qOtMk*0&Nt8Z0`V7%+$< z?&87@M6f^#+h>fvjK5ruh5(6E2-tj@)55_4@iT-3dcjZ62;q?Xv(q;lnHiFds{D7Bw!*A`>+s+8sk&ZsJb8lI z(a`~xK&_d*iAqZ!1!i(UJAJU3oA%bgfM(+qK|&lbpGQYWfbC9TMM-Q2qhKJ6fhY?~ z=)kf0wzf7H6ah#CkC!hQ{goPZI5{|c0L@!bQGu`k2L{DJVP6f3*l<~Tb{3Sx9T!>x zG$5k~XBeExj2VU03UKiJmzm$c;}L}g)c8g}^HR%r$pXHBsvg|aS6hWZ23!pAf~@j# ze2s!QV?3@N2N^9b5`bk5&(7`~C$(;)$a{N>fzcIqW|YJSK%oPEk2eS2dU=V0S*7T>IK(&wn79bQJ)l9qXpp*W$5$Crm6VsCWPrd}+CK$A6YEZ> z$LNO0?|hATlfm!@&{`ltqI=%`sxZR`9349F+v#a-(4!DrSy@4R0CEJALv;@h0>l!= zq5|36(EL0W1Q2cir?3NPHzefU!4Mgsuh<^H`GEnbR~{Z7*UjvBKog)rYTgc`YkG+go8n| zMGpoZAqQIpC9sp@_quUy_H6S6hW)jq1e+y}CGTcgYpwYMJUB8bWo0Z!K}wh=Mn&v) z%;b(X7GJp~3DVxxwekU(3Ic&G9Af)Vk-<}#&<}{FAk8Y?S1>tL zuahk5XEXKpch@ngsSze=P$D7c9dW>~eNuQoltkseK?}r|i-{&*S^)Ef34#jH_)&m) z9LT{6^*u=@^D>YQw4Uw$0ZstC8y=#dsL1KErvqZY!pxgm$48NrLY)Tqcn`sDclY%n zK&0j5=tV>*b5+thYaG_UnrQ*XO-f%styi}fCNQA(x}XKmw_mB-1ONh48=Edrx*vi_ zhZJX%z>bor4S*#bhkhQdN^?TxG*QZzUUo2P&!^9ym%&Aym&faeV6W+fg=fL;?D#}; ze*KfoX3>M5zJlT7KxEhHebeQg4sfL5;bE;h=O@nl^ASIPDgY_u5`cK5w6)2A;u8dG zFEG6e6F9=yYk(mg0)2?l-fRtMEMOW(p!$H}7oLD(hQX9D0f$!6M0y1SBV#6voe z0j#8hK1$dZ06WXTjwDuz*WZg?{>C4hoP?=G!L(J|$>wOo8a0>O5<#Jz!e6W@q!|V) zg5%2i_6-dZ{pAZ5fQ)m~yrzvBKy?igORIV1GT0KB=mu~!v?#3x&4g$`nF#fx1u}u9NTEG(5atHHh=c(Ua1o%KbtkuFMqMx# z*k#@gSuvgsXxtEiwZp5(N5dQq2)}@@fxYNTd};!L03YjsDYrH@O#71gu!FFvonPC4 zZ20vSA@)y8nPgy$Mb$2vSgEB=xEYz8T>pp;p%E5NK`Mur?1Ue{_GkdI*DVZ2{%ZrA&UyE`v%R{u%^B0#?SFS$ZZ@(`Y?9|7bRhL?vCJ&^=)4klj(NXfHf z@hG4+eq+->2t=LLfZjelo3VMi;qMQtVt^U|Sac9j;|ky397AAgHIRj2f(}5idoB17 zqBS029wXAe*st}EUTS@$h3`{aEBGlseg(V|l642+~?L_6+JTUX;0?n(xfk-~;Cy+H~X~!KhyS z{DuRB41lt(fEWwM!H-w~;7=HE4-3f*ik}UD*THg7y6OcL&YN=M2<{S{g7M71m41>|-@kK#{Dm}1 zcx?Y4EkI&4PJVH*EC}0xq1P3JhsAIZ1_Anob5gF04f!DsL8-_oEMaCGzSwyvUo`t<2n&F^@U zjJ#mX4RFE$Q;F{Jtz!q3U#aac;QE(B?eAjje_s20pp|Q0kS3FPgj7;q9Mr{z z$zTpx)geF*SsDicsHK|CD@Q~mbL2mQ(h@ut4g&4QDcCL`_5y{6DIM(#@OcV>AQb%C zJxia&MSuh0L^dlXl~^(dMWcWa@JL=IkNjI(C5La{wi}mAWUEUQX^hH9G75m50&P9G z1}%VYLpgZdJb(rT6kVVyW;&dftH^0qE={is(Z#KfP&fZKa8|TjQgRrHt)C z_@heNJ59>W$S0*D1#1PldovOo&JlfVkK~po1dQ(afF1ylG=NTc{_x$$m1@!G-c{P7 zELCQM@~QO6Z8Na?hnfhrIjR@hF)rMwv@MQ0u5z(Bczqq929}@1uK24O{(JY{jV!v7 z20Xxl9P|_XIZPZq++tkWVp;)#yt{?Md-72ISzEt*N#eQMgh+I3kcb^1nG@&+K|y~3 zhQP4s=;-Q;wcJmr^~44T2Bg*PGZ#{~{!nu;+@>Za`MM=K)U#P|C)t9TkEp@6)-kVB z0U-52Of42-h7z++WM$WkuQ+&LdAi}r|F22m7jsRZ@AUbXE1LA zI!^8+`GkI=lhf0z%_Bk}U3IG`Z96Qs1v5Ngx8t+}3{C`KBZocj&=mANJt^EhP62hL zQNY6t9RPE4Sla)#pr2bT-6fB7biNxHvXPOq!$Uw5nLc?=DFB(vKoHdB1EZN&*O;c}wZ13eiC&mG-%rS-&FO}xrVxY09URazGqZ50_RQtKGUDZ% zJpw3Dc;eGsdJ^aWQeY-K(9-}F9_^-sD8z64-zS#03aSjA=-WNPi^cm&n+BV{s<`&% z{hH2!U4w4_wdwDnre{h@%^$PFbOJpG;xv&ciZevFvi{Gn#*h+~F9LjZ4+R;?fY>M` z1QnDBQkwBZU?A@Kb3Z91vWU*?pm)5H(r4xi!R_I89Q zs#ySKsY_&nF5ZAEacIE?1S?6CTp}=($R@=b5fP6|P7eRyHx}JWzPMs3C}`aB;m2M8 z2zz>+hi#rbzy~aU(1_9w6o^AW?Uf*EM1}zm&q0D@u)znaIQTLDP64^nW{P7M-Y zUm^w{EAZtDReX>hg;?L~biX`i%$(;cQgU+fT~h4NpKA(ZeEmN+4E)>}l3(&IhphFc z@BuCaHtXyZsbOM543MxnFP{f8y`QgA(bu*sjlgDtk4;!Ttpj5P8I$KVp1c+sg2sI* zdk$jrCjx_pVWA@kMK)kcy8B&YSewV_y3hYHE&u0)`no=#JJ5eWL(ON1M1BDhs<1{V zP)h^uHYs)foHf3;{wz8r5o{7@<^ggTKZqF!CoL`O3Z=F)H%H@EBLlROLYmul3*yLn zdQs)vdNN}D=JA9d`qx3Yf6nKh3^p}3erPO_{m-Y!yyG_8HUDrTFUb1*yE@Z9FVEVA zVN#T(BM(`fM*bf1|8v=V1ossp(~GPbLgd{Fv4vyL{`>@hzo+i?^X|&<1W(nd|LZFv zUsOXf_aB=Le&xa!{ZG_K3w6%uA|Q@2|GxpNyg?I&6DPhoy6+=j3wr+deHXf~C#T1k zp$P4y8c8Q5QE`Hs|L}G60Wl3praxn1I4SKbNt5hn_g{wo@qBXkHx6K)y+srDvWixI z>^}~!Y4Nt8uo$fo4{V*g807W8TySH=;P_9EAb$ZZ^jH3;`4;-`S=0R2MuB}R17gkt zbk^tU|GkB3X@d$Ik%BaZ+&v1Ze{c6+&lr*8U8MUYnu+1-XMQRr!|Z1oTVMbCBN|R@ zDq!pS3&Tpl1#|}TzrGdbcvCt!U4wsp59T{Fj|#9iF1*okjQ{fNs<;3DJ^QwGt<1aZ zXPUA9a^INqlFEXPYn0%ph1{F^)c@OTiBr76{{M*^kv^3KWQaoSok+$%_9*J^a(yv_ z59pM^%U??Ww`a6mYrfVc^ki@ZHs%HS7uRXI>{8hHFJut_jeI#*TBxc2V(4??|FjdZ zeNjuq8cF{QOrmMPA)Umv%s&2a!zO=zuU)52qoN@H#7;P&_20a5!4$Txzv=-_dVr^6 z{rg*e^9J%em*#(c57nE|GgH43|2<2Ze+?TMSO4EX`}IBem@lnZ&FRklhdV-a*KY|C z5eQW6I%*?+C|eZh%5_a^P}bS#>weQ6n|@#W>%HJaWYNT+S?+DlL|IX)nptI}FZpuh zgHYdYqE<3mRNBkCU{utHw5X`tw{^ujPhQ)kou`~b(;NmItYJs-bkkqdq4RMiXKs6K zt#)|Q)x+6(o#7rOD2=X2n&$DFevSxR-d>PaS66R2*$Srq2vjZ$ zr(Ws0;Pm?A8yp!mP8O{;rM&5pHahe-T*K3{>hfPVc(CQQZ0$2h`x;xJYtH6eV{Vjsa&DeX>P zUj2w8?BuU|{qb$mV?~qkk=3?;v8lSjnbbB1^Q9g|x4F+ykDp7De}ds#E>+ttkDG&Y z&83~4)<0{_gk~BzI|m0DP(U)yAJPf?j@lj&z)J`7Jd>BYr1dtSetE%hPhBqN4NT<>WDBa!N-Q6XnG}4<+MFB}^ke2QS5s~f=>6XrK?)y3Cy!Z3{ zCBKb(vDRE;j5*@Eu6a{4@+#@X;*Ln9FCP5k<9Sziv|zRk752E{a5;(VI#CE}$))K* zEC2ixd%r?*g9-JA(BJ17$~$<2|GOmMHnXtbG8@|#!|}Ntvl1{rBBR-_Vb}{F%8?H@ zD~KyrTKE(kKHmEUrUVMUzkU#mAx@hs*#0@;qjG@Ke}!rR5QvVdcu5Joc%THJmC>qk zP(7E?y}Q3pNZ_5=Knd4;o&T?WX%EM5-t&;vP2BVCTk}pnO75|yqmi9Y|MJ}mrY1y5 z8k{c~sgzJ%m3IFJSvlfofX)K=a2tP&#GRblW``RZ8_mS$bP=C8B#BQ=Oi@RjCF!uV zgha@|FbX1kPY-(E*X8KW{zJH;?hp5`O~s^s zv>&ktso?zu@!{~V2_b7hn5em23NcZPkqEe4LO^CcE^qdN_|Ut$vPHy^p=7H%UZ2R2L7jsAvH2k}F+V$#Jh$M!j=vHu)cwbb{>PZ+__Lp$o6scXwzwjk zhlUohFiQ4D;{GtKMf;tZi9#%p)Jb`8@#;Q@Rl&{(&w9YQmKm)YPvhn_!^@)5Pr7Bp zc$@$22?FajE6_HVYY~?m`lS_&bU3@gPs73z5_YfR%8g2VmA5ybeC-cW99jNRcaOIs zC{Xbp7Q+ZJ&t;4cB@C}Y7poXkIPmNSNM*^mu!f1;bBg!Hz#+nGX7Yt30{ts#xky@t zi_@+j_zYOwX7HAilMO8v$T-Q2RbEJv8@o}ffNC6JH%{@^J#^z2ar)ghwQPkE0>mpc zoccPHa75%4>g!PWm*LM=&*-wg%DwK5uo_$;e;#c@$l_!tI4m69@d@wlbUXJA#3v;U zNRh#2Bw?TA3dlf;rTKUk8t<3J3T8ERptcSeD4@PY-?h`+{oSjdP z>KeyUVhW>VS6BC@O1EE-+=ZccRsjLL((gE^(S++$m?AxyK#Pqr(QIMfIk&3i#cdK} zP)QcKbeVoAHcMMXuETVW?J$|-@E3&m6;sYn4jytSS)8cJb6inj&fXipezdtNDjEI*<~8DyIZOrJ@rmZL!Tae}^W9BgeJevD=^iUESRZ zuc~N|>t<<>`KeJzQBf{^J(^4Ou#s5wO(0+^=U{6TY+H-;%+A`D zmTm+&BY%)Zq@%-Dmx&+2chUM3{o#vi&EoJg75NGLlwvJ=5W={Lm_~8%UPNqsGJ^z8 z-Cr)uz6cpbvCz$Ban)^cVh~a|-?1nb4pI#S|Ka%L#QJ|X6A%U}lKU%Sarvvz@2Sqx znG8l)D8)2}v-??|5}Hr%&mzUI`Q1`rp}Fq$lS@$Gt<}?Ic3dXXu8w@Sa`cz*<9J?6 zprxVFd^B*s%Wx-X^9;@75bCLkSKzo5gV>rH-?i9`osa;z>=1>jWX5y}`Ff3%L6r;t zo!dEP<2I2NwRvIx>5rrI|6t9hy!e>`tnc!+Eik8TveR#`>7PGeB_?}TaqP0;_ZK5? zxfFS{6}#==IqxH-0iV~tCC$tAN03vPKR}IGh zm+7(j2lgRLa?jNGwS|TkhL7GiNr(rp{yBJ3)nG;YYj~J&?!m#nhMJxi>!tJsE(=SE=tQ7w z^tqI@RLVls@F!uW$w@90RMa}zELj@M|MH<0 zg99uCt31sxC;m?c2Xi{le&^fYq;BGLdDJz=!T75zVjg`S{262a&h&^xs5cB-M%1DH z+bd?d3YDh;WWCLb;)<*raf~7D{pi2ClaGeGQ>uy`qskTWgY9H^`&5WRzJ0R~$*F|) zWFKE%a`1i2VG156H#@n!ln`H2O{9LIUi@Eqn8KOka$^X%XI?b^jDHu)wV|*NvG}Y0 z{oxl`(EErBQZD_s11pN6?6__B$p5P@4<{f`sEJ&U;m@u{$-o+~VHTghgv-`o{Pz;X zpKz=}$%wGNBaPq{O|ByLjP-PH-;VcN^q(mv9_7Pw@a=ym z(|&aR!FguI_Es9Wny=mKQ{mJ~CL>~FLlYBm0fo)0UukY-e;*z6%>cQxS|i{>S#-`q zNsHRh(2ye8A*v}j7=aCl$t3Pk*OJZ*4&tisU?}zDp|QTTL<3)#Z)wjljQRMHT{d66 zp`l51J^+rwRaX#j?1nNS4)*p;Q=W%!o`GpK$#W}$y>XFZy>BXI>g#7a?*LO4DxYuu z-*$PVZsvdKE)Fy&h&XMr(lau=3zZbdCMKX@j8fgJlJVs|kwvX!wGnBCE@&3r#I?~B z+6ju`ng@^nH1YNau^EX!8+VOp3dzgVF%Y?6E4}Y5ecXCk0TyD~mU82<%t)@;@jCq}!2E$9)q{To+K4SAK z#G#>~1leyCiG!<0N8t|B<MhT9aVHAbm-B zv@8Po{rh)OS(%hZB2Iq(pQa-M9ZeGO&H4GKW~w|m|Y32KmP#N1CGGN^JF*Z0V+ zWZ}{y@x$IEDmTdDPt**l?H(L{edsecWy&U@QG!|ow(iubIsr2XJvWFO z(vApi{sGCGw3FRWsGVZ_TUCB{Y&o=bKODu+aRK?=A<~)ld-|oT3%(bRe;EC*%(JAj zGX7qdYK;IK_9`oi!{o(n#nH3vw_ zY6i5NhR2hB4Agy!i*-v!0Rcr}Z2Diq`L^l#r*Z?`G5+znHx+F9dk!pcYz4y~dpc6u zE^rbu3EJ7^UZs~CGj&atNI?QqT-7ho#ZuI4|on>n(Z}S(aX{lB3f8S!Eg*I#r?4)=s>ozp- zQ6Ft+z46;Kp>Ho}6gxfk=+By32>Qj{qB;h`+sdtatmXLUq{uF|iY3=$Zf#<6)n zoI&L4i(_b*@xk}>^~2>sKz3;*PFj2mDyH*Ln9y>%NxVvuU+AxZtPQd6??fgF+l=i` zZVx5{n8Y3*W=Gk6{HpZ3sA%r1Fc8Sb9s3*^apBA)L@B2CdJn>#GsEFr&1R0r zL{zEEyZuxa<36V)nO-jfA*WXkuG4G9vd!-hwSVcw)AGfBJeb7X;ao~u+MQ?vn!UVs z88}w#jkDi8#BcPe#+LpHQBr!JBX@HZD9WO+#fwsm@WE|uZss->^cCT{xSfe|a&y+X zzGh}%knxs!685x^J*93TWr+{o&NFW0evwAU{4p-~>M(JUiHGI+h3TaZG8{zszJ>K5 z$W`}pTiQ@CdvMDXe3R7~78^K7R@)gy-!EDA8^B$^ zW3%paxx20!cIDRKNNskVs~@C# zP3=c=$-sD+_5^Ue&D+xm^9g@#3PFSUam!PJ3X zIQj2~j%U7!f47)Z+~AQQ|C`S%X@81VQ)A}lH&5ebH0BZK6MUt%g;=Ux+&Iu0Yx(G5 ztOI3s*8KV{r!Lk`KUcHh_OU2M6-7$Cbm>Af?FcOjB~U&;Oq4=&X@H?=OY1fMg#Eho zn-3D=5J>W{kwc@NQ$qDp_tI9u`mA)u_mE%&Y)~agAYdxa)aNHg?ltKOnAIr zEcwYN+ZLs25%|TckNyf7i41{rBROim*@iAXMa97Ag$da$``=;!=_?XIbaJ^psHf)R z`_j21IkujdK$Zo~Pz(72b%R$?c~4UNU0?7bAbzzy`7!#h)z*n#pUu_QK)_mL4c#v~ ziup~mzaNIU@5>WMP^)olR{#DQJ{iBxa;aLQx-eV_;d;~yajlP$FjRdZAi)EYuGa9i z!9QRY9zlW=_3c!DF;|-^v_&mwti-%X%f2TMU2^a~ZY0lh;v9bH5<@=1*1J6sMWuy{ z5W&2gQ>ADU{XKH_IPbaZ#|AR_9W9dQ#M|u zi%#6LG>Mbw%8M1X3KJeBftwyfB=Z(q{`1&MtC@BHNRqs4o&xcgzYegF47WW;|X29~vpwQRMyr~w9K<$8bZjo{sR zH+?a~X!@Hc;(}i;X#D+lbu0z5f-o)}Me|JZ4(}<2DZP#kFB4AQBe7=<_k`VYQ!Lb5 zMax(;8D$urj2#(wJrrJ2|Gidx@AFs~amuqGFVw{XAK-iJ%=@tBdUsnDVBxcWCcH?# z16^t^!k#vJyp&-JxHd|0=|_P|p7(#c?ORDa(^(lGe(J8JZh3c0LuSnPJh$K_6+at} z%7ZsqdU|Zyi1z2{wGowBFU!dnG;yTC5!2n+2=ljKHorNQy=2pqaH@`?LpXmSZ*lta{fi?(+z z4)GIWTkTrLvIgIo#jC>!&#Udglb7lhOBb)DC1X0i8I@F?h37{+jS7kW(Q66+oy~%J zv+#GnuV;IBReemTDutxRJ6vUgEXj=0XOPObH}Z<{8F9(}KB$-h_pBT8eB2A|aLVFC zW7Dyh&d}s&LbB@{Y{9ch2^So`)y3u|uB)=Crsbx;OnDgc-LOBlviBt6mDSaL(D2IU z0()93g*%)_#&YNr6Q+(YA31a{Z{3gIp6^yW_I7t8P|LjR?(csN0X^Kfm>6nn87zZK z6Gt^0B_$>S6CTq&gU7C*0MhQeKc1_tK`C@L?Zq)DieZJV>chi--(ftXm zKCGC5u|OQ%biYBfp~*h#^SgI{KO}pizW)5p;LK$AU8!*AND2+t*IArcY3LLX+93gh zfmMJniXNQ?0%XBJeBjMe3-O;ne^R&|NeYxRqO1m!vRe!}?$3d)pBUAL6@cLk(=Y1_ ze)4qX@GuT0Z3j92#W8HUJ(3OdLKtXpP_2KbN221=ngXScnf8G8&LcqaH3Kr4FbSYz zAh!k6iUgWPFl|RzDf4Ez%_uox`w?&~#nDOm@l5=$U&7F7z<4MDa2DuH$h>=ZX@u*5 zN!=Cq)dczsLY@1z^3S3-gn!eGUuerMxwnRnAP?Cac{Q0Xp!2UlW`EoJzfOI63f0G} z511$Ckp$J%S>(6G&A*Sj`XruXuMh|NsT_5mk|$XVOU1GTs#5fv5XP?$o$M`s zQ1ztr8eXmtXin&?gsmY#Om`ECuZ}Y@*?jJ8e|$dWZt8yDRe2k^=(W~Nm!S5QE$htX zq{B1bKU}L>d-d#m{0G>3RUU3pA1-Ge;YTJ0_VvF%4Y<1{cdgralhv{_%0uOrr@AQhD2rgeQ-OuQpju-oRQ^Ig5Xg%*+O8XtH{rTEZkt^z`%^JPt^Jenk|(E&)L$ zgG4wq#H-_O%#)LT^7Xk|2bksz5WoQfAsApjadmTJzR=(b14;rcZx~qcbpQnh$Io!y zq{-*wM5WF5{`~WnldHB}rZGMqvp^{=3;=YbGu=rUT9bt6*qSh@|g6mb68{D z!gf!l2GcwfDRk3(b8qQ;?@E%lfs1u7@gnt1vz4^UH`WYGjAL>L93rp#z2;zGg#Ht* zUlq5)nl32u59?~b?%vS037>Fn#-&FqVLAl^XI3;thr(0VJ-C)AtMvUP#zKRlTw;Wi z*wcSPYw?*cxjHX4akamG_10pvugh2Kjq~?A-XXjTC-nj@H$DpR2IIQp zw91*xhTJ)=U(;Tb9LYYugzC!d13CTGS5?IVYLQ;7jy=Z8h2i@5t=xgRB{#Bv)HS&@%~VCB z;l>n1S`m5Zcw!=mf~Er=n|hb?l{n9m-+ZC&;DD$-sPSsON3$$5O>bRA6uUfENUEeG04{Dm3~D(E?Q_)z7>2B1Ss2y18zP{JqsYHf#jhX z5P)k!?49xC4b}oj0@Y2qC@sf6=kcNt2+U1aHX!`YK?&z!G8415C z2Z=a~ui5o2*ER~3FB5+&$?iXJ{{%vT6Gaht(zQ18RrmcxhmF_DATs)U$(r_~!~MAT zuEG((e%J$lB4#R8E3GizK zuA=!`D=p{m)s>fFs}DW|>&1&0uvOgwF->|v#DDj$y4(~Q27AxeF2Tkf|9+@KgEQ-% z49;LMAL0&EQv+hEV?scglQMaHXOaXFOOygjR|~J8cTl04vCmK~Wol;v{K%~_A8;N$ zC!pRvnuvkQLpB$|uSd!~yci=lnuvu<6jCE*r<>3O;lbl!moZ3rxN`TXvw5U1 z1?6ibuU($B%YdBpP_7BtH**Fd05d>SmVx54!pU}u%m<>>2!XYuj_<{(VkjEz25Kfj zMq8d{u)OqFAX~&Cc`UF#erZgiG6nMpE5#I60%K$2rgtSmH!PGroCo+qdnU_s3_c!` zkF}dO4nqZaNxRWtNGKv=0>+JcrC^ogmA5@QfWCp5nOPZsGP;(Q7EGs(%zFbHz_I|~ z*!E3GR^5xVEhlMXDYA#8Yn~SNb$s+~9tfzhqyuha zg`7=yCh}qVMWj33Bu^CF`l73pNk|`MJx$H+s^#KJ__=P&g6aTbkY7-Ad0R<6r4~ zxL|KKN;9g2m`)U_d7bnUo`AhvoOXQSuBQHJQgt;4Oeqss3>>hS2LF4081lTdwA6|8 z@v!dcR7#Nd)#<%=lM(Z`Z{I$=Gp=Top~o`^JO};|GNw7)7!N{JKtw2Ar*p5ky}qV$ z)qS6~EbMk%>69D|^msP5Or-O5;R{0xWEd1*QV9uNQ}n2RGJt|EY448@udq;_IDW(} z*0fK4*jqj5F~v214Ogr)=jMkn^6GwiYLDeyuK?DiW1gA05<_8f?z z<~VtN@A&!<5ld?R9RVSAE(_K`q9;Tc*jwp(D5bSPJo6qi1v7fVAB1PY3`i??_V!NZ&wrfrxz86K{HGxeT86x-zdiV0f(9Y1 zu_)w5QYZ|%S#CHPf869z*pxh7#7)?K_il$Iv>|5n-PQ>+cTx$Z9&STHTqkrZ9^d(& zR@YY{IyYZFe48wOC-!UBeu40vBXJ)Q>W>=pt!;MM<6cMa>{${&1#7*9y1}jY#dFi6 zjf+rfYRiwb2Lz7dCi$zSyfSQCmwio1E63ep8Yi#BMxW}Y`B+PHJ<=8~hqB|4(%hCI z>`nmde=Qw*Xg}7T-8dAtjTin-RYX_Z*>gO>MURym)3awWe85bnXD`*>LPy#8?bc76 zz;yI`Z!E>-l2lwVchRq~`Zl{(p)>`Gbs;fkz?K4+4VxzP%UODjkK!vA79{y&iT@H{ zogXjOZ72WU7LssrOPSF(KW30ISAVo11{*dgdAflG<86B^&sYtj3!AoRy0s%n#x+Oc zj~y>IA|fCOKEdt#&Vyx6SEF1w2VWiamW`bwj>OM-tkv| zwr~C3Jcc9)hcGqE?Zng0jRh1oXH5wi6D>lMY0;`Y!jO|&JBxJ&$tn|D zpWaN3KJ0DpRj~Q#7rFveL&+JKJGN!wi7a+qyROT04;1^Bk?NFqi_;0!$I`sSlz1&!WcQSNnLEP2^{VOm1l$M-X*`tI%+-{Wi~%Gd)Ab@`P;YdHkn zFdfIlP}qLM^l1TsB6`_*@O)_OVP0$6WVhNd%U0HHpM>0m9EiC{_9=^H&rGjiXkDi@ zm9jY$1~+}{NO5xp%uB#V0|SDlUsnti){&jd*bg}AKkvw}u~W;g7Zw+>u|_bpK+pK~ zXV76Dp-&{<#{oypP?Q%*T52L9!o#Jfr(+T0!vO-{a~=|K9W_0@Cy)LQNFj()QoYB2 z|Ay8*UL27_czAdwKhJfjZ%#U7>!2N^zp|&O-*CYLoe|~aT zQzY?bkJ~LIENx5}1Nhe~aS^{=MqfNij~>IU@AS)sJ&;@3{(xUlg3#W%T(f+%=T}zZVM1+=Z5t2K`aO+_7_; zP-`hkA3@zwa&tq1DsTHehfQQmo4R%;QuE0bC1p*z|C74CdqqPzbuOXd_fdJhQr1Kz znml6!wTc=Zr73^h&KJqi?G3Ha6Nish3d?&ah34WBcH5lFg&yEy<}#90YRLi_I9)V7 zXTJP{#VH9(F;!*mv1V_s@gcD2(dr9pb0_XFD{qrtDpBOwyrkST-czJA6~AHMtXru) zzmYC<1y>Ruxz8AJl%wD7Q1n5&QC`2ne77x-Eii`KP}%}TjyTiTu3?YxFlfY4#-$?> z1evnK7)A!D(!>eBKgV9vtx?XI!$xtHdI=mpt*mj3KhnO?q*gfx;J2#V@$p_1DG2hW ziOCvB$0!CjHw!>uAT5B^;>~-+8PoBS$!68Ht_4=-k!%ahZm;w~!7pxlnilTl(#(dc zhhT0`;6LarTdh%jKtSz_Q>gt$9}|g8Sun~EcYEc9P}x#6p7fv~>zsGKAI=piBU9m= zF&j`kTy=xUVe?DfAp^%k`X2jrAw~LY5=d>w=hhf32BM9`C*DSsW9h09ne*;aC$bZw3r$$E4doJYhaIe+C>p655BpPg{wi~V-PV5yY%y3_w2C!l-`%m4OSNlA5a0hjkb^GY=Xo#=^Tm99Y% z`M*wF;2eh;bwMgD(fp~q_Uc3qLn9*yu0Q}ML)s|415}n?yjs3mDhC4Z<<%fzYN?d= zT`m%KFiA-&B_0Z>CbGk%v%o8tr1~%r@TpWS45T;F=L00qL7JPbUcxw4DE0cYetG=K z-e-WOIF_VWBDWV-)Q!*Nsb za@s`U9KdjZNUgFbCV<)8Bldun`AdI*fwX-kK0Q40KRC%eAg30^W}z{U_c`UY+bELD z9h40eMBMZ~a&*r=l;zkpsMyNR1f(8+-DY-Vo!05WAA42e)mt>ipg zC1foE;m^Kw_mj>T+1UU@kZHejwrh$!ixE)u4Z2S3BOhTFsqi4=#Dl~XG(=Q2G@dpZ z!WEw(mE)VpsH#$YEBS`OPUClTi5Up~2Pou5C-Nli?D%Sy%d#kU)(;LsE00wpdT{_7 zUV^GPSdlp#$k3J>HJ1;r07ZX?4Nb#PxS*gQ7TB?HTJQa(sIo`V<+6?=Sb-t~P}wIDTpk%g!BoM_ zy~PfPB6bhXKQ(t9(l;o{8B3{28xdYnNP1@>r9-jg5n zPMedTuxzD`1#%zXB0m9xV^8l(O-W17 z&=i<4ZyXdIU9#AgNJb8w$pT60;g1j2;%_=f9Y2C_ewR7$3AZW9$4*FE**`sQ8=BI& zjC?FZ01F1!05iO{@OG_ka_1~^^;}UH#TC*QgF?Eh`DOs8^aAbumxzSJgh1XL(o_ya z$3?mw&S%kQ=XqD3<>V>RFr)QzwM)>W6PI>F}ax8J|~JgXk1u+j@oo0g}t0rVQD% z9#WUm(a}k}t*9#+pOvz`*i;Vij(#;JNoC3T?wV$&X#*ipV(x3ZNkE9Bo`HsD-Yo6Z z%)On>+49$~9o#n{d0N@rL;{u-DsEOK%ml(az+iwI-`k3BYVrXHT~MR`^Bh`}+G3nk z-W#dV9xqUEAwXWg?!k)gZ8&&HUM2n*7E%a7NqLVoMkZw?s(z{pg+jaZjKadgq(OSK z&@dVZFac?XD#ZsKx#}{eCnNSCr1BL&kvyz&+ZR zCMql{ApeJOt?a+9+1@M{N(oH(-S?rETpz8%FuXpV2PB7zOQJH;VPJ%2=hs@JapNo} zSFGj-rYtC^78h{NM;nMI*x>X? zP+h4SX@tzoP$Fg3%XE7CSm2nO_s}!9{zMRuAhu+O!H!Lj6U3xFD@M)j9w+;UhA?o) z`qnmf7-@0x`f17IXaOP$)N+9J3`1e}(Dif<4PDVP-&_{{r*hleGAR&7-s9MX9S+h~h{P0O6sgUPrNHZ=AfZFDR(%Uq-=!cN;=C z`p+&NT2f+dDagY^4(i9*nDYiMu0S+Tm z;#zb<#zWn}B{{#>4D(=l+poRlzMYAMi!26hqV^v^9N+n^?63tmVM02~q}iivV7O)r z>cmpGHg!KT^;{63g{pBAe%rnS8KA@eD^=PoQ%3;B?L7*CMqsG z?AD{d=jk9D2(NvzRq!$X!k9Xb?j`v_>(ouKUAgT7-i=g78O!$P&p62&#Ytn3-4_= z5+2z+2BhfK@9;ZmCfJ=_NudYvvOJIFGM9`=u?BIk*_+C8TQ`0FoG0YyQ&cqe2f-(F z^#KtD(#1>8d=}s;MHTesD*|7plyfe=UCXA~&h69;jbSoa^Jtg4nBj=~ygAMGQ%-}H z8n-qn;h5X=!JC>Cnk%G_e0iU6`02eHZQsqms%*II=n{oO!bxn=GC*&(50eos>iqjT zS=r)IM&)bvH+1`2G%30VdY1_y!Usu7WsHs@fPQ%i z#~e^KLL5<_n4RSDg1T+xP3w+Ur=>BNn3njGZ9~QF>lz$%yeg;6x&6ObfWvw6dt{7hKW=ubRBMmCDHjC}xWF!pW;T}v#*i)Kxb~;L zbeGwUk<|7Xp#Wc5-mzbt_nh=WSVO>wc&{CbHNG8BOVT|c2b~zDcDt_!I5$xGOE1Ha z5A~B9$9a-Qa0OEv(Fzr^o&^kv>!s_nNVy0405A6;o&DFwd0F*M#Vfx9qkz~QT$CrE z;ehn-7DKM`_D}2bp*{4|3%`(%ET+&j6^N7HF7+>;cZ4`chVUQWMe8XXoGTPDHO54I zDh8?_-y{t zdbh>zgSP&p94_%2Dx)3f?~M>Qou-_{QM(rBz44b6`h`6yDV_U~8M1o6&F(Hv60a^( zZxbHpMcA&UZe8{?$i*mZXTO%xJH$H?YhN83WNR0zzTd6qUVi!Zt+dfBzHE7V_tz6o zIEWLmFJ0c6xu&r&Ms^|x!cyc+?vlm%5>iHDQR6Emjr-(g1MD$^GF%ruy~f!~yNp1f zivR*&0+?PlHeOqcv`NLqEhDI4Tu}#bf z5-tQ~=0hUhi)VP2cVE4YI*gJ9q5~yJm+cr^*#>9}HNwt{_5NC!VNdL^c4i) z+K9;NjNl){DX&k+(48@N@w{g(5NyZxUk#(4imgq3#Z0GjnY3m9TGe|84=J|&d8ccx zs@I)}b^ERUMMa=!AT}m*NSZSQ1fOuYBgy?LtJ=EFZi2$`XGReX2n0Ku+eh|RjH9;B z&zBB&|9L3{MpXypY}=em_2)b9MbGLbb8(y2u~DEYcXx#@e=qv4v)V(=(H2#c!qAvockb5!*WE>dX`6rzo?G8>EXvy>FMl)x>zT!E% zNFS-4+0_&j>aWXB-Z^o+70Spg6M1Cw-(0Wf?r;em1PHkG{)_3I6Al+~o~@s<`|dv0Vq~7A}{;V*643B?KLk>}WZ!eOXhS%Uh)v9!A7Q^sG1RjFs z^pMO;CPPa;hZ|h0TnIhWR(whH&#vL5QfO|F7=MW`UUL2=M0q$S>*bBM0tt~wT|4tX zt%4oely^M!NSMxaX;H&`2;fD=xtTf%HNA0NPUbxB!0M+vkhT^<*+B#4q%4o3F#oQb zeKZ0`BIcM5Yn@>inQ||wobdM9!fkqHv&G$49*M%N_pJVJ0*tUl)Vy>jNNV*%3us@; zD-5o#?}Y@RwoAY|b0HGXdH(*Cia@xs8GuAEyk7nD2Q@SY6<}fw8QS8$eih{fvMVjq z0|Tf|PEHAfu=5yQT;0X?9t@1A#q?8uyv86V9umaLQ^6t`^H6fLv_$+?;xMvMx`SL^ zUJknaVUp@kz8F3O)fI}z;N8_niN8k;3F91xS`>Q|PG{4h1sb5(Wku6Os%z67=uIyokP z%~%RGd;+k{{qeqYUAVlid%`c&eYgdH-hO^_7?`j%E|2-Y#w1h*Dn^@_ot=#>x4!kY zW@J}1Zg>iRmz{V{`mlD~Uk zvV!xgT()>MPJ>m4C_0%SVm9S!Q+QeloqQAn?6`%>5tOUjCtr`{QB(0=bH36%K0B6H zSO4B=BQDY9%GZvvYK9FE%Mz-lD7$+kss?@tN@)0!;x;j|#F3S%-NTw%Q({wJMR$ud zp<&SO$zFt)z4)Lk^%$oEhpeelO557Xrl|>mMh#FTq@wD=#=${nab}6=O>Nzaj#gON z-9-awbja|6`^)Kqhj#rj)0)RQgRItJmWk=VXZLFA=Eq-xJFxoVZ<;hse)m3Q;)2Ca zw19Q(y`vYKB(CDxF?(10T_!5t6x<#W1Jj@dbbXx+U~*G@k$wMUpOf1*=(o<1T0ZLP zVe5C-(ZDQz3^qe|Q%S;i2M3$;-kFmMT4ITd2P-`!P5py5F5IrRJ*E^!9Wn46x>C!c zJ{PMH9+>eMjv+sH4;2QztFg#|e$du@=FWe=9*k4MHTo*)rf8Vkug_GKyx-g-~gr)Adbx1~QTZ3Rb(jmD7An-uo4=r6og z0*Es6yP1b3rMtXX^}&o05HCPWD86-Jh{^2W`BdzWa{o}~2B_}h@V1AtkFJ2#JoO?5 ztZ})rky{NG4fMlDUQMz4xy@PKxy`70WdfibXJ7n51;={fv~ny{ry1<(?64+E{w57#sv2-<&2kBV>;YPEk}gOF?jqN{aL$lk}dQjiv>T zPftWFTXm%`7Rj*LV{zMO_&>FrgrQobS~2y?&Y#Gi@~B^t!0~&l2kRJ~o;-qesfb{I5+-1x9{1bfOC9-ag(`G@LV{Sr6CwZN^a`nkCYK!+Ik}Eu{7GhK)}g zRI&hcQ`VMs*M6^btpDmf^J-TA((Di^;UNBCcfFJE~R0Ub}b02}KUQc{gG`&+k{m>oqEc#F$h!$uu2kf(^n;Gs@N zamD#{ep3^YUVk-6JOJ3=Cq~%7?5?PS<9w%D{~sf*pDa`mtx=9-V+-*nl)Ks34;MDRoRtu>7F!R%qOgWH1-EjF%KnHvw@mSr6=Db-;KI$zXVO$sjmN2Z%(WB!6~dTUc$gNp0piN`#(y%Jpqj)$MI8 zh!VBEx9jzON^Vj40K;!%c30rVYp~d_c;M3ubJ?P++Hy7ay1)3aO+8~x2K3<0D%}Wr zWo+ZRH`?Y1N60;li4D&kBHhFi|?L@$&bM*(IM;Q}}~z z6=v4IV@&okDqufl;)noOdYc%tW)0>;X@+smTamN#nP30G{iyQ#I99TKq^KgVulXJ(-=`* zI5^>5%gYr9MaiExLvSYRQxm0f(TBcS144gJRW|m}wH)!j9C8$v?ad?r_bFYFwG3cLnQPMd9wpRZlsgQo8Ji6e*j zb&IOm__evp0&Dbbg~x=N0nImXO6vb|oQl+o@htiZ>R#>EY+Z-m_=E}H&tk$XO6~?Q z=SROIIshN~G29*_Uj@b~(2mmsccl-XN*gIQ(%Vr)*J=0xIVVFbo()VR^!inHl~Mft z+hku5IKMlE`#Mza0X@^Y^9zJz$-N9i=wbm~f<74L+-gcCg zjljPUu#>0gH?=#Sbw9!)Xaiida69)O)8NQZMx{)0J;nq1IXb%Xm++>hIqu#Tz&iUm zu_fzwP^$$tD4*bewllezZaKFliD_b4@%^5lQlz5vU>D~Ttu*0BqZuaca})ko8d*X> z?9c}(4mc3mI<%Zgd^#K~h;Dcl)!F`8y;9q* z2a?t|yX_~au2c7YLpjPCgl-PQESs!_!xPS5#_L%d64q( zv$(9K(~@CBKL{r*4Hf!lGl99-MF#=ws>->@$p&=0DDlz48sPk^;u392vr#Ggx?>wB0m$=)(TBsFa(tPuF!2M?qPobWuKi0Fpwy;=^IYH8UmHh zaUUml+zHsEt4;-EpxAHR6*&-^00 z*W3*zF z3RuDx_wAjV)b@=OP_m)RTd!em`uU4DD(Y?3>~IY;nn1uI{O^n*Gu8v>X&=S}Awf=C zB^ExNGR3>e*Sx+yRF?a?NQIbYd;8&l?elQ1v!@Bj3e7{n(VDbP_U15Q1{eY}z%|kR zRhpZwFhwo-BYZAFksy$Q@1A*-6ywL~4Ds z7(KhQBWuu3mT6|zG@a4f!s@ZezfkQ=?hn*wBktG9%f_hRx=a0h%3=!UhbbAEaglq| z-3;vNmrXieykkoNQLE*Cv ze9S0EC96G3kVs?~=3jY!;EwGv1b$nwZxgJL5k-7p(Ecx`KUINZ=LY~fcs%JJWlW}a zy!SzIF1O0K>O^+AIO}-;+~~HK3KV#etl+fIMb9|H|Ks?(ZhY2R;ju&kFOk531c-j3 z5c53iHx3}ZCHF-i0;eY5A4^0ymCuu2Ud#h-xSvAO$}vL)g-Z`gjMs@2M07M$Xq%86 z6VUq?FGE#Qp*gL--jxEfKJRfdJ{4CeoDDHIStcNI_=Eb|O*}$tW|u~OUuMFwe)Zv( z;zHJ!NP&PWIGEhP@%5H#ZXRN}zdsSDFSl~bEi)jQ7ctR`!j4^Hpn`|%4o858W7jF` zTGcTYJNPqL)cp2Ivgf`iATvi88m&%MkW&>Zb??NB^qnvJOH777<-NGsQ{~d*4*7$P z6CCkM!{rpH`}*$_**`^dd9%n56l!4vY!t*}VphoKLY3S@aKxKRX3vTHo~pOBM!LTD zCc4w7PZZ|6nvlSNH;jV8A+Ah98OUuj4U^qKVEa74k$^fr17`=s1b3ppaC}vl z2hRjD^o`y>8$ypLb6D`@fVpr~6My<_B^-qHuDEbz^C;fr@r-V0d!$G$FE}cO-x0-frOlQ< zzLW(&!bL{%9`9ERUXgxvUv1>N*CFQ@;_#p9JIZuOj;)h`<-3Lb!yTxL=?v7AJwE#f zZuWMkVv4yY(9CM9r#CNYC@g;wgWYJsP9GW zaGo(4Ol|T^@YL(q5GYv7ziq!k69Ihi;0%FPQv6Um06;c7F<;yZ1@g)ilyHYZK`2>* z#G$?y$6x39t}AOF$9BG)R7+?1pLT*w^StkBhkK{2B6;_FD&XoFd!tk#6iBnjn7t`! z-l?x58&uOYX^A+s=*Mce#fCll|Iziq=S99*BLk?f^Kk%${1^?he{|Y71ju;|p`LB( z>qCIN2vk2`{L!pi^={r70tu3}tjcUE(SfTaxnEmT^*Ad!td}V>jBIgk3sPt9Pe3N? zxE>af>5Lc2S?MQ-$(#_~{GjFysJ?1xD?*uUY$Uol?mk9;+I^0I?De&|@=-tP;k;fb zHT9GBj(uz~wu*&et3I?uCz`08IVvk@@*~n$(xHELsek$%t`wxM{Iyos_*HRF=j+T) zO&+6GMswAG@uKD4^B_#z#BqgOml~zEy%AVz&H2sojc>#|-Zxx(`84UvJ5b1U6npDNFbs53KTb&DokT|)PSRd(FSD2fR09`8TkvN?YF;)}v7H&cZ8FPUYMyxE*1b{Mh@a9NXde&IXbwX=*( zB~A?lDycxd0cS$3_1Xi3I$>l}%m-64AlDbSw<6uXm5R_D7&IA*Q5@5X7ipFNi1$zSN0_`w>cdPRe;u&k2_d zWkZhj?mJ>d@w7-#RVC`~oywzVsWfp3NTpOro34no5Z{whhN#lW=q^D?rEvSt)dI)E z5hz&Y*N}91oi&1?`uIaOx*Z8|^v>^%#9i^%!Xp4%PbB{cfJPjnG`>VbkaPkZRv}&> zSf$C{b!BUBq2Jx)rliROBzSQ{_^*Be9=*WUa}rgul#9RbKi_79L172Ut^q-oY0C;pQG10XQDVfu3Ipfy@aur#%Ha+I3b~*D zT8mFg$n#h8;=`Z*L^RT$xR=P`>-VCzyEPo0xv_aV{l?$1mcuDkQp7v9+Pm+2J_{vT za>tqcby`w=@-xKIjQAf-3MeEnWSuWmqM7Pn-!sK)zYJGV{VSE5r2Sw^GPA)ZWsy#Q zD{raSqqsvc_JF;&f3&0mF%Cz!@_phQjYobpF>rlLzI}>Y|D)*D*i5j{vHNya@r+HG z?n%6~lvHR`6ege#;rzXMCQTZcX_&$%fQcFaaEl+O8+stKKgjFD5fDG+gOd3?`T z00_4zj$fZ_^K-4f`JU|z9bw?Qcw24ojxcH2`d1Ciy08C<*F}i93%GQcJ6~NoO|IGu z4oOoU-n(8gcw6cwzPci|!XpK*P$JiRf)y-R-)W;=aZYm1I=U;<;~Z7^U_xM>9ozrh z9kq24QLhWzEM3AljJ|vdtML{k-&aHOrElu;#+T!??`{qfF0Fi93OAljjCC5_NRWX_ z)K{feH7#9cb5-p-z^9K1DjBX-Nn}Kiw9tW#81(v?tl%;|2k4miLZSRyW<@U4kNqZB8r)byRz|lg7$5YL6bL&P6)`DPKhZ z8;byQDhn=4bL{m`>Tl*d9x9e??}(I^&af^N34=TcNL6>36$4H3@IoU2=r{mLu^MS2 zLFJO!&*JTmZ#=0YQCeH8G+z1nM3e&_M3(TSk4RL#nc z@i-MX(O{&as`EPLOCl$7%KS?QKSYk!_VIE!herDdJvjik(@Dia+t)`ZVStBCM|FF% z(atk_ZhErGl*IL6pBA}GlXMJk8DR-^hMMo^$Lg%1cHD$l`Z)b`mO1DbwnBA>XavoC z8!|Mc0xG}y3v(~rPZDDiZQUen!%VhTp$LAt71A;$yOi9(uvJ?tF`YE*6&lJ73O=+o zKvvN8k zjvpr5e`TvV>cxl0=eV;6(3M?Rv`-VL-GANGeDYn<%lz(qAl4nU@e%jhH6Bq> z{AVQ}8sD)|ODWlFKx$fZdmJi2m+o`vjtOVac^X%CNb&RMIxL+eVqj?uhsNPCO+Gx zMC<68xyr(l-@Cw?sPA#kPr|KA0<~E{(|(Vy*8c?PRs~h0tYagbpRQ(g;kE=n0iF0C z%JiCfIni%O&}sSD8=09eFE$a$x$FGFUrNbhmx%s_>)I0Z$*n9==klAN|% zeHo1(yPihZ$N~cH%GRe=yIV60^wW<%1n}iq6g?j^a6U<|4(=)yG!;08+KrtidVv_e z3QcUFCz=PEgsm+O3~5|ryLR*D4hah>%zrXvRJUOQ4b{uALe#YPX8l+eK!kG*8 znM5_fd)vFMOa_ZdX%pKLeo~wlIaNy*K3K_S%kqGZfyx$6zrl^$MqShAVt@x&Xh_`2 zxaK2)nA7Z7(C!I-&6DPV=ie!bCchN%V`Ws8eMO(x59tpH-pJb@2#LCm>J+E;xK!xT zL?)|hKq1UPPs?5V*zy{?2JjWB)%#Tg#|GM&`DV8Bn#b9X&5rlf&Yl-pT{ck zXxgO7qoJBbwRY4cbYLH}Oof~z_Gk5)QZWPISP080ydAw|VXo~ViR%z6ZDeHR-XiMs z#|&9$?|ZE&5OXa#&kV^>VuzbOM``2Ag1BG@@Xy~WSpPFw7>c}BN*rg9aXmw zPOPNiGg1ov35&Ylp37o?^6X}?m*+O^DrN?<;4ho)$17SFnCm$1D70sIoSpzHx;V_( z+n2v(z6JUOnLPTQpxoQ2IOTjYwVf_~WIlKx2`;r$T({49?}sgkP&iX8@{C(*N*rsR z&d`K+jLdy(<@8a>viouFR`%UTFi3<*J0KJUhK&KlFncQJvhO#$?0$Uk@Z@MeM%+W} z?VV&qA{r650RaNExVTap(4{##*{x|I)6zrd;^G2AcSOp>Q9mCvj(k8@<_wxu`2rI# zBt2N{%W>4t&HXe>0c!2HR>^SBA==pNAnS1b$u|j*S^=#WM*O6}EQdM@QXQYP1WS?A z^@C2jlgxR}j3jYXW;z@u^C&#t5M#kRQr0-(Oo<}Jz>$3Ct;Y(1SgF{tNt-xRs*?yp z{J>dr^b}w<6d=yS2jVnASxK(A6BCyXIynt0$*ZfYK?l7S$RzNf9RhQrKP(JChteUc z7*SlPU@r_Tq2)LblSzIEdg5rFASXlw^bB$Ai6GI@5W{1b4^qKKMn<&{xW`{IC#~(_ zrZ6`kR)$1$#1js8_Mk;I%woE_heIj8B|1x16 zr_6Ls0d&k8O!!Lvx=u@rrje!6^w+)jp|PAFt@e~uAnsO^%YloBcn%!W(h^LbDt@-7JEWKRA+e$@p<+|Y{ z`fbw6;M}^mKfMx$yWz1JmjDr$59~wCvWS)lNZ-UKtp!{K4UUzHRWaoH5NVT(96Dzu ziNK$|v@ihoXCS@}G)dl6294?y$=w$uPu4m%hG8_MW~(UMNz zwNtsZX|%@^iu`hII|r4NBU>g%$DxrfBtnS* zq1b^Fs|xPrPryc^dnE!;(ES&-MUOv35AlmzcFO+ftE+#6A0ME#gbX~lkKDFn6Kt`p_NYeDq~ub5W-lF!iu^kHw%?^(eJm0j z_1w1L*LMqn8?6k$OJ2>{HAm35R#!4lznq?uf(F8PFJHdAnas?{sOZxI5_81V)WNGY zr__v$jNI{UU1DcE)6%X6qy@m>Y~-# z{Fg>YN0FTxOeyHST75_Wk}_pe!NSNaFsQw!l$2cb*lVB(jfn6C4~z&VAwuKLAv7Vo zV;*A<2|k0ge1S>lRYcali>H@&H+|+1i`p3tB$=AyZkXG^et`fV@rBxz&OCrI7wtPu z3Wcb4ZZv#r_^FPb)aP@QGd=c>`^8@nI%Dh?Sp;^@^%R1v_zM~D^Ef}p@u-PrmSmD@q}*fETM^%$kI{&EQ7sIr{{uGjb~kU>3Dw? zK7{8u7<9pGv{NI`C<=P2dh|*>Lz6JWI~29*FA_=V4cp!2v){KakMy;g8R%q(r}^L@ z;S!I)_C*U(Y)vujg_N&Y9VHNhE3`CZ7`q&Zh%E?i5)nQzpE>N)<*~0jV^OxD6fk!< z$#$1@cxx);^FfQa>g))4>RTYN;(Ut#SX@>r__e)N{MQ^m>`+M1LuQM(jKn3U#)* zSt;2sBcryp|I$Rd{1E$))4XZ~%~J!HSMfLShz+^Ujxa)L%e?034bv`n`THZ+?U2_J zTb?WnIL)2(vDgFzQX8ssZjtncZ*0oH?i`kgEHL^Gya^=_nYz!M$*b-(xxG9C>&gE#nQcIUt@L{@j>#M4c`fQPSQDnq~Gz_ z9+=-|jY_wk&u3V`$<%Xe3wz%lw>5m>sA3>n%!Pz0k>L0Rez*>2eamY}eRnab7x+G1 zLsyTzg7-twl3b)$l zRB%;?{hfd->G2DL7%Ij`-^deAX0OE93;CY6jyuc9!bzY+LxZdtTG>oLisvXy-llCX zdFrptLM(&BnP`RTRWY>Mt=sY3_9xFx($cuiTL{kYjjVnj8)glCetI0UGvX9eZF+&J zdL5HbP3_}0YgJX)&U|{z&Z>vu!E9U1R`ZpP^W?N{c`pO&8y~lFyKO!h-aFnU-|x{- zP4uW2n_O?<*=``T3~808u3Od2oAnw;pQ~~F6~es;IyH@J%H&YY@(m64SNvL~JJzJM zKhdCmu2EQkT+-H-cgTGWQYkYCCEYP^-y z?9bkJ;!Xr(%87yXn;Jn`qC4biTs4%!$)U$QSFXb2Ix3TP?>kT%IhCT95YkEEm*$gUP*!UtL5;+u*m78OvbU!Xb<< zxpd<(?gqc*q$J#gc*Qk^`g&;|B>Ql4Lq~&SF4T?H|Cx6vXJZ_LkiZTJTId^@R;5-` z0y_PG8#n_8zEyDSJ=}InA~g-X2JFW zO0MdD1L?t&<9A=a)Qv`?UckE^tE=nu4l-Xo(;1Bl#;~q_`DUa-Ej-+3gsT!wjg*-5 z5*GHEGnfQ2`>E3JMC~vigZf!J9+yJS%^82f^pjyh8I&!sP&j`kf(4MTn{5-p78yV4 zPgR`Hc-hKzD*UAFhu8f=#|O=TlIy)^PJD?U&-;P-ZmpLVJauzLOX*4LMOu!lITq^46M|*nfrh)NM z`y4M@TOv|iy_1!Sm|{b$C(8p~3-LE4RawR_T^>9*@QHt-@z=MnAG7C=jQiN{Qi|dR zTn%<#Lw~`k?K$SQMGXH(3s>>)9(zvDkz8YX0Wk^*jYWA_p^nH+Ndr6Z3*{CVw=Rp_ zRU#=SU`0n$GaCEaC*Wjtg@DE#3)c_V?U0F9&_zs2x_fQN`c}r{$;l@ZOM@sieGY5f zipEA4a=v-jqdD=yAC>r%pOyxyTOXL-S;h*G>^uMaK%40vO2f~FHayHrT2Mf z&?uCYRHKta=Gk&RnS_4KoY!7i8+*1YYxp?R^6}f;+}>?=Im7p@347BQrcd|iueOB9 z@5S)Ml$((S=jp#PoNIBPKHj4znfvZ%ZNicU(JiysaRin`>n4gna!gYrMTdZuju)>i zo7%y_~%_Na>w} zO6Pvg^VI-5#mBsxXoB*7z8rhqljSP+&5Pw->I<29AHb%~-HwO#BuG2?C+gj`oLwGn zU2mraXBLN!5n5tG{0$T1>B%+pg&CZLfwD)|`Az zT&0^6=UTi#(DkXOXFBDbi7+NX<;DH|+sA~ER@|DNI}I>w(L_g!P_oX*5b>R#&sJrv zQd6@f$0Df2&nZFc&a(Da>fI^=0z9gLPn-8iNss!iuHgDzdh=$bDMhlsVMrLex0l&= zZ%vqmt%B&s(^ig}$@$J*Vrns5I=XBV3-*?YhSik(eA5o?WU&baMHg~nVnZ}+7B2DE z7+9kcZpVVA$4g6jM3)7rFTNs%)$cG#D{$EqS>R_BoJ$mJtf8ADPUO`#bl_}QuU{t?dUW>9Y7I^N+&8c4@*h@Le5@;p!DF#NdR_jJ zciM6|phupj>Ev;1hqjuRFW@PnqFx-gMoFr&65Gv0t`VG<>5IET6rtoBLg5#;WD##U z3zn&Vx+hP1vVr%S+PWm6l<||GL>#Ic|%Ifjt=p@{pz0=nt3q))EAW}jJ4?+m)?gUQBzm@xFz)J4ne!kU;!hk<r_+bs9}2LZGWO zvC!CkU(cb-J%6yse)tgCS}+(ch+>0vuapqbg(**+NL^^YV(3xI6? z?&HU)M(xySwI}_kmNh>-o)y1KDO>B3gI*YWk0+$EyS5e^2o3jWP6M)O+_4Kg13n%f z7R+TvTa?7sxLk+#{5+VK@L>7TVC0O`@r%5P%pJ`JBR(Y`r56OZq*PT?M(QEzYD$%s zPwifasT`KuIxu_Ji%w9p*v)*VvoqRov9Co{{o@t1{Aas(WgB0Mv2g>XWt-Hr+2@R7 zxCO1sx7HW@C4H=FbM-HSPh~?Jul3^ZEVaH$LNfbkbu^kwk0sbGptAB*;WXssC)|@0 zAJzM@FR6s1B(m6izVz6fNE}j3wVa+)%H;nx`_@Y-HkM|xC;M%qhNP-gUS6{&x<*)J zF(&LNT5Md>i&hgV(Ow`IY+o*C!sp&$wy373=l!NjJtHd%ATmQU?jEZyHx7$+2)tTA{JE5m&$G$JH`~r4WDR%6f0aHAg7)Er}OC85Gld z_r4)&f77zmn0veBK6n)2Td!7glT$JaU}7dEFQ;@n z0-fsn@7@WpnjcC^MoSTqvakt1IFw1Z7x(s_)DiLfP`pnC(s2i9L=Owd!;((UT9r+p zVg&83G>3Sc^F;HLV$3n*Gnl{05cq_Y)B;&tI1SY_RP`z^$kE3O=^Ab}PjuaNxYppW zgi-dvr#?$F`$IdVlR%@jluj!SiwIe0pmD#muN+>-WZEUq{z ze|GF3kFuMFwl1M8M9`&MF6AD+MD4<-#ez7AWp^GtU^g?jqjEPcARnr7d(~u9E%m_E zR{EW%`U1!1teV%C@Mviw(!H7Jv8nfYZyyYmwCL({ajnXq#caOHZNq()zJ*>q`F5fu z(+e;>p~!I4AD&zdU*4*QZXro-AGi0nkQrp9eam#Y?}-q;QR5;jD)Th zm$@pA>5~u9G)Ko+QrUOu85qtfD(3u~lwei-I!D|eXT0l9b(?7)_4x4bW1 zIo*+UCOwZnhgR53HfD90VA3+q5YDm5utqP=&Kw7%N?)SoS{3ioCZ0?HHJmITrX0mI z@KAzT?Fx!%Pcaioq=X2}N!HeOHu)owg|ap*C;kIzj`T1jg5QJ{I&c)V_P$cbcgta&4E%!qzLYS>3{URlaI zXG2oKIFyG z!Lt9}e6g^F*cI`IuUlg+J}9PfeA<24p3f!zWwuabEF|NLufRmt;_i>iJ0V|+*g}He zH0KD!T`bL+=^t6lQ=0MPF_iywbeM2^Xptp*AhKH0=Mj-8?bn6XG9`*#hSP(+Qp>N# zCGMfGyj}=tL`RQJ2BzV0&{8GZD{)d+R{0Q7i&0#==25%QJ(j;ghY^&F@@FE0iuXmP zpi&j<+h*4H_i26SYJ$0Hx(v~s-l)ii72XQP^Yss@`yBQPM4aqE zqs#H_Wz>1-GNvAOm5I0|CG}LFj#HQJ2v-;ockRz;rS51}+<12u4G3=+&hpJ+oYTku zS;RzU&Uf4GdXD0J9r{*CXbBM|n#mC#l=p#6hv;nT?QpT8;-hl651$-494$v2OFD~r0`LxkuceErHA&q?w{`T{W}<+P3NP|3*)Sbv+Q zwmT_*jbi<3Y;I4e&^6+BVJ7(2-wh0ZCf-z#eji%9{CFHl^$QUGkoAlU2_A55H`US4^WJGQp%$Egi` zQq9>KS+H;D7+=24%92#gFZKz|trs$Rx|)R1g+m9t^xzc*^^Kt&r%!@V=;FjBRH*;3;lwxuDNMvYC z3^`~y&u_bGN(AVi1GU`7#zuSda~WXxchL)&UPfU?PfUNYxTeUr(p47_fISx`rO^7S zJ3O&l&-ylrsKZY_rCVP!7&3N>K{3_19@$G;VMc-O~%3DMv)E& zRM+sR3#2pE>x_6MNo65Q6OJfcIb&+ei;(dFg|cAE=oL^K}S<(#m2=WNPOq`h?7F8gpTp2K#MQYr0+Nyt=P1{ zQv!Ftkg@#>a69^(*0;};s0iQJ)CsP7w&P^7Z`lsyL&N=Z-?c+_UgJSaAJfMxl5mnV zy%XD~ZoDAJF!8=S)%V-Rup-arS_up;9iW7c@Ou zFPmlTsvwd@NCLcRQ$V;IbjTASUt4hRtvuJLw!v$&&P2xVuh@=AW!4050i)2J-phyvc8Cj-*Zfasu z`)sueD@d-PPAlUUG|r$+jdzjV#6jga_k$;2-gC6th(?j;JEhN->#@;k>3BdDDp*4< zo)9O*OxqJv)vVzwSHJbU{44M)ly)Y-7<^wrR>adEXII*l$A#rregl}IQ? zRQVRP2ap$sX`wH$2C@ZCGpANu_%d3#cAt&#E&KM=XFOMB2uN8%oJ^hT0K*$fq=fjla zvl!p7_<8meJ;cUd!x}CtE&OizL6v21@_jd|jjbx_$3bU8YQvk1?4Rl{2qQ6VUS1@I z8dIqY#Y8|!1d5A`Q7(v@4*vlM$F+vw-W28giaTXP?@EV%Dw|P{GR{ ztaRPtYJz_2ikk3~jp;AWi#erewJKZ-?jp7cVTFB!#@gXBIZ!e6OPA->)z9OYar%#L zoL|=)-rsW)26^rGWqrs9rOMwPDM8EYjR~~8&>$FTYGPbIkxmeegho#Yh^kwhr{Kc| zJV9Hv=**K+=7lP9lToVo%!ao~@bL)Gp9s^!rdIrhDQYe8MH_cunqhr zLzvgUXm^j8Zu(JHVXJjCLn{Aj`q)uqa&ic?9+mWsy}i9NRzEDdsP87t#_9Z=c{P$Z zoSF{VsD^tiz{a5+bm=`3;6uo)NV^fCmJSUI z^Lp4|VW$az`XTdjmpuK7i_s`|mn=(<$;OxD0yYn_PVn{DuZ+k#MWSS(M%8`o? zZYJ`$9oQ=;2!!>{ST(x7c93JtNXJUn4dZ{;-MWyHAIw=3cAQA~bGX1Qy5a5XG2`jVU)LFLDenc&0_PeHk`$pEmR^~qOUY1U)adxvAE!3Ya#O9)Mi#vM^VAoe!+ ztUECqZ{0j(U1Pa9c%xs>2e?nDx35q;toGcV(K18&P5}*(x&*AI=8N*17l{f7UqgGi zwxtEju=%y^9^cSc;DrtX3Z>^8Uzia!8(M4t*)$?b30ej&=cb@CCna@e)OiX&LC_BK z+3reY9}1X}XWNrQAY}LfQrLa$85tSlz(OtW<|YaabdG27ZMu?iH7gLGA_ijda(?zA z(H--1wlA97@0fK(+-jA4*tRggG4x#3*zRj9o2r4qM2VO&G?138pZ>XbAs{PC|Fqqw z+c_{0fZQ||0VM>OS?ge{h5*(mTP_*WZZN?BI71Vd>(G=(L->5)2HQE}zFyPE{`e&h zC3K5H6XuYxI*qzuy}HCD2ZUYSGvc85yfjur<8e4N){!^nC%&_{J_Vgm=+(a%5rP&u zxwyLsngUr=)E$}+$@jxQE-o%Uwk#|?|8ynCxr<#pr_DVxCr{obb~(s1AuIU1P1cc4 zvP}`0{2jH#u=x0p;o+m3r%}Rx>ruB8bA)$P;7Jm3yFz~%o?pr0{q?C3@kdJo1uzM$ zekn3PpPT*u$Fn#%IDl@cH%@kYpg{t=D7$FDN9hIwhmgw!cKo?O@ys zi&{cQhXVSPP_TOvzp6Ww#3l+<&~IGZkTyA+=7(CK3SZk9vNrsUG7c zneC_mY{vvxzLb&@?pev&mlv4xfzmP}D(dSAzTjxd+lKCir42S=oRPp`!4j%_A|Fmq z)LJ2I_9fI_EeYe#Wbgvy=rcojvt#}~+P`n+JtlE=O4>c#TJV{Cba?!9vJnTIW&La+ zkl0hxKn=YwN7oM}=#R$J+^3DIf*s3oKTXYqC8?~NDkhpgtT3FwemuCb~eJJoSAiIeSIAw7T}5pY(|6u9UWaxQf*@Ao}wrFJ5J1!-JK`y-SP>0cB6N zMuAx`tI?AuX@EIct=gpqLM|RyCE+SBFE4U_D@t(SuSP1IKn<)LI`o-6Ke~VH=ya!p zSLThS4ZI4u3YDhk2e_KiR3~rR@to4p`i+@Z1l$6y3i{SK1qB7b)Be%@_ewE9Uj$Z) z;pePqQu@h(+rgHXdbW(4TU9p?ZQm)EZpnH1V9L5cGB!YgT)leLW-ieQt_Wl7`6fO@ z2I~lZ2gD4(@fGQgb>7r<@9VSFK_$B%Tm!=WuLb1P8$V5kaY*g?pLgJfC&g|lpU%@9 zFY29^Us&w6U*xOHN$oX@7ZtUN=%W&_N!hCHdF!_{z+?KBNw5{56kOGNXG%w1*$iA4 z7!gPr1e=W@fPzAk_zE$J5u}f2vmt z)dagE7#3fe=qw`a5hMESCND29qBMZu1M(_2aDinlfq>j;CwBYPa`5f;HoRy80;buv z8vnaOu4cEe!vkR~8;J6RP$(x=UENoJ#_%^p85$be4q29dDR;cDOR6Ils|g;?iCM4} ztrn=N{Q*2RiLihh88IL$0hH6-PZ9wEGfoHtC~b?SV@nky_t_|NM0uQwMFm}dJmV@i z`U1E`T#?hG%`(`+>j#T@6~*|UMt6){?~#b&32DvZtVgc7J76jG6p<6OuzL;Bh-(zQK&~eD(_l?mf~D9UB_&Xa&Ru$pm|eT*ZmkL5qt+-6XF$%a&qSjp zUtF<5LxT+@MJfv^Fr+r>uDv}y5_zR#G=Tntln3_o&BJC_eJjgnISUKe_5XzIs7KR( z`n+Dk-|_xUhc2(vir({sg{&$w|FD$?*Vn}&1x}8#860GUOsRigc};chEW~cifb^h# zw#0M(GVfW~OJ#78gem$T@R{MA%8fX#S9ri)T zz|7Ko zJYwYvqIyG2Wb%wQ`z|Yz*8coSF~5yzQoPN=BJwIfU-j-iO*)=q%!Ky^iP!$x=s9$} zdL9!4kuL$Xo4?{by?n5*RBA04V&LWLPu3PhQB++AYA93)>{2P*oF(=WYktE+$HEVf z51ZOcU1%QC=j*OvvPSnC!*xq{%TFA-DGE!{2p2fmSO&Mng zWZZ<+{tfc;0l~pf2cG{0%=Q`@80nq9X=x)bWY=Z$cbxe?!nSda$34V|Aq^-}E2!Mm~5Gm{|5BY-$fENcWRsYP+^!zmr4%w$q zd6DM>=KxskWSn`fq`SKq@Ad1t+mIdDeg6Kv*%#-6&GB|W6pPPZ;kSw?(!6{3^8vo# zNofgTeCcaY3~hr*Gh1s6y#)vwW|+aUT7<{B(4*)y8RBy{Ican19u%$L)*@E6J+Z0oS89-5bEU;ukRdCl@W9@ z;HV1S9I9|yZT2A)V{u7>UEaMmyYJJoWMRrgYCzWkH0iM0N%YbF2yr4SwH|hi-0in@7crd)f4xTQ)1h zg4*m+R+|OssJ@y!<~y#n8IS&^Kw)XByr#KXeaPs|PTix6vM zuC~KT^lar57JLufL^CAEp~=bCg~xCdJ^&91`A214Ee3K^N1 zgU_vbW7i-ZyvoBv3Wg8gzBO@jmEN#Um! zry8^S>pvH`vtxc26?PdBmhAa&8$&>L>;Ns0HnzMIdq!J`3i1?bx& zkuH+oLUx=FfjS~A1aNJbDnj!F2a13w#ZUI=q2tU9$p`|Kyg78b)qTenqP|JU)vTkx z6N(=Zg@|lmpKRxOAYLwp-#Up@eG`)92}p&SuUJ=lL6&iDVPPRg%&ok;HhHkncnU_q z1l$hz&?K_Dk=)Fb$~FbO^hnq*Pvho0(;96E z>xXPG2&sL*10qSL`phJ9g>WrlkOJ&)&KZtXyFvI?G0hgV)I6 z4+(W0tWrlFN*oEA0a3dL1)%k>Ylwvyk7C&|=uU>JNkPBd@p&z;DP6iZvDp`Bxtts5bWJH4eK~HP!wyJ?Vtn1n0 zd1|O@0>Ij5(4rZlJA62PkwjBShyoD8E-o&RoWk5qGY#Mz8e3ZExw(l7joV+a1a<`p zcJN75(_6jHDUA6YVL`hZ(TxJv;RhDq`0|2fUo7wAz_!<@wo}JQB|kV;CSj$#X|eYJ z!fn%gPYe19@9xp~`1l~}QMoty%K2w@78FC7rtyDnJr!d4klt!-HuGN=j?LA&1X`E!fEgTDt8r; zIX+4|D}o)fQG_X`=K~USlF}19c%>WF-Ug(92%Al|1br>oOgD${adEv_0?XE$uke6Z zM6wLnqlnNQgbxdA%~kX&3T>r^IXDMRk3$<1n@Ua}*kEzAGEawhBe&mHR4=_G#TE!1M znbh6$k-<-WkM~4oS|kACHN?q)Rv4lo2r&jbMR+*x97Nt+}6FQ`{T7}Fmzl6yH2vPIlEQ7Jp z*OY=Jx}{c4cwCj9`W23dFc&&HI#ShLgOcG@xKEhuD7q_Y!ZEFq)%~zDO?Iz4`NVf` zuP^=?B!IW|o_=9Owjq*V-oO76am`>2+W8OAPgYM)2mwQmG!Q^hAqbR+kTDO=(;eZJ zG7K0WD%<=noVZdGHLA^a|K#MP>g{$qb84qaMi!nj>yy8a#m%F|?+o_lPNq_>6ws~- zp%JGO#~FDm@hMhjfcI6J=(Yaba(%%ot81|FA3>QB!IF1%cdvsq-^2Zl8EkxfzvN_^ z>Z6TYz}rp%_-_vQi6}eFrl5r;CXW2vBZUG7Qt0{XFQvY*^@_1$0=Tjm5f@%0?1rkt zSqL6|X|bJWBDHK*8&@Qt1x_cMC6LZ}-cuNd& z02tk)N1L)XZ_ZTlYNYN>EuQ~-c0h=0`NdI!`MMi8UPt2qfo5cvfK#21*9ZOV>k z^B^Lw>+iqx<;$0kthDrUuWO-7;SFkK5RLwrhs@u3emAiDoP-m8mkcD}pXgIZS=n>Q`G(Z#Hs{*?)wAu(^vujyk^0br+rx)+ zqaLSj-;%{^cF8iRM-yKwHbL1P{v?91cvsa-X)7dVOq!+7VSb_x=73=2i8Fe$s2?ey zi)?(R{}>fHey0Zei-`>Ou^AaFi3&Hwi`7(2}4sOFdIOtaT?LxKvP?^(~Mz ziTyML{Kkl)aWsU^&9jUwdjEEG`Q<;4N=HSK z@?w;`HHCTYC28y-jPQ=%8NI6q0t``s`uW6<_itZzVx%QlrBqhdTaB(gOWr$wxDjq4 zCcJ&DP~iZD(e-wZlMB)>&aan+l64^?$Ag1|P)L<~uc70}7;R9~KkMeI%p~TzOi(c+ zC3PTpdsP(5(fUFQDUv(@_tUwYB&1AX(nliSZ5Eu&-8{o?7`%1g_M*wOLh|3Bgstwu zqGY702VE<5l+%nSQP%~Nch?wTa zqi8dJZ_ka5r_kBHFUjOvbjeR@;;BtUR!XM{(V)1uViU*T;qvcWsyNoInJ~w0@DC!n zEl1BjH}{QNh#f~#(#sL=)kR`|0xCb1tcFV2Gf~Iuf{ecz`WI1*BoWYO22< zjdc3b`0%YCKW0ozPZyQbZM_)!H@ZN;mEi)6bPMUz^HGRHdVD+5$Z~U3)#B1^upPOC=$R;)(Ua@&wK)`u<%iA0z@}r)1H%i8|l3d4D zu+E%01Ju8OT$@;4#{UJsO5FKKZHTCtdeiB5a*f{HvQ;&~4}4le2O|tHc*nxV(ehc1 zemra4{HOG_Gjrd`>cnels;k8aN@J5z0q7WMIn;sDnUtWn4V}sdRt3PqWuij<*2G^#uW*P$y*W&L`SUrcJR zw2~t*CRMr?@SQ|ng}zG_h!H1B8*dX zvE{OO^A@3GFgy6T8LwU)e)xMeD5Wa zO-YqxcH^gI`Z062mza2>W6xYw^U2t^pDOzxxs6mMvahq2i$i(Uatr;o>*3zEtw3@a zy&G5@Huia&eZIGuVr+~}nJUJZwi$nSp?-xPNvp}4S(dsaLTKbcn8WtFc;pGLcqP=+ zL5y^{`7spSkBw-iDUWckh`D2$MaI2_CNF9QsPRK@2cs}R6 zl)uMun=ym24!t&|He5AEsbDp_rU5l&y(t?0D3l-hK8lAWF*A$dM<%|5 z7Ew7NC))(4=kc2cb~h^kAz`oM8B5xlp^X?05{PZ(l^#YXI^q5c^wZ-BeY#K)zRqkf z_;|zS;Ez}CPFm0g-y4U@1B`M#zCO?BVuH;0Cs3GB$^4Q|`IimB7oxgj2l%K`E}TTg z;Q#zS^7UM>*i2@DH1C-+7%8eOL?m5=PzQoj6KcS6l9F^iqh=<2m)=gYvT^v=JqVRs zKRh@{L)BD6G28o#krdRY?1MmLc7Zvk8#-x#i!+U=1kEhWMj7e6{`Bf<^q?Tuh-j^= zW!Bu_=rXo9Ht{mmj{bQO{e=*FwwJ4-7ffcYODmX&-_`1`H{wM?SWF*cx5IP7q}XU? z#T06t$DJwNsi~6wFAgxFNJR&N46Kn~RcJeUvGby-y7lLTR(lt-?PU!u;7#xmZ zSYBSXgzo(P%}|GkO1UX4pE{H4^O^fadT0>epM!EXlsW;v^scHmG`(HvzNz4rYZbej z+aYFpNeO{BZLJaSm#+SVqa&%ogWrbw=aXrUD+Z2RMUu|V1oUjZo=#N+yeQ1DL`9|M zsvuRr3bBBpPG@0??PgnP__8R*8`-sGY zXs%vu2>b1kX#q2fG17SnXiQKjRO!|YakQDAf2V8zT8`C6yWo2-{s}ptkMQ@Oyu~e^ zzf<~ueJ|u7#&@(!;#XnjU#=C2f6DbY@xqyYM=k$;i*{3z@*7ybis8yXVcz@Sw~uVv z>&MUAC71tT0sgqy7Y+|_f6u%B&m}_{@3%16|9-Lx(G!{^T z%+U4x?{A@d^!`J3M6&Pbu*83Rt+>-M#BqPD{*U=PWQ+Z&*8h7;zzn`F1qdPiIe315 zp)6Hu?*6cg;h%3Icw4Gw=P%Q%;Y^mdpQtkJ+kf5=4^CC4*FSE) z2Odww>?Nk#|8yV8K!#vWfc@Ve>VcM?+S$h@H38=rYf1mxL#g?`0ia;m&Pa`xvmuAU zo=rK<=zrgx<@O!N|I;S+wC-zM6UV9g=)yK(^6{!f!$RCoK&@ZoP`XG$&Q3;nY} z{_KhvU#tG3`V7T?zJ*$Z-xBtCG z?j(5tm(TBex4&$~n0ozhN{QddwSW1&{tv&gV(>W)|NCR652IZ~pq>q8K}F;Fe|*Zn z+E=<+zOh@CQi1C6)!aHA$LUe(HIC4PVz0d`yaSY#=|9y8qekL#dpEj|c_wlW|JBh0uM(lrk?eI2S z`#;UNKNDQsf5eo3wzjn??f>2eBf0y2isAo!i#a}=Vu){V=;4v`P<3$YuYZ;;uXz>i2DrWY3Z%DU4+- zQI@nYmO+G)eW|RaB3ckxDx*lUBwA=0dtY0&RF*8MWJ#gyYqpGi?9E`j_Xpqd`~C6$ z^`7%~=5(Anb3V)cZ1;2B*L6LU!N6!n_CFM7XO{+}o}W1u+lh%5qg4-@XO*T6Ik-u4 za~ign1mXCD=Tx=_*mtsNrkBXXyOnV%(RMn6qChsjtH%Ue{M4+p1iX#+5?BHRl>5J| z?N80hI%Oii&S99%KDN3E2?V4n1bCr)-`xRI?O&k)_ShtBy8C9zpYCE+#8p39nco1`r-Jg$&bhj zeXQ)@z0Gzj>(67VozNq`^!NTor@DLhLp?%lvTWIX9u9UXw6O4U{6S&?PQ@OdYTm7A z<$Z76tXgfv#fp=%C%;o9-Au~X{M}YaEY(*^4;-}6AMwb_&WOTl8*91Oys#&e!lr3Z z`#m46w#z*MwX;`pH}oaLEM$OOpqWaRDE{gt_y9{79j!?=ee3USKt{da#=+i(J}dU< zz*&M`#d@)?0ar*p?|Bk_F~X(&eL08jQ(g@NYJxpB8%EKrD>8(%cd7({9;#Ip_yH-Z zHcuK0=kUtj_P$1B)YBsSt#tt#F6Oo5z`L9MJvKFO(2v-0aQmA#p1|Z0f55aO9KD4; z>1({Otn83y6=Zgh`*CQ8!WU@tqJ0c(f{h`c&THF(0=)k1&V2)8cT+sKZC0W{GXJx` zpSGkM29JtI{wp$Vp&m`89v4a-4RT=2FUqs^kG57QLPt@buQ#+n`- zC33&!9B;*bQ#@Cz7?#B25?b5H{T-{HVlYalseUu{uC;p-Ch-2~rL1RNU&SXUBMQD; zdiAV}bzt5O^5B@A6U~m}OAsEPCkMs!PQ1JeaLTUc$kz^p_52(R=BThx~5q zSG!W0C>fIYt4LRq7h{R>sBDtfBb18~Ov)$O{V^VTbBZTs+MW;FeZ$vAkl}U`5@j{% zAB*XZ-s+63&t{j3!Ukw#2lpIzUwir-!YyqRdA+)|9}l_ssn8v*XDCwUEb2#L(iGk& zn+krEPRHqLM(3l1(_)ex*P=VK9~V`B`);y9RQ;|65hj}~#j^U<2sJ=pt{7nw9t0Zr zjIc-5zX+LO`4c>~N-a*T9`WH2Rfx&PKvh>W1xHCjK2i0Tqu4#*ie!k38PXgnf|!IK zYgg>K0CAVm>W-?v7~r4$?frdhHBDp_8l^`x8IgYkf&KgV7yU2^Ebl&y-VJ2C-^jH2 zu}6&nhte_)Tfq99=Wy_wMp}Txqb>Ejk1hBm6{V{=bY0t+Tl=dg+)FnL z+Q8GmQb>Nu<@$%*FI9;N~h9=wl{}Eih5s$}ZdV~T0s@1pM zHJ9V2t}9jQ^Y4I~vHTNUq?)uUMKwL9(gT@72ah6O?dKd#14bg}mBjE0+caEKhjG zUxhhy~5&CZW(jpLYn zJvhji*xIZzh$@bHK)E9=RKGq$xwh*-~Y zxWx(!I2M{)yBwHIMwE}v0_-*S%;cOAm4O4;jr|^YU|5JKg*e)+dR}OXM3gr}ymuoloyJzud#;oESB;}serm8NA zQ5GFb+n>kA2JK(*QU-G`6qo@XgYx|6PoDxi%DBMu$UGxj^uPgnRDE09ZAf`Q&h?{b z3l$Vz6Gfvk{6K>OD!q=2i!|6<-bSpG$YgR=O%1aynxO2(hA<(4wP$qv`1YJBGCcfG zq#RyPaTxwyL4&WeZ?^8+?%GM$yQH}qYaM*v+>j-kE{N%UeSJyoF4=`kGYCPmS|aWf zloBFXcxBWxn)+Tu+iF@`@**5aU_*BT!>zTzO%x=zfXYq*`#LEjg9R1;W0;hLUSK2m;f(nql3&9Sc6bhWIMLY1K_6 zI228W%-Eoqw^|E@vR|Jpo*cTo2<%R%9EQ)&UkwWj^X5NPdQaZ+MskxgSOU=SV?7vG zC@p0w)LN)wm|0pTf!GR#5TNe}`Z5AN-iVuym6cV|^(U(6-Mgt2+;a8V%lgZFfO;av zQl*PslZaJVW@e^0w6R<7hdE%`LY)jzaDa3~$H0IM=y=^X7HkljBFZ0(t(FEPa2oJE zOr);!V<(n?CE{6B#Hr8eo3q-tMP+2zz&@?G#X-o(y@F=r!gQeQTd7O=4aO3vDuQ>d z`uX#_plyM(8&Xi9SPW!3l=$Tvzz@@?R{K^uMHyXKHC=rgeOLTe5UqI*Cj8jl}uLo6ZF z(!PCaLip_9?u&R+K7IN$$E8JPaT^IZNG_@AAs`{x23&xuuV1wx9Lc&zzLxOOmN!}x zH)IL8vH-@=&`|Ij7@KWJQ%MYsEr!&7M9qQ_g1td1kaPZrcrjGB>qqAh%I4?rol^)S z2&gWbQL6-gFcw2-G#*}FK%HjDe1uFKIWgm7q3fC#TlYg&jNdC&|w_1k$fj1FYW#y?#9Cd3~SC?9Z zm9{YnI5%LqXz$^{jUtsZpno1LBeQy7317Nn(xGP{BzNHID_;2(RuY|;mp2uFUP3_) zx@h^Dw6wGvP`4NH*&vAk-Jkl=qwxQ6fAA`KouA)vO;J?z<9KUPrVuIr6kW!z(y*KM zN1a#Psjw0v%h?k$Oj{;Ehz?+2$Cfm=c-^2osG<@E>~EHLUXzDGAfrYhilWrdof8NC zEf6dZjywL7oZRZAbn@iMv20Leje&<_v#n}L3XWIkKQfbo>&v0CrSEy|uHPIOI0Gu) zq~zqyg@uKPL8!_-;qb!>8S=kcb&xgXw1dNVK9-EVWNv=D$+-eypmcUxf2y##v*mVR z;QQ0L-nHUDRS8K{?7BpU0^-IYsQ>(M0XIMcRc8Iztb}wa>U@4#FQOQMNql5v#C4=` z7tB8^Zf$6Fk}k14wNTbUsP#W{q%v9c3+x8pFjkUVw{8W^p#gjS7_iLSbK{`*AAfb` zZjZ{lYle8|)2C0jZ^9@qZVTI?0~#!Otg|MxQ_vk9WRlLBxb*Vmn@zpF3O$$pVfj&x zJ#Y^11nx7uZf-OG+~_ItbRhw2`V_2=Q7X%Gk4Qm5;@c^UZljr@=ZeeN{Vl1$kIp$$ zok=7TKaof|EmZy&k|CDV(z{Fi`!9E^0EaFCNCq%cQ&Jc}5}C`!gDa|+ZtWdp*Ngr4wB_-8uYzTGz7RKE0D!kD$HXnfCcBi}B7U90aygrL%$!Ky$ z=imG8v`R={(b*DXus{qBo71wn8=t>PM0s=NlypE*+ARud_3!xEl}C$he2Uv z&J()L#_s(2Hz$|+c*}C)^d0s-8C!TtOZpuenX)jOVn9$CpPnmTvR*VkM|az2o&mCC z9!G-~Z00{UyKeaHXwI^7SXs#)sZ-9h7(bR^oO4}U4SEg-XJW;;*UQ&9|HiJS{-*h- z`BY@>zphWe&cZUI7*u*!{_5~|F+{!!#In2{ z`JhVya!CbH*&3RfZck0QWyd~qZ-f<5PG0`z*)NZkN@AZq3k5pqwK)Y~Js6!l8Iqd| z4w=1oBti5FD%?9!QJmR}AA6!qt{6H9)k|5&9+aR&&#dO15#;LHx=EJ%2r)7x#c=V} zaDxt7``R^Sgp7f#Vz{MVc6mJY`s~6&e^P|n2Vk8CdX6>=@7co&bVhYp5#VLPM8(*~ zCLC6K5ztt{0{scxfbT~~JK|3K^Wp^^!iDdv2nAgi9MlI9?WSj7hy=Sx#9mTd{B!>` ziWSDQMm(XVr6mbwc^KlK+uyiEK6-Q;R4QZbZ&*r7N}QaWND!Pfc?%eg(8WY?xSpZ7 z^FZ3#w*w(bA_S$1iV8%*Qx?mA$a?;>87muGA5d=J14kE;(d-7>TO5d~rU;YQ5t`lH zNROPNV(=T6mc-Yuxq<8hDT}79t>8&3tFGPOX$>`_&1Rl_R?qpn{rz;mz9ri(0t_K9 zbQk-yTfzi7Q9NUSur(1LO+!ylM02wR^y$-Zk~oq_8d+K*)Ne3hjE7kUXv>Ol)EE#{ zR%lQ#8z9<%MetODak3x}Phx3zqsf3Cjwn40WEeWbm--B=YdVZiqm~KqmuQvp-8Vm|}IzFIHR(<($2pO1@JrOYFFUn>r zgbUkMwo>Ls0jU6++BqBl*jRufx$WCtokcj7s?^$dlchT^Uc9J?r>cCetZeA)41>n* z1rJya6BADAGMN7Xb4&5s{L7AR*Cjp_2}qB^kf?OzU#@(-$0}Zu8M)i9U+3P{jd$et zL%NnPD+P0jv5CnoP(2_64o+PCDB#t3Q$YFZPf)skg7}kwys9Yhapwh2UpZ%6GqXV8 z|3WS3nLLMNWT3%%R(P;)a;buaI_PiIUHw_f$=O-svSCk4S*i`*scQay1aMfCu~@gX zL5i$Aq!#9A-0(EN6W~}ZLp#SMgdp?qn8;w+E+}}_$6&4^G`vR&5BpR_H}%w?^We+J z_5C~733g!w3E=y?#c8uU+jMGW!r!RW##moZ4~{{Vq^GBsJ8-Vzjf+h%f!D?ENxMbN zy^y+Hy$^EUl#!O7Ca_X1qXKX}CGi*FB4 zns2erloNRL_;Cm^#%XqT)?iT~AOQ{e*$>-@urRG7&eH?APIgB#nhLCGlxrU0P;xtT zw({`|PZyuJq*`aztCI85GV*plIl*VU`0SWpCr#uJG^&7BBw0|^##b^#q!h38FI-c+ z6r^*fkXB?oL_|ynehA>harU(>Ex)B>&;FGF#$A*Dy|3LI5omBMyR!Oe-7o#W*?6{l~?=rfoTTz#D+Ra81N zqhlv*!9oC38ON?UIgRkt1qOO=VPn%U=02Wjk-empo|)O@g6HF7IVCsifJn}Zrx%V5 zR9fW>%-%_qgpISV>V-F^V#>i7l zt*WxFq6^NU3nu;rXGCU{@l&@}04Z7!Ni#jbL}1RkrJ-(>gk>)DQ)EA=FP_&?mek}N`5TbkOoo91au%=<*EZEX?z74B_sfLAW~?E?f% zLQoNdc>XNtxi~m?Fhj=!p&OA{5Cn<4mi93zyvlYmef z7bAEmD+{?(XaS8oqIv=2F}yMRfIIz^4lyHD2ymQ0P?~S#5C9&Zjsn_u-+C3t%2JQQ zMxZl#-*Y#vqH!C6#G`)D>-+(71iUNDKgz&|`SJR5hkZO379JjHwq*lcG)wC%qn>;{ z{+(#TgGQy2o3w|qgPXM00X5LBszufZd@p;xJ|h^OL69geJpv}dbV8f6$og-nqUwj@ zbu}fJ2-A&d0ABwhJfciD?%f5nwSHIKvIb|-bKm=aCSy!O4`w~MD+k2+P^ismdRiK0 z|68CRG!E~^KiGgnp6d6%Z+3m=U(j_Z`%j<=$p(&exBe4|#OhUGR29~s;A}Dgj-xk4rD?GGkWIo2DLr5r1K`zS$21 z1AN!`iVfT=N*Zuz!Vex@lc6bx{roYvR>wg4#`mv|$hT(#_;K}jM&EZq*w&u=j$3OO zEDE@ z+JQ#vcpt~;5x+0Jc_XSMcC(DcJRFgntQAvx7@1Z)5_SKCD(Bhf(_xC$qe;PX- z_tHWdaF|znxA_2kzt+Lc%`0xzp2@+TnPot|wk`bR%a~f(^j1(Z1gaUwRQ_Ea%ce)i zMg!d~r|9>K?A?MTd>fayf~yk8hp&(w)6Vabv5PY@-@>-#!T$c1r=6xRQ)KcB7UOpb&JF4MB@ULp1~gZC;Ez4C|Ba>r`)8?9V2s{HiM|E=nwMKHU0n!x_Nc@85a=C{jGxuUNy>R}SAz04%xwyED zn(kI>2V;G%ajgCde)#b6QFb~bdplRa2c7nvbb52r>9z20Jne+zXu3_h6AJ$6X&Y!| IY1-fVAE$P2$p8QV literal 0 HcmV?d00001 diff --git a/docs/images/full_use.gif b/docs/images/full_use.gif new file mode 100644 index 0000000000000000000000000000000000000000..608b7b4c5c8318e5aa2e7914f371f79c24600738 GIT binary patch literal 3453073 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%0A|pvDX}Dq0$`YVBS+CB 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

~m2SER!xV!gSa~EFR~CKYgwOAd6yM9OK4TVScr* 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ï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

DPIBdJ!KBlWc%2fo~RRqUXgw|Aq zPgO)-RG`?Zq7A{qaJT!DxnD zYs2YElf&`)cx&UUd(02>oqSu<#r9Avv+hJ&^VR-ju1uzUd&|x7Vy(r-M0@Mq-#@*f z@OKIwZ4XxmGo`w}JKCS_&bLQ16*@a!p6;)XH-2|^!r=fEhCkj&gr|7N-wKx|yJ8A$GYuo*-d$gl;YNif|CW+*7y3SntD*a~GIVAu}ho;TeN z=i4jVju5;(*p7svFz!TsA~f5HmZB@(iIM$yxD%@=!MGcz`ps-NUfsBOH$mI^a5qse zkZ~``Fu`mu*|eZ|FU7Lqa4*$%fN?*~ao%h{-F2^cKjY`^;eMt!3e!QBKcV?SHjJ+1 zASdkO(LrvM1k+(&+&A;X{3PR&!-6#Dqr<|iK&GRjyae;3;-Z3*qmr_QqodNQ0XWlf zS>3$(ae32T$#F&7?a^^%7Yg%9RUe_nN%at2=}FDl$K#XQNeSlDy4i0Qr>`xE($j`j z=i}4HKY`3=O*;t|XUzu%rDrWC4aaA#=L5`t+pgy={;nUi1^2lwAyvyPRAMQU?aJad}=zq@Ei7R<<-$~O#v3CxMI;n38)ySaArIOt z*|0!7#OTgYT(iVM>Js}Z$?hg9x6l!F2;`P?KQ$EC>7GZyt^{48r)NPgP#^v^i#Lw8 zK0%eSqL9VV>wewe1etsQO^#tY-rp{yWMJYfpDO@E_Y3NoDrR>j_D_MrkDR;7Z*2mjJ=Q@t z0WH1^0MjCiEoe>?s3X`K27S`RYLWQt548iRL{Sr?dPDNS7q+^pQY7e?pE%_?EN~~c zrsVhgSmf=3UGj1}5Tp3|&EzQ$$x;vzCxyu-BCOv@Y2yVM^Ec7@+Z3rlsc(h`5V)r) zdGZWJr=5qT-;8_3^^vWo5Py+DoDTOq-fmYd^d?rMM8;ASMOK9(5cFLpG>jPm?Sn_Z zm*^#SAnko{8Xo;IVV_XFn$I4~KW2nGliW>i%xw@n_5%YirN3{NrY0w$ zld+Nvi4v7D$_K+ZYE+}fA%RJ~5aS!Ag8M{F#z|kH;9o}gsON-A#$Ti&C~#!L_n$Hn z!dkw-6N!Q!n`8FFi3#-d@OSWSYz`q$k+=iNRM4YJCT08q6h8br;!!30rX-(FObB4=T*lDuYEz-MtdYK}2e$dO+x8^ko5gYp%bLp`rmSy9F}WHwhm;7ElT zGFPM=pQ${4^!3Z*ROq+4QqBGYwR-cpnh2*-qj1qTd;Kb@^Qx)5;m2AA7z^skdSIuj zPZZSEf#kDu<*Rv68h^lO_C$U8qHLKq!qdXQ^i6d&c`mdjOWHBtq2xz@36yK}Yp8o% zZQ55;jQOlU@;)f4d66H+Y_XEh0A~)eoDXeNmu3b0NF|+?z|`tyY5Dh$+r|!TYqfwU zc@DOS$PsFSDZA)Q|91#859+1+m@4K5g&0Ay13j_*nuYnTqp@i zK3FL2%jD`m(mfJIegV%3E-#~J|5{S}ukp_T zoZ&hICwepHUrRAi02U-zdYD1;+=a~S-b)jyIoEBxg&eZyB&Phh=IVu5EL46N+YPmU zo$UrzPA7r78d7JSRt#?1-)u6-8xJ%AIJiD z>n6oR$VP?u0bPpC+M$>7=dO9J6)gnd``!>4nTl_nfYYx9NAItkh}6a@Th!DWR{$q_ zUDhD`3W+1t8(2^k)|s3gNm>#nL{HEPDB?|V0;M#E^R)dnDP+O#XY~S=tL%zhm_t@;0s+MI2LO<0h2T+xNoMcjhN{UP!bTG6iW3 z%IPftnEyCYn1a|EWq8%WMkb!@k`D5&AcaLQktQ$k9lPy>fDiXpK{El{_8L_;O22}@ zb^9PjQ_xd_uL%PPkw@m=yvtL8eO+Rp&w>j*pTe)kK*lBy1_qA?Nl-^3E@P8Ru%q=r zq3Dk*L7DeLD?ijG;q`dUyr5cD&tZJ$6+#t5lVAxRn;w5$3O;8+hL6a6Ap;9SyVD9p zL|;Eu%eyhi$la+{-YZr&DWGSEkelG4Q--j@e*TF47*@oZl?#~Q3JZ0G4J?KZn!;W= zlaa+Rm?;eWCyX8x{<}!DhaqgpHGEh-d}T3w>^|&AZ`dY7_=aiNtZBqfQp758_#$6; zzUfabS45iy=WV)3Oa``nI#6Jd=yOx#zr{$vLnIZy3-H=9n9?eh|G&97D+;v&s-d`z5A#D7?othUFoe)huS9DTYBY zf*KXrPHc}4H{-s$XMN%WnBhf38KXt{E zaq@@epX;33={2^`lFm2Q9u2UPdyHM5aH2 zfQ#)IF;w(r(i%GEcq}Tw5zXrj4PXRhVk&~zFiL2G*vQ~1krK0@(Z`aC z<=WQAS|pE>Xh>aaQ@;99j*@16Yiu3VqqLUp}(Bex7JyB`uC@9}@RY1+{Ef-n4*iqtLKK`JPfgCV)`J zOOanih3-I9Gf>yGOc{-SGiG<5w=}awH?)qJsiQK*{CP)mF0yTw+8G%N zVm7atw?#r!htp&aO181Z*M2u7TzGKe8;%I8AmA2Z1T9em(J^b#QuX^VP(dsBzyhQu zo28b9zq$l1tF(0<|Ko+CW_GXd)a01|Ae>z~SqL~TE(7D#(cggU!BlEqIabYQC?;E1!O zwzbnftcR3pgbk|~7>(jB2v7^_k265;0-|RLf<6d>g2O-qmgpra!*9W@xuYOg^VseC zaY3Y(<*iJM=2qw`sF$prz^<$7z4g5I*kLH}*n{sZ6!@Wx*Z*o5Q6CZ{*o`X-LMyA- zPUw9bHcq79K6a1^QVOHdv_Cs)oWdx#3xjs0fg`JWkd)AW%XW{Z@ds(!{?;I~aE{%m0bv_|= z(iJ?}g{(AUwmkwagB)rJMd?kx6CJ(5?D7d7n9*coY{_XlYyxo%l17iIlTXf#4Nhv$ z9&4c&g^m5S82i22GAKB1#y*X`I!~|EYeWX7O$-gvs(mcVv>+-W7g+3S1qqPV=P!em z9Y2Pu*pG$k79tIxWOv5q^6nN?KD7Yn!Ts1PV+JB0{s$%0ZWqu+tMR5U@cc!QxcZOVFmze_WI^$Ev{ui)y> zWjl3zuxk4w2BQP*~!}!gEnz}ilnXF;-kv}*q2iraPsrNq<`ywaY*_;A6uQ+C;v6) z$<#l7a<4KU8lq#Y)|BKHvYrFR(uMwY{jdc){T8f&zX){qB+`bB*@*1zqMP zL+2&#lz?EJ=;le|1>Ab^9r$2@IReAx3f=PxydHLXA0}e+Q}pi=uhunJXM#~$WAd6a z)!nIf_~!jO7y$pPDsuC!@-IOhw-n|X$9Q)R8xQ8Y+czI>v2|}jUNN{A73-zj7dosD zi{ssA;OUCX$?tbF)^`r?PTeE#Jl#36oI zwp?i2^9{RY5o2iH83buHkLYhU8KB7M&8KJ6rG*z!34wbxR5<9hI2o9^g>;YKf zOC00Z3d5!8U74iUZhoG|%${5tzth>y(#*a>mS_OV+!iN-C@Yo_MxW37V*ElrrWBSW z)zL5h>}3+Cd|&^3D`KFwrVVvsnk}bijR`-xF%>OR9_xXT)tgO)U}iQ@kP(zE!A#>d z+d{>ww0r|96J{aMQ^o(`OqMQ<#*%q#B9i}n`qW7KS@;@Y2Q`}lzyAe;X>K1*xfw-D zw9h)jO`|c?naj!*oy?a9@^(dBaEl#$Yu%D#y;twySCBCYG&xzSx7lA`dvZBv znUnsU3}BirkWZ9`ZV+&*-RB_F_ba6fJ?Ej~<#bwn%tkCKU}q6xr71e-ct&Zl>Z%)3 zIS{Nk5&uwrhbue6iZ-lSDTG|O#oir56GbhEE5m*9313B3i4#>H7@XBs(^AwH@SWzA zHOA0y^E0YNpQ$(A<(3lnAT&oQC-gd(Niy15Hb!tJBdw&4N|%e1hlU@~>N8vG^`#7Z zZ=Pje?74XvO=k+HVhIdMwp40h(f&1&IMJNx2ilO=7DAfa?x&XH+ucq2dZFa17__r@g ztv9z?w!P_Cj6krM?f5g3_Q&qQEOT=JdKnYZcl%CF!g0r?8#FQ3wKU#!=;`i9vB$T& zYJJ}0<-B6wt|%_6Z-|M^Nhp1^s2;AOpN1Bbt&qYv^ev=6x=j3E2t~{L_ zH1yN?YDoX(8@n`dthTZ`F|T>@7n9hZQbs9W-$r)QlqzmGqEek7&59IOk9%ScWZ^1o z1M;|Gl#mTEe8o6Dbv&Um*7-;Ck`9UAz16u)Wb)l9N2C(vtJX@E9#$Z&(Gj7bVQ_Q6vS0VOd%4S!$KcHFSNTCY9@l`6QJHW~ZQ}~-Hz@8; zEQ*vBJqX?K^!U?y_wUIz`_+PthlMo#eCZ?G^?WH0tf9GBQ5b>}Pum3lyuVUl7`h)7 z$^La+?*FsE{aw^nqsVRc2kQHkjeo*3P_&5;zPGtqKEC+SIPD-GuM`iuAZve)DkuU-y__-8Ln*o75*d<>*jD!}r~il9B^RG0}O3 zw8+B}GRCj&vDJvnpVSCU6@9Txo0+60KSsu7Yq-P_Xz}?Uq}5Y6f+kf)FNBq2a#qWF_oJag2+! zb)ZVxwzkn_gXiQn10B?@mZrv7D~O#+xWLip-H%^&Nzi)Mob?n?^P19 zA~T5y)To>mRm+UOmTK*qtF^zn#{$2W8PHm2jJtoUdo6ca7+GlXiYqq`e64WEx6nCt zS8Ln*TIsQCq5JZv)`jw|%8%AkAKOE{kM3J_sF9^g?6Ufh#5Z_NY`&!ttB1yz@weL4 zT}u<8CymLJo9b-Z@(+?v{nG{C>PwBRq>a(W=LZO*2tL34YUHsZdWPNDx@%?gh53`s z*KXB$pjz8Dt&Q8b z$M@?3wf18p8;`Z8@Am_09as4_o~ItV&wFZ}PrEi=FHgDvRQ0Y`_m~g%Pdy}h^=?dK zTfasFtv~7W-FOAI0jxjuu}su^$@Xl6gr4<5LF#?)>Fk2#%9Iu})ccu@?Lu{)e-IC< z54-|SYC$RnJBOdO72OP&_uV~Y&xD+pjU0S7Y zOEaixjB3&C*)?OWF?u!EALG?J#B1-Z8Iz1#7(39;ts2hY?ucG!guZJLGm| zd4WH;KdW3>_zrNbm&{<2)K@zhx8@+T-e%fWl0V$+e{BucF{^banMrvWFOZR;QwY+W zb?f_6B$G;@;?Xc%Z0uB;neao6`F5(hz^VK*kA)Ul!&LL0Q)RQGnQm+RBs;%DRk)|6 zA-&epsIhZx`irHhq}K9GfpdMirxk}5&f=o{aYeJ-Jc;$w3cK79gPo9dl{?v*fzVyc zT!>hAvq1T2g3EU`9h;gI%nhf2n~sD{Noe>vvS>m16MxX+~jb1ah7IZ`QfpDTY|E6`1kCL45t z{!bo@1V99^yvDHrYM|49^H^jwa;d8Sr}v-T8}#4ae|1iO=>N%M|4$zK|F=B$Gh1FBCJ*(5bN!tVPbg^zVSi= zbh&P`3WR0ZNarI;532hp=F%9)D~>)3Uz=OEW6t~hr?R`MVZ*->#YHrf{ukL+L@G)% zz!s;2?@zSf9)f7Niu~j%pMFN%L2{%&-!i(7FnG@z)6q}#bwm?%1a@L`-%nc^2km&w zL`0pU@I4TMDM=jvMUk-vDrjURIp~_Jkmbl;8j-uQ8c zfcq$iz@wUdIYJM3%kMO0y;gL4H+nQXOcL*1hyw4OcYBs3lXL6BHTLcJ^99>H}5yS2F^3HBMO715zU&Ixca_)HpyWbwTzm?W~4nfv*uCNH(W`U{zmM< z!=t)2G078_Mi_*YfMZr{s~bOEtR03Z6f|!HcItgt#-Jdnrs@_5dzIt+B{>9WQVXiQs4o#YDi3=W z#;?y+#0?No_wuJ4Dyc55fCX-J%QIkCxrG8ZIl9cOdRZ0$^CttnV3MIfgNRvOge(Xn zQb<(A{#F%CAIx_s2Pxl(MD!8IFafBFD9a2$-fyU*{V4rniuj`s5a)vgeNC%PZT&Vp znJu)uCy?N^ZuJZvBHE}3s`V4!P;C85nSgAwqA0cHoT)}f`^5KC;bI_f=bMm&&uDsB z7E=4>F1`~Lx2y+C?haEMf)MbI!C08S%d}1`e1f`UY{c{rL z5wSpxhxt5pg`@~KpV>?FcfL6eab0{H~LAsfPw$YUNQH<^CYMaJ8lC46h_{yLv}zKU)z5OrOv+Q*0dT$mA;4=U9O$L7a6X6@VDzO5Yy5jvQTKGkeD6={pRX zVhE8gJ{LAOPtEJ*c|D7KWxEouZ(C}hzsXT=urmLz^~hMZcB8}OSZFCRYI^S9DMXOL zNNC(Fg!M*L%5AEpWjdGVgYd;viMB6IW`4QjuUZ$}4IhPXZqmJ#zoLK4*u><#=gD#V*&=Anq6VK{@wxFnBzVDNK zS(<#=Onq6={5}-<4jG_B6@3%w{2)?(g2aA8e15{j{+@UUVy=jvlKj+w5H=)VP8tN6 zMgO@gf7#bLD71iYL;mV$0f7zyuU-s|`v5uh0D3)i8(Y6`41wR90`!^!O@;zYVS$!O z0k*CICxzU8D!lqMYV?j`NYz0&N@6GoFk~v&cCLWGsW4(!(BeW69StY}9tDU3AfYOW z1xbN?)x{hff+6^@Sapzv11$5k{a+NE#(-eE{Y!dV7>K~zB1vFtfDWJpL=zKQJ9sJr zeSgN{g$%(ksza-YL! z;)ytXswosTJ2FQ+n4t?W6NiZ5jYwPf5v<7n&B2)D0ulNeNoFDI>qQe6N0YckQ#42a zU+leSP?Hbaw;2)=IwqkbYG~4tDgi_iiqZ`N(mN`kASfuEgdS?>3BC8;K{|+Z5s<1B z1*BO~s**SV`+j!!ot^jH-DkGU?96k0Nb=#zB>9lcmGk`lj^px3BDZ-WuXz%}H|Yu~ z$qtifp9k)t1w0A`5wH+pkt7LH5+B(m30a=3Xr9cwnDmAgo!)vYTnJQArrf`c^zcs9 zD+jCQf%Sb8?{K9W(52oJNi}szH6o>2E~Z#2rrOn|^bi%07&^W7Bnwii@nR|lpZ2Ic z&EzD_kPe~>00GOPBh7$>P1{j+&HE(|M*InvSySkF%_H#sQNF}z67fIwu_wgnlO#GU zK!%#SPneY0PRdv$W#NfJQXWk8KE@?CCZnR>69Ykpco@!K%8saDN36yB*Y9N1(NPRf z84;w+7QBCFd1jMHW~)nPhe+l%y5x5tkSc-niYu#&4%AGSH6@buMlo~RCA*!Jx!^+N zCqjjq0IBz*OUTC=yH^3bk+zmI(Qtbr3QYn4XwvNH2#8!|TnzoXOB_wswJ9V6Mg>Sn zx#O72Z66H~rR)n~bFyg`0DuL6=Gs))(@mKEU;-<*CfjJj{RpT~5uhv;_^BOP`U=47 z5jI8)Tk?TX>ky^w;|}PO3Ex@rT~Ht#P_sO9cFW~mt1($o9*U1F;)I=ODNdchW`~d< z!y;;25iqYv>N^FsocND}46E$%>AH?9+|>2vtpz+KtS#zcQPO5&8x2fP4ZDE*XA&QMUg4zx#4!QuB464Ld$h}ff~o;=Aa4T1vjZBn1D9Tc3fBQ_*>xDF zO7)0Qd&%;Ifegm{s19?u&Z(05D5|op&;wMKqK+zcDZVtDsoPN~{5G4JSG}~Epy3l1 ztSE2gRlxP5+^CNzE?stoBJf106aB)`qVjYbxjg7R!Sx%pGpNbr61ByeOHTP$imKwC z<#EB>DwE4$rwPWPwX_x0yor$ib#LhAnh5l)BexSp>nkp5)xx+l;-chV2m>yc!D>mx zm#Jv*1m!{cDr!$v52HByDWu1JI(r1vW2)i#Ttl?B;*ok4A6Yt#2^RgRP-)Yz!5mb_ z%v*;@qy_6Xa@y0;K59aFR7CF7#o?<<9B=WARhfLMX3wt?plZlefZAhBJP0TzR})_4 zitpMq^qCE05pW52E+s(ZeW>Jps}YZ(A$)J%Sgd_W4@=rD&*YXr9d_X0ZMtIE3Y}Fd zp-+w6Yrua8QCJ7pL;>*^A#pKH;bH(?Nk( z!1=fG=Qm&Q2T9^v7Ldhjv>ERd@~!j zm71FdV)Yt3pM?4gqT6)Fnp_B^tc$rn+8e4vL0V*gV%Nn|8B!CdzUk*kR}w?VCHrPJ zSh9(3J*cA8T)AbV9PHhTl0wyuokA=;K=cf$X?B_7mc_N@b_4j0)a_}H@$Ws$O+%q{b-QF3x}_>hiTHK~@&2Ygq9AX_v~VHj zppf-#z2JHq^PhV_0_4Hs0BAponVLEkI`~Yi9bfkn_P$xSq8EgNq$D?mCX*UwkeB^o zNdIQ#+wvzfNy1Q~NN$NJe%Zf{R9V`6mP>l1>LHukrQ36L zy_?mrBSf_Mq~f(8FL?H4<-Bk79Etdr?2?@g%7k^6yrFAiuW#kC?8DJDv(@)qp&Gc5 zSy4z|FDKS5D0bsQfa-g0N*AKsm_c4ew5H+_>}3U9^kv~y-R7HnN`2fn!0VN_JCI!B zuu1M=4k!8VqxE)HoB=mrCOYFIkMlyT;0(>3zAusP2XRCmIE&TD)UsTabNzw;co^>h zcVdQCWBsC1(N)~d?HSa*6|83$ZMqLL|I=-AFxCT_41GI}vXGCP>0Hf%C&d=Xqeni) z%K!D5Kv$0VdxAb@jhM=+mg}ksk9H{a6^)5D-0HymbbXcM_?9PdY>a;TVs$Z9HIx`J zrIqaeSE-qkF$6R}Ep@3-`tP(1*?LAUa7HqFMz(t9`os*fYX%n*>aDPOZMj{(Pz*!YgSU%D}@`dibmwJ`T%<;)VHzmZ$(0#ETKZ;=H#dNoVciG zpXMeV^{tzrP1W(6WpiMvgb@9Cw=c`PoF#BpWTr~&lSb%^_Bejr0>}Dm?d0*1ODe}c z@C22(gz9{jm_QmP_-L8KIQfIDqY699a(cH6y1P@;qOZ|(Ltdq{o?BUghG}(EKmTWS z!Vd}4McL&X;!2219!JK~k$!!#gz2fu+PQQ7LD>gtgZz>&ij$Y*Zf=Z~`za8_N7X8N z@N^2&+BtEggrwhH?B`|Cb zfq9=CnE$|Qt~?v+Frk6k*t3~YYI9VX?%ds!xKTYE8^wao110W1+*J?SpAW52EBDP( zfn5lSVOpPHqZ%Gtfp*NV8ME#cbxrS@DO4kO;<};x?$a$imqzAZRt3Wrsd}Iwa$^D0m)G&-TJCsXWCtUzR!D#UYW3LsfbUGr zx1R0{!hkV?d|?k&|3fbL0GWHB)N^oS_24G?0CnY;n(8kN+h4bWe`)3Z(&_o7xBAO~ z{0npC_g&TB#}9!#Xr@oSDl?8rsQSWsSIbdNUEV>UMhltwz+RlZqY|-@?}!Z~v~mfpc9vM9;KM$|K%~|KA3a!lq|_hCf|Y2lgZ3~$&!74 z$YdBBnR5Go;|LZV`agU2r+;4PKXXL=XHNcq@Z4(y|J@sXa-E9mUu7W(fC?b4M;T6M z1NHv}r3L-haQgqlvQVK7{U71~DhvH5%R*WAf!F_C7TSMiA@yfGiJIC4*2~J0R|lYH zDayk#vJN5!W~IdeAwc2b-e0p;V{3A>48wK5W?4P5e@*MFUXq_TvCR&dWARdvr>DnC zT&K1Ej8LC8Qy^b@zG!V(-Mg%#s}G*{vb_YFli_i1Thmk4mtQ74x^#WfDEQLh0w%NC zYr|Dn-+R;2@vHZT%uf^E%+fdf)zH#|-w*d~<_*sFS>L;#eHGc5Jp0!1>GF;5y=OQ7 z{1{x7Jp0)=meV;uq`Ip7b5`BAqtjRjUA4R1Z*zfMtlyJ9UBr3f-=m zUxw070tr~ovb9h)Odq3$RzI``8@9=?PHS2QWNE1j6X01tHs&1Q$iYNhbF!z{>(#g; zD0{{YUOMu_vXG1YQ&Gxt4zz(j8mwD&5t2@P4EW)G1m6$5xR*Vfb{m!vf&#ATVmT58 zadWS*QL;C*z|3kmT+>_LN32>rpk8d~tYJLZ#bS2pcqmNH4iWr^AN`dRt4J>ch!oJ` zgK59UL7x)bV+AfV$-LI7NQ_Goce*+j0pj$U_8(nBOgbEC=<+#1KsXQwkEQM1Lo zDp9u#+W`-r!)ZqNxY0%U9=E516-+1m$ajPgoQ4`L=At?er3=K_WC(E(6q^O2sN`q+ zvTehKE}5XHe%8xZf4s5BJ>*ASmdMLo&47inqu=CW5Y%+voz$LyyQ2xykt!lClCSOX z<#-c_B1WCZqaET&S*^-U?X$~>8Q};Xh=RZ34_}psPD1Qx5{JS zE*psR{T=WPs)v`vrQahTyJ}RUQU;4YG600;aZQ*xvTE%`69>ZVDAz#0zoCIVYXL)O zCdFYi59>O5VOj>zxKYgLq^+wrO^%ZV4|9$atS2>eJku}tf0f(PT7m5 zV{5&1mk&=nFp)Rjcn1N0eAb(D#_(w6Cyy^tFv4YqiSHM9li0NAKVtU)YfJEG#IJgO zdn?^>glmJwlS}uM4Cn75zzvU|GyAo=2WCEh)7E6qfVWuV=Ga)KQE1aNB0VbglQCCe z2AJ3)Z${T~WWF8p;g_XAX|ILNKFfA{rC{I*j)2C2$hR9$Ak*Df_~32fMOVg@gFG`H zb#7gLtvE^7ug!yCU7om$%7T4?>8lF#dN$dQUyyi3r1`O<@uI`!j+v>RuGiX~hdu_# zFCJy5W(fN4Zhu($++0G#2$9BD(5%Bf?U3(_j!!m*zqE#+PT$lts>q_;3QV8^bDtN| z)EZkp*cPs)456(*t-JB)5iSS)(D<^`W82y9*x^%ZVA}CfUPSNwqj3yEp7-v<@#ATs z_rDl%H>9}Ms6O1}F~1;4%a{>yS7iu$*!s=-t7GKZN{_@*^L*F0!s`KR7kgYf@1TE% z-U(PIce{*-pMNP%JKK^aAB#ktA7lsr{pcTjHdlL-d^qsLfAx{=+1)d_Kn|U%A!cfb z9Vin})q*`4%RN7|#R9+IA^%;y^7z~|`0wjrfEM=jcCd~SmfiMgRN5!> zIx!U47OJ!ms*DUhNDW!x51W*;m7@(^ISA2k4%HqGHP{Zt9ET~;hTV7&M#;<~dmr?` zU1@o#Y^ZPDH3_p5j&MRoJTQxJ_K9#MMm%nda9@aUB0@ZT!k(B#KJ$ruPK0F4eqm5~a!eaz) z)f5K7JfN?&ph%-AuxIQf68eT1D~61l=8T)tikm-WVg_-^6oTCL>kbRZNN3*sRqE0-r<+DWDmS(O(PDP@5mos+Fa+$SB?`O`w=c9I0j6PPsR#(bdToSsB8+iWk;ICZ)d zB0XCpy~{g&JSF}2E4}B7>7I(|K_Wz4dHQcb6B{oO)pt;sd3xMQx)&WOv^+hWjwsce z?scL)Yz7r72eJS_a6pEXhqJDF=x>wchl^r@T2Q+tl}ZK;k z9tfnOZa>Lv<;v=9PoP~#|9EFP76uYslV`w$z0{1IbdbB}L*U>|&(|gu;IrplNM73M z%RAX|C)wjt@W3v!6U)*$x@)&DIB$u3sR4C2nv(En5 zmMB?Qmykjt9#RgqzRfx40wpgf2l|4p0YJh4lZnL)(c##!yJ1$xn)9@{(L--YeVTHn;XgiB!TdrIP%)dQZnSl^E z6DF@s1mE#?1M>R3hI=}0N3-FILe}xM=J?h^+c7*)1QUj;$ebz&!Vkw?@QnQ+QgoGU zU%&u1N#F+9aKj`l-~-5PhCVB{&vL>59qwIi4~sHE+6YcuDXu<`4yGt073@q43U0HU zfXj&@^ElsXFOR?&8kNM9-;~Dhy*}sK0O)gh_=^__zc>Ev5FM!$4!T(*(1ur>691Jeqg7>o253EH46#E8%{w zMGo90K;GEtg8bT(>g6`Qutk`aZ-Y2JNNX(7fT5h(AH)1o4^OB?5@^4TrbfHa9qBY? z8`D^cwGw(0Jy0>9+iN*I%TdCx*IJc_W_9X1whm?$4=%!eA2p@b6#(tqx)h|R00@?$D+|5SjYl91PN#~)wRkM1Gg%{dplrhWXsqwrx*u@nD#Rm9@A8yRZop; z$~Lync50@*PdC2NY!!pQx7UF#Y`&-bl5m>7(E)4Kg|)xyq!Jgm+6i)@t6}7=N#1Em z@~hbytvTFn7%OTU)$0uX%*_l*zBM2(pZ>@UOBVEaNFIeFe0IA zY=VxrIDc%{aN-1`Cpvh3c#N-L$T=kP6v}Kx zlt>)yvZ83-V6waYyi@~HTCj-jRf7t(Tz*rb1ty!RE*kAJ#5?_-OrMU4P}%-w&UyS7s()V1L_5zU23TtbffG z<|PKC40~q+LUOa?X_VS|MB`vDVmXyYcb(re+T%f|)!`p7OoDi8;^etRJj7-Nu=1WU ze=R6$p}FB5&B&Z?{yL)@+nbR^E~QWvCK!#<+SU9P>9=V@HBr#M#@Bz|j*pJ8cSC=5 z!5tVrekl7G?v~esOy)7}MHT`CF2C#RUz)hIwsRcE&^fGpX-fQZ{MEL!guiR(iyR=a61SOA^MI-g3Ofl$)g;`x??R zX>}+h-=4dOhVGq|UBXn+7RAyk>FY-Cy?x8S_Dej*E(3$_HUnvY8{vA>zp^sd@{RW0 zx48$~fD7-AzIuN>4?5)h_FV+Z(qXoH{*6$v1^MPZHCd2P|FQmK+}ERFW>^EvaQHFF zRy00_*|7Wed9+H)&u4Oy&@0#mYS=9#^Cx=GiN%jAY6EP-Z(z*lFm+ofntY%|=8+-G zB69y3PXD3G#?(UpV~|Mw4|PbNGDvI({yXLRU(})hIdy2Yi8}P|FCja3G83Q|OWOh& z03e~Pc4#{2tX&9e0eik0T^43NqSCtT6^h}haDg-TEuZx$VTb1+4c?M%KK!*IA9I|{ zTp3p!VyTSZNsRB8J@(31;SGn&j4nlv67ZA_0Q&OIh7F9<*a94>pjmNZlGsn zeG-d6*0m_?+O?v;sNN^|<^mxrBI*aMrehcFe-(N^MUMT+RIpJ0HB6YM67HPVp?D9b z;YZCgjNb|aQc>LBRGe#gf$vm%TpNKGSZND>rDNsTo?z#6vD7!9J-G32A>e+yf^!xs z822DGcPA|n{~W}nhlWU-0q9u)A#}rQktjVJko=q$2rdFdY5lQ>#c+ZU*9{>zV)^KW z2^vDTenj1&=7SXyUkU6IB5&#yKwEtVMMV>1Ok(+Hsj)zztI`nDB0jiCo#xdHLkNSJ z17{*~NNmLrqHBfX$W~}!9n8bu)+=IU9U0cV{4|m9*on_EPfO$0&!nUx0RdRKwzkrA zQqFjhkOZBMUPe-4_Kjju_4d(w4e*%zg;;v05dhn4LmE?EG5u4#uJzBS>D`Q565-`z zHry=4*MIJVqssLjC^e>y-Pn>UEC;$yHxP%%x2{Dhjz3~Ar%6)jqXP-Jd?l zV~lfFy(o&oLz=Q#;*<^GefEui4vPK54%9)5xrsy1y7E%PkcTtov zf*f&qP(&)&clvR}L8cVgRdPbn*nz&eSZiYEPCaSNi}~84J?foX>vU5UUuE;?yIj>I zGTsH%@WRugGteYiA}dMJ}VHZBO}2PTBK86gm(jFNA8a7p?>qk(#M^ zONB5^8=NS6iq^6Ea5&e|v+4G{b_~NQoEOMfRP8f%TRxNfT{_4P<;PH96VcR)VB#G1 z|5UkhM6c2HgN+vaPs(-hMWY&l3Oq!KwpR6(fCzou^nc9g8L>duGIfCvDSI;WU>{kq z4hPO!1K(C-0$x?;DH96Q+~DZuQ2Y@vf3|XZeWME*g^rMsTV5ENbCrsPx*v(Yp{mM5 zuzml5dLTu(!XhwC&D(&Ay+J_8k`Q|Lp3=_&9B{FHa8-di#;24Nrx%jh^6S%(mz`iq z%Mb<`PC#Pt{u-B;BALeOupy+c3iP@JMUyC8PLCAZ5I8cQ(7dUYLiKk8C8jYF%&tX9 z{Db>8c}!h9L7*y};~$GQLI_R%LdnJL==*of&u*}b1XQ~3_4 zKs=@=1Te^w5kDEzNbY=}%poRq8jQ0HYox|>25&p*nEQ31;0vY`zFV?G*87hNt_^Mr zbtC<~C*5#scJylz5`!$?jmtEfYv1i(SC8Ux(vY>9VmdkH9zwWDzp?9oWzwkpLIR3o zaOxlQmdv24-fpJh{rU(Y!$r*plAc|U>SGHPgzFvkgDy^4UupQ5Zbgufy!3-`^bE`s z5Au9-Z`wl4ZRv^H{oQraye(4*qp;q4C2>9)E03=-Jry8X8eZ@(6CAV+GgiCxPl#G0 zWTtDAO8jG*by+AkHhS#W*M_S9k^XIc&8b2CQpX>1qb_df9etJOX**3Z4fj-p9e)e7Rm@sc~2VA1JLB zG#&z~4F`z}Teg@$ueHf3Q!?&2Ck7g)h*qBuhu-*y(5OSls2061O@^Re>u=N+R-f-E z`P>1n8@QHYG`GX_oI_RGLXpFvie}-_Y2kA%>Xh7_{7}dRLqU*~i^?bc^fVUZHkZ%F z7DF8V8?#~UP2t2AU9miu0`Gv46s!!|De{-I++2vUx>?olCo_T=&10x-Dcm~U`yKgR z*dyoQB%gp@Z)iMc_#utepA;4`C>nNKjc@j*>41^~;c*Ekhy`U-h6I$9MVB5&mqkU_ zaK@CI8Py_Vs-0t+h`_pqnEGwI*0Pvt;$!*yF`Zg5l@#z0ZOjlcX4ov|O;k*SaO@0c zTn7a(M2zm{bfh$!r4W`IS7C2CWW_>&40!cmZKI|u9`J@P8Ik-C~mnS!g z7Y6XWG?I9kGDuWR68fGfD3TH)1&}hs_it&ks6e`tJG1X!x&IF%oqnK*G zlVZP^;<%V<>6`X|l;-S`s*O+mbl-PUDBAp!b5s)V>MM)d-`0L7;r=Jqz9J~>NxHuX z5xbZk?n?~969edo*G`^8PO7U`POIEKu4m7p~yA&W2^d zL&?(Ws)gX%X4L{Dy2^p?{;((*2%^M}uW%P2lnVGP3IzNLu4WVncNB;&6^Nhy2X%;V zRFz&s^}chwNUuIGAsb|9372vI=nHF-#fr(I$exK+=CFD&wZ&Qy=CtT8cd@Zj@jZ)T zGrwYse^G}h0oyy#AZw)(8=Vp}*CJ59_SP+oA~i1vD#-1}n#XZYTPeM z3!?%a6Fv$iigK1=l`KQ(vB64~QGR7%uTj_|fu| zj&f0-Li&7wei0BJNhL*iEIL&vyyn%E3MLyxu$0Q%Mx}3YsWW&AG4E!+T&nCmt?cHm z>Q$=h=f(m(%U|hKjb>E6JcUMhX_TJ=6|g{LuK}k(8Pij~9+JH0Nr0dLjN@mS0)pa{ z25sz?e~Pa8tW-{!MkR1#weOaHd{+~qQ+v=+^V_0kxg#GaO^F`aiLM22iD2PEy6UXF z*VDk{#A+a}M6WStpgn`NuWHPqp4GpeUCaiYSkJj!&+M;3D_Sk(@z0zWTdLaR4O$en zsZ&doR?PC_h9!%Z$(@zSllRIMlpC+VY($PV1~2hveQZ=zZc>XWpYlzj=G7g!>PgK2 znqnia-pXH7w6rSZT|s8;C`PF2R5A9~+w9fbSzbkbZ*~%^0{JzAq_u&<4br^^ZX=md zI?WbF2tktYHGfJ@xK&5S@^G}3qyEO{LYUYzg7+z6&55 zxLZn#f)aY+`lKvKKEPnloCOPvWw3mH<}BZGbKNnAeX*T=1Dd-kt? zd)S@m?5D0$9ADnwi)djT0&icAky;lDQK!o8a`)12wad+p<+O^%TP?#p05m*QbS@Yu z3NXmj-zV?c(wfSR$*LGv&1TvTBuK^}1!;ydoF> zbShx_4g7{dRCIRHpa!c5ywniVW7z3W;RA6?5Ma2cbBwaq_{Y=sy_>tQpGyR0qL$AH z&-tk7`@frVO9v1J}ddO2i>ZydHM+Emh=iSJrRMsuc9BB^MSd=Uoj zgawNahAMapzIR=_;bY-3bkllBS)VfMnN+{g;()9a>>F7Vtq7=)ugUCSvF}sfgH_%D zs1$(Ps_IbVi1&IU8~auUORn}<{w{GWPZuALz9rv#5nlMHmtPZ`5=?$;9L7i0tyk%- z-|Afr?eLqp$UDYVFwFNS-|>qTNpA@DcZ_1ae02lhJjHjJ`)$+jcc8V&cJY2yyCJ>m zHPeeR0Qf|Nr_m@ZDI<-K*Z9xr?T zmhhpO$${?U?}^52h;htv*ChxL*|xs~dlEZ+!ISU$*7zF#yf#a3+1}t3S!_X|Zx+EP z@>F+4P=9e#cB-*sW$O#fV1jQ%*E{{SJltv&?m3#30n_Fw`cYBFboMIulz?bJG&I)2 zk5;!tUM^KbN2?N9d8y80KAii%wlsRPdonLy4OO_bvXd>a8Mt!N*$U2IVUh7HvYyWW zlH+6!gD=(%RrDJfrHhzDfB5%&K5MnNg4#V^`qWXqqf{rDvpUsP|K&sTN$1)H>7MJ0 zZvs0y*LS_vxk8OYTZ~;M0t4XOF)O=g>y^uu{P8Q2Uq62O4f~e8@pN|@WG#>W*a0(r zrZ;2Tg5Fk%PZHFRSBe2cQ5;W7IDwIqq15*8ZtaCm*Ky?NgjcwbTyl*BiPmnHnV;{OO~`t>U@i-CtRmCikAJxHD9ux@9-nCHGdcE1Tju=yke| zRJLw^?ZO;5lS7+Ky7G0n_c} zW*gwY>6d>yyqWsv+=3jGbRP7LTJ<|5_Zv9jd!07y^3=!M?qyc$qi$bU=3TPc@659$ z{NPy4;$Hp1ld!&KG2I{-WzPTYB7N@V`drZqd0OImV&8s>lYdH(gIk=+bIEis$t=9x zczG&5uy>bezwgeW?#t&4uWuzxbKOZ!SWMpTZX4B3*EQ(T>Pf!l`%9+0xkhOl_I0PcSi zN$$1NG}}{%^l3)$2@|ebpP9yEJbF_D`Z?9 z%*|JDEu+rHN~=+28){dUEz97zUt)QWRFb`Cyt@Dmpevr-i9? z^(dI2L6O&)u=T> zK3RO-JFc?s)7^8uX~v$vStgo42Y&4F)3HBsKBU-s`H<}PzTNxVii*P3fin8frynXU z?009oh4_y;JAHQM<46~d@;Fa6)>DlxluaJ`I_xLpMm`K8cKmK#3k=T9&h}mXw3^DI zI=*}!_~+#Jx6fqxYTuUkqRx5k0#SQCO;vQ;HHpUuNo@cY3w=ete?}p{({FG1zOEX@h z5-1eAJG|d!h2G%y2DZY zX{MRu_Uz+)-Gj$>t8XeYVFn@~)xQkxS$h9AF{|djQ~Y(5e^)t-`maH$Ma&qR@?n9a zXhrK~-Lm;3n*oyryX;xXF55_kd-HqF#kI(Yv`g~$-2X)#LhG|NhI58GS0i6du**Ih z;43TKda$fTpBPmz+*Hpedfkd*w>nzoNwC(E#K=PYuTg|ra1~oLQ9+laW8{>9DThH{qm8x z2tT)$<>zN^ZJ*No-8;x%l!{(f*7!f^K07>n(hK4U@aSg&wtL`jD`g2>Skw69Im}N} z`FKRE_0Q9B+4+EHlgdXo_(xSa0==f67_IG18<_@r&so0s>%HKZ9{7Ce5yfux{@HvW z#cp-<_r+Q$N086Q7=?46jbzgx->u9S=M=kDdXV4lzwK7@LH=JU)FJ=x102BtKgSfv z0l#KUg98tjUyuWjKcxo;o$j@ggZ>=M2M3>@9g%|p5DXS1U`NH|gQC8Qq0AucK$nhD zw6`!JEJb!;2_G~iVi&MjI75uvPnLia#)nvD|Rr z=sMPviZG1*hdMOjb4#woFz%7lzoQLZ`t{udPLLGV_9p|g(bk&G7=JY@|`$Uh@kk6PYdO-QA{@ZS~ zyzxMx>qOt3mz|)Q}KiT*NQvqODJ% z4wV=ei`{q8wWiRJhKx&Oi(T~H{EV_F)FI_fmpg%{6zY&knYy5>VVs|F(N&Xj-TSUa z*{8;3w@fOGid{{r{Y?IksY4$q450su)FDcs^dIVw@c)Q96mhSqP|(dq-``^P-_)TE zAn<=vc4z=P0sK_;fd8Gc!&un<|4l?pnGy4Y6Qz6hi&PK0R*;;BVme?Be!Y}2dC1TO z?JuHX(wHY|-LUm@3E^Vi^{^mVi>8+8nngI0-IYtqS7r@=7ou^Q*t@nl5h`sH6u^3| zf0DuQg4AQf-$N0?JVQ5$YZ^L~|1xb?7ZyX+W&vhGzXF#eHmPE?`Ln7BifZ5(uuWRf zd&T}8n(Et~S&EN0XC`GIlCL8b{rbn3nr{yoV9u;?E~)hF&JKAyR3#?!H>3PpQSS}} zXRmmIpjreR&AW6c_T)pPB^D&&aYe0d{q{QGj0vzF%nU2F4bNJiGXv7Q3lpM#3qt#_ zny;>#J5bZThCR#s`|$F^c|kezIBEKg6<>yWp*c@T;?<%AdXm{&29OG*Fj$JYc;mJV zoH`?z!^E5r#*FisN(9T_B8@Qm6BFyIp_Ti|REnc$7{X2_S`qM^4iTju0lwLK|FN9`a_TY7 zPBF?MWaqa)2#iElgeK7Uik5`vUoL*118LSQe?TvKn;KBhNhPSqhV(_^ zhGFpNFZOCSTl?y_9rZ3hjnXVi&!Ok@?mJ|n3pU$#NuE5*Kb=Z%uU3AJhHX zXBAJ~Uo>}r+{}kB>MS5cLj13!%#re3Ila6j)FB$79m?AsX>)qsZF9el+_Cevb1 zZ8T`bebXfFTo$-nRet5pVOzD_I|9GL@W*Rx(@omVF)IBc%QV+URN}Qf4QTKaW+7z~ zJ*)>pw3xJtpYvP;i9cK_4vGWW;h;9+GhVnBHvjuA@z0lBA%VH`HXk3W+ zy{#!B`ZglXxCn9I`IZJkD!Sl;9^p2vAjp! zb@VMwQ=-}HcjDY!-^xJsxdkE8!me($r7RV^NN&vsFMs<9%KA;>bSaht1EP(I#Gsv<1K;s~lN4X}}~vtYDg{;itO>ngvo z_D%+?UTa+)p*i(}@zJ(dM(&N>zY!;kC+}j}J*2=qT2wSMb8+r=ST`Pxp?HN8RM_X} z4~*B8UK{=PFb7Y#=j@szLHT4I`LiI8o(+mqL+M=+y>hU=%-ZL_u_OX+w)b z_iwjdo(%-EBPW(wJRfNKI-lY6R;%fYDo?sMW*-oDY9eVU1%fr~vM^cIx6PFwmy$ex zRT|qzVo}CY>>XQ(K3}xgWeUWokFwJZWB$dB=h-%fcrS!7R-kZHdRPYUsq!gX6)e&t zf9HB_FUkqw6+DSxmd(TF(u{>)Vnpq$Y2ldpaKAHOS|gNRL`{A^Kg^!L#Ctv0#mx>H z>i*2qU8?REUB?%TEY!l=$xFSAkUZ~D=fEF8T!5OuwUcl&MTnx7I?pfB&^-T@H$bk? zsL-6y$y_r;-fHCp?;Ei0wlN~WppVl`1#(F^2;d|o-S8$TX;i4_2iW%p`Yz^L+RH!p zg>Kup8QAy??D@@t>`}i;YYA;vG){f4M3rZDKfg4XcP2x`k&jJLIJgmx3X|?5;Dq`^ zwb8Nlz4c@XEcUnLb~i(VfpXQJ$G6JWK;Ai_zy*asP#F~H6G(%zK<2s8VcZtCBo;~n zga9BsHEU#~`_O$$(7J#BXaAVb{>;3-VjljWI*9*J(D`$Rv|g}(vyYgapYr|ZqQhVi z+5=Q)$}ddWrG-dnL6o46*o6G|N_`&LJ@Rk1Q#6C}(}vLe!0DSo_1b(a6hitvl2LubrU0?^vKD-OD4-}vZs2=jMCU~);AotQilpU)OJ6$(Bbt2ST21V;x z2Ug63PzJ1rFP>XVc`@ci29!abwwbyjK#F;^{^YCB$`**9C-#9>pr9e1h8Gl6dVP$> zC#V&hod`%MViATuj2*I+mIet9`Gc@geu92g_x#|WBclG;+w8X%P0~%j}!E0 z1AzJ7O1H!JAWt}HF#vpY`#U4*^{`F$#0^NIx*!Xo#9--AJA@-C@L8NfK0sv3{EaCF zXo!`d3ZPYl_C^LC2}11-&5LfC(UD1*Cl4_mLYU2Cj7s?v(UHX5GVpIwPvKtdL+3juu?F5ywN1jJN$TBUBiVXDsA=3%%hUI1DH9J_9@WdOH}JWF zIMf^s_Fp;yZq8Fq$$yrTr*D|}na4RQIRh$TtAh+LQYlz*dZM(E z6Ec`S_@`i)uJEH&VRRHgo43$es?epmuwl=iH&J-;hpi{Qv)zy6u z%m^HQ##`W_ON0hONUn;)LW(g98Brz05w7Xn2oDk{o?2|O>VoZ)7YVCQk)B_u_eE7d zSc#AfrQb0u#gX*;35Eo(}tKLE^lonm^3UKR;?IYEZemz>$xsFC@C$rDn%HUx{7@j{+P~8 zm&#^odD`XuHko>-SbBur*_o%(H`un{wbIbLk~p=Jw55`KsSVFV4WpuX;h}))`r5pl3h)ovMK~lxlQprIr_?TwGFi?C}`I8%A z5TKm^)A^MImS6PT{~E;USR{GXXj|cJ-0}4(#6o~<=LU)dl>b*rwvSCt^5DFWLTNM3W=}gf7w(-kHQe6 z7{andg=8f8IyHOH6(mE((nCBJ5GN^ssUTpLfiUNwH}9~}fw#}K*X$js!k$R3E2QXF zMDoc-#^1#(pFQYZ^+q3tR(4=Mva`8Pp6EF~-CZh5_2uF{2CZke^r}J`P@!0N|&ZLW=nXd59?Ot*S{(!^ev2 zJX2*;vj>GYvbbW>*OHsG%erk#g>dy}FEQ}9*%L5RI6X-zNDI<01&A`i$D1sdwe4a- zk0+}pLQLUwMp@BS-k)*^Sjn2#@y0e8zgDYoo07D^VN)V2Q#IxgBJ>n=vW6Kr=6Y{j zuG{^EfdJPW9TVvjrRWSMV}W*lImfjAkP*ce2hckie#0n2AI5w-Ur;c>@nffCO7!B& z;tVL7P?!{Ac5h1AdI^MB(pnUlYT@Y;g@w0H0!E?l4GWf>3Pu7uWbniqgB#l*Ga0Af zXn^wsKq74%=D9Ma&qPO=K9+zzDXqRYj|U_4y9W)B0qoeWNZGE4Z96cIz})tsmZU{f zgMG~E)IT6I9y}wy4@Zn8V0oz8mo^-gG5{Px91WW#vw^HSt?sUjEeDsU!WPYKSLN2( zKbtUpaO)rEr>|+6)nvNs7idc)wYg$L)rjt?CNAZTctnVq6JBBdF0%@X0L|X(CeeVB z|6~{OTn+H35+-$gW6L4e0y{06S5Lp&z*tGzxShF7#WqO4wv{2@wGgU4L7C0?&V!DU zd8yWR9h|Xc7`5?9XC3ltHS6A#W&3)6h;2%=dXRhnY$}XCec@EHv(Po6br@an2Tc}I zQ|MRIalR?Yv?V1luaC7|JyKr{k%d0gpp#jh3J7oBTv=5}g`JX#$_}%NHcx!(PG?I? zCmUMRX{)C~)8nn~IHnVN1+9qMu7a5ft0F6FupW*ut(n37y3B6!y&d$*#!1f`Bwu6Dk*LK#+LvAyNV8?BBph&#DN4 zz2Xtu_qgh(&Z$@2LqEyZG^LN<)b6yWx&sjls;Gq?woN={|hVZjEI*xstal@3#K7?F?}W*D<*ZU~l|B($IELFQicK9M&g0 zenAZzMaagS9eqh`p&uG!YFl3Z(41Y(vzZ-s=1_fB8a(;-_2u!?ZKbbu*I}2`_SKd3;%C2BhPeGIBn&Vv}VJyIKRo+Bi^5pCZu2ay#iOcWndu9r>81B`0XLcMes) z$3!o~g4mT+oO_t5nX}|?8A=1)n7)NmA|v~)?5+zaF7hKUc{J0H%cl953jc_RW*hv@ z4r0GsOcilmhYr)=OY7!iJ+MD3eLCg&{vO+Ym~n7 zqO04#$;En6CbwRSvm6I`TwAVPOJFZAD&}f3`+kSx$$9+6X5$jat#4`Yy;+p)>~SIxhQa%&Cw_bD}R75(QnST~ASgLgov1Ov@YChTFz-%%Ul6}QQez?i=a zng7#u{L6+o*MVihiDltS=8Xgp%0-zL_0g=;+Xq6Z2vycv@A8FlFzYD`ne_tUd=D7s zqqmeIS>+?BU&L&y#PVoY=;3hTPCu?!QjBoZ%~7D?$Ii~|UN&q5P%!VJM_Vt4I!z^B z;O$}@4{0C)2SO1p#`~=BMX74t(2Vu-%GbRC91mx0UesF56x1y`?!1J9WV!XgzsvPo zU4E_RsZbrD0|X&5tI9HWbio;~z4th@|fYO*}8A7yB;TWRyhGBc-L*>5#8aT2YzHp&+elYJXC zNdJJhPy5zxu5_N$rc;Q+Z2Cr~RsABuqT>0Xki&4Kkj0SQK>Itli|8Y-WzE+fCS4Nj zA%)pxTb3aijk= z@iSG_uEEobMaa2_!yu3YFJyfT!!%nOgy*IfzS25bk(Qc`{k^REmrvp z?dMr_bIea4Li#==&H0~)knjZ9`;5H`qee;sDR`}nG1gtunWj?ua zPtK1$_o)j_F|cWIk>b5xpQDKy4C-8c$-X`LljrqaD$m;`KdOL_+`xP-y{qjiuFRux zf&JCOF8|e;mju7ls8y1^7XKh9)}Oqk*;q4v)6W(AHr!m6FDn>Blz1id^Q|2Z6nLWq zgWj7!(&uS_$danDgBsr7ZeBv_&P2I*Y`Ax+=F0Rw)z_o5^gqi_d~5IJY6~Cm*GqY+ zHEmH>@$~x#NtKw!%f9Xk;NyUeGsDb}20iFr%>b1P)0HgFp1rClm4{(>h|S?bT*)Ud z#P{M8_bpPEB*Xn!OTfh5muSLvTdq^LQ0-UPCyCO%1QCKHFj6f-QORb_ck5?JP(Oih zKQJcTs+FYCM_4%QkC3mm%_3m=eU3~QN0ejhM(pC}l;uG})8kLCGmSW8=aatLt(B5@ z`OVY$rdPjnZVBakIhg!h|I8JFN4BC%kEj>koE*ndVxv`am^w3N`AYsFj?gSn!h z;iS>Vo7{^jHJhPb!BEdyRThFYO|}$jY}kkCl%D3->ju2{6(IX;ZEoRK&e!$%&~Rnx zXR7qN+thC1{n-<)JPJXoxi`ith146xZBU-cyc4xB-QFRcCMjK$D33v^RMOXw zI-VzQL-gOW>(!k-X8RyE_Xr$M4Y}nh)=Q>*pWyl&2kreU9rDXTH=6!m>5xM>LwWxb z{px_H)`qlx^MI!~<&e4pV-o8ZV>k?N7T*@)me03~?^Ij*_Goh2wK!G!PQJXgt*tHJ zd=1_Q9^$0~+jNEJYlL4En(lnC4_AX3M_*Ja2ZtsKx*6@#>(_e?@ikA!k7}8HY@U3} z{e_@(u>+OJ)AQ?ti;CN5BRTfy(T}&sW^}&>cXHx$quPQs8+mmv^&8quj7ywbV(*-& znzY<-oS3`4TuWi*xUalni()E!f&E~St>y92pMazQ#7Dpr^z>)F)m9~k@Dxo=aY!}3IX zQ+2Jv-f&~*MClR+ynXMyfbG+A$O=lpI8*TG`2kJ-xm* z82$9YAYjnFGhZ)w$Z^cUCgb3HOn}OOJE!O?fmt(D++`VYl|weu(PXgTmwNjrm9Gfr zHkCppzZ!j8Nn$(G?GjCyYX2teP!PSGUrWDT(7#w+Y<$E=5bw(K#q(G0pmnXt2ZQdo z2*+}dd(XYmt`iF+mtX(1?qo=5^HgUH#DA7nV?@06~G2PRAV=oowg_Rct=e&=tJ zga1!Rmj^HmSOI4JORV<4sE0Ir1ShI9SRSa#?T6f_@F zY&y&JOQxz>=P$A^9M44h5;LjRzE`1udu0d?)fP_`YUQfN31?YM^61o9tyt-xzeR~> zdwxzf@%Bpq4QXJq;!2kqK5jKXHT=xI;se{>Um0#V?yBSf-Y}^*R&I2Ym-9XuX{_4n zmx$$TWO!itbRbE@deun#-p+W|qtFQ4k@|?Lhj+qWjW*XQmFf|3h95Q8A1%Ekpm^#{ z-*CJ}t!-1ge=cycHNfQhD(KSGE^VBu`Y*Ti#{BM^SnFdocaz^o>)oMP7Q4%h7iYWj zpa%js2-~=0l0KyY*>``h@lWrU$;q*;41<3qu6mQMWrDr70Y5s!!{ z-NSXpP&e&i zj)bZ9EXk_@cQ>O6iu-i6bVlIu(JVYF&`_?8pt~`xD+Kv!rUZlW@zj*H9FP0%JzI=_ z O%uZNe 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