From 76300b09b6bef534a561668f2364672f41effe64 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Fri, 17 Mar 2023 23:19:04 -0500 Subject: [PATCH] Initial push... --- README.md | 16 +-- src/__builtins__.py | 2 +- src/core/core_widget.py | 19 +--- src/core/widgets/__init__.py | 3 + src/core/widgets/base/__init__.py | 3 + src/core/widgets/base/banner_controls.py | 39 ++++++++ src/core/widgets/base/editer_notebook.py | 57 +++++++++++ src/core/widgets/base/source_view.py | 94 ++++++++++++++++++ src/core/widgets/controls/__init__.py | 3 + .../widgets/controls/scale_down_button.py | 35 +++++++ src/core/widgets/controls/scale_up_button.py | 35 +++++++ .../widgets/controls/toggle_line_highlight.py | 34 +++++++ src/core/widgets/tab_header_widget.py | 60 +++++++++++ src/core/window.py | 2 +- src/utils/settings/settings.py | 10 +- .../bin/{ => newton_editor} | 4 +- .../usr/applications/.desktop | 11 -- .../usr/applications/newton_editor.desktop | 11 ++ .../share/app_name/icons/app_name-64x64.png | Bin 11833 -> 0 bytes .../usr/share/app_name/icons/app_name.png | Bin 21361 -> 0 bytes .../Main_Window.glade | 0 .../icons/archive.png | Bin .../icons/audio.png | Bin .../{app_name => newton_editor}/icons/bin.png | Bin .../{app_name => newton_editor}/icons/dir.png | Bin .../{app_name => newton_editor}/icons/doc.png | Bin .../icons/image.png | Bin .../icons/newton_editor-64x64.png | Bin 0 -> 18327 bytes .../newton_editor/icons/newton_editor.png | Bin 0 -> 8966 bytes .../{app_name => newton_editor}/icons/pdf.png | Bin .../icons/presentation.png | Bin .../icons/spreadsheet.png | Bin .../icons/text.png | Bin .../icons/trash.png | Bin .../icons/video.png | Bin .../{app_name => newton_editor}/icons/web.png | Bin .../key-bindings.json | 0 .../{app_name => newton_editor}/settings.json | 0 .../stylesheet.css | 0 39 files changed, 391 insertions(+), 47 deletions(-) create mode 100644 src/core/widgets/__init__.py create mode 100644 src/core/widgets/base/__init__.py create mode 100644 src/core/widgets/base/banner_controls.py create mode 100644 src/core/widgets/base/editer_notebook.py create mode 100644 src/core/widgets/base/source_view.py create mode 100644 src/core/widgets/controls/__init__.py create mode 100644 src/core/widgets/controls/scale_down_button.py create mode 100644 src/core/widgets/controls/scale_up_button.py create mode 100644 src/core/widgets/controls/toggle_line_highlight.py create mode 100644 src/core/widgets/tab_header_widget.py rename user_config/bin/{ => newton_editor} (83%) delete mode 100755 user_config/usr/applications/.desktop create mode 100755 user_config/usr/applications/newton_editor.desktop delete mode 100644 user_config/usr/share/app_name/icons/app_name-64x64.png delete mode 100644 user_config/usr/share/app_name/icons/app_name.png rename user_config/usr/share/{app_name => newton_editor}/Main_Window.glade (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/archive.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/audio.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/bin.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/dir.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/doc.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/image.png (100%) create mode 100644 user_config/usr/share/newton_editor/icons/newton_editor-64x64.png create mode 100644 user_config/usr/share/newton_editor/icons/newton_editor.png rename user_config/usr/share/{app_name => newton_editor}/icons/pdf.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/presentation.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/spreadsheet.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/text.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/trash.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/video.png (100%) rename user_config/usr/share/{app_name => newton_editor}/icons/web.png (100%) rename user_config/usr/share/{app_name => newton_editor}/key-bindings.json (100%) rename user_config/usr/share/{app_name => newton_editor}/settings.json (100%) rename user_config/usr/share/{app_name => newton_editor}/stylesheet.css (100%) diff --git a/README.md b/README.md index 4896ce9..9bbc620 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# Python-With-Gtk-Template -A template project for Python with Gtk applications. +# Newton Editor +A Python and Gtk+ quasi-IDE. ### Requirements * PyGObject @@ -7,14 +7,4 @@ A template project for Python with Gtk applications. * pyxdg ### Note -There are a "\" strings and files that need to be set according to your app's name located at: -* \_\_builtins\_\_.py -* user_config/bin/app_name -* user_config/usr/share/app_name -* user_config/usr/share/app_name/icons/app_name.png -* user_config/usr/share/app_name/icons/app_name-64x64.png -* user_config/usr/share/applications/app_name.desktop - - -For the user_config, after changing names and files, copy all content to their respective destinations. -The logic follows Debian Dpkg packaging and its placement logic. +WIP diff --git a/src/__builtins__.py b/src/__builtins__.py index c7b3d32..c3d7782 100644 --- a/src/__builtins__.py +++ b/src/__builtins__.py @@ -29,7 +29,7 @@ def daemon_threaded_wrapper(fn): # NOTE: Just reminding myself we can add to builtins two different ways... # __builtins__.update({"event_system": Builtins()}) -builtins.app_name = "" +builtins.app_name = "Newton_Editor" builtins.keybindings = Keybindings() builtins.event_system = EventSystem() builtins.endpoint_registry = EndpointRegistry() diff --git a/src/core/core_widget.py b/src/core/core_widget.py index 2775c0e..4fa6712 100644 --- a/src/core/core_widget.py +++ b/src/core/core_widget.py @@ -6,7 +6,8 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports - +from .widgets.base.banner_controls import BannerControls +from .widgets.base.editer_notebook import EditorNotebook @@ -14,8 +15,6 @@ class CoreWidget(Gtk.Box): def __init__(self): super(CoreWidget, self).__init__() - self._builder = settings.get_builder() - self._setup_styling() self._setup_signals() self._load_widgets() @@ -30,15 +29,5 @@ class CoreWidget(Gtk.Box): ... def _load_widgets(self): - glade_box = self._builder.get_object("glade_box") - button = Gtk.Button(label="Click Me!") - - button.connect("clicked", self._hello_world) - - self.add(button) - self.add(glade_box) - - - - def _hello_world(self, widget=None, eve=None): - print("Hello, World!") + self.add(BannerControls()) + self.add(EditorNotebook()) diff --git a/src/core/widgets/__init__.py b/src/core/widgets/__init__.py new file mode 100644 index 0000000..72b072b --- /dev/null +++ b/src/core/widgets/__init__.py @@ -0,0 +1,3 @@ +""" + Widgets Module +""" diff --git a/src/core/widgets/base/__init__.py b/src/core/widgets/base/__init__.py new file mode 100644 index 0000000..729cb64 --- /dev/null +++ b/src/core/widgets/base/__init__.py @@ -0,0 +1,3 @@ +""" + Widgets.Base Module +""" diff --git a/src/core/widgets/base/banner_controls.py b/src/core/widgets/base/banner_controls.py new file mode 100644 index 0000000..3682ef4 --- /dev/null +++ b/src/core/widgets/base/banner_controls.py @@ -0,0 +1,39 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from ..controls.toggle_line_highlight import ToggleLineHighlight +from ..controls.scale_up_button import ScaleUpButton +from ..controls.scale_down_button import ScaleDownButton + + + +class BannerControls(Gtk.Box): + def __init__(self): + super(BannerControls, self).__init__() + + + self._setup_styling() + self._setup_signals() + self._load_widgets() + + self.show_all() + + + def _setup_styling(self): + self.set_orientation(0) + + def _setup_signals(self): + ... + + def _load_widgets(self): + # styles_chooser_button = GtkSource.StyleSchemeChooserButton() + + self.add(ToggleLineHighlight()) + # self.add(styles_chooser_button) + self.add(ScaleUpButton()) + self.add(ScaleDownButton()) diff --git a/src/core/widgets/base/editer_notebook.py b/src/core/widgets/base/editer_notebook.py new file mode 100644 index 0000000..0af3c31 --- /dev/null +++ b/src/core/widgets/base/editer_notebook.py @@ -0,0 +1,57 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from ..tab_header_widget import TabHeaderWidget +from .source_view import SourceView + + + +class EditorNotebook(Gtk.Notebook): + def __init__(self): + super(EditorNotebook, self).__init__() + + self._setup_styling() + self._setup_signals() + self._load_widgets() + + self.show_all() + + + def _setup_styling(self): + ... + + def _setup_signals(self): + ... + + def _load_widgets(self): + self.create_view() + + def create_view(self): + scroll_view = Gtk.ScrolledWindow() + source_view = SourceView() + tab_widget = TabHeaderWidget(scroll_view, source_view, self.close_tab) + scroll_view.add(source_view) + + index = self.append_page(scroll_view, tab_widget) + self.set_tab_detachable(scroll_view, True) + self.set_current_page(index) + + ctx = self.get_style_context() + ctx.add_class("notebook-unselected-focus") + self.set_tab_reorderable(scroll_view, True) + + def close_tab(self, button, scroll_view, source_view, eve=None): + if self.get_n_pages() == 1: + return + + page_num = self.page_num(scroll_view) + watcher = source_view.get_file_watcher() + if watcher: + watcher.cancel() + + self.remove_page(page_num) diff --git a/src/core/widgets/base/source_view.py b/src/core/widgets/base/source_view.py new file mode 100644 index 0000000..f91966d --- /dev/null +++ b/src/core/widgets/base/source_view.py @@ -0,0 +1,94 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('GtkSource', '4') +from gi.repository import GtkSource + +# Application imports + + + +class SourceView(GtkSource.View): + def __init__(self): + super(SourceView, self).__init__() + + self._language_manager = GtkSource.LanguageManager() + self._style_scheme_manager = GtkSource.StyleSchemeManager() + self._general_style_tag = None + + self._buffer = self.get_buffer() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + self.set_show_line_marks(True) + self.set_show_line_numbers(True) + self.set_smart_backspace(True) + self.set_indent_on_tab(True) + self.set_insert_spaces_instead_of_tabs(True) + self.set_auto_indent(True) + self.set_monospace(True) + self.set_tab_width(4) + # self.set_show_right_margin(True) + # self.set_right_margin_position(80) + self.set_background_pattern(0) # 0 = None, 1 = Grid + + self._set_buffer_language() + self._set_buffer_style() + self._create_default_tag() + + self.set_vexpand(True) + + def _setup_signals(self): + ... + + def _subscribe_to_events(self): + event_system.subscribe("set_buffer_language", self._set_buffer_language) + event_system.subscribe("set_buffer_style", self._set_buffer_style) + event_system.subscribe("toggle_highlight_line", self.toggle_highlight_line) + event_system.subscribe("scale_up_text", self.scale_up_text) + event_system.subscribe("scale_down_text", self.scale_down_text) + + + def _load_widgets(self): + ... + + def _create_default_tag(self): + self._general_style_tag = self._buffer.create_tag('general_style') + self._general_style_tag.set_property('size', 100) + self._general_style_tag.set_property('scale', 100) + + def _set_buffer_language(self, language = "python3"): + self._buffer.set_language( self._language_manager.get_language(language) ) + + def _set_buffer_style(self, style = "tango"): + self._buffer.set_style_scheme( self._style_scheme_manager.get_scheme(style) ) + + def get_file_watcher(self): + return None + + + def toggle_highlight_line(self, widget=None, eve=None): + self.set_highlight_current_line( not self.get_highlight_current_line() ) + + def scale_up_text(self, scale_step = 10): + current_scale = self._general_style_tag.get_property('scale') + start_itr = self._buffer.get_start_iter() + end_itr = self._buffer.get_end_iter() + + self._general_style_tag.set_property('scale', current_scale + scale_step) + self._buffer.apply_tag(self._general_style_tag, start_itr, end_itr) + + def scale_down_text(self, scale_step = 10): + tag_table = self._buffer.get_tag_table() + start_itr = self._buffer.get_start_iter() + end_itr = self._buffer.get_end_iter() + tag = tag_table.lookup('general_style') + + tag.set_property('scale', tag.get_property('scale') - scale_step) + self._buffer.apply_tag(tag, start_itr, end_itr) diff --git a/src/core/widgets/controls/__init__.py b/src/core/widgets/controls/__init__.py new file mode 100644 index 0000000..f53f627 --- /dev/null +++ b/src/core/widgets/controls/__init__.py @@ -0,0 +1,3 @@ +""" + Widgets.Controls Module +""" diff --git a/src/core/widgets/controls/scale_down_button.py b/src/core/widgets/controls/scale_down_button.py new file mode 100644 index 0000000..5319300 --- /dev/null +++ b/src/core/widgets/controls/scale_down_button.py @@ -0,0 +1,35 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class ScaleDownButton(Gtk.Button): + def __init__(self): + super(ScaleDownButton, self).__init__() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + self.set_label("Zoom Out (-)") + + def _setup_signals(self): + self.connect("released", self._emit_scale_eve) + + def _subscribe_to_events(self): + ... + + def _load_widgets(self): + ... + + def _emit_scale_eve(self, widget, eve = None): + event_system.emit('scale_down_text') diff --git a/src/core/widgets/controls/scale_up_button.py b/src/core/widgets/controls/scale_up_button.py new file mode 100644 index 0000000..f73409b --- /dev/null +++ b/src/core/widgets/controls/scale_up_button.py @@ -0,0 +1,35 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class ScaleUpButton(Gtk.Button): + def __init__(self): + super(ScaleUpButton, self).__init__() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + self.set_label("Zoom In (+)") + + def _setup_signals(self): + self.connect("released", self._emit_scale_eve) + + def _subscribe_to_events(self): + ... + + def _load_widgets(self): + ... + + def _emit_scale_eve(self, widget, eve = None): + event_system.emit('scale_up_text') diff --git a/src/core/widgets/controls/toggle_line_highlight.py b/src/core/widgets/controls/toggle_line_highlight.py new file mode 100644 index 0000000..44df66e --- /dev/null +++ b/src/core/widgets/controls/toggle_line_highlight.py @@ -0,0 +1,34 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + +class ToggleLineHighlight(Gtk.ToggleButton): + def __init__(self): + super(ToggleLineHighlight, self).__init__() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + self.set_label("Toggle Line Highlight") + + def _setup_signals(self): + self.connect("released", self._emit_toggle_eve) + + def _subscribe_to_events(self): + ... + + def _load_widgets(self): + ... + + def _emit_toggle_eve(self, widget, eve = None): + event_system.emit('toggle_highlight_line') diff --git a/src/core/widgets/tab_header_widget.py b/src/core/widgets/tab_header_widget.py new file mode 100644 index 0000000..ad58854 --- /dev/null +++ b/src/core/widgets/tab_header_widget.py @@ -0,0 +1,60 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class TabHeaderWidget(Gtk.ButtonBox): + """docstring for TabHeaderWidget""" + + ccount = 0 + + def __new__(cls, *args, **kwargs): + obj = super(TabHeaderWidget, cls).__new__(cls) + cls.ccount += 1 + + return obj + + + # def __init__(self, tab, close_tab): + def __init__(self, scroll_view, source_view, close_tab): + super(TabHeaderWidget, self).__init__() + + self.INDEX = self.ccount + self.NAME = f"tab_{self.INDEX}" + self._scroll_view = scroll_view + self._source_view = source_view + self._close_tab = close_tab # NOTE: Close method in tab_mixin + + self._setup_styling() + self._setup_signals() + self._load_widgets() + + + def _setup_styling(self): + self.set_orientation(0) + + def _setup_signals(self): + ... + + def _load_widgets(self): + label = Gtk.Label() + close = Gtk.Button() + icon = Gtk.Image(stock=Gtk.STOCK_CLOSE) + + label.set_label(f"{self.NAME}") + label.set_width_chars(len(self.NAME)) + label.set_xalign(0.0) + + close.connect("released", self._close_tab, *(self._scroll_view, self._source_view,)) + + close.add(icon) + self.add(label) + self.add(close) + + self.show_all() diff --git a/src/core/window.py b/src/core/window.py index 1b702a8..45c79b5 100644 --- a/src/core/window.py +++ b/src/core/window.py @@ -83,7 +83,7 @@ class Window(Gtk.ApplicationWindow): styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) def _area_draw(self, widget: Gtk.ApplicationWindow, cr: cairo.Context) -> None: - cr.set_source_rgba(0, 0, 0, 0.54) + cr.set_source_rgba( *settings.get_paint_bg_color() ) cr.set_operator(cairo.OPERATOR_SOURCE) cr.paint() cr.set_operator(cairo.OPERATOR_OVER) diff --git a/src/utils/settings/settings.py b/src/utils/settings/settings.py index f6ce27d..c3ee5f3 100644 --- a/src/utils/settings/settings.py +++ b/src/utils/settings/settings.py @@ -29,7 +29,7 @@ class Settings(StartCheckMixin): self._CSS_FILE = f"{self._HOME_CONFIG_PATH}/stylesheet.css" self._KEY_BINDINGS_FILE = f"{self._HOME_CONFIG_PATH}/key-bindings.json" self._PID_FILE = f"{self._HOME_CONFIG_PATH}/{app_name.lower()}.pid" - self._WINDOW_ICON = f"{self._DEFAULT_ICONS}/icons/{app_name.lower()}.png" + self._WINDOW_ICON = f"{self._DEFAULT_ICONS}/{app_name.lower()}.png" if not os.path.exists(self._HOME_CONFIG_PATH): os.mkdir(self._HOME_CONFIG_PATH) @@ -73,6 +73,7 @@ class Settings(StartCheckMixin): self._main_window_w = 800 self._main_window_h = 600 self._builder = None + self.PAINT_BG_COLOR = (0, 0, 0, 0.54) self._trace_debug = False self._debug = False @@ -107,10 +108,11 @@ class Settings(StartCheckMixin): return monitors - def get_main_window(self) -> any: return self._main_window - def get_main_window_width(self) -> Gtk.ApplicationWindow: return self._main_window_w - def get_main_window_height(self) -> Gtk.ApplicationWindow: return self._main_window_h + def get_main_window(self) -> any: return self._main_window + def get_main_window_width(self) -> any: return self._main_window_w + def get_main_window_height(self) -> any: return self._main_window_h def get_builder(self) -> any: return self._builder + def get_paint_bg_color(self) -> any: return self.PAINT_BG_COLOR def get_glade_file(self) -> str: return self._GLADE_FILE def get_plugins_path(self) -> str: return self._PLUGINS_PATH diff --git a/user_config/bin/ b/user_config/bin/newton_editor similarity index 83% rename from user_config/bin/ rename to user_config/bin/newton_editor index 7a3e523..3e34fe8 100755 --- a/user_config/bin/ +++ b/user_config/bin/newton_editor @@ -19,11 +19,11 @@ function main() { # NOTE: Remove if you want to pass file(s) besides directories... if [ ! -d "${path}" ]; then - echo ": Path given not a directory..." + echo "Newton Editor: Path given not a directory..." exit 1 fi cd "/opt/" - python /opt/.zip "$@" + python /opt/newton_editor.zip "$@" } main "$@"; diff --git a/user_config/usr/applications/.desktop b/user_config/usr/applications/.desktop deleted file mode 100755 index d459bfb..0000000 --- a/user_config/usr/applications/.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Name= -GenericName= -Comment= -Exec=/bin/ %F -Icon=/usr/share//icons/.png -Type=Application -StartupNotify=true -Categories=System;FileTools;Utility;Core;GTK;FileManager; -MimeType= -Terminal=false diff --git a/user_config/usr/applications/newton_editor.desktop b/user_config/usr/applications/newton_editor.desktop new file mode 100755 index 0000000..1d6ed4a --- /dev/null +++ b/user_config/usr/applications/newton_editor.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Newton Editor +GenericName=Code IDE +Comment=General purpose IDE +Exec=/bin/newton_editor %F +Icon=/usr/share/newton_editor/icons/newton_editor.png +Type=Application +StartupNotify=true +Categories=System;FileTools;Utility; +MimeType= +Terminal=false diff --git a/user_config/usr/share/app_name/icons/app_name-64x64.png b/user_config/usr/share/app_name/icons/app_name-64x64.png deleted file mode 100644 index 6105709cd12abc8d75074fa12ca5fe76b856f13f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11833 zcmeHtWmH?+);1J(hZ+#9rL;i;0YV8BcXuZw0fM``lp@886)&y@iWV)UP`qf1yGwB> zP`r$uKBEIuaPxY!c~=JNC@u|Vqjp9$jM5oqrad1 zy76(*pCu^AISdT?A6}ZeF6uCMfP<60Im!kJaPf3N0+1dka|{fRsr=U{r#NyO2HlB>f0M7P`@721hplr<>x`3?l>)-ax8^%9s@5j2_qX?~1CGj%IDCmU*SB9D z9KAgC3aV_w^@6fnN@vn-gH^prsINRbTW~il^xW-geK=t|N4_mO>O(gQCgN39ZMYZL z&QEmh**J0c-5nO!O36+X0UK>?;_IQyrDTc`I$aerJ}(zrScwk>p88&+`ZvCD>0Eh^ zl2!V&IQh5vU7u(KM3M$QcGP|l{+ChwWL z{ZXZY+t;l=i=k(uc<*&34hB??5Mw51=al-oIZKn_(^xv!lZNTgy4j=ZLaof^`}JPk zrpk^7_BX~ir&vR8G#&OTOzO;x=lZ@XN@R}e*mbh(dENo12G0BY-^7_n48*yB*}Nw1^li55a_Ro_GQlEVSH@gMkM{f( zx`g9A#ZLm`+h2V01mBN899oUs4!Dyk%amY2L*|-J184S=FZ-yf!qk9~~4c~JL z>HC{^JrmVr?)g%R@DB1FJ*gSwzdU^W zILpp8aqAk$$zhwI>gCh^W~vx=;CQ5(T~e#UaH-%0zYpC=eB98e_4o;W$2jy-cf}|R zE{YV*p4D(R@vS{Hd@L!Bzf2~w)Yu~3jcBS5oc6^fy(_RKU+L5P3F-0DP-kuP(kf#c z#%gkBUSvndlfnFEr^@il)s5rr*FcqtXW8vXUxUM~=d*+jxmNXxoVy z-}hvzC?;4f*wE+^eKVqr%(}Kg zFMQzQ{Cp%&!V{NqwtV_!;A+{(b*sYcYR-dcP{I{&DerzQV*U}u%sm!NIr6DvCwcFr zhexW1T}jpt{73B0O7sCScD^ru|?b?*7 z)bq};){iepFvuV5)IP(jch~crY0=W{KY7^h<2N6*c*@%;#QX4`%sa^8vom76AYDJZ z=A^S42Hx4NXK)Os%&{y!`O)qoi~#Ni-hi}ar*>~>ZNlczr_0XdmP%MdzHX2AUc4T0 zU&ZTQ?4Tr27Jn#d+-fYraNzsAu!fjtu9tqkU2Cm=4UU5WBN{wb8)S8xa>)Z%;fx~< z)3k!!g>M}IbFaHEj>n5>v21*k_G=#4v7er-+p^+pBj|OZR8O%Fj@NS*JElt$t`!}c zCY8GEoLI_?_Q|*8%wH=t(9tfKs5CxR3g_rOwwv5*#>FCeIbPGcy((KnmwDUbqG{K2 zR;$Ky-#2TPC-@syF3pr+Rrx|m`8HgCvxi^XsXRLW4F5F6+T&Y?#p*z#qpQEKUe11K zTl6;qKoIzrzBiXVd5TuCI9~a8CqIriGcg@lCI!`55b9g5l~t*utZoK(nbuJ;mMnZh zP6spK@VCe9H<=f)pb*LFidY)q{YGi#v`mOAmRhIt9V>Ii77bMojg{)iaDPgN%6)?7 zGF18&VL+%;xnD_ezNR+P_li{qn3WPDzw_y>hpQB!qLs?1RdGx-Y8B5dc6}B=5in)7 zUOqf%(0Hb&jas@>AK{>C6Eb-C*+Z{N%uRb6w z@TeROj!Wp;$BZiVrbi@9ic6jrsYqBJi9Ks^-{&1~qkyt}$|r@r`}c-NX%<4rnmVID zX5im9Becw+Jl0H8S(BEX8O5gw7)ZxKEgLbUEj_gv2GYuejHL~^z~&>Mpvda4IL-GI z*$I>5&!mb{hMc-~ksi!BL49s7W1p`w+m$1Za)@6<6_~O=@y5*aUh8qWBb)S8D{3Eg zCi|*rvs9eCQ1~L-KgjA9n=)HF$Nje^Bff;=q2Mj}x2%S}>>{#nKWh!+p{)h1=J7W2OXmBJd_}JmH-CWDl)~M)({kvkyo?=M zFCN|LdV7%u_48?enU0jP zm^NaTWl@W&NwUeBi2I^OH#9Hx@*iGp{`j7`elmTsd7)3r7Tv@o!fmU~@4WFjEY61Q z$8an6&fKS+D{t-+Ik-^NIlitq;N)edh~4)}%?jC2xjyby+5UYWvHM{fUHB3;?)rG9 z4c5z)0`jPx<NI)Qu}a?EXBp)1MyCrvA3W-!@w=$HHjH@KU9j#?hZh8 zp!u2Co4l%C^1dBYHk=gC!~)G=zsqm9ELix73LBXEq-vtW`-{x_i|_H$lXe_+b4}Hg zFPT6lE53qZ=|<;)Z%wt%93`wb{2ooJ5Ag*n)u`RF2&S;xq8^Uviwl<6xmICY9bDZm zOzh3y_rjhy+N_KosLkf4c{X4kc!7m$x|LWa24QAz4zfvUs0BQ}K9k~fE&8(GK^Q-8 zK2dR`C}2W$LKb0K<5jegc`)g;HniHT!_wcx&MUG@p5$ZBfj`5O^@c{)q%2W;FcBx0 z;1F*6Jji-L`eiJoL<$4EGL?LP_CoR?>Zc|Js=@wCjAZs%5#0n7g=5EY^_R}RcIhB&E1tZVyadc_f|88;vOEh`KhB3MePQmC2EHK=O&r~>ypz!^ zj?3icu}o`Y!}^H$z}^y59T2U6%@M&tCh0$YT&B-1umr#umRWC9dET=(WBP(pD3)`w zOgm8U(#aZbGdTt|Wk{8c)|5*r(0`=)yqVY{S>1vTJb9P031CUCF>iPzgrGW(hpY=% zSx+-3xa75pU`lC5^0SwOTeaWt-MQtl&23>BaHXX`N5W3(EFZ11coQUyIhAQj$cFqx zel1^|d+5FjqmMILh_~#N6`ZTaz!(mE;2}!N?NxX0p4$>ct6U<*EW|Y%`!o z?UctXtM^sk+VTdpQ9hyN(VQ@3mkR6_?8tF;KNv^r<8I1fS4yA8`Dn49Q#1e&O#c#+Ob$(Km`!3ur z@JnC}nu11xC!W{F&TPuct5#Y$T-0wjD3D*KCmP)vakviA?b|u?E=0W`T?QRuxz(ls z4_-5V!An)_~=tgzFkF za(&ughwBE#DQ-&lJm|+E{j#rB&q6Nz?G-K`;Rj`MXfMdrmq>{p_QA?~Dw0(KQt-KY zTtD#$nM84BIv6FcuSZ6r+hE*+LmAp^I8n2y@X4dh6Q2>4S9TY6uP!8>Xsa5ZXmEHq zy0E*IGvICFu33wmGmTkIUsZV$?Le}9{KO4W2(K_h2yxaL$L<|3cP29uJza_ zw}uy|t1kU0ThG(sWo{?U$tIQ8fFd8;vIqJG)kY`X21@rDatHBO-dHC?>VHS{$>{Ld&)7HNn3{hrJ`JWkcR z3uvt58XoB~zc-^#Z%nscGaVXF;+wkawRI|Jc_Ijkb|2`6O!?OLCYO3tu2ELqG5iPy znu7uB_YoISaUkOL2YX|$(yfs4Ci<}oVwDBucYC*K#^eEH1bN;0DJD;lsnQsFzQNba zb)sH`q$XK|mx>_^wS&r0Of6HYl_KCOLhkn^_%ni7#OjlaGu>Z_k~*+MzE6F2zP?3w zuPN_EwyI^o&JtxU+!9<`>Wyg0m!S`_y(e$bqKo%MbDwMHeM0xqNNbSoNpsT(iG#k15pmEDOTuN`RZ^+?BEEJzi@W zN`0#BjW=1eH)ON2>Bm@ty~ghJ6cLtrr;PlEDnn5ZZg&?-*-H`o&HEaPu!=w2ETF>Y zf->SL1}%PPS`YJRcHWXn^mXG1+SL?{^3}2C68_+QHicZMTjX0!ya$oE?ek>m{j5e_ zlSKsa9xPt!O%6GV-i7%0qnp*sULs{h^lfdG z=iQw@K}FP&bC7aWEr9c_q+RXdd8e*LYRK_73u6FBf7KE4MuwSFk~$<}n=bBnKV6tN^Y2Y5$X(v@k=AG{ z<+4(dlnks3SWud?a>q2k3@N>}6@$&ihS49!Q#7nowK>YAp8Pf8CIFKerEl+?OJ%5Q zRRXXY9#LtMBy6bPjqf-=dH6|UHDPGsd#^#(ffcZ1!5iE{ykalx#uJB(tK`&u8r50s z`=YVLgw)P-jF8WVbVPzNpZANTO#BCm30}^Rk-G}2@szKkgK)_LXQ=`zN;-f)^#_;& z2KvctY#s=!sbN0`9BL}*z@(=PKU?WY%<#YiB~@OXN}WLOPs#PPk6jmVD2s{6N5M3{ zn}vi14Rcu*=+>E7>eR3fZ8xUdou*LV6n|0+U%~8uQu#Jt;(5JHzhg8#UtUpdpUbAR z{ayI8DQ2ALrgaW5$+g=39c6kqD))wlR9QgyX<9OWaXd9el-WnP&B6CTtNUht9WRoa zX%%eqB-?wimFosW#90z`vxw|F#0rrv&Et+WP~Z!CEz4(1A@Wn!8?SR4g@2wVI&`|r zr?GZ~?*w}csjXVPxhRbCfQX84yy41m6gi4#gJtbGz8Vf+ZEro*m>CYN&!34JvYwt3 z@mRUI9{Djufmd*^I>7daxJ%(>$`u=PG%0GTJ$&(<<_9sEb0sOBLZ=;+LHF0A#^*B( zW4zcI+2tQgtq=Qq<9j@wU&&z+MFwL(kkc%3mf`69$oA<6$t81jsI--q`cDG28*(AB zrm+<8BM-M3+$9XpK;5#$uZ9cNUpiHL>n4iG4@>GQ z&Ba(7b9e6YhLV+ock){YJqh>Go!EyRZy!pNZE-~Dlp4*(l#mvjTI9SDx_bUB8a4wz z(OYl+kYVyZuov_sbNua;9B_vCdaT;Pu>@0)UjQ;?ioN#I|hVEklFmU=!SA2`XL z^HW>gM4TNEA~dYgW%c<981H*cS$5s`mkidUURRg2ukPKdziZ)bAEz)raH_6CBO|&> z2#P3~@_mu1|4muxnS8s;r&kEFLkP}0qKkbSjb;*Wm4Hd+sMC?7G0d^er-;0r73f{s@)_|j3&K?w z;_Afnl-zPf?T!h`^%RIjb$aaO_v_ny*F{SE`AKSbV&^CDs}9##7UXoCqai$paOz9%H;%;Ww?48Anc6_JlZAQCi+0m7PrigS#!rjB zZm#dJUlY(fR1PyHqSe&b8}J45eng_-$GFtedQ4K>?8PJytXK|-E+$QG|s ztf!$bX1x$`AAN15)`^|d33QDZ%Epxon{ea()EcEx3qq6UiQUI^`|%-_k&Sgv2MmPs zRLzTb^JaRsm6W!8hE+Z_9>_QL`~hK^zGx!6jrlZS64FeksCH8`hJ9tRrk=#tv>z>!kuD;i*n8Y zb}h3+GK#Q%eUyL=mlTRTk8l>C`VQzas61dte1qP4YQS zm!vjKEm)42H+QC#)XBy_4kcJbjdT1UQ$d1rnLWcpRfuVF%zqgV+x5v@;8#PrC{dG( zoPH;rilvz}b0Go(I#yjO@kH|Nw^OO*-YE+eoZ@~@k{ErJ$f+aVojl}1MplfgQf13& zQhgyT%c(4G)(8+I!U@1IXd02;-#dvo+iGTj?}l2bdE6R!QMh{{g%l@gWjM7*`i=!t+Oy#=pBdJT!YmoOY?~gL zia3xO4_>NsRh~li99RM4_(oxkSr@Nu+gkImT!NSd zAa&fw&S_#2SMXCX;e7&5N!R9eghn}Z+pF}nR>zQXyZcodaSgC{ToCd3i*+EUW!Itz z`~_`X27`T(MVQG%U3KJ9k1Mm~PU#9&aT(cmX~##i?su6tc*Lkqm3wD-7UAFd=(*x@ zo$H8#O5UgQ4~OI;SPrMvq#~5FqwJL>u9^8wUE0X@Rn>oxYP6xg8$JYwIHpZ5*IM5q zZ7Qh)NPPq}5><%i$1`&;Yd2NqLa&YG`E!OZg*a}Z35dTQ*-i|X!rch}2euL#W zw7B0C%N(OoE!Xw&M}os`T1=jIrH@`$4#haKBt;&Rcida6NVp<*MDLjSRs)VY6?rQj z>xF48y6vSzEYzLQ)CQ4Dd^T{&9AXuRpqt}MIpqds8O;t+=9{dkdKcR`GuXt zflb|Px{+-g7=+AqCjD;kmQWr+Qo3!rJM_$V?4??F0&%n|j{o8lW>*e%u^5k1y^AR} z$6i_8PHLS`wsLm&l?E1a$~)xxUFc_THDz}TK96H+7XoSTBr-_hBSXdVP8bY(JSnn zqJCCCu14()w&!7r$Q@U4Fx{a!`dP~tFva!)6T6{NxYHe6 zSI>Ff9H&7e7sND=2-jwkVtQ6t^-?bC~36cj%5Q7J4V>5}{E)Ev+Bc^^{$?jK!*TMJk|^ zh8|9eBd^j=E+d4%{ES~!Bd9BF^RkITc+u5k;~>$YYO~+w8y;^5K0YKgFAzq48ZTLz zA($@JE)BB5E|@8t-w0@K7oq5QTk1PS@ZR4_9Gq5Qim-@S8y+nC@D6aC&LY1(pUVg2 z!{sw_^k7G--{Wz8L3mYs!e=fRil z&u@RVu)Y=mbBvUJBlJNTB(ZhkW;bB!)93w&+lkbIn_GBmS?wFr-e0|v{&>88Mv(hX z<*AZl@2m$s(L_$7TOB9?tRG3rP)ZoJex*!O_S`g-D-$bIXlG27sw-p7vS|PMZQg^S zsNGsfnVmM&g5yw17AoY^I=whJXW-su-PSV=k<5r`NXTOG2B}&&xhQ{KuW>wo5poZ1 z4f-j5ssuJzW+;@PF1sK;5G2VtwJL38NI2zjuURkRG->Ah=NJ}Cz zA#<{0!tZVOL~t_T+C-;vzb{E_Xw*0o7EtoWeBDR)$L$GU5$5^6K>`yY)rXc|WsR*n zZ`^kIGLr_e<15|vK5^pg>O{j!QMP;r9W>MH=lB@A>21lX$_k3Z@7`S{=MS1+Ti53@ z8W`Eb8}SGmqpjE$#WU>TTDEej-ja)h{I8-fMAj%G-*un#Mc3vtihL=KcKNU)nR@Ah z4>mY77_^%@?L8EdR0!GNBN>(P=*W{bn*I=fvrAAXHQ}Uek@EVk6xE{0dk3MaE*IgpTcm9Ms z|IJFw2A~G|J~4UqK}@RK8kT>CEzMJb2WsPE0H1E{5N6x6Rm$g#By%AAAO)E+D1bRt zHp7%}I=^Z@NeGhZYicH>G%GrY{pJHl2$p<7#k_2Cwg6&s_h1ESsx#Ez9i zXaKDqkZsg6?X{A8r%}QsMz46WGFi}zO>nzdxQp#hOAA-B0b{)e>LrNIKG!4v3 zni3X9Jf|m)FIl(jysWjRiwYQxUqiO=DPnI(LX>jbCL??NF)%PgP!bZVauO2%It50b z{igfIL1jBtsY6vX@;PYmh#~|LMas02Quk{KrHaU{Lbd4?jep=N-HoTFlj*2kSQs)J z@95Ig!P5~Vzru8MaZ-1Qquf^@1e!H3#>E`%L7Lqe0b_lNHA0^-mFfpHnK{j?OU*WD zFo}opT>AP!Ypjn5=6^I5+LgS&J#@H#S>rXH-W3oaE8Iss`d|)_Irola@bV*tcB0mj z^Ab-2sq9scYuB>CAWkw)<{h5VV$UV~DqTx>{!6_tV=oF{yeTQrXpKG4U2X2td#s~( zlz#PmF}=0A-&Ma;)|5ga79cK0!5ZvCD6Na!iLvni9I-pPOF))NhJse~H|Hc(Uw||+rm;t|CT&$tYx=N}53413bfRB@plN%`IfpP;eix2{Y zoe<_i>XOobLZF|Z%$6=L4nka9?(XiK?!27#P8M7|5D0{e8^i?y0nr{nXHPp9m|41n#r=U$y^sMtdnK2}#<+U4IQvP7=!eE58uJ9*#l?{ca-7c)&0S!VD+~;)enGV1h6p zj0Xk-B4PY|5N>lp1TQc0Z%}e}&Mq)JIPw=18k`e_#xX;H5n!Ys1PFt{&Cn3sNFan4 z!3*RU;0J-YA!cwm5A1IcDo!Z0Dq%K%AJs1?1R6@voEyf=gM>G^ z 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 JEo>O{{{VXALk|D| literal 0 HcmV?d00001 diff --git a/user_config/usr/share/newton_editor/icons/newton_editor.png b/user_config/usr/share/newton_editor/icons/newton_editor.png new file mode 100644 index 0000000000000000000000000000000000000000..30ad12abd671958590acb2937f511bc576fcfb88 GIT binary patch literal 8966 zcmeHMcTkhvvksti1Zjd<DdI3Y`Q3(rWXZP7XCub+IrpCG~jHej^004`= zo|YNq8+dfl(^5W(!NH#a0H%k*7B(a^bO6xX*UJU(fdi6)ym3HWAl?N42%IfSbNAh7 zVu?H?a@j`EvxiDuA9=6=92}uD5D4+ewfAFhR!Q0cs*?)G_!A&DO>UDKOB(NG zjCY%qR~anbbJ#Oc&OL~GxBb13c;j%PvU!?i(TvRV{)%C6&f(+t7inHz?@7PRTXOTA z&Xv~lOR|^0DvZh!AH{5hs?tol<^lIu4w*;a;~YyJSoCw-vM6J}V*?ec;u&Oe-wZ`et>G_f{&pzhZrwL7QZ4_T!J1q*PEIOSL$>`(vL zWD2pD2)vSFT^VE8m4xDn&I6 z(Mg2BT1}VSo(XCOCUeLS0gN0z19MoY>A}%6mZ3MD`*>ZfF7`J4r+R;`$koG%ik)k_)-Y>ch)gmxjkDXM-!=^A-ZbbB(2|q zcfXca0pZ5?s30+%AMJ43lUO4M*#$w4(_*tN*r9UvS;{s zt9iPJXk=DNeCn-11NJW!7hc;M;sJ`Fh|kj#pXeCfzH9`NEbCRt6d=^4e=_oXYp2=I ze}AV5a-q-uxe$Rr%#6{ldiTNS9INTRnWE*o;W7JXA$DCY6=O|a@^uPIWCMtaF?|^BfwraAHC*RG#O$%KQ-?&*J;5SwmIy}H3 zv@_EX?O(St`@)k`M_96Q2kSJ05}qzu&cbR4;uz370#4WmKGI_%A+ywHW5VE{nVIvY zrQ{FZf7fO>$SP0 z@fgB0Q_}<^3oXCk_Z$pyx?y(LoSw)v<1In1|4v^sdcJO?BMXzX$vdlua055dv?|Cp%pMO^MjUoE@{Be;SU*Rb7EJ8JNg?cQJTxB?ZTkV>1 z_sa^2@_CU*c2mROsxHE6J*}E|ZNV;_yw@QW_6@7%1wJeK0gngk9Rz!!c6&dLvBs7^ z(!sZwD+z@dsiz`)o+_;P+v$ffR%wVVw+l=$O(i*`S$mER8b$U_8rj*^R1;|8%tymU zOLZ4Ymu~6_4w2=rZl2;&5iT3VhF01PA_C? z)m}SzF!dqdJm*y{#$uAiJpEZkSeaBCzA}XUz-jRw;D(Tjnu*39Bxww2FYyhCf-`%a z#|`>N-4tEHx<&qa4_;ux*ynQ#`X?oJqD zl3tm8Jyy4nbe`C}Zm!N7?<$9_Lg~V3=-hhG@<%-oUSPS~$tReEA&^<^NOz1T$}bi$ zSCDym2*Nes@;inJ-_}HWo7nd7{sx9xjO4g`B)@Wp3qhJQyk#_0@`pOnoKBw%n)gqN zBO{l|j3-Sq?9)l@0&em7yYIq2TX6>?+r^Xx>y zdzduxQcc$l#XC{w6L((O`JY=9+x6i+#8b6DF{es)nQicCmCD-nc&s1?c`j8NLabbm zWL@>pH*OMHBg7A!_-!9xP#@{u&f5u$K3LRF{tF8g)ii@{ft9*~osK zD~2&Q3;Pq|;5&LF{8gG5TH|Td*9qm*d z&_NF9#wOVXJ;yYuN9^niGSxCmVk!zMTm^0UZWGR$*Je7OInGVQ(SCGeRTu0uzFUuE z6utVjZkIM9O@?zJGena~QdkzmuN>ew6;cwsPM=kHZ7hnxu)^-eobBBE=S}nwsuv&1 z617GO)nk%li$68l()VbkmJn(4terp~7-}!J*-iO+u4cc!csoX3+7Nqb7t3km;w>e{ z($*ErpHpt1rE=C^(*tHm((M>B`&m^{%Aokk8!H`|};}DObV8@epD!7bkEq zP^PABOlyW&4#d{%$(t$aHY%Rj`}$O~TTBnbL5c8~+$8R0g2yJC)kebjzLSBngMtI2 z?@gZ0#BcrS!=+AgAI;^@gXCOa&5%2=xdFFts#?tz~70^yuj=3Tlz6!U2jl44U?)w@gAF|2GVs9F{bRyRtvug`U)S5B4$y}>Q&<+IUOW86Oj1g>w z0Nj) zpO{sxy1s8k>m`QxY=0^N0H`AInwqBinwozc-6;q5tgu9+UgtT!?u%-*Ag+9WHlIGz zY^j(yB{!}(Q=tjQ3PhU2{&CdlB+gU1?R8{wuk&Pkx2-juwL05(fRCS#87Yzd@Ghra zSD^RHgn&JPfGxn4!VU{rr4uC?xO>SALYekl8V~7#5x}OCiD{)HvCfP+OX~uvPv^UX zQui9wbaRswdC43xuIU7ut}|WFGgF@hf$G=J}DTzQo1suOP% zoTFqQ#i?xb-pNYF;7-t(`^t=!7}Ob$A{FWB3@MGT`ws$xWA*nox6 zGLnzjiYrC(7qigM)9kar{)fLs5F|- z)ez2*0sjFSbQ>SGkRx4B<@@K7MJR={Whv z&8HG{%rB{1+zDP4VOgpG-Ze=-8a_ViLhXSIdw~Hau3m>Z_?Q827Cm=yv&8;9H9*YE7%cEc@ zZ%y1Kyk4*`&OF%I0u$_xfnz~xs*Eau2nv8Fj)VpVdU_Cuh(ILhCoY0=eNDzoJ z4*bJEPj3|JPj~|HcNQpoKm*agfsny9JS??N0&u-J$={f@neMNTFspqL-g9 z2B++v%jEC!16z!pg{_fQg6qW)dDWbmBeHt~jVS!S(0B z5#b1RQ+*^z1_Jv_V(Nh=xljy{AR|1%FYvDc3%n=JoP<7NQ(8e0E-fu1FAbNIfy1O_ z{!+5S`4TCWc!VhpgUJ3GIZ6wH5)6e{^iiEs0Df9fVnJy7;?N{7UkfiU4AlXXe~4eM*)S&$Rc2}2x&!&qZ=iJtRfgDkAVG6-wTU(3Hsl(j}{M5Q8i{mkTKX?Tb@) zrSM4Mic+3GxdQ(7Gf@&hIr~#P;1cdA3lze@Fj??lgu#C&4ElS((4#%$kBC*E|BVxs zp9+85WGHsOWR%T|vKK=C+zfx`jN-xn=j-=e{C`dX1pYh8KjQaay8fl>A2INcl>e=+ zf9d*14E!VIf2-^Nj4sB%+9@1?ataEdG)psdMN^bUi`LmtR|}wi^xiOc2%tz9y!C8} zls~#SjxH)dMivi6NJr8~Y16%_xe?H(9IZnWx?mt(!ydcqvx0(HKB$c#qu~E zJ6<^5MPk;<>pVDr(wGXv-#m z;ip&8 zWabX2+PAr-kvG)#7LvMKxjkwmIA3tXOOj9(9Xx9#J1%LZPwgU^l3`H%+^udI)7Jks z@g<@4ikDhGRQEQ4!+NcRrqqo2%ER^uAC}{0ti3$o-qKqV#;-tY;wxvxetVkyrl&YP z`?v>SfewB=OIBR$Rz@52YO%i#fffZ4Pv+FXt)-tPRK`IbAM0*^DrKSTCUOROY~I~T zUg{-LR8l8ir$Qb4{^Se6g6|Lc*1jqmJMgoeO)>b2Hz99NWq{vEao7ja~ zl+59ip36}6eu=_Pjf%zUdUyU(jW&i+(*(#g8eDJu+T->eE_LhEq-MwRK|iCpuCo2? zi9M=bu;r~-r}_oVNtmWsxZrNp9Vs>Ys4hZvZc61 zr3^?)SxbaU_uZc`1qz-ODqi~{tWK+WZR3QPt*=#|0L1*X+ikrK=diCj#Zr8aEP_55 zPq4?8Y42w7-oHEw3{@HsZyE^tdb4`br!DO2s0v?;ih(BbW`>!P#1LKO*qa4%-YvFd z)o6Evl_%|MYck4`VO3+F^Wq^paZR%b>#D*UFpBz@OmF}8!P zdryHaawSkr_SN9chbK;6o(8I`t$kZoAO;qa-ytgxgkMR}_!%x6k1Fs9sjafl(wqK> zka=||B-YVx#C}-E{_Vmo^9NQdjM4OLc{X4oa3WzZIDF?6O%}?bO>^e%YHvT!av|4p zn7VsFT8CR=tj)LFHKvaV%~dsGGj_2W1-A;tXlaF%wI1GKqki*~39bH) z1-**;EWP9ce>d58;FI^SZpm#GdF=UkJsnuW_}m-=D%7nusArgHAkqB0{ZWshV@^7Fkr` zPx=!Lg#%w1bb663Jmwc_h6-H^MXdc3OCLVBe=k-Om>t}%eP;GG&D`P}i=EZR#`NQ5 zZzhAtmgL^etaHfj;ilyc>PC(ZlzaS-D`)Zo>h9_^o;bW7a5m-xh;7Gpp%(dG%1w%a)Cahq~elg zeq{{qD%IM44494c-igbTt(!xcH4y*@D&wJH6qJPRe$WK$Fa${{rf-1fS;^MOTCygS zMeSlCp=R3MaV#QXVeJRXCDgr@-dgL6|N3LE_5L|`oG40CK8e=2;f2qq3rllhQmrYw zUR17gt`Q-(TtJ_a#lk1%zX?jriF5SRJOs36WM@B}N%VV#8Xhoc$}%Xrf3?A~N{fez z&r;goSX=p|aSF@rh1d@=D_gFvt_FwGq|h>@gbW~Si7%fLEg##Az(|AXCZqR-l;?To hAnd`k#gn=NCLy#tD8l^q2<0apps#JLRjJ_=@n1