From ef104d17eab095d6d7a4d88b05de6c772e165aee Mon Sep 17 00:00:00 2001 From: rickard Date: Fri, 29 Nov 2024 21:29:50 +0100 Subject: [PATCH 1/4] update template libs --- .../gradledesktop/options/AdditionalLibrary.java | 8 ++++++-- .../gde/templates/gradledesktop/options/Bundle.properties | 3 ++- .../gradledesktop/options/NetworkingLibrary.java | 2 +- .../templates/gradledesktop/options/PhysicsLibrary.java | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/AdditionalLibrary.java b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/AdditionalLibrary.java index 690b56405..041c66e99 100644 --- a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/AdditionalLibrary.java +++ b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/AdditionalLibrary.java @@ -90,7 +90,7 @@ public enum AdditionalLibrary implements TemplateLibrary { HEART("Heart Library", NbBundle.getMessage(AdditionalLibrary.class, "additionalLibrary.heart.description"), "com.github.stephengold", "Heart", - "8.1.0", false), + "9.0.0", false), PARTICLE_MONKEY("Particle Monkey", NbBundle.getMessage(AdditionalLibrary.class, "additionalLibrary.particlemonkey.description"), @@ -111,7 +111,11 @@ public enum AdditionalLibrary implements TemplateLibrary { ZAY_ES_NET("Zay-ES-Net Networking Extension", NbBundle.getMessage(AdditionalLibrary.class, "additionalLibrary.zayesnet.description"), - "com.simsilica", "zay-es-net", "1.5.0", false); + "com.simsilica", "zay-es-net", "1.5.0", false), + WES("Wes Library", NbBundle.getMessage(AdditionalLibrary.class, + "additionalLibrary.wes.description"), + "com.github.stephengold", "Wes", + "0.8.1", false),; /** * The name of the library. This will be displayed in the jComboBox in the diff --git a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/Bundle.properties b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/Bundle.properties index a292da8ac..a6eee1ba4 100644 --- a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/Bundle.properties +++ b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/Bundle.properties @@ -5,7 +5,8 @@ additionalLibrary.jme3-vr.description=Core jMonkeyEngine library providing Virtu additionalLibrary.heart.description=The Heart Library provides an assortment of useful classes and assets to augment jMonkeyEngine. additionalLibrary.particlemonkey.description=Particle Monkey is a more modern particle system with better artistic controls. additionalLibrary.shaderblowex.description=Extended filters library for JMonkey Game Engine. -additionalLibrary.sio2.description=A base library of useful utility code for JME-based games. \ +additionalLibrary.sio2.description=A base library of useful utility code for JME-based games. +additionalLibrary.wes.description=An animation editing and retargeting library for jMonkeyEngine. \ Includes game system management infrastructure, useful base app states, an event bus, and useful Zay-ES utilities. \ This is a useful base library for any JME game. additionalLibrary.zayes.description=Zay-ES (pronounced like Doctor Zaius from Planet of the Apes) is a high-performance \ diff --git a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/NetworkingLibrary.java b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/NetworkingLibrary.java index 79f1912d6..e26e2d89a 100644 --- a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/NetworkingLibrary.java +++ b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/NetworkingLibrary.java @@ -79,7 +79,7 @@ public enum NetworkingLibrary implements TemplateLibrary { SIMETHEREAL("SimEthereal", NbBundle.getMessage(NetworkingLibrary.class, "networkinglibrary.simethereal.description"), "com.simsilica", "sim-ethereal", - "1.7.0", false); + "1.8.0", false); /** * The name of the library. This will be displayed in the jComboBox in the diff --git a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/PhysicsLibrary.java b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/PhysicsLibrary.java index 2ff80e99d..914f16133 100644 --- a/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/PhysicsLibrary.java +++ b/jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/PhysicsLibrary.java @@ -75,7 +75,7 @@ public enum PhysicsLibrary implements TemplateLibrary { MINIE("Minie", NbBundle.getMessage(PhysicsLibrary.class, "physicslibrary.minie.description"), "com.github.stephengold", "Minie", - "5.0.0", false); + "8.2.0", false); /** * The name of the library. This will be displayed in the jComboBox in the From 2fc14edfce60d478c98a3e6a8d97739dbda7bb14 Mon Sep 17 00:00:00 2001 From: rickard Date: Sat, 30 Nov 2024 12:05:38 +0100 Subject: [PATCH 2/4] update gradle template with jme 3.7.0 and gradle 8.6 --- .../templates/GradleDesktopGameProject.zip | Bin 48555 -> 48554 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/jme3-templates/src/com/jme3/gde/templates/GradleDesktopGameProject.zip b/jme3-templates/src/com/jme3/gde/templates/GradleDesktopGameProject.zip index 1fd3f16bb3c7eb59c2a86505105dac102f30bb39..0651c528cffa4a6f8cccbf6d1f7ba93ff9d06f31 100644 GIT binary patch delta 387 zcmZXP%PT~29L0a%-xcGTCXDiE%9W%^iJ0U$rAU*7JmX%&g0e89G+AI0rKXrpX~aTo zFy(dc+-t_QkZhC%Tk{84*jZ2$xsx4db3UEb`9zZZB+0jGFGi;+WU+?YY*v9W3k%6h z!zT-eb3tP46wg$_J019-4Wak`4y*h%9sb$icQ$;2L-{H+!Wh$w6-DT>Vj@Z65cZ7`T1L{4D1yU2TJ|WCl*FuE)JjoXBC^Athgl9dY{E&2q$#2=%|SW1 z$jgjpd-nD?adBHtR^;HKoD?Y>Jj>1Z^8MEL^7$Np^OJAB)wW$&1{W0>CIe#=)4mIF zmP(Cm=4f#EHFMaxL5xLkM;5Lc@kv3!zW#<4{*pgr5Bj|y68u7|;@NjsU`{Y85#e|b zaY)zw#$+19QB0x@ z7}Xy0KMH}dVkWY`=qJOiT3fYfZ@J%bWNFh^cC)LuCbd4VJF@suTPT30xE0}qnTG^q z5+l639L>ot2yqjvu@e4KiRHM&8%%f-EHEUTJbR{3Gv*T=x`s$GtS06B>T||s175ha zIuxYZ$p(AMt&@gQInvLRmtUQuG*W|ww3EN*rijC`>N0I Ic$stf1w}5E#Q*>R From 4a8674578eecb9470e4cafc1634d1a1d4380cb3c Mon Sep 17 00:00:00 2001 From: rickard Date: Sat, 30 Nov 2024 15:02:30 +0100 Subject: [PATCH 3/4] add a new application template - rolling the monkey --- .../com/jme3/gde/templates/Bundle.properties | 3 +- .../gde/templates/RollingTheMonkeyProject.zip | Bin 0 -> 52614 bytes .../src/com/jme3/gde/templates/layer.xml | 8 + .../rollingthemonkey/Bundle.properties | 6 + .../RollingTheMonkeyDescription.html | 14 + .../RollingTheMonkeyPanelVisual.form | 122 ++++++++ .../RollingTheMonkeyPanelVisual.java | 263 ++++++++++++++++++ .../RollingTheMonkeyWizardIterator.java | 260 +++++++++++++++++ .../RollingTheMonkeyWizardPanel.java | 126 +++++++++ .../rollingthemonkey/build.gradle.ftl | 65 +++++ 10 files changed, 866 insertions(+), 1 deletion(-) create mode 100644 jme3-templates/src/com/jme3/gde/templates/RollingTheMonkeyProject.zip create mode 100644 jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/Bundle.properties create mode 100644 jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyDescription.html create mode 100644 jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyPanelVisual.form create mode 100644 jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyPanelVisual.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyWizardIterator.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyWizardPanel.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/build.gradle.ftl diff --git a/jme3-templates/src/com/jme3/gde/templates/Bundle.properties b/jme3-templates/src/com/jme3/gde/templates/Bundle.properties index 8e086f4d8..3abfcf63a 100644 --- a/jme3-templates/src/com/jme3/gde/templates/Bundle.properties +++ b/jme3-templates/src/com/jme3/gde/templates/Bundle.properties @@ -5,4 +5,5 @@ OpenIDE-Module-Long-Description=\ OpenIDE-Module-Name=Project Templates OpenIDE-Module-Short-Description=Provides Project Templates Templates/Project/JME3/BasicGameProject.zip=Basic Game (with Ant) -Templates/Project/JME3/GradleDesktopGameProject.zip=Basic Game (with Gradle) \ No newline at end of file +Templates/Project/JME3/GradleDesktopGameProject.zip=Basic Game (with Gradle) +Templates/Project/JME3/RollingTheMonkeyProject.zip=Rolling The Monkey \ No newline at end of file diff --git a/jme3-templates/src/com/jme3/gde/templates/RollingTheMonkeyProject.zip b/jme3-templates/src/com/jme3/gde/templates/RollingTheMonkeyProject.zip new file mode 100644 index 0000000000000000000000000000000000000000..00789f9fb08b43ec5825454c661c2034655e57f4 GIT binary patch literal 52614 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 X4)A7W1JzS9KzIXKz{~&|#lQdn%UEu3 literal 0 HcmV?d00001 diff --git a/jme3-templates/src/com/jme3/gde/templates/layer.xml b/jme3-templates/src/com/jme3/gde/templates/layer.xml index 001c24b8b..102baea97 100644 --- a/jme3-templates/src/com/jme3/gde/templates/layer.xml +++ b/jme3-templates/src/com/jme3/gde/templates/layer.xml @@ -22,6 +22,14 @@ + + + + + + + + diff --git a/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/Bundle.properties b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/Bundle.properties new file mode 100644 index 000000000..12750bdcb --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/Bundle.properties @@ -0,0 +1,6 @@ +LBL_CreateProjectStep=Name and Location +RollingTheMonkeyPanelVisual.browseButton.text=Br&owse... +RollingTheMonkeyPanelVisual.createdFolderLabel.text=Project &Folder: +RollingTheMonkeyPanelVisual.projectNameLabel.text=Project &Name: +RollingTheMonkeyPanelVisual.projectLocationLabel.text=Project &Location: +RollingTheMonkeyPanelVisual.browseButton.actionCommand=BROWSE diff --git a/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyDescription.html b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyDescription.html new file mode 100644 index 000000000..2ae5760ea --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyDescription.html @@ -0,0 +1,14 @@ + + + + + + + A simple physics based marble game. Made by SkidRunner (Mark E. Picknell).

+ + Here are some ideas of how you can take it further:
+ 1. Add a timer and display the time it takes to pick up all the cubes
+ 2. Replace the texture of the sphere with one of your choosing.
+ 3. Change the physics of the sphere. + + diff --git a/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyPanelVisual.form b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyPanelVisual.form new file mode 100644 index 000000000..1ec44697d --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyPanelVisual.form @@ -0,0 +1,122 @@ + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyPanelVisual.java b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyPanelVisual.java new file mode 100644 index 000000000..901062824 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyPanelVisual.java @@ -0,0 +1,263 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.jme3.gde.templates.rollingthemonkey; + +import java.io.File; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.Document; +import org.netbeans.spi.project.ui.support.ProjectChooser; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.filesystems.FileUtil; + +public class RollingTheMonkeyPanelVisual extends JPanel implements DocumentListener { + + public static final String PROP_PROJECT_NAME = "projectName"; + private final RollingTheMonkeyWizardPanel panel; + + public RollingTheMonkeyPanelVisual(RollingTheMonkeyWizardPanel panel) { + initComponents(); + this.panel = panel; + // Register listener on the textFields to make the automatic updates + projectNameTextField.getDocument().addDocumentListener(this); + projectLocationTextField.getDocument().addDocumentListener(this); + } + + public String getProjectName() { + return this.projectNameTextField.getText(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + projectNameLabel = new javax.swing.JLabel(); + projectNameTextField = new javax.swing.JTextField(); + projectLocationLabel = new javax.swing.JLabel(); + projectLocationTextField = new javax.swing.JTextField(); + browseButton = new javax.swing.JButton(); + createdFolderLabel = new javax.swing.JLabel(); + createdFolderTextField = new javax.swing.JTextField(); + + projectNameLabel.setLabelFor(projectNameTextField); + org.openide.awt.Mnemonics.setLocalizedText(projectNameLabel, org.openide.util.NbBundle.getMessage(RollingTheMonkeyPanelVisual.class, "RollingTheMonkeyPanelVisual.projectNameLabel.text")); // NOI18N + + projectLocationLabel.setLabelFor(projectLocationTextField); + org.openide.awt.Mnemonics.setLocalizedText(projectLocationLabel, org.openide.util.NbBundle.getMessage(RollingTheMonkeyPanelVisual.class, "RollingTheMonkeyPanelVisual.projectLocationLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(browseButton, org.openide.util.NbBundle.getMessage(RollingTheMonkeyPanelVisual.class, "RollingTheMonkeyPanelVisual.browseButton.text")); // NOI18N + browseButton.setActionCommand(org.openide.util.NbBundle.getMessage(RollingTheMonkeyPanelVisual.class, "RollingTheMonkeyPanelVisual.browseButton.actionCommand")); // NOI18N + browseButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + browseButtonActionPerformed(evt); + } + }); + + createdFolderLabel.setLabelFor(createdFolderTextField); + org.openide.awt.Mnemonics.setLocalizedText(createdFolderLabel, org.openide.util.NbBundle.getMessage(RollingTheMonkeyPanelVisual.class, "RollingTheMonkeyPanelVisual.createdFolderLabel.text")); // NOI18N + + createdFolderTextField.setEditable(false); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(projectNameLabel) + .addComponent(projectLocationLabel) + .addComponent(createdFolderLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(projectNameTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE) + .addComponent(projectLocationTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE) + .addComponent(createdFolderTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(browseButton) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(projectNameLabel) + .addComponent(projectNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(projectLocationLabel) + .addComponent(projectLocationTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(browseButton)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(createdFolderLabel) + .addComponent(createdFolderTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(213, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseButtonActionPerformed + String command = evt.getActionCommand(); + if ("BROWSE".equals(command)) { + JFileChooser chooser = new JFileChooser(); + chooser.setCurrentDirectory(null); + chooser.setDialogTitle("Select Project Location"); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + String path = this.projectLocationTextField.getText(); + if (path.length() > 0) { + File f = new File(path); + if (f.exists()) { + chooser.setSelectedFile(f); + } + } + if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) { + File projectDir = chooser.getSelectedFile(); + projectLocationTextField.setText(FileUtil.normalizeFile(projectDir).getAbsolutePath()); + } + panel.fireChangeEvent(); + } + + }//GEN-LAST:event_browseButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + javax.swing.JButton browseButton; + javax.swing.JLabel createdFolderLabel; + javax.swing.JTextField createdFolderTextField; + javax.swing.JLabel projectLocationLabel; + javax.swing.JTextField projectLocationTextField; + javax.swing.JLabel projectNameLabel; + javax.swing.JTextField projectNameTextField; + // End of variables declaration//GEN-END:variables + + @Override + public void addNotify() { + super.addNotify(); + //same problem as in 31086, initial focus on Cancel button + projectNameTextField.requestFocus(); + } + + boolean valid(WizardDescriptor wizardDescriptor) { + + if (projectNameTextField.getText().length() == 0) { + // TODO if using org.openide.dialogs >= 7.8, can use WizardDescriptor.PROP_ERROR_MESSAGE: + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Name is not a valid folder name."); + return false; // Display name not specified + } + File f = FileUtil.normalizeFile(new File(projectLocationTextField.getText()).getAbsoluteFile()); + if (!f.isDirectory()) { + String message = "Project Folder is not a valid path."; + wizardDescriptor.putProperty("WizardPanel_errorMessage", message); + return false; + } + final File destFolder = FileUtil.normalizeFile(new File(createdFolderTextField.getText()).getAbsoluteFile()); + + File projLoc = destFolder; + while (projLoc != null && !projLoc.exists()) { + projLoc = projLoc.getParentFile(); + } + if (projLoc == null || !projLoc.canWrite()) { + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Folder cannot be created."); + return false; + } + + if (FileUtil.toFileObject(projLoc) == null) { + String message = "Project Folder is not a valid path."; + wizardDescriptor.putProperty("WizardPanel_errorMessage", message); + return false; + } + + File[] kids = destFolder.listFiles(); + if (destFolder.exists() && kids != null && kids.length > 0) { + // Folder exists and is not empty + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Folder already exists and is not empty."); + return false; + } + wizardDescriptor.putProperty("WizardPanel_errorMessage", ""); + return true; + } + + void store(WizardDescriptor d) { + String name = projectNameTextField.getText().trim(); + String folder = createdFolderTextField.getText().trim(); + + d.putProperty("projdir", new File(folder)); + d.putProperty("name", name); + } + + void read(WizardDescriptor settings) { + File projectLocation = (File) settings.getProperty("projdir"); + if (projectLocation == null || projectLocation.getParentFile() == null || !projectLocation.getParentFile().isDirectory()) { + projectLocation = ProjectChooser.getProjectsFolder(); + } else { + projectLocation = projectLocation.getParentFile(); + } + this.projectLocationTextField.setText(projectLocation.getAbsolutePath()); + + String projectName = (String) settings.getProperty("name"); + if (projectName == null) { + projectName = "RollingTheMonkey"; + } + this.projectNameTextField.setText(projectName); + this.projectNameTextField.selectAll(); + } + + void validate(WizardDescriptor d) throws WizardValidationException { + // nothing to validate + } + + // Implementation of DocumentListener -------------------------------------- + @Override + public void changedUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + @Override + public void insertUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + @Override + public void removeUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + /** Handles changes in the Project name and project directory, */ + private void updateTexts(DocumentEvent e) { + + Document doc = e.getDocument(); + + if (doc == projectNameTextField.getDocument() || doc == projectLocationTextField.getDocument()) { + // Change in the project name + + String projectName = projectNameTextField.getText(); + String projectFolder = projectLocationTextField.getText(); + + //if (projectFolder.trim().length() == 0 || projectFolder.equals(oldName)) { + createdFolderTextField.setText(projectFolder + File.separatorChar + projectName); + //} + + } + panel.fireChangeEvent(); // Notify that the panel changed + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyWizardIterator.java b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyWizardIterator.java new file mode 100644 index 000000000..f3afe7777 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyWizardIterator.java @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2009-2010 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.rollingthemonkey; + +import com.jme3.gde.templates.gradledesktop.options.CachedOptionsContainer; +import java.awt.Component; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.text.MessageFormat; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import javax.script.ScriptContext; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import javax.swing.JComponent; +import javax.swing.event.ChangeListener; +import org.netbeans.api.project.ProjectManager; +import org.netbeans.spi.project.ui.support.ProjectChooser; +import org.netbeans.spi.project.ui.templates.support.Templates; +import org.openide.WizardDescriptor; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; +import org.openide.util.NbBundle; + +@SuppressWarnings({"unchecked", "rawtypes"}) +public class RollingTheMonkeyWizardIterator implements WizardDescriptor./*Progress*/InstantiatingIterator { + + private int index; + private WizardDescriptor.Panel[] panels; + private WizardDescriptor wiz; + + private static final String TEMPLATE_SETTINGS = "com/jme3/gde/templates/files/freemarker/settings.gradle.ftl"; + private static final String BUILDFILE = "com/jme3/gde/templates/rollingthemonkey/build.gradle.ftl"; + + public RollingTheMonkeyWizardIterator() { + + // Initiate the options getting... + CachedOptionsContainer.getInstance(); + } + + public static RollingTheMonkeyWizardIterator createIterator() { + return new RollingTheMonkeyWizardIterator(); + } + + private WizardDescriptor.Panel[] createPanels() { + return new WizardDescriptor.Panel[]{ + new RollingTheMonkeyWizardPanel() + }; + } + + private String[] createSteps() { + return new String[]{ + NbBundle.getMessage(RollingTheMonkeyWizardIterator.class, "LBL_CreateProjectStep"), + }; + } + + @Override + public Set/**/ instantiate(/*ProgressHandle handle*/) throws IOException { + Set resultSet = new LinkedHashSet<>(); + File dirF = FileUtil.normalizeFile((File) wiz.getProperty("projdir")); + dirF.mkdirs(); + + FileObject template = Templates.getTemplate(wiz); + FileObject dir = FileUtil.toFileObject(dirF); + unZipFile(template.getInputStream(), dir); + + // Create settings.gradle from template + File gradleSettingsFile = new File(dirF, "settings.gradle"); + createFileFromTemplate(gradleSettingsFile, TEMPLATE_SETTINGS, + Collections.singletonMap("name", wiz.getProperty("name"))); + + // Create build.gradle from template + File gradleBuildFile = new File(dirF, "build.gradle"); + Map buildFileBindings = new HashMap<>(); + + createFileFromTemplate(gradleBuildFile, BUILDFILE, buildFileBindings); + + // Always open top dir as a project: + resultSet.add(dir); + // Look for nested projects to open as well: + Enumeration e = dir.getFolders(true); + while (e.hasMoreElements()) { + FileObject subfolder = e.nextElement(); + if (ProjectManager.getDefault().isProject(subfolder)) { + resultSet.add(subfolder); + } + } + + File parent = dirF.getParentFile(); + if (parent != null && parent.exists()) { + ProjectChooser.setProjectsFolder(parent); + } + + return resultSet; + } + + @Override + public void initialize(WizardDescriptor wiz) { + this.wiz = wiz; + index = 0; + panels = createPanels(); + // Make sure list of steps is accurate. + String[] steps = createSteps(); + for (int i = 0; i < panels.length; i++) { + Component c = panels[i].getComponent(); + if (steps[i] == null) { + // Default step name to component name of panel. + // Mainly useful for getting the name of the target + // chooser to appear in the list of steps. + steps[i] = c.getName(); + } + if (c instanceof JComponent) { // assume Swing components + JComponent jc = (JComponent) c; + // Step #. + // TODO if using org.openide.dialogs >= 7.8, can use WizardDescriptor.PROP_*: + jc.putClientProperty("WizardPanel_contentSelectedIndex", i); + // Step name (actually the whole list for reference). + jc.putClientProperty("WizardPanel_contentData", steps); + } + } + } + + @Override + public void uninitialize(WizardDescriptor wiz) { + this.wiz.putProperty("projdir", null); + this.wiz.putProperty("name", null); + this.wiz = null; + panels = null; + } + + @Override + public String name() { + return MessageFormat.format("{0} of {1}", + new Object[]{index + 1, panels.length}); + } + + @Override + public boolean hasNext() { + return index < panels.length - 1; + } + + @Override + public boolean hasPrevious() { + return index > 0; + } + + @Override + public void nextPanel() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + index++; + } + + @Override + public void previousPanel() { + if (!hasPrevious()) { + throw new NoSuchElementException(); + } + index--; + } + + @Override + public WizardDescriptor.Panel current() { + return panels[index]; + } + + // If nothing unusual changes in the middle of the wizard, simply: + @Override + public final void addChangeListener(ChangeListener l) { + } + + @Override + public final void removeChangeListener(ChangeListener l) { + } + + private void createFileFromTemplate(File target, String templateResourcePath, Map tokens) throws IOException { + + // Create FreeMarker script engine + ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); + ScriptEngine engine = scriptEngineManager.getEngineByName("freemarker"); + Map bindings = engine.getContext().getBindings(ScriptContext.ENGINE_SCOPE); + bindings.putAll(tokens); + + // Process template + try { + FileObject targetFO = FileUtil.toFileObject(target); + try (Writer os = new BufferedWriter(new OutputStreamWriter(targetFO.getOutputStream(), StandardCharsets.UTF_8)); Reader is = new BufferedReader(new InputStreamReader(RollingTheMonkeyWizardIterator.class.getResourceAsStream("/" + templateResourcePath)));) { + engine.getContext().setWriter(os); + engine.eval(is); + } + } catch (IOException | ScriptException ex) { + throw new IOException(ex.getMessage(), ex); + } + } + + private static void unZipFile(InputStream source, FileObject projectRoot) throws IOException { + try (source) { + ZipInputStream str = new ZipInputStream(source); + ZipEntry entry; + while ((entry = str.getNextEntry()) != null) { + if (entry.isDirectory()) { + FileUtil.createFolder(projectRoot, entry.getName()); + } else { + FileObject fo = FileUtil.createData(projectRoot, entry.getName()); + try (OutputStream out = fo.getOutputStream()) { + FileUtil.copy(str, out); + } + } + } + } + } + +} diff --git a/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyWizardPanel.java b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyWizardPanel.java new file mode 100644 index 000000000..207ee0de2 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/RollingTheMonkeyWizardPanel.java @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.rollingthemonkey; + +import java.awt.Component; +import java.util.HashSet; +import java.util.Set; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * Panel just asking for basic info. + */ +@SuppressWarnings({"unchecked", "rawtypes"}) +public class RollingTheMonkeyWizardPanel implements WizardDescriptor.Panel, + WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel { + + private WizardDescriptor wizardDescriptor; + private RollingTheMonkeyPanelVisual component; + + public RollingTheMonkeyWizardPanel() { + } + + @Override + public Component getComponent() { + if (component == null) { + component = new RollingTheMonkeyPanelVisual(this); + component.setName(NbBundle.getMessage(RollingTheMonkeyWizardPanel.class, "LBL_CreateProjectStep")); + } + return component; + } + + @Override + public HelpCtx getHelp() { + return new HelpCtx("sdk.project_creation"); + } + + @Override + public boolean isValid() { + getComponent(); + return component.valid(wizardDescriptor); + } + + private final Set listeners = new HashSet<>(1); // or can use ChangeSupport in NB 6.0 + + @Override + public final void addChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.add(l); + } + } + + @Override + public final void removeChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.remove(l); + } + } + + protected final void fireChangeEvent() { + Set ls; + synchronized (listeners) { + ls = new HashSet<>(listeners); + } + ChangeEvent ev = new ChangeEvent(this); + for (ChangeListener l : ls) { + l.stateChanged(ev); + } + } + + @Override + public void readSettings(Object settings) { + wizardDescriptor = (WizardDescriptor) settings; + component.read(wizardDescriptor); + } + + @Override + public void storeSettings(Object settings) { + WizardDescriptor d = (WizardDescriptor) settings; + component.store(d); + } + + @Override + public boolean isFinishPanel() { + return false; + } + + @Override + public void validate() throws WizardValidationException { + getComponent(); + component.validate(wizardDescriptor); + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/build.gradle.ftl b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/build.gradle.ftl new file mode 100644 index 000000000..94e41ae1c --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/rollingthemonkey/build.gradle.ftl @@ -0,0 +1,65 @@ +plugins { + id 'java' + id 'application' +} + +group 'com.rollingthemonkey' +version '1.0' + +mainClassName = "com.rollingthemonkey.RollingTheMonkey" + +repositories { + mavenCentral() +} + +project.ext { + jmeVer = '3.7.0-stable' +} + +project(":assets") { + apply plugin: "java" + + buildDir = rootProject.file("build/assets") + + sourceSets { + main { + resources { + srcDir '.' + } + } + } + + java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + } +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +dependencies { + + implementation "org.jmonkeyengine:jme3-core:$jmeVer" + implementation "org.jmonkeyengine:jme3-desktop:$jmeVer" + implementation "org.jmonkeyengine:jme3-lwjgl:$jmeVer" + implementation "org.jmonkeyengine:jme3-lwjgl:$jmeVer" + implementation "com.github.stephengold:Heart:9.0.0" + implementation "com.github.stephengold:Minie:8.0.0" + implementation project("assets") + +} + +jar { + manifest { + attributes 'Main-Class': "$mainClassName" + } +} + +wrapper { + gradleVersion = '8.6' +} From 9f1cdedaaf0aa4a966c717e6bfd5055b07e1ff3a Mon Sep 17 00:00:00 2001 From: rickard Date: Tue, 17 Dec 2024 19:43:12 +0100 Subject: [PATCH 4/4] add templates for MonkeyZone and JaimesAscent --- .../com/jme3/gde/templates/Bundle.properties | 4 +- .../templates/jaimesascent/Bundle.properties | 16 + .../jaimesascent/JaimesAscentDescription.html | 13 + .../JaimesAscentDownloadPanel.java | 189 ++++++++++++ .../JaimesAscentDownloadPanelVisual.form | 120 ++++++++ .../JaimesAscentDownloadPanelVisual.java | 194 ++++++++++++ .../jaimesascent/JaimesAscentPanelVisual.form | 122 ++++++++ .../jaimesascent/JaimesAscentPanelVisual.java | 291 ++++++++++++++++++ .../JaimesAscentWizardIterator.java | 221 +++++++++++++ .../jaimesascent/JaimesAscentWizardPanel.java | 126 ++++++++ .../templates/jaimesascent/build.gradle.ftl | 65 ++++ .../templates/jaimesascent/jaimesascent.png | Bin 0 -> 126173 bytes .../src/com/jme3/gde/templates/layer.xml | 27 +- .../templates/monkeyzone/Bundle.properties | 16 + .../monkeyzone/MonkeyZoneDescription.html | 13 + .../monkeyzone/MonkeyZoneDownloadPanel.java | 189 ++++++++++++ .../MonkeyZoneDownloadPanelVisual.form | 120 ++++++++ .../MonkeyZoneDownloadPanelVisual.java | 194 ++++++++++++ .../monkeyzone/MonkeyZonePanelVisual.form | 122 ++++++++ .../monkeyzone/MonkeyZonePanelVisual.java | 291 ++++++++++++++++++ .../monkeyzone/MonkeyZoneWizardIterator.java | 254 +++++++++++++++ .../monkeyzone/MonkeyZoneWizardPanel.java | 126 ++++++++ .../gde/templates/monkeyzone/build.gradle.ftl | 65 ++++ .../gde/templates/monkeyzone/monkeyzone.png | Bin 0 -> 160279 bytes 24 files changed, 2776 insertions(+), 2 deletions(-) create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/Bundle.properties create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDescription.html create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanel.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanelVisual.form create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanelVisual.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentPanelVisual.form create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentPanelVisual.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentWizardIterator.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentWizardPanel.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/build.gradle.ftl create mode 100644 jme3-templates/src/com/jme3/gde/templates/jaimesascent/jaimesascent.png create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/Bundle.properties create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDescription.html create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanel.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanelVisual.form create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanelVisual.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZonePanelVisual.form create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZonePanelVisual.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneWizardIterator.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneWizardPanel.java create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/build.gradle.ftl create mode 100644 jme3-templates/src/com/jme3/gde/templates/monkeyzone/monkeyzone.png diff --git a/jme3-templates/src/com/jme3/gde/templates/Bundle.properties b/jme3-templates/src/com/jme3/gde/templates/Bundle.properties index 3abfcf63a..4edb02370 100644 --- a/jme3-templates/src/com/jme3/gde/templates/Bundle.properties +++ b/jme3-templates/src/com/jme3/gde/templates/Bundle.properties @@ -6,4 +6,6 @@ OpenIDE-Module-Name=Project Templates OpenIDE-Module-Short-Description=Provides Project Templates Templates/Project/JME3/BasicGameProject.zip=Basic Game (with Ant) Templates/Project/JME3/GradleDesktopGameProject.zip=Basic Game (with Gradle) -Templates/Project/JME3/RollingTheMonkeyProject.zip=Rolling The Monkey \ No newline at end of file +Templates/Project/JME3/Examples/RollingTheMonkeyProject.zip=Rolling The Monkey +Templates/Project/JME3/Examples/MonkeyZone=Monkey Zone +Templates/Project/JME3/Examples/JaimesAscent=Jaimes Ascent \ No newline at end of file diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/Bundle.properties b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/Bundle.properties new file mode 100644 index 000000000..53cf704a2 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/Bundle.properties @@ -0,0 +1,16 @@ +LBL_DownloadProjectStep=Download project +LBL_CreateProjectStep=Name and Location +JaimesAscentPanelVisual.browseButton.text=Br&owse... +JaimesAscentPanelVisual.createdFolderLabel.text=Project &Folder: +JaimesAscentPanelVisual.projectLocationLabel.text=Project &Location: +JaimesAscentDownloadPanelVisual.downloadButton.text=Download project +JaimesAscentDownloadPanelVisual.downloadButton.actionCommand=DOWNLOAD +JaimesAscentPanelVisual.projectNameLabel.text=Project &Name: +JaimesAscentPanelVisual.browseButton.text=Browse +JaimesAscentPanelVisual.browseButton.actionCommand=BROWSE +JaimesAscentDownloadPanelVisual.jTextArea1.text=Pressing the button below will download the project from Github, to a temporary location from which it will be installed in the next step\n +JaimesAscentDownloadPanelVisual.statusField.text= +JaimesAscentDownloadPanelVisual.downloading=Downloading... Please wait +JaimesAscentDownloadPanelVisual.downloadSuccess=Download complete. Press 'next' to proceed. +JaimesAscentDownloadPanelVisual.downloadFailed=Download failed. +JaimesAscentDownloadPanelVisual.jLabel1.text= diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDescription.html b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDescription.html new file mode 100644 index 000000000..bd44c9555 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDescription.html @@ -0,0 +1,13 @@ + + + + Jaimes Ascent + + + A sample application demonstrating a chase cam with mouse look,
+ physics, moving objects and animations. + + Easily extendable classes and architecture using AppStates and Controls.
+ Suitable for beginners.
+ + diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanel.java b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanel.java new file mode 100644 index 000000000..b2d9c6270 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanel.java @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.jaimesascent; + +import java.awt.Component; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashSet; +import java.util.Set; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * Panel just asking for basic info. + */ +@SuppressWarnings({"unchecked", "rawtypes"}) +public class JaimesAscentDownloadPanel implements WizardDescriptor.Panel, + WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel { + + private WizardDescriptor wizardDescriptor; + private JaimesAscentDownloadPanelVisual component; + + static String ZIP_NAME = "JaimesAscent.zip"; + static String DOWNLOAD_FOLDER = System.getProperty("java.io.tmpdir"); + + public JaimesAscentDownloadPanel() { + } + + public int doDownloadZip() { + return downloadFile("https://github.com/neph1/JaimesAscent/archive/refs/tags/v1.1.1.zip", DOWNLOAD_FOLDER, ZIP_NAME); + } + + private int downloadFile(String fileURL, String saveDir, String fileName) { + HttpURLConnection httpConn = null; + BufferedInputStream inputStream = null; + FileOutputStream fileOutputStream = null; + + final File outputFile = new File(saveDir, fileName); + + if (outputFile.exists()) { + return 1; + } + + try { + // Create URL object + URL url = new URL(fileURL); + httpConn = (HttpURLConnection) url.openConnection(); + + // Check HTTP response code + int responseCode = httpConn.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + // Open input stream from the HTTP connection + inputStream = new BufferedInputStream(httpConn.getInputStream()); + + + + // Create output stream to save the file + fileOutputStream = new FileOutputStream(outputFile); + + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + fileOutputStream.write(buffer, 0, bytesRead); + } + + return 1; + } + } catch (IOException e) { + return 0; + } finally { + // Close resources + try { + if (inputStream != null) inputStream.close(); + if (fileOutputStream != null) fileOutputStream.close(); + if (httpConn != null) httpConn.disconnect(); + } catch (IOException ex) { + return 0; + } + } + return 0; + } + + @Override + public Component getComponent() { + if (component == null) { + component = new JaimesAscentDownloadPanelVisual(this); + component.setName(NbBundle.getMessage(JaimesAscentDownloadPanel.class, "LBL_DownloadProjectStep")); + } + return component; + } + + @Override + public HelpCtx getHelp() { + return new HelpCtx("sdk.download_project"); + } + + @Override + public boolean isValid() { + getComponent(); + return component.valid(wizardDescriptor); + } + + private final Set listeners = new HashSet<>(1); // or can use ChangeSupport in NB 6.0 + + @Override + public final void addChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.add(l); + } + } + + @Override + public final void removeChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.remove(l); + } + } + + protected final void fireChangeEvent() { + Set ls; + synchronized (listeners) { + ls = new HashSet<>(listeners); + } + ChangeEvent ev = new ChangeEvent(this); + for (ChangeListener l : ls) { + l.stateChanged(ev); + } + } + + @Override + public void readSettings(Object settings) { + wizardDescriptor = (WizardDescriptor) settings; + component.read(wizardDescriptor); + } + + @Override + public void storeSettings(Object settings) { + WizardDescriptor d = (WizardDescriptor) settings; + component.store(d); + } + + @Override + public boolean isFinishPanel() { + return false; + } + + @Override + public void validate() throws WizardValidationException { + getComponent(); + component.validate(wizardDescriptor); + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanelVisual.form b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanelVisual.form new file mode 100644 index 000000000..9caac7e1a --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanelVisual.form @@ -0,0 +1,120 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanelVisual.java b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanelVisual.java new file mode 100644 index 000000000..04f83bef8 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentDownloadPanelVisual.java @@ -0,0 +1,194 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.jaimesascent; + +import javax.swing.JPanel; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; + +public class JaimesAscentDownloadPanelVisual extends JPanel implements DocumentListener { + + public static final String PROP_PROJECT_NAME = "projectName"; + private final JaimesAscentDownloadPanel panel; + + public JaimesAscentDownloadPanelVisual(JaimesAscentDownloadPanel panel) { + initComponents(); + this.panel = panel; + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + downloadButton = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); + jTextArea1 = new javax.swing.JTextArea(); + statusField = new javax.swing.JTextField(); + jLabel1 = new javax.swing.JLabel(); + + org.openide.awt.Mnemonics.setLocalizedText(downloadButton, org.openide.util.NbBundle.getMessage(JaimesAscentDownloadPanelVisual.class, "JaimesAscentDownloadPanelVisual.downloadButton.text")); // NOI18N + downloadButton.setActionCommand(org.openide.util.NbBundle.getMessage(JaimesAscentDownloadPanelVisual.class, "JaimesAscentDownloadPanelVisual.downloadButton.actionCommand")); // NOI18N + downloadButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + downloadButtonActionPerformed(evt); + } + }); + + jTextArea1.setEditable(false); + jTextArea1.setColumns(20); + jTextArea1.setLineWrap(true); + jTextArea1.setRows(5); + jTextArea1.setText(org.openide.util.NbBundle.getMessage(JaimesAscentDownloadPanelVisual.class, "JaimesAscentDownloadPanelVisual.jTextArea1.text")); // NOI18N + jTextArea1.setWrapStyleWord(true); + jTextArea1.setEnabled(false); + jScrollPane1.setViewportView(jTextArea1); + + statusField.setEditable(false); + statusField.setText(org.openide.util.NbBundle.getMessage(JaimesAscentDownloadPanelVisual.class, "JaimesAscentDownloadPanelVisual.statusField.text")); // NOI18N + statusField.setEnabled(false); + statusField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + statusFieldActionPerformed(evt); + } + }); + + jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/templates/jaimesascent/jaimesascent.png"))); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(JaimesAscentDownloadPanelVisual.class, "JaimesAscentDownloadPanelVisual.jLabel1.text")); // NOI18N + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 307, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(statusField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 313, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(layout.createSequentialGroup() + .addGap(99, 99, 99) + .addComponent(downloadButton))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(71, 71, 71) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(21, 21, 21) + .addComponent(downloadButton) + .addGap(18, 18, 18) + .addComponent(statusField, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void downloadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downloadButtonActionPerformed + statusField.setText(org.openide.util.NbBundle.getMessage(JaimesAscentDownloadPanelVisual.class, "JaimesAscentDownloadPanelVisual.downloading")); + final int result = this.panel.doDownloadZip(); + if (result == 1) { + statusField.setText(org.openide.util.NbBundle.getMessage(JaimesAscentDownloadPanelVisual.class, "JaimesAscentDownloadPanelVisual.downloadSuccess")); + } else { + statusField.setText(org.openide.util.NbBundle.getMessage(JaimesAscentDownloadPanelVisual.class, "JaimesAscentDownloadPanelVisual.downloadFailed")); + } + }//GEN-LAST:event_downloadButtonActionPerformed + + private void statusFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_statusFieldActionPerformed + + }//GEN-LAST:event_statusFieldActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + javax.swing.JButton downloadButton; + javax.swing.JLabel jLabel1; + javax.swing.JScrollPane jScrollPane1; + javax.swing.JTextArea jTextArea1; + javax.swing.JTextField statusField; + // End of variables declaration//GEN-END:variables + + @Override + public void addNotify() { + super.addNotify(); + } + + boolean valid(WizardDescriptor wizardDescriptor) { + + return true; + } + + void store(WizardDescriptor d) { + + } + + void read(WizardDescriptor settings) { + + } + + void validate(WizardDescriptor d) throws WizardValidationException { + // nothing to validate + } + + // Implementation of DocumentListener -------------------------------------- + @Override + public void changedUpdate(DocumentEvent e) { + + } + + @Override + public void insertUpdate(DocumentEvent e) { + updateTexts(e); + } + + @Override + public void removeUpdate(DocumentEvent e) { + updateTexts(e); + } + + /** Handles changes in the Project name and project directory, */ + private void updateTexts(DocumentEvent e) { + + panel.fireChangeEvent(); // Notify that the panel changed + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentPanelVisual.form b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentPanelVisual.form new file mode 100644 index 000000000..6451a2c59 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentPanelVisual.form @@ -0,0 +1,122 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentPanelVisual.java b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentPanelVisual.java new file mode 100644 index 000000000..79eb619c3 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentPanelVisual.java @@ -0,0 +1,291 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.jaimesascent; + +import java.io.File; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.Document; +import org.netbeans.spi.project.ui.support.ProjectChooser; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.filesystems.FileUtil; + +public class JaimesAscentPanelVisual extends JPanel implements DocumentListener { + + public static final String PROP_PROJECT_NAME = "projectName"; + static final String PROJECT_NAME = "JaimesAscent"; + private final JaimesAscentWizardPanel panel; + + public JaimesAscentPanelVisual(JaimesAscentWizardPanel panel) { + initComponents(); + this.panel = panel; + // Register listener on the textFields to make the automatic updates + projectNameTextField.getDocument().addDocumentListener(this); + projectLocationTextField.getDocument().addDocumentListener(this); + } + + public String getProjectName() { + return this.projectNameTextField.getText(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + projectNameLabel = new javax.swing.JLabel(); + projectNameTextField = new javax.swing.JTextField(); + projectLocationLabel = new javax.swing.JLabel(); + projectLocationTextField = new javax.swing.JTextField(); + browseButton = new javax.swing.JButton(); + createdFolderLabel = new javax.swing.JLabel(); + createdFolderTextField = new javax.swing.JTextField(); + + projectNameLabel.setLabelFor(projectNameTextField); + org.openide.awt.Mnemonics.setLocalizedText(projectNameLabel, org.openide.util.NbBundle.getMessage(JaimesAscentPanelVisual.class, "JaimesAscentPanelVisual.projectNameLabel.text")); // NOI18N + + projectLocationLabel.setLabelFor(projectLocationTextField); + org.openide.awt.Mnemonics.setLocalizedText(projectLocationLabel, org.openide.util.NbBundle.getMessage(JaimesAscentPanelVisual.class, "JaimesAscentPanelVisual.projectLocationLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(browseButton, org.openide.util.NbBundle.getMessage(JaimesAscentPanelVisual.class, "JaimesAscentPanelVisual.browseButton.text")); // NOI18N + browseButton.setActionCommand(org.openide.util.NbBundle.getMessage(JaimesAscentPanelVisual.class, "JaimesAscentPanelVisual.browseButton.actionCommand")); // NOI18N + browseButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + browseButtonActionPerformed(evt); + } + }); + + createdFolderLabel.setLabelFor(createdFolderTextField); + org.openide.awt.Mnemonics.setLocalizedText(createdFolderLabel, org.openide.util.NbBundle.getMessage(JaimesAscentPanelVisual.class, "JaimesAscentPanelVisual.createdFolderLabel.text")); // NOI18N + + createdFolderTextField.setEditable(false); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(projectNameLabel) + .addComponent(projectLocationLabel) + .addComponent(createdFolderLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(projectNameTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE) + .addComponent(projectLocationTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE) + .addComponent(createdFolderTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(browseButton) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(projectNameLabel) + .addComponent(projectNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(projectLocationLabel) + .addComponent(projectLocationTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(browseButton)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(createdFolderLabel) + .addComponent(createdFolderTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(213, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseButtonActionPerformed + String command = evt.getActionCommand(); + if ("BROWSE".equals(command)) { + JFileChooser chooser = new JFileChooser(); + chooser.setCurrentDirectory(null); + chooser.setDialogTitle("Select Project Location"); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + String path = this.projectLocationTextField.getText(); + if (path.length() > 0) { + File f = new File(path); + if (f.exists()) { + chooser.setSelectedFile(f); + } + } + if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) { + File projectDir = chooser.getSelectedFile(); + projectLocationTextField.setText(FileUtil.normalizeFile(projectDir).getAbsolutePath()); + } + panel.fireChangeEvent(); + } + + }//GEN-LAST:event_browseButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + javax.swing.JButton browseButton; + javax.swing.JLabel createdFolderLabel; + javax.swing.JTextField createdFolderTextField; + javax.swing.JLabel projectLocationLabel; + javax.swing.JTextField projectLocationTextField; + javax.swing.JLabel projectNameLabel; + javax.swing.JTextField projectNameTextField; + // End of variables declaration//GEN-END:variables + + @Override + public void addNotify() { + super.addNotify(); + //same problem as in 31086, initial focus on Cancel button + projectNameTextField.requestFocus(); + } + + boolean valid(WizardDescriptor wizardDescriptor) { + + if (projectNameTextField.getText().length() == 0) { + // TODO if using org.openide.dialogs >= 7.8, can use WizardDescriptor.PROP_ERROR_MESSAGE: + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Name is not a valid folder name."); + return false; // Display name not specified + } + File f = FileUtil.normalizeFile(new File(projectLocationTextField.getText()).getAbsoluteFile()); + if (!f.isDirectory()) { + String message = "Project Folder is not a valid path."; + wizardDescriptor.putProperty("WizardPanel_errorMessage", message); + return false; + } + final File destFolder = FileUtil.normalizeFile(new File(createdFolderTextField.getText()).getAbsoluteFile()); + + File projLoc = destFolder; + while (projLoc != null && !projLoc.exists()) { + projLoc = projLoc.getParentFile(); + } + if (projLoc == null || !projLoc.canWrite()) { + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Folder cannot be created."); + return false; + } + + if (FileUtil.toFileObject(projLoc) == null) { + String message = "Project Folder is not a valid path."; + wizardDescriptor.putProperty("WizardPanel_errorMessage", message); + return false; + } + + File[] kids = destFolder.listFiles(); + if (destFolder.exists() && kids != null && kids.length > 0) { + // Folder exists and is not empty + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Folder already exists and is not empty."); + return false; + } + wizardDescriptor.putProperty("WizardPanel_errorMessage", ""); + return true; + } + + void store(WizardDescriptor d) { + String name = projectNameTextField.getText().trim(); + String folder = createdFolderTextField.getText().trim(); + + d.putProperty("projdir", new File(folder)); + d.putProperty("name", name); + } + + void read(WizardDescriptor settings) { + File projectLocation = (File) settings.getProperty("projdir"); + if (projectLocation == null || projectLocation.getParentFile() == null || !projectLocation.getParentFile().isDirectory()) { + projectLocation = ProjectChooser.getProjectsFolder(); + } else { + projectLocation = projectLocation.getParentFile(); + } + this.projectLocationTextField.setText(projectLocation.getAbsolutePath()); + + String projectName = (String) settings.getProperty("name"); + if (projectName == null) { + projectName = PROJECT_NAME; + } + this.projectNameTextField.setText(projectName); + this.projectNameTextField.selectAll(); + } + + void validate(WizardDescriptor d) throws WizardValidationException { + // nothing to validate + } + + // Implementation of DocumentListener -------------------------------------- + @Override + public void changedUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + @Override + public void insertUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + @Override + public void removeUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + /** Handles changes in the Project name and project directory, */ + private void updateTexts(DocumentEvent e) { + + Document doc = e.getDocument(); + + if (doc == projectNameTextField.getDocument() || doc == projectLocationTextField.getDocument()) { + // Change in the project name + + String projectName = projectNameTextField.getText(); + String projectFolder = projectLocationTextField.getText(); + + //if (projectFolder.trim().length() == 0 || projectFolder.equals(oldName)) { + createdFolderTextField.setText(projectFolder + File.separatorChar + projectName); + //} + + } + panel.fireChangeEvent(); // Notify that the panel changed + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentWizardIterator.java b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentWizardIterator.java new file mode 100644 index 000000000..9dce2a723 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentWizardIterator.java @@ -0,0 +1,221 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.jaimesascent; + +import com.jme3.gde.templates.gradledesktop.options.CachedOptionsContainer; +import java.awt.Component; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.text.MessageFormat; +import java.util.Enumeration; +import java.util.LinkedHashSet; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import javax.swing.JComponent; +import javax.swing.event.ChangeListener; +import org.netbeans.api.project.ProjectManager; +import org.netbeans.spi.project.ui.support.ProjectChooser; +import org.openide.WizardDescriptor; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; +import org.openide.util.NbBundle; + +@SuppressWarnings({"unchecked", "rawtypes"}) +public class JaimesAscentWizardIterator implements WizardDescriptor.InstantiatingIterator { + + private int index; + private WizardDescriptor.Panel[] panels; + private WizardDescriptor wiz; + + final static String master = "JaimesAscent-1.1.1/"; + + public JaimesAscentWizardIterator() { + + // Initiate the options getting... + CachedOptionsContainer.getInstance(); + } + + public static JaimesAscentWizardIterator createIterator() { + return new JaimesAscentWizardIterator(); + } + + private WizardDescriptor.Panel[] createPanels() { + return new WizardDescriptor.Panel[]{ + new JaimesAscentDownloadPanel(), + new JaimesAscentWizardPanel() + }; + } + + private String[] createSteps() { + return new String[]{ + NbBundle.getMessage(JaimesAscentWizardIterator.class, "LBL_DownloadProjectStep"), + NbBundle.getMessage(JaimesAscentWizardIterator.class, "LBL_CreateProjectStep"), + }; + } + + @Override + public Set/**/ instantiate(/*ProgressHandle handle*/) throws IOException { + Set resultSet = new LinkedHashSet<>(); + File dirF = FileUtil.normalizeFile((File) wiz.getProperty("projdir")); + dirF.mkdirs(); + + FileObject template = FileUtil.toFileObject(new File( + JaimesAscentDownloadPanel.DOWNLOAD_FOLDER, + JaimesAscentDownloadPanel.ZIP_NAME)); + + FileObject dir = FileUtil.toFileObject(dirF); + unZipFile(template.getInputStream(), dir); + + // Always open top dir as a project: + resultSet.add(dir); + // Look for nested projects to open as well: + Enumeration e = dir.getFolders(true); + while (e.hasMoreElements()) { + FileObject subfolder = e.nextElement(); + if (ProjectManager.getDefault().isProject(subfolder)) { + resultSet.add(subfolder); + } + } + + File parent = dirF.getParentFile(); + if (parent != null && parent.exists()) { + ProjectChooser.setProjectsFolder(parent); + } + + return resultSet; + } + + @Override + public void initialize(WizardDescriptor wiz) { + this.wiz = wiz; + index = 0; + panels = createPanels(); + // Make sure list of steps is accurate. + String[] steps = createSteps(); + for (int i = 0; i < panels.length; i++) { + Component c = panels[i].getComponent(); + if (steps[i] == null) { + // Default step name to component name of panel. + // Mainly useful for getting the name of the target + // chooser to appear in the list of steps. + steps[i] = c.getName(); + } + if (c instanceof JComponent jc) { // Step #. + // TODO if using org.openide.dialogs >= 7.8, can use WizardDescriptor.PROP_*: + jc.putClientProperty("WizardPanel_contentSelectedIndex", i); + // Step name (actually the whole list for reference). + jc.putClientProperty("WizardPanel_contentData", steps); + } + } + } + + @Override + public void uninitialize(WizardDescriptor wiz) { + this.wiz.putProperty("projdir", null); + this.wiz.putProperty("name", null); + this.wiz = null; + panels = null; + } + + @Override + public String name() { + return MessageFormat.format("{0} of {1}", + new Object[]{index + 1, panels.length}); + } + + @Override + public boolean hasNext() { + return index < panels.length - 1; + } + + @Override + public boolean hasPrevious() { + return index > 0; + } + + @Override + public void nextPanel() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + index++; + } + + @Override + public void previousPanel() { + if (!hasPrevious()) { + throw new NoSuchElementException(); + } + index--; + } + + @Override + public WizardDescriptor.Panel current() { + return panels[index]; + } + + // If nothing unusual changes in the middle of the wizard, simply: + @Override + public final void addChangeListener(ChangeListener l) { + } + + @Override + public final void removeChangeListener(ChangeListener l) { + } + + private static void unZipFile(InputStream source, FileObject projectRoot) throws IOException { + try (source) { + ZipInputStream str = new ZipInputStream(source); + ZipEntry entry; + + while ((entry = str.getNextEntry()) != null) { + if (entry.getName().endsWith(master)) { + continue; + } + final String entryName = entry.getName().replace(master, ""); + if (entry.isDirectory()) { + FileUtil.createFolder(projectRoot, entryName); + } else { + FileObject fo = FileUtil.createData(projectRoot, entryName); + try (OutputStream out = fo.getOutputStream()) { + FileUtil.copy(str, out); + } + } + } + } + } + +} diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentWizardPanel.java b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentWizardPanel.java new file mode 100644 index 000000000..25db6a3f1 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/JaimesAscentWizardPanel.java @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.jaimesascent; + +import java.awt.Component; +import java.util.HashSet; +import java.util.Set; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * Panel just asking for basic info. + */ +@SuppressWarnings({"unchecked", "rawtypes"}) +public class JaimesAscentWizardPanel implements WizardDescriptor.Panel, + WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel { + + private WizardDescriptor wizardDescriptor; + private JaimesAscentPanelVisual component; + + public JaimesAscentWizardPanel() { + } + + @Override + public Component getComponent() { + if (component == null) { + component = new JaimesAscentPanelVisual(this); + component.setName(NbBundle.getMessage(JaimesAscentWizardPanel.class, "LBL_CreateProjectStep")); + } + return component; + } + + @Override + public HelpCtx getHelp() { + return new HelpCtx("sdk.project_creation"); + } + + @Override + public boolean isValid() { + getComponent(); + return component.valid(wizardDescriptor); + } + + private final Set listeners = new HashSet<>(1); // or can use ChangeSupport in NB 6.0 + + @Override + public final void addChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.add(l); + } + } + + @Override + public final void removeChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.remove(l); + } + } + + protected final void fireChangeEvent() { + Set ls; + synchronized (listeners) { + ls = new HashSet<>(listeners); + } + ChangeEvent ev = new ChangeEvent(this); + for (ChangeListener l : ls) { + l.stateChanged(ev); + } + } + + @Override + public void readSettings(Object settings) { + wizardDescriptor = (WizardDescriptor) settings; + component.read(wizardDescriptor); + } + + @Override + public void storeSettings(Object settings) { + WizardDescriptor d = (WizardDescriptor) settings; + component.store(d); + } + + @Override + public boolean isFinishPanel() { + return false; + } + + @Override + public void validate() throws WizardValidationException { + getComponent(); + component.validate(wizardDescriptor); + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/build.gradle.ftl b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/build.gradle.ftl new file mode 100644 index 000000000..f40ada913 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/build.gradle.ftl @@ -0,0 +1,65 @@ +plugins { + id 'java' + id 'application' +} + +group 'com.JaimesAscent' +version '1.0' + +mainClassName = "com.JaimesAscent.JaimesAscent" + +repositories { + mavenCentral() +} + +project.ext { + jmeVer = '3.7.0-stable' +} + +project(":assets") { + apply plugin: "java" + + buildDir = rootProject.file("build/assets") + + sourceSets { + main { + resources { + srcDir '.' + } + } + } + + java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + } +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +dependencies { + + implementation "org.jmonkeyengine:jme3-core:$jmeVer" + implementation "org.jmonkeyengine:jme3-desktop:$jmeVer" + implementation "org.jmonkeyengine:jme3-lwjgl:$jmeVer" + implementation "org.jmonkeyengine:jme3-lwjgl:$jmeVer" + implementation "com.github.stephengold:Heart:9.0.0" + implementation "com.github.stephengold:Minie:8.0.0" + implementation project("assets") + +} + +jar { + manifest { + attributes 'Main-Class': "$mainClassName" + } +} + +wrapper { + gradleVersion = '8.6' +} diff --git a/jme3-templates/src/com/jme3/gde/templates/jaimesascent/jaimesascent.png b/jme3-templates/src/com/jme3/gde/templates/jaimesascent/jaimesascent.png new file mode 100644 index 0000000000000000000000000000000000000000..aa686c8f89e21a18c28c1cb5e7c79769abf9d9a0 GIT binary patch literal 126173 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
}7P^M*#g?1o|3 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
  • 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 + + + + + + + + + + + + + + + + + + + + + + + - + + + diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/Bundle.properties b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/Bundle.properties new file mode 100644 index 000000000..8351f6952 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/Bundle.properties @@ -0,0 +1,16 @@ +LBL_DownloadProjectStep=Download project +LBL_CreateProjectStep=Name and Location +MonkeyZonePanelVisual.browseButton.text=Br&owse... +MonkeyZoneDownloadPanelVisual.downloading=Downloading... Please wait +MonkeyZoneDownloadPanelVisual.downloadSuccess=Download complete. Press 'next' to proceed. +MonkeyZoneDownloadPanelVisual.downloadFailed=Download failed. +MonkeyZoneDownloadPanelVisual.downloadButton.actionCommand=DOWNLOAD +MonkeyZoneDownloadPanelVisual.downloadButton.text=Download project +MonkeyZoneDownloadPanelVisual.jLabel1.text= +MonkeyZoneDownloadPanelVisual.statusField.text= +MonkeyZoneDownloadPanelVisual.jTextArea1.text=Pressing the button below will download the project from Github, to a temporary location from which it will be installed in the next step\n +MonkeyZonePanelVisual.projectLocationLabel.text=Project &Location: +MonkeyZonePanelVisual.projectNameLabel.text=Project &Name: +MonkeyZonePanelVisual.createdFolderLabel.text=Project &Folder: +MonkeyZonePanelVisual.browseButton.actionCommand=BROWSE +MonkeyZonePanelVisual.browseButton.text=Browse diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDescription.html b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDescription.html new file mode 100644 index 000000000..cb9ab6f06 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDescription.html @@ -0,0 +1,13 @@ + + + + Monkey Zone + + + A networked multiplayer game by the jMonkeyEngine team.

    + + Inspired by the classic game BattleZone, this is a networked multiplayer
    + game with both on foot action and enterable vehicles.
    + This is not a beginner project. + + diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanel.java b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanel.java new file mode 100644 index 000000000..64f4802be --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanel.java @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.monkeyzone; + +import java.awt.Component; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashSet; +import java.util.Set; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * Panel just asking for basic info. + */ +@SuppressWarnings({"unchecked", "rawtypes"}) +public class MonkeyZoneDownloadPanel implements WizardDescriptor.Panel, + WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel { + + private WizardDescriptor wizardDescriptor; + private MonkeyZoneDownloadPanelVisual component; + + static String ZIP_NAME = "MonkeyZone.zip"; + static String DOWNLOAD_FOLDER = System.getProperty("java.io.tmpdir"); + + public MonkeyZoneDownloadPanel() { + } + + public int doDownloadZip() { + return downloadFile("https://github.com/jMonkeyEngine/monkeyzone/archive/refs/heads/master.zip", DOWNLOAD_FOLDER, ZIP_NAME); + } + + private int downloadFile(String fileURL, String saveDir, String fileName) { + HttpURLConnection httpConn = null; + BufferedInputStream inputStream = null; + FileOutputStream fileOutputStream = null; + + final File outputFile = new File(saveDir, fileName); + + if (outputFile.exists()) { + return 1; + } + + try { + // Create URL object + URL url = new URL(fileURL); + httpConn = (HttpURLConnection) url.openConnection(); + + // Check HTTP response code + int responseCode = httpConn.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + // Open input stream from the HTTP connection + inputStream = new BufferedInputStream(httpConn.getInputStream()); + + + + // Create output stream to save the file + fileOutputStream = new FileOutputStream(outputFile); + + byte[] buffer = new byte[4096]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + fileOutputStream.write(buffer, 0, bytesRead); + } + + return 1; + } + } catch (IOException e) { + return 0; + } finally { + // Close resources + try { + if (inputStream != null) inputStream.close(); + if (fileOutputStream != null) fileOutputStream.close(); + if (httpConn != null) httpConn.disconnect(); + } catch (IOException ex) { + return 0; + } + } + return 0; + } + + @Override + public Component getComponent() { + if (component == null) { + component = new MonkeyZoneDownloadPanelVisual(this); + component.setName(NbBundle.getMessage(MonkeyZoneDownloadPanel.class, "LBL_DownloadProjectStep")); + } + return component; + } + + @Override + public HelpCtx getHelp() { + return new HelpCtx("sdk.download_project"); + } + + @Override + public boolean isValid() { + getComponent(); + return component.valid(wizardDescriptor); + } + + private final Set listeners = new HashSet<>(1); // or can use ChangeSupport in NB 6.0 + + @Override + public final void addChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.add(l); + } + } + + @Override + public final void removeChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.remove(l); + } + } + + protected final void fireChangeEvent() { + Set ls; + synchronized (listeners) { + ls = new HashSet<>(listeners); + } + ChangeEvent ev = new ChangeEvent(this); + for (ChangeListener l : ls) { + l.stateChanged(ev); + } + } + + @Override + public void readSettings(Object settings) { + wizardDescriptor = (WizardDescriptor) settings; + component.read(wizardDescriptor); + } + + @Override + public void storeSettings(Object settings) { + WizardDescriptor d = (WizardDescriptor) settings; + component.store(d); + } + + @Override + public boolean isFinishPanel() { + return false; + } + + @Override + public void validate() throws WizardValidationException { + getComponent(); + component.validate(wizardDescriptor); + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanelVisual.form b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanelVisual.form new file mode 100644 index 000000000..57d50cb2f --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanelVisual.form @@ -0,0 +1,120 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanelVisual.java b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanelVisual.java new file mode 100644 index 000000000..cdde51877 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneDownloadPanelVisual.java @@ -0,0 +1,194 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.monkeyzone; + +import javax.swing.JPanel; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; + +public class MonkeyZoneDownloadPanelVisual extends JPanel implements DocumentListener { + + public static final String PROP_PROJECT_NAME = "projectName"; + private final MonkeyZoneDownloadPanel panel; + + public MonkeyZoneDownloadPanelVisual(MonkeyZoneDownloadPanel panel) { + initComponents(); + this.panel = panel; + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + downloadButton = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); + jTextArea1 = new javax.swing.JTextArea(); + statusField = new javax.swing.JTextField(); + jLabel1 = new javax.swing.JLabel(); + + org.openide.awt.Mnemonics.setLocalizedText(downloadButton, org.openide.util.NbBundle.getMessage(MonkeyZoneDownloadPanelVisual.class, "MonkeyZoneDownloadPanelVisual.downloadButton.text")); // NOI18N + downloadButton.setActionCommand(org.openide.util.NbBundle.getMessage(MonkeyZoneDownloadPanelVisual.class, "MonkeyZoneDownloadPanelVisual.downloadButton.actionCommand")); // NOI18N + downloadButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + downloadButtonActionPerformed(evt); + } + }); + + jTextArea1.setEditable(false); + jTextArea1.setColumns(20); + jTextArea1.setLineWrap(true); + jTextArea1.setRows(5); + jTextArea1.setText(org.openide.util.NbBundle.getMessage(MonkeyZoneDownloadPanelVisual.class, "MonkeyZoneDownloadPanelVisual.jTextArea1.text")); // NOI18N + jTextArea1.setWrapStyleWord(true); + jTextArea1.setEnabled(false); + jScrollPane1.setViewportView(jTextArea1); + + statusField.setEditable(false); + statusField.setText(org.openide.util.NbBundle.getMessage(MonkeyZoneDownloadPanelVisual.class, "MonkeyZoneDownloadPanelVisual.statusField.text")); // NOI18N + statusField.setEnabled(false); + statusField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + statusFieldActionPerformed(evt); + } + }); + + jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/jme3/gde/templates/monkeyzone/monkeyzone.png"))); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(MonkeyZoneDownloadPanelVisual.class, "MonkeyZoneDownloadPanelVisual.jLabel1.text")); // NOI18N + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 307, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(statusField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 313, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(layout.createSequentialGroup() + .addGap(99, 99, 99) + .addComponent(downloadButton))) + .addContainerGap(14, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(71, 71, 71) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(21, 21, 21) + .addComponent(downloadButton) + .addGap(18, 18, 18) + .addComponent(statusField, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jLabel1))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void downloadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downloadButtonActionPerformed + statusField.setText(org.openide.util.NbBundle.getMessage(MonkeyZoneDownloadPanelVisual.class, "MonkeyZoneDownloadPanelVisual.downloading")); + final int result = this.panel.doDownloadZip(); + if (result == 1) { + statusField.setText(org.openide.util.NbBundle.getMessage(MonkeyZoneDownloadPanelVisual.class, "MonkeyZoneDownloadPanelVisual.downloadSuccess")); + } else { + statusField.setText(org.openide.util.NbBundle.getMessage(MonkeyZoneDownloadPanelVisual.class, "MonkeyZoneDownloadPanelVisual.downloadFailed")); + } + }//GEN-LAST:event_downloadButtonActionPerformed + + private void statusFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_statusFieldActionPerformed + + }//GEN-LAST:event_statusFieldActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + javax.swing.JButton downloadButton; + javax.swing.JLabel jLabel1; + javax.swing.JScrollPane jScrollPane1; + javax.swing.JTextArea jTextArea1; + javax.swing.JTextField statusField; + // End of variables declaration//GEN-END:variables + + @Override + public void addNotify() { + super.addNotify(); + } + + boolean valid(WizardDescriptor wizardDescriptor) { + + return true; + } + + void store(WizardDescriptor d) { + + } + + void read(WizardDescriptor settings) { + + } + + void validate(WizardDescriptor d) throws WizardValidationException { + // nothing to validate + } + + // Implementation of DocumentListener -------------------------------------- + @Override + public void changedUpdate(DocumentEvent e) { + + } + + @Override + public void insertUpdate(DocumentEvent e) { + updateTexts(e); + } + + @Override + public void removeUpdate(DocumentEvent e) { + updateTexts(e); + } + + /** Handles changes in the Project name and project directory, */ + private void updateTexts(DocumentEvent e) { + + panel.fireChangeEvent(); // Notify that the panel changed + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZonePanelVisual.form b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZonePanelVisual.form new file mode 100644 index 000000000..ddb652b77 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZonePanelVisual.form @@ -0,0 +1,122 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZonePanelVisual.java b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZonePanelVisual.java new file mode 100644 index 000000000..f4cc3e639 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZonePanelVisual.java @@ -0,0 +1,291 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.monkeyzone; + +import java.io.File; +import javax.swing.JFileChooser; +import javax.swing.JPanel; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.Document; +import org.netbeans.spi.project.ui.support.ProjectChooser; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.filesystems.FileUtil; + +public class MonkeyZonePanelVisual extends JPanel implements DocumentListener { + + public static final String PROP_PROJECT_NAME = "projectName"; + static final String PROJECT_NAME = "MonkeyZone"; + private final MonkeyZoneWizardPanel panel; + + public MonkeyZonePanelVisual(MonkeyZoneWizardPanel panel) { + initComponents(); + this.panel = panel; + // Register listener on the textFields to make the automatic updates + projectNameTextField.getDocument().addDocumentListener(this); + projectLocationTextField.getDocument().addDocumentListener(this); + } + + public String getProjectName() { + return this.projectNameTextField.getText(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + projectNameLabel = new javax.swing.JLabel(); + projectNameTextField = new javax.swing.JTextField(); + projectLocationLabel = new javax.swing.JLabel(); + projectLocationTextField = new javax.swing.JTextField(); + browseButton = new javax.swing.JButton(); + createdFolderLabel = new javax.swing.JLabel(); + createdFolderTextField = new javax.swing.JTextField(); + + projectNameLabel.setLabelFor(projectNameTextField); + org.openide.awt.Mnemonics.setLocalizedText(projectNameLabel, org.openide.util.NbBundle.getMessage(MonkeyZonePanelVisual.class, "MonkeyZonePanelVisual.projectNameLabel.text")); // NOI18N + + projectLocationLabel.setLabelFor(projectLocationTextField); + org.openide.awt.Mnemonics.setLocalizedText(projectLocationLabel, org.openide.util.NbBundle.getMessage(MonkeyZonePanelVisual.class, "MonkeyZonePanelVisual.projectLocationLabel.text")); // NOI18N + + org.openide.awt.Mnemonics.setLocalizedText(browseButton, org.openide.util.NbBundle.getMessage(MonkeyZonePanelVisual.class, "MonkeyZonePanelVisual.browseButton.text")); // NOI18N + browseButton.setActionCommand(org.openide.util.NbBundle.getMessage(MonkeyZonePanelVisual.class, "MonkeyZonePanelVisual.browseButton.actionCommand")); // NOI18N + browseButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + browseButtonActionPerformed(evt); + } + }); + + createdFolderLabel.setLabelFor(createdFolderTextField); + org.openide.awt.Mnemonics.setLocalizedText(createdFolderLabel, org.openide.util.NbBundle.getMessage(MonkeyZonePanelVisual.class, "MonkeyZonePanelVisual.createdFolderLabel.text")); // NOI18N + + createdFolderTextField.setEditable(false); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(projectNameLabel) + .addComponent(projectLocationLabel) + .addComponent(createdFolderLabel)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(projectNameTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE) + .addComponent(projectLocationTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE) + .addComponent(createdFolderTextField, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(browseButton) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(projectNameLabel) + .addComponent(projectNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(projectLocationLabel) + .addComponent(projectLocationTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(browseButton)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(createdFolderLabel) + .addComponent(createdFolderTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(213, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseButtonActionPerformed + String command = evt.getActionCommand(); + if ("BROWSE".equals(command)) { + JFileChooser chooser = new JFileChooser(); + chooser.setCurrentDirectory(null); + chooser.setDialogTitle("Select Project Location"); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + String path = this.projectLocationTextField.getText(); + if (path.length() > 0) { + File f = new File(path); + if (f.exists()) { + chooser.setSelectedFile(f); + } + } + if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) { + File projectDir = chooser.getSelectedFile(); + projectLocationTextField.setText(FileUtil.normalizeFile(projectDir).getAbsolutePath()); + } + panel.fireChangeEvent(); + } + + }//GEN-LAST:event_browseButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + javax.swing.JButton browseButton; + javax.swing.JLabel createdFolderLabel; + javax.swing.JTextField createdFolderTextField; + javax.swing.JLabel projectLocationLabel; + javax.swing.JTextField projectLocationTextField; + javax.swing.JLabel projectNameLabel; + javax.swing.JTextField projectNameTextField; + // End of variables declaration//GEN-END:variables + + @Override + public void addNotify() { + super.addNotify(); + //same problem as in 31086, initial focus on Cancel button + projectNameTextField.requestFocus(); + } + + boolean valid(WizardDescriptor wizardDescriptor) { + + if (projectNameTextField.getText().length() == 0) { + // TODO if using org.openide.dialogs >= 7.8, can use WizardDescriptor.PROP_ERROR_MESSAGE: + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Name is not a valid folder name."); + return false; // Display name not specified + } + File f = FileUtil.normalizeFile(new File(projectLocationTextField.getText()).getAbsoluteFile()); + if (!f.isDirectory()) { + String message = "Project Folder is not a valid path."; + wizardDescriptor.putProperty("WizardPanel_errorMessage", message); + return false; + } + final File destFolder = FileUtil.normalizeFile(new File(createdFolderTextField.getText()).getAbsoluteFile()); + + File projLoc = destFolder; + while (projLoc != null && !projLoc.exists()) { + projLoc = projLoc.getParentFile(); + } + if (projLoc == null || !projLoc.canWrite()) { + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Folder cannot be created."); + return false; + } + + if (FileUtil.toFileObject(projLoc) == null) { + String message = "Project Folder is not a valid path."; + wizardDescriptor.putProperty("WizardPanel_errorMessage", message); + return false; + } + + File[] kids = destFolder.listFiles(); + if (destFolder.exists() && kids != null && kids.length > 0) { + // Folder exists and is not empty + wizardDescriptor.putProperty("WizardPanel_errorMessage", + "Project Folder already exists and is not empty."); + return false; + } + wizardDescriptor.putProperty("WizardPanel_errorMessage", ""); + return true; + } + + void store(WizardDescriptor d) { + String name = projectNameTextField.getText().trim(); + String folder = createdFolderTextField.getText().trim(); + + d.putProperty("projdir", new File(folder)); + d.putProperty("name", name); + } + + void read(WizardDescriptor settings) { + File projectLocation = (File) settings.getProperty("projdir"); + if (projectLocation == null || projectLocation.getParentFile() == null || !projectLocation.getParentFile().isDirectory()) { + projectLocation = ProjectChooser.getProjectsFolder(); + } else { + projectLocation = projectLocation.getParentFile(); + } + this.projectLocationTextField.setText(projectLocation.getAbsolutePath()); + + String projectName = (String) settings.getProperty("name"); + if (projectName == null) { + projectName = PROJECT_NAME; + } + this.projectNameTextField.setText(projectName); + this.projectNameTextField.selectAll(); + } + + void validate(WizardDescriptor d) throws WizardValidationException { + // nothing to validate + } + + // Implementation of DocumentListener -------------------------------------- + @Override + public void changedUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + @Override + public void insertUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + @Override + public void removeUpdate(DocumentEvent e) { + updateTexts(e); + if (this.projectNameTextField.getDocument() == e.getDocument()) { + firePropertyChange(PROP_PROJECT_NAME, null, this.projectNameTextField.getText()); + } + } + + /** Handles changes in the Project name and project directory, */ + private void updateTexts(DocumentEvent e) { + + Document doc = e.getDocument(); + + if (doc == projectNameTextField.getDocument() || doc == projectLocationTextField.getDocument()) { + // Change in the project name + + String projectName = projectNameTextField.getText(); + String projectFolder = projectLocationTextField.getText(); + + //if (projectFolder.trim().length() == 0 || projectFolder.equals(oldName)) { + createdFolderTextField.setText(projectFolder + File.separatorChar + projectName); + //} + + } + panel.fireChangeEvent(); // Notify that the panel changed + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneWizardIterator.java b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneWizardIterator.java new file mode 100644 index 000000000..50d5200f5 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneWizardIterator.java @@ -0,0 +1,254 @@ +/* + * Copyright (c) 2009-2010 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.monkeyzone; + +import com.jme3.gde.templates.gradledesktop.options.CachedOptionsContainer; +import java.awt.Component; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.text.MessageFormat; +import java.util.Enumeration; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; +import javax.script.ScriptContext; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import javax.swing.JComponent; +import javax.swing.event.ChangeListener; +import org.netbeans.api.project.ProjectManager; +import org.netbeans.spi.project.ui.support.ProjectChooser; +import org.openide.WizardDescriptor; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; +import org.openide.util.NbBundle; + +@SuppressWarnings({"unchecked", "rawtypes"}) +public class MonkeyZoneWizardIterator implements WizardDescriptor.InstantiatingIterator { + + private int index; + private WizardDescriptor.Panel[] panels; + private WizardDescriptor wiz; + + + final static String master = "monkeyzone-master/"; + + + public MonkeyZoneWizardIterator() { + + // Initiate the options getting... + CachedOptionsContainer.getInstance(); + } + + public static MonkeyZoneWizardIterator createIterator() { + return new MonkeyZoneWizardIterator(); + } + + private WizardDescriptor.Panel[] createPanels() { + return new WizardDescriptor.Panel[]{ + new MonkeyZoneDownloadPanel(), + new MonkeyZoneWizardPanel() + }; + } + + private String[] createSteps() { + return new String[]{ + NbBundle.getMessage(MonkeyZoneWizardIterator.class, "LBL_DownloadProjectStep"), + NbBundle.getMessage(MonkeyZoneWizardIterator.class, "LBL_CreateProjectStep"), + }; + } + + @Override + public Set/**/ instantiate(/*ProgressHandle handle*/) throws IOException { + Set resultSet = new LinkedHashSet<>(); + File dirF = FileUtil.normalizeFile((File) wiz.getProperty("projdir")); + dirF.mkdirs(); + + FileObject template = FileUtil.toFileObject(new File( + MonkeyZoneDownloadPanel.DOWNLOAD_FOLDER, + MonkeyZoneDownloadPanel.ZIP_NAME)); + + FileObject dir = FileUtil.toFileObject(dirF); + unZipFile(template.getInputStream(), dir); + + // Always open top dir as a project: + resultSet.add(dir); + // Look for nested projects to open as well: + Enumeration e = dir.getFolders(true); + while (e.hasMoreElements()) { + FileObject subfolder = e.nextElement(); + if (ProjectManager.getDefault().isProject(subfolder)) { + resultSet.add(subfolder); + } + } + + File parent = dirF.getParentFile(); + if (parent != null && parent.exists()) { + ProjectChooser.setProjectsFolder(parent); + } + + return resultSet; + } + + @Override + public void initialize(WizardDescriptor wiz) { + this.wiz = wiz; + index = 0; + panels = createPanels(); + // Make sure list of steps is accurate. + String[] steps = createSteps(); + for (int i = 0; i < panels.length; i++) { + Component c = panels[i].getComponent(); + if (steps[i] == null) { + // Default step name to component name of panel. + // Mainly useful for getting the name of the target + // chooser to appear in the list of steps. + steps[i] = c.getName(); + } + if (c instanceof JComponent jc) { // Step #. + // TODO if using org.openide.dialogs >= 7.8, can use WizardDescriptor.PROP_*: + jc.putClientProperty("WizardPanel_contentSelectedIndex", i); + // Step name (actually the whole list for reference). + jc.putClientProperty("WizardPanel_contentData", steps); + } + } + } + + @Override + public void uninitialize(WizardDescriptor wiz) { + this.wiz.putProperty("projdir", null); + this.wiz.putProperty("name", null); + this.wiz = null; + panels = null; + } + + @Override + public String name() { + return MessageFormat.format("{0} of {1}", + new Object[]{index + 1, panels.length}); + } + + @Override + public boolean hasNext() { + return index < panels.length - 1; + } + + @Override + public boolean hasPrevious() { + return index > 0; + } + + @Override + public void nextPanel() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + index++; + } + + @Override + public void previousPanel() { + if (!hasPrevious()) { + throw new NoSuchElementException(); + } + index--; + } + + @Override + public WizardDescriptor.Panel current() { + return panels[index]; + } + + // If nothing unusual changes in the middle of the wizard, simply: + @Override + public final void addChangeListener(ChangeListener l) { + } + + @Override + public final void removeChangeListener(ChangeListener l) { + } + + private void createFileFromTemplate(File target, String templateResourcePath, Map tokens) throws IOException { + + // Create FreeMarker script engine + ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); + ScriptEngine engine = scriptEngineManager.getEngineByName("freemarker"); + Map bindings = engine.getContext().getBindings(ScriptContext.ENGINE_SCOPE); + bindings.putAll(tokens); + + // Process template + try { + FileObject targetFO = FileUtil.toFileObject(target); + try (Writer os = new BufferedWriter(new OutputStreamWriter(targetFO.getOutputStream(), StandardCharsets.UTF_8)); Reader is = new BufferedReader(new InputStreamReader(MonkeyZoneWizardIterator.class.getResourceAsStream("/" + templateResourcePath)));) { + engine.getContext().setWriter(os); + engine.eval(is); + } + } catch (IOException | ScriptException ex) { + throw new IOException(ex.getMessage(), ex); + } + } + + private static void unZipFile(InputStream source, FileObject projectRoot) throws IOException { + try (source) { + ZipInputStream str = new ZipInputStream(source); + ZipEntry entry; + while ((entry = str.getNextEntry()) != null) { + if (entry.getName().endsWith(master)) { + continue; + } + final String entryName = entry.getName().replace(master, ""); + if (entry.isDirectory()) { + FileUtil.createFolder(projectRoot, entryName); + } else { + FileObject fo = FileUtil.createData(projectRoot, entryName); + try (OutputStream out = fo.getOutputStream()) { + FileUtil.copy(str, out); + } + } + } + } + } + +} diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneWizardPanel.java b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneWizardPanel.java new file mode 100644 index 000000000..57dcb16f7 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/MonkeyZoneWizardPanel.java @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2024 jMonkeyEngine + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'jMonkeyEngine' nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.jme3.gde.templates.monkeyzone; + +import java.awt.Component; +import java.util.HashSet; +import java.util.Set; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.openide.WizardDescriptor; +import org.openide.WizardValidationException; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; + +/** + * Panel just asking for basic info. + */ +@SuppressWarnings({"unchecked", "rawtypes"}) +public class MonkeyZoneWizardPanel implements WizardDescriptor.Panel, + WizardDescriptor.ValidatingPanel, WizardDescriptor.FinishablePanel { + + private WizardDescriptor wizardDescriptor; + private MonkeyZonePanelVisual component; + + public MonkeyZoneWizardPanel() { + } + + @Override + public Component getComponent() { + if (component == null) { + component = new MonkeyZonePanelVisual(this); + component.setName(NbBundle.getMessage(MonkeyZoneWizardPanel.class, "LBL_CreateProjectStep")); + } + return component; + } + + @Override + public HelpCtx getHelp() { + return new HelpCtx("sdk.project_creation"); + } + + @Override + public boolean isValid() { + getComponent(); + return component.valid(wizardDescriptor); + } + + private final Set listeners = new HashSet<>(1); // or can use ChangeSupport in NB 6.0 + + @Override + public final void addChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.add(l); + } + } + + @Override + public final void removeChangeListener(ChangeListener l) { + synchronized (listeners) { + listeners.remove(l); + } + } + + protected final void fireChangeEvent() { + Set ls; + synchronized (listeners) { + ls = new HashSet<>(listeners); + } + ChangeEvent ev = new ChangeEvent(this); + for (ChangeListener l : ls) { + l.stateChanged(ev); + } + } + + @Override + public void readSettings(Object settings) { + wizardDescriptor = (WizardDescriptor) settings; + component.read(wizardDescriptor); + } + + @Override + public void storeSettings(Object settings) { + WizardDescriptor d = (WizardDescriptor) settings; + component.store(d); + } + + @Override + public boolean isFinishPanel() { + return false; + } + + @Override + public void validate() throws WizardValidationException { + getComponent(); + component.validate(wizardDescriptor); + } +} diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/build.gradle.ftl b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/build.gradle.ftl new file mode 100644 index 000000000..8093c2a70 --- /dev/null +++ b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/build.gradle.ftl @@ -0,0 +1,65 @@ +plugins { + id 'java' + id 'application' +} + +group 'com.monkeyzone' +version '1.0' + +mainClassName = "com.monkeyzone.MonkeyZone" + +repositories { + mavenCentral() +} + +project.ext { + jmeVer = '3.7.0-stable' +} + +project(":assets") { + apply plugin: "java" + + buildDir = rootProject.file("build/assets") + + sourceSets { + main { + resources { + srcDir '.' + } + } + } + + java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + } +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +dependencies { + + implementation "org.jmonkeyengine:jme3-core:$jmeVer" + implementation "org.jmonkeyengine:jme3-desktop:$jmeVer" + implementation "org.jmonkeyengine:jme3-lwjgl:$jmeVer" + implementation "org.jmonkeyengine:jme3-lwjgl:$jmeVer" + implementation "com.github.stephengold:Heart:9.0.0" + implementation "com.github.stephengold:Minie:8.0.0" + implementation project("assets") + +} + +jar { + manifest { + attributes 'Main-Class': "$mainClassName" + } +} + +wrapper { + gradleVersion = '8.6' +} diff --git a/jme3-templates/src/com/jme3/gde/templates/monkeyzone/monkeyzone.png b/jme3-templates/src/com/jme3/gde/templates/monkeyzone/monkeyzone.png new file mode 100644 index 0000000000000000000000000000000000000000..562a0d599a00045b4b83b5c82035be4592e08d6a GIT binary patch literal 160279 zcmeGDWl&sAy9Npm1SdGb9TFtCySoKHshU}<`|4Y+TY61Tn4GK_0vrw;2n0fq5EoVefxz;BH#H16aAgxksuBbuQ*~ET zb5ziGA+oc#H8Hm`CUSJMGbS>2H8%l)T$c*c)swVJ;zZuD`*6W4z{EqCV6=sanaWGAU&*Udpl1#a{c(^^=^v&aD4O4rUU8OmQPj17Be&6fSZzR zyo1sU`o|4h3-g1B=Q|E&@XQ16Rid)Ys|ORtPS)JvzK_;^WpLX2W$t?J)pZMBF3Yh? z)LW!V^t#j(VT2W5$J_QXZ33TntT!*;+tbd9cj3@^RhAte>678@?fu&7Svu1%tVK18 zXW63x^mP|4w%>^at9U|8x{sPoB3?e6J~--a;z6g$Sug52A>vIogZd#THtgrea1q3N zu3F`uXxk)m?llEC9$FHY!%t{7caW z^&u8;_mkC9dw448lDof$qDG0K{rH89gnvems>{EMVGdbsP}CPnsK|GV3_K^H3EOBS zjH8--dL~rYpWi?DSlH~%5|r#I`y^>9ZWyW68w^Zl zA;R+t)3j-3Eh;MRI5jMOCz@0=%(>(8+(DQn*|gowc@PGeBA#)(-f#FbnEW)~Q(vi5 zH%<477I`Xf{Zp%~s_7Ml@3OQp(4g(I>=lECSmJm^IUvh(dc#Cp;vC=dm}J?w=KPG$ zmv@J7y#DqQQ54kM6&x5W{wJn&!7=$*#SzaK zC6Ta?wG<{?6b8aSYGZbT32PiK(d0$W-aoOaUfX_;c%L8S2s+ahJv;yYTvTj5IdMhE ztNh7A-YfUX(eM>14msYF)#1}aU#un98A!M-iJ-P%CeN09%-gi3YhA}OeEZDX?byQQ z%wf3cuz?9{F*E3ZdTSv?qcWZ!ZMk9W_PMb6uGDRIVtfQ7{H=!WN5lyX4}PKfiWjO- z07uzpj1okLdWPp;vS$vf8FM2+q4J#^*A35K>YfhM@vvIHh-&;AomE^NcK_Dpe#O)* z^ajdrFE`RVQr8-wx_H>yH&Q<@FEUx{=$dFr+HXr;Nt=!r3^iA&B6;(KAWyJ*CPA&2?<=@W zGj18>5oj5(~s2aLAF)${VZHhW6xIN8EPuRa$djJe1W<9mlgS$+UOMzaZeC=&6jyfUSZ$r zk<8nRA;S;9XI)J-0$$QeXkLl+Y2VotzRP{w++pRmU<*nI9qK8YH#ci$ECeGgFoDG|JAla%A4HlEzL(cVril?%^br2EHzn2G+Uapv3XY)3$T<kWi_mEN`@_HvaPiSR$Q<+8Oelp$5mX1&?oqK1sd@@3h_d6^TDtE`tLE_?i!}_4^9jQC;YU4=D zE{!68Ex`8yKRNsRB5h>by?dcyj`{%FsScG&a+@YgC)v5jbXB88y_sOq4ScU7|Bo65 zcYZkd@8z)~C5-)3)3cgQLY#%Tz7iVY@OD2ix1-2A1`=b1c*>#7F>KbUSp`ZdGoG|j zqsWgxX}4E;+3JYr_J|-OmVqQ`3+zWdXfRGN8auv`shKK$9(lZ+6YRS>-HJoZCJfqV zo=VxARS<-H=Q?qhrS6M$`vgwE7L&hXXB0rHuc}s9EzQ*PwI#MKl5|Uo>T-=9QQhZi zEg|gW2S+ctE?ba1XE_&zP^MaBNlc?;@-9(PR0-I3a6HPrxVsjW7lW zA9enrj7x&mHww2eGXna7v7@Q8tBe5_n+{%F$BS|mZ`0!ss}Wyf zBi)Q-4>hG9^B*h0;E_LcT^GzK;%pONRvi)AB)0{4&4nS{P>VM+*{5FqFiT;WHTMnv z_WiaM=C*H&KP9XH?x4qRI+qCT4oOhEsHc}06(Zq8(BcX?3N0+dK{N7ai9j!sKI^Oq z%Lg!e2*X3R=gQsV6@yjbMY5kz1$0j6&~_VVdJ>aVMM{-j_;a0UguYUon6{AgP!Qs)aYr)+6!RND1)xyZL@8_W z_Le#!hg58j=_yVsYJ3j=~NIRk`?;%xE8S|H@=LU zos<{V3HfV@Iv|AW7VasffVrtj6jP0qr&~Yy|V_mKFqeSacI*$eG#9TOxYdS&F~BQ^SHi)z zC7_BCHsh@Q#9fkTrRR6fKa79}N%}#QIPK$A92yO&5gb@MNP{x&6PTR<8R{pLygaC; zapZF(IT$HJvdU5Qo*-zr9Y+s=q~k8Nvpm6m7moyTM_(H<4+*sSREiX{qTSxKIO@Z= z^!6hLTv=K;ft9r?b*>l$;D^9VH9$pn%?+5=0EL zPk+{46SR=}!zc}WFeAwjdqS$2UD1cR&}5mr_$xMSb``9M(n6C8F%s~I5CjC398^nl ztGmm^L|Y?8Z>f!$bswB81XNdOe#TIsl5uhT!o!Z2(;_?TRRSqp1Ycr+5?+dI3RJ*J z!b8#RNFB+}qA4i-I8%5`6}J(EASs3Ni$B$Y+pzHcs-1$tAskm=G$g&px`4wP z4iv577bGrg?HLN1#>JFZ&d>V^yZ7lb=D1Iom|spk2}uXs?Y6T@AJz>Idlj>s>3hWB zwuCr+b}~y3XV(;zwXY3im?`G|I&*gTv?i7DOHeas(5K9*R5w*&r__KLTqV1so{Mf> zs*L>ZQYMz*QDM{#E#c1>#CqcO1nAre+Ob0^w2X&MB#Bd(NP>xzHKwVY-7eQq3QjqE zZbq7rpzgi;ZaY7wmm@0F$BC!#@)#kXt`U+O<^4I%qVR?xi)v({k*20}3w(^&hOPL! zg#026eON;4=K=y;ZzSZ+FlxxAXh;u@FieX3Wz-Rw6#)^XS_9kND|M3{BvicsR5D%4 zWZWD`$rLR}`&gbq?b%C(PX6EiSnG`{vxa=NGaPw7KAb!po4dLQ!-wrbnYf3CqrhjkfJa}3=Y``=T943NN6M^9;uAr{ z-1w-PUQ)x!T00q>e!)SrFVV*5(gB0e>vXLlew9G!6=$>}qBrDMT}0S0{YYt^tXGcS zMSyIde=xh#IQdxV2is38jK;t=zlqi89Uuz16u=*TzQo@Pnm*_BGl|Irbr3uT@ zjNaoZ9p6laebIc~v^IrYi&OIes9P+-pl3CC;m{q!hCz3qq5AM0W-RSKa%~N)uL(w z(0kum*5ris$s$WzVcw4Nkmuu5M_y=QM5NZYQ!NL1Wk~5 z?u)Ca(f|iE2uGdNA(H%SAMzIVHRACqU;}r<1y0u-v?4I`Nc|qMMpM-c$P~?6cxklG%kZ(8ZxiKxeZ5d1#b`xh%&;` z|7BmzpI9r$d!NyYW2e2WjJN<9OytjPEMEK?xGqP|E#IxU1vF=xLsOGGa5vD&1}~WX ziIXHhN-!D?N!roLTtU*Ti66luj|7v87e9@fBkdQjP*U(0`D1Z>UV|lkB|9z8 zcN{%g--QvI>9lb&S>bP*rIWr&(iEsC6xZMl*?yrUrp>$&#VmQY#h*V|Gl|dG1E!n= zNei{5?uuGmkUu;p<0TXCVRCE!?fzD7!9C}%^GC>o5myJ(W?pz`gx zB_NEj83ns^_-lEq%g~!u$b2t4x)Vg#NB`_G_t;J{%9#Z)oXYP*pG9i;@P7vGS2Gk& ziRK79YLv^)@t_W>&Atq692UL|e!rUM{(>>frv4Mb-Ze2c1!ERgnzR5VIES0nnVNSG z%G?=4v={Wv$}o2fYOW_Mpje=_v`O>`rG!;M{g@Gto3q-t83fhfY#~>&$snW0s>p6H zHKAoG4k`Mpu&p@LSzZ=%jj$-~yM?RB3_tniZT14 z@ePdce4RvEtjk$2<@$P9SJ4pdoXwOn zF<6+*>nz|5Iz&73(u@!x*uyCLKv_=6>a4&pI1&^ts}_$z%$Ls|3?klFm#|YcA+lsr ztmm4cZBrAkGjl2ywt2$Brc_c7Rm<<`!Z#3Qq+L18PiusYBVm~;L1y*b64A~iF&$DAmV_3C*cwtAR}#yBGZA@bb4)NH zD#Oxe1WqQoN9d*?3G?MIBb}|7@*b;dQ)07BU#~|SF%d@nV!!;bo(}dv4c||gFXN3Ar-IrA(0t! z)O|%`-GDtO6ug!mhv^oKM=$Q2{p*_*Iv7z$SXP3g$f%=z3aXHr6EPfo$OV{u_1XhY zc$h>saZ^^{#Ghf~1GZx)M~uRDZKX1DRVOn&Cb9Ys;c|h!80qakxw=4d_i&UCc>&O5 zM*iISD0C#~YCjM!c)*7^<$Zr_IOz>=mq5PMNGiTjwMBhHj}NRy2|uHfO!b%eq%2e7 z7wu;*B^O8xCnrhzW5WYOIK4nbF91@0*;ck>Oy-GJRZe}lG4i*7dKe2){C7>}R!~Z4 zVy8`a-De3a-YL2;dg*pYGVJ0y`Ls^)eQ(VH61|_HLUeJ-Ro9+t1QCeA{7p)PalA3j z;7?&AoAWyTG}+~qT6f|6@pD4y0)K3Dd@I5}#V8Iy@?$M6Z4!%x*dhn>95%mc@b}4` ztvPK}t?wVxIt5kuJ50jG`XQ42xidwZh>WzlCPhekL8tGILTGnR^ky9uml;Lrt zFDp@o#nVxfel|(czix#!5f!jt;BAQu)M>eck=SB4Sd7LVdLuz4%lCCri`f+W=-aSu z&uJ!g_C;C&$+GMU8}BO)f8~-ovD4}*^1e$x`0be8%tFlvdwo=W#GTdN_d}v=PvuL} zKNRZ|@G+Xmq&Q&~eKSOp{?>fiKBw`6I8j}3pmF%s&ov>eU0;;rX-Hwf_R5x`l_1l` zo6JN)+)mNGK`Z6^l>oipkm2)1(KiKXXhM zobX`Dp5_gyhjiQLKq7}pM}H2tSYQ%R3e(smXd9hi!&8`nl{I3W8J6>JVCVEr-x-1; z&@A?D&~V3J3c-{=Z26%KLstE@x~aA?$X#;80EZbwht>x_A6L#jv;F>1eSG=l&|QvQwZNUS0v)l>eZZ&ms0sg z&N5ji^HrUjbqV%)+2&CGWZRHo4KNZLHHd>mjS!SRQmY5&)({`yB`x46#BQj)pNJ#Q zBTJsUV*d>8PFiZGK=gzV#)p~yY(|F52y!d%lojI2!0Lq*J@AWXT!^M%jS2a4F09-{ z=9YNV?=)LE1|An}j!_fW*f6`>hZ-z>q3<_MF){+9^;+ILD*ywP3*Mp}0{ZeYBTlp6 zmpfsiIxPS}(XFD?kqI%782&?VbZbMRi5ZPJG(n>}+Ub+lCj2FV&f#|a-E=4MCzt+H zVf;+m6vtmKm5bJ(&@D6TW7PT^vnNnTF=0gPBkGMPN$SU zRaT|r60n<*ml*%Jrf5TXd_7nQm>)wq6UWDpgTiFMxB0+?n~=R=lfgVP!DY!vn$J=i zxMfoBL{&zBhtExo!uH*+SC{LPImsY?#8{^jH$1)A6Pn|A+A*F|>Tzo{bz+`Kck9+% zYj2-Sfi69jCA8{*YU#A|&GCHNQ{FTGBg%9snWiD8qlQ>BWpMTW@&)@)D1o4LDx$os zvMk-1Z*{tu>Dn3td1y(_n_aoQDYCfr3O!?m`MYm9)~%TtkAM=GGF`mX7TQ}b4;sO6 z3QOT1yo;Y^80E5`InX5JGuQheDLVO`mBRzdm1JjPZ)W@N@ zsRwGezDpnNzy5Z6%!OtCz)_4#AVK06l7d5p@+#1YK>_EyjT#;O`A0H|q#PnCtzrJF zGYjhVd?2ww(xxI7RY8bu4>F3O(bw$qGkOK{qX+$d!wxhWDa}Tas6YW;h1!X!;LR>C zE!NMH6M4h?^y(&Io)9HQYCk?xXd!9*K!h}mcce$PF+oT9r0fo{(s^h|g0hCM zJJBkW#lrgjoBi1>rE=-l(jC&d+9%7rfKq%Lqn)Q0$diZwG6``}71h!6ny>Svjpp)P zLU2rG$?%+pH0eG$=Nh@`fsQ#Om4+B5TS@d88Qk}KPRybV*tUKDoGf6Q^#v2A% z%ZMvXzF6j6f9AXm{rOEC3!3G097U(+=<_>H+{Cgwbst7!WlaodS!tP~{bos-BzF-jJ!X7}LgBr`CH0NDqE^N314sXI zv_Z~~md6c{8lu?XWYjs`dPi#P`beDDSrRuVGe?wc=*qr!5Vs7F=t8)x(uF5Hfl3qP z4)dFVj}P({mKB@}QtI{Fv{*4!Ti6HHjIa<6vn2=l2vDcuw#*r*JAxSabp8$G4*slB zAGdTCYG#r1c48GioCxnI?19P~Pz92PgsWdKwn!l0F{U;1&64Skx;B1oFE#Ti3UT8E zh#99hr926HV|;2wJU_I1SRT^S8Gs`4gEz!WAVd_Z=r6T~{bS%cSA1Xx?li?aqdE|o z!v94R8ooGVyJ9=go?fJAvePCmqh^Uqq?Bo}8U_}sWOMzsUsvD!3;nc?i+n|)Kcpah zDRhUxH~gwoT*2cj4y@OLjMVDYkjWIfdNwCd=0O(u1tl0eDSJea#6`-EnCb$ND*Fy< ze@z7E!~~>b9*xz4g_#i4R4yV#05#5xN{WWHW)|#Vn>k@{_e2eKCp}2^dsn1Xh_c*U zC;N|yO2`*i&?QAsqxqWC8+1kpY|j>+M5EtEszad50v1t*naX-#)?xRn-Zw!>;+R-_ zF0(8ZR2ax++l0@_M}9m<^0qntU?~V27$(yU_~nB^q!)ECDO|J49~e;E4e&}_ydw2~ z3@)sO2SP6>xsC9SUT((P&1B4CbKF{HH0@6_O~nS5NEB2E*%}QOddIuRAuD2_8q*`4 z--5Ct~%mNYp%_BZW_QnkIW{ENkL*@puRac?ObFy$B>59i*ARFiY zdKV10dKgWOvnSY6+`ocJJl>(<8Dk5qm?QO+=Wi~cim~|OKEgl*VrD?9d!K5g?wo}F zO!C#{P{uz&!vhnaj9PK+(m_%qYc^#GrBj0|TVvEg=F7{&XFsYH)CAG2GxD^2Mgszh zy|L0QSao(c{hb^{4~ugcSO|u)-YjDND_FYvAd$*Eo!R#?3wjqyN*1={F)%i39>WTy zH4IZnSo8FHkw@9vZca?oz42-negcVTVzS|1{oy%zdbsy{g<@F@iwD2^uN|>;5a6bB zn*Dqyi;M+lpsQ4b(}^Eb-WaD-jj!-2<|o}OlroTsLBa7M{zx`kkaeRHM=rOlGu)Tw z55)}=VG#l;o_v)TYJ{qX=xtjBvy!;-D)Y%M;5iGA)Q+6ToA9}|8$A*ESRc0;IP8L> ziG>g>#-pMeKk|JAo~kfov!H>i)uZ(r9FRdYr%@Mof<~;*i+#!2L;WJm#73>|?e&M$2EraK&+b4gP02jL$XzqpZijBJxF7az)2qO_TH&l=z$F6tF zV}xpGgtD?o{PD@cG3KZ)(UUkcr^3#P$;@FgwyEZFtbZdE2Gu`mic2|Tr@%tPLcNj~ zd+`%x4++StV@Oza*R_C7$S+}LWY(FCdW|WZz!mY^vk$NEjNeBB5+^FtRV}7a(=HG{ z*H(e$w>w4yaf~F&UxvmP$4j>T!GXn@wC07^M&GxPioG)GIL3~DByut}?8NS%%dXz) zH_USoo!taN8zc4TcivoIaz+KWRhGA9f9D!C}Bt7D|P@Ey;}22Vw2yjs4;ky_BWUb%di-cFJc^G`imn zKztsaq30ib`$!DVY4*v>86)CT;&4{}1a#s&dAxdA@~)QA(QA<522T}7L}ARzpIP5b zhrQD2eQAN`ANO7_jAhzz*u*`lF|x%gWyyY$??dWJF`7zF?|4^w5Hnl)qUZ70S(UJO z+^MV$j25m{E6uzhBZJ4};RFq7+O{Y-(cQ!@CEOF~FJ-MH$MLPv>6a#q2PNwyzP@L~ z_%mDBT5e8T{fBwf9eONG^QkO#c+NPb<)T@M|D>oqNLWXH)r2$|_^!Fl)~J(H&>&L$CL>f zCU|w`$D)~?kbj$}>mQQJBi5Irp=}&+8CPk8_shf;euIx~L42^G;ob~`5ACiyAmA-C z_A^%CYtoDU#W1K8#-YL>&U?ycj&BW}s{i)7mv|cnZr$i<6JOVp_l+vwYYj*Kv8+Sf z9951N60WnAu#P!dqFY>j{Lyo14-JVYtjPIZckbHhcb-fDK5*VB&|FAJPC`iNKaLmy z2aA4s#qx;v@Z4r3XaBrhy84z#UrN0#aHet!|E9pv|~?A++|9_Sh-}5 zYT#sucW5Zp2uZcg&F~SNw;mc@7;F4syMersa1FnMV#&Py(#@tJ~ zaqf5MKAJ`)8dpx^iQ+}5`G16^qN2!!fR@)lP_QC1=bP*2+j%s$FWI5;k2M4{K9J+) zdmwx{n;VmneURA1nt0r5CM4xI!z@N1~5hB*1d+W0{_V`nGLMBCo|+`_=&hab6>sBE2G#Pn%JC%3HU zXBMZY>r7E^-k=bC`>MpBESbPjFdTE>$d{UoG^e4hHLbppt${JEtF;|)Bn$-N=5w{v zH?%Z%Br-5IHMij*IdAD8Au>1OAyH+Kp_j1}GBz_8cegiIbeB~!bhk9*Fe2gOh2wVR z1OTj!9rcM^t*vYvI9+*2{=wx0KL5Q;M?&<^5JyWM5;Yk)A|YFQVF8WsTxeaGXl?CH=@>XTIOymZ=@=PlfDtqf zZZ?kkt~53dq<$!-$owa~jl;jK z0N8`hRo{+|ftH@m+M4da&v0-QaRxyCEztk#33@eX zGW^f^c24$I|EObRNM~$iYz+)`09IxAA4`f!$jJTYjK3x@HMh3=XBJ@W|1r|h+~mKE z^*?0$d*>f@{<|Q+^#8>DAEW<6_kRWhqhw?_g>4O;{)#6d%tP{beNH1=Lvtg}e?FQp z7_zc3u(8lEFc~q?FdMTl(y-H;u+ngFFqkkIG18kb7@PbzC@19o#*FMH3~c`m;+wrWz)F3q|1Q;EC?f!h znSqg+g^k64hLy>P4S+Icpy4ny)Td$OU@>H2Wu#{_GT`_J%E*vY)YjfwA8@C+wZ5q_ zot=&8KR5mwoKrwff`^2Wmj1u4$XV$-ngA1cNTkheoLv9whLX9pv7)2?Uu!b3F)=f- zao0~&Ti z!1Ju^OiUac>_!Gm4Ep~Q-NDwx(M8|hSils}6wn4B&_CJ`QT$^{%Ktgq#mxAxo#+{v zX&4x37+94U*f|*)I2q`_(lc<<)05EsTVcAtQT-npbJP9**o6C^0sk!x0Q3HJ4M;CQ zwxavbboFnW{WatNhp&J8;{U@H0ON~UmG4{8=wnv0k$(%VqAN`RtVNkT-^Z#f=B!N1_P!2!~!ltJ4(oiKp%WW zM)?G1Uis}O2t)*u5Ef8!T{>w~kJlP-qHPWyX>*a`G5jKciUx)XVXChB;qzpnjM%~^ zv=m|peze^~-+lippZ86GZaK7iZMQ-o%TfXoWq3aOB09f6mbi3OW{c&5kV&NzL2aqr z0c=!Qu9vJI7;AIs-PlOR<8EU+3)$J?FAsbBtBIVRfoOcgJu(Ts3x(Oub(f2&F3U0` zWce2`l=G7(m&Ml84)5goj`dT_*zs()%fsGz)~J|so2Q|QFa11j&W)a)_qImDM$?)f zLk!9=qMhFnal%5gM)TG;Zw={?YjmpiMZ8as$mJTCC{c?)hJxG}38H*&%{~!l7t0T9 ze8yYya=l+@*I1G(_XSM?mLNhdPZx#*5m6bdCmLh7x}I;df7D%jo*lc|`g41kDq3Oe zPlqnt_nUE?3*U1u)ifHP%Xw!oR--~C$yiyrhhXh%{_+uAV_Kw?ZlR)z$5&xzW~^Lk}(PtbOQ4WmBhL^C};nH5W-;7P|1g*#n74Na6|)*StJ5 zE0}e)DUwZDbS?Ay;nxBkLB45osPe0grtd<}h}gwku&16JzC`plC^l&MXej4iRr6oN zyOq72tShL8Cu6V-olnzM9EUT0w_21X34jagDWNljAQ5`sOp1vZIXgE{OOfE5jkqvn zbNT&l@zl6a$6T3zbo|!bp}ajG8_nhIe@UV_SvT2Y>$$SL^2D@|duEThxH-6vdNL>9 z>LF-;Zhte!lkL%cNV1@;JbUWwa-Pb5vyqwTS-+~Y<$h#KKmq~Lm%AN}$LVhO-jzF% zs8jSY(EyStl$oCsqBF|nat%{NCn?b-XVnH%1V!KCft$0fJ_Lz}o|mEK;&9d^Z>+Nv z@iVA+@t0{#DJ?B6=RS#`SoLy_SL1Adi_o)yhtz%&Vbd;ClcA2?x5|$A{`FDO+SmCI zmyTVcm0EaBu(^Ztd749Of>%4Vw(a><-ObF6Rh181%=C>o?=9x<+6q51svDL?IE5o6 zm0&iXZjX<+3{|LZ(#+)cQMiAAV2I(e4PZD~+6KzBkDTyoYX!(4h!eZSQ7CLr*bNB5 zj6pV`Fr+QAYr}lMT^}D5kqXQ;_JZm^B8x+QlFpkvaO8}I?zil-_FS0d>Q5WL)@n6g zK5O)=j?#Z{qt|yf(6&M1$NfFh-@abNV-m{Jv5M`=mVWc9gW2fWB zY7OEu&AC%^j-532qF*Y^;ksyKiu2Yg~XuMmjuwwS2ctR$Q^2 zbI@g(IHh}YWA#372XlG9^$jZz`03RyU8EHRxjmqe3Cd#*RW-u&7@_NL!g#c9fd?9baYp zOYdy&Da*9wjp{#D~Z_a-zoR4HV%eXA9_0^gpB7+NvaBx_&1tc(SrH{!GgwyYyZNK3;j` zirtyxdDv`hNJU8h!|%fS7;JMjX>tOQ-(b6mXxsdH`ljhH9>uh&6Fa@UYTf`#-yVQr zgEr_@by5*E?Xi8^nC20iRT3KPt7DZ@fp~gmWVj@0VOTi(a_|&_#NCcLldV8zkM*vC z7rO)nRla6aFDe)U%AO*3Prv0Vn+?y62>huAQdL&wsYo5ST0(HD$zcC_W^Z5R5uWb9 zD(VPN9BDI;n^jQC$b_P-%z_i~3$e% z8rq@F78&n5eY0})&8n1Ndb^Y6`1gl==eI;ICLCwMGB)b30*-p&{P>qVBLPo3m`c^v zv!%CDC1G_3^(c4XSW!CApTYCNreI6E>8ZiCMX)KqeA8>Cr0@lW-l^vxzM+YHM|SVh z)m1lRJ!X-r7ac7;l#QkR5{{5;0Mo^RiAm0cDN^$~Kh69(SEmXy3yn$BQiKfZ(%N?9 zY{jH*PQx<9k}@#6v>$6u&5{^x46_o`)FJR z%|QECMSV|%rX{J(7m4nX?@G3ZieGZ|EgKh^So>R|1n(Xm9)SuCn1nlDC?+ZsL zYzx|{UaVpXc|EZ}{MhKf~ED=R88_;iq%6NVg3?Xad&_KQam7UMz>r?jVQ#u_*g*Bv1Wp?KQ2f zo{v|%RX(rBwyl@_LGYM@FvtFbf-oa^%N$l06l?01S)Nxz?rpRrv2$KmL*x}I#{in# z?C;;d0hrP8aoY|9K>FtiAtdcq*YEoJeyMHumxagdOHl`Z5Twc`&0dDGUWPPn+iug> zfd}sQivg?q;dx$nl8bFiG`#7XOA?$Lp;90j!P2f|+8QY8Fc9!d9^J?|uA*hb(ei!S zq6P26Mu4KC;$+~_?&Axf8=dY@1UF7~uTf+UJGiT1=`Uh=Sk$dyj(zUCE4&Ogu9c7X z=j-oLww~MDF?`W=m6K*afj`ie6lJ;tElKOW>3HTU+##qF>-uK;8zF~%KJ~E6nwyxi zsfo$kL(DrCi1+PbyS~0Y#}!X;xt2QO)OidAg-J}|@aHn~3OC}-*=mcf=VhNwV@p#L z1&Oix*x1-#3FoVH|GFv5>uxdY?WQQp`{_{Bj}&ow`WxTtjN&)I&FvI$%Gw$lIPJI< z+?J>9Ue6ZwOD88MYi%B+;GzlGX>B9aBsG%YC>;B9LHYxeu6K*3mi0@CUsbp0s&qSa zs^;77&C}jC3Ewv9d>)4hUk}8Vxe*OV9L9O>6RSLTXH|7y_kG^>$s};1`q92|qfEYZ zK@*nGAHP3ly{jkfa%S~Zf3CR%+8kb=H_!ap``OzY&5(vDFasAfWS5pjll#1+-X9n% zU<<1~cebG3_TT1F%AoU%dZ^e?nY=}%eH4K%#_3T8yW=OQP~eFm69dELAZbjUM#Z%0 z82v`~iYMLpvln#ToG80xy+-NM=`A3~u+PJD2gkKvX?P%!K%jE3N0vv2;&Ec=+}zyT zHs70}n;SC!LL@p{X7K^TDRCMG8O`uYIlJN-VaJufaU?(Xi&R6voy5w|`al>y!RWRwgG`Zh9;^5%0{=9Z?09{dEuTe2+cCu7oHhoA^KHo4k2)dL8;REJ#~Ehg`6A{1H-*-4e*|lleahTaP8sYq2+vKRKv7}$KA=| zU$0CSMmyM8TU!Hy#flMdxL$1BZFBJQdIOzsP*4z{X#XXL^U1>b+u3>h{h9|Rt(NQ4 zVG+RD^;75ZEWURjlunl$ZJnHMSAIK4NlCRhpK>~%sKt?e{rWYTRy(|`PlJnzY5Mq9 zMOF2Ee-nR2#P#A`+{U9N?%r%-sQ9#YwU`7o9-KWfGBlOE@Qc?4R4fdTiFy3fxA4Im zmQQut-=vhi9(R+!;qhHw`#e8hb(2v1rQ!J+Pgz+Rp_ikxllAT3WFD}#rKM$misH9S z3l>efj+d*EvqPqRzMmOwtgQ`HFr|z7jbX);W_av&*(zmVohvI^>PdgYtHZ~qZbP&& zLfj}gjR(ZOPpjR`4E(Oc%9^zQ`1bm|zrTNfvS?W0b@qE-Hj`T&U8HQ*{iJ4q_vNC; z6bK-4zQ-Ye_5>a$H6cJ!Wb1ewo$q+N6|YyiHRXF=ygi<0%jlB#;B>z!4y6WOG&FrH z+bU(s%F0F4*iK*r&e2eCM(PcKTd0STFS~=_i)1t0fwed@5J?KnpSB6#UDwmRsd_)+r7}x(Bk9cfBpJZ)poZOLD!yQte&}#GP8AeT|nn`I2cP>)$!)8 zo|IR6`0lkD^?c<_eCzCY+pvP^vYm?GKfcaLA*l?eqy!G04MrwcFJUl6c77YVRauhy zM_G0e8I72j*aqB*NA1OfRfH$Ay8Z-C&h-?=hm8<)L~Qcd3uv)&E?rOW1z zectbV-n-%HezJczFg7+m_j?^r-FL{!dc1JF(TDL*=BF|V>7gPSHMveT%>-&!;6(u8 z%f``cS(GTL%ydpVi8r;(^w5w5O4wmttPsj1P)VW*c-#Tb7ZiN9JO$hdM2BId+g2F4 z(rwH7>lsjt*I!20wOX7DO-V|3d+-OktAO5JY`CQW`lM(DnDYdk-9yg$cqUk$#z zycE{iSXrF_wj`JRNilr2>azYR7FjUK_#5xz&hBt>UKoCs%CAKr-3<>9x9QONYuEYc zx*ryBj{|HIg3*21!knL*Ykyun9~&8Yxz&BY%@GO_l}KgS10aFd`s0`j@+I9naJ*Io z5szIiY1i)qG!S6Z%sfB<1M3$T_=b*}ILudSkD5$tJa2{&wgX8;jks)hpZB5gSjDpYW`S2(4t8K^YT^JfUf!EC>+q&m9KuI9BfRZ@3Y}>JF z#hO04mu}m>chWSI_KRjH)%&wGium$CB~*|b8whc2W@2A`)Q zANPxmE}%y47bNQdCQX*j;Jkf0uFB%|dU^;me1ALVd)_%JawWxr7D6uSI;jS-^r^G1 z+is#%GHuCGwGQ0JTHWnGH*4oh^~Zo;Nl3hbI06c!`Al_+o4L8Ujm_B*dDhSL^ke6i z3|aEr{gIIoz%YO%y1NB4_n{H-nt&z+C~22>%eLQSWp&y;A0IBafqeV8G~bTll`#p{ zY|iD;wuWol`u*+2?cA$z*=Z~)CZ^+}8-8wy@cm)n`uchjIG0qP>ADrx6N04M>UtT) zwszp$QUi}kr}Glx^ANI74@5A4{FU`MQ z623E(dIO1u8z2-A4{KictBHw;55ob_NEjlQK;B`Hi1PyS%6dn~^r5f}eft&n`K|lh z5|Er^rKN!c%_TDp6vC?Va-gJ5VojeqPcv7{AL~AJW3KtUzXHT!3a(fwn+oj7T(j3% zohxmT+V$So|9VSxHbnCuUOh-dQ z1tD!o+h^iH)x#W=hUmZD5IB<3NLLEC_N+mJOGucNnd!Y5gqiD~Rd{$@)#1I>8`kj< z(eW_!&HJi{@ac)_cksh? z_kP{y{cjrwr1D6HqHkGiKrfKWWa|Aioz;I#M@!q^89M33qC?}|Hht*GnStEh+uNJm z@v^H^b$`}!uG8Vo;~s@lGk@In{`M>%8Ivd$l9^`Hh}+f!w9c0yz*DNKc~W7~d5g^b zvESU|!?jk-INw*=?t#0&Vt+L+EG%5}em(^p#(UX|CL*uZ=I&Hyr1xN|^X=DR;R+BL*EAI4AQ*doUTTf_q95$*K*b$Cg*LZ)d5HnR2Z!@N!u!bD4K7DG9 zI<`fd;y!v^MlWHLN$5?fEg;f?5f7lIp$>ldJnHWjRu*XqqzI0BDJTU}uLAi^el&#tCHyHbRF*S)!}>DB~GiY)`j9 zTXpKJs;Ww-)r3sB`F!5t1Eif=>MHG)JHU=SKyv_O!_xUX*W>S7 zm>uj6dm~)|&_HxyBed1j)KH*QPFD-U0I|FFywF`*n(}xsnFkpBeKN*-=Fkz?IMQi1 zqm$0F-q~RBH#Rq??YjxLEetZ5j&WafesIh50aDcT^t7^a-=>DT`XkVl68OAaHpSCl z1B`n+?sz)}l3`kA=G&M{yCQnu-yY@tw&QIc@TFq_V(gfQE_&b5k;O-P2;aZHTt1DC ziQ&7M5K^tu$w*KC8cuQsk%uTu;{I|u0PMYVeV&)sZCKMsUap4efGXHBe+)ce-E{T# zZr7>8H6&rq0=y2Sys_WFZsKO6D*)hu*Yzmd{pm91@&%BK*>IwOwm}NmguDZy&dq9t z8#=XMqaPbcp0j7dpPBpl%H-&`gpV?)dQBwW*1`DNEl*)CH#nD3^)@=ydmOy1!Z-^J ztQP7um*`1 z?H4Q8I6HYvgzg>kQ~j-TuRB|PQpt4hPxBqL!?h}9BKHRagg&09OZBQcZUwUzUfa0q z7i%4t{kZRUw(kwKwO3`juND>-N5DS1#eVnCefxbIa`&%sUXQDtA>?i(pNAemcC$gS zknz7y-?#cAfVBVHepfR8r?I+o%j)((3?ESJNv?iny`I$1>u8E;ZW%@}5Q@kH$|f1B zqxVfsO##H{c$?LI1&;BpofB_;t!lkG2P$L;B7RzWdW-k#6Cfft8{0h)JIIss?RWJ6 z!F4;{{x%*!?`=BvGc_fp$!@b7*yCjS{692Z_di?z|BcyDBe5E*h*45|uiCtAg4mQO zwQ6s*m6)|RB{gHTMr>-8*50#5t5)q&v+A4A58wO&_wl%|dvl)8=XsuU?!W7VM*>AM z{%*6$xYGE)K^)iVWM^eTUlru$UiUrfKG}$(3_2cZ_}fbv>VfN8xeU&Axc4XM z)6Lum^v3yQTB<^WVRJS7wH2b$A8uA7{CJn=*~nxgOUA zu8!OKEEZW9=h7a?5ZR~1l=jQBFNlo#GD!f~4jK~GnNc@I*FIx-EXH&m z&^zTVnkb~~Or45+y2X9r#?4309@@xTJ?9L^tHHqfs!;=i?GQUAccIZslv>Dv3EA}$ zs#ZuY5aP=V#X%JgpWeND_bKR)^UsBTuG)N!_aTW%iJyc9XPvRFp~(D>)jA=r_zF)~ zJR95yp^?_Ka){$$cEysvvh6PiKCez+uU1Goe6=G<`eV@loHurywOX^B^E)b7i*#CSUC0VmC_vw`G zz0*qzy!}eoM}KPmcL)QJLhJpUaYwJCUFSG|+-YOba9GlD(DA}l_4W02jyR*DpkFO_ zeA49&8HRtoVqsFG@!94IlL~+XkP^uaaO1CKE5^tBHKtzCZn&`~=jZ<<@yd;g!_U;? z){os4*#=fodZ8Z~z6&OSg9wf6n3&n9z`Z>y09I)#(?>*8wu}Xr8_&YgRFx`OB0)5> zg2Ax5ss`Sjoo&otTPpSF0(?hxUTWoA_&7$G-37Zs=2zzs$H(u_ zdoW7uUB9qMOAeoAyozgx{u3m)(4_wtABQ6fRm|eRxFz*Q=U1vL(k)6e1)gKkq7W0; zVsB=gIkN$e2B^>ir#@cGj*gVDye#Z$9yb(c;Q#3TWZ6pmKrYj2DHMN|YT&P8u(3$SuVU$vmBag!=!#lN=8amu)XKuQG#k4Uhp)P^ zp37m6btO9lf}Sch(OS|P4WvgBi_ca{xTevrT5rA9XJxp$1dGMcsmRzpq+rJL3E|M68Iv746iiQj1b1he^{vz}ugw~gAx+`4xqK_hS7g|6>o zdo9yAuxfU`zSxD4v(BchL{*Zy?8|xM6|*cN_#+QjFO$4-s3sXCRhQGNBk8s&a!|TZ z8SG%lEb^~=%9Uz*c({SEM3mE@Kg(?F+n=_*+`ZMpqrM-Jk<+?S(S8oV0dz5G{9PF7 z+F<#EcIFgSVGQa0&U9Kyp2%#HIFnLq?cJQ7%)l6bP5b-1?K3GDP{ChXqSXE6dD-v# z+vRJwSBberMQa`Y$A79#5;_wbQ9N)@xz>%}ot1?8G>@{gE{>LF+%B_>vtDKKQ0%+7 zjkq+A_2WGHmj|mY4Gq%r67RTjZ3$RoBy|$aEG=a{HhSvqhPbw$#K=uDb}+c{C2i`+ zUA;=>FDkE(z`nZbOg;z>s`hOT{CN{504Knsi9{vuQiKP%h-2OK5?CwtA;fF08EoXV z&nDqCi$1}Le+7*RlvSXFC@y8AHwzZtr*?q)r=M11r{Br6(>o=Fuq?}kywnjbgHEfy zCG4eZ?6_a@ZPEj)H*>~C;js*BzrR?xn46A$Y5Z+V@wk8Tv+uty-#?Om!oCuBCpZRT zanbbs)Rkl4=j@U!v4+{S5*Q_v8@drf8+j(^9}+rI*M(ynuFi+I-laG4{J$2!I@LSR zHQO6sQxhoRoJ{^6r4~Finxys~7m~<7dJUVM83hqY8vmBtz)h^FTzfdWJSVS!gNrM< zNcu2e84a`0v54<%46|NxI3!?}{^biwZ)2WbCHnz>*z6;(aSq>q*%7_FeX;g^l>OIc zZ2S%A>9-Q0*Zl!~7FVmpEB}S9Q4IG+VFpO~?+R^fq}bTN%JSy=ex_boYSuuA63U)J zBIm0lDi$Ap?fP0$#w@Y57sSk;S@J`~$6!6$M{J_wSj|+c zx)&E&lL^}z&cu;0FaG@!Gff*zO{8_Tr?c=~>qCaNu~vPa@uJkim7-|c$2%u>e>Me9t1`aG0r z@KRY}QKmU#9CP1q78rvUP!Xl95}hC~i;v;U@5)g54IRCaLo)ch-;yc5iT-FMpJsD4 z_9t$UOZZDHq=2%KsNCw&cGZSw)Q5Zg^pp6*bX#M}?inf97@y$Q`u7Kel0p}_KveYA zCTtL|Yh{?6aQeQE;<`N9RX)VBC*QBIHT*Uu{%S?+ubTc5mqHqthJ#~wL|Gzr5-{~< z_1!h&JE#ylY!IWs?*2oE>%>orax`b28p-f8|1+`Si!){3Blk@V9%ldvIv_o9?!i-h z1Zz^!v%L{>##9P53a}B$UE>2gHWvD5iF1>5fcm{8BhlwpFHfyZrxVyn!>aY!S~?ZG zEvw&DW)jwXRgm2Pf#^c3{P62o*z1yObTKin=BusKlm#@05ge|_ka~VD8H`@OqKwY> zcn+1&pMwg}aM+8g=tc@NaDZ$y$g}{2`8gP`!c5iU*Mu^^1h9-vel-8lW&rR^-M)0w zkUu)QjY25GiAYE$K~Ej^4?DtcU*lEDTiJlP2mmkwJ9QF4U0p(Y8%H0l{S(`#uS92Z zxXlfv)oJMFzWDsOW*P?DJEHn9zoI@2Q-PDPj;&$Fv7qFFxL`X3D+GTVZ-&J7OR1pw zMF=HxKi3Q6uOM=-+t}qwbq|ELSR6SecaX^FriWOAZGL&ZTqRZH6wg+8r=jLNB+EZqd9I&GPLVS{b=;Si$##3 z>l4>^-Y}}0?}qsusy;6&R^rdfHQG~WNs)o7EpW;5MB_QMl1+Lj2_@*#F8gopYSXSAk1UR1c_ zB<@HkZt5_AqW^S@j0YGmm>j>!(*o==asV)Zi#9n(hm11mb1@7y5CeKLm_NAOFr00i zmC!)Ao#QrZy~cK=0^omp9J zs-)CICimD``5PsV5^C)^?hffCuN5{K7yX06@d4}uH~!&DcT80hNE-_*9_4uQ z!w8qd1_Z{%L4%Y>!HUcm0fMj83`TtdhA;KkXSf|FfmT#g;kbl8WE?#SQ6wtCfF$|q zS0av%2E~deW1JKJ#xZfXhoGktfia678Lw1SyMi(Sq+F4_=s~Xv0_F#54R3N%)JbT> z$O3sHmj_G*(bfaXD8s85>u3p78SDzgI+9irsVwoS!JJC<2ae*WQSF#X4y}`OA`pwO z3`a|}G1aq-%T=00%rl6IDrA1I^2ICFqr{5<(?pODbv?Z05)q8xhT*X>L}{PaN5Wh= z<13waW3{g#7N1B)$zOcUcac36e@Y`m9!RZyd=Q!a?O|yZv%6R=RwHe30N-Y9pH`Jb zv7ogW!>ZmlN__i(9YjI&kQPyT6{dPFMW}#C0pNY+;6k;7KyhCnN=Owj0*_Te z!5B^qKV_4o1jH{ax+Sbq*EZnGIdiLj^90)8USh%1b^2Z zKS;pl1loMO=TDaDH?FuvLr8Ag?=Ub@1E3lR-sv)Y!#h@ETh_|zdCo-q6Y^K0XC|~j z0!Gz9`$As_K+nw@Kpu|@pZ+i~=P!1CD5HQ6f)l0!hhZU`lre+*2@N3;~#Wz zu*Tm21{C0UqNSq&?3MIMLbE%EvpbXoF=a5h=nZA~t0y z@5R;x2M4CDp~5mUD@RQvY&s$b$|9&}^p}v6(-M08&9Vq$rQM47rx6U|F<%pjSzS0v zK(k&p$+zTHY2k1iRec2xR()z&(uaBB_{F6Zw-hjdAf^&cNZ_y-+n!^K^wK64B(V}Stqo~Y1pv;z&hjVw{PFp*4AOo`QUJ{LvlGC7(X=t)PF~!0MxAi&4AYcz*~&QVIxLPOc=ojbOOji8xyAYa0A#Dz*cs+{sN5O~Jm5E-1F+>Vj13h%a*K+Mhj4kMZ zKxNTUl#A<$MUt9J4T9)?uT0B+OX;Lvn2tTjg+^N+F@gbvpPqiT`|mB6)6e7G0t+*< zsbY<^7g!Dr)5!auKdz5{4=+c0KURpCEF*#R6Sy$r8AambgVW6oV#0eL2F3N()z?O= zCuS^;>XYkWxVV?mqfrkr#qkQI5k>@&QN_hjkkTjVLVQ+Yq7S6w*L}X=uMjR_;uP{H z^9~yE+GW)$N}|guk&X(i(B^qB%U(HDHe>@__B`o;fPi)Iy~mF}z3FJ6D%vADnh?gO zJ~=F9l2sPJ(HMInBI0=uVpedS-5+nmVw)qUlm7N9&eEmX5}kPCE+Z- zbXZMY9Tk_h2CoMdf(RP_;zf%2qt%H4*PD2Vb2w=Bzqx1QPp05u^7Pc41Rj}h+mW@# zD>%LmNB0()P;sD?`v&xpU_U^Y%A0|cC~uPIA(Xz(|tX%M#w3pmC}4v^EKmVzpk@z9N~ zbiv7j2fw-48SqY_<7~+4B`VtEF7Nus6~gs82kOL+6CpvO-`G)KAPCblx(? zDj?TCelBsBmKMLY5AfkQvV0J@bNX&AnC10z3*^x;!?(*cEl?@|0$?sSSI(_h0~pPv zaK*86D`lDl(lfyXMJ#gGx^CkPD;&zpP3Uk`YDaTxr>u;GMVp}L_uC@l$SJ}xTf{>< z?Yz>#yv1A&jq<@K`(`m9J|iJ&vz(?v^o(nBjgYz}-O=XT39GK4+ToFi7i4lMBU(g{ z)DnKJvJsY4n~UELR1^8Mrv*%C8z!=}%0x-})a7tGfm@RmqyUVj;*};J|IY;+i4Wx< zDdmCaPNko%#XV8Uhp5@rf7qZ(HLfX+cB;f-w*&EOB1?i#08K6#7 zyrd#oZwHK!NZItmOINasMq^-vGBDF$6VgffBhmKtzb^z-g-cPQU)A&NCY3X)iKmDw zF^{8DYBZ9*`w2*B7#Pa|LG@yg*R-$?81?vQ4rjynLZ&GnjjMfStd2vBN2Wy&|NPzv zDR?$oV9!JKCrApKGY}7}yxe$Cg6V-j6`C)O1`PzeONtawrG81G8c zpO^pV*|d41rz6w2m2Z|R{6f= z^a*uyyIw})k-aLxPni-IhS7Poe6$ zG>#-(FgUTno6cRS<4wf2J*}@lCt*^8zEfC75y+Rmm$e~ ztDsV_SiN#MEhkq#DsYqS_+M3_i)){Z| z^YUuuL?#sgXNA{(AZ40P?{Oj$yL3ZwE#vuuM*@#;rpTbEVeJ=_4E-^9lSCEJc~j05 zkd`$MhN0itsdGv+1~Xh+R})10nUJsC63uIn4kEecgr+!9)T8KwlP_5Qtq^q{2*EPTV1p zL=pYnIIAqWc%EaP)FsP)ps9JD7{JvqAFmFlVeK_{si}`kVk8C=+uaWJ#il@3J_N)A zFwkGa!!i={&S1}PC?$D*0wdMem61>04^u4SNkWMngnp_Q#?N5pYnY$;ya<}`u|rQC z{-N7`v|Y#Nm$i&&L8_PxkB$yp&1Puog9xE>j{VS=_8jGYL@N2WmQ>*x5ViEf6)@bCw+-%snqOR zy-Ic~abZfx2*TMa(rCbdjX?@4C)K!MK%wHa^R>(=31Rie&GKkqlJ*+O& z4XMfH5OYafV@i+#U4|fxNu6tm@LAP_!(oxuh3N7>(c}mOwzHi9IISk)GW#kk`K^v_ za#Aexd1uh7uNPB6!HNJ_$rh~;-7l;^-qy+8Nr^ygcNJl%PCo`1m73QVArt9+#{c7jTt8~G?f>#q zH34Jr87H&z@bwjop43}Wbj6w{1rZ1i(kivASXo$9W76VW{sh$;CzM&lsVkwVB?DL@ zB~7*hANyb8*7T59)VAY+EbmgW%}cIyfpBBmNVO^eFziw-})xDezs}1i8YQPj!;c1b!z|kQBtO*k2n<)k%Z<<=On53WK~5- z9}^m>cAbrDfK&^p)lM)x#U^6GT> z`S@!2YYXou-kwPf5t7G@g4pg=*}3C!BHV z7#lD55-@H=&v4i`6w|1%0w0tpR4S;uqNLb}Imuzx1SwSMm8R(**=WCX1e#@ndKk2{ z#|Cq3)3fV%t1-Vb1q!{dWQHiz*x8mTPIvnx+meKm)VgY5klEv;W3?r@F#};bnyvtN z!(am*Ia;nVh=UkJ%pKo=ft`lBy1F8fP&F%@&J~OG%PTiDOkax)&|MrIO%$@sM3|4% zS$F+XRwZ-{|8ej{%|^i}Q}{SjHFwV0Y*|Hcipa3qUWJKs&6I6*nL~pL0PL-H&MQaZ z%t8#J=RwbClOEAbwOTls%{z*=uhvytmevamb5*JX2e>p`w7G6tt2=i_8qD0$O7Nd3 zNingxqoye$8egcr2R@DRCA1CIGy-`K=yH=N>Tphv=54GWFjg3-Hms-|jwge*ceYD6 zyLcfN+$^*RY&&MWyOe%E&Q61+^{|esv75x#r(j@mASk2V4|C4Q0NE5ED*Pd#qZ5ct zzUO_n-OJJ^WlU% zOTj+Yn_SR;FUY^yB}gNFY4m)wZ@EviUYkBw`sJS>`1Xj46&oWV0*F^rzd2T}L-nZd z$278H=1}Gw*K5+(3YD*E{t$$vw-}ZFeX-WiFWl`9P$t z0#U)B2~BinUFWRF7K|aZAggfnxjp?avyo*{)G@Z>@H4jlE7#j6v_w9(PJXuT-V;79 z&h}1im74iq`X8{+=NEDHe16mR`OTZHw#*CU6D?|5|HI$$7Wkw#H02d88ptRCdj5@dNy@g{qo#7WbaWYchIWac?V-Z zd?_j2Kqar%VXwdMo6=;819|_T)WWL|a}A|SHE+c%sFdL6L4ilGm((sdbs@-Y-myiG z|5*V;<6fkul$*UE#Yudoo@YM_lsQIW>a)l$qoToNJk$x%8($H3!dqhwjoc&9iKP1U zbn3uVf0-@_g+r~X0*jJard+@aQIbE(IEt)CY9c0`1FuI`pn+GThBmbUbEDx`93!RC zF#Se$qES>N>obD5-pt)+g*jFK!@|%LuI1|L5}zt;&(Fvwx*X~qT@JN{OITdh%Cv85 zZ!j><3>QvS8Ipv7*oB~|V(KRhFg{wWakc#G-PF<|qR$&$l)W+}YgPXGL{#<)gy+3O zQ6O887(6Sp8itQU-}$^Y&NINQ3pSvs4I_Ol zb9nJ<*<6&?3ZWXNjbo{&$27d!+?t33M8YlNvn zfA_y9WR|9$d3oK4gksH@uODrdRq%hb{lZ!Xvt;OG&*PH*JUP!^*46RXRFY!SBEh;G z^(m|dPnw=_v)Vfa+1y9jZQ2o2lab*mlfCW_t!yLS#Rg|S1rd_adLogXQ;ww?S&yuc z+OA4*RluF<&WCt>jN(;7_AQrtZF+SDpU{~mAXWIeO)A5v*uz}78VSCAPf^9R;esa* z34rkgD5X%vigM!9su`myDsr4-+{3oLS;DD8dOvF7EfZBK5Sa%%A}?Fh;6yCnN|Y&| z1#I-{OK0D@O=+dmf&ToabvU*XyZrihdfIEtvht&AY>G>oA|Ljb3K3iU?mPfO#;u4O zA|}wK0|QQ3X6f7n#dS?4g)vQ8O)}4HMx8Z~)GpM@gIpwd=h9uQ=7AE&p=+!Syo=&Pw6_h1!@RQk!96cJ9JjOw=uX=!feQk)S@Ff-O3aE*h2 zNKG>M-Nh|Nna(87&>rLW?hR`P8q>UOM`v67>r`6&*gr-SHXl&~;n6D793rXc(er!x zFNpxD4S>i7Sx|M|FlV!STSCYFcQuEW(jjr&*YidbTi>m3?)**GR7IDE&uB>*XYO~C z1C&qL&b1SxxzJ)VrJfL+3Uxb>R4y7aAE<~e+5hUfaJd#+Ful2Hhg&cW7^QxV1w~R? z>8Ya)5MFbZWtxhtk3vx0rtry){?=7F7D`@^jwJ=Kk%6c(kz+Zbqh6JRzLLmsfqyp} zgh^&+RqM0+D?{gw6=FZah2qV784WjQz9U!60=oiYp{YE>DAYO0SqtCwy)cwj6j5?L ztMYl)XfE(Sb+#)IJ9y&Es9OD%6O#xQ6m?lrhyuTvkENShC)f(0m4?V zy3_&sE+GL|-#*Lj3>?&Lp6yG)Pkchcwxu`Y;*bCx^4U|Kj)c-pV**r5y`$ex2lfQ?x? zU!c!jJC|KgI0z4)ojs_z=S_VE)iy&pDWcjLHu7%42P4ve4zuQmUU7!5RV_D?G z?hhqmwP2*$A6Ey2&N<4VW!nXsIx)1B_&fkS$!$5{%BsNH{eIY`1jwmwLP;yLY5y4Y zT0?#LS(wz{fA{|$AQzJ0zZwcA0x_Hxw8}&e4w$64gjt2ScTpXXs%z;f{uxe_?;A8e zUw>cR9j+eA?NBM@WZM@m*jtx6&+NNob~C1Y+wu`c{H=a|L{hbnzQoJPd#tFPEX(lv z`h4@yAvRnOXH#4IMvbIRHMg)=^uFY-Je#^Lb~bn_B314n;}{5qwp#K#fI2CA6V&;0 z0d_#40jO7-WtRPt>tIK|1u}1kNI{jfv0}rhES`r|w-I0G|Fr-Rb_S71l5k5aYITze zN4}AU#7zgLp@K%Enf?D53NKNP&im#@Z)Dpym^#W|VLkF3`LN;w)!yT=tO$c~1WcIR zip4I`im-oV%fNu2XRZJ!6z$eXKjbNhg{2wlj-au~TR#v%B*uDT=)&q%vb+k^kKZR` z2YFI|#@226TtT7x{`~IL$FUucO4SdX`}0Pgm4}KNK3+T0*XizXzP~-&qdhA1DAN7R zTx1OVeDy^U^PTJW$$!OCJLb*_{6Zo!!~}l2rOoYe*^6ymgldTA1#_5JX2b`b-j=Ec zUu_mInMGQ>rFMMeo^QO2_D49qEWp0m z@^+RMp$p$yMUzFXaNbamP>ZZak|=xA)NnZyC(d53wyqRc;QMOq z?+85Nf`~r`Y4MDx-U763@OKE#!Il8qliSHvSN98vm=|-u(gZ4Id?W?ZYw)2bBcED> zy~B>l%8Ugi<(OGmis;7}DYpM(P)cmtn`o}#n3&n>tbtuz9Ja2w_MZD##&oaX;BwWW zV|~i6hA|ZOE-c{Y-(XkQ+m`p=gNo$uPxd;FLl;+Fv3*|SBeqFnz3hDs$vo8qi*2Cz z;qP9?;bRc6N5_g)`G`*uxHUui!YUE2g42xQwkJDFDyL!p#)eEj1!U%V!@(C!mM?xL zTk1&deEWQKck4g2xp#fNhcF9E_2u><5Lqzrt}FYQ^$9uPDI(Zt6)h0O< zBG0QO{7NEnaPd1=Su98yh>y((8f(wW)3VM|)j_Vm63_P=b29LkS;{Ubod@;d{A;PZ zuVsT?s7*UO3-*k~IP&D?6kbML#glc4lR>CkI3z@dAaP51?%nD?MfVa`L3dx1kbN%0oG09TV8(r?!t1hhCf9!)Fme1?H zRB}F!K;?C8VXfQetLd#VqVNCgOi<<@N>X&uql^&t$4fYQ_TPZ}?W6CfanIh=CES5J z>KJd%f*N%H9o}CoQ0~OKvwQ+)ru|kZR5npHG+)S=r_XvQ-PirzK`>MNGaUh8?6~(i z1i}o?$0z+fxxV_1=n;VT!_4LS-QKAOKH*MyO0Lqn>ITULl_iFigiy017yj&e=rmSp8`7&`(14FiM}H?*4=$f~%RYN1Yau+eo2sBd z)(2X!1XWV5$vjW^nK7LQ|Lzv%EpmVsVlA4#&Zr<0t3?FXy?3XSVd@jvML_RoAwhLt z0o(x&I|7D96SO2p>xsCe!|V}zX}#n?owyo2;oW~1{{r%KheRU3f4X0JP7McIBfN&$ zhzVt%kB@Y!v8=DIWpd(NL16mWda*&OAKwE;rJiTH3*ri-(l6w3*Z$3JPQ^&+E4*J$ zX2!9#9us&u%X2pc2AVw7wm`NRkljw#qfBFg)eT{TY8WblMzyb_gKul* zH>RS$WC!ICXysBB4^lcw?xK_nI1b?volEGKvd8AHArNNWp>t)M1%u@i?RMJ z-FXXvMf0E^t<3RR2Dm?DECnVFU&56LnhFLJWG>T42Wm{)h}=!nLN4z=w{#DmEtISP z0A74fI@qj&k+U-)wU+gDS8+S7PLw8(eO|e*m3JMgb&1RY$D9m$zFy+Ww@$ZMh|{an zCv~e^CGIT3SxmCcwfN>nZ%WpW{c2wssASoDChHA(XD%a2_^4NX?;g5dU>2}H8@?nc z-rXpF7mJF}*940}T}$f9+r?R)2bVX8KcZe=UG=rP#0k$A5-z^KR`D4+6Lq_(*s0og zgxpMC9z>zw|K)d_{=1_<|NE}@>8+LQyJX)wj_^5IC{#N^_aOuj3>kDYqrxXVe*ZS# zlXBR}+J%2@Xw0EMS?A=+r@eq5woK+|dy;FU9eJrzV8HLIW}r8fU`OPz7Ynh|cA=_L zcO*S);OF#w!Sdr&m@gqx5hzGjavY26bxQg(4D0r8Sy+;@e{akAP2KBrJuxY{)7ARMH*BX2|*Wt-19V4qJ z#iyNt_IBcel zbq2Sang0AG`OsXjnnRNmsGw3dySaxNa6dYZwYAwc*V3$-Z74@$fM0$t)l+`+4_W`i z`2+ys$qt0#x$+W=?&PLU7I&LI)8Z$d@1v^qK{EY^wAPx35$n@x(#-`02eYST`J}?i zNJS(T2*K=1K)lo}&ZPFsdS9I^SgLBwnM`anR60hkQuN2a2jL%F56KNS`7p=Y< z&Xmf|<@VsektYp!&Fyr;N=T&N>oPK|k+XLVyR=(f*SpHHpf`@@-V2(wzoCj4&5oV# zb9YZri?WFeInidBqylLLdznRp2g@VBN4DF|BsBS4G{<lTha2b5WG}Kkm zd5-&ryd;*|*$6@5fy?Hzub9Bpf5~!GRfy%k^M8DEy(umXuv$yx> z0>&lEt$$?GUPd`-RD53i-n!o&`geO}NN#%NwxgS+-EDKS%swP2)Z8l&ixoL(FBSWM z(5zLR%CLoOt{xsrx)~vUI>T7;@a<+@h6hvVV@v$U^OrXFJj}MUt`2W^3zQwJ!vvsj zhX`2D^FzNSw@66vdaRwe(>CxC~8-kr9Dqf;A<*-Psu)D<8@o5 zV@K`r@iBk)NPFF?q>qrBUx($0s1X-ZaEUXs;eKP1kCTVQ zY6Epf8bsy3iW#m=7dSxE45c5xb+TGwlZg%Ii=B+D;gekDJ(JoIvv-haaG@K9*wups@Fq=+FXlihMje$5 z?A%N)^j1jvF+;UIIZ7uqsJ5-x2YK%=r}qd!TaBn)ol|}k>*N@!3*2y*6 z0ne!-M%}yC((uQ?Znz>j`Ohtu6gE^Ik2Hr8JBM;Dg1mKW8bMowG1nY>IR80Z#elE2 z`fuVUaMFC8StQq-pL1u{RiZX9J*NW~w^X;N+PLXihaH440x(jm(nm}(NV=+#hNgAD z+d47FF`O?%Hh(Ge?^O80cti)oNsh&6Pu!QhhRPKG{>l6j@q=N>rf=Q34gLawLyyL% z^(y6*RYYHxJO<#4rf&--vk?kv?Jvg|r~WFCFB<2w+vrO8{)FZ0+vksQp&$tWkBK!I zDDjYrtZR#lF4pk?Da|#NmryWn$P|ms=%3l_PhXLJb-%rS?-1rMKPaFQsqxEfH4FEa zAFAUU8-;%a{=MlBsr}>EarJ#=@@=fN*K^)e7L0no&&Xg;qeUo?p) z^!NAXZ73@FuYvIpA#RF=@tzg@4lE=Wo|Rf(J&Zh4J^eZ{Jk{ zI&7ncaOj8j%H4L-0cLsYmaQFJ^0gmztsMG|DW-@JvW)L&s4{n~4o+yn35~4E&4{wj znzk)X;6e+%H!1f=pYCm2-(RRMt-8y1=&71WOvZi)J3Vy|bE3HO18gIHZ+%}(Uof-# zEdTcim(U@w-e!4ne=`vlEXm}45eyELlVwM)Q;yEQprKO@@nka62eaU_@sA(@I-)|2 zPPtlHPumjp=bU-UrOBc$|1JMTh-If4D5*dJ1Lm3wmzBmYwnzob1?=pwcD^kQ7zth9 zHFo{NnQbm25?5-pZLG6iWFmJZ-soesv-nI_E(^T|Ph3h&;A_zMX5{gt18B5FmIa@B}@VH|w z&>cM@8v)&NK-U0!l}|K>`B=?Dd~Wmiq~4bOSiqqQ*5QN zKKm^R=cTu^wer3YsPjODp}SYR@GRWaB_uRd`d!vy8>D}dQvP*NC28Wv)xrI-hs%u@ z(g^bYjn`+X3bf$KnLte0k>ASZ>EigFlV*$i5&7Qfc?OoQ>3j3-^ZS`F)X#UH?!I63 zKQi|QQ1FvkQAVqZE&Toa`d5rKrWLfq3H~kVCXl^%I+9*_F?H-8jJ)}KLUS9+G_-n1 zp>K75<`am6@rCHu&rV%x^T)V8ieS~~95In-T$i91qd!(q;kH}oJ<>3K*0g@i^0=so zvI@AiddVW+eH?qbcX}#X7!0o($03!OUh|?o?DBy1U?8Sdq(2$>076sCUNG9jd4Dq9}W0iwx+# z-r3dFW#^?+RfWZQC`Ywuo%BI|-(n%JZHCxd&G+*R#+PJXA`Em#8gk4ReD4HVl^TVc zaOr>TrC2lf#Z>Q~vJE0tL2U(w<7?N4ZV!M?I@*hu{n-5#hKMK9J9uAcoV9>02P6gr zTh1$QsJfv)L)Si3Iv_Po#JRW9u*2OfXv$UuPs8a)r7=ywZmzq|0_vNs6_+6LL14j&+AsVS@)X#!m>zq~_SbLpI?dRZ6>&N*! zZh2f+_r6#ER79Q#<8ultC~W(wVyiP%j9hr+?MwCJQmla!4tc-R4BWzGaB`JgbDpw0 zed0;Sn(=y!o5ae9&*^weim$Stq@P^0L(Juxuhm-s;zdz~mJ6aw4nT<(3{0Z z900GOCT27gqOl%;=@^efSG#5=u;k*)LXyZp47nKQd_w8JY&!N!eMklpz|hi`st zqcb%E$woGn=IK8<(i*V(U+?lgA;dec*D3o2ulQwIDBiI=M!@jrys*cjD|F!1^{#vY z?_0U#)qpU6Z^_4>?k{35dX>XHQMg$RlV|80x6P%16}sLFI2TInR~RjM8zX7OKiXL{ zvU$c!eA|`KoBH3*>sqm^MIiH8TD$_;&w}Hd@$~;bI>`<3Qz`NxdQhN5K$`|Xl*`Nt z1;ZY0{t7Q{b8YSPdA<6YwgdsLu1&C3ohVn9v)$kWMCmCT}jTX;{culAq~}8i(|zh|N~a z8DP{`05=dO5%Ev~xD3*3+}qrlM=sjjCGQcp*p1)-e@ss@&cl=8#Y|@C>~z2FdAio6 z-7)*~MEp;s=6Kt82_uA7mw}5a<6?9D8!gR+TZ{Z)yu9~N7xe@YXH z^T=jLfO&PX~wHSq>iVp4Qvht;6cJ zE!=4I43!7QTEUqMVRKjbACwruF7E}tyBsyCQv9(u=6e-4pDe!cQK)ulr6w3LpUQy}bbMOd?CD9*2rc}eb8$bTC;bL}DhSZ_#$ z(CXN&xkK{YWq91MiYQAg`r|6@v#iC#*FOJF&v0L9Dio&TcTp@A6&R5gnap3|lgWbd zl)bmuD$z4^^)F zpt`vK@R503ZkJ5q#J)Wn$A6*HWA-`+yZtK?WgOJI9pk}zsL!NA3l5$zF_XhvYa_po z!=vr;DbaG@BHX0gxq8T8^-YE;HaV9FgR%@H(RpYr7`2VB!9xz8D;-6UXTg{0c)73IbSm~ESjP~UF zo1qM!&Sw(bWjfuKYq-j zH3!3v6}-n!QON&#+zT)UtCy@;o zm$SHp!tU+(tV&r|DEKRni1+$`Uf;&E-$fmeYgZeA%b#+*%W2$epR0a5i!G2ib+BRc0+OFb1nPX01+p98@+m^$ zq=yvBAJF|ddDT_3FzCRyOS|$?%vnR{?}m2%=;Gw-YY)=ix0}126IB62LNTF`c7Eff zqs!n&KN`4b2@GSkAH!dKbtdV)%Rc_M=fD1U`}y6?-O$^x%R_ew0=HwgkoD^$RCu|8 z^H{c){CRwh!2){i0f!(DVX=*iIdY(2K5$H;MS^XR_@iDE=8I(Fad)W1*v#wpfQgY# z$6A;H24>1rHX9jTg2Q~bAyb6z3h@_ZOrl>i@oN^3vKIVMLDLKS@&ZESfH^Q6`6(NV^)P^}E zu{12rA%ySibN#O0b?q;I?7Fr+JshERQS#t2aqAY~4kh#L=PlT)J;;F11k?3su+*wL;pFzS@6uA^87Z{#0RB z%ObiL6=Sf{dyBnELTP%fIa4oEd|=b#F&HP>40L z)$8w8LTQT~RK}A0sw;JQbXU8_Od3~Ap*gpFY0-aoSlps0h5VQF+yyJq^z~<2cG*vN zO1e3}R9dsECl`4~?(f-cK;*TrmYC+vhEZlHw#H*Ws*JeD7*)2CgR3cl$C;;tr}43; zf5}VH$ICZs0R}-%eGl#ANWZ{#HonXg*!N*c3U;*0$su z+PUCb=n19JgF-{8-M#Iz7bh}b1F-zjgWC0=f{ejHm6sWvq60m5L0k;+Vq;L(Gd7ki z49Sbtp3*g}8zMpeLMoWtsrBrpA8f~d-RJv_Iu|NvgUS?2bJD;1uaAGi_qFhOe% zPeeU7^@(X>=fLM?H&&}97m|P+HUwYJY`WbIL?yk3)l>3~4l(5ASNnztKP->J#90roTj^1|kN3>X;iaGj!m5 z^JYhuS>9;bmenoxK2b~Qq9hp?tR48Na+_&$q~GV%VI7jT)}3~#NMiMch1i?HkSzW) zY5F|6J6h9#NYRYruD&IgmC%bq*@p>1n_^@+W`0N``=qlvPu93z@0u(1k9k5rtOr?N~rD zUFZ+KC;Ar$e3w1j9Pi^Z<%u#DAzhbS&xSN9cR@C*EEAO(0HiY2>jAbLkqoX4K)ocJb|>d0|{0d_k>CwEYzy z^)C+Hr@vOtscQyL(YqzD{`?h98Hbm2OKvU<3-hYxJ-{siS8zb7$>|XO5K(tzc zMNV@rI4FGtTWlWVM8u-m9*S1(rwmElAm%mDiGxaVDft(qB=K zin86bexcXDi}#3g6Hl~nN?t_DvveqQqC-J*Z=ZPE+#t?;5rG&=VOnJU(&UxOGcR+E zO`&tofOYC0|5;gYmZFcHh=*KJyfylW;8Ai3uEX8;>v zYJRuGCZOC9wqGRZUqabi`+C2|mQYzyg#Rj@GrOY$?E|DepFi&;N6+l=Jm=yY_tEZ&IbD2rItYZ-HA=C~7)6K^Yd&cm z`)yynLXU10V-)}CEQ_}#48Hxny&~JSpQom*V~kJ?Wa)W)F{eh^80+LD?r9jyY*e!F z?cIK!I-MU#Dk9w?A6IHe?SDD_9bp~x^Cz{w$8y3JHT!yP7SFDgB`Qsazf`9b_PG`2 z6%My85aDcWKM?U3b=^l#kWF$r2s2)_E14M9YyIGs6#%ab>L5tU7>`2LztQ~Wyx<`< z3+r4!t1?Ia=ivN9W-m53z>S93szF8O1f|w^GVyM;Xh7U$Edr(QH5UR2gEYIg`^MTF zp{>5pIZcx(Q$hEQ;aqzEp}Q##k-Hxjyh3U|4n4pN>oO-8ag>kAetUjn4c%1D9dYrD zqIj}C2b9~4OsuW8tz9-(zO?O!wS?j;&^l5BZL_{hpIQ$PE=O?nZNvd{62JniJbs_i zr9NqnxwkuZ#c*e`D1L_R%8J{wXf3wBaa>aMw1;&;8*Pwyb^OfIpWjoOwZD|c`rM?T zc7#icf*mJYdqfQi+JShdi1AEpg19BTx}68=I(e2WRsQfB%jfpov_44$?2e*^1bz*T zsN>_hG9{N0`wFgJEDKr_3Vp}a;89YWa&3;bKPsv^xMA*MO>wpJtj6##KN-xptwB1- zxLnHBsbBctn{uzBbe4`wC-AAiqfe|YL4bMW+vRFIoG~yx+tmo*-#125nkzt82SoRn z81SFfA>C0lU6!aNE;Y!n4lB>wB_=6B5fOo^B^4f?Ejh-MR^FXV%Jli{(>YH6!l%qt za3n8C>aD}oN>^#XRrPUvzb0Jus&*7&a3a)B^Ganj%hB=482J`ULxobt%0W=Hme9<* zP#hk)3J1VWZabg6V%G4e$5>N^|AteFzS53!+QNEJ_}>7zDgLOm?wTC<3mpT74-vGe zDvZoj;Uog45PP;>tN1A;>wOsOvE0U9gyLsq`ML4L%E70?^W^%)oM!ZEPMUV)UwZGq zU4YHzT#D+fxQ_f#l{d^+Im>}}WLhtBr{fXwz_V3?+kA-`0R!$v}i+iszYTnj%AT*i( zJY3e4hJ?q&j6_kcafXJf86WYZvN1&ZK^G3mBAU=JN|$4c(tbu8a7>XG_@Mb^%C#^M zLBf#J!h4zrq}^^nylWelHf@fPb{D}N;CvSI4VxM22cv!D}zrx+V>C?Nkb;wT=TMafy{Q11`M>g-f-TU8T{uR~h zm+ziqw5nx%ve)yn-;0fvq}Koomch}#7Y7RI^NyhzB$coxpUPo2KW_OFg8i4ft7P)l zYdIZCuess=PD;#+)Ycnhzj2?LrXf`ySs2*Yz!MsFH|(IEq*`~ud*v-R!brg>-@0y4 zJ}ZkW6O&FJnPnON^oie5GIiFTUzlf%e}S?^cmbCm0;X341r-L1Hm=xGyJXDlF+@~j zwYqqyw~c|@C8swkMxNcjvMuHc>q~Dr{pb-+F3l9RJy@tv%R{8T04Y>eOYo=gfN&7X z)Xw(GIm-M&P>4*!wGfuHAsv0mLfBdSLdf%7WiNdZS#~e#r~n6d)7s z4Xc4m@9b7cCy=cT7%ZZ~{x*&VW_Jk8r!O2Yj0yK1XAN~#;)Gkto6)_Q6IU|MH5{&O ztsShl|6pc&eKqsu%vw*((eiP9^f8b={qIZfY2V8Jp!Z;BDUbaFy`Rs^bdLWpxwUaZfe>s04)noA&jd(u(z`)XlrSv6}>B5lUzLN5&R$9EtENU zJk}Gq(1DAsf{Zi*&|#oW8lyg_GggDa^IZDqGmk=JQ>)|M=`W>5I(lbYs}wG#lgAon z-+%3@hGXtTm0Ln2@r-60-wOl360wk2qY^=u3>F7C>XL;0u4`alwYSmzrM(<|ewra3 zVQ+@hHF^-S7pK7?9s9kgfG;l13`Xw|U{nqNBy*Brq_j*`CXKTdpq*p9eYqdW8+i8A zChd5B?UrqeqFqr`r_?vG#pV-lTA*e-fslOp)yMbkpL4CENzIUK)Fg*07Xx4iAO(A> zd}%^W&RAlIwya!%K^wN%_A8?7;-CbJocm){)9_qt{X&OZLCbSSK+{gzwb0 z`UzYeHQ7imxnGwHI4UhNYq^ZxvD0OHPW&R8^3bP$k50FLuhR`(r+k@5)Ne4ijZUph z-C<=G9=O^?MRV@&`!YBp@|p>G^ndM|dq4`X&)7z?u-1Z)@7~d|Y6e|1v#+fJf4P$V ziM0ztwno5t#wRqiwe^GA)w3Ym+_0YeAh(1Sp9uBW`>n0)OJjsMm2)>+Bvx`(nZTW@ z9S>^Z*1^hLjQRmX?vg+68Kh`}o}cHIKP28Ox2XHP8?4CGSP`R-oXz)#8uc zY>U3+gL_26ZhE= zd40;fPb<=ZiR5v>^ofF#f~%El5ij)s2h7kQKj1gGGk0Fu zp~3@E{_~R^Iut*5V0-(6tkz;L07^Bqi@#)MCTFuMk7akgO&vPWjM{z4Noc2Umm>^N zadGXz4(fN)*fQuHsh)ZYuGoja3NJDyff4*~e!R8NWl3;n#_)-U5SU6CSd>NtRVkj* zZjx0NHFW*7nm@mPKWo2_CpK5$Udj(-3WowAmer}6TAH}(o}l=?<72_=XiB?*(_Axe z*Tri6sFCXpWio%qKjEkan(}e8u7$$F!fR^15ur=_3ktHErJYirM+Y3ARCp8$oE?5g zJ;KF3g<-W4766y_f~Kq;X<=bWbaFi?s06(tsr;pO2n`S500Kjg7JM|mw6a8MIb1cp zvGgoa5`IP!yj*lE6f&@}e?&&4Lae@81UU0DQek)L(S!p>cY7l zxNO$1US~OcwgzytTYYL*bdm{8$FLY(4$OjN>)8YY??nF)T3o zVOUIRL!kF2aY)1xnbSCoAl4Y9dZv}IlzTi#k$-mG>w}~@-V=X^d#O9-CSHch>PFC@ zNFxaFFD-Sx?LjsGSKk>a*30?d6ug#6{Y?q5Md^L=CgI@oKQ*D zxY{M%dGA|CMcsN7AyewxiZg}R?$7y6yakFf%!h#mo}$i(K{V08v8f^9NXK+eG1Hk4LLic}Z84>GXxZA1G2YtQyZ_v1)lXNlBL4 zC51QFe?no&>V8VQ)oGW70J6{tM|^DHEELh!(#)NShNs;t^0@p$64Vmn3t@fk>uC7r z&(`L6m0;$VFX9k39-WF(W`&VHREzEEG-y;WuBgkc>FYK(pAPFjtexrI6Y0sYnG~} z{#yXfPwT!NDS`q}^Chn{QXV3YfdJRzq<4)UPA?fhxS(->tsEOv<{ay`A=oYQL2|fz)ZIoss(rE_3|t&fP>9P?S|E zYZ}_Oy-6PA=H_FFqX)y^IHk$bb1tJRdzuzzPIr%5H?!@L#e|VvSIJTKA0P=s!5~tLAFHEJeq)l%iIe{+8%VImpZwXK-6e9CiBr2Q-n4Wu#O~WO3qXy* zC?c`2X9-!xbq}d9cl|9YaJ3LV+8z{j1438037`9!oP3UU8&o&K?aXFl1iffd9O`(! z+J(|3AI?8;RGP z1E7ymRb2z5oM~5J$c5H>T8!!xA7LR~j5$`UatQxx0r=J`Jr-K9sCmhv>NSC~cf_!# z8iP48`};Ap?yqwwR9={gycyHsJC>JXw=hEXGqTM$dd2G? zHs^b8WA$Bnmj&_{jAnfsxG|I5qG8ws|~GdvW5poll6p<>RPj=iQ( zeo#W5G4~z`6d_!&S5% zOlJs$QTQqec)hXSgAe*tS)8EwRDM1CC9C{$p1>`Q1(s;K=H>twL;ft{DVE_?zNhOu z;#H1wpl7SH)d=eL)(o3{>r2mNY4I{2dV0%2x`C4JYR4#*@1^eV;`ZK7Q>ZnyD^$%) zJ17;UJP_K0zk-0%g4Df{>hqgNxTC{msvHMo*Z*n0V=MW&NY?h^#XGAIG1IBYcKh== zc;XSRw0hA0ZoN@&Fgs=H07%z0uj-<8pz_Jm8NyQWrcBPC?`4 zKk@$unOmC8wRm9reK)d1rkqDdOjqI88n5@zxrvGZsMuHYHE!p*k9^M8Dq|;~scv-z z8X_sS*Idhm8hH{}byMn6n#G;jm`ERQrJE@xfD`$RKMz<@3S*Q=@Lgf;W5u_+4?%Cz z+dDfsZ9438y=|-$>h2go6ihFYWH9P`eVp1SZP>U1E`A2HlupN=T~Bj^**Bvu)GvM= z{;GER`}ae$^P+r?3=$9i4kpC&mX-=r!uE*4QI#lx!3mAWFt=P3_k|cTKV$5GjUse_ zO~+k&>6<)D?C4~}B|_*@4C$hWIrHX+Rv-B!@mn**A6*{%^D7Gzo^&9l%5QPg*SGM7 z$r*-!a&5pyvyg}Ls9eUeoEO8(1<1%7==c%rWJuY+_Isb*+6s{`5n%OOWSy8x zV2A~5qRo@?YpBVCNDj4qLQfby*XZIe$DclHN*D&m4ig(IT^73f1rbF}ZS65~LTtj5 zbc5+povPwsyQi5)&e}WG;&G|d@4q}5Vk2Uw{_G6O_8#o|Ze{Mr{QdpG>gl16>P9fh z!9m@!x#e7vx-~0>77TnA#Q87$YlZJFl)+DGH~oqeY%r84#Q8v!{=$<6P6o0 zN?$5JT@5MUQ6Kc+Sc=&P)YW9AnUZGivyRnFt?gq6k)9G}7zqmh)SkexVK5yI8#>Q5 z7~M>G1z((1nc%B#M**9K9X&*gSHNUi)L43AUHt<-+~PxR0V#0Hv0U?nugu)a&KF_2 zw`>a^lYh~GFISd(uJCKiN1LM)6_{F09G0?WZE%OI3ccW;wAApmTN_q}K)}-wwWk!c zq04(f&i69yfLjf6^Lpsp!CsKW%ELpuA^=tIp=f`QbwyYKHrRJj8}Zac_Hh8hS`ulH zj(uN{yR%Klh=zkxjI0-w#J*{~1g?^d!M=lok6j*R4DYOa#wD=k7aZl9@JY;-RNgbp zzu-ulC;-&AD2u%}oa2fUcLBxjAX>Y;pZ>*HiNfO&Oa0Q+LKjV^rnPFNC-%k+ebcTC zyu*0b$>WLqx;Im=ec$bP6DvPW3+3btB_3%<9|VL)Tf#6Xu!x@&UgzlAd3S6&v7G1H zPE@ZqwGoGxWBb!73~8I&%Nu$$Avp zQecUnkncwYu(+P_qI|H_N3yds+ygXQt`BMpyTv|Yw%Foeg7qla!+8zm8nu|Afl2e| zItxmZC&CvswXS9)e-YOH1V+f7IdAi#A>EexUvp&U z+u5Q3<5TO>rYBa9);s}QC$S1b9!d-8Dhvb_D-Nh52OZmND?+YsL_Q5M)CblR`>_hh zGP7Z0t5g)a=?yr`f9$Tr$_)E+T8D`~frNz4s_qAbSrUTuZiVR44&lc28v(_Oy%GDh zOaBfdyA!f0u4C2x=)M+)RJc)9A$d1^R(!r$)cNbmQ8M8mT1fcnlGRfOT;9@gZ%n9~ zLy8frpl`?u0s8Wqme3YPzuF?jm_<0|#L83pV?3xljX2o3^7A$qcI40UN-}DW`5Fm< zB(#3hsOgKojs^QAKPd(ZpkDW)3ohrAD@N3oG?*64tppl-ujuD_^w`VPziEKMXon}u zTXvGxP+c+Jay3KadypOWV;v(H^}|8mvLD?A!ZPGq2pevncPbg({BcL$Jzc(v2U?bL z0i?@PI*kAhZ3|#_+H9^?UbbA}i?e^nkx3?JhOqI=8V?b*dCSepI&d z9#`;UvFv00=E5!_Rmld^MblW)C>*2lU%iC>0-lyO4)C{7O! z4jM+7s(s=|u0Gx>@ESn``Y&=rX|_zjEFyV(m#8y*Q)#;Uo3QWP`$+<{AA00!M+x&0 z{c1VN!*w=<_!W*K5)frUWa9ae79V{cXCr7LxU&bS_&V~7Io+k_1=~&D)M=w0h7|yJ z9C@&nOc_}>_q0G*EMs{XghHa8vw0e%06TMLx?a)-7RX{85?ZIE5_^TUIRc)#3WyE< z*WZF$T?{}R-Y z!1HavK|nizm(*HMJzE8n993VN=2#;i7=f|_XKDNGKeV;%E`OULzmEQEuoU{Q@Q%}( ztF;UX`T1abdpn?e0NgwQ9dO${SRWLYB^k4bQs%;t*oe~;yXX2z;6kHL;^Er1-DhR5 zF#d2Ik9<>I?pU6Y+8L%~|0l~~#Sb6p1>4o7WYhQuKKtrs?-P)d^r2bYXmVVVuQ-5$?N< zozo>jKY`0ol8nRx94(SER0XGY)YV6;w?)0bsU$MC?DxCJG5Lx8TG#@D=YFC2x_FJt z^F=#{qPP#au@3LzjGY`7cwq5yR}#Z-j<>up=UIElaaHA^*)Z2ngct=5$6-1a zn}$YqvyHh>1J@qI7OL7>RV)-`bO>q*GYz`ZI)3WKYp#|$m|WKqa&^D^6gOTqb5VDi2__6klLc= zpw@^;I!M2O+TzU^Om3-nFhxEo8;`J1IKr{Ze0|XSW(OHk&h=uhCJy1t!;rRLOq*(1 z&6ZTkm$Rnm&A@8(NY|W(3qbd3gKhBe0_4z(w5_A7j}pOVY2_%zTo8U@lN*nvHhM|D zWx*=m(zy~VmxnI?I%l;O-cvVNtVm=rW_{%G>3t3t7xvv^1OpVqQucKq!U1{wciXIb z_t}hmpwDMP>|qbBOE8Ix%fa5BKrw?R8o=vd6P^1&b)06UZFqgrc2bJKs$Zcvt#cu| zi{TCfjs$!j>FXDDB@M1FEv}*}sdJpToU(MhuP^`&J+5X-dtp$6gROWT=g}5#(E-E- zMSkzPU@<1eCUa~srE_hjq+&Ioy_`RA4D|Qp5=}R4L?!*m&gMg_{mRJ5e-p%`o*zTE zX4s-3f`ExX#iC>Kt0yBJIika1y?OjWKQsZrYP`~Byit(iP4XXiGK&R33_ z{~h_1-4xx2J(?Pj z(AS0g(N7nnHS}@Hlz&gf#ZS(rxVRltmri&C0dm{R2DTb$ck*{PL1!@ew(8ApX+%lx z%L#!qGr9~j!>qjKh8KR`4*xZo3nx^q=4l@{Ub{&7y*gF77bl59+v6O1H5qhB!FOlN z-W~*u;s5qD+4-htk-Vr_U?mutKF^AsL(o$VUec8+$wChb)8mY#F{wHaR!_FJPPXDw z;G^}{=K6ndx3fz}`?N&{oj~OjBR0{* z-^(j^k=~7q%`R5Lp5Ze@H&hZ0(lf0V`^JYoSsb5ZSz%#h@x6>_L=01SKkSEv28 z1|tLsap4+>OXS5{+xA8;Z~N`s3E*@Pysq=>~7|t~&ncJE`8ZC(ygregpym2r!*Ea4NtQM)X1Wqe5eDNRg;P z;q47WMae58^ve(D4BlCae&lBanJ;@Rrd1qAlfeH7?ckN>I*DC{PyE_KoWLj>aGVFk zX4{*xfe*{`+fc(&FPx!gz;(N=e1-5_iSh<-L8wK!ecsFapp>Pk{l(CQleU-g_VvcD zv$`qrf_fOa3yW2ri^3e|mO`PG)Zh+#S+P8DlS-=28aA7ew!3}urkmI;xEveje zMD8NgC@+li6NiGYh=4>DWy#?kB?YtmItdl=G8idpfMR5m5pNk!3KtiA2;-&JDl>Mg zS(w$Y+88itxBu8XG4z@$vXruXkd=`LJSd+Li3u-cxTYe@m>r8klbftTi1!y63QLb| z>~(b-=C!W)kygv_AL?%s~)`Ni<-m_jjX>Nf_Rb-9{k~q zIWA&Z4eL-{nVYX1i|5=wSIeF(Z7Y*aJvusCX?saO++G>%x_*y0G5sAqh{HG_q^&pR zAp)NQce<9)%l;0%mV9?JsP1wTnA3OKgeSMV7zgS=4|tYA#Q zFte>qQ@esMxh|)pbBW2BN=NJ9f)IR z{+9cK%f0^&1R`4bZEHOAISsu}Wa*Qs2YqlFUYj*f;QW5!p^&^`AVC3B57r>{?G}?_*Fo9?)AdxFjk0aIBcuyOtEe zSokyk5iuK=QWBKTGp3l;ZMWm*%whTt;LWRa;@uGDsRg&;hS^u~@|!H+w<_)r&W%Db{c$y(w4`{~n_+UPrQC54r2*C^d2^(JOFyfT z$Y^VPyTml%7oYTFiQ}qfW#o*#mXE|6HvR_#uZV}lnRl_{tm&Ac2Up*si7qzG559%C zBI}nCNRLRfL>RQzr=hXPbTwu-(P)$9MLo6ztvG_*C~uSyeGb3VT6+${iz8tYz!&Nf zb^|MZ`+FZaqYMoDlNUZ%9UV+j08?D=B{95$oDP8}+fbL&DP z9X)hJ9)h~eOL%k>0wW|MR}_?W4>#*=`XfkJG~g&Rdm?X*$Xn$#znLZ-6Ms9Bt93JR z|1PEON>a}>0#4N5#P;AuI>r*)&8yCUbOfgb&fh^sXg4U zC}I+eGtB=2CiamW+Z8pkVQz|h_XyWV0bL11wc`dnjj*mqDOM&?nd9}DZMjNm5&gmT z+)Nwn9?lwMHCp^D2)dlRNLPU9hMg85rH+WB` z@vs7#@Rp6HYC;M~jY8d><78s&3VYU+xVgICJZj9cyjjEqJdq=@He;8$OerI~;aq(B zDes1nv$>av(tmQd_WF+dx|?Jw=2`6tb7A&yf)T$nb3%xzem}o1%)^@KZNv2{QDX^T z?@hrvBeq0Qjcg{05F32fG zSryY>NmTs(67yHj`ON@-jwQzOtchA8za(AYWr`5T@$#0BU9M#&lm1dD!*`&&a6`lO zwomr-zTN&M-@V?*n3F#WuT9ao zCaN?N3v0L^v35#=c;oJHTlU*X)<&frd>Jibu8K7>`jGx^;60n|8$R&aZ)91fGdavY z{sw;^N1fNR*2T7d?ooK6)W!Yz`Xy)%@&jZ1Qa3;8jk8R?-j9{{@+(+tuehNrhu$#Vil&Je2?IxSI zC)S=r#oVePMyflhS33Y5viHg~q;-z&0cJe~+%d2kS|5lcdu zHKnR7aeJm;FV9ig+k+Y>_v+0Tz)blBZcCLP4z_1$YF>I! z7jopNRMp<%6v-}XzPv|7RGdGL4QwYOM#eb_YHrYvM++(X7*sQWKOPxLWGVC< zjL6g<>=Ruz53tU~(2i_}6}|vWo_qx*?*_7tMHbnZl;rP%6HN&FY&ivJ_s8R{tvkEn zV`?wupix?{)87GFn98O%@0zQ<6I;|$OjJ1EG9d!#Z3E?=7#T56dsj@;&mZ!0^%i1; z8m!=YH5N5!EblC5KQ`jXy8#c>UT|;TUsk|Af(8%(Q$WS|Z$jq6Um!UptORf;31l9{ zB|00y%mNdxeeZ0g!LZ)`vn}3vRP~HS{{I4pUyTtgULH9JEgtW6ekHv=={wy!suw;v ziaC;9rKF@CGkpB`_1p4hkBPFZfyHDkh^aw>eOOZ5OWVRb<2=aYW*&vA;Qb>jTp@xT zfpB6vf7kO4UFD0)_!n6kZ>xwpHS*Imd10-y3`cILR0wR!(uTS)!)<4r5QK5JR?g#KO)V|cssxvKd|DzpDMzO-QD(^u8%81aR+*Q<>T=qs{D;0C$=(Of#d+Z z4mOxjef-RNawhw>$O9&);y_}sU2=kazek~`^pp_8k4oX*nDFRowb1UTxzhSi$BvJI zV;+c&RK1D?>I5$jw%hi#V5tb? z*8vGQwtTh+1_ddwMewQ22{`9K48|Uw8?_DaHj@C45A+N0$K7$dhbYSJzN_mzdK5}) z6&sy$DZYu(yxr}7rmxKmR%~zoYTSM5$y-P^d>G@7SqtNOPY>Qsilh;nEuPb&pVelv z-kqc+EjaW#1c}$({*}DoqvfEj8N;duL|^spefwi6J=1OVd`{wl5r!yjh=VXbyLKN0 zsX)QTo-}~(8u4DvD!f*Wny+~z9DTaHx^KF$m~Zl*uEDLAsQ>B}Nql-a;d(fRcol>V z2IZ3tbu+@F3h$hh&mUhh?PzIpKdo+A^jLjd&H(~R!c&d#o;MgEy(f+2(;=XcxBj2! zXhzYWP4dr&%)WBqkEefy7o!e$6t=oH9~kWh*ue}KH_?HJFdZfxHaNAlR;(&S%RC`< z2q*(&7h!L<55O8AHXREo-qvxY)XpLfi|70G_{$j7yrTIWRY;xry3MReTy4$LSx%UNl5I5I_)q6ycV1e&9&7Z zSEtr_D36lOwUT(Un<_Rp3as&SS#TqlX2WvZKMJz+!X}XWLxJXxrL_HHEh(xGKb|g_pe@71ovF|=tV3c)JOy@BSq^83uM!G~41z#@Y)CbcP5Jd*vyh|S1W z9JQ}6s;oCR+gN6E*VLsBkAQ;aKMr7&W;|b-eW?8o*adM}oq4VWYf!K1#;%xsATH#ZV8xwU`sY+?emU(!%wKX$VTDyK$|EP8ms`Fi zpW7n-qY&$*SFB-fpoaZ9a-3D5XbtQI#K6QR-Lrsbo84gKW>SZ`ob(|$gD0y(Qu))f zVw{?5b&jtnCx{ut>w#^CBc6+!_Z!`}GG4XCSn~P286t`4Ms#(RtQX!dRfyDstAKmp z(?7NJvA>Tt??L6KViL06mF~pq)LG8u8%q27Fq=pVi!!FLR_DAGtVn;+`>Bk)}SFE@Tyud**Zg zl@5JpbJEdXpaZPh_WWmcQZQf@rgpTvBWRk68sh3ujf89>_O?wsB6w=wUN-Mz7gmgK z)_SLy_aiz0sw2?dYDcnu%Jl*iXd?TiQkuu$$tISS$nk4$H$N)k5|_mqfCL&{_{c?k zTr6aPwU6yvXD`H31@@0VsF85oRXG#tn4NB1bLtt+{RST?tTiaX< zR~2IM;7?u4lELA9RUF5%!5xU$K`8+BsafI(< zqu1h5sc_}`Th!j-O{5d-zK#Hw9Hk3qb1{XsXSevL%caa?KA4yf2q!q?e{qybAn74H zFhd@Ry?S+vy!%2}t z@9B1@QND9Q^y$G4{iRBS^!9ot<)HA<2TmGi*_D(W5O$liOV9M`(xi;qPQbsxUT6)>yAdtyI-3o7owky{#kE;HOe5?3Yd0?*BMY1>nk zrg%$C(93+eKp5tef3JZU50n&2wB}OlMyJWM`q`1DT*a7uhtz8E49o^Ux=&TEbeg<` zw+Y^*9#4(X74GWD8E)>cv6v9ho1na*qyjKMc&(I%B$?+lv@QSebb zZ!gD@-qQZNA4!i20M-8*^kG7I!*8tBTYNwiX}_D+kt@InFa~=&L7y$QIDA^kuU|V5 z@!WBf-`F=Zll$6M5PI$@8$eJ`;q1lpiHT>7p<JI_G<`)OOA%Ny$r>FevB?D;xg`z!G{p`j#W4IOdVeL zXhj)(gj0j(LLwY60XYLgJ~7!i>O*&O%Ysj<%*e=kng~fudp;deJrcYXQHeK!ZtVjw z!FDZ}titD$lFY9=?5eo|KW|5Q@w+12%)RTgvNu(zDS`Ng`Xq*QJMz>m_f5{>7+i{hc@K$J&N(%xfH}m>fOD>F&U~RLAh)BroZlY8`S~Y5t%fmZS zY+y2bSRW7y5??eEufLD4l1h)38)$J)QE%aFxol{OC=f4$0(#8)6lG+!!|Rj8hUNvM zsc!B&q#_(OWW`8d9usC)QEAPLZc@vuHzg$}KN4(O3Lf>s_H=e$%ndHdfe#?Kta34o z8(SHcH+55>qTf$^rU^j=O13j0)*xRHd3}Icq@1PZ{eyYXa}uZTB3s`pU6)t+Kr+?g zVGd6i1uRm5a%v&|s!3PrliP_B)+ zS!1T@!Bn<|EBjGjFfO#ty&l@(*5=AeOJXIZ(!&}Kr7KjTk;~|ppqmS&3TZsX8KNGQ zodnjmj8z}2`}Kq%d zvP5#}8a0^x0usWAnQ(W_nbjUO;G8iyIU2GV2f zfa`+f!_^A~~{gyDqD)BpuJByBt7%9$r_Hxs;O6OLLFUtCWLB_P19~k z={E#=9@84@;F)!YP*94Q7N{O%o(6sYnwieXP5fXILkCNwCWlu37@_7%c<>(k;M!K+ zWqL$hiM$Synhg=FQ1XqRCS$5vd^D^rj1)XebZ5_yJ)Y3k~Pma3q2MlGQn+^0k z&#)tOTyt^>$V*LLVosM~|E8}$sgVO{Z`+GGKwYB?5T9wW8XCGCrlV7uHJ*cogihal z)J4lZDqKfTz==SKnb(FYDuycDe{x%wS>nYPYukgwp4(&bP0@zilOceXl=Aa|?#Gqa zOaj5=4O5J_FV?i*3`Qc<>84Nl5I&%5b9|>59gR25P~$HNjD|poV^r#-Rej5a6GrpO z>X%&2KE7-=+^OB$+&jvL{>$v#!bSf)GV8j#roK1IjIJd{g-7ge&Lu$}HYO`KXM<7> ztl9_gf%~W$PpD;S{BC3X#)hCPrds0`sSZRW$MPA2s(1n>()018&>5Zg1;+$(Ve>6# zg8Ch>g=p`yG@siSLlnh=<`opEV+Dx#v6dK6S00u!i2#TM>tT(o%pumm=*s9KknV}o zYA9<;(0E^x@)*DhbMLaM;rUJ88Eq7-qiGFno>-`rDgY9EkD=tilqr|7ulsM7R%CKd?pdR* z6W^@`>##B#Wd`!8+A{W1f^deyXxm-pLSfJ}E3^A()ZPlqj-(*}FsPmcZa`Nm_q=ti zs^_%6SP`}kEUXj~ zl`g&Hma}O_K74j-XLz)@tOW5?&=jf+jWr&oLJlAk{#L6*7O4$!tWw zSMmK|aI`1nE5PW|x!uXzZH0VqIRhsxnz!8S{C_Wi?$C?Jie^WyHEUn{!Upk^N7Y`j(Aop+8|5X5{n+;-<7=t}$EanlR|KFR$VA3JJz z1^CcBuW~cF7jh0f6kAM~$|%T_n7Keph?&`q*-ML-_TKyZ0GMcIFUh8#_FG+FFS1o7 zMeQx|)H`=4^Iy@kFr3B^f4+0rlvI+Gu(ZSzn|`sovb{1T;D5oo7Z>9>MRklVwMsdpVy<_AFT@x)XzTm(0$IW%}P@K3`1lF;zz z=*XR#G+C2K$U)K=>ss*w40O-x7#Og%#)dmINZD4A80W%f=3ME`zA}wC*NOef0!Y`? z-#mu28R@T_fu*QCA8@Ks`Eprjr}X--6DK@2;1yLA6>`+p;%S%{PAA^l_LMh>fr`Au zKq*~NK*pP7{p>y;qc1dHAf+%*^e}_{VCZhXrcSDI;aTWdP_<;Y8&>TEpS(4KW$l(M zBmj;%2JF0vElba|OiDKPdOj0gj-`iz6(q&G4GFtT6aT>iinhZL)dQL4l9Lb7_ygSG z>n1TKB&qVsgfgd>^^DKTo3qi$WC^jj9E?y8QcnAZ@#-{*IHUe3J4{!urLu%5DhjZv za;}*UcLzh`F{$7Z`y%lqoHLe^tTB`nAPrPf`-n&8Fe?g@!)CNWxhw}$9gDf8P%8Ze zkxINPApoMR>B*Hz!OOv=_qF3qEmjtl>r-{s_TN{#BAjRRbHW6CCgw@2|Xrc{+)orJ=7G7*qGOovqP{Y;3XEggus=GtfSxZ<|_ZG;weU z^s?TM3b&g>{DRUzcLr8; z^WK!uX?5-uL2Hbn;^B)dmhaY5BM0<~<68veH``AJ=@vEMnBBW|hXj5Hw|O@Q=A+W#+38zSs!HO$bAg>XlLcDSJR(|A7>b&5V8now4boJTeEHu-@2)V5 z!q(l+pcLuiL$F>uj|7bIqhtS0?C#D)Z|!jQY*cKpdFd6!d+R`SIwu+*9=S7Dyc?(| zi~P(PSc{s$%1`s113kQ_0U1Neh_5Wp%Ag^=u-}nijULxAQhQ3^SNrpXV)>|yiqX;K zFz~|$+*4#dZ2<4^N96o*Qaml{vM<5W%ku#Y2T5F61l+FslJtM`kX@iVCsjy+WRe{x zth_u3MD$8IJSZt0X(jBS*-A^Vi;JOY@=o<%Yl58>!q~AAHccG@0xxQ&89LhPY;{ zHXquKV`ihTycM=FH6u*t=pNH6J~cO`IVAsF^Xwp?Y&vUuH(2d6QYA@wc&G-*ZZF;| zNW3g$W)Yc|!v)~xKTJfEKgaAx)>w#|h;Yh+4%vvtaV*9C>hC^7|H|?AAAL@>CrINga?f=Q!y2(3F)y3cwX*pt$xvYKXX|WJ4yMeW_j(DwYLF$0 z?($}UL-$h4Z%0AseCGK#PyLF@A?wzU-2R&EEzRsq%`NH`mwP$8PP=fJJE83f)-U;l zAqP%)9O=V+7+w7Q-wZ9^3Jl=g)1h}FPnG+=0Y%B zBAfOADIl_VRs^TAw4I2i<-0?GLbaANc*ExZicGW!Mpso8OM)=+kLkL%{ToA=q1cnc zHmHwehDpEBJn5L_+`3VVf}tR}tRYlahS0dOD99fVvb&iQNO2eG-2MjyLjy*P+@H)M z`zH$UH43)`J^K&MsnXu=LDTqB081Xk1d1A;MW3wl8%rxOFR|| zgx?tc=$N=_%qnCck0%)S5Txgwkizi)loE)65EJZ2@e(hQNVk~Wk&cS)-y}PB%bypp z6uKD}7|!N2E%k$AfvdiPk$>GAQlR}Ss#A@5fS=Mp`;12Qr}!Oqwh)g|Cc^1D6sgpx zgM6ej56WD7l3sS$d)H8`ap*pG$X0iNLk{Ho13gg&wjzr`Vif8A(V$K=PTq1Qp;PIrt<6^x0G?tCEDq(s=T-BXq8E7#0<+z88 zvz%;*hCNv+UIv}jS26m#T?C58lCmF1J$Udy9?6+%So+_RARDX-vUsXBSB$_L=JD_!ba31&rdN#9kfz6M$$8}gryk;*Ctj(htY{whTnF-$lr_z3 zT``$i=oy!e^ilZ)3mA@lG)VtMMZrMJX|?xrqaQAwwq9-gw-kC<8Ku_9#)}KZr1yS^ z+*=0#JZf|uSR~ZW6nacP9_$I!-4s;#cFA>(P0QV5h{aunT2%liT6595u}qIs3f4aL zeBW@_$n`6457EuYK&P;dLW}x92TuR94d(De($h)5jN}+pe}K#m0!0ZN;4%Ra6yEhF zMk8+HU#oh$Yq9E+x`pM%S&czVGjjlsceJ%=Tw0&m-5A=hLOE&j_uv;5YbZTN=zvo6 z*6L<3!r#2Dea3O$Lcf!(RiQFJfM6|>8Ae%*mQk}u{7A8Imh|@q4qyPhimX41!Jf>- zNMj4{cOxErHpWCoMmkOqj#ZDN$oO>RH%$UPob_8=-upT*SQ{nh0K4uqt+@LezMoz;fXRx zo^~^Ev(KWDX86$B2O5%tyo{adokYR--)mme$tkcEUGB(2YWRdB5S03J7{{u#h*oDR zgUgddBHgg{Tv@)r4{)Ufk9==W0;9ag&QafDC9sndz){aYvn7x7S-e?%aS(QW;(=+` zh~GyEh@Xn#$KzKiRC|d8xCv@JWC|F0akX&8)XbH=OPcY5bDAg8dwEN{|F!}RiX}2~ z9jowm_g%9CWCT>CkgzO|-zTW{LQg2v=}7kPr3hP04sg8)0x`T1l*3%%f9Rur?Gm=w zyoE0p@3+pRDE~fQ^0UqNl4uqgKGisWQ#HO1#u$h0mQCS06cRE$uQ+%Ez= zXW(2K@TZhTJb0j2XjQAO9w`_TgA7(&dp#enVb9K$1l{!CFHF*+me-%92E%=DtFy(2 zzX$8?a4+FUg{g*BJ(@$};^G*#{WI|Q#+)2i*J(;z?q|rW_3kU5)Q{3dF_rE>Y0lj1 zGdb+FsP^}i5G+uga+S1NytnjBvfp$H7RX9^s%4J~@0{TR4+w@ifA`Pc@Ljp+O_6;= z(`j>`RgIIvk0Q$pJVar=ndZ^WACtP5LaRs;ahdOcl!kt>)u`rF4(W6O@63E@nBmuC zB5_VLWMQ%w;RqA(DSTFsgC4y-mQ(9`cLH17{lKDT|GKpwQ z@i>h)43y8wvJn-Hi|lGGsP_Ux{|t$i{piz(?$Z}Ew1+(9JrKSgN-rh`&fVME+Rl>T zHe40lKfq?Pi+BGeF?X^#g+D*ueCxX%_~6wD$+|h#tvP92$7pcJDXfu3ifBlfi+ z5BHnCh_RhRg zFEUHwvM&+shpk>Az{(JhOYd9xQi!6^dJ|3#dtO@Vp};4}TjKO{K5^X|0B)L>Mi4%K zW+1{U|B7@ypqJyJjHY7m``0y4#Ax7=XkY&P??fLovywiGiDM*CFnH_(?U zmX!mXh3_-X1tU?UxRk9u(0;ThjCA5Fz&}_FRvBw4T@P%I2ix=wFfC2P!Vu*|hL-&E zF|@LdYo_xT;?i%g*B2bk``NFtic~ZjR$BkY9yT7?IfsacG;75^e96~6 zAE6|0yATYq?I%>*qs#-Kbd7x%KC7FHeK^ka zD=hy4IT4tQQ&SU)?be9b_wke8r+aQaP@6tvBwNMUDQ) zJkK-u9Dd+Aip}~#ODL0!dUaR&rbqg~Qe@LikY}GnQKw7-Qv2_Py^N+Hu`hKgZv645n9J^=0sOLio zVe6wz-eRiUH4C->Z81fz8=Po|FNAhx(Ujtd|7K@p-nn2e%3edEJpMqz9(33Q#=ygZ z8X9P){z4V7U>q>s-t^&MkAnDZRP0d-5^znoyWiT2)34sH9?n#*W$V-Ik_F!)(&e$_ zWM?-@Sx-&$g2{<5B|z3n%Mb0Ls&fb0t4xx5&53p-g}NG%PlB_$HZ^uv*Q$a-3(BK` zLY#U`*$4$~0k8NPBGxm=pEZso%L-pdVM%EtQGfaC8XC@G=_$!rHA0`MSGAXd{3$_3 z&G;nnE?|8Qp-^HM__tg3UCUW2aAVPp2Ycr<2)1-s4!>w~{anCN{io3DaxHvF)aK4o zVO~}yMcaF|w2(%YYmelVxH7L**!FJ@MQ>7n{GuRa#i8*K5rxNZa!lTUi#ww}D5-Pj zLtDoI5W(Pcsns!PRtqKXSixa>>s#L2%|ii}aGZPR)KMXyG=ss>wa^)Eb>SzJ7;vng zL!<#YD~CWjg?pb*+9tIyo-Ulg=nt!H-&y4B+KY#N;n12VxZIhJ=&RYBy$HBqvFtTw z%T%MD&XV`OO5y#JKj)S=cGst`eDAXk{L;|I`EjC0bh_mJq+f-#wIcRvWejqBB)Lgz zveEMRVu3&9JtRJZAuW`eoc3g8xhYA%+>ij2@X%f*g^0Tv=)0c%kMsi}rtdwLyrt>w zcmtP~`FdJKnzYIso^e1b_DpS-T6#KJM_wHaTm{E2AE^X^{W8HR+H5*OtC7!k(9FKNsX zNjZ}VOx;2C`bw$_1#kgnyB8hr1Al*An;>-JRieG2_`lf|J&SJ6-r}Y0?F*NVm)^~3 z1Z3O)UP9JadoOLfw{s}>B5v0_*Dp%9D%}l^DnT+^0zCzuU=Kx}G%<`-h8#Ckk|*9n z3}X5kIUHAmOJSw$LBP1~8h8gO$X`FnkF;vm`s3c>@`mlW!CaDkH{C1?wBC#*EpuRHgjPhqu(r#)*+g;To;xPi}pKD+o zu{Pf{K2Ap*sHFJ8s2MXI_yHZo^ZX*W_^@zUn@`D=sDNC_s5-e^!*h zCsAFXD$sFS3& z>8IH~ZS^!$D3yU?`^wm+@ft)H?*94dd=`siQ6}<}Z9dR*N9Hu=3(%Fd>a~Li(V8qY zR=;p)Aka1YW!d)j=t=_)nLM|Q2un}yjN%ZYr3tY`){3vE~8<$RFS5^^Jy#FZtC zSByG{d@vTv+pitF|MM{dx*Bk3IHA;_SlFTN0*^`p;oLjq)BUeXy5^Qw|NVPsf%1V~ z`Iskd>*?L1u1WZr)-VZ!=JoNusN|?l)o{Vcs{r?j2(VRhjiPt`#%Pn>?gldAI;Wxc z#Ahd5qX-n3amvQ(wjFk7eTxp_cYhs`4|rq09(mZv#LYAi1FOf94=Sej8nH4_(5?5; z1?9dn72$U&6!z8*kNc|k>r1%I0p93DEhmRN-ysQ-kJ{P(9q}PzCIQTt)Q@NHggTbG zg&~HLy4$L`1yA9$i!&19B)f$}`yQICMmeNiW{IJo2{*Ix&TP&8(ZzUW&}R_Bj-Crt zbWAZaQex!jwie-p`BBz+=@Up4tbWA$p?2o}J7m2m-Oab}CI7J1B=qq*ML_Vd`?Bxm z>R*kU>hW8(d)#PV&fe~Sp5us(MpqXftk#pG8}pk_wNEu-F#BMR*k*6&u~_8Sctfn3 z9V!wr7zZ+W7$QV{Wy_ynY^bJmzJX@ZWs#f;1}DHVW?x#t8~dJ*oWIsgWa1u?X5(y2 zY)?QW9FE~4U`Gs9j@imtXo3#-C_m?3a1bV?Y13OT3nujKfRrwpK5dpD6-X-vUQI<- z9ZNPxk?ijZ^q`=^Cl65K(Sb$c@b{eBN5n4C(K}h0%xvkm%NkHa^8Pxu%L}w8&{k0$ zLYU;SBhAEOsf%%M#Z%N31Yv~@;^McJ<~x=ey(IW;VeCMELX3mXTs4+J%#`16TTJpu z_pl||OOMNNL7+)#&UV96&yRvCzsa9zQa0P|XP|5|h7_{-lXhSDk2#tGGZ zO>bq=uPTwWY0~>Z{+yfvUZhId5&o{luvfH>j`k(8n9K31EF$gm=%RA`OAFv;g3cG5 zQ}|DTGM}{aN za$+XxETx>7wmgUE=ybJyo@rvHmLRiz^{yf-bDgMc*GJJh5QQl2>~uomOkTjz*zsZ~ z^kV&0%B|8y{q5`e$j2Ucscm2}i4o3*?+ z(Yd`|pdo^br|&C+t;--C!!LV&jeH)IN11Ha=gZYVDiFCcGt zAa-ZrAo>OIv(O?{E90TG*qnU*5850eoC7R%(q3HkOnxbePhPS%hY{fR(SnY)minKh zY=8d_tJ2(8KlxoYXs)+6ZtXFq%Gl{RYI$|lm@@T;%VleomuKagxcd2yN&R}eIn2v9 zPnO6ULvdH+LEw@RIm@u`QB5A4YIsfdYuxOET&WUxxmG4BDmf=P!n&^4Bcj{RM~CoK z3ovP~mHNPp#l@f{_wPDPENj?eVJuz??Q^^U&iG*OK8f*Dq+q(`DA9J>$k2^KApUFk zI-z#$>TQB^_P7oko@#p7k~u9e+&si z?w0Ecer>($VL)adH)F1XG`+O7TfVejfOE`ZFdHabs`fb({_lFS{yC0kwIoH+Cl2)n zNK?3gSG37Rom0zcl(LSokryz~*Kcog@u+Oyz)2Mitsou)BQ#tlYqIX`MJ^A+h z)O#zRHR$KTDndWC zhF3%Bn93t!aIxtxaNL@u6SXVdV-|#@x$kZi2nYKx%t@$%Re3Q=ocW3 zcV9jv^{#9Ndw6gA<{R97lRRk(yS_(@jxUNr`13VWB?FV8C17P^&k_cziUPl%q8Eck z-S>NvDQZaI696Hr-ebgjMb#(&GZ znp!x-!b}dZTQiky1bg1L1mxFi38=-_Mj{fM=fD1&kGOP6*5k3=Gn>G_o;SqmCqEwf=%aOLZutR*u{7b@d9i{O z-r`&f3^jq$CQ9=SoG!$*UVUSZ-ud&FVOoGF85Z{7_x*dGApnu)bEmm$N0h^am+So( z@qb9iNshQV#96jq+8xq4L)H0?JIH>Z?W6f?qn!!%;H6^}(w5-?t(s9y3SggWh^jln z4}kxsU1lIRRdJLPiI=h09rwjl^j2`xXN*3#+^y5fEA}8vX0jPa(QL*kd9J3*ZqmCUMOcTVUbT5M&UnSitETM^N z49zVDzowo0%i~4Tb>2(a`U=eX01CwJTFwkgv9_$Sg|W_!-s5(E+iPLsfiG8nzMHWw zRpHXMC>W{e{WxZ5rJ9;;GGU*m6AwZ9P;4lus_ErlH{t_6v3jrm9=(;wkPZ+5wiq4? z`@@16m^VGv`%Q1BtuR_P5%`_^u5!^4s|UI40ri`g748oFi{9q!u>yzCv&-^E%EZf# z2#e93h8)9USync)cCX=@EYU>3oj8oGrK8AvkH?am?K4`ISWhDSZ;R*HLW{xhF zZtRmkX$qrmeB0qSw5WUYVQYU%44=UdZ&B;KD9~_B!maO8LAaCPdix$@LXf-Kyx!2< zH|hvTEMW|7`okXkITWiVTvvm&(kc6zEMypYS@dhuRSUwf;Bx|;HpcL?qH2=T#_i?N zFQ%l++}hx&oW+GzuYC7ku{M@L?T^>T|Hbb34ESu zJjo#Mlk%Y2<=Mr1t+kC5GXeiG#N^#q`m*WdA6$0GOrum_@=1_MT<_Z)>vcPDm!QtI zq@>={B+FEt2}yLSPQt6Ce3e%=9*7Mb)8@GiTEw^dMB5FNSpu_Vo=9d)`lN@bYw85( z(g$9TnV`%{%Yvf*%3gLnzv12o+gaafgrMm<;})P|x#Ie4U}!!lWt-D20ww7c55Y|+ zt4mQhyH;fv(-4Egnd#|lDMDAbo+Ypx7&B4)&gOZ^-1h5RZSU-Y@yYkcgVkJbwPL`alFEiT(Px zYOnh}x=1Wkz<9QONavWRggetfmeGDy!c!_{M|41xk;lX7&=10X$gb}mHjD`o2mNg= z2CzywcxLitVK}h(rf6>&{g}iYWQ1nOofm@k1^}yb{Hwdw`X{c5r>A48@Ju67W&?}( z3O(?}CkRn2{f-$J>8MSa9|HPpkL1M_4L!bsf3Q7C~F@k0BnI~Q=W_7zCcvtYRr4|fO&>{o5?WAD@#Ech0A6Puhk z?3VLzO+x_!O_@@Lj0MVK^<=~+ePT;a7jwN-sS6P7S%OdQRg+|RxzptssqbNWK!dFG zJ_Ri>(xw!xI-!zahrG*d>CH$6x##aJJ}`MGb$ITod!tPiN#V6Ih|lggK%13}=`y59 z+`Ai+TTyiEF|bQ&N%BcUqs*WQnPN9p#%J`A$@cw-G-Yd{D_!u4nlpwQ8kqIJMIhs@ zR~(&T1mw~oc!K?~w7%#*cSq<`~?11#cM=rKyx21KBDk_6f9DFHycLd|`hx=7pB9dM1i|i_n+C7$=;}sqm>D-Wz zl9ky7%)V_kY+SP`++D;c6marM(hi;8f-idwI zRWK6xAz*7ehqizoAdPK4umVU-k1Ix9DIk2+DExtI=kA!6`UIP#8E68W4Ty6ZqW#3& zb=)-_v(ky|9H+GGVuMSuKBWD2T~55s3*#OXY!A@G#{Z4NHYojKuzM(LRR0sROcNpc^oYdtKjAs>7H(BAA~N|fonJk@3P4 z0wBr1h>!HiM(zdD5s{;qo2)juYWuH<3zH3Cqdu*DPwWFB1$EMpX;<~>s<)fr1=ZBF zT-0N&^8r|#!yh&#Atqo9Y3f~ROroB>dvS0#%)qS69n!V}kDqaI{WBnqzQTukk^Q<# zM@iU|$c>Y0yPl6R2f9oGD`E3sb8^{{!O;wJI@uH!DW8{Y!eY5s!zqoeZ|nsJo6DW< z4y@nP?R1$I=>L=VTMlP=_s9{z!B-{NLuhGYNPAZA&NtpyT-NyMo=?;oQ>OiF=O~sj z2sS;&w^o1d1h-Bb@Ed~gFV(ZQx8~VPQ81n3SWKM#Gr0$_amZ3NZ+C}>IHdeswJPu1 z@-jT$+V9t;_cc0Go}#4P)fE=*3#K%@h^h@wd`ucKiH`2HWXN2*%5j1zD2}d$sSEEweWbNxx2y8Qz?&` zZhfzm=kYRy0P}&-JU6Qx9~O>pcJ_}HtkVWTi03Y~T>-NBdXE9AYjDn|`U}??wK<^P zSAG~*KltzDL|H?}+zWp~t z>Wt10C%=!dgNh_Oh>_a?-weUuZVALO$P?B7JPFj@*~Jf=P}cT58yE~KsVH*v&OEQ< zeNN+y%J{P84P`)6%!&cM54DWx5xSg6X3GDcrK zc3}TQFnfWCt3#hMPVgh=e954MfiQko)BW{1WS`a}l_xhP>~Lp3Ec6BvK8 zOkf4ve!rvN1KWdxH9)I|-(2xiRu{>{H*|;74uNs`*pJ7+(qrv+nx!t>^c%C3N(w+i zJp`LuCCYq6(SoGw?5uxp6+NtA^B(nl_Ovi51=dMJkd3fAq}N?Wr5>3lv?WwiK9)>g zexN7#qX^r`5KQTV%>6mYp=hDZq0%d_ff>mh`%$`;13kr`ICqCQlAr7GEJvrpq47=X1NwLP za!Fm*%x*mf2KzCq$=+I$7Wa(x#o>bG+pIq4qigg4MdP{TOVWDW z-s<9tdr?pdAZ4)|&UvQ6$4bBy?deSpmt9S*!w8b8!;=8#`@F`zNPMJYwi3(k_=_&% z?ZwUQ&}RNOTzYtI)~_>wf9O`d8f=DR&dt;I16rnJb9l%>`sAU@Y|unaKal>rBy*c` zOR>Xc21|~D#DkeF5_MGC%~7v((k;*vkM-#aDG4~OzCshh-CkW?-}RtelvyBVGIZnb zbxu*&yMPYp7u-6PyUCuY6>am6MA^Wm zM4l%cFXy5=$$iyD1q(GdmAr)@EP(OCT!ezxbB+uXoolaEpB4;uxbL?UU^XP zxt4tJqdV8!-fBcpPCNwtWHrcj_;q!Z8P;H6!0^Ckxol?xd=8m`ar7 zikx~gTn=xaY4~*0TyHQ`CTZI2&mSdUP5DGA-fJrH_s*-Y*-bY{T@WSeZ|PvN!OL*N zGnf5{C%={I2=-ZQ$C(gfpzpye%Nh>YiIAleYc3gI87Cy_?E#$k;PSl;<%pmRmHW3p zX+BOCM1q1WB>0Hu@|4G`A&&j{KOK$h00q&jxq?`Dy|21nBko{Kc>YBbI}~3stmjn{ zI@R#JWfF63+OvMr$5WKQh<@7B4&^(u&RlBfwN7po|9tHHq1{IIM=aEuvXTh(#ZO3 zs9>S{)n_`6DZ6NbZaA*TL6qhEmxGD9BaGZJGZ>Hrp3YtK`sjg7+4Km zOGo8_(Ui5Q&RRAKWPAqL#2YL~&eT4-{_Z9oQ6RuCkAfyUpd9?#r)zb_?WDl~rdA7j zO5pFb3W+!MrgT|X?gdd2+4QHC{}W19yca#tv4ngM4lF9~P3i^UOli~x$h*Z^C+rl1 zqHeO)-qA1((L#PhJcf}9R+husoN5PJPLu=H-QK{Fo)(N49M$AA><|Cz;&%G(JnSPIc8Hu*Rd8npxM-REt1 z6sZi|8Z=k+qS#_2Y)*gj>ZfRWdn_<8a~KsZenYTiyrJ7mLY^UP%p}fQ@S$0-$7a%R zu#LRnt*Uv=LrOHfxbc{f`6R|p5^THp0P0rKaWVvWYvy{OW<4uaY+z8XR=mDlWmb4S zElqm=h3BuXkbYHCQrQOU<8kNxqzm2{q1HAxZ5yu#lop_q z>*`eqL|Pap+3{;5ev15r_}3%bJ$TJ$f^?763%s+@eg$NzQ5)k&NlCE}*%~9K4Nd-eQId?w!Nke9!+xjm`iTFx7A6Havksg#BGzycTpWbv=XVzBD?UHUe%bYtTF<{yNs#g8-Y<;Pn z=zez@7ndl)+|L4|GN=A18Oog>_zu8~1Tv7rtpeM(NhCA01|#^&i9u@A`3JelvAh>6 zSADc^umHf^dc0_N7l_xP&i<92f$}BFt0ll&h|+eyb{usEi zg0@NVP(_FXJ`Hg9oI~lb&rS?zh{iNg*h``QYL_T^msLrGFX@VQ9x)&CM>V0}C)8c> ze}OaVHo*S;+&jp>U-;yAyMLd#G>luHjt~rx9F)t0;~{eqcT)T$`b@rakV=)+0!1|U zdnY7>q*&}Lrgdiq_BPqAAck<608&}9Oaj%9t|Ts@laVjcVa)WOBEBGz5n1-ywY}X5E@vjvbJ={RF+>0^@;3Q%Xe~;WLJW~hKPQoeQ6V1P zyR+w3f^MpJCrsY3xdculF(4m8k6z{%sWdbejd@5!^MjjBp}My(dhWXH(g!lJPfYGR zPl&aT<);MFdjrl42q!as(RBsBNFQ<(|1w747nl$h+#w&9_7sBmrcbJT&kyW36RPvK zF@w;i5v=xFJKTgg9&k+hrP)x*RVRpkR!8_KK|19XNxkkrXZ#zz937r(Vo*d$><6tI zN&@GC@z?B(P)k@}lWotL$BL#2lKT}FP|69vfWD=ta9x%pG6U^LMq8AoZNGP`dc2e=bsqU-f;Cda=sA87}I> z0jV&2IMaySBRM+?oUQ>2-0`jJSj8+UWn!lDj5%x~1dk6_BS{+d-8mx4I5+p?4fT}V zu<&e)m0*BwG4F*siN3;^OQO+}FkCd}# zdzx~#^a!KD`9M}90MvEsqo!rf$`w9Fu7I%IJ6y+Y)yo6uzzN_LC^;G`;C&BSP)??< zh#F0VXy-_IIyJtJEcP?&qv!!a8UGEP(W@!8^A8_VZ5g^If^b|=S^wU)t1HgmXmxaR zbw2t*)b46^**jK^D%DQmq)A!g18Y>{^CABZE8d6r)%!Z)3MFpCeLiRf{==;8i*FBF zWP!8Bj@rO?PF)nfi>F&$F%QtS6b4SiIHt7Q>vLwMfL$}Giug}^2xzG5op!NTe#JRZ zWtm#1cJ0_J+XcPCYomRJND-(zvvGpk2=QB~b~->Im_dI4PDfWsblsOFCz%0 zb5#ysjeDvkI@)mprc?vCvf8sSb%q%#K)wWD+8po{^LTVC3;h_^TBL5m{%LevIp+BbG<8_a z_Aqi7U7&s%Hs8VNswUK7ChYz+I_NAFv=1d20yIv0?Tz&aj_!)w-ZBSJN-?%{%9oUs zpbx!ujVCQ<#O<)=0{)TG5qRlq>gtVydb$@|tTZ%&tiFU6j!E*7GD$yhj@ok8pt_B% z`9;>y4P%q80O`r6K?cRuOF@8J19-h$sj&;RL1S*0`-Vm0b5O|nsGq!P3|1n6dvzwA z7xkOxf?9@^JAsBFc%5QEY|VEa(P2APP@bRwtkckafm@)G7XL_}x}y{ox>44acGNaNAlHru%~Sp>p&(@K7{Zd4yZ)=i1vnt_8>-Dmwc>#HS(YdRGSLk2 zGC@UU(_vii+ZL4FdHs=*3axj4?tsJ6)&Cx-W zS=BhO%Ngh+J(L;^m)&A1e8aGRo;k1-HN(9{EwJ*e>g>yVdCo=)Sfk~JK@x!? z_g`DPYdbsh6Y3oC8as1$548lg6Z3;c9J<72dy7u+tR>b^2UlLJIlkz(AZtL=N{wLa zAJ6|?)Lh4_6OAd5C(nd*SRpQGd4VzhR#kk*bMXD>g2UR0LI zdpqoWMMcnu&50!tNXhM9CFde(?NbPT;>1-`7=004wI&MinlyKQ4wLLI-K1Mj97P{VIKNp7U(Q%C0(vldcKX#Ylydm5$5VY zMpm`5c^#aKoJ*;`QSMtvmORQjB9*4Ele1+{?yq&YUh$~i#l?7;RDbasIw`HEnN z)YkUqQ*IQqAwXK4WsV)JG&W&t_g#>7whDJxfOrOp+-*G#Qo3@Rz&HR(40uJOol^QS zqPGGkA@2}nl46q|{H0F5v!1EUh6M2OwT}0y zSjv4laF?*V<9{g(=LySEyTIn5l?Do&WFa7WbXY|{Z7%dT_Cx>64uIc^QD*(tNOK~W zYYqjaehAi`mqP0UjuhSY_D&u+ZTu^G3pBU+BMr7zS|yU}DXjG0m!mPLk};$p^a!Yr z@kMPvs@f@#LO!YIXl{YQmTDfJFRx0?#%?S7R%Jo*^Oj3hA$-;`Qu3f(nl{zX@uc?x zNW{%`;(vpax@rf8XbAZBXQLY*gCi7Qbuu>YXZH-0r($$Mf% zs9+$^2q-f~O1Dp(BW7k@r{(h=I8G?*EF~itgBUgew2O{=^Ko4PUl*B%&J9T_M!kPQA*E)sovLL*WR>Qtl0V8ey`}Z(;{=SZL zq%Gj7pmUYV3v!jZd66&anL1?kdIP65`>MU6OTZCKfp)Z`ZT zpIh`b{D-_)ydbkhGK)cNd;f29GeYL7;P6cX|9%vC)i+o6><#jdozUW(W}VoSpNKEwu1F=7L-ru`(7oXb-@8iPPEF73IJAN)v{;yg>^(u-Grlq`20s5%yh} zGd&0zXt5@_%V3^L9fpyZ{BIHe0cFyoZ>0W3bvj}JI${GAJ2tl_4A4O2-vM$#gP9NC z>joP=581>T&P79@%ySx9u?E~0wVf_$Ba=V>kEV0~XZms9_y|d4L%rvaGnqpX3YEhw zY2+{xbBZOg}Q~ z=%cw1VFV6I_NySEEc5IHh#|DMHAlP4(UQIP=3n*86YSxd+Sez0R(ou*M7XJuh{+#A z+H+qZX%bs-u(q+h7Tz|OqD5^|le4pm2BzZMi$$Z9w|N$ylopG@`Pz*2%PLNlBJfXF zg+|BB&wiAOe2Pak!dZyjwJ`yr;iN}SteVJq8wvSC@}iC5+G2&NzO4$}jV38Rhe66> za1{+(=NgfxlA1v1`{9;`;*mmL+1q@En^D3ru!6CFh2*1J_xt5`qvfpi-==y^-_jot4Us|4SDiFS$-IE?TU$e5K36CC zjsH|D$-mYg!SinNBO0c}jl;|G>d~XZ!)?$^u@gET}MH))Mj>otIltoMNL6f8&8y)k|z4}joxig;7+9^W~bXu(UqfNLV)s`>j z4=H7Z&I!w8>oFXCO_IH_2AEWbj60oOi4Xq`60_R|qxN?%4q1$vI{QifIsBziq~#o% zf``i*tG9e|w2b3&_I;zPC~9hX9f^>AA_B_(q{7+y1I9!~MEND1)D#VXeGRQ4hy)p; zGV%H2z%&Cq{XO4Y{xi*Eu~Anox--CU33v0y(P1+8I9f9M210|OS^d|MpFrfyEcY|D z&26B2KVP29*7>SNB#K;>J82A`H{kz&FTfnz)QCS8_Xa4&U?n?p^W&oC%9eR>WSV=I z8-W0S48$y3T+-$P2J^urEnv&uJ7J2#nE`53BDm!zN7?9_hg8mEo1Gwo z2NZ(_QB#e}ZZ*w z34Rm@Yh^M5aiY8zcLDlz6x)7sx&nTpvrI=HTu(Tl?AavR>) z78KOgzNuu}7X60Cg)>Ua3##m-Nmv+i!(gwZt)q=l%6zz13xxOYg~-*`L3CAyC(i5D z+&wkTqqi#G1m~YK6ZrNX#yDF`y7HqSW;Yf$D>E=gcm!60yXNKq9Q!6SN>x(u_2v*{^cy)D1ZV0lHC?C$Yoe#=D2E-gqm$n92ygx zB9y*pYTi|qL#CM;^@@=igaeLsi(XH9%Zf04F|!)19X%s_5RhwtX{{MWH;c+LrqLyp zBC<_0cZS-x-*5^OmmWn!&2InVtcG`#W^YCnWa>z)v z<6euS3|vDgE7#d(vw4~dgz?W<(+BlIA7Qb^^9HQZ`W2-cgrC^0^`WkN>ruk{YmxV( zgyTvxvl>PwBgI10#)T`4HG@fsIWfCiZfXlIt%K)=FrqWIg@_`n`fW7&>wRQh;2X7o z&j`WM%4YO}C9>pfamEXAWp7)4m~lW)gV2YVsUYP6C&g4L0ZvhWJ!H)Nbm+w(EF z%qlRvR01~YjJguLQjnisBI>BB+>P|~wkL@Np9GY~r+pzb0}LufcOlHR6pUUbjC7tN z-fZ*))^ojz>eS_=S?K7kYpjm55|E}S|EKp#h-`grwYVhge{fmu60bu78K~qIzqRE2 zBj4%F2$CX1wVP`AYd-!+?^88i8O8q5Wt~(EKSXt9D$`ER6LA|9Yi|F{MDFanP8s$F zG;ezsP=`iKP$QgxwvME1U%AA>QV^m@QMR{UAxK>}LF~fU2R*>gLb#Wh%krPPUV;S# zpUjU}hJkKQZ30S>1Qf>qDOSp{N+#E@Z-mgSaBtDFc zygT=8PY=~cxl>{fT)h!;Z|z6g{UX+zo341}TH(IH9fW#o$tPsIVsW6UCX|xgg3dL{ z9WlMM7j>Hx4`e)FU)OB*WjOR^1h2LlK9WsX+NqJ*IeeRR{Q6_qxu*+(zk$`8L=0yg z47nSDjX{DnB}bdkYzK>{!S@G0fayRI`aM%q=h&70&ZcL@e)oyb_w)=H2~R;8*^OG( z!rmn-tu+7_G-H|lED>)kv(QH@6HERWnm^n`paoKa-&+8Tk9&JI1O0c5ZJnMzoP>r^ z0ty(PIbi3Pa%jJ#K*wew@btI5I+O(=Mc`4i4SMcgbJUdYp#Jd<$U7b$J@{#!csu;f zl>0ReG!>#z=LFg=rR66<;l}F>V7sh;_dHpg((OdLLdSZm1$NvB$7h+)D1DMqJ|H`S3M)r2GuBU2hl%ifg`*4g! z))g|J+K5U9IQqtSGorgl6uifhlBiU7{q1Dw|G=4Ey`N7UyjKdEqb+rDjvr2ph zAcA6k??tl>#WjW)qf=8I%+%{vyQ>o&bBs-x(rXG@{;?LfHbgX#4nWPCLazaSdL%P? ziI;pM$y}e2S4tz{rXvc1xq1QbX60CD&Jiy0lu%L;A5ZhFg&dD=FAea*6GiCEjGWGc z)~g`7fPmIzr;J}fLLYYAM4jmdzbo^`QB47G0Ra~pKO;c8^<}g^>Hs<}sZZ_Th}VsN z&ht7lhLO>cjf2sgO;_1-V?ZB5)ZBS#UHN-c;azhUB%nH31awE~486aOMXKU8G@q$w zav0@|nqU}_-V7`jc73Smw+prODmK;6DaVAr5$%kr)-5oK5vQ&JQ8Z5Hp#bDIEmM`> zbPnjmTHojp0$WwB>okdc=wBFVY@rNSk;_~J8W167%{_2fWkx1aUZApc+)PdA9T^4N z)=SIlfAxZ=dLSlpzp^q64p zw(V;NkbdqxLp_HJ&O2g-W@TX7>s}HsK_jZ*o#-##E@#BdP)JARjB!hEWcRV(;$$7A~;3*Snb~iblk4H5ZObhr^9~ z`+i~u$g+n72qJBrMhB0M>XI|2-v4-zUiVEHVkut;2L5h|Hh{64Olx|_YgW2AcLlap zlElr!-RMv0^fUBE@XDf8BR-?~7096u7c^`_OuY@R*?5|h?*5+8K5NdSF|1!gxEC9Y zo%zB}GHUX}vUN$vxyuNdVTN!sS)%O`CyUP+CLsQse6U`M#w4*th?NAW7*vJ zc!j;ZPw5KDh#MFixh|`2Z}(>j*ymJ}X%kVdZgXxH@}Pf}^6>NKWAy~I+W31L6E!WN z)$Q-gA-PDH;a2F}+}tWr1kxP&si()s{g_O{_(wtbYvx8st}>C(P%{?PHPmJV#o^z7 z|Iht&`8}y5f1^2+7td3`SUkJz0i^^Ydc$71dc%U(nF4Z=>gmD^@Q**Oi&}T z@U}8ut7+!__b8Gg6u5S0pbqwGjkt{OcuBsgaO|6 z0_Bx2%j~RR<(8IFbnW$(`#0eCO;16BPOmKJq|I}pltIaV&mIE~@dNdK%+70!7s7Hx zAWcjJ%Sg`V0j%|Gz?%gg)gimpxBweQ$-njWb@!M(BH7pG!(b?xMtDI(Uk#PI(pLR> zT?%st^hDXdV{R3lOzQ#!2y6$*`Nh#DKW0+&+$P#$P`~%$HB&~b*Q;Qdj2F!8(7S~o zzhizdFYU^^99uQWbwp(NL*rh0^8BHriDz@jA`4%{4?WcDYTS5)kip%4NA`FPQl z7l*!z1kz!Ds742s1o>ijqZoi|yTWvffq37h#&n`Dy`@Qhj!oLDMDT#jJ{2*!9)5kGl+e(`I*ieQ z$Q9O^$x^Zxy);@Pr*&hUS+^|LSgjvBSyttCM@Pgl?ZTWU@_fZt#S~q}y8ed{sW$sx zz#)hbFxDFDLDE_&RU=Ew@x+t@VmZ;~M~Tjeqbq9d3Y6*wyN(r*3y4_JjXc!%0ge%)8$CV#VYU%h7C4bTh!C!z{HKmN{ZWUHvmAX)6lH)jm2&V)_yZ&nhNg z@$wXBpdtUg7x?Q(m*J%v>UW^EQy)V>4JSoy6g4J; zY>iE9%nX=~!)W9!8+Yo!0j|K{&!v-ZsPNAmH=1OO+9D z=E`dKOEN~>9aIOds40Q^&k+P}u0qy~&astvWCjY!=4d3?Bs=dlqkN&%P^adnFL9nc zcS?X+z`7g=w*!&ISKh32F^hpjt~`Q<)L**$9KHpliQ@?XX6J*gt$+^0-JK2Q!orOo zx7BMMn5e!G!$d;U%1w}xu|O<5Z-}wJz58bi*L$YRttsk>7J)E{boUAEaOpY-ck(>Z zrLf>GBSRjRO{~j=02QY8$rvE#sI}m+^s2yUZ+ERH35P>hMK7h29eiT%q;w3iDaAfw zFO&zP_y1P1T7gh|jF)`L&yDcws6`;s$^AhuZT+kQj_{fwg+aou!Z@7`wCI?yP_(dV zIv(|r@S}c3n0}P|T+U_WSBDOv_6cFr_%-t5Gq)dWE##e{KcVfoAMA)`1GzFXEr|`I zpsPkEa~HLGPoOKv(o|_rRr0SnEe`sVKC^Wn6YcS;%x7kiFQgLD%>if(E=I1_rbYwn zdrjM;cTxkny)fiW*E7UyMq&;cN=bV7GY<4(9MuQ5yK_Sx*Z-x!>J*k_k3u>HB?GM; z_3G?B6+w}k^%Om3N-99G<}x(s@FivSJ0U*{634t=VKwBGZcDfB2etG<-C3+>6U3Vdj1aSA{<+XHMe{%CLqbh=*~bo zn;+`gjx@+0k|UTUSWxR$uHa*HY~F_$N_yY#TJazvL4^eAN8fd>0ZfD6JD9ntV}L(p zMGt)gUH7w5}Y5O4OVM7yAzpVstQv+zrkbkav~is2rG>; z@+EdQ$RS=|3^7x?l$x(yMr)M;{+pyZ(FWH(-+Rp8Uw?XiazavzPx%}LsQE4z%L-G9 z3w#68l(~9jcW1XEHBAomt@R$WRlH>Hdt&c>a*^3I=+|KjawZBbXlL;|pSSm1%fZ%K zPsE&!ZHtI3I+0tGG5v8j`73`BIMJ9yCdA<tqkwV<`T_^Ka_;b45kw&?4YNB**=OnY!CZ@rlHcY& zXLLzg9l_^_$Mn;Q_OY_1TT?;tD!fO#sa4EcbiW2Rfnu<`> z|7re?cE_vH`pBC}w+A)Yi|Sk|U?4Y-pIYf8IU~s;9|Vx^e01`GZdaq-!x@sif*q^C z2hy=byxf*wx_)_I9j=jE5hp@VTAy-fsa)26Hu1#Zk|q4{nF2!&=d=^>-fyNm|Mdz% z72m?`>l{()iixpBLrI=}$Zt9+9lnJ-WdiBe4CK#rg%5qaHt))r zl^IE!JvRya`zup>(MFpkXK(oG@!cQfe#3sIs#gUhv?h1D0^ReNx%Rmzfmse1>Bap8 z<#wi=PM74yYP5CwzrLI@47J0KPu?NXz0$NOE<|JEEqW+^Ysc_EzEgF_5rpSO??Md7 z;KY?Ytw;FX;XlI*;ZZ6?;GO(@{GU-DG}{%VLY#DW13V!x%5o(9(So5f z)-a?86+B4%S$nWW-7{oO@!`?YgjtJ{qqe7WAi#o{y{J%(T;cn-z|88}-*xaMJ2*2N z9R_UdZkLTNPqX*h)$N~vgQjSHY>+GuAmA@YcYQXLh&5%D+V6c)gC%$CdpCB@+`H!E zR}`m!hz&3-AfVV&`S{7{1Uzl2f8%?kA^CTJhA!oc0}3G(+?i*E>f_YkDz?1n3xs)E zJ72(|7zp6G(*2N)QYD&sY8bk~QTQ%fHP9VWSa|roI&HqK&6O$URGa@HE*#Gr0pk12 z0Dr|}atSCDGSDF36M0;gSicR%Tn3Rc8Zx=+J4ST4 zK)3YLpbFaQJ=sCIjIR;tc#XAsKgn?eK?T`HiwDTB`c(t~!6_6a+(j?kYJ230jS93< z&9S(uLNF#%L0Ed1mU|m=x$<~W(`2d3tecyXtZgD(#29vK zalIuAz6DMp*B^Ptt!DRGsjL^F!UKK~2{kV=fh?1cLr4Gg+KM<~*m?&Oa&eZX98_l~!Ma z4YrC@DHo(w0FWdQzVgd`_bVj;NV=!TbaXy?f49ZY`A?C^e|)b61$_z3)~gA9Pt{m2 z|3iihM()kaP$s}VfC3PV*IE>V-&*Vpey>veo;&h$^ry*(q!3nXAR!e1w9YoK7!JYy z8|R6Z<9Up>IGvLNKqn^jA4EO;*do}|E7+r{x!!pX21v6e{3i-iv}io6VC2d_sUeJ- z=4Y6*w}Bj|#tuz|wi_Y)K3m&ixA&PhyrK>At2xF3&41#9UG2Jw_IN1fUk03?G!o#H z`SgkHh{Q~24O0ptP9kgNd{y-!`Q@ykn4Bp|O{!SDFa^40Y>d2p8UcR{pf~)~u0svz z?0ghZxeE^&EP9vsoKSxxZl&;UM)KczZi|77g0A$I9+|G_y&z!!FktSlEojRQvcqQ6 zyH@H@0>w!C964`fat*yMGuMJk&iE!HPpswEb9keMfN$!=&xax)eeY8l?}R&zIm0er z#&%FaB*gw7KwrIP`F(T0^YnR`BC;s)7iW!`b!IilW3iKk>g%<)i0T*$bxx{j=u+C~ zkx}Wb9~f+9_G|=oswlZfcSupWG8APC|0E3=IAhsSZ8QGJrtO*=C>5nzdIQkL3 zb?b@SqWHm6-R&Ku@oY>JI)R0oz{Wn^)Kq2z@)Qf`c$EN# z0mA*8iQ)*roBZ(rP#MscR|M)<5mhhFn{Bv0kUA{yOKQ}*2JsiKb?`H>Pc-&4b8a#@3WmE3zMx4wwX=eoixr=xK2O$Pw0tM1PFBXvM8NNuY8@&B%RMZz2aIvd zP*+y7q_*0yNaOT#O)Wkk_CU=`CFm2;OaOtY`42cwQqv2JkOKn){M^sPZKA=|MJUqR zpYMD3Wge|Y8m5m#(oAqwLW0aLf6dq`FOe-)ma>-r~mmM?jP%LOnYv zUB4GtYq)PKzbab}F?8~_OOZ8~H5co)BTeYf9IHh8%-rWbf#eprwN!oRkV*pTv2O-a zEBNv2OQ!~=_0@?ksr`tFfxkArDzOJ*71d5)zII|ntMto6%n3W`_g_41QbwAK(|JW~Pm_SM zLmHMTc;9|QJ_`}B=N1hdHO}24`*U=zQKRo*q|Y#bJ%?lu%lZ{{M`PX()nujy6tWCV z^K8`w6HoLX14ZJABAUOGZoH@;Joo+qOer`3U0{6*dl$A4)H%J{?9lfrXfOjJNBjw_ z{j$c&;qDH`PvLow_WQHWxYEg%{motb0?*L?t?z_c78)B1dz;~H;xMuU=q6z$?>>Mt zHWr+f0o-veN9#_=D*7&VN}dIaGF&D%YD|c^+qZ!}zo7n~@}6>oy-zKigIDTGgHkdG z4sdht{O2fS9wplC9#IiiL_@0{()#bC*17jpY!j@$VEKB82ui1wOFP}Llwg>U`cy*u zp3{G784afy)ulYJYOScbmsWI?D}&(RXRCef6v8pnYfkt>%$3a;nPC2>cDcb0$Rn_q z%2yEN%=f$?A{cn)iP}w0Cjd{1{-LL0+~hlpEEf^3s07c9TaP#wYn>a>{K?$Bhsse? z4|pLqpN54{S8Jq9<8sNA!4~!uC(4QEhu*bHMFfu-(dMcqkca0oF`k+`3R4nL92BBo z7kD<&6b}Kv5dqNrl1)(_1e8kUu#aDgF8Y3nBxiqrbAOLvt*F<8=}fXz2N@(tUq50m z@QEAgLB|#m#+2y*HdHvKnhIo91AEKJefEQ3$(>(F3?@D2Ewky%+QUg zPQQqh7Ki5oHhoQC^Pw{(~#@mn7;lMWf0dTDzqi0LPaj^ElX zFFoW3A%c2$_okYUA%I*vAfY(XH)MdheCMG~@#?QHNQWoWI{)tl*mxOznp_`HgswEz zO$l}_b*Ep)e(ojyq)NO*2z?{J_YPIp`nVY=iolNP2vJ^!y=o)#gHvg=uYdu1MnPa; z*4D3?x(8WrT{)Aru9t$ARQ`pcY)3lqJ4o{Br73(MIAd^NI98Xk)LuYcZd3;_TXw2m zQf7?lsVBSB;-)FfQ`GAT?)c65t*!P~nLbiiSkwJau2BQqj8La%wzc>UewcRop9TD4 zKw~s_H1;zzLcbv6Jpk$TBa-jUjJzMr@yYFA&$i9u3uI&v7q89lI6?xURPdubI~Z}y z0l9kq3s743%S+0XpY}D|Qv)cKrTWpMj_YSlrYWcrXJ=>ChNBhvjJc|SdD51%wKa@S zIp@z}S?&V(F50#2UKt}put$Iy?6W1zi>rbp-T}Rg(-S--S}@c{43UEH;FMO!Ux%Xy z5g}*N^DI)fCpLYgbiM)i>-WZ#W3#o)R==0G>ws?U$Db~=J(RSV*)&zyByOEepws(x zj-5GE4sE8+*ZE)AcoS!gQSOoBA^nrUzCQ17c~~4EB(vFU@cU?~x#-B4=~YF`5%#Gu zryn0hg3au!-#J$OwoC=DEi7CHE}x={Ey~ks zw{<$k7afRA^EbKTRkNy7|I)N*%jQ^RK0!GWC$UGlh7R<&>$;iwdL|*i)`pe{O_eUDGEw8UPW!@GFXK56B1sTeE zp61nErFQosLb~RvL;LI7JAf_9(6Ck?0$ecbepU-Yi4oViwIx%PvSJRH?g**$y@d_k zmx=?I5$0cRdh`6-zFLAp>$5K48Zt&woaki2$Y^2y`rVNKw0f-PgjEoXkgPhq3T5p4 zTV&-(Gx=JIndhsry3CQ8VkhGxcQRLRLwmlU8)%EbcZ_ug;+@YMbWsJ(91F(D<3Iuk z$?*$zozZ(pMAyMSCtaq12;sjY6i+6NeYH-l2$tU@q#Jel5aYB3)|hnnMXyzh3eLuf zU^A|&3~jU=+BpYPq@Uq2ejTgUFx{cx6l$H!)ct?g zTADX?hPZ*nHp}a4bBApeDVnq2QRkRA+m>fHxKJl!_Fa>QBz80}Qz=1KHl5RvwervC z?rGxu2i`v+1{pLYiF}>WP9EeG5`a)C;98!{_Ht_NKUjOqaEVCkC~YsZlrQggKkdz> zqAyy9(n}xx7LOz3alIjLvSRi)r@px8Gf3p}_2q@@b|o%MO&6FeZb&az+w^C`8(!5Q~Mz>Hr^WPVm;)gK-+e6Aesf%92TB}-RW_ylXySvj( zdy$4}B%ANck>cKcEkE;wWVxl5vn`jNSb$Z?k-J+aiu0QG?xy?zGMP<9J4;foE~muP z{`_aW$A~N^{GwD5>@chPsu*%Tx`Z2a;`T43TK^D95yV~=;KApDv>!W6Zps5tsNRtc zmK^YX^|i%qCM4n_jh2ni;Hx4x9OI8j7uG&6!UyRcJ)0V=IruN$5w&vTWH^l<3%=!f z;+z1XVX0cn3hV4F6wle&uuwqDU~B&xG<7T@$g}~853L1OP_B~3VOnBQ>{~ETsW;FF zhI>s2>X<=_ChA!hHBI_5rSpMSAHkwiN{3lJ;FOWs)@}}SV`pWmIqxMumSh?LdgBKH z#Wj2I<3C#JFZjGl)zVTbA*`GfLy*asxuifrxr@@mn3UjqQdi`6wze!QWq;^}`;sIT zNm{)w;d&uc9S@km#e4J{SKayYQo_}58w+E;dyc}qdJjeOj&_%z@Doo8!yh(X;xZ)! zn}Di5FNbjBhL~gl6;g`!yw2v>&UVm=MOtpC72+Onf$YSBdH;kP_+U3Na~L0afo`8m zLPhRISze!%N^oH6!^RN=l!xHZwZG$xT$@Ulk-xdKR7O4*-jX+zWq}QyV-rvs8QB%K z3d$$EKgaA+=ZuVM*_;yQYfAPo5INh93_tk$;lcq`CT4fNYrl#;d1*CjZaG4d_#+% zTd$+5bekZtZ&0d~#*)=)v#5(EY8?av1pP!(3!z`PV6Y#zUi7T0_K z7|wMbgF^F!wJ4{3gQf7QcKpR_T>=R$qReV73R(wUSyL$gxX{=rF8Wn^VdJk4H(Y~m z-y#vnX_v*G1mA;F9hlKlwCq5s2;s%~=(#30a~@i31I_1D9Kv#p07zvjpJfMgG{eUx ze5-UVDp8eZuX{pxya==w2k(uusg#MhX?&wDO~vTZdf4{v?pAwr)1=r<%hKa_cy4|H zRp9uu<@9uL_}q-#As`WjWvwZey`?^XC9cODZy#vpPzLZZKAT8MZR_>z$X4}JCJ$X$ zKqO9U;nHnS6OjKHlj&uY=4X9!NDgH7T`$Rv_ky4TXnOU04f)^_)(^ph_pd#pMMPI= z(#`OyJgmHxuzDya%Z77kXKn41AifyvKIdj+Sd;iMg#8ZuDw&Rs;?IXqM5&U)2XdBLqB@A8y&|$0bO&zO9iHoz<)3GAm@EaWYlY| z#f^o9=q_rW$vb_{!rqL2Ta6^7qrLr~>nYrC&MS*$;~vW2aD7QklOKr$i#&H500F9Z z1g`Cbh0Z3M1FxvmjW*wL@(}=9z~_XAfpDX~PK*0`iC}4fLORuK*mRKC^ZUj!>NTj> zjHeJXC>IGZS%5c`Gtd+Mc8--kG`seINccQ37?6ZwUVaPBqxPxScxF zbZMbiT~N~zFoeMj7>zetPe~@@CAf~_D)u|=E5MB-9ZPgHMh9I&(vtmxgpmX1_y7KW zK>%%*^2BjNn0L#I#4**YCqM73ufIrk)cXKre%Mjox3L)xALR$XdO*p#gN}^5{M}(p zS531LO6UHC9}rA6**t1wnxxh56BZF86A6u%c?7ODE#ZCUgeD2@Is)QK##<+BwAC9= z4T-6Ae`AF4#%6SQnEufEdr+c8{7+P?q_`ul(m|Pv?_rxICHtWwiO^v1@IfwPH0bXv zdsMAlDqVr$68yE$%9FOt#^*8$uVjSo_GY2@gz2+kC}3-En?{W#TGo|gs< z_Nxex0tgcq(2b0lk;r@pFWC+C%D5pr#qKK*tq3peNL$c{ccyl5~W+ zQh6_e*_wf}8ysvK4f>S=hZq(N!H6aH-XYdfR55ncg*0@L zhcUwA{@@0|aWKr4&cuY$#vJIOGE|RO|CubaFA_6o6le(obnDHcPU^g#BgWH`Q>SKs zu+L`U9vbGS)J@DilgCf^Jir^1j=cN5r^y4VB-cy{j2yjW<)5{FR!}2LdI70TqA zsZnh*L&Hv3!9vBZ@O$vjvi&YVM8{E?UbYq4xhPdy6O~7Ha1!-5P%0`w`NyDf_z81O z6{Wp%5=W`_*unJqiA`5E!2TTB0?=LcSWY`vd2{p|dQmwQqS_W}CxxS>sL{W-@q?`k zjVYt0gtRLuO6*C+M8}+PxwGWk-@G|Dnsffe7~^7(tJosNvH78tje}#q5B-deB0PtP z@!!9t1(J9oKt9__Pb_?|z^eS&x$v2E@`^g~)nGZz7k1fEqRwGUG!;}s^U`Mv$a{PO z%IPcywN7|w(e9Kaql;9z_rz9@mB|Sj3L(`q zqxvv|j6&Ole?K=YGgs4r;tzL@u-xN)Z6h=oF*cPcF1w;d?vc<=jSscLrh?Y=XnqA{ zf$sEq70jFdpxm+}+5Suubt^egB;eyxNCD!06dwUOO|g+Xx~aN=p(OJG(Z1TP@!mGhwxOZuCKtb{)M4geLCs> z$w-tlvokg?s85LN)paX8;;tBi8*!ZP@W8x|0oJz4gTIN!n(O+2GT|3fO^o^mT!wRL zNI3~oa33w_TZhiy?xRO_AM4+n%Cy){{{0_OO!R1j+07r&7q}4L9u5a+p4%O%8k1&D zqN7$XnMl-~iyGyPl3)5m1l|uEpSf$q>8-#Kb0a*edQ-ewMA^*v#L^ZHRnML^`0r8C1-q<;(#F;BrTMxh8VGzj zZ7-YQGqV|Uu=d&49_Iml4HiuiQu(J3F*4h=VaO zMrC2#I4`N8tOhOR@^%)7EhD4&x4G8c7e;zkN4ap&pT$P2$;wd6GTbr&=sbk(!Efe_ zu*2?cZB1BQ66)#iU$`Fu#RAqSqTBzf3aHTpmmS-x##VKc3rWawF~HDk(tGC285+8H zbASIBsFzF@u~TmW6|;}My;pa9(QV%NeL*u*W^Vttiksi>?Z4b#`j4t))t`*8{2FnX zzqc6NK~{kyrkcuffqy06Jq~?Mh*c+j^LL{V%VdC_RK%gn-rw%tTs1gI*mY*O9|~V99!gZAASL21GC@d=v^dxC8m#)&M(%Qx`Jp|fqYzMh{ur3gKmQz`n1Jk|Ua={+ z9KA(kZ+RI1tP$#-BDrxW-P${KeP4$cvSj(IliLm%D#B_ak#jmJfR&Gr4LyL!~IB*aaux{etx#kRFmHfX?#>C_f@F=kM;q%1kTE8$06M4 zvQ+yVMzNU5&>&7g&P_tSHTY`DugQC43_Ovxz_1mqKWwMBvy`X$PH?uL~I)c)|Za?7!XN%&Yw zLtG)AHX<0DeoJtkA2fKu*ygIMRXL~W!=xClTRPSh8-f*!WA3e{`>|<2aXlD*Lr$7m zB6TH3rUH^&w*Y=%I%a-74u>{{cIjF%@ceI%<;p*+68+48`Lkc@r_S zAGQu?XmP?_`>|Wmed@2`Q50Vpy^W4r9@xo;S;t3 z&e(L0#8I!?kn9vI{c&{i^8J}=IO$)1{|Bh{(5Pk#=xho`)brU0+7g(&I9k7_&RM_E z-kdwwJ+IZ(nQz^%V_o84uwZW?npQhV?mPM26akEH$6p37@Zt59K-pzJ`uV3RF20ux zV$_SeUxSTvX%ZP?gMsPJ({bzpdE6u#D6r8xv#vP=a1}c`e;n+jA8fnyn6j<0#?|Cf z0+(ay=o(2@=iZpFUutq=69p>gvxijP^Pl`05S4rizz33h#PQW5vk^u+Lqiw%ovR{r zt*I3u$CD+s_#vV3@)x^TZ`us47w6sfm9Hi^ToRl8=<`8+Uax8LUNianB+4*5^ud5* zyhPzMT%m*ddt{^SsNTOhd#+-0jpO+A=LKV`eB~zH+J2*F_&;6(7oTQ~ayTzhs^q@~ z2fK7kKR=F}yYTp6gUlW{9djW_^jpDvz1`Nv%HRF{8uIO8=E~;8In2NH^SnzPildrk zV$Hhs#)pg()|W2Cm`ExhH!^=rZK!h3M3sS0pDCwJLSF1J%Xy{B*Fp?7ez}qU4EfJh zlV^s+?LMV;bQ`ADq+d}uhd%NS{QlxlGv{PRc#8{oywxx-c(8R=!v^W~96X)Xd?sdp z+xs=i8yUk{@t?m)MBiga4E;P`90;|kgr=i|)JWGoV-J`IyGHw4^F!3k#`j_WX4|?- zPu(`mA3S-rHsV78@FAQ25!fZ4rxWb*%K~$i#U|!W1~Sm|=d9-Un&kR4!@Z+!j05SO z)(>=GFVR0>&UHmFfP;^GZ@M4rNg}0D5X0{=*PK^1;+x~m>Of@&-6Lz1dqq|MT8^^S z0uX}^z9&tg<&~L#=lA*1`re^uz_tRmMehMpKZv-gX*QtGqME1!x0_?L+y3+_yVu|d zQnhY={~6iY?MYSbcw=lvg`_|-&*}0{1{_Yh5c zJ^<*YdO``2G1Zj>DCg?oclbEF?98z3_GmK$kldX-#`nmUMw*QzPpF~0uiweZNr0HE z3;r`JjsevTEq2&CV`rKTGS)99fTx>`f~M0;7A7%cvY>uwMW7F9Xbbmtpkdt&f6e;N z!Gh1t#nTfRd60;TqdOc6T$|`y`q4seo@#`3bfp&mo>NA&Q0$;L9Gdjq>F6WR4oPJr z9$`FL%$LOO@*yQB`(md{>sbbL?mJkHx&;cWAn4+oek9AX~H= zX*K;yA8Z_D5o%Qwa_P$Zn>~7zy|*XDx$?{~p+k8*tcX4MQ070qmCh^Jjo|pxBj|{` zSj$x2YWSf-F*Kw40gW@89NgiS9#ZIFX~~T*)DN5kgQrjVSy(K16p#=5vPnB6f4 zZbQ&aBrFwWbHbd@x2-U`CB3O0Unn}SM|FG?2FFZqg17fqh7=$mJox+~r2zQK0me4q zLcgHS^QXw1si!izK^L>oQ3ch7y44Qc(oS~SIf*j zW}Q_(59kbI-RITjrNs&KGl#-kJ0D-79O6kRZ2X?>$bM0(35nE9d6?LDXXA2jJlRuHcg4)N<*Xf|B4>kQ@mn;P1VJ#$nL3|rlMhEdY>EW9^oZKRmaQ< ztQno^=g}MFi>sG1!AMosi+=&2Aa*;bTTIDRf|^z0B` z@6q>#NNG5TFOeTdqCF2fz0m2sGSq6V*AOk4RPK++$H&R- zG~?SPvI8o*dKrJ&(cUQQcsL{2iZpC@lQib5OGz1hh+eFzA^-?hEh6ph6=gE2gL?yi zgg2qmcHGtT3c%Vu3P^H@pX=dsp0k)@N(ZFzhBC0S64BVx$rZp_M(*Zh(X;k#;k|iw zNpBk`eF5G@BaI4a&PJUkIe>=I5v;PnH?u9@Y)wiQ+rOrZ1lIt7EDi*qi_oH`(0;g^ zHiwM=)c6ZR0{`8Ydaol$aZ*NVFvHYuho9c{JVuw0<&;1NXk-fdjbzR6tv zl+kZ+8)Rq9oY894KjBZD?VA~@0o9U!qbgTvaNz)OUSwf z&CUZ~C016Js@EwS6-~OC$#%p~Ip16hewkES885%>Gem^}!DFCSsbiH47!~3B&o1Q((y5U`y?+YAdTi!q)_H}>zqaE zx{p2I-P2l4BfZ@GA8kcJg?yeid@h9{RFXR68a_{my-_7XA=qSE6n>#$A*7RKl5_3dNRy+d>?>< zG*3m<3W4sr-wM8bF&kEyocooF^O!>`R^RciGoxV1A zQqEH}&wD}0$GSE8|0+Y%%@K)x&o)sO3aBWv(K3Q1wgD~Nb2CN4)F%AbEJVmRq^9Xa zo(#bD&v>4meO2+~=WG{Mt$xjLjD~!Bd&lE%n-2x&?~ps){qevFDA_zchWGfsyZfIT z-#xmX?El^{-XL%T4m}A!a^0Xlc1KY67-MufQeViUf;^6HEnmCeHY0O5V7>cuzX~ct z#9lKz*vZPunYRM;$iuNL49Z8m-W(FDN@*p{?QcQSU4m;ZR(3DkMG%o^*dlyFdOMn_ zqZdD$RiXO=e>3N8gO?>`JOH{}h_HRAL6yVJ)K$et)E!W!6yO)MR~0?jdVA!mmkr1v zmgcMfIbGv?c%Mgy)H?&ocBA|uWF^K(nhj`<&Dr(Cjuxh%+CK{ylfe5y>-<_cs9&Z} ztIO$rolq1;Bh+`$azW=~>?b>yF zUC+bgaeuJdcpLWt&foP&)!5I#Vp>ND2sXZ$c}qwZh59clQWX@J-H2o1q2!(XKP><} ziL44ygDgct2Ncg^$O5Od!2%{kE8$1C^nIQS2VB%*y+Dmab>%DsOOM!3OH)-ct<7#= zmn^m$v@o|8U((FZizU=u!=x29fmnOT9Hug z`nqqF_StFZxx!6ovEVreDeh-EM(qegi#nG^J2ASCR#B9Gx4li})Qg!n0L_+-AgK`d zZt*i{4)JdpjL!TdvU-a5wWahzs-Ie1kK$5OVR?Iz6#jYG4i7{R%Q-r~wjXT0_zZXI zxvKNWu65?tepm?2aPF-^G5K+VRFF$f*E@MrR8gq!?~c9&t@GyI&C&Mc_uT;_W}jh; z0TzdOniZX#h54eNU%`?-e{I~}U&|XLXO5>J7}r{wTNJ%Nvbz+V(7?R6y0ksvb=LWm z=YLU>0mUpwyz(-j^OV#~g*mwtsNE>F6F4W3e#N1TQk`jBwm zqotz7$>w^jQs8+}&$C|1&Qb&~`^-8{iz-sg#4{JVx|Zjl$S3p24sHZ{&-ZB1Y|hd-*RnAL_JqH}EIO7QNw| zb4*SN(6LxrkTZT}sU#9$a}x}kwLLHHLCvWkTR^9p@&;C;&X?{TDQz}M!oed@$;qZU zK)^ma0<$#2c74qJMQ)&cxY{t98Klj9Rbe&HOz3*{4~{!Y`+Ms)B#g!q)l9$o9kGbF zI>Q;Z`R;byOd8ninZ^tkSMi4dFYksZlUpMWwJJXmK+-5K$O-JP-E2Fs+Hfu6L8-V= zGHvm8nkZ1OvjE3i{fMaQH%`sp<3B6{rLV~2tQB8(dw!&aF9BO+>rLhnfT>lh9iP8r z%qICLCZe?@Z!@)6*_6rRZ1QUX_;pl;6qeshb$)epRz%))^)(@n&{+7lxp!qWKK7emO|$(l&s%zKL&|_EXG? znl}GQE8!T2&Gu!*64g}S2RU**AZ~X>tiJK?)N|Ur0wisi1yU%(xu95Qg~B|Ur4j4Z zR-K#4&qJrI8M|2yz=}!tVgpXV7x;6o{YPL?FzmRTKi1u_spDe8S>A5!WTE%v{)O^q zWRKuzk%^;>*uz#sLjd2 z80H_Vz?N%Q{rVMDy&oi#N5+BJ(6IPxNjM;${K?ylJe&VCQC_71^3MjSAM=c?SAZ;Z zpVGx`&#$;FGZXyz^*k~SZvOft$lhW4z-05y9L=m3`-N5oJ%17XDJ8pjDsgE@2x6gU zGsix13Y_zjX63!kG%pR-k$ec98BB+oVhzt=nkaoT$p!$bY}+LY{%+3QLOte+EM2PqO4L z1c%$J#XNXXP{zM#qAzMaSiYAG%@3|pv)owRup{1y>? zbKLvi!DWsm6Ccu5i{&JoD6~*1)mAge+ zP07?*kNG^or9L#qiR$1>y8><*JyG2Qd>gOGS805*PzAqf07OK?n0ej6W#+MkyBX(~ zpSbOu`1$jN&wT9v5pnLT8HZs{a9v5!%k_3X1_NQx_GV#UAY|6Mw2Slku%6%~F}$J! zjheZvDtH|oH&O*%$bh#ivJDAOgK{CS^DmPvzs!JO?Y9?nng>2>&I0-UX) zxb2{$*MqD@vAAA^0-(=AN)D8TKr6K%)Yu@i_KpOuYKaU!DLGP9LNjXpml;}hp}ZiIq!~MJ zDP9^lxsPzV7RLMD&__3K(YKhI29l+qKnX*Hem@#6fFY3MrHE>d6^q2Zw>Q z@!+^)8Lr7K0+C?i?MVtIy&~&T2$Os}86LNZ*?L%8^UOm>o>eP-RCtRc_1i7qZgL=7J$eF9#C7J@R-@5+JWC4Xw{f?HicL=@C zM;VBiH9H@tCrEm98-KtNfz*&+LlJ_EK*U?w*bd;Ez+n$H+s-vfc2+)Xc$B493m!Hm~ahlvezKj&LwmKmfv;~p zymj&w40tCP7i*ky#>)sb$qpO{Jfkif@JhdSD^Pc|tE1`O+7pl6k%`rS2@F*{_&^P2 zu^`KVHqKt3B3xh2xs5+$*7+qh<(*a+a4ZHl>a-+iXvbx9vY-gxr0#Dvj~Nq!WV%W+ zl!k1vYo{JcwBgYZfof97Fc|z+MgE}E^d+Y0?ii`^}as?;4Jk>2er|I9g!UDyC|AQ&J z7pB#kJYi;M>eL}A>6@PL!bhC8 z_h@l!$8U;mf()$0HYHdF$LVE3#B}Om1>RJaXn=~q87%5a7t-htI5V7F`I3O4B-z6K zI>@C>*yXu2erVGV#CcuaY#<`3^>FV6?I57B&e~=G&;ybJ#$I3dma)Q;_RrnBAr4iq zbj4eH(^PC!tuH1^js=zsZ-2qS9_&taBfQ;6u{r07v{%<{mK==Bad9*uq5jG}OM_LO zuU&fTxv+$@V>Ft{P{O@&#kuA{+9Rjs2eY@B*&&K`J=G+X&X8u(QMMDp!wKx^|z5gr= zy%v!D5sJ(%kgh^VAFZ5|M!U{)_bT2o^thNfBg2KcmYBEgx5;`!O;q_DJH+De8u?~hgSaXP?=|~pYm#I8;6SNB`vv)4 zRhOAfrNN*wX6xOCpPwJf%=*gs8Z#Oh|L&gXIoOG=f-I`v@!V!i^l^(wgeN&TY-CwG zc;1UhB6n5sEP@H5-?-a(=b+a4_R`HUm&b;)!;f`cfPmDDurS5CanV#Ay}^eLU=%0> z`=NXT{svc(1|APmXJdDQcq$0X4sKuWCkwc5)E`z)hu93YtoK%k+2FaY)lM2qsDt1A zB$?`>2vAjsNe^UB?kZdx&UZ>;cEaphZ$L?iVMkF`&@ISty0^Q)mA^0jvYHrCPTzP} z5#})=!A_=VFPFuDGe2q8p3jBQAl<^98tw*pB%4_a`s9V8|AyGvhiwC9&&}k5>m2i+5E9h2EKC;&PV1q8v|2$UM-sjx{X`IY<2{ zA#^L2#l)J?4+V*KU#H+TL^MG&N59V8@q|PT4<(Yj0+2Dx1;1y!beBP$yW}r(-(5<| zMT7+&gcjVMXpq&sfYcv>ZZE$fOTNz=q^elHdaB<~ehSiM{0AkVvMkIocsan*f705- z+SA2Orc0^M>vqP2yvx|hANChC0LGhJL72_$zxO*cbIHD(b9|Xm)6dOFwciB2cjWr7 z=`)Xi@7n7>75|aBfYt*c0{GHzuUSnW9oPJ7F+U@l-3SNi@#Jt^Nv+}&6pT3m=f5+{ zF3IyF!pE|bobzKn+$OVhtu#{!b#rN(ia5@C&%vX3F0`;LGCDU~?42;P<$3cbW_J4F z{YHvn7oyy=7YIYF_4z_s3^S#|qm=ntK{L^7%Ce{#KM**A~MPb}CNQjOqW_dl%1zli5~rnm5rq zA3?45Q=3vqV-5DvylLspYg>j5^>Jv8TCa|$I=ik9=V%W65YcvA9V+JH*lNi_zjOS| z)YiYf*zq38+dYTzvZmYj1t>N}9S1a%7DdG$Pap5oKTX4C#DBOWKmQI&x@IJ;vB%5a z2v*S0+ge#z@V^x}FlcP-SnEr#^=0f9I7_*;PK2@`D$k=G3(UPOLnyd*u8qd$!}i9W zpjr*C(kq-VYwtC0rVv0?MiAsZR)0;7M!$Q`_f^$Ic+RbJCdU4K`6tB05(7k5G&2g< zvm3desl3MjhwntYx^r{R6t_Dqvhv9DB>;SpVqP=yOD&e`Tx(EWSI1aKdkKw($&D)2 zv<2*!!XGy=&cxDFp4a|BhiqH8k zwv#CKP7dv_hGK%KJ`EguXk*QJRQ7W1rg+jfQ_&~E93hDCQm-o-AWmKF6OsY^=~j<@ z>@60t{2JItwz^T!M{toga6ZfokDBknbs}6)M?hzs&pWORHhJZ!a$RnFHdSH3^rKSG zHua;QWq@virc~!w3c2%gzoN0?l8T`@X_sCH{OeQwQ7K%YU!0)J9x-xn zJXP1|xGwlzrNFAxrDrcHf7E6HPTl}8SJl%B0HHEA6%X#8Saf>{BYtns>X>yRp~m-o z?Bql5Xvow1R4;8?^;vrz{)y1r`u8tm7%1}ko$l*vLEymn-D;(o_Or~cy)`=D*<`ei z5o%g!u8?0iU~C*)pYeW!zI7k-bBdX64R+H43v1zgxOi zB_wG;9kKBv#cI|}_KO&p>c43_itS|MSu3I940NmjTokGAsWG;6b=Tb&8wN$1`+pd( zi#a;t#VD!e!_&fC1L8b;i!TbtSi1kzb@o`)mFxFZG;sej#~hpWTrmVBeona#4uysG z19on7S{mj!#@DX9f(O~32D9136Ln*Ac#?=lpOEFog=&qB#L@T0VVKV$jR1IIs)W&f zQ6c#Jw#qtrMqHAe2v{#W#9|KrWvLwje$|j>`x<78!x(L}za7j)5Hu@;eLpcVAzPW- zSVO<3bnTj2zW6!#*`Gc(tucr8`fLo}t2>DX^B(SHMOQBuH^5C3SN`n;-#T^0hn$?* zlzBPt_nd!Rp$s>NY)yow_8khgC0dCwUQp-&{WdX?pP=RXaeV{EZ_1&5w>cqrC7H!= zJ1L)iiL5|90v??XP!k2AwnaH@PQO@r(R9 z>YC9?mYWf_wW;OJ>cL(#__sT41lk5>371X4m4YpU#W4X9jrJ3V_mvjI5^;f0dhJx5 zrB*r|tYffj^`ACR&Z;}!zBFe4=vp^XH@*XiBRso+2W(aAOy+ZV_Ds50^4rngwfMP@ zzN3?jDJIi~NhEW0su;Kan;qK?B$2D#Cij{vmB9}_(1Uf+Gt51juU|UL7Xg+WVR(r^ z^nM4Rn3z6V^0Tux*Sw#EFFhd>*H)$x7a=ZSWlx zfT=*1Bmi&c$u4;saVwuw~x}4M#e3pra4g!-?OG;3Kt`zl>n3* zLuQZtY5`Tj-Ckwq;NR>hN2dVQe$UtIRSzK!r-eH_I*cHd()1|qWfD_Op(~RjgcC$m zIV>mQ(&8y-c>*{AzN7+oOq^|)vZaOC@=73%8#ii+X01lm;e@gcq8>XrZgy=_fS zQ*ib&3is}&~&ttn&7g@4fkV2eX1Nqa;Kr=hQj54OGm}sZ=KxmZ#2f{ zrIx$hj>ZsU{gWEH4Z`u&$tRr6J=l3Rs*GUHL(708AwFX+uN*Et8o~d~x~{oGah@x_ zBg0IHBiKijh3o6+eq=CXe8*o!a@-v6I{nLwHtqNNY8HDEae30sBh2t5*AQA;rI3e5 zt~XpF5&aIQ{NP~5r&GZY*WKp9=_~yht-H#u&J({Nqdnk4PzpGcsQKZ?D48Dq8ZP}l z^vkJpd=TewB@qKRJ8y6MTA?%rKE4RTH)_L=nZKVpF8AA1cE(BNVbGEf5)>L`uNPTa zOibpp4#v8mf}8DXm^9<^8%{m^lU z;s*tVDIM;G)_#Un5BP{;6LrkD_k_Mj=EdjSv13@Dgin-s z%^}j1VD|znEWI-ExkJtJCCPJpDw zh^NRMUAlUBO5w5OPeZT)7+D+T0!0c=Xf@VO^|2~j^@_UOS1LR{XgwOXrZWy(rb?gW zq7`BvR*Dmg>;HRj0(5^hg*z~Vnz!g?<@I~5sr|?Pe|VH`V>|dQbBbR)q6y*PXbw*FV_1&pxk(tY zQVOSb?b<#s5CJ3MP9GIP-?4a@_jLkq>xQyLX>%rM2Cr(CC?OQvdSt1ng~ZAcdwn$C zlN7oC-nSQ8SdhA;xf8;wE+q0zz&tUmcd}&1orkJ2W^FUpcKb_fOzRp`R1=E4_8=i! zQ3y5%@_Rl!0s=V`sQZ6csO5886|aCii^ueU$(CFy9Wm3Q#HMK^B`C(Fxp3m(Y&ZQ#Q+{kPC+@^iQ_PWp#^~-gh6_e|Caqkf3uQycuk{l*_3M-kaUd+l zO%=&oP6f>0$4s?je$B{mr7vwgMse{fk6;wHX?plrb7eyul3NM{DeDNZ&Q$D1VWy{B zTI^cX3Jb-;1IrYR2}MO4DeOcUGs5#EiUi30p3ar9#-@Z`>dL?LpA>C(U+L-@9Ow`1 zr7}7j4ESklOcJ#`&I4ELlA;KN9J}*iv!))KQzJH4*E5GRG$w4$o^b^Ij+)+kuhy!% z73-2zoSqnf;S?(f3*rcLEi+BqE#q!bj>{S=Z$B1#^GiMUe#w6?e|;ZW32%-(-m=s3 zHWz8sg5b`v3+hy;{W=@!|4<=b(U_D0?*j~Z-+%cs8#dSPou3(iU?0mYSlN)2z6ZF~ zK;=rghyvT+NrZ=-n9>e(P!hdmw878j^&^aqi7c-#4<0+%)!&fx_mi9V*3M z3&>qW_x(NWyJ?<~G!6l~80h})TfJ>LEqz`|CYN=se-zEp+b3ZD6ERXWN^8sx+Y|xA zWMq#2thmt`^blbkO?)uNN%>s_HRH}tIB{h-e}Y-NOB>BYi7l-yE;{>m_CVNw5!ppq z2-jT`72}cS_Q>U!qs{5bH#BP-R$kBEu~qVGageeJ3UW2%pDuslW#jFPp9Xl+*YN4{ zp`l~$L;)GW6z*rwgoB7^(M*dvs~2n_e-s2GM~!O5oy8>Kv>dM*AhrnxMNjEHiJ=S~ zJKw8;L*m1TBTR~sPy(o3L~M8`ZwYc=MRauSrxo6R=hCjUNI?NlcauRFOX>R!ZvcL9 z@?_zI~-=+iUMWXWOEq|nw2q`2~Cm0!(Bbf6g zJ8)pb-rKXe)u9?#)I)D}UA>#Tgm{=U<;R%%a)OYqbJdGO9m;>%QO{{wex(+9s;guD zy`K$^+I{s$(cK8_#V^=W*SPO5s`$1DpL52U^ab%`7$V1|O(FTLJs@iRysXo1SrWSG zQutAQkQXP#h(h*#GeJmTk? zC?BeL@~_CS41X*VPcnHhB_H5tm*D@s{Ga&Q0_1i^nWs^q^W;5KyRsYJ$Gbbd0;I+Y zy)0%!=yR3)pXiOoED^YW3iWAup7^UP*!(Kf({H4NWI8G7uU;q@CEEA0$#7M^$!%~k z%1J11g7`Gw3_ABSeG9>V36K5_v^Wf#m%q#iwnO>D;(K;S9Ep<%*jqr?^K^xC#n?uO?@ed zdTESvw)m)$e||h-I@IS^_GR?b;FAJ@W|k6oK@aclZYb}+hb6LCJ&P~9oY64Cale_{ z@}KB4>Y}`vWQio42U*v|cf9vI9pVrEvf>q|@_$+Y^h?521XTR{v!Go68Ts(TG~=X5 zdxx>-ISHcIQ@kXaQ!1)F3)G?xnkd_;b#>D*%&1EzC&XO*IUwJks9-7PR_SI3_Cox! z)E=oh*wJe1QMiI=U(4}!-Skwntw`iQ0SN3J&1L{8UZH`t?{)l713J61a-xufJ@Otl>Z-Hq*s2D`Mw|{s?GXl2r9{J@z4y}% zjt<8-<1ArXHN)Z5yq|IlyAAe!%0eZuAutlY95@+?zk^Hxu%)@6fD9e>6kW=1{%Huv z<?pWDuV_BW}Fnq-$&8=OMb0n-W)Ag zieems(ahs5rvy7#Zy=2&Lu2+Ac6S#n4W=(;joUo4x2btmR>ac@RC#E*v6mN3L*ow{ zy3GoV%CiOw(_sCp_7uw(dMlS9<}|R#t*Wtz=`SZi)>-a8iJrME?og!S*`Hq~@mgM* zWmDnLB)p*Do{9LXFFI!*5|_4bko@Q*a=21{num?s?J`9}=>M*4?=X>omf?Rwc=7N- z&O(M+5;YRELz4>12GZJo{!%oO?Iws4({2!l;5n=i79sNk-(qEmKfg(P>~-~E4zc}{ zsUs}f>TN{Oa$FA)O4x8z@K6x%dn$lTz{)h-=}AMIkk-Q|5i$kugfpVpUcu5OQ#VE@ zPIz*aiy*;2v#W6;1KmxOW(IwIaigy(TToU_P3`)#_2^9ubOY4fyG@ndCdseCtD&I3K>IGsjK4DT7CyCQ{j2E$?y6;Myfc`%?5`jbFE$;M;l_jhw?7zD zMQ(0x1}6pV%{{A&>ZgA6ZRA$1sI1tCI0ppYfiIiBJFEFowlm&R zY~dt`*jDF9mwWD+2uuQx4>pf8ePfvPX?QF&K-X0V%S%Whs>}VY{PXMw?!KtvQkbet zybpbYLGOtj<#6T57x`W8(czK^^fObDJ+g}mVmvYbItnKa0p(6${Rk;X84;YtJgnWc zfd(XAr@$iVwGCr#xBti)QU!v9l)WKPY~>2Dr5`ahk$u)!*+9Gp49!^YN z`=JoP)rka7PqYzkAfUiyYNKv-;jpE;`2>8xoTs^QHEpClyOT#EOVjn%BGQ}_Pqqk} z*fR@1PYO*hle&s0!eGwoqC={(@*OX2BwQCW{;UKmiKOB!daV=fr=}Z}Bw=6$1Pe^E zrrFQO))=%n#8#as3&747E}84ac}#g@8S5=mH)GzOl#BzVC|!MSM^TY^GNQy1JXBDa zdg&5y{hzV|8z)Q1wKs!hsBPjE;dfiMrnzF88TNFexDAOaht}wRMbR<}1#O~{h;~HX zlL-mBB79tx@LDOGAB7frz<=2kbfygsmpAi$sAiA+Hm9rGv#h?M`CK*IlKA@*TTa47 zGbxXV8d9$Y*RQFPT`Ox@h#2h>{*1+LTMx9^(*FsxTTz@Jve9hcI$_|GJDg|k`0wBd z@R!8pP?yHCXkL{O*hw%rjnzmu9+Bvo_jl#r$EiMP%g%7`&e`tN(7$OuLC}si2k*^S zI*TxtXGyrwg5k@9?zQW5RFyHc$(OFO(BTA6Z(qGEkC85w-hNM^Moo@JuHkZkz-9w{ z43jx+8En631vKCZ#t^k=E+wne<{zS7$Gb#U*zMxTJ%WXWMpQX&a}cJ`s60=zQaSrz z`EWGq-!=-`pOajA>*CjP_px2g86rsh?nC*u3t*eN-CEI1 zO`iSzou=7_%`ac!ws`M#tfwCC)62#u@+*M3nf=y<(lO)0Z8U#+Y?c}9?UROx8IFy+ zh*$Uh_eH`t7dMbyZQ(NS%2j4j9=r^O%iZ6b0_Wn|>-2C>+k19W6uJL)Lmet21lMu! zMdWtgS3sI$cp(6~g*IkoJ;U-lZ(GH9wSg=_fjPUL0o^6-Nt7nAf*|v0b9k`#>Ms_E zk!#$d)bJbnik#ZDe9fedtAqccHyDS14*PRIX%Nw+avMJ8lfCZ6D6uD}I?aUP++tUf zi=h*v;hV#`4dsgB>DlY0d%kE#D6ei^6-|k609zVI=#=9d(HchkAr2-MkQAU7e+Q}ws!paXpiqQT2s^rT9PBR8nmAVI|iYJhkM zuNs%sWak^D*iDG!!(aj;IsEYuf!Ob{Z7jDSs5U|p4@J((ol5|@g8Lcuu};koac*bk zaRnFbJGY(>BdV3eXdWebbNI)-Lxkvn9C-Tn|8?T+N;3Ge8Smw()x(p{(6VS1QS(Hg zpOg;@BodM`$}`L@zGeSZF&lyR`8(tI8QY zKbGZCJ?4$I;X>w^>&*{Y)AtS?dOLI=yr7@r4(UVPvj084tTsBX;fVJlaR;E(N?eWN zc&eOJHHkSG-j}1Z{;n8!0oR__OcwDug~VxZ}F7c&PF)gEq}-QWGvW|-^(0-Z6d zio$rnfKY6&OAt>r1AcJmBS;Z zUtJ$b{<*IKuc-f~oq;WKbW+{GkPBv14uF^?UWH7W8O;?L-tZk`GIxD>7SjaHUdiDU zLcu|P&9N^lO=r+NJlM`>Fq@%sTX+%1~V4|_%6S2YrA%+w!5#mv>h(%NS zVm(R<)xF7#vN8k6M%f~i6q3^3rpdLT0qqOa#jZ0YUMa@6&CcHRU$r9!m%LeL8bKA= zBhJW!`93vpH(F!5*?BlI$F|!&!tb^OT`LP*GN+Fr`8x>{X2YBb zKioYnYx2&T6JzfyFT-nKmpn0P+ONe8$A^R_N>ZsMU$R_;k&rcbVaS^7oEzuJ8FZIDzg%G%-#Ee^%}z zM4Y|XTdJA0c9+J0n`X;Bf{x>jc&3=reZLL+NM%9pj#0XX%o(nidoAm$sdcM$K>Ui% zD@S~`giz*gwM4NN%jPS)aIURjRe(Cby&@pa;cn7uFFoDbVmGzPv~JJWbaeim{_Bdf z2kG_5)TryN1;xkj7@8QA6v?idF`ldPX`ajD0D2f#M#FbrSWtLiYSi7)w|X93+52`Z zgQo8}&Njgk-xHfXVaGJ7R62mM@nfoz1Na^|4Q#LcH9)qjH;y(tY}R3u-mH>BuWadV zKQ%J92SNAY!&k?f+Ehy4Qe@$o?^~Pgd>Q&!o7d~@0)k3tyadMmJ}Q}`+>a0g*m9H# z2dQ$Y<;dug(O6|wFNtz^K&%I(ZG_U0oHEsTJ=Bu1A>r$s(ixkb{+ab7=bE~Vqt(u{ z1=fcsuAS@trQN+hO@F}oQfrb^#BYe+Z8M7O5u@0Fkg@PUu09pE#npw{&BoOI+nZ{_ z?`HAB_W5~1lTXxiZDcYuf$&=3pkrFqhR_+@>8epjTwJC1uG~jlgZD??cGo~UANsQU zZUFfY^oIXIL1j4gu_P;uz!hyS@%NNuO#rD!-!oMnllHmQqT@CwH@FQlv-KN$`TQMk z?-Q1a6(@Vjh(*rvqv0RkZtus&mbO>^wOt-#0nw}NL{m?*f=0t`Lj#ghyvK%1lPYj`v5z$6Z|>th4^>YYchOB=q2ouTp+CLXXO~pCPt|+Yc3X<5??I$6=xiFnepCF ziBRV5+lwadgiO{(P1i+1n)ZFA}nnIl~(tYDwni=8gnal2OsO9w`-Bn?#M$d? zNe~vY2uHrlJiOP+`f~{o2SqpSud~EDIPeTxj^Zf-cuTECw;%c|!{&dp`T4riG-g8V zTBG-sE(HznG5|)qehrEBfie+`dfe0eqvMzr5&yN*hhE#fjy;P}x>g864FmuoQ3tS= zC%4lz(jV|Tl(EJ#+IxqY(bF~wxPk5!d*}I{2s-WR)EQZi;fPDPM|UeLZ$(Tfk1-2! zg8?7Pz|wYM^nR01ox8}gX4u>*(XX7KB4S<;qH!&1+R$K9D}?KhYRpljY9TP70|Ej_ z!tZ2Xs#*&pE#LEJ(k8(SPAC>8Ym6-zFz$Byik*~ZSnIu}8Rm=r^3e<>D7d+L4R>FK z!OJroOS}j9L83hRo2mV8USpweIew<`n&SVV9|g(0ElcsmYqmbzAbtWD)mIsJ=lz-R z`M$#~;+)IVO_ejAd0TTnm(`RaD+3<32gU}guh>0S*=H#8Guf!mCaLvcb?9V~+=?OG zDfcr{LjBev5X)<}$Do(efJ}o`>W7Lqj3-Xts zmp8_aN57`oM@tXb_0(=SABkQ0`?h2}et;F!sg%H)!C)A-Mynog-Dn^#?*e)cCB1lqrGnnL?5j z{?d)yJI=Nry?gmj##$Vq+L;@t`se=8gu4Hk(o|@mxV>4ywng8R_3Eo;Mj4GO*Yk4y z-Sg;9D;KCywq&5QEE@-VFOs`|GTjOFSbA*Lo(*UWxYm+N$JV7|u?ukqa*hJ{1K7_C zs|^K4-Rc=-|Bj+p?0(tz+m$G{G&xMgla;#!f_~nL@a7zd<fp4D~ahnYchymNTZHe`;fyT zDBoZr-ImHvpTT~10wV(z!9C0#_yd<`3%-f5ny#jvmX5X!Xrt}< zMa8AQb-ma>PSV2?gJpUfMl6IyqmAwNdD(z@pSiP(?Ne6v@TiFL(k8tfQud`RlA$HD-pa&uewQ@f5C;1M!p=Hlo3@T8VKx zf2VVwT-BhMgZz2k(9)M%07k=qe7Qfq$5yZQi?pQ?z#=T4yIrHWF0gKAob$iwL(ZfL zV?Ii#A}|6_R=!vK;~hJyhSZr}KBqi)35hb;*Z%2g>C#LG`$E8{Ynf8viy(4$@tj5m zCMuRiwWi*XLbGdYgvJSknXI=&F6=d}J;wM{d?5))y{Z z-^q5qr0UV|b8#7;&sa269YM-JFY|tJ^0?RS-b+#JM6hz1a6V?N0;mIf#wlXCC${-5 z9kz3%|NB3W4ZD0$L#!gCBrmIcEGy#T7?T`+CEZj{?H=bc}5K#J1GLLD1yT;kzMb)-Udfh}W)f4P;9uECOmUym7t4+{oY^r!ky{%HLS(HCgQxf^a=8+3@*}^+4Eg%v?#>e%-IoOx(b-^ z(EiYWdxsZ&UtX(KD*{E3%qP1a3&E}{*Yjx@;B<^|;De6_gf@ciEk=W{_ZUu4v;$-9 z{4b#1<0d|@98i-)M@LJ!@jt)rDm*U1lkLnBXeqd=3pcqkF9K?fZq)vqC(ic>k;5^5 zN8J6&*|K*;+eO8)iZVbjWMGN+W7rg6>a&->w{jn`U}78f&OOfl<7h7Kj1nEX3%@;P z*fS2TvCXWilOie9H7_OI4@!T(=~7&0h(#^P6wGjA z8J5MlL>>Q7Wqw0y%4@y3#!|yuaS**QC#Ns=aYkC=C#b6V1gsw`!t)>7J;=(v*2(J4 zx-8?tvA#x&{)CjJgyLUh#RO#PHLJBJE!XW9GkC*< zVv-Bn{nS28cPX^naod99PazVzSWl%7eT(06k^>(v8v6@hHZ;+>P6B~s)NktEHPXiO ze2sm~(+-E_NB+~*5I?6O7B>5MGN^F7y537j?q+~-UPvND~Mdas86es%@YZdooO!N;n4$%&4>5B0WM9ib>lCDB|nQ& zc5b2(`mUj2RCAWkMLdFKL14*Kv2c*yF!j3@nBV#Gs9seUFN=ruJb3s(f3tdg`8uD_ zXL=ju*D2dCrVR=}0NPDc&iTa|Y4xdK=VhS6-vGrr-d0%X)UBp!*ar-(~)O-*`jLRS*EmxHjl4M{2K|x_{ zikJB$mDng?jd_}D;{N^nM@!SKpVA+w95~Ac_M*`bA4<*0{P@%{gSkBGlxtt;u;d2* zZAAy%`%GY)SNggkddCg>`8|I0mDspE1WE+!h$`{%pWP^{dR+WzWBj!$moOI*n&Pf` zxQIbj$EsX+O^TgEQsw$JQ-@0dH`%w3+%JqjBl1t+0-kQkQf%*1`oY-p4Cmn~-oE#~ z^uSw$xB6mS^S-`3DhKb-f7SWeE=A=!pOMhE&{fRI%DA&~&2SrAdOdxrmc-at^a6<2 z7%d5_p>c!ho7eW5N-{ih--PO(V11dWCI&e4!?U8!XRTUxj#5O*5N*rR&6U6ME|)`7 zrgo=KnI7TZ9JYN2AH}Ud`MciY8!@?OXBn`zDI(g(dz`xYDs{BITOZPoYyYkVDt@9I z%WF+*D@CDZ=j8o4bY$X;e06zy=6iZYYcIxc6s0;TmSktL`L3=vWTKlaBJT4-(Xeub zFWHMLzZb+Dq^D~Pb|NDy$3xeLZAi?aEd@gEYcD<1T^G^c2&V`PCz3q`Fi8<&joCtc_|Ep4{^FC8&CV{GU>f!Sppk+(ML*4Mk4;jL=E zk&F%BeuI&5X43_^^ql4zAc-0#c4xh>udk;QIMSy3OzPK}JYGbF|b#pq?7KJIy#MaBv3%-Q?zw>oUqxO_m>^Jy9=2{yMb zK(yda-HmRIW*%O14lL&7P1{D;@$qEMEvr$wCfHc#RLb+t1<~tBBkxHss%SJV+jTW< zV?{Q+^UtYKk;iAAJ~fV4S@;TW;FQ^OC(&>rr@~BLf?@@=?f)zv@4`E|uA;IKJb--8 z-~Tu8HTKnYwZp}Gk!zgsp_7zO_R1gZEng{ycN14G9q*nFY_gLEU{WCQot}l4G~&e)>1o6;-4xKoJ4!lzmDh ztsZUv4*zYS+CrH<-t2f>ddjhFoXZ3(FzZB#l2mI4eQSp!v_C+&+hP6{+(XeDW?x8^ zCwMBeltCN=)L{35rFwEECigzXAhujZ*57-VxjWewWB3E?JEot@M0;zft9QR_)!)7+K;;qKy0q=Uu zXmqdw0!@GVnfK3sVt381zx$GgXDJ#vgNK>Fta^WWGx%}ynDyb?y?Tbb)k$`<_w>_5 zPSpAB#rmbS<~^a7cATM9FD15K>;xj(+0p=K1sIQR_F+W~PjAEKc5URj+AJEY>1F*D zbHyNwTc4}puTY#e>4tSYP7zBv>anX0s!FQ%HDmOCcDSaaz?S-qOx;)4_d!0!*c+$Z zHyWxdUp#xpKlUaSH`T~6l`kPIi$*&-ruf%QQvL%Qb_$FPLEh))7Cv{Z${r@n(~T3q zkNdi%Z1P7&w?hc0H16h}5SC?gKBKLT-pS|fQJA+s1Aj`~v-5jk=_=T%y?vhrg%Rh4 zx|azkbcL&?Qdcr^J~T2Go2;eH^{`K>9=C;@Ob8U35aPEb)B!cFyUkcSEIr^Ipn>|9 zms4NmZ1z>tNOKW!?%CI_ocf08FlA7k-%}~GH_jrz2;fI2B$pziqc;RvVJ-%D#Y3oV zw$u>FnyX(a3=K2N?ZM;XYJFbZ@~NZ$h%7MkV)E!jlze``381G~rc?Qa+dD@O}I8rM~LVtuu)%^G_d6HiRwh?96{F-mYCA7!(V!8wjtA zxoH`oS{Q1#6v-Y`oTPD6D(_8z5<%vdn+QuvaExMn<#Bnqpre(D+!GD025Y6$|EC3* zx9@`{Iy(1o64Sn!Eku$uO(?2jUIPQ~WsYHzfCH**&|Cl&rP)5ZL z-1!jC5PScGW~wP5>fNmiS$*42p2RPmmfx7TY+3FV2V30U_t5dK%Kc!J z>)~!!DDuuyi-<=i5XWARcIe#Ec|!dWym;W!A@j+aq^M6Zu#9i1c_9Hiam!J9&Hclu zSH4-pz4hFiRO*j2pq{sW*$>V?n*Fo^?zj#VVrJ(1J?FQaxTFxFbC$qL2?!q+yyTLa-|9w-F?C5p`?Z`wtNun5I-SxdwQfZOG&oS zRuq7oOvjnP$fKK2BoIvyiO~=&GKD(Mj~2~j($sYfG1L{+ArHFk+6NCGw5turN($Vw?a+#9a`XT|Q-_;3Zk|0lQ`L3XuU4zBZ70)d(==7Aa!w+OK!&WUs!0f%rSCdd z%E%(q5N=+-cClUizVIAkV;>_8$^g0`?gDcpNBk%kLNHAl0^Gn za4aPvDF7q#2v&7F7$!E=Y+3rjMZ|Q+s?DB5_0fzk7EomL?0dzGa`uSw%t5D-$V)#q6w%9s^yeGjYA;9 zN!_Tp!b&!ScC%4X$$5S<=Rk(mOTWHYrj%m{94ljxA*Ue^-4Fty!yf?+z|D(@Nf9g7 zh&Vewt|n6i>e_y@+N3;8nn};x_5INIgs3^+zIijHv|6uKRkCEs0m-s?o-=PIRjiP} zNG121Zb;eYGdq8D(f30LRb5Z2*mQ0)om4~v(edI4z=o6&(8U)*i~?D_%Jyp900@d~ zf`>T-G_-wyBm7lE-H-;&BtbAJ8xnyLiCY8_m^n@b(2P`KRfT!e%x1A}xUMmT4B&iZ ziebw0YPA7uje`;7!aHFE0zwo$4)w{6+wIW*?B2Uuk+J`50P6BPmIX`$kRpLvR!NWq zpnJDFp3m+)bEj@X9qRM*i=iF5ZX7u5d>RF|>-DsmY**_5Kn9X>x7p?)RWXJTCUxC3 zO^DG)4*j;JvEN6f4TYw*m`uBBv+Oz%8AQ6Fj~qBKhfr75@yYSY@yTYjLd5lEbN29T zI}9Z;F)*`09AX^0K4&3-WU#(ih7dS}`E-Ve90DQI*%<&xO6%ovwb>3L3_c&iZo4(L z#qnaZ+Q^UxQzE7cfQXT%4F#k?G;3npr7)q~=krY($_+I&NLj3H12Yk;O4oH}5Sgl~ zo`isEBDvpe>*=HlvCnCo_d>gEH@b0s4kE5X7`ooFq%;89q^YhiCIo1rL*MtwVOOP5 zt7Hn0aMwtIotBNacEDxAxCA&OPy{7#(^}eWHblrFI^}!YZe=ZwFCoCdRUL@~8>vc8 zgA41IVI7CS6p5m$m1BW1Yiiqd+jc3bDIfteIBVEv3#yO>yqTp23{Vl)b?ufSh}gF6 z@?t4!Ly~?F+jaNNM8vb@5fy0&f`l=I7%R84^%i%QJPavqHbct8Afn2E6p?_{3k_9J z5D^%9W}Y+?uB)6g3_!$Swm4dBx7*cn321}LAcACs5ZQ>xV?*ZjQ)fjPFN2b_r*XvCW(AQO4*L8@IdD{26YdZj_>w3Lji)tNXGpP}Ynft8kuG6t| zzlXK$NL=P=DUN$w;a7a2fr+UlV}*!B0IWc6a0zAz;?OPwG9qHAYOJCLN+zkxX-I|` ztH2nES&4)QnJEV603#YwKtfP9G$aUB{p>T(b$PhBSYEVig@U4VZzBRCa2AuHnITok zs!A9(o9%;#o8#k?7~;{#twCzFDvD-@iW$Lzj}m!H@)? zZQJ9jYU+B~wgh0RDQ6L(l!m@%=9@Qf)^#01XuEECaY5wgnA_Fc(DnupVz_ndmWpgv zTQ?7DTYqoh=@4*P*n+_ZldIzJRcIJAw{zY*q8=U49v`_Pe5P_*{pXJ0|I2QhzUwE zplHG-5i9~UM0I7%ga}5V0G7ZEFsIyV>pqF93TTBU%3OsAgxONgl5%OW9;=jRtG580A|34pkC9~Bp&oJG|fgQ*5tlmpEdi@L6fIfk&=Y)YxV9=7d}iXs*= zhbq*FFbsnhu!gDXX0tYgrfR&7&Cne|7~_c#M8?miyeNT*VkuKulcKR!!>JF~mSIWbMoph#;^APCy|b zCsEZvdh7ILF`w7>A1*hmbsiE(Rg_)ApyGIzNcGY25izM`K=|<9M_IFoo}FLZx^d(5 z^z`WHsO!2%j~+R|-s76rfHt>fUK)Rjgu+5ANT8|GoETvsqo&^Z9(c-FA*kQ1zJAi*#MrG)*_o;`}&DDGg?I z2wmT)>0~;o>RKeLN~nTlaW80JEs~|{yJph3M~`U{%4f)Q*c$cjm%jj3sE_80}&$yBrm1}gqiC=rGzGSwmcG{3NsOLRaN83 zk#bH&%A-(8M#i^63?t1EAp`~vYSwmb86E>vO|8)RXafqM)w4o$nN~s{=2Bg`eii}1 z&=0HCdb@3hVQ{os>AU+hjfyUiIVu&+WrfU&^Hbf_ZV5b_&mJu=6nxx+hzzD^rN7(M z6%u#dpdwa`B^_X4rn2rg)vTJ#o3?G&-CDB&z-rs)B8X)Uj|zcO8v3F4rkJ4t2$HE9 zl2X8`inGPkOt;xN-BflvTdlfI_}RaH+W(;L@s933q<@@Bi~ zQg?Q7*0#egjN!h-d@Mxma|qi#x6d|;aAqsGn-3zGnhjaZkck+K$XxGIPz@Of5Ma>U zg0wXGzFm=NqZI@C;;<}kYjB!#4A`O@U&>wAJ;0l|-0wk$jCIPAI`k9+Ip1q zCmiGwSgy?K5_rQfESF2i`g$XHyWOUo&CC$pda(*YMVz?cB;2m=Q_h2=Dpq2;-E3Ts z^YrvoRo&Pu=Ntk0zOSlk(lndxc6>q@LI?;HY1yvwDlZmC%+$%i%p4DNciydTzQkM3nn0E21<1Y{#uQZ*Zfegpda3(sDwPnX-30CWL{P+G+X@L(}X*XCdN z{BN~=-%Bzktb)2!uw={Hp0A?B3ga}QkOj^{3V@gqQ(iwj|Hr@iX+U>qQ7Zbcg;}XP zia0s?#57CpQl2%js)E-wIqQ)7<*GGTktJe^#Ds>fBIi!&Rwkifqo)A?REt0(Fuxm; zNCE)wvH?KgNEDeX5hXOGf+6*)B}*CxV}`2X#nHT}C!wk@mg{c2^@unOeO1?9E zQJI#IT@-RO&)MyA1W?i;57z0X-=q%{2hN&&zCfmm3<_vUfDEh|a+1*)9SRWJbv**C zyX~so^g}oF83YgssN4ZhL68&>a!Mdt5-S3P;Gv(Zh-hlES}k+VDfh8*?gB{O!PZO> zk;9N%0dwdnF%VJ+7$eu!WICB3LN|0qx?C+UF1F=!D}Vtq)PVs(vW&N(Ku;g0fUiY0IV!j%F%$(s-qaFA8g$Qkww*KmVWwH?x}MBu+s#HqscSNeY)M8pg%Z@1WW?Y66{5UYwN6JY^F z$>K0NV1NLC0I3{sMgR=P&;^icYp{Kgmh+pZH@^5HmvXX5I)hmNYGS3^_Vaf>cjwtV z3b0k{5EWd})fPub_dojRuYUN$?P?{aR9A5}RTW7|Qi37p^)^_HLMbOTQC0wfKHC70 zAu!A^1QaD?bZa2j49hZz=A2VE3`88O%E(3)P9-!}w^)-h{TdBrJO}c(-nt!| znwp45XCfv55mhq;D%#Jbi0~HDbW&GUiVK>iwK8^?}xzb>7l5W7&rb|s451g zmeJb2V`4|PIp=e*0RdeFU_PIR5Rl0LR;yLl_dsX}0y3Bg8;}epXlQKStQX9H0L@|I zZ7p=MLauOHRU85n4ehYJXibb}TumxtCg#a35+Mc>FdtSMX6v^`h@5A*(8;NW=gzTzh8rrC0AvCUG*art?Y8l2byY5ZM^dH`^Aq4`4AcGrQ|z z8q%g)Uo1cR@rOe%xl_&POUggc(DmA;VWXM~n!H>O12g~=00EkUm_)@I0$W5yKpKev zCg^bs%#4fzvNOj;EOmpTAy5ch%-0R9j8tJ5w22&stWAw%==aC4fTPjxZ}HUJ-4iV& zMB8Dh9q4OgPG<+Fc@Zyl&8(cW;~w^;9|JQO26$2fD0}zci3%Zv5JTYLxJp=5pk-Fq(3q5#K>c~ei$9zG%f&Dw2yO(4K#Y0erl zfzrAkb6v# z6e&WEsE9B{3~aq&0!j`oM+7X#jqOIqa3z&Cuqu+bN;NA0#1IHEgBTV)F$4;Mh>(Uf zi0O1XDW}iA!NP0=kHO<@1OdY+$_@y6(ElpZ6kN!sSQ3YERh!SJFY}NNvjK|$>wifJKO^+=?RoB^dVKfi}uTc=p7z~XFbfj^r>HK6q2R@ia z?(-C11Sw_zVEz*KcGp2f#yl2DEoBka`D`|ArpzIR5JDxrKD_^M=sExcG(^uqjR-h$ z-}i2(0su;;2CCNQYzTEtckkYrO^;Taji{NTfi2gYl+}BmPF9H_nn6DdG-?tK!;n(0 z>Z++~j>I9)=5trCGBXo_f66dda_fU(uBq{Eaj6gDNnP&I3IG*BQ3cdZ6LU_;CF?{% zV`2-;3il#gm$dLNZ5;U=*CZiddkTDS>M#KonK1EiPsVQHv2#PrJ2Da8*yvFdl%A0x=7lD#=- z2w+t77YL9DiHKq_v*qd{t7a836*EA5{`u#B`x~$8;V(o8%vD_*$bisq$fGXr%th&gxMu-lBo%qyB72TxMwa>s1$e>{L*-upXx>mP^9283W_UEk6{!1vxz+xI!;Y8t1r z*=#z^BJFmoM5y{tn$9^}an}g-6>10C{Y7`huh7O7oO3o4jDeWV3`~GQ%?0Ze1Of+Q z1VB?GG$zl1kn6gROrT^!Dj?Y;73hR16h0)OAt_8b#+n~KJj?4A@<0ryC#S#h+_PVL zoM+7m|F@We#$umJ+@CMo4~x6;h=UcdQrEdLOb zsbv)@b{b&nA6o}gH9Z6hNfzlcAbjE3m%i}ai)Q&?13G<5L=|6vufO)M&>~t%HTFUU z0ALUd>I{<%tbk5oCQ!s&`azZfGH3?X#|nf|^Z->0E~upht~J@Kd?Bb{E3 zbh{3L6=~}okrelx8t?siQg=l~!&FsGGK=_ngTn&Zb#Vr|G5`l zc;hE;y#M}tUZNoaxjz!3nBqtRH-K121M7#8o{dNxDmG#=HUsOEe01-li{(m0!JujC zb#DET5iw>&LQ@-3cYc1srO8EQ>o;l^&4Y7qswzgXDh;7U#GcTg?YVD*Wd?Bqkqe(9 z5~}I8lLXhWYO2{P!{o;G-~4a?#kJ?}ELY33vxmDZZQo+FlE^$g(%Gn!F}Aa>Bmtl9 z<&jQIv#Dfp$Q6!24s=pA!QM~}z{8?K>9rz&A}JFGCgLk$1_0N&14xGHig(PxwF;U5 zFc_&>N~!OAhuQk$V}qc6Ll0CQ&_GGS#2|qxDCrY|h6_xo%Aq{O80owtDaBslz&qH$ zK7M5qQB_rUpMU=D^UuHW=9?eB|3TZfh~U;YgXHkdfA!6;{?>0Tm#enl5&<(C+JO!a z9+){^xoD?d>@LB^Z!W6Y-VUYG`*h8*Jw%lN6?d-0mpTcE0L2)5EDU!FXkY}U##j{d z%5B>3BLqZL^TyrNFk-eda2az*D6pkZwb!76ss5&7t1+llhVO~YUmK#&-fCjZMZ5Mjf<-!#pCT9O(Q*nz+&>MMe*Jcfmj&_ zI^4XY)}LB(t}%b?h{;q3Q&hE_2I&XM`y5aJ(wLWDZ3UWTP%(28)F(tbZ>Wuprm^)k zzLlwgn(x37_jF~h{lxV~Npebk*UjehlarIpdVPL&27uxm4uJ5=E3cSo+isDeZClrc zI>Q5A`@bJ`dw#%Lh@kj-GyL_}=cZa%51(9G8v^OyhtAOJ~3K~yIb z1lpcG>hs|J#VSxUsYP(u4qYbz!rgG=#kKd z1VfV2?EwJ|D(oiSl2O!YQyH+Tnn_(V5CMZKp#?FPfehIos6+u)U^R9g4j4K}1c-qI z2}MY)it*-+8!z7d-20mi5uKi%=A0j2bqI!D`93|PBPA@&Vh8F0eD<7<%rQ(r06MyJ zQke{v^4I}eyJ3QYF`y$N)Qnv_O~YsnbNSHOryceQCzqIrn24o}Sx6Ngd*1e>{0G&@ zORJ|ONc&mBL9DdL*3AxY>pfij*h%af|M(T^X{G1 z#z3c!KNi<@+TUoz-6K)ACXcFu2Il%O2JGkp1UxufE+_rtWeAEv77V+JqkwW$#bACk zo6IJC>fB(jj7U%dbBv*y1ef7M#>u>4iv6}!Z$;FY(EvpAAj9Cl6bpC7i!=lXfed0s`Lf#u+4OK&^Qlt3L+MWwk(4td5rZ`JzcF789X!Ts+w zGiRhg(M~Df6I3l__ue!FE=tjcpNtYHeY0H;;lLwy*N(Z=VY9<=)vjARB2ISE(?6B^ zc)!FE9Ob;r4|;|%N*90>er5SPbZwVXO8cAdoUBHGOA#;fHprNqdM;zQ*DoADtJ?V0 z64`BE_>N243{|~k9Z{eqA2*PqS!^jKXV*GV3Ivkqkn_pOba8y-I*xtnlcXW{nthyB zkmoi=3z1y1&M}i-Z~M)*pDbciSFwtYovvaPICO2>4}D5m)qsqt$dn4WI&Y~ZX~*RU zK!oY6R)N0nX444;cDV#Ef&GlpgS~`=4*QzX4RjF#b%8JB~YXcoy?b0LYN;giZ-GdgyA{7s=ki0`xJ3X9WH&!!4zcD-STWQsiiw9Ez0{{X-0szrupdJ89&maH*D65c6C)2>3`aw+lwC(zh zi$oXzGjPCSQUN)WS~ytj2&6y=Az&GjBLv2*x$k;Hx^{Y+QaV4s$YOeRYg{%C9w!er zK6x`B(Ea*B0CbtytRh2B6^DpihcK<93+Q`t>L`<4Lzoz%X)REzu^~Hefy&gM3(Xcx z1&k0BN6NG@l~B$=OvE8pb%?QLq}kN^6}V3ilrjbNNk_ZwYKvV;w^M&P*zRSK+tr_c zS|+r2WwQ}#1_Y&CwjwIC>pd5kaX}az6r#8XGvwlvI9^Usol^0B^rhazLAc$IVjai_ zYDM$%kR@$bXOjo-WJO8Zo)G6s&Z~#`xX0Q{ie>ZfbD)EFyWBXk9kRG=6a)xWoF6Ta zNJPu@1|S%c0g3JQ@zq-75C(Ml>UUK%?fac29_fMc`55pGFTX>1G`c6i9jqiU^S=J> z_oy0;Q3J5LEVXPC$q4+SuD98#_Qw0@JG$H{;HB&N(1+c!$v5|nI0S&}}YFUQCtTV7d+U@<* z=bPIvT_<7c1GLnyyASW(hn=Lo!9lqPxYuk47ZWBx1#lHZH$4P^1U5+Sa|#Mmj=?5% z(=Y)c1n|%7nit^cjc8h#MU%qxLvR^qAePaK)**UefXJ?Ng8_-zfG7kC6>&vXt$}+& zn>03T{W6QUw>b;Z_L}pCyIEa9fgNxF9^2J;*scM5`Z#BtZ;b__hgxzuwX)2p^vHI3 z$2c4y@8#gW%?IPCUBHnzW2PZveXL`4aKHz!!^0c)8gyoeMo5=a^?g$Lq}bgL%OKM#<){v1gR1pu?z zG^=WEj^l59`Ng}>-Hk(CuP3~%9)584zyELlM;>YIPs&#II~{lN(7YRLhxgMD`XQ&T z#YqSpBLfBlQ~^LfaE4`25b4v9(*S0ffGV2Qm70=`?Lah_hB5?V0t5~r#45y^VkB-j zPK^UHrz$9vJw4)I%t^Wj)LpyUWq$hF+jVk3CBv>X9hcOVQn9&?_zP%Vi}#;WIudmXUj4JSirAin0A}ih0;Qa7?xC ztEhv*c6X(_|0Tr3+sKIF%6thPXOR3ev4iYVl)IEJeG;bYFfi=`)sx~*X>49Ta6Z+o z$8p?qDS5Wb)0itg34}xF6YM=13K$#_T?Tn9DfFPh4QkN!$~(KEl0_iVK_efH5N5Nf zY(=_6aV&imx{X*(fV7y`v-#qp-Oz+Hn3*Iq@Bpd+3fI5-{O#xO%#MyMkh(<)0oJje z&*HQRO?7;QqA#+d)jE0c1ZaV1m&)WLAV%?w4!K+8c>NOuBinq2~m0s*7jSuzp3);tKk)G0r5VW`q7Tx=?LqBq+s9>Rq_k)%(M^z)u);|Ba z+fdW0>(h`?$n9E5W-Hq+D%9Q(LFmD@ z@JI=>>Hqz+zt`oGh=5p9RuxDJ0%%AXS&@xZZOCb`1oEr;OBAtaJ-`qb6U7AD#7_qo>{Kx!&;VA2K!`>lV4^}Ch`9tigupQ($EvEEx|vO@x|z?8ntC!@9M2Yj zTnpk-@@kt2=@0^FpSYv`Nw?^ye>X2EpEllo629kfplTntZU3tZ>%UF{1>j6MCMpVA zE(CW_OYXORX;^)RV22}8b~j-#90d#PN%NT9x9(Oq%WDoq-XmnjK!`h-Ta!4!d#gVGuviGk{C{ki&cw_3GFhp&DecL1mkIH;zZspjfCvK+NvOK!~Nk zB*nc910WMuF)|VX#}I3-C$q_oTeqHh_KuiMnrV!2I-QHsYSS+_oAa|rJ){_ls-i<& zTr}s2dh(yW9Q))jXHU{WeQYo|!ld@y;Ua3nL};b<|Fu{x2%q%P{`pG0$Hz0D5Y5rY z$Z#O@F}~bngJT$S630@w9Ul%n4&2n~r_TZh5^nQkO02#;KgHL8eUR*_*~i7^s0AsHem@aTm5sah5X4KE@@ zAa@RQE(e&?p&+TWeJ_NJ$Y|hyxT!f20uUJ?vK28UWFjEu5UNR4*LA3xdUA4fJZt7B z*N(5{m~6cFlNvy35d> zNII5XIHIcYF)WAY9FAyrsccCZ5lw;Jh7>Fi;h|-gH}LEb%>|=;#ufUIjR>0k534E^ zUh)X^u|tnc+Y5mlP7>h~!r^MdIx5~4)X>MFrxgtGa7<4&@ojcBBn-twrfCD0% zp(|H}|F5!4RYfF1RLgrh1)}Os;}9Qf{+7bq)k_@Nuc927so=bvXX2WjMlgcd_U{mw z0Z~LG>;EhH`fm1ZIcE_ygZX@ZTrF11v+w_}|5wgdO^E}ELC%T>#He7>X>$xfAaY6M z3KUR)6JQ2~am|eDA=D%}JKcf|Sb;p!DX4-OkXR%m(VVj;IZRugFjrRvLmk;WYFbh$ zRTp+AA|wQP>ck1*kk9Hk8GnKRs2l~x&@59Zq+xGoZ^St41 zyFJ7~fnCC*{?oRT#(;rhdI-UL>c01zTtw8|V~m<+a(sMzc6JtHtmakM_o?rnFp;}F z0No*-t@N_ohg-LHK4 zD=)qLG9j*3tA}T2Z@>Na`T4o0*3aI#^ZM7mHffss5AOf)uYP!baZb!%`r?;feeJcb zZQp$J&9{E~Q#JeQZ+-QPzwsL(gunf}zkBPgx3Y`(n=R(^Z~g0kee>qcd-v}Br~mZB z_uhNoo~|~rn@Idq6)Y(wRo!kkZ~XWTA_xXk2`Gju8fL}2IGjRYKk zYf8bkU@7k#j{q>6*L^>vv=_j@y5Yw?Bv$%TL=gWF+?+d~h1O6Ofy z-?`CLH9^TC@bS10hhMi(S${mf;E}NJhtt!O7hd>$-}i65`6d#5OjW3=FTM2AOE16F zOsA6b&wlo^pZ@fxB2rb=x4-@Eqobog`IA3+`Q?|t@r`eM?|a|-(O>`dLE-Z;Q#ka( zcSz}LufJZ^^^bn^BRmi#+G%7wem#rD;=lREH-7SypS=IU2LKjh{Jr1%{kPtF>!)wM zwfilOjeqvpXJ3E)_3wW7yM5myf+RT{UH=Mq@5wV-IMBm9c!{d0%Np(1_9sU=yTrd8 zAy-iPSx*~(eBz6lpMCb(7hinwjW^%y`;Ljf@X{AveeJcs{?T8*^5rl8&ey*7=38&g z7mF9a@P*f2ef2N?;xFF+;C&)?r}3`q?%a9y5C8BF|MbuP^qJew{G0#o-<+MDJ^S2q zFaO5NoBw4~H_f-d{q1+&d8e-HKlp<`IDd5h^S6H93xIPYiZXE?__F(-L*V0f)qU3#KaS1?LW~X{wL~35|*Nv+te9 z7~;+)b_{~fIWG!=OvoIZ<~m)>s!%JSx?8iV6A>BQ_%y^okthHYF%vN(5hE!gGE>Dg zshUaMRFmmsHgB3q(=>H69Yno_(Y9^dwcD=Wblq~bYKMN=ZZ6u*db_bUSD8etO9LW? z7@ydy*~c~9LxIhH6_FCRuYdO0XJ32u)h~YWi~Z35{onunNc}F;uiYKXSwi5~U;pi| zfBoxi+kN!#{(Lt7#y7rk?b@}!{L8ALr>Eci<~NtC)w}P#2LLfv z-}=_K`mX!izxkWGuJ^%CWwBT^bv>WW?%uuo;)^eS|NGxRJ3I4tj#brl-N#Jre*Kq7 z&RKR|U7sq_74fzmRt^k7eB7W13FWRdw@W&6Pwim3*wJh@o6qM6psIb}&t|jJ)6>9V z(lqxz`sh2~`ObR1dg-N?|NX!Fceifc;=mt$bpK~R|M}bh_>YesJ^K3Bzy8O6{Kt2n zzx$i7ymI^YGym~F{?9jW-1raw(|`Ew*I&PN>sH@&fBxrxe*5i53?{XhG&KmGmR|NYlr|Jv=_x88Z@mj``HyELhKtSzc2mj)ca(ja_? z6O|AoxW5pqx|W}r6n?mir+DP5>q-b!?hxN*Q4&%^U^fGO@@x_kAXWdRn*bprS~{jT~{;R{~Wv0TFT2zdbr( z6w}|)&#wS-P}K-c6)-TzK(VeH=1^7DX0z$L&XG_q?99xOh{;hS90=VR&ZP&ds;=v5 zQcY&FX*HRIs^M5+s1n$)*=#r4uJ2OU_kG{>L*EZca+}gRbt@TK&152~fSACYJ?Jx5 zD)tFuhDA9D!L-nqj>yGVDr{zEanb^Z1?zxA!Z{oB9&s~`Swz1^gg zfA@F)`+xEEfBE3-?BwM5=;WmByRW?Z)#qRM+}m%zowLjri#yLeQ^%_7y7%6HuidsU z+`VgNv8t|LyY`EBe(~Wv1zxz`!D~8-}#;2S*}(;_^Th>x^?U2mtSt`=Iwuc`;9l=xWe(G!})R{ ze?EaPR`wB90 z8q&$}>2xwpDKm4HtY+Q}s_Q!E-1mLmG)KqBUw!q}?|<)m|M_SCSyiUfNeE%H*$l&Q z_wL=d-h8X?x?jBW&b#lv_sT1;G)?o9AOHB`;-YI?X8yv9FUA;$VR-TLpKm73Km5Z# zAkrIeyzy`U?e9JJ+;hM9#XImA>Ex;WV7!t4GUCq60TW zW}HnI?Y2L^*p!~Kk4%w6tdAGRA~N)8`Cq7euP4c_^G@*l&NmHxVO&iC!Zx%cMHtgPy4pg~H74xmt-S($n7Ip6ur&kTACb9?f1T}o^;n`x5f zoCA%`?wnr%Nf|U-!@;nIFLk0MSc;^w8*LTcsFGZ3h@>FPq>YUbT667IyS>@j+*n&T zq=^At;vs|*QVEnOrEsNdAqW@*p&x{v@2enEek7HTLMGa1X3Qauq|>Zr%#`H{^!sCFMs~$d7fW*|NX;<564OTw}11uU;N@1_wL!Vy1sq~ z!j&smp8nitqcFPi!PR^3yYK(}kN%s>)-$F-~P?r_uO;v(7`8v z|EWyp-}s-tF&d7HG41)e*C!+01XOlR5-pDntg-Bi9S9C)D#ln5tde5i50WG?)~cF3 z-wh+(ZlGt?=C8%FiQh2eAVfeV)$Ipvf96ZiXstcZ+jn3emYQ30^K*|q_83`v6e(F=7eD&2=Ha0d8(K^%>RN`y}x6TrYlGp8;KCTDh>|v%9 ziGK@U&Va%i*C0dBQ>|tr*IFPC`+aNKQwoTS*+Cgtg(tE&8TALw=e5{m77)M!*xVX3 z*tfiVVC4W4cezGau1VW1WxrO<;1+uKQ zNs`oP4a`MHsgM`5g%}~CHKur_LJh?kG?$4I3g^r~)>c^_vGce#iO#${h}x}2vuT++ zovt=cxuD1~J*5<)a$^TX>B52MN#7TqM?x5YI5(8r%noy_UCc7Z4&#y0PHP1jz!+^! z9_LwNb%q2&3V~Jt(6|GGJL83U5_b9##%BUFboI7L7XN+$y29J?cKNc`RAYS_4-GT9DU{0S2nL-|LRx1^3FT&{POu< zJpJ_3zxR9hpFDZW_x<(twVyrv?B2b5|Kv~p_}HCy-gn=#x6d^w`mJ=gvL-nWtCR)_(HiA3yNG1Hb?D(}#~7dHd{}WlM2_ z`5=nTC6rQcz4hjcFTD7t|L))2e#fD6=g$cxuWxR?^6D!>ihus^|8m!zcmCe}_y1r2 z=|BDYg%`3c+e#+m?L`oA)^rGYr__4u*8ZK%Ufsv*cDrxA^;VW;h2xr;=2-ey-PI~=b=m-1u@B84|YNB&h z>GT0e24WTEt-^4ydr>QnnP3M1bStsRJQ z)4`e4q9xWkwU!%=Myu5{+8RUMPB+n7xQbFqr*JhElMxaej~piKKpd~hC3i|n*Pk** zS50JM0?SsjMMfnTU}<4#aqr%}t#<3o=`&dp7ghpFN>9lGIwzd!CZi?boGh3Ot;!4u zNUg<;Om2;9HZgOi^IYc@cf(r4*5q2}Y%{j4xw*iXX>Z6o`Z&V0ipH&hT}dJRz*kCn zzHigSH8l6_-Fy6#$D^omee-&nrJ`VVs3?jMQA#PLY(&xg{KBZ{NN+P6qw{g$oxRdF0`{@45Tk_uu>R zPk$N)L6&7}Yir$3=Ya=49mk_a)Y#bASlPFKX=%xqYH@M#`t|E`b90{OX=7XxS6G!e zD+?)zSZkf<`L%1SgW-_KW@*X*N+}_Pu~sUzvA*Fc_5OSBee+x2`rPL}_wviH{KG%| z0~rI8Lbf~3AMmDNKTZ*%zQ2E~k**$DTntLn^z`Y|X_^wz^4?|7^W2BOdiCmezx&-Z zP17{VbDgGXv)LStMu!g{e)y3`Ha0eX^rIiGt*u32*y(hamzM!hd0ycA*RNl9qN70& z%+D`)o_Bp?gNabejg1W^URhZ=d-m*s+iuIUtlRDVmUB91evAM_tn<9r@AU^mZ?J)6^C6o0}aX zYBZv@l%qJ#w4oZ@2myTGb2f~nwHX7rZoiZOt#(^V$wb59Fw1i%-x?Z|rKz(5ff{vH z3K523mSqeRA~izDGG~!hC0j0N9Ge9fes%eJn!(4 zBj?Yb&$Z3~S5^*qp1Sb<1(y>!nP@2l6I-HQulL$(ubukMNnM&?x>#wfC9;9n z{@?$0?|t{(|Hr~1!TKm4Qq;v=es5zz)5fk~I2LNZzocRy`;s3b*{@;7z zi6@?X@`)E;eBt8z7p%2Hh~G-&x!Fip;*9uKBy?1o=2ZVKsJYBUl&0xmFsR1c_uqg2 zd+)vX#1l^}FE73P^2>(~9$Z{pSY2H^ckbL%Pd$0(op(l2h(eq`eR^?e=`)}C%zgLW zx45_%MbX)_XFvI=PbsC|e*5jU_4UV2oVak|!UGRHkf!OSix+QE5BlaVdiAT4B(=;* zmZc_NTv!UjDA&0)h5^VrlL?f{GsY5tM2v#S^S!9iKq0i&d734Zq)F;|o%eJn^_x=M$E8( zW&bo?Ra{hG7ab6g5{FPy329KeK{|%+?(XjH?rxBjlp4BITDlvgbENCL|A%iL=Xd92 z&OPU>z1G@mk90ooPv+=p>5PlLq54`leE3YtENN<75dc-HvM)ps12G~@JO+JDpy(^A zn%ec8hL4xz5E_Yrgu}ntEHo7wT)iKSXEW}JtRn`0;*4`O5Yn_koj6N(=HcPWJ~EvK-`Yb0e!uJEjI~92Bk6ReMS$1!C);DA>ff)&!A3dqj?IMCZ(LmTMVMR&7k+5K`#kL;>Glu znuD2Yey}WTD%q2z`hDV;t=E-Bb-%})CSd*(kS(;(A+!Ks%2Ba&TGcGVs-fXIJQ91q|*_IckO!VP&zjc=!-_kF=Q z)f&}j(tn&B=PgTDeT2wA(vb)kbKWS_q>MeSdz}|sXpYrjGH5r~G_?O7Bi8O%URrG! zY*oV*5;1Vs-|NobXc7q^ewkY6iWS<`xXC&9-skxBVrpx9R-t!qi4(HF;R8f`Z16k% z9b4z~>U@~{^^kiTrT20bQ*S26>sc^mp3UuX6~=$JWyb%w^k0=LmAL!3@#vdrx|fY$ zOY*I+2?S?cNkJCT>k?M^wfPdkzrRCw5`X#QvW^gmVB4B4D?x=-1(qnCC3N{K=ugJy z*icO?H4>8i^Lt7TffJNs=qKk#kIW{`uQVd1K+}~DI+>J4Cf8MtqAm|=;m<=FhS7T4 zrZiI;mN4Hxmg6qm3p2bd{a6CXTh`(TB$z)CtOQ9sM}+l@jdPU{tw_kMD%+ejQtxxA zjNybuk*H+)=ZK>GdoYlKI6qfaReuO1LLSS9$`nmB4A!Z<9}65NF^BWFMu|45c=rX2 zOmefB5yxp{t=9b|(7%`NBMM%TwI&6ErsG3)e!#nW6ZWx!f5Pze{XUkTE4}M!;1=-S z@9Fjig<${~$Y%sbKV=lh|8lcpm&fH)f+sSI(4S$!i06IVw&8PBw(+{W(3MKK<8c&J zp{D14IY2*(6!em1mrGG+k(kZzX3I)sYi;|ow&AnC754chuj^h$q}}~;`?mA8gJYf7 z%f{scLWzd!-jPb#Y(yCGdXpXTo35v6DJr>K0O%zNA^6h?AVA4wpu*LGEw(rD& zMhBKjUf4cR9Y~e|jM#pQS>9+}bWBXrZW#Z|)QlYeGp^qy?x`zJ?9S^;$9c#7yw+RW zw$t&Z^)V-zF|}XXbMurC&&z4iDp(Sg-1oab!T`Mi%ntbOvfUqXe}8`+6O;F{ONIMQ zo0@w;Wo-FVsBNUZg2P}_8~=o(FmlA}BQTAws=B(wLX*=PrSjbzze6Q`kqacE2s%;-ckbQUHEMi68qhye-E%pG6T&Jn0}m}-0!O#l}}#%ZK-RR&e; zaOcE6R=BpUSwe%sz;>O0@uK&s)|(8QYRua<;o{|Z&^PZ z%*`OmP3o4h((wQj53P=^7&`9^r^rMaL&NDT{d%NbRc8!vOdM9t+4q-ErPQif3#pOe zjVdQ#~(ocN2@lnsi0xY?>CStu+)WiHekv zY-5^~K}66W%SMb(-2cw*VPzA@0`REGk`P=)x_kTp!@cf+xj7X_>T!5&>4`!m$q3|( zdDtlzjY-#rlWaPMfYI?ExzPMI&wo?m=bihu0ozp^8@x_eMY7wVWC3w<*FGat${zCs zD8k3z(Wz+nTtWhd8-XIqByh%ug1yLfAWjyvy7|QU%m75mA2FUcGYlxGQ^JW@O9h0~d2C^Em(BvnsVH#4;21Hd$=tmu z^M=mO1oGPX);UX>;yQYxP)78Ic}S)ha4SFys0q-K08A0PBUVUSEIrdOXNjrAElHq& zg8&C-?aE`38)86ReB#=sIHFpgK^{>Np2K3@Huq5o9qAdEcE%PM*}dzrZqu|@lB}tv zwX(YEoNYzP?2&7dasD=x9+i~OqCsZbcw^lMh6V$cdcD4#h>ajecK;})f-Pxx+Q3TF z&XNGJR%N~FJH9vp|J{^0afjpmm7L!Vi=5;)uGg-h2$5^owP?V8CKQk*m0oa3Q;rxA zUZqMGy8{qm%cv^2Gq84Y$m*J7-b@Sko=0bG?G}6_5QWGSDSj5>*|Glc(5hv|5f=1# zfWT?0A1_3}sC^hN8&}iQGQ&~u6JHF2b2^$}KGU|zs!CL3^dl&mEja;(^hL@e6$M8& zF-rg>kh(vwSypuZR-`C7Gb^tUBShgqleTc`4_=TzR&kQGh(MvsuZ2RPY+thExJiD} zqIl_|&Y3$uUd;%;qVI4$)dVAr|NH^V2EF@|n2P>eI`AtQ zJX4*%F`OncXt+4N5-lHo3ZBdIhf`dw2sMJg3yFj=SoREpBYB?)A>$q)lsO^$MhfyC zRr`+l4k?H_GW@p(Hm=Us?D2$}dDqsQ9)0~`Nz&wfOodF7coPLYOQUU0IDMR-&@B8p+r;Lp@r<~LfDuHu>WZfReH(8$T@8I<2$@TjI`H{8;Ax)tXx#jZuSdOY9N zr%6rR`nd5OABAxmWFlQ(P+`KUqxOs`BJ(5XKat3r>pGHt=clpQ;$5KI+9nJ9Lgrt8 z3>spXu(`hhx=9wTSQcFrJQ@5eG7LK8VJE29{PN; zIu{QrSM1$Ql>7{5#p|dqr%G<) z+u~{NF?SLntCE-rCB;NiVn&^IAqf7ac)@m(h9ZVZEX%fu3IXZIMva0UYmr4o=ytGk z9kP;+x*>ZJ#R#J{QUI|iCd*LmSlt+fNl}DH0bvyK>5X-$9ia#u6LVCI2Aj+}5 z#~!&?J`*r)LXyf7-4E-(xzAcjXrE&6hT`S5Z0`wA1lMa(CX!@|TOAH(Rb0&M9XjWX zcbiY3YGKdwUzK8dr3T(~TckJ<*=29H!WANZQ>WJo7Bk&MX`%FHBt+3mpfDT$t8yV+ z37RvKzLv4?a)shMNd8*Vpy5{Wlb_(PO0P>(l$&5oFEx3RER+2U!4NrhlD_h%%9QLsj;1%~cqv_lF zL*W)n@(BT`h8>97T=c8h2HkU;8XAJbfrRk636I>38sXa?c5(*u!^Tw>Y=pVzO!WfA z(9bcUx%;=GuSd(}0_blTkoy>K8>U}it zKk76}KLXtk%*RPgX^;<*GnEpvB4b|0GmQ_#N65#Kgh1x!W~k+xt4Xkvi=0hCsk zwK9Vi$Vd0cpx2UZia*Pme1!M~Q^T}wFy2YhzRUo!iHMMlo!&nZ)<0ac`HuES!Lue; zYOlJ3wdMFuf4CiQ)0*WUajmIFc@)IBrXy)h*)3f~Pc*{>%)XBycI#Vvjasj4R`rq( z*>o27C{fKQ9t=cI;--7wSa|-{Ye=KB9!l*qpF1=Q%OiXnbJ#Ls&hV1E>jXt**73}K zl^JC}nsvdC5gUsA#ACnNeRWlrh1Y(w4B+>Qc}<$VSS?zI$>vJrMcXWyW!`L`x7}{fL`|a{Ib;-CYR0mBe~W2a2htrZx`)xw-uJ> zc~nLY`LC1%>PH7gJQBmgDRWi=Io`|uAHreb2gPZ+o{y(ZI?Yc9A09BA$c*lN* zHLF-h6Wx=I3GjMJ%o{U@soABw^_7m17=%!B_EkoL{RQ#hgXTjc&}+eDz?4(i{@=gy z;Zx@62igA5V^TA$GD?Q1&+-z7G;-<+N0l@NY$X-9qh{4HnF)CnH^+OJ*s|`F(N28Zn&f*lzve8c{A&^6g4&o( z?g~$j9X>w-S)}pOZ+WWKceL{um9Mu|$1r47k87fe0^Dc<)kivGUf<+X(g)aAi0>2) z>f$@Zn+ZfWc1DGSgiHc)v(LUjI?TG$Ya2j70elQiF`BE2!xnsMmIRLa6LWBj(;|gl zcymKTgWI|80vOSscQOPFY&D=jrvmD3@B6EVhXI z0Sdm;`~E*o5P0VA-@gF(HmZ6amh;`l>KOX$buvtq_ur2K-n{L6+GDu&>#y1g-Y8R`!X zdq$3GC^@5SW%IkaVPUVdx22VFHv2w3;sfedNohAa81V;KNNMS_qbb+CW`E*kAZG>x z7@HZjKjdb$W`!ly$~5<9k*20Pa$x?-@%4_v?)~6_XQN{OL2ZL;3{1Y=DJ+17BM=m- zB^>edDbnqCT>1Q>x~%C4WI;2wG?I$jJNe1B_lw155`lZc{!RcB}+V8@^tdCE~F} z!*wUS!$}TA#JuhofG&vS4~%HmYjutY2LQP9&?h%g_v3k&-~E*d&0bH?TQyZx;QI!@ zS6`9Udb3FY(*xWJCQ~HY?LXqD&9{Vv0PVU{JM{TW!QS3p*Xv`~f6O1SD?fW*2yWbF zjsN}6T41$Mz2-3V33waa0Vl+o^(_EAp8;;*wf+4q+#; zRb;#yZ-OVTV`~Q~u9b5?3x)HJ*7N>yW{=<+Wu_5r;|qfqjfP|*3i^j%Qs4M=?LFpR zRMtWgcey8{X|{0%`re0tEpl761Hz*Xs$yyfVeP7IdnKsSM4}3bMaY|vol=*eZgZnb zrg?A@VvV)%AqAw|Wnv7YVJnu5k9<7vm z%MuL-tH@qctveMVA4ISI9fT!Xyx3aj=Lb-*$5t6r@L)Kx!i2W+opsDWP)}gX-==RN z`I)SL`!xq`kZ3qUSbwQFD_yxN5!kE5Wi^4VnlkMteqQNw?`NJF%KdxCU&36htF*B_ zwHJfkTFdd#Xv-+pC}g8dVo1AHW}!IpsK&0EZrLs=Y@w4FBg`W6`~7YbK)?V6?71^H zuvPCacYq3ZjOV<4=kWz#y#83T18m1d2!po)D}jd9dCPt-AWQivNIoCty&M8uGEz{_ z<<8K5Mic7DT;QnXjQyq4Mj0GlZ~zqM{O%W<07H!w6aY44C1~+F5}-muLj%tHsGU22 zQ=VTQO=Ix8AJsc^=03X|OqWXg#`kbg2sn*89QPz~M1g1j(-U&{0dl%p`ANNWv){O( zvGVH@mY?DSzT})adm?KYxlca2tF=wjhLu>%&ne_yc^X7ejOiOpf2K(otBg~HO;xB6 zNX`R3gp^K_sEvhI<|;Y7NZD3MMnYE9-NCm9#%pDhyRVtWDi=d2okDvi2$mq#w%UMt z{d8t^?U}lLV>O=3=T(%vCaXr`nTs1r3IZVU(O4N0P8kL~oj%zJ8V@-NGO}WLH;e)` z>$u0BM4r1n3r(QPl+IGbqk4w*@Y+-JSlcS#U~^p4%CXfdL?8Jsm%&>!G;=3AB~~?0+6es#SrCfU0hUXu77`t19HtytJ}^b6GdoL;BK{r zX(P#sm77*vc97NJIS68a$TX4zXYP5;FykAaSECr`F?}0@Jx$^p6w(4Q1ayy7yVDOm zAL7sK@l4kN&6SlPhBG#-&!A}r0@JRsA3RSPw6oA;{c)*B!GKDE87KCIG(O|@bY;W3 zktlx%FR56g+KH^ZqLtYnAz9IuuPK9Tl4aq=1{$bZVG+?VZ-B!_FzS)}?jcCpY~rW+ zQN}5?MgmXdWuTCj%$yYRaT0 zZHrFTEV~(m_A>lU=_jKAmN&}93q~0;3nUcs(;Al1cyL-I`PZ}QRHCd!@(fQ80{|Ae zUz{>}&-d>SAhX7Z4KE+j`X9JF8hdc!ovyW=Z}teE-aJKM$B`D`pbF44oa^WUv(ox^ zauqvtH#C>q+%~lAIyzdG*1G)o3k1M}i?XG3!JtO!i|1Pgpm(~9+k0p$C1oZ1izilT z%uf`5_~NVxW!&*bovcUT-)pq z_NFzl|L0{W)gLGiDK0Xmta3>#3Nn@$!;)-*d3Fi^2Gr4KK_6Q>5dLB!)V7#VWj;&z?rT!z>0sR!9sFdJfi=SEg?UJ7HJCd1>td7k_84BN-9H?RpyNS1P6{Wo zl0p>O63rT;bVA%3AaiObxAwqSM%V%MSdm;iiQQDYa_Y!(knFK_qfo| z$hFR^-eSSJDpJl8*IFv&-^RYwoJ2v8KKo#|tv5O46Vgy(NE>et7*tgZ$gp~?-uGyF zcfHfo)7LS_vSl)~AJ_;g7UnCVYQJ=!0Yg+NIV2bi$$pyRcsW>py8vV}5mQ2X$0W8In5he9&26Kkt{e52mcCpx(kDueUn8AnUqAw=q*lpFp{k8MCL)ULImv7;F zb7O6-!_(bmOUpgAB@wSXb;JzsWJL4Kp{a)NK`f8IgN4JAd3|RmX)*KQEM4YO%aSZo z6Q^z;1r1S8+Q%~y7xxcbK}bX-+hcqBKNbF{m{Oik${x8 zv)2D~UjsY>qi?_}?_MMTCvKO=&G>!DJ#-HGA46!z1V+$2=E2x-IQa8J z@AYB9*7I{{&uP;}F6H4>?j9qm9^jpG+u-v9q2BEWKp;sH(a@ z6;FzvwYr87K@uf^8VAn`U!4({cfLuqXPRfoMvT%!obs8yUQUg|l5=UNg3rGZab&#w z@Q9)3=@KXRHM5JdD*u!Ch||~8IAx2z6Vj$f%1I}hJ)qinyy$x$x2@2$;&V8VhC%$j zy`kY>f0CR8P2S_Z6Cf>~-FOP(t-pHR`fX$9NhI#hmI20$ypg(pcU1fyfZbuw_O!D1=r~bPSd(jy1i~!qb z9&qKFy(i-Q4<7rzzTMbZT?KM)^B!0CQ$ME3=5amGJ@mJ~Y){Kn>bGgkXd%gZzI z)9t_j#ZZ*Gp5A1g^Xteu6grppeB!6w;^@JMhX?R1d`^F7GgwMjs^;x+;=~F`kbPgC zV8CLhDpET1b^}uN`RmJh5Q%-O%iu2j!11rVVV6j1cz(Q?P+(?fX{o|cb}>;bfb)b%vLu2PRJ-s%7IrB79EhHT;)0{ zxL#C`lgx|^ujV@lNq8gFWB%cuQ5eLb_LVUjom$?XL@RkP{9tiY7QMNbD^yTI1X#Fv z&a<}(Y@t=P7$k?_T{E7^h9V7mtFRBh3rWyO@cf%2`H)4H8pMR&f!TF-Jm zF~bnex#fgCq855n$)&*ekx{9-9tySE$&YHTt@S;c9i~(JcKzrB0>k@kxJ5Gc8EjxO zDasZnV{mToT84n1eY=X_5}mC{;eI&ZSdma*Aa&@*(QAOdReWAKw07mrItvD7Cx|q6 zc24yBQ>V;|VJFmvW+ahE>@3ci6i46fK5udhj6A;=gcNUEoCqS0?ndtEHug`o_@fxZ zQIj_oFv`~L?eP^(NtkI=ED4Ah6QLtckuVKuyVl4Kv z=KT)R-3j~mf}8ZpzZ0WKQo|QfKT6WjnD7!PZ-y$HEp^j3?gQSDD|+C3NTP@m-8FH< zK%);%oF0GIz+{oFZbU?l4+_BJY*QgLsnI9vzGnfeYR!DisVjKFd~Mz_D8s76d?*uC1f0B$vaZe4-lmm#&om2 zMkc)0cJs2KA=L|0r?+VKkVEvF^>Ok}0y~u}|7&4e>E5zmEyJ6KZ+ot$KL=1_`t0pl zl*cfIjCT?;bvZ0qm z(icPaqeS?}3E@--vDtQC`~?h#8#TYCwKNYY*Q_5pFeV8<+c{Bb9~qC{kil)9A6Oby zkqeQEY)a{QNYYffl+HkA5CkX28QeR&xDHglEM6*OfG~p?XEn1R6bj=0wcQ^%!P77w z)9GbnjZ~A2c@L9SL?}5XrisBOxrHMY&$$Ra+vqm$yFzmllh>;&$87S2YMmL?9cvM8 z`212{snq6?wjXuh1q7_V7MES{1uR;!@=X#B)J`~#0&ZtD{0^{*4IKTSHQ~{I&X|n4 zd4Cg>URVcpBz?{KqmvU%11M{KN;kxzB~XO+DR2F9hd~agbz|0hYvS+ees0H(VS+>B z-s-IslnBIXMHTLrEZ!P92<~&K6;Jng7G5iep;?-rk}PS|%{%Za06R_B4fNO7uU|i; zYKmlKW%?f z0PKttEQlBEfK@19yrsOD&uX2bNS5)S5ki6Z2c9JG{N4a~QPNvB&doGT8!&=E%oEY7 zB#ri5i$5HzpvEYO^Oe7-QsOJ2{>aTWHQ>^+saBo?HQ(lNb^T0KWod`4MyZ@|`Zob$ zQkQ^_Hi(h&i`Cb?lH~5HHLiAxjldi%qTHCFOv{!{*P`JJq6j~y`}M9Xj-P`nLq+Fm zHn#kqA>crgVAOl%U(&TDhZyjq%YHYf!qg@NW#HfVdF0i)KYY7@?f_tp^(6n(1>guL zekt{PDCLYT#<56z2*@*qYJ*5wY{okLqy4I#Mts*!9t^(pRXkl?;(px@^?z7Xe9z4-|`n z@u+G^kN+JOCF?g(OGD|L*WL-Q;cS1fv(($juVri78f`x2L|gI5wSL20_OPFXnd&M5 zNzaHVQC4-2GTc{Z_jo+K3>#DNxVhEp7qX))%@X7cb*Rj2A29s;D_3T@@ARX>q0(rQ zQ~=!-I)LodbUj3o9X7iI0H2Imp3giUHbT#S*Tp@s9%wzkx-K7p){L77xm7P8BiMFv z6wqDt*iZExQ*^51c5TI+eVg1DumoD}m#-`$>qpg{xZQ`0>9di>!$egi$sv*^{BH4s z%ju@|EoK&ST^mubS^OYLQb2Rac@ul=PAhlcxnSFbS-Wz|y@o0Bqv)THpOcf4Rty&^ zDOiw}=BGsbR6)hJfcz!P*3E-hZZ&4{+%8Uza}VFt;%8lkaYayg0f4R)u(XVH^eU&U z(*wpUb302o6WnnH!KBFWW~~w;K`;7$jv=Hl*3)ZGREjTvBz7;DNUo8aLSVUK0g{X@poL?BajtubRCE`ZZ&m!b#Ron5Qw3 zAk%e|;PNW(b=y{2eWc|diJ?UV&1KwE4o|1=q~Xz`J@4JO4+~75qJC6!t6_=WAql?q zK&y=&65sA$*}*@5cRVwFg-trUPUXL7BkMMrq}bUr^C_{Az)dzqe{9BWc`2RH=&bYc z?7x0ES-Hbwy;sk~XpGOicL!gnUhef?mQdh;9u4T6B}Z13f0UWBv?FQ3=m;&xU#IGP&Iyqju*|A-RiEe z*hp3oAGnC3l^?}pJEwspV(nqjHfOjkYsNCnVv6NYEmDTAnBJmpps@M0s-3&hm$%_1UFYl|XbRYkf@;@I{{Q55y5t0ZPo{uGTn&9DeGrQYH)}SP4 z5Cxkf1TnOD&7AjMlEbPMU*(JBy`-;UUD48mIL`1^U*VGGgmVC1 zdd`wd-Z<4nwCfjdP55v4`)Mu}&ox=I_<_cWOK|}jWX>5brhUyg#@xI-Ep<(zSTXC$ z2`7PUZfrC=64IPnsnk7>++)^yW1`jpykmV10DH=0_m4`AR;eBX)F&52zOwefjQ;N- zPmGca*M*Etd>qPqpt11vN<6MNq=@NcS#Zx3=@Y04UZu)*PX8|So#rAUyjK`gC@kz< zpaAma@4okiAfp)N@|9Cv_t)O0m**zm=L$W*F=%Sx5fMJkddX*}NSqRIS@^9yb8YTh znuboW6tW0{IR8)fxI|h@R_lAE^~8I(wl!8rR@MCKYP+H$4b*IMofEk(%z;;7f5*$Ds}_ zG{`mmEg*mpVlR_e+GwV;j{#TD%VIp@lot$^`9&JcIC%5GXEQ!~p%q?xLF5mE^!3=M z?|ICcy9;sa09}lus=SJl8ryxtiO@milCPY$LQE|26r=xomdnpQ0EU7(qcmgq8t-VN zxX1&s_)}k4DXg`%nlf4Ceztr~*5{z4Z>Ta{lL~GYA*yU$K8Wzb_^?l8lBNu|v!&P0 zDtz;_V*YAE{)4dHHoQouEviqM@Let|@69HPRM8egD%SGLMkcgEG+qoFP#+zw;94f5B4+hzb`4+Mw z`G*Vu$}*yv3D3cG4x`UIw(quX$RfqciR4CqR*ex4R=bM8QKudYJ5HLuki>s)-`KoM z@g!q|`-mPCA5q6!apeGVt#LFOw`aXbVJHHe0L+sqii4Sd-WMl^lgT8Fp&#ScdU6b}6qTR8lkpRf-S*@GphC&tLl7~%tmzSs*$9xS)V-^9R45Iw%(@?>H&8%MMxcNdUj zxu=%q8E?>&056yH&q*w*mlz|KZpRF@-xq{!p!s*sl!XY`njn&*BWSZZ&itF&^luq% zIt*!=vqq}y%;7?;F^Kgbu(tOOdnRlLr{F0l`uBnD{VXwwm|+jSxnklvsTi77POZ*o zrWXF45cU_V>LQaq#>#fe%3?J=pE+2^e-ix=Fs>F*%^$i0Rshu;WdrR6=J(RIFh8H? z{siH_fbq5+SGV1q>kZdc=Bl5P$nvpl3@)pA43`o7m>)lA6g!G|)C$zj?onNv7dO)E)|05RD#$2vm8 zLl+Nl(d@OjM&>$X8dGveYYizO&X6Kz9k{%Hg50^Fk zCxk{KhqF|a;z9;^wlX@|^QfQ_i%hFi&Kdw?$&T5Y>3t{rSvS+G9_3V>gzz#3y#Ym-es8K z@6_!h=xDL&vADw;yz|w5+sG#mE4n7*<+CFho)JP!k6gE#lcg#1UBCp*V&={NG)u+r z0#L~Ga!5gfzZM>c{CGVMr}y%n?n;5KE!o6fpmWxHv*+!9f_kgx_z$KL+I-(cayS936E|*~T*h76 z+?61k9f z#E-mGr#C}5p%$Wu8g$H-e=`I0wg{M}^#2ZP?6bn5x^?WkCC&6yKDcE~+tFdyQn!~f zmo4QO-hqE^W>pe5(OBINo}Z_VJ!Eeo$LdgL*p379ciH80NSLmFm}&3QI?6$DSN%f! zwt&XBGosH#BsYMghui0&0o7&E1}T_8!KTez?-DN3{DPDCy$`n3t4j_H#`U%H=WU}C_1|KoL`O}o1RuoELp~L zLvPq$7K#Mqt_VlRYea&=Q+3oPUwec4seinacvVnWjr#ftVKo)eG2D&w?B^?+XP&F9f)<^(}_5W~L$ zvA#6g(K=4q}?G0iZPnCU7V49V4MstJ8*fNh--Cql0H!bo%^~>D+&^3P>?$WJaQGW@UG}(>c@tunV2wv9-v~66`)wg zqJkuv7gnt3I<{z={kcrjd5ezUJZ0YOV8a`Uzo?YEf1d^P9(Fa=`4z9(e%Z8VZD@?I zsL1JLx%w+4hNpn6Zz{}gEt0!$Q*B350Q+JGU7>{}((kp>Nq@MrSB(tz_pc5^>xUnZ z>8Hq^&NNy5RCjACK*i!;l@vT`L+Gb%l|4ldO^lFTbq)Q%Bi5uJM7nryjHjP+bp(;NFu}g+gK1H3c@sOk@jC6bpV7qwI{stC zmBC*T>)V-EMcNYoZp7)VyeucBWWbr*Fh5tJxv7c+NKOh^Jm(Rs=7dT(Y=PYink%cS zLV1!NLdZroY!Cs`<#AQK(D`ZmKMRALB;g>^5Y~D1#>C?Jhoiwv5vB!m6w;!^)Jlq| z;@%qQ;F7YG0&7?PEab+=kCmX<0u@9ZOiorx*$Z%<)m7Iik-gNTEF;L2&LN|J*rztc zlZCjpsLF~GJACy@Go1W|`xS_IOm;|+#T>Ft@a5FKK=TFaGBwg9sMIIU(riNx>$Sny z1$;_K^F|jiks#}ptPa?$OQST-`Nv6l%9>)#H>q!eTfOBVmoCIPlodNP{7YHy4AiYm zF6ryf3ELQy{YLc2C=HsUl}S@jBx>%$C9v5{l#g36LrA0##a#+9omH$io$FM;z*3I! zO1=5ZaUzLutXG^ZXa!Q~aB5sX3&~ItTFs%)C%e=fSXdW2szhiAkB^slH(Twu@i2x~ zDf_jZc6(+??B}-|fFC-~rQyX36%xr)fpC})3OIlrfIDScorT~XY%Gc(;Y!(!lO#X% zUvjcVCW;8ck6`rPKV{zJ4vGO@72IyXy>om_*l!)}g3dTPOL#53$8#lSurmMxX%gC? zm$eu~jwhgYK6Q)tZ|R#?PL=fXrXApu zt`XIj$RHOQC+}%&z8yDZfhc7$lYyn3@q*)X&mqOxZ`_!CozglHO1RT8!0J{`IdNi+ zwzk!4mNXO)ttzLgcghfSBYgf4@PU^vPKZUSxv7KFsDY`U$I#(y*q?>fA6qU?I$dSM zCzW|SXXV!G6e1_W4U~SPbH`r~rf0t1k!#7N*!)uPQT(oJRPfZY=y>+0QukD*vleTx zMOekrNt0R{W1s|9$$!GdwNZ<;Vl4kr(XuYnhOM$P2PK{GOM2$GDRnRJXb?&G4kx;> zTp2mg=W0L;N>VjHUY+`a^MAsT`AS`IMc-uF}q! zd*xvXQ*<_5+5$huWj1&i4utp+z`&bQgaV%k?QpIsHpmPj1PL z$!eM~YeAUboGnWTnUsP+D|ld8fb!xQ0Mk|1%MY!!n%-kVmK=m6%_WzwYb778TNPrO*K+IYoR?DR=q>E1HZXv=eQb!_)#Q~4xKHAqlESv?L<}o)8sZ4 z+?NwZua4oQx^Gy1^>US#6pO=Hhx2B$9IP{I6l0d0M47xCV%X9mWTBorNX5#z`vZ`Z z8xED~roEQl{@i_NZwVIA3`k&9$4X&ESDWiV^&=Y(6-Ow%`!=jEpt#nDBl-8bq-Q^~ z33r}ey59Y3hS$v3VTUhLi({bpe-vbC1SzZ=kNoO+EPQ+vDdmPvZi(t+ox~uBe-uMP znd;D#f{CffpEXFgzU%37hu>q??HT_ojGup^)I0{cn0uz#BnUz9Am`JG9@U8eD3B3e z*Lp+q(VJ7Xq&#{`l7{>|NUqN&eV>|i=ed{hJmH}eUo;8z%g;)zs89b7<7HA)YI~$w;(^NcjCm*XN=GT2btyt%Q_R z9Lx0gxXI3DqpPb6f`jyVpqfG{{PQ-kK}kD*e}9>PY3IMs4-ivXx9@ zRP`nq?0+wuY$xKqZs|MRtDm^!;L#GEBdEWd<`nidS0b;8NO=C?kd*VvqHv{)gV@o_ z@(tepz!V`zzQ~_rd{oZ5BX>bfZDmwH~Y-;}stCXl=1$$MZzst5Q46-4?~ z#`6A|X~pKONtn`@+7!`#IAlYyjWf@zQEe?RPvd_js>HJ&dr4NDl$)f!y16p!h^j>a zwZrC@T0{GM_2%XtSG?>VmpVu-R3ogv?@ z1xW2X@wKWCD-2!k=ge_TLs;hNlKquERAn!v4o*VVQC!9z(Y0|| z?26mv)>K#ZarSXE&}i>>zv;8K=j?OrcpS)g8&%#xBJzGe%$->#8WVwNT5z}$*h8`~ zQ3iMYa2QfA{_h3&e2rhvgpXIsJLpP05}nT;^*);eg%WZ^HXl>?G@NL%c}8Yy9KjW+ zY>nR{996mkx`zFn3#*J0DnpNGD%UL6DnCf;3?;FbXrcLJ3HVzV3 zh~Xhta~qZHo+ViY+Xvz^x$hp;{vK42?D?JOvGcs$ zBvqTgy8NhQ39fx0j({9t(tk1i!JaeU-)+K+I0;kaU(ZS>6`7TnYOC$h`9|m4zkV#4yTj1_WGoTDS=G>*?}`lXmZnf=E2 zg;FcW+f)4DwM2JB%#u z$_#_u|0uohMc&#wby;BD==9;qo0wmgC~VXI7XDL$O$K|(MrWZZEeiT^TN{}?k+;6R zy&XL#^6vcLO%x}YX!6faYWQvuks_=Wf^O>PXZzJtSJI1>V=c3`sV;bsv`TT!z*sK` zYx!dDe)RHA8F4}DIIww>Nz`7n2wcb(M^d(Cd+Y4YEa{UiyFW7&E-GeFq|OoC-MgD( z*LHJ%$YoI?{x4#dx;z0zmsH3RO)MC>f-%fnh4Z)_`0GS*KCy#qrw6@|xBF1#S@qgA zTxji0#Ndf_H3`wnSF$PAgZ0SOlDnaTZI#;Eb4G3NhIQhi`RfnvPeN0monb{5HB6oq zHFP|c?%Cw{c{Cs1P_Ybs0k`f2`xGBK?ddPsPlw<;HuX!}=1ReWtEG7b1wIBU^1nov zDij%{bJ`=5j7
    `Mq3uf6q%%OdAyy0ch{Sx~TfR6KJB9T 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 ++7K0ZF`s{Z!v+w1G=rM&>l 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