From 0e0672465f7c75582cffa1faaca4bf8684a8ce28 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 14 Nov 2011 17:47:25 +0100 Subject: [PATCH 01/16] [Hamlet & Brice @ hackergarten] split into 2 if's intention in groovy --- .../SplitIfIntention/after.groovy.template | 2 + .../SplitIfIntention/before.groovy.template | 1 + .../SplitIfIntention/description.html | 23 ++++++ plugins/groovy/src/META-INF/plugin.xml | 5 ++ .../GroovyIntentionsBundle.properties | 2 + .../intentions/control/SplitIfIntention.java | 81 +++++++++++++++++++ .../groovy/intentions/SplitIfTest.groovy | 47 +++++++++++ 7 files changed, 161 insertions(+) create mode 100644 plugins/groovy/resources/intentionDescriptions/SplitIfIntention/after.groovy.template create mode 100644 plugins/groovy/resources/intentionDescriptions/SplitIfIntention/before.groovy.template create mode 100644 plugins/groovy/resources/intentionDescriptions/SplitIfIntention/description.html create mode 100644 plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/control/SplitIfIntention.java create mode 100644 plugins/groovy/test/org/jetbrains/plugins/groovy/intentions/SplitIfTest.groovy diff --git a/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/after.groovy.template b/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/after.groovy.template new file mode 100644 index 000000000000..5b16867bc142 --- /dev/null +++ b/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/after.groovy.template @@ -0,0 +1,2 @@ +if (a) + if (b) println 'hi' diff --git a/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/before.groovy.template b/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/before.groovy.template new file mode 100644 index 000000000000..3ba59a960d66 --- /dev/null +++ b/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/before.groovy.template @@ -0,0 +1 @@ +if (a && b) println 'hi' diff --git a/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/description.html b/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/description.html new file mode 100644 index 000000000000..c4cff689049c --- /dev/null +++ b/plugins/groovy/resources/intentionDescriptions/SplitIfIntention/description.html @@ -0,0 +1,23 @@ + + + + +This intention converts if statement containing conjuction operation in it its condition +into two nested if statements with simplified conditions.

+
+ + diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml index f6ffe7c44a72..62095d0baaa8 100644 --- a/plugins/groovy/src/META-INF/plugin.xml +++ b/plugins/groovy/src/META-INF/plugin.xml @@ -705,6 +705,11 @@ intention.category.groovy/intention.category.control.flow org.jetbrains.plugins.groovy.intentions.control.DemorgansLawIntention + + org.jetbrains.plugins.groovy.intentions.GroovyIntentionsBundle + intention.category.groovy/intention.category.control.flow + org.jetbrains.plugins.groovy.intentions.control.SplitIfIntention + org.jetbrains.plugins.groovy.intentions.GroovyIntentionsBundle intention.category.groovy/intention.category.control.flow diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/GroovyIntentionsBundle.properties b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/GroovyIntentionsBundle.properties index 0edf822782a3..bb841abb0c3d 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/GroovyIntentionsBundle.properties +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/GroovyIntentionsBundle.properties @@ -39,6 +39,8 @@ merge.else.if.intention.name=Merge else-if merge.else.if.intention.family.name=Merge Else If split.else.if.intention.name=Split else-if split.else.if.intention.family.name=Split Else If +split.if.intention.name=Split into 2 if's +split.if.intention.family.name=Split into 2 if's flip.conditional.intention.name=Flip ?: flip.conditional.intention.family.name=Flip Conditional conditional.to.elvis.intention.name=Convert Conditional to Elvis diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/control/SplitIfIntention.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/control/SplitIfIntention.java new file mode 100644 index 000000000000..a55704fa829f --- /dev/null +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/control/SplitIfIntention.java @@ -0,0 +1,81 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.groovy.intentions.control; + +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiElement; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.groovy.intentions.base.Intention; +import org.jetbrains.plugins.groovy.intentions.base.PsiElementPredicate; +import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrIfStatement; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrBinaryExpression; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; + +/** + * @author Brice Dutheil + * @author Hamlet D'Arcy + */ +public class SplitIfIntention extends Intention { + + @Override + protected void processIntention(@NotNull PsiElement andElement, Project project, Editor editor) throws IncorrectOperationException { + GrBinaryExpression binaryExpression = (GrBinaryExpression) andElement.getParent(); + GrIfStatement ifStatement = (GrIfStatement) binaryExpression.getParent(); + + GrExpression leftOperand = binaryExpression.getLeftOperand(); + GrExpression rightOperand = binaryExpression.getRightOperand(); + + GrStatement thenBranch = ifStatement.getThenBranch(); + + assert thenBranch != null; + assert rightOperand != null; + GrStatement newSplittedIfs = GroovyPsiElementFactory.getInstance(project) + .createStatementFromText( + "if(" + leftOperand.getText() + + ") { \n" + + " if(" + rightOperand.getText() + ")" + + thenBranch.getText() + "\n" + + "}" + ); + + ifStatement.replaceWithStatement(newSplittedIfs); + } + + @NotNull + @Override + protected PsiElementPredicate getElementPredicate() { + return new PsiElementPredicate() { + @Override + public boolean satisfiedBy(PsiElement element) { + if ("&&".equals(element.getText()) && + element.getParent() instanceof GrBinaryExpression && + ((GrBinaryExpression)element.getParent()).getRightOperand() != null && + element.getParent().getParent() instanceof GrIfStatement && + ((GrIfStatement) element.getParent().getParent()).getElseBranch() == null + ) { + return true; + + } + + return false; + } + }; + } +} diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/intentions/SplitIfTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/intentions/SplitIfTest.groovy new file mode 100644 index 000000000000..07385c55a0f1 --- /dev/null +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/intentions/SplitIfTest.groovy @@ -0,0 +1,47 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.groovy.intentions + +/** + * @author Brice Dutheil + * @author Hamlet D'Arcy + */ +class SplitIfTest extends GrIntentionTestCase { + public void test_that_two_binary_operand_are_split_into_2_if_statements() throws Exception { + doTextTest '''if(a && b) { + c(); +} +''', +'Split into 2 if\'s', +'''if (a) { + if (b) { + c(); + } +} +''' + } + + +public void test_that_two_binary_operand_are_not_split_when_if_statements_has_else_branch() throws Exception { + doAntiTest '''if(a && b) { + c(); +} else { + d(); +} +''', +'Split into 2 if\'s' + } +} From 4295b14fc32510ca9aaa28c508786f3e471c0f21 Mon Sep 17 00:00:00 2001 From: Shaverdova Elena Date: Mon, 14 Nov 2011 20:40:30 +0400 Subject: [PATCH 02/16] IDEA-76491 Compare Directories: Synchronize All copies only one file, CME at DirDiffTableModel.synchronizeAll() on next apply --- .../com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java index 572cceafb0d8..61f6a7c3f356 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java @@ -717,7 +717,7 @@ public class DirDiffTableModel extends AbstractTableModel implements DirDiffMode public void synchronizeAll() { synchronized (myElements) { - for (DirDiffElement element : myElements) { + for (DirDiffElement element : myElements.toArray(new DirDiffElement[myElements.size()])) { syncElement(element); } selectFirstRow(); From a76059444266e7f0446f649286e4b0be0fb4d24a Mon Sep 17 00:00:00 2001 From: Dmitry Boulytchev Date: Mon, 14 Nov 2011 21:09:48 +0400 Subject: [PATCH 03/16] Implemented conservative heuristic for method addition (jps/incremental). --- .../ether/dependencyView/Mappings.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java index f23aceb0a4ee..063ac12052a6 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java @@ -788,10 +788,39 @@ public class Mappings { } for (MethodRepr m : diff.methods().added()) { - if ((it.access & Opcodes.ACC_INTERFACE) > 0 || (m.access & Opcodes.ACC_ABSTRACT) > 0) { + if (it.isAnnotation()) { + continue; + } + + if ((it.access & Opcodes.ACC_INTERFACE) > 0 || + (it.access & Opcodes.ACC_ABSTRACT) > 0 || + (m.access & Opcodes.ACC_ABSTRACT) > 0) { u.affectSubclasses(it.name, affectedFiles, affectedUsages, dependants, false); } + if ((m.access & Opcodes.ACC_PRIVATE) == 0 && !myContext.getValue(m.name).equals("")) { + final ClassRepr oldIt = getReprByName(it.name); + + if (oldIt != null && self.findOverridenMethods(m, oldIt).size() > 0) { // oldIt.findMethods(MethodRepr.equalByJavaRules(m)).size() > 0) { + + } + else { + final UsageRepr.Usage usage = it.createUsage(); + + affectedUsages.add(usage); + + if ((m.access & Opcodes.ACC_PUBLIC) > 0) { + + } + else if (isPackageLocal(m.access)) { + usageConstraints.put(usage, u.new PackageConstraint(it.getPackageName())); + } + else if ((m.access & Opcodes.ACC_PROTECTED) > 0) { + usageConstraints.put(usage, u.new InheritanceConstraint(it.name)); + } + } + } + if ((m.access & Opcodes.ACC_PRIVATE) == 0) { final Collection> affectedMethods = u.findAllMethodsBySpecificity(m, it); final MethodRepr.Predicate overrides = MethodRepr.equalByJavaRules(m); From 3ed9cdd3041b6369d6eea0282487c53ef88b298d Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Mon, 14 Nov 2011 18:17:51 +0100 Subject: [PATCH 04/16] bundle jgit --- build/scripts/layouts.gant | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/scripts/layouts.gant b/build/scripts/layouts.gant index 155875a96f37..0fafd4f1e2d2 100644 --- a/build/scripts/layouts.gant +++ b/build/scripts/layouts.gant @@ -233,6 +233,10 @@ public def layoutCommunityPlugins(String home) { include(name: "ini4j*.jar") exclude(name: "ini4j*sources.jar") } + fileset(dir: "$home/plugins/git4idea/lib/jgit") { + include(name: "org.eclipse.jgit*.jar") + exclude(name: "*.zip") + } } layoutPlugin("svn4idea") { From f811a2b01ee66f872b25f4678cf6c08873265fda Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 14 Nov 2011 19:53:56 +0100 Subject: [PATCH 05/16] navbar UIs --- .../ide/navigationToolbar/NavBarItem.java | 150 +++----------- .../ide/navigationToolbar/NavBarPanel.java | 22 +- .../NavBarRootPaneExtension.java | 108 +--------- .../ui/AbstractNavBarUI.java | 190 ++++++++++++++++++ .../navigationToolbar/ui/AquaNavBarUI.java | 81 ++++++++ .../navigationToolbar/ui/CommonNavBarUI.java | 39 ++++ .../ide/navigationToolbar/ui/GtkNavBarUI.java | 28 +++ .../ide/navigationToolbar/ui/NavBarUI.java | 50 +++++ .../navigationToolbar/ui/NavBarUIManager.java | 34 ++++ 9 files changed, 472 insertions(+), 230 deletions(-) create mode 100644 platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java create mode 100644 platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AquaNavBarUI.java create mode 100644 platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/CommonNavBarUI.java create mode 100644 platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/GtkNavBarUI.java create mode 100644 platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/NavBarUI.java create mode 100644 platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/NavBarUIManager.java diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarItem.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarItem.java index 880022cabfb9..b0b432952c37 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarItem.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarItem.java @@ -15,29 +15,21 @@ */ package com.intellij.ide.navigationToolbar; -import com.intellij.ide.ui.UISettings; +import com.intellij.ide.navigationToolbar.ui.NavBarUI; import com.intellij.openapi.Disposable; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.IconLoader; import com.intellij.ui.SimpleColoredComponent; import com.intellij.ui.SimpleTextAttributes; -import com.intellij.util.IconUtil; import com.intellij.util.PlatformIcons; import com.intellij.util.ui.EmptyIcon; -import com.intellij.util.ui.JBInsets; -import com.intellij.util.ui.UIUtil; import javax.swing.*; import java.awt.*; -import java.awt.geom.Path2D; /** * @author Konstantin Bulenkov */ -class NavBarItem extends SimpleColoredComponent implements Disposable { - private static Image SEPARATOR_ACTIVE = IconUtil.toImage(IconLoader.getIcon("/general/navbarSeparatorActive.png")); - private static Image SEPARATOR_PASSIVE = IconUtil.toImage(IconLoader.getIcon("/general/navbarSeparatorPassive.png")); - private static Image SEPARATOR_GRADIENT = IconUtil.toImage(IconLoader.getIcon("/general/navbarSeparatorGradient.png")); +public class NavBarItem extends SimpleColoredComponent implements Disposable { //private static int count = 0; private final String myText; @@ -47,12 +39,13 @@ class NavBarItem extends SimpleColoredComponent implements Disposable { private final NavBarPanel myPanel; private Object myObject; private final boolean isPopupElement; - private JBInsets myPadding; + private final NavBarUI myUI; public NavBarItem(NavBarPanel panel, Object object, int idx, Disposable parent) { //count++; //System.out.println(count); myPanel = panel; + myUI = panel.getNavBarUI(); myObject = object; myIndex = idx; isPopupElement = idx == -1; @@ -77,17 +70,15 @@ class NavBarItem extends SimpleColoredComponent implements Disposable { Disposer.register(parent == null ? panel : parent, this); setOpaque(false); - setFont(UIUtil.isUnderAquaLookAndFeel() ? UIUtil.getLabelFont().deriveFont(11.0f) : getFont()); - if (isPopupElement || !NavBarPanel.isDecorated()) { - setIpad(new Insets(1,2,1,2)); - } else { - setIpad(new Insets(0,0,0,0)); + setFont(myUI.getElementFont(this)); + setIpad(myUI.getElementIpad(isPopupElement)); + + if (!isPopupElement) { setMyBorder(null); setBorder(null); setPaintFocusBorder(false); } update(); - myPadding = new JBInsets(3, 3, 3, 3); } /** @@ -115,124 +106,52 @@ class NavBarItem extends SimpleColoredComponent implements Disposable { clear(); setIcon(myIcon); - final boolean focused = isFocusedOrPopupElement(); - final NavBarModel model = myPanel.getModel(); + final boolean focused = isFocusedOrPopupElement(); final boolean selected = isSelected(); - if (!NavBarPanel.isDecorated()) { - setPaintFocusBorder(selected && !isPopupElement && myPanel.isNodePopupActive()); - } setFocusBorderAroundIcon(false); + setBackground(myUI.getBackground(selected, focused)); - setBackground(selected && focused - ? UIUtil.getListSelectionBackground() - : (UIUtil.isUnderGTKLookAndFeel() ? Color.WHITE : UIUtil.getListBackground())); + Color fg = myUI.getForeground(selected, focused, isInactive()); + if (fg == null) fg = myAttributes.getFgColor(); - final Color fg = selected && focused - ? UIUtil.getListSelectionForeground() - : model.getSelectedIndex() < myIndex && model.getSelectedIndex() != -1 - ? UIUtil.getInactiveTextColor() - : myAttributes.getFgColor(); - - final Color bg = selected && focused ? UIUtil.getListSelectionBackground() : myAttributes.getBgColor(); + final Color bg = getBackground(); append(myText, new SimpleTextAttributes(bg, fg, myAttributes.getWaveColor(), myAttributes.getStyle())); repaint(); } + + public boolean isInactive() { + final NavBarModel model = myPanel.getModel(); + return model.getSelectedIndex() < myIndex && model.getSelectedIndex() != -1; + } + + public boolean isPopupElement() { + return isPopupElement; + } @Override protected void doPaint(Graphics2D g) { - if (isPopupElement || !NavBarPanel.isDecorated()) { + if (isPopupElement) { super.doPaint(g); } else { - doPaintDecorated(g); + myUI.doPaintNavBarItem(g, this, myPanel); } } - private void doPaintDecorated(Graphics2D g) { - Icon icon = myIcon; - final Color bg = isSelected() && isFocused() - ? UIUtil.getListSelectionBackground() - : (UIUtil.isUnderGTKLookAndFeel() ? Color.WHITE : UIUtil.getListBackground()); - final Color c = UIUtil.getListSelectionBackground(); - final Color selBg = new Color(c.getRed(), c.getGreen(), c.getBlue(), getAlpha()); - int w = getWidth(); - int h = getHeight(); - if (/*!UIUtil.isUnderAquaLookAndFeel() ||*/ myPanel.isInFloatingMode() || (isSelected() && myPanel.hasFocus())) { - g.setPaint(isSelected() && isFocused() ? selBg : bg); - g.fillRect(0, 0, w - (isLastElement() /*|| !UIUtil.isUnderAquaLookAndFeel()*/ ? 0 : getDecorationOffset()), h); - } - final int offset = isFirstElement() ? getFirstElementLeftOffset() : 0; - final int iconOffset = myPadding.left + offset; - icon.paintIcon(this, g, iconOffset, (h - icon.getIconHeight()) / 2); - final int textOffset = icon.getIconWidth() + myPadding.width() + offset; - int x = doPaintText(g, textOffset, false); - g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - - g.translate(x, 0); - Path2D.Double path; - int off = getDecorationOffset(); - if (isFocused()) { - if (isSelected() && !isLastElement()) { - path = new Path2D.Double(); - g.translate(2, 0); - path.moveTo(0, 0); - path.lineTo(off, h / 2); // |\ - path.lineTo(0, h); // |/ - path.lineTo(0, 0); - g.setColor(selBg); - g.fill(path); - g.translate(-2, 0); - } - if (/*!UIUtil.isUnderAquaLookAndFeel() || */myPanel.isInFloatingMode() || isNextSelected()) { - if (! isLastElement()) { - path = new Path2D.Double(); - path.moveTo(0, 0); - path.lineTo(off, h / 2); // ___ - path.lineTo(0, h); // \ | - path.lineTo(off + 2, h); // /_| - path.lineTo(off + 2, 0); - path.lineTo(0, 0); - g.setColor(isNextSelected() ? selBg : UIUtil.getListBackground()); - //if (UIUtil.isUnderAquaLookAndFeel() && isNextSelected() || !UIUtil.isUnderAquaLookAndFeel()) { - g.fill(path); - //} - } - } - } - if (! isLastElement() && ((!isSelected() && !isNextSelected()) || !myPanel.hasFocus())) { - Image img = SEPARATOR_PASSIVE; - final UISettings settings = UISettings.getInstance(); - if (settings.SHOW_NAVIGATION_BAR) { - img = SEPARATOR_GRADIENT; - } - g.drawImage(img, null, null); - } + public int doPaintText(Graphics2D g, int offset) { + return super.doPaintText(g, offset, false); } - private static short getAlpha() { - if ((UIUtil.isUnderAlloyLookAndFeel() && !UIUtil.isUnderAlloyIDEALookAndFeel()) - || UIUtil.isUnderMetalLookAndFeel() || UIUtil.isUnderMetalLookAndFeel()){ - return 255; - } - return 150; - } - private static int getDecorationOffset() { - return 11; - } - - private static int getFirstElementLeftOffset() { - return 6; - } - private boolean isLastElement() { + public boolean isLastElement() { return myIndex == myPanel.getModel().size() - 1; } - private boolean isFirstElement() { + public boolean isFirstElement() { return myIndex == 0; } @@ -244,11 +163,8 @@ class NavBarItem extends SimpleColoredComponent implements Disposable { @Override public Dimension getPreferredSize() { final Dimension size = super.getPreferredSize(); - if (! isPopupElement && NavBarPanel.isDecorated()) { - size.width += getDecorationOffset() + myPadding.width() + (isFirstElement() ? getFirstElementLeftOffset() : 0); - size.height += myPadding.height(); - } - return size; + final Dimension offsets = myUI.getOffsets(this); + return new Dimension(size.width + offsets.width, size.height + offsets.height); } @Override @@ -260,7 +176,7 @@ class NavBarItem extends SimpleColoredComponent implements Disposable { return isFocused() || isPopupElement; } - private boolean isFocused() { + public boolean isFocused() { final Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); return focusOwner == myPanel && !myPanel.isNodePopupShowing(); } @@ -279,7 +195,7 @@ class NavBarItem extends SimpleColoredComponent implements Disposable { @Override protected boolean shouldDrawMacShadow() { - return UIUtil.isUnderAquaLookAndFeel() && !isSelected(); + return myUI.isDrawMacShadow(isSelected(), isFocused()); } @Override @@ -315,7 +231,7 @@ class NavBarItem extends SimpleColoredComponent implements Disposable { } - private boolean isNextSelected() { + public boolean isNextSelected() { return myIndex == myPanel.getModel().getSelectedIndex() - 1; } } diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java index 3529031de0d9..562510d6f988 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarPanel.java @@ -23,6 +23,8 @@ import com.intellij.ide.IdeView; import com.intellij.ide.dnd.DnDActionInfo; import com.intellij.ide.dnd.DnDDragStartBean; import com.intellij.ide.dnd.DnDSupport; +import com.intellij.ide.navigationToolbar.ui.NavBarUI; +import com.intellij.ide.navigationToolbar.ui.NavBarUIManager; import com.intellij.ide.projectView.ProjectView; import com.intellij.ide.projectView.impl.AbstractProjectViewPane; import com.intellij.ide.projectView.impl.ProjectRootsUtil; @@ -42,7 +44,6 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.AsyncResult; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.SystemInfo; -import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -65,7 +66,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -import javax.swing.border.EmptyBorder; import javax.swing.tree.TreeNode; import java.awt.*; import java.awt.event.MouseAdapter; @@ -102,7 +102,7 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner, Dis private RelativePoint myLocationCache; public NavBarPanel(final Project project) { - super(new FlowLayout(FlowLayout.LEFT, isDecorated() ? 0 : 5, 0)); + super(new FlowLayout(FlowLayout.LEFT, 0 , 0)); myProject = project; myModel = new NavBarModel(myProject); myIdeView = new NavBarIdeView(this); @@ -110,10 +110,6 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner, Dis myUpdateQueue = new NavBarUpdateQueue(this); PopupHandler.installPopupHandler(this, IdeActions.GROUP_NAVBAR_POPUP, ActionPlaces.NAVIGATION_BAR); - - if (!isDecorated()) { - setBorder(/*new NavBarBorder(false, -1)*/ new EmptyBorder(1,0,1,4)); - } setOpaque(false); myCopyPasteDelegator = new CopyPasteDelegator(myProject, NavBarPanel.this) { @@ -129,10 +125,6 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner, Dis Disposer.register(project, this); } - public static boolean isDecorated() { - return Registry.is("navbar.is.decorated"); - } - public boolean isNodePopupActive() { return myNodePopup != null && myNodePopup.isVisible(); } @@ -300,7 +292,7 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner, Dis return null; } - boolean isInFloatingMode() { + public boolean isInFloatingMode() { return myHint != null && myHint.isVisible(); } @@ -833,4 +825,10 @@ public class NavBarPanel extends JPanel implements DataProvider, PopupOwner, Dis info.put("navBarPopup", popupText.toString()); } } + + @SuppressWarnings("MethodMayBeStatic") + @NotNull + public NavBarUI getNavBarUI() { + return NavBarUIManager.getUI(); + } } diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarRootPaneExtension.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarRootPaneExtension.java index 39b9815b3484..ab9e9c70cdcf 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarRootPaneExtension.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/NavBarRootPaneExtension.java @@ -20,6 +20,7 @@ */ package com.intellij.ide.navigationToolbar; +import com.intellij.ide.navigationToolbar.ui.NavBarUIManager; import com.intellij.ide.ui.LafManager; import com.intellij.ide.ui.UISettings; import com.intellij.ide.ui.UISettingsListener; @@ -27,13 +28,10 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.actionSystem.ex.ComboBoxAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Ref; import com.intellij.openapi.wm.IdeRootPaneNorthExtension; import com.intellij.openapi.wm.impl.IdeFrameImpl; -import com.intellij.ui.ColorUtil; import com.intellij.ui.ScrollPaneFactory; -import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; @@ -43,10 +41,7 @@ import java.awt.*; /** * @author Konstantin Bulenkov */ -//TODO[kb]: cleanup public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { - private static final Icon CROSS_ICON = IconLoader.getIcon("/actions/cross.png"); - private JComponent myWrapperPanel; @NonNls public static final String NAV_BAR = "NavBar"; private Project myProject; @@ -54,7 +49,6 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { private JPanel myRunPanel; private boolean myNavToolbarGroupExist; private JScrollPane myScrollPane; - private JLabel myCloseIcon; public NavBarRootPaneExtension(Project project) { myProject = project; @@ -92,46 +86,17 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { @Override protected void paintChildren(Graphics g) { super.paintChildren(g); - if (UIUtil.isUnderAquaLookAndFeel() && !isMainToolbarVisible()) { - final Rectangle r = getBounds(); - //g.setColor(new Color(0,0,0, 90)); - //g.drawLine(0, r.height - 4, r.width, r.height - 4); - g.setColor(new Color(0, 0, 0, 90)); - g.drawLine(0, r.height - 2, r.width, r.height - 2); - g.setColor(new Color(0, 0, 0, 20)); - g.drawLine(0, r.height - 1, r.width, r.height - 1); - } + NavBarUIManager.getUI().doPaintWrapperPanelChildren((Graphics2D)g, getBounds(), isMainToolbarVisible()); } @Override protected void paintComponent(Graphics g) { - //if (!UIUtil.isUnderAquaLookAndFeel()) { - // super.paintComponent(g); - // return; - //} - - final Rectangle r = getBounds(); - if (isMainToolbarVisible()) { - g.setColor(new Color(200, 200, 200)); - g.fillRect(0, 0, r.width, r.height); - } - else { - final Color startColor = UIUtil.isUnderAquaLookAndFeel() ? new Color(240, 240, 240) : UIUtil.getControlColor(); - final Color endColor = ColorUtil.shift(startColor, 7.0d / 8.0d); - ((Graphics2D)g).setPaint(new GradientPaint(0, 0, startColor, 0, r.height, endColor)); - g.fillRect(0, 0, r.width, r.height); - //UIUtil.drawGradientHToolbarBackground(g, r.width, r.height); - } + NavBarUIManager.getUI().doPaintWrapperPanel((Graphics2D)g, getBounds(), isMainToolbarVisible()); } @Override public Insets getInsets() { - final Insets i = super.getInsets(); - if (!UIUtil.isUnderAquaLookAndFeel()) { - return new Insets(0, 0, 0, 0); - } - - return new Insets(i.top, i.left, i.bottom + 1, i.right); + return NavBarUIManager.getUI().getWrapperPanelInsets(super.getInsets()); } }; myWrapperPanel.add(buildNavBarPanel(), BorderLayout.CENTER); @@ -149,7 +114,6 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { final DefaultActionGroup group = (DefaultActionGroup)toolbarRunGroup; final boolean needGap = isNeedGap(group); final ActionToolbar actionToolbar = manager.createActionToolbar(ActionPlaces.NAVIGATION_BAR, group, true); - //actionToolbar.setLayoutPolicy(ActionToolbar.NOWRAP_LAYOUT_POLICY); final JComponent component = actionToolbar.getComponent(); component.setOpaque(false); myRunPanel = new JPanel(new BorderLayout()); @@ -208,7 +172,6 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { laf = LafManager.getInstance().getCurrentLookAndFeel().getName(); panel.get().removeAll(); myScrollPane = null; - myCloseIcon = null; if (myNavigationBar != null && !Disposer.isDisposed(myNavigationBar)) { Disposer.dispose(myNavigationBar); } @@ -220,25 +183,12 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { myScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); myScrollPane.setHorizontalScrollBar(null); myScrollPane.setBorder(null); - myScrollPane.setOpaque(false); myScrollPane.getViewport().setOpaque(false); - - //panel.get().setBackground(UIUtil.isUnderGTKLookAndFeel() ? Color.WHITE : UIUtil.getListBackground()); - panel.get().setOpaque(true);//!UIUtil.isUnderAquaLookAndFeel() || UISettings.getInstance().SHOW_MAIN_TOOLBAR); + panel.get().setOpaque(true); panel.get().setBorder(new NavBarBorder(true, 0)); myNavigationBar.setBorder(null); panel.get().add(myScrollPane, BorderLayout.CENTER); - //if (!SystemInfo.isMac) { - // myCloseIcon = new JLabel(CROSS_ICON); - // myCloseIcon.addMouseListener(new MouseAdapter() { - // public void mouseClicked(final MouseEvent e) { - // UISettings.getInstance().SHOW_NAVIGATION_BAR = false; - // uiSettingsChanged(UISettings.getInstance()); - // } - // }); - // panel.get().add(myCloseIcon, BorderLayout.EAST); - //} } }; @@ -254,42 +204,7 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); - //if (UIUtil.isUnderAquaLookAndFeel()) { - final Rectangle r = getBounds(); - final Graphics2D g2d = (Graphics2D)g; - //if (!isMainToolbarVisible() && UIUtil.isUnderAquaLookAndFeel()) { - //if (UIUtil.isUnderAquaLookAndFeel()) { - // final Dimension d = getPreferredSize(); - // final int topOffset = UIUtil.isUnderAquaLookAndFeel() ? (r.height - d.height) / 2 + 2 : 0; - // UIUtil.drawDoubleSpaceDottedLine(g2d, topOffset, topOffset + d.height - 1, r.width - 1, Color.GRAY, false); - //} else { - // g2d.setPaint(getBackground()); - // g2d.fillRect(0,0, r.width, r.height); - //} - //} - //else { - final boolean undocked = isUndocked(); - final Color startColor = UIUtil.isUnderAquaLookAndFeel() ? new Color(240, 240, 240) : UIUtil.getControlColor(); - final Color endColor = ColorUtil.shift(startColor, 7.0d / 8.0d); - g2d.setPaint(new GradientPaint(0, 0, startColor, 0, r.height, endColor)); - g.fillRect(0, 0, r.width, r.height); - - if (!undocked) { - g.setColor(new Color(255, 255, 255, 220)); - g.drawLine(0, 1, r.width, 1); - } - - g.setColor(UIUtil.getBorderColor()); - if (!undocked) g.drawLine(0, 0, r.width, 0); - g.drawLine(0, r.height-1, r.width, r.height-1); - - if (!isMainToolbarVisible()) { - UIUtil.drawDottedLine(g2d, r.width - 1, 0, r.width - 1, r.height, null, Color.GRAY); - } - //} - //} else { - // super.paintComponent(g); - //} + NavBarUIManager.getUI().doPaintNavBarPanel((Graphics2D)g, getBounds(), isMainToolbarVisible(), isUndocked()); } @Override @@ -300,19 +215,11 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { int x = insets.left; if (myScrollPane == null) return; final Component navBar = myScrollPane; - final Component closeLabel = myCloseIcon; final Dimension preferredSize = navBar.getPreferredSize(); - final Dimension closePreferredSize = closeLabel == null ? new Dimension() : closeLabel.getPreferredSize(); navBar.setBounds(x, insets.top + ((r.height - preferredSize.height - insets.top - insets.bottom) / 2), - r.width - insets.left - insets.right - closePreferredSize.width, preferredSize.height); - - if (closeLabel != null) { - closeLabel.setBounds(x + r.width - insets.left - insets.right - closePreferredSize.width, - insets.top + ((r.height - closePreferredSize.height - insets.top - insets.bottom) / 2), - closePreferredSize.width, closePreferredSize.height); - } + r.width - insets.left - insets.right, preferredSize.height); } }); @@ -331,7 +238,6 @@ public class NavBarRootPaneExtension extends IdeRootPaneNorthExtension { if (myWrapperPanel.getComponentCount() > 0) { final Component c = myWrapperPanel.getComponent(0); if (c instanceof JComponent) ((JComponent)c).setOpaque(false); - //!UIUtil.isUnderAquaLookAndFeel() || isMainToolbarVisible()); } } } diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java new file mode 100644 index 000000000000..57f88056f909 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java @@ -0,0 +1,190 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.navigationToolbar.ui; + +import com.intellij.ide.navigationToolbar.NavBarItem; +import com.intellij.ide.navigationToolbar.NavBarPanel; +import com.intellij.ide.ui.UISettings; +import com.intellij.openapi.util.IconLoader; +import com.intellij.ui.ColorUtil; +import com.intellij.util.IconUtil; +import com.intellij.util.ui.JBInsets; +import com.intellij.util.ui.UIUtil; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.awt.*; +import java.awt.geom.Path2D; + +/** + * @author Konstantin Bulenkov + */ +public abstract class AbstractNavBarUI implements NavBarUI { + //private static Image SEPARATOR_ACTIVE = IconUtil.toImage(IconLoader.getIcon("/general/navbarSeparatorActive.png")); + static Image SEPARATOR_PASSIVE = IconUtil.toImage(IconLoader.getIcon("/general/navbarSeparatorPassive.png")); + static Image SEPARATOR_GRADIENT = IconUtil.toImage(IconLoader.getIcon("/general/navbarSeparatorGradient.png")); + + @Override + public Insets getElementIpad(boolean isPopupElement) { + return isPopupElement ? new Insets(1, 2, 1, 2) : JBInsets.NONE; + } + + @Override + public JBInsets getElementPadding() { + return new JBInsets(3, 3, 3, 3); + } + + @Override + public Font getElementFont(NavBarItem navBarItem) { + return navBarItem.getFont(); + } + + @Override + public Color getBackground(boolean selected, boolean focused) { + return selected && focused ? UIUtil.getListSelectionBackground() : UIUtil.getListBackground(); + } + + @Nullable + @Override + public Color getForeground(boolean selected, boolean focused, boolean inactive) { + return selected && focused ? UIUtil.getListSelectionForeground() + : inactive ? UIUtil.getInactiveTextColor() : null; + } + + @Override + public short getSelectionAlpha() { + if ((UIUtil.isUnderAlloyLookAndFeel() && !UIUtil.isUnderAlloyIDEALookAndFeel()) + || UIUtil.isUnderMetalLookAndFeel() + || UIUtil.isUnderMetalLookAndFeel()) { + return 255; + } + return 150; + } + + @Override + public boolean isDrawMacShadow(boolean selected, boolean focused) { + return false; + } + + @Override + public void doPaintNavBarItem(Graphics2D g, NavBarItem item, NavBarPanel navbar) { + Icon icon = item.getIcon(); + final Color bg = item.isSelected() && item.isFocused() + ? UIUtil.getListSelectionBackground() + : (UIUtil.isUnderGTKLookAndFeel() ? Color.WHITE : UIUtil.getListBackground()); + final Color c = UIUtil.getListSelectionBackground(); + final Color selBg = new Color(c.getRed(), c.getGreen(), c.getBlue(), getSelectionAlpha()); + int w = item.getWidth(); + int h = item.getHeight(); + if (navbar.isInFloatingMode() || (item.isSelected() && navbar.hasFocus())) { + g.setPaint(item.isSelected() && item.isFocused() ? selBg : bg); + g.fillRect(0, 0, w - (item.isLastElement() ? 0 : getDecorationOffset()), h); + } + final int offset = item.isFirstElement() ? getFirstElementLeftOffset() : 0; + final int iconOffset = getElementPadding().left + offset; + icon.paintIcon(item, g, iconOffset, (h - icon.getIconHeight()) / 2); + final int textOffset = icon.getIconWidth() + getElementPadding().width() + offset; + int x = item.doPaintText(g, textOffset); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + g.translate(x, 0); + Path2D.Double path; + int off = getDecorationOffset(); + if (item.isFocused()) { + if (item.isSelected() && !item.isLastElement()) { + path = new Path2D.Double(); + g.translate(2, 0); + path.moveTo(0, 0); + path.lineTo(off, h / 2); // |\ + path.lineTo(0, h); // |/ + path.lineTo(0, 0); + g.setColor(selBg); + g.fill(path); + g.translate(-2, 0); + } + + if (navbar.isInFloatingMode() || item.isNextSelected()) { + if (! item.isLastElement()) { + path = new Path2D.Double(); + path.moveTo(0, 0); + path.lineTo(off, h / 2); // ___ + path.lineTo(0, h); // \ | + path.lineTo(off + 2, h); // /_| + path.lineTo(off + 2, 0); + path.lineTo(0, 0); + g.setColor(item.isNextSelected() ? selBg : UIUtil.getListBackground()); + g.fill(path); + } + } + } + if (! item.isLastElement() && ((!item.isSelected() && !item.isNextSelected()) || !navbar.hasFocus())) { + Image img = SEPARATOR_PASSIVE; + final UISettings settings = UISettings.getInstance(); + if (settings.SHOW_NAVIGATION_BAR) { + img = SEPARATOR_GRADIENT; + } + g.drawImage(img, null, null); + } + } + + private int getDecorationOffset() { + return 11; + } + + private int getFirstElementLeftOffset() { + return 6; + } + + @Override + public Dimension getOffsets(NavBarItem item) { + final Dimension size = new Dimension(); + if (! item.isPopupElement()) { + size.width += getDecorationOffset() + getElementPadding().width() + (item.isFirstElement() ? getFirstElementLeftOffset() : 0); + size.height += getElementPadding().height(); + } + return size; + } + + @Override + public void doPaintWrapperPanelChildren(Graphics2D g, Rectangle bounds, boolean mainToolbarVisible) { + } + + @Override + public Insets getWrapperPanelInsets(Insets insets) { + return JBInsets.NONE; + } + + @Override + public void doPaintNavBarPanel(Graphics2D g, Rectangle r, boolean mainToolbarVisible, boolean undocked) { + final Color startColor = UIUtil.getControlColor(); + final Color endColor = ColorUtil.shift(startColor, 7.0d / 8.0d); + g.setPaint(new GradientPaint(0, 0, startColor, 0, r.height, endColor)); + g.fillRect(0, 0, r.width, r.height); + + if (!undocked) { + g.setColor(new Color(255, 255, 255, 220)); + g.drawLine(0, 1, r.width, 1); + } + + g.setColor(UIUtil.getBorderColor()); + if (!undocked) g.drawLine(0, 0, r.width, 0); + g.drawLine(0, r.height-1, r.width, r.height-1); + + if (!mainToolbarVisible) { + UIUtil.drawDottedLine(g, r.width - 1, 0, r.width - 1, r.height, null, Color.GRAY); + } + } +} diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AquaNavBarUI.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AquaNavBarUI.java new file mode 100644 index 000000000000..e921910d4bb2 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AquaNavBarUI.java @@ -0,0 +1,81 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.navigationToolbar.ui; + +import com.intellij.ide.navigationToolbar.NavBarItem; +import com.intellij.util.ui.UIUtil; + +import java.awt.*; + +/** + * @author Konstantin Bulenkov + */ +public class AquaNavBarUI extends AbstractNavBarUI { + @Override + public Font getElementFont(NavBarItem navBarItem) { + return UIUtil.getLabelFont().deriveFont(11.0f); + } + + @Override + public boolean isDrawMacShadow(boolean selected, boolean focused) { + return !selected; + } + + @Override + public void doPaintWrapperPanelChildren(Graphics2D g, Rectangle bounds, boolean mainToolbarVisible) { + super.doPaintWrapperPanelChildren(g, bounds, mainToolbarVisible); + if (!mainToolbarVisible) { + g.setColor(new Color(0, 0, 0, 90)); + g.drawLine(0, bounds.height - 2, bounds.width, bounds.height - 2); + g.setColor(new Color(0, 0, 0, 20)); + g.drawLine(0, bounds.height - 1, bounds.width, bounds.height - 1); + } + } + + @Override + public void doPaintWrapperPanel(Graphics2D g, Rectangle bounds, boolean mainToolbarVisible) { + if (mainToolbarVisible) { + g.setColor(new Color(200, 200, 200)); + g.fillRect(0, 0, bounds.width, bounds.height); + } else { + UIUtil.drawGradientHToolbarBackground(g, bounds.width, bounds.height); + } + } + + @Override + public Insets getWrapperPanelInsets(Insets i) { + return new Insets(i.top, i.left, i.bottom + 1, i.right); + } + + @Override + public void doPaintNavBarPanel(Graphics2D g, Rectangle r, boolean mainToolbarVisible, boolean undocked) { + g.setPaint(new GradientPaint(0, 0, new Color(240, 240, 240), 0, r.height, new Color(210, 210, 210))); + g.fillRect(0, 0, r.width, r.height); + + if (!undocked) { + g.setColor(new Color(255, 255, 255, 220)); + g.drawLine(0, 1, r.width, 1); + } + + g.setColor(UIUtil.getBorderColor()); + if (!undocked) g.drawLine(0, 0, r.width, 0); + g.drawLine(0, r.height-1, r.width, r.height-1); + + if (!mainToolbarVisible) { + UIUtil.drawDottedLine(g, r.width - 1, 0, r.width - 1, r.height, null, Color.GRAY); + } + } +} diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/CommonNavBarUI.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/CommonNavBarUI.java new file mode 100644 index 000000000000..3ea2d1ffd55b --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/CommonNavBarUI.java @@ -0,0 +1,39 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.navigationToolbar.ui; + +import com.intellij.ui.ColorUtil; +import com.intellij.util.ui.UIUtil; + +import java.awt.*; + +/** + * @author Konstantin Bulenkov + */ +public class CommonNavBarUI extends AbstractNavBarUI { + @Override + public void doPaintWrapperPanel(Graphics2D g, Rectangle bounds, boolean mainToolbarVisible) { + if (mainToolbarVisible) { + g.setColor(new Color(200, 200, 200)); + g.fillRect(0, 0, bounds.width, bounds.height); + } else { + final Color startColor = UIUtil.getControlColor(); + final Color endColor = ColorUtil.shift(startColor, 7.0d / 8.0d); + g.setPaint(new GradientPaint(0, 0, startColor, 0, bounds.height, endColor)); + g.fillRect(0, 0, bounds.width, bounds.height); + } + } +} diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/GtkNavBarUI.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/GtkNavBarUI.java new file mode 100644 index 000000000000..aeb2b3b34dde --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/GtkNavBarUI.java @@ -0,0 +1,28 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.navigationToolbar.ui; + +import java.awt.*; + +/** + * @author Konstantin Bulenkov + */ +public class GtkNavBarUI extends CommonNavBarUI { + @Override + public Color getBackground(boolean selected, boolean focused) { + return selected && focused ? super.getBackground(selected, focused) : Color.WHITE; + } +} diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/NavBarUI.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/NavBarUI.java new file mode 100644 index 000000000000..ecf883bdaa0a --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/NavBarUI.java @@ -0,0 +1,50 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.navigationToolbar.ui; + +import com.intellij.ide.navigationToolbar.NavBarItem; +import com.intellij.ide.navigationToolbar.NavBarPanel; +import org.jetbrains.annotations.Nullable; + +import java.awt.*; + +/** + * @author Konstantin Bulenkov + */ +public interface NavBarUI { + Insets getElementIpad(boolean isPopupElement); + Insets getElementPadding(); + Font getElementFont(NavBarItem navBarItem); + + short getSelectionAlpha(); + + boolean isDrawMacShadow(boolean selected, boolean focused); + + void doPaintNavBarItem(Graphics2D g, NavBarItem item, NavBarPanel navbar); + + Dimension getOffsets(NavBarItem item); + + Color getBackground(boolean selected, boolean focused); + @Nullable + Color getForeground(boolean selected, boolean focused, boolean inactive); + + void doPaintWrapperPanel(Graphics2D g, Rectangle bounds, boolean mainToolbarVisible); + void doPaintWrapperPanelChildren(Graphics2D g, Rectangle bounds, boolean mainToolbarVisible); + + void doPaintNavBarPanel(Graphics2D g, Rectangle bounds, boolean mainToolbarVisible, boolean undocked); + + Insets getWrapperPanelInsets(Insets insets); +} diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/NavBarUIManager.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/NavBarUIManager.java new file mode 100644 index 000000000000..fc653b6dd936 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/NavBarUIManager.java @@ -0,0 +1,34 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.navigationToolbar.ui; + +import com.intellij.util.ui.UIUtil; + +/** + * @author Konstantin Bulenkov + */ +public class NavBarUIManager { + public static final NavBarUI AQUA = new AquaNavBarUI(); + public static final NavBarUI COMMON = new CommonNavBarUI(); + public static final NavBarUI GTK = new GtkNavBarUI(); + + + public static NavBarUI getUI() { + if (UIUtil.isUnderAquaLookAndFeel()) return AQUA; + if (UIUtil.isUnderGTKLookAndFeel()) return GTK; + return COMMON; + } +} From 97e102a995f3dd0be8e9861e73fe1e55089b28bc Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Mon, 14 Nov 2011 23:00:20 +0400 Subject: [PATCH 06/16] IDEA-76773 Slow performance in 10.5.2 Ultimate --- .../openapi/fileTypes/impl/FileTypeAssocTable.java | 2 +- .../openapi/fileTypes/impl/FileTypeManagerImpl.java | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeAssocTable.java b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeAssocTable.java index dd35dbff68a2..205471c33ca3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeAssocTable.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeAssocTable.java @@ -168,7 +168,7 @@ public class FileTypeAssocTable { } //noinspection ForLoopReplaceableByForEach - for (int i = 0; i < myMatchingMappings.size(); i++) { + for (int i = 0, n = myMatchingMappings.size(); i < n; i++) { final Pair mapping = myMatchingMappings.get(i); if (mapping.getFirst().accept(fileName)) return mapping.getSecond(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java index 9f1526b56975..72c6c278e81d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java @@ -409,14 +409,7 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements NamedJDOME return ((FileTypeIdentifiableByVirtualFile)type).isMyFileType(file); } - final List matchers = getAssociations(type); - //noinspection ForLoopReplaceableByForEach - for (int i = 0, size = matchers.size(); i < size; i++) { - final FileNameMatcher matcher = matchers.get(i); - if (matcher.accept(file.getName())) return true; - } - - return false; + return getFileTypeByFileName(file.getName()) == type; } @NotNull From 018dc5ea85abb4bd9b7445360c49b622b8e8d152 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 15 Nov 2011 10:33:58 +0400 Subject: [PATCH 07/16] project structure errors: show only one message about circular dependencies --- .../GeneralProjectSettingsElement.java | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java index af5a486b6518..17c14109f77d 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java @@ -64,20 +64,10 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement { if (count > 0) { @NonNls final String leftBrace = ""; @NonNls final String rightBrace = ""; - final String fullDescription = leftBrace + ProjectBundle.message("module.circular.dependency.warning", cycles, count) + rightBrace; + final String warningMessage = leftBrace + ProjectBundle.message("module.circular.dependency.warning", cycles, count) + rightBrace; final Project project = myContext.getProject(); - for (Chunk chunk : chunks) { - final Set nodes = chunk.getNodes(); - if (nodes.size() > 1) { - final PlaceInProjectStructureBase place = new PlaceInProjectStructureBase(project, ProjectStructureConfigurable.getInstance(project).createModulesPlace(), this); - StringBuilder names = new StringBuilder(); - for (ModifiableRootModel model : nodes) { - if (names.length() > 0) names.append(", "); - names.append(model.getModule().getName()); - } - problemsHolder.registerProblem(new CircularDependencyProblemDescription("Circular dependency between modules " + names, fullDescription, place)); - } - } + final PlaceInProjectStructureBase place = new PlaceInProjectStructureBase(project, ProjectStructureConfigurable.getInstance(project).createModulesPlace(), this); + problemsHolder.registerProblem(new CircularDependencyProblemDescription("Circular dependencies", warningMessage, place)); } } @@ -107,7 +97,7 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement { public CircularDependencyProblemDescription(@NotNull String message, @NotNull String fullDescription, @NotNull PlaceInProjectStructure place) { - super(message, null, place, ProjectStructureProblemType.warning("module-circular-dependency"), + super(message, fullDescription, place, ProjectStructureProblemType.warning("module-circular-dependency"), Collections.emptyList()); myFullDescription = fullDescription; } From aca6f7871dd605c7049752b0029f719a80d65e13 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 15 Nov 2011 11:23:10 +0400 Subject: [PATCH 08/16] project structure errors: enabled by default --- .../GeneralProjectSettingsElement.java | 60 +++++++++---------- .../ui/configuration/ProjectConfigurable.java | 32 +--------- .../daemon/ProjectConfigurationProblems.java | 5 -- .../ProjectStructureDaemonAnalyzer.java | 11 +--- .../src/messages/ProjectBundle.properties | 3 +- .../src/misc/registry.properties | 2 - 6 files changed, 33 insertions(+), 80 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java index 17c14109f77d..fa2945b3f49a 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java @@ -21,15 +21,13 @@ import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.*; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.Chunk; import com.intellij.util.graph.Graph; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Set; +import java.util.*; /** * @author nik @@ -46,28 +44,41 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement { @Override public void check(ProjectStructureProblemsHolder problemsHolder) { - final Graph> graph = ModuleCompilerUtil.toChunkGraph(myContext.getModulesConfigurator().createGraphGenerator()); + final Graph> graph = ModuleCompilerUtil.toChunkGraph( + myContext.getModulesConfigurator().createGraphGenerator()); final Collection> chunks = graph.getNodes(); - String cycles = ""; - int count = 0; + List cycles = new ArrayList(); for (Chunk chunk : chunks) { final Set modules = chunk.getNodes(); - String cycle = ""; + List names = new ArrayList(); for (ModifiableRootModel model : modules) { - cycle += ", " + model.getModule().getName(); + names.add(model.getModule().getName()); } if (modules.size() > 1) { - @NonNls final String br = "
    "; - cycles += br + (++count) + ". " + cycle.substring(2); + cycles.add(StringUtil.join(names, ", ")); } } - if (count > 0) { - @NonNls final String leftBrace = ""; - @NonNls final String rightBrace = ""; - final String warningMessage = leftBrace + ProjectBundle.message("module.circular.dependency.warning", cycles, count) + rightBrace; + if (!cycles.isEmpty()) { final Project project = myContext.getProject(); final PlaceInProjectStructureBase place = new PlaceInProjectStructureBase(project, ProjectStructureConfigurable.getInstance(project).createModulesPlace(), this); - problemsHolder.registerProblem(new CircularDependencyProblemDescription("Circular dependencies", warningMessage, place)); + final String message; + final String description; + if (cycles.size() > 1) { + message = "Circular dependencies"; + @NonNls final String br = "
    "; + StringBuilder cyclesString = new StringBuilder(); + for (int i = 0; i < cycles.size(); i++) { + cyclesString.append(br).append(i + 1).append(". ").append(cycles.get(i)); + } + description = ProjectBundle.message("module.circular.dependency.warning.description", cyclesString); + } + else { + message = ProjectBundle.message("module.circular.dependency.warning.short", cycles.get(0)); + description = null; + } + problemsHolder.registerProblem(new ProjectStructureProblemDescription(message, description, place, + ProjectStructureProblemType.warning("module-circular-dependency"), + Collections.emptyList())); } } @@ -90,21 +101,4 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement { public int hashCode() { return 0; } - - public static class CircularDependencyProblemDescription extends ProjectStructureProblemDescription { - @NotNull private final String myFullDescription; - - public CircularDependencyProblemDescription(@NotNull String message, - @NotNull String fullDescription, - @NotNull PlaceInProjectStructure place) { - super(message, fullDescription, place, ProjectStructureProblemType.warning("module-circular-dependency"), - Collections.emptyList()); - myFullDescription = fullDescription; - } - - @NotNull - public String getFullDescription() { - return myFullDescription; - } - } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java index 30257bc372bc..36bca133bd9a 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java @@ -32,9 +32,9 @@ import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel; import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectStructureElementConfigurable; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; -import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.*; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureDaemonAnalyzer; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureElement; import com.intellij.openapi.ui.DetailsComponent; -import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.EmptyRunnable; import com.intellij.openapi.util.IconLoader; @@ -44,9 +44,7 @@ import com.intellij.pom.java.LanguageLevel; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.FieldPanel; import com.intellij.ui.InsertPathAction; -import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -73,7 +71,6 @@ public class ProjectConfigurable extends ProjectStructureElementConfigurable myDispatcher = EventDispatcher.create(ProjectStructureDaemonAnalyzerListener.class); private final AtomicBoolean myStopped = new AtomicBoolean(false); - private ProjectConfigurationProblems myProjectConfigurationProblems; - private final StructureConfigurableContext myContext; + private final ProjectConfigurationProblems myProjectConfigurationProblems; public ProjectStructureDaemonAnalyzer(StructureConfigurableContext context) { - myContext = context; Disposer.register(context, this); - if (ProjectConfigurationProblems.isVisible()) { - myProjectConfigurationProblems = new ProjectConfigurationProblems(this, context); - } + myProjectConfigurationProblems = new ProjectConfigurationProblems(this, context); myAnalyzerQueue = new MergingUpdateQueue("Project Structure Daemon Analyzer", 300, false, null, this, null, false); } @@ -250,9 +246,6 @@ public class ProjectStructureDaemonAnalyzer implements Disposable { public void reset() { LOG.debug("analyzer started"); - if (ProjectConfigurationProblems.isVisible() && myProjectConfigurationProblems == null) { - myProjectConfigurationProblems = new ProjectConfigurationProblems(this, myContext); - } myAnalyzerQueue.activate(); myAnalyzerQueue.queue(new Update("reset") { public void run() { diff --git a/platform/platform-resources-en/src/messages/ProjectBundle.properties b/platform/platform-resources-en/src/messages/ProjectBundle.properties index bc968774e167..6bf111b2b010 100644 --- a/platform/platform-resources-en/src/messages/ProjectBundle.properties +++ b/platform/platform-resources-en/src/messages/ProjectBundle.properties @@ -156,7 +156,8 @@ library.attach.sources.description=Select jar/zip files or directories in which module.module.language.level=&Language level: module.module.language.level.comment=(effective on project reload) -module.circular.dependency.warning=There {1, choice, 1#is circular dependency|2#are circular dependencies} between modules: {0} +module.circular.dependency.warning.short=There is circular dependency between modules {0} +module.circular.dependency.warning.description=There are circular dependencies between modules: {0} module.add.error.message=Error adding module to project: {0} module.add.error.title=Add Module module.add.action=Add diff --git a/platform/platform-resources-en/src/misc/registry.properties b/platform/platform-resources-en/src/misc/registry.properties index 522f0c543c1f..9ad03449302e 100644 --- a/platform/platform-resources-en/src/misc/registry.properties +++ b/platform/platform-resources-en/src/misc/registry.properties @@ -96,8 +96,6 @@ editor.mouseSelectionStateResetTimeout=1000 editor.mouseSelectionStateResetDeadzone=4 editor.use.new.tabs=true -ide.configuration.new.project.structure.errors=false - ide.tabbedPane.bufferedPaint=true ide.tabbedPane.dragOutMultiplier=1.2 From 8835838562352f652be286ea83a4a1ec17f0fdd1 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Tue, 15 Nov 2011 12:53:53 +0400 Subject: [PATCH 09/16] beta artwork --- .../src/idea_community_about.png | Bin 54693 -> 54785 bytes .../src/idea_community_logo.png | Bin 115014 -> 115089 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/community-resources/src/idea_community_about.png b/community-resources/src/idea_community_about.png index f057d20495936df89503fc8b786d7d4f6775bcfb..71e474b123d1eb815c76b23fc460eabc2286afd9 100644 GIT binary patch delta 30827 zcmV)4K+3NiA#`m-;JJRYpceM#lZ)Kj-}CKT+UU(TMBGXW%<#i+@c^SOYuM zk}N(V5F1Ur*?0^+IJod-EQk-!!4Q{v-k>y0F$r(h6 zEwA_sGx;KbFXASVc`Ki2>Jt$&C4n(JCd_G|pCFzH-s3gwg&dY#!^R?)U4lgR-Fmre ziY&73_>dwi(xSY_oisQA5-;_1s@VG0snUmU5C!}7eX;-d-5Wpi%-NUE zR;cFzAM*AT2sDt=i;a$jKRT-z%%G`kxZ`itc? zct20A6Tm8yx6k)QPtxJAvsXa}nT^KHKdU5tS^_ zDaTV$Z1AuI+^Rn}P=74sx$!Z;Rw9**#dL!6Q%!$wuE?fiMX%LtSf-io>E$W}?&gV3 z#5Rr#1g8E>nUhi<157J$u2xslX6htO0kQ7W4EAHMC zWg>I{A~oiRFoHXTB-DXd4Kt0fSd_cp4Tb`5SJ-LyQ6-$(Klax@C$tq!xfK(!u^Tcw{_ZL;=pTA{z zAg;bTTh|o=l&a7)_s*c1$=|%Puq7AYIVK!twhksg{qCy{%+_9=uDo=%+%g<~{^Ak& z>cQlO{@6`xdw=ID?ce#@k+LbmyA>&KH<*9puA-3Q;U#xvaOf&Ubzj!Mn$oO`WJ&Ht z@Q7adWq4wC`BQ)S&jDJ|D>=9!+&weYm%eVpDifY3rWcP*FJ1UufBE@CzxAfj!n01)xd~mn2G7_wK$gKqhq5xF$~vFf z;0n&dylOYbtvo+1V}3d$`1INdSw=sky&|I2D2Zejp`ib5#&yRGTbYB4X-5ihWE8kG{Q6??Ya6p899J>jPK5sz z*Rb*qXYXE)IK^C`1AjiR6-s7$1%ODK%~e(SQ&cv4wbN|s=|e>JG3!?+F(i_$wY@UQTRTX))Ttwm!UW1lANz{ zXNIs6+cT{Y)4IYMZAB&_;g*n+_R)i-|-Mm=pk0Uw;->pk+dUWHU1>wbX22I)8A`wQPlr{Ngz;g>ades9^Fu zJrWm8w7bG4%3qs=4+v(Lu7Be)=S{+a4c`U3c@x>|kO_SlTw*TvAqTd%LM`D2kHD#$tc)w(Cx4|LV+fqKT&dg^ z3J&;R+YZU`8Bu-eR0aO>pY8y_Q6eF;g|_9kOh*zt7dOr~%};*$*v;da58pVveK-}< zjVB9hfP5(JH#gl$%DWY4A(2(YAQcCFgqej#+F7&yzx} z?Yo9ziokUWwN_N)J%0)CL=!(*E?l5=OvI$#=WW^ibfQ3%%BJw);Sbj{Fgc#lR zn|QoCb6^n>C~Ao0!?ef(t!#1@{X<;q&BU}qX2H8j_)!Ugm_&uMaL^$mvd@l#WjF`` z0h^X)rU8yK{W(|*>^$4p`DEEMlP5Zj`q-u|nQV6Y_EKV;J3xAdRiJ4_lE56j!I(|zhVrvKbY{$8@ zTH1;~6F6EFqq9-~9AP}FhqGF6Q3IIH7piU3x;R-=7CxheQmxT8F5ljL zwf8_S?-@IGT+e@dXD^@p?9#-@SS!CYarofQ0hf4}8cU)WK1|lYwg2BJEnvMM8 z;(y%qlop8$j*O(znMS<^T%cMh7nT;?YN4HroI0$3P1TH6OIFlaBF@=b2IcgiuSbsJW*8!22J9c;fk#xT1U3f>9OQ$PFw|}fO zC{g$r2f+8};e3GBuBYzm@)8UFS7}?jPnVuOQE-C}AdxEfVJO@UU|G&g(expY>q7mG zzr}KMvD9!q>#RVF%A&2)i)BhfF4b&Q1ngsNF7tB_yu}aV=8Cn6>1B^*t~?=@?J^bR zIU3aN_XeLn59p51ET0cDy7d#6lYdiZTh^ML!)N9%arK^m#{|wyU`O-1qD%m$qf-kP zfXO#jEeIF7F4>-xoKq!)MHP?7C@h=y^3>^5iDVLjz3f0P8jAubK#0bM3EC8Y#xDrx zP9L9G*z+x=f2^^1x^g6@^pBb+_h4I14L(#^9on$&z7NgMPVaqj_ol11^?�AOvjG z>Sm|SoZYoV8rATCNBPCNX>@qTD!;e{FV}80tL2iaX}j*Yy*I9w+1v_NTw@J4-b6pR zC>5EDGkF^tf*QnG++>E3u0B!f`Rw_ve%?+5;o`X=#q;NKMEfqm+9wJKI2RG!e>_Q# zW~r75&yBDz8>3uL0wy8wMSt}OFJe$HHp7q>UDhekC`D6Ge`jy|*z>WS?*Lqj#bc&n zE>4}v&rZdXDax$c=O<6ZlWF9Je4sR*J?07>10D!tnZLXv#l ztk<&J)j=6JMTbYp)3DaxYYddaq6xq2g-BjcqOXeTYKw9G7DCAl8GjH9&ps!3qMvv7 z3kALiKCmsOUYil)N;1tPVz+Hw1N3UNKNzC1@8sOX^aAU44k0TI&nj6(DY}}5YnAW` zZ$4BE=^=iRHB`5}oRxiPThj|;)_H~RS6pR4-q8LpF&R(%Gr3ZS6^ljTq#VLPVSe^><@kF_{r_q zb#o$_I{xC*OR2OTiwzEs<_4VQ#RZ@hm2^RmMk}T2!t8XVR06I69LPeCz-GNt0q)k` z_qbDDT$uUjzxxkAmWdRf};G# z{___x_p6fJAW~wZYl8cvXk%tyY6Q-VWFgT5N~J|&I-sX*8;x284pvdLWTwY3I%pXd zi|Ozvz!Ota0so4~QU@L8T~$-C|Cu6tDlIL-4&hnL^E2hwcEjnij1D|^FeAUZ=j@3u z{TUoUYunwq(SNn@P~X6CBpNL*FR2j#IL)e6;6?(628b@1O){`9k;-6$rfa79K|_=v+&$=T$;%cF_y6@(??m!SjbVFIA2?j>e%^n#`y-byJ(-gx#wK^wE@ zuQPp%N31J*CMhNjt({Ps0NSZ#pZgX_|b!P`R7_U7| zjW$X4DSthK@lDsSS-Y-MECO{RdgAQYKSzzGl3mlc<8E0|;_*1(-%H*L)pJ`Z$R2ZK-R#il*ru!C(O5hR=d)U@oH_Q|;`Eth zPv5}E8jWSF4nO<2WVTadn;YeVJ$(=km!xv-M!jAt&ne3BXTIzfXXO4dY8iNqeSIPA}i)rBQ5{!WK2gv&^j&9i3K?;MNCmHtn zkrpn>w6 zi4m9H()WgshhFKx@UlQ{HQ^{5UrJO(ZZ{gyY}PF=I;FYEr8A|%N3yxWR;x9HS*ok% zrsn`PX3m^O_tE@JWPJO;@NjQm-{vh_C%0dF`q)Gwm0G)grRh<*CTV9Po?$#2z^_kQ*KE&E{ZL&p`kNp;Kv|b{gd; zKKs(1CkF3$aKqKx0706KnqGz=DQy|X;_P&*QHQ0N>CcUziXs84R?{@3U9t@U7p8#} z?8xgh8W6Ab^!EdlM45Pim*Ev6Ie(H2uV&ef;wqeZAdzG@X2iv%Q)1Noa*5%&EeuOB6 z_3q+${GI`^ne2%_sclsnoquxy>#>(7e*JI0A)E>5`Cw&be|5Lkv^&Bh7YP-4W5yeU zj4OfzZ$@BvWe=Hzgm9NlvP9AyNCCthsdPpma_=1vmS6a1x3o}w>hBtZ>y*quCBJ6k z)#r`Zz71E5np-0Q9t^Bqzw>V1GpNTR*WGyirmL<7E)!2gjgD0s_Ba%qRlPQ#UIZl6WpyccTQUpZ9 z%}?3$$Ch6BGHeWo3jrgLJHQ}g{*-z4ATB*MLiFg-o?#_3m>3*evu;E0zz_srsZ0u+ z-CLc7>8X0P0w7Y!=YN4q!OOv#hrkMpO%Z)ybPYO8Boi3zN;rfXF2hE{Xx8htW!5UC zBTql-EKj-BMYmmt zC+kUEwPw?)T5hL7J2jDBO^%x82Mu+ctGiT=_;4{{uYu; zgTZ3L=`3V!=!0q@Ip+?jmkp~qhO+s9vSc1({sp6l9q4t}lBz7wIkJ+Dy8 zvtzszm*mS``Q%>!)-GCpq_4|M;nLnJc>_m?fCX!~CzoqAo6%^r*=$_B{o3Joy#1Lc zpDcX+VSDyC1ZdK!JrKVDg0L!=vi<%ay=wawxbqkDm49lfRIgSedIawOvAA9;l+TK$}y~qgAc~Ka}J|+O3zS`$mV}a{uV~1~>rV zeXw#CXU-N+9ia6hHClFIh8hheyH=7_InfJ@#%+}GboUO^X4UP~VV^V-QwKMyiefga zPQ6fn`XRtG_?Nov13mqN3om~I$y7Q^^prlbA%8c#25T2XV`vlBKM+eKs>OU}aE#pk zVWMh%14F5vtfFb9rFq-70IeF;6332Kv)-(gtr$kron}?C+DiXuCOfFep0TwgX0>`z zm=wY+_IDzM)U$rtnCoVJuV1gti1>~Rl+qP`4%Bxs6rmucB#76-K8QhlCz4!TzU6uz z(tpCA!4<7kqL zP(E0E?s=hV1+=XqU8EQKb=8G^`6TNN!^7o~tT*~{|03~W7hoCnTF<79aJSE&J!@Ik znUlwRdhh?i4?g(F;pdH0`-p9+qnowi&3{TFgO{moZM=H(`hf%-XF8dCWohB$(Zd!* zMv2Vu#;bvw)Jp~P_{+dPh^j07BQJjYX+0V*9N$A*H3)g+WN#{!Szef{m1F7NzTD6- ztXm*HX$9+#g+<^LO*Hw#>@r)8ib@ovSuW~&)GE$HC`y|ZDH4(Ol!PTbMNXvfGk-Qa zfF`tAG*9ncOk^O!0`}KA@Fct_ddD~pRdu)=)!ew;*G~Wt(f{8yC-+QGA6^{0TJB#% z>v^ZVXcuQaAz&LePzE+=qubn8MRF{>(i7CmK3`;t)^_uxJr+=tKmU8#DeFH0nUjx+}mk$(z% z_j$eKe8_e%y312O_=zVf3A|$kRe(a5`{zhqgH!_;;uEX=kc;Dy(5d?|V1H}! zmU5dVx2lt99Iheb(9?^PJ#Mvtf~MXfIhu;ByPiaJ+G%L1o=k5)Fn^ayv0yDvQr4Fj zPb9J9dT>3kJOnr`BB%ODG@_iE@d$#`<(adtW2gGExsf$mL}l%nQm4_7 znO!1aToPctR*9z4@Q?*`5@L2u1CB{+c|c5AkEeRl5}UX~JuN<2aW!}XMvgJWn;8_$ z4&r?}G*CpyzG1Xi<9EF>qCe1;7Z9nJX!nN+vR@p@?Mgq1u76Zdrohc?sh|8Jo)eCz zf#9C2!ivv#wDGkOT~5bg^JdqRR)k<^bvt%BNvCB(efB26c{P|B^d&6(HSo4HyyFB`cC)3SFow7Od3Yz}` zXw`uSNs8(=tADZ{!!)g?%aNFz$pTSQ2R8t|@N`BK*Q(pwKVTW{(%Iu>HBufNgO!=g zWZ-op5q)HAR8y6OIgA0#RHo%PR;P}qLyG{{P;zUOWWSv5&yB6m4vny~psmN^v3T6J zY}k3bx!FbqLWei@#c#U5xIFJv^CX>3r+Xt&9T;7@uYW(DNWuP(>>X+xe9F#GV_S7J zuJn#+>#pk?UJKkuR^&=CABjXq*KY<)FpQ)ktIbq88cP5?wHkFv+77Hrk4D$7Uz>1 zLbN#6qkoE`>hVNR{{R4!ZFJ^O9D>uBO!vT|!s(E$26j6$y%PK`C;Iew)Ur9m_?|q( z_t^3k4AkoeAc4Mt^?UmsIIdR+Bh>c`6_Jx~AL`GK7p79KM{2lMOXQn~0;e2qz9@$ULSLjrxi?;FEM>G-~TZhyd}LKOh->8n`BP{vkyxVT*8*emDzVhY2{)_ki$Dh_T)iNzWo`|kD>b1tw%rZ{U+0HHWfPDZDC#ojL zGk>z4phg?6O0|Ck@Jo)R@%l3Ac&$JfWp`@RCzMPM;vl2baT*2MsMZzKyQg}4Tg^tJ zT2YkEmD?N+l^DcYvhn;V4H-mKS5qn#ZXv3~&X6gAU}=BTnlMo0QKY~HwceBb+ zkw~Mq3@bB@*l0N!9CW z7HKcvAXI2b1^)_JCkG0yP&gUFmw$jj(XO9YUis(4eF76UBTm17B9$%{pZl>lpi8R_eGn5XxC^=}>;zwTzkXD7}MxP^w{9oP`zBA zoto^+4Yu1YbVMMM9*ZW@aca|I9z8;%@x<7gVauhdbP}hHsw$P@eDF`LST-%Aw=XxG zjop3sTXMsr`T3c_vGK9BBY$yCsj5qXXr=bA zp+KOF7UouBDYiF-I&1(|qXy&)i}H3$P7h$Ce?2cXOOi7P%YT@{(ycCavZKZ2h2pWj z*3_Yns(tJDUe{lP|ZqxRy zS8W;_93D=^6@Q4OPMn%6F3;uXW^2_FL~ua3M#eV+YFL)7$Mt5l0j~&)A8-@!d}9C0 zwI}`(-d*&%x4ESm2rU7Xl);UC14CBFY*b5?gWo2xG|Smn(IgYjUb0t?_pp+sP9h0Z zOVn^8fDE9M$T;OW0QXv=$8l^xD>c z<;h3A-Wt!*P^cNa1iTw!X7s-6*Zt5fS3S9J^3fNL#UjdQe(LR0OO;Rm!?T{MOY(;a z`bWHaet%t(61w`wzx*SsUh5Bi@!NZjp7AB`DaG4S)HCr}iG5+_`PT zCq8)JH=aN6#iw53+l`N8fAc3FoSHBE_QPL#U8LqB8;wU>@6FEt{F+leDt34c?0#Uy z)A$BIHzqb1eD1xg?&rztpB;}j`8E|>JJjg;(|@^5&sK8q>nl5-f}O0`{&%Lf{l@sw zRd@AlHTR(-x4{n?)q3T|Z^HMVJbu$xizDBy`d~;nYMF5J$4kU$1NT9>w;Ca~NmBjM zEw>tH4q#2qvane%o`EY^j;8F=Jp573t%bk2Mhh=);8}W9RGy5sQ!fB!0e-pdI?CB#2zI2#e!b zi?dUOr3GVV0`&?@XFAk5aBS1^{5x;H=YMVMvg+BQv-=xgsZ74+6z8mk6R=IgHY>xM z%n$wYj+<{y5vf?N9o_e0DZdB=bEY_rz6yCbj8t^X9a?T}r?#vOtQ&jlhts{erP(vz z`jbyZuf9FC?T-5Kmt{Q(!7?wup}@kiw9&1xWD1a|zSv{V9+kDIoa)oEYn*t-ZGV*9 zMzIx%!fn7YTav5-W)U12Y12kAo6G*EkKLP%$tLsW-Xj@Y6X4MuGqFafPZr#Sa9BC zb(BmNxR|797=D;-mMM{${7Azqs$O#2HK$dRqX}SSxZcb*27ti4B2l8p2#rEC1l&YP z^#Mmitw5qj=^etS6WM7L(C7tXMm6G;7Tnshas0*3fp6jkt!e;yur~;cI!n{>!SU9@ z>C*9+U8^Ov8`NgSfkr8s8Glf-V*r%%hn|}^+kmG?A(~aEvV^VI!<&_4kGXi-IQ{Bu zJ#X7q{+b(JdFm^T-Tx@T9edu)Z zo{#nRl4`@ec|aXY$wY)~lGhyW<+*v>M|iKE8^QwWvn0_yF6w-K_Q)Ih;DHh8>JH=+ zn1lMDfGsJ=H&NHG?teKX6hnI5I6_eR&Aq3e+;g&P@FJB$(B?|6PwHqOXyBQ3F*Tcp zVWrhJe(^J(KQD@{R9*Q)Q|Uur_~t_%ED^66hO+xrgzw7~&EM#UIS z$x)Gi!AEblVL?(wa~dTUTp~wvinC57FDKFpAdaG{y+f*==*%32rHmIbMnl*=L-Zt0 z;&MzimO-Jm5`W=icz`-7nH*>7`1HPEcnXj&Z0@m5KtM@}NPNOOU{+<>tyl1}1CWg+ zmH3zphpH!J3C)zXRIg#1?Gvxi1{=f%sG%Ts5G{g|RB4jB7Lc{MFaPPn<8gpy$?gCe zDw#p}CntNbEqURjvpjkHOMeQlXDytDKgz`!l(zPb0e|B|-efjQOLJ%{9f`x<7WY0~ z$gLk-zgg`YZB|NlWkIq{d{Mq^RP6DF%fC8v(rmZlsUF8@!A?jdMy+2N&_pF;(YA#fbTi0h|nmk!(J$7iRZP*{!IlLhoho|p8k$>XQ0s}$!H{N?~ zscHPl<43%fX7~U3;4V1w-~9WR;J0`0TzBuaYk&UY>j!STdieSc1Mr59&lW%Xng{53HbkGhGd_Pd{W z03Q0oe|Sm~(W~Dl=w2j`?z-c{+4tXf^Vap~0z7eMHXaSkIp2TZTkgMo$M5{rqwpwf z1Al*kU*RA8@c8owAAkP9AAjm&dyY;%^aU}W=B}Mv-+BA>+1?b})f@zmQ}cQL&~NSduKCsq(7 zz7bLb3=7Z-u2w*4FDn)M&#H{A4>yPlD-iwH_mciE#~c_ibQXxsrC)Z@qZ*7 zFo741^)TmSnP@SbOd}H@dP*`wQOQLSC;_M7)e^lpGovTxw((QM!!}?)BY+gZW#o7d zM8^aTi>WlU$&N&w(yVKANJN(zQBwLxl~fjkTsT^@W=0ZtBxVZ^22MgWmB!q7G~QV_ zO(7_zE<%!~0VL5zlL-f0yIF43mVevvUc856W)LN;c4cX))0Q=j4L6feO{PZp_)pp@ zIhBR&+qM9pfBos_;7Fp`5lv-dp_yYJWsnq8<@a9|%|v8BxqjPNbWK|Q%84enRk92J zrm?uL5-woalGQ(SUGLhS2q!f$jlARPp2fPkQ0pk@$|0@qk8K@F@Ld5&eShG_VL+~) zxW*NxcV3kP{MvnDnL46x1skwM_YC#AuZ3s}zJBIi*ZaZfRbzcWa@V%cKCzF4#{R7s zkHMd{_r%=$?!4yC9UC8iWrEFWB6nWDDISgNIX2~I*$Fwfgy&7G>nF^i-DFA%UwgIrU>XQA_*^Sc5 zx8F4n`OnVTVD*eOS^4OAw9SIMge1`mr@Bc{AfzkM3TPdG)S*U(g^dsu4qps=&M~UL zToY(=LBMi5Ej5#nqOy|gV-ZTyZC5dplF$T`&j3YZ_S!NmZ*1{1ntw=S^caok@JF{* z1@41!pKSrmF@q9^Nf{hkTC|!h?`|20GK$6)HXHH`pumPmOMVr}MF$pG+fIHOd-ni1 zVo4w`N@hSw_oK5f{KNX3=@($B&BCr|ob`5?60@WN;zpFH1&m1|k+Ewe5j(g+=bTH` zfen&_9+*h(BDxaGuz#w84Y)~|Ydy-`qe*#SgOlh(;9vv|HKp)ctpsc!CC z*ZbZZMmOdX&wm`Tg0RuyUhR(LyZv#=0*k_C^0lY-pWSzQp+6PC)z`<;)L<3{e^P<;~#u0 z5UVdf^^(Zwhm6v5y=g!z*zFgee)-wG6COLe{-f`?`@j6jKlu9r+V#j+cjqfLcnNsv zyLWAU;)MgRcg0?0G$C1S>+6!$-`{u;BDmk3+Dgv54Rl8e;? z;8Q@~vsjHBCOKW8kW* zY7OVl9y`QJ6Y`=YHI|eA;RiOy?fT->bdL7fX8g6&bB8Au;q(;drF+*!qY>qcyN~b$ z`yr)q&A=u&)JlFasw$2>vQ(@+v;P!)ihnhi9z7d-%T+bwlu( zwW4h~@T@j!BY@qoG#QoQFl05^$EgQH z3Ks~VRhUL0QY66*kFh=gYaS0nr@%@8WiaW^#7clc82u%Ih|xw7un&=fK!0p&VW8qr zKII0fVy6MG0?%@rRobeuAXGuGC$?uv)$w@X;4PKwKQMSK&%2GXoa|FFgKB0F-bHn0 z!d{-T%Zstiw~l4?#k!lXO9LsIO%mXOTXtM~d|(}IR!Fj!#lZ@Rrr<40%q3Zd+kg@Q zx(a_$;EkX`GK*516%*+#(|^7#o;6Ofn>@T7tc|F0CRZ*jKTGdiv>IC0^aed5L*8^<2JU@dXl4!)SZm>Gd8h`c)5XUlXqtyfy z^itZ6jiBEyp{KCj9zws`X4R^TUhYP%im8Tn)oGPoBaPG>ZhP&DL?cZ9VN=t~xwsTo z`_}QnU7JTAf3dLZs!_P@?LBf@a*Wj?8%&}zKJ|C!N<9Is;QOAVr&rNghbFg(_Dqj& z`M5wrj{+(om{w|G)PDdd1i*qTVz=<*W+MJq()e_ z9wMwLBXE4-QHU$$XbNk2>~+{2XCN%LlE^?9#V+nTy7rkJ>`aDdp&+1FR&^vk^&-0M z$I}pUI*lSqG*kTusf{v5pL$G=rimV9qzv}Zc40{n*(pU(3)X6&RLYp zd9VybXQV|A_J1U1au^sYDv%Mb)sSP!$mrIMcmH6aLB9U?{}YxjkjK7_*R0uiwb|~d z>8y<)&g|y_aBcMA!*Cc~TyDK&lW8yg!;vyE~VXKL_+j&0(p2mq6@PG3HQp5g8jSsl>ym|6PD+7W2 zP1fQmPsfWW()TYcEfBj_p=bNou^!DbE5{vOz(Tvn@l7 zF?;d2c@{W@q{X7te7oB$ThoW}Bp7dl6KKz~DWQDYnTe?rr!WcU-fgV`dJcrtt%#g7 zZP)SM)_*F~MuB#E;er8#!b&LBF{(s8ZQY|v@^@a^|KQ!%-+BGUZ+z$F8@H^@m#Y(} z&aQqfyNcgpeV*J?sPGp`6_G1deqS-Nik!>Q$R(oErOp;xZM%wBC4}z)SpR$bix3$8 z)bU;X(LaZW$OU&my66@E{=ltY31_vg1VWM5bANgTU@6ErBs+o;il)LE#%mf$7Uj_& z@^)Arz+4oZP3F`Jk%4spH>|j3v2e`h@(7{*!QdsZ=BFey9En;I2SK0=@Iu`EQ&wRo z08DCXfcqs7sxXO=BM?L;N}>l7VK|Rf6~_jcf=_hd0@ae6d4~}EMa|?`6oyzpqjB0O z+kf=}Dk@-O3_KN{>H?qvfOA`Qyq^OLM2^FZ@FFpUX?Rhlha%V=i3NDMryq}{Spg0T zyo|OR5+H9R4o3-q*q0kR^6JaR)M29Qc421m^qyq^(?|lMCOo&?$XsTArtyrN=wbC% zREkJIzFZqv+u){aTlHG$(9^)P@Vx*gwtp(3ja<f>vYFA!lg;3rXgI_JaXV=Lp@UjE<4~14u6L4aFPv0bW;KG z;Zr$)kg~rZlEQ8@S@a=842z$*lj}`OW{VGRq@KY!s`>G`7|FtI2H&#q%*U((W`7c3 z0}D?M1-6J+An`&%GsJVGJx5O7wQKubH(oV9lKs**U&5#J78uO4N(d(buz0o` z7M_mv2=t0Vxg)0)ag;%@%gbdtFG-3LZ0m=M*u)j9YJ5FoY_&Xvz+rX}s(*;WWB`)e z=?LEs_@lyR6^bdrgyq*GK(eUI=C7Cz>zyMg?&n&+zMF^HjvHxY5)kyCf?+Wx+` z-Ny1kr^F-?;Z+&99DfH$vD$?{HJ{IyYrD2>JhpS5XUgx|xfOAi&sicO6yhUuTO9*_ zh7gZ*BNl&j@5JPTZ@u{)x9@<>cJISoz3;7W*}7r0P_7q4apHwo(nT2*A#d<;Kc<84 zuQhu@q9$^Qya=8P*aX1z=ZvorFW&s`8xB5@oqw*Dd!3}|jeoIORTR-MP%J2P zR9bMy#dNPPKrDV>%K?9JZezgDcA}7ha&$)8MFR=jvKu9)mS|vxE7jX^$bV;_*#C16?AkKczxjRl{=@^f zbFDAG&B~G3lP@2EfN|UA^?&@EKkN6R0WW**wMiwOW|9sCa0k`);!SBtZ)0hNU>|}U zOJQmEHP9c9~t=LU;jAE3N8Qc!~Y-bU}9eoZeG zn{9J^B=^vN#Upv*g#(YjaL@-W0O%)PI0zv1k$?Bx1^@gVJo2^OL9Q#D09*Ah=L;M! zH6%Q5p1Vi2es=5>CsyxaDRZPq-Ua|S;V1q1{N`y-(JqeN+w!g+1iQ~KkCRYZ>#@=( z?BP9q^S?TI{gs6za%m3lmUoK^~4K5Q>VWr5!JD~RtkTugl`zq1G3UOHkbvv*i;YMw@T~sp|m}0Okbjw3g zyAE`KYwOw460@O*-@nF&6td6;LliMN5%AE!LK_|}>X;l>1aKS+?MYqZn2UaX>=;nf zz<>{UP^ZDxBok^WD&co;k$uNH18OX&*nb%HtMG%44bP|rWr{O?Kr&aK!9jHDoIYTc zfZA@eMwu`I7pJ0{wY_CfT}{v~x`PLIcXubayM^HH?iO4YF2RDkySux)JHZ`-I|Mnr zU!7BR?ydXx{#k3)%=C0W-CZ@^wR?KcSL2vJd;wSr1Ld|cIcRTF{se$SIb7nX&2y_O zW{j~Ckw9MR;H~7`!OO|Zzr9=ve25agA6Kf!NTkX&FJ7E&0ydY{!&-=^d;)LF`mZBi zz6M84Q5mZMaB`xa<$awq@tULgRRe0|huBNDIu+?!Pg|HjbJ=|qSXT*u;AaVxpGu0k zoJqsFR@ILmar{@`7frg?z>j{>w*5kBCRFx<-kB71vEW&BJ3DXA3D{p*4VLWgJi-F@ z&)s#&J(*)lNmfRCmh+@hw)=U5$!2Ce<;(<)ogwp$0pR|)S>WcPy~+%hriao|hT`ky zVc=tz>DGWIQ*xVDSg#%G5e0b=-}SEWlgXCjpL>v1u+#af587UTYv!MCFuUlmZ)>)D zm)%|edcEwY9*R6hV}2Iz>OL7AWlG_8OPVa9wqxWwzmqC2$W+8%jv7Y&LAU z2u4whrBUlH^E&Gc^E=oaro2ryDEUFocYF{Gz(E`>z5a{Dp~E;XU5l=C8uHJv;%*h3 z?+-=Cu7-;OGp<~cVS+yda%b~T6FEP%m9Y6k>JUqs3cfK7p@PjQ-Fb3G&j1FJ6i7WY zc3rjjfXdnf>Szkcb+&ILIP@L1N=?w);ZL*@={V%uFGq78SxO|wDkxvjofVH}cOVcf z0hl1gSO~F-NM{;)@r^z&P!mh-o(a9&0$pTNnl9RwYjG=k@SLBTv^*j^5`vPT?a4epT!yy`BrS2fwr1l7szBk)QEb_h{aK(FZyUBs-jF83=l5hX`)Kz8(_1+IKA9u*#l5+IWBng_NU`B#90LF-7 zOyQ92;laLv)3C*#^EQXd{a#9|cE1G8D`-nnhOXx+PgZkMtffSfqM$@h%+_t~h&H=n%M24-g!lW#|G6_gQQIrgF z;=V>25<(Z^Aw*++XRy!MxLg>wx~ws2n7AQvkI7W7=E+P;BMkbzUP2#LsUJ^(U!hu- zsn##n!%F`}JNj%g-~dEECq#N4QK)C5HJ2YW&9XON7Kk$3C(~Y0@%(vhZ>bG}=V{ks-_DtSGPkLSW**SPQd+csK2D%028rpp9iN0Bf)=d*|k?>F# zIO7)Uu0hHQoW?HR#U-<(MCb`?wC2qPa}q>WaUJW>q^NZ^P*-USv=cDd7uoFZxdv*J zy4D(rg#N)MNvJ9Qv25h#0%(>rGeereA(2I{*=z|Qw7Z%FtFCsWGkcMItdTMXWBhAX zc<0IqSIscQHhFRV>Fps}(pQ>2{zgcQXuHUj+4~!z(U`V8!A;{^Cg{FL30=JUK3lYZg?u=7;2U+Z_TV&2Alv$(jw|Ya+U+=w& zO;ZKMp7@k$U+PosX^%V^+rbp`Yn;cqI!fQDiUxFYu2%4TEl0&*ks>H=PA6p9rAE{V zv%1Xv4!z*)MiRGTa9LjheNy`QDQ{I_RX zZ!ANmh?&j*s@VK@(&2_`waljVp=X)TNrpf5I?`C7nk6DPZiRsvOfMNhU!VX4M`~`? z@|RJBT$_b;B>=OH6>Mx$n|T5sSJSIPGu9={WKXSA3O~qeY~IQS#d#SP-d|OB2_&M0 zEG*jcOD(L#yMJ3fhB~AOnP&Ipy$^AQjb%Dh+Ybe3!o(ER-QwrB={~|i>z5x!e1qhy zxBVi$j=sQoWlVg~QYGj&elIHcars_>|KY+n6y#-a1$?%j$ik|dQ3#f~FlvGFI*ukt zhfRFBJ`umTJyT#Z2FDT|WWr73nEvSM;|!7N-M)2p0atlhzPUgAY-5t;ds#MJD}9CY zFTb-LgRbQvg#~1l8@FrhR&B;;O$wyGzlv|CUoh^tv zbxXsD4I!f^I$F_XwJ`9_Y^xYlvjC{=K|*i@n!8JBD?emzPM$MmROkfEu zW1^;kl+N-v?e#~=hbZ#WwVvQkyf_SkM~Sn_jUaAqs(VZoy4=r0DAu4qsm1Qn|7X56cC1guXWICCdD#H8DZd?K zc5e>DqO7|Wl;g0Ne2ySRa4Y?`RgiA)y}uI#ej_7IkXDftYQHPPS+bf60;GP$Xn!~L zb(^GaVgD?x$2tF`F%#}B739FxT`K7<@Eem(`3g0bx{i=OL$YMnRr82!IgHkkK4^zN zs=30btWED(g+t^fq-cLxxec~)njBg{BPm+$b z)#xA0mItN@6V`oZ7K+6Lum>)9GU!DCY9fJJQcCrkYdZSa%DJ;p} z;Q83eBkjWs9W4Q|`n#0g)+l*3fEJ+Y8@ywMk|!`}zE*b>G^wJPKv9XIvETY<>oGT` zOM%S9v+JR8t*+JGY`z`ntF7G2{vbgAcO@#(XY}kms(Ds)6@+5=kl0tMW-8-3;Zf_E zlt(=(Q0-eW*D!gPO%Q~n!w^S}@(Tebly{5R2K+^6z{+S4P}Z%NKgUzN zYq4(1lvu5z=j}6g6SOQp~BdHCH99dxcwF^kJy(a&&a# z9>xn@ymjTn=1-${p#}~%AoXR^bo9aikqw-Zg<1rbs?`Ji;H8lJi&@r~SpsG=g0&b#0ZW>UaI+@Z&XGsbu{5(nH-4Nx#p+k6H1=)L>LeP?r?^mmF0| zEpofHI%_<7$f%}ri@3rP@1(L3+w0q3s7;6+IK_HNEdulU1{(Y(bo1#wgcbr%vY;Z~ zb$tyfQH^iEvWehdwu88$<|ay@;EGkrSU5+@0RQxwHCe&-fl92M50Aooy>oTaI|LgJL?GkMsRFD;;YFW; zX?MX@2xK9*%upZt73rQ>#P}u~mg1?5;1x4}cpB+&+=cf1_`*cP$U!Ct3RiZhp@GMk zu5#X9#4-*Cyf9S#$McIhTYbrU>5gO1a6vH5wl_{Z}7HxsL= zHXGU7^uq(`_b@$Z2ct1dIIFp?RvC$+jxmQsy$Wp=s9oz?imb(RB}@rGXNf2-Cth%| z5x>s`(L|XpuTHK3{iD=mf2& zLbPsxtVGM0`Yj%jxE?&~=n6$V?lLrVR3gbytYLc%GIn4mB|w_dJ`d|!VtS9)fQFJ3 z()foaV9oPqgiJY7ymb><&5&BOV=Z@ILFit1HCg9tn^?GPq1~QqtO@$jK;hl`gvxJP z1eM6D6z;EwIX6p(=5r&ih@BEZAl!f*|)$8x%K*8h~v?_3b=hhNoMF z6QNzxUW=;+ycVpzPZ5T8w(6vS9Xa5pRZA{x+f&rhop8fNXEa-V$M#YhlkY?n+wT=3 zRo!c!+t*&_`!b&}s#${Wr%#PMQe#}00e!=n*<#Dtju<%#*q$aV$n@+~mwXIOSVH9v zq-Xyu?=Lr)+DK0rErQ&L@ejD^@g_ve<3{Od!mxE+%TM}Q#)lH zGSg#kkV-{lPD=<1jz;-?)Hg&yIHqObZ=m4yHSiJ4n zBw!uP&O4sU(=_VFV0%BXPl&lT=4*b{Ph{jUfFkHn-PNthLs-8<8HxqTiWPkS5`M?U zj9zRz`+dCD_U+~>ui4)sA6%rt5Ac=>oYQ1QgKm|`)auL{_?%#D-c4^?K;9hqS< zb_lv}?{V<~z9^^55Y+RWIlvu^e!%&kgF@w2p1xH?+=2CbpQm?U&tCZ#u6 zgtK{igt_h+zkvh{-v{-$@MGK&?6}1JRa^*t+_8=!6ItM%8_I>qARtIgNCY*>zO$Q2 zjyBC9cZ?_HMqxKtdLhFw+jGi`eKS^jitn^Pw|Jwpxj#s}yxBNv^?E9Aq_D3aZ}oSJ z(4cmrO12~SP=s~Qsrm~hFBk0|OdK-`#$U-p#O%1TUerdJ+X{aP)i|8y)g08KHq*@H z(-Q2z#4@r0!dH5xa=^e!M`Md|GlE7C@=NO|CFB@X%pz6jS_ zv&?ZA3Wkn0xqCc=ON6M)ZLBabOrG*X6?$1mSD zRgqyfmDj&XKW)k@5rUYxVV6LP6!I`pfP8Di-+l}cH1EBB{Ht48xHEuzw1LhyE_};i zouUIi%JO{59=dzv218a~e^lh-vHP8aa$~h^M;ApTMpT1jc;}HiF)G#hiM9V9iFItD zocX>dr|K9GaRmX;?G+5!t zvLrJ8dm;6P-B7rN>P9bPcd@&D&!-airvN)PCm@e%PSA{A-btHr7vtvYz=X?5em4Jm z`;<-|`Rw$WA<-sO%7A~!5?eMR9XS~4?f!Mz&~;Vsk?m;N_Kyg>o_PzsO_tg~^OCeYUq|Fl<6vQqKOQ$1^v_O&!SSrQg%0o?R{IJADU< z7XsThvU-X)_*}e9;O8Xfx%rvEa&;Y9xYScZS=mZWd z-98#^dj?RO(LAMtqtks8#^9St>4swtBOVykkiC56Oi?vHTv|7zF8uamQM}bPy>a8p zVZae=M3}z5grPu6Z=DK4C>JgkCYNlw190D!u%AU%>@!{wb}x*+VrMJI(+EjBlh${R ziM#kak-fdg&8(*e6Y5nlm`;#x8n7?5U^=B4x3zpejk9~82)_!00p6SnHifC9kRZr~ z{n;HfpI#c;-A_gbuIJg`+kWMGP&G@gO2*Vh*R)J$Vv)?}HU`yDWig>blX^4x#HCOe$L6&8jg z@kg5O2-ze`H#o%ELeu4@S#!$BI-7sqJQCE_b*)L%N{|#4@o0&)$f$+wBLhMqKy*g6 z7x>&?VbHJdYUo(i;`S9pNY{;1pll_|MW!jBedz8~%J*=6;sY8l<#nC}2`i7e{lvlD zqKRV|hR~#rQgQ!&4GWqks_2jihqWhD2pX#>0zwzUw zq0WIjK@zhTr06iV$9E}>1^i7P2phTH9LSU8|EV(9TF5UbdI>Zag*tolc@bv@ z`sA*XRTpQbZ1_&?NnE{EygYWl{{B5@@H|SNxqu-Cqqb|FKd8U@6K$ui?>=ht6k`LK zYc7PPf>`qJQG7sJ=2hyoI(p3eQ-xXh3vS;wmv~^6?7$2fE<~Wf(~VSoKk~RY8gQdy zAlnnDc_CR=!_FNW^a5mkO?Y}z6_46q8jIC%x#T3DM$k1d`h9T{?K9wXurBkU)<8d@ zF%YZFsJ2ZZC1`b9wh0C5_{P{{|Iz5!fJ@b1YI!Jl^K?f z_hvDDBNG}4Yq^l7j%+o?vmdDp9&@pyA$t2*<(*&Qn!1gi=4JDW8y6)P*KMHCY_cJ6-DitC zhiKa6Ds^rVS|dl;ZW4k;w@|zj?QY!i^tSRRrT*nDl@3rw39`HD^t{&hUw zSVlF1Lji!&$#5cDbD}guZhipkynS79bs_rm3*!5SK+$tF9v!DayzR$=o$B&mX!QnI z^-$NGSKI3PU$|sDdLDY`E`z-66|(OrDW@4E+Vor$)}AIS?8|m52~tH8F#&KE^wXU0S7i=qA z>KTAcZO8gpI0l8nISwRQe?@K9qlEWq>tQ{riJ=8K~j%6^~!^zA1D3_3W=qpPKY``0OB5x$C49VMz#w zqdI1;M3dvoC9j6^&qIlHz3QJlu8Np66B1AfW5cK$8Ty;E;Aq5_A=Yusn=O>HjRu`E zBt*B_+*aS}@e-bJOFyIKbkq_(8Zc!cp^Mr~R-jDeHaVtIKl|8+ag8L9Vj$w^P8F zv{8ohRfS9&qvk|n5gsh74FjGG2FJ9lNQ^uxTqCaByE6wafavN$gkObUzPe+mz~gug zZnZS9`X-2F)wUI101J|KeU3gnWEjK?ul*}S* zb8_6d`MNn&K0p)~RrUsdF9El2Q;Jd|@fdou(Q%-TRe}NYRSh{0HC(-lHAAPn9j!i4 zntM(Q zXNQr(UMGf-6Kgka<3-BpzJyEk<9qz^7m6bPa9{eLU;d3s(sJi4;r|fzk#Sl`sb?l* zr%r8kbEDz4l7}DjC^_fN)@t#d$jU^%zR%f=D$Skmh+v7|Lt|f+k|dNUDgtL?FrohH z75^w8*A&MZ5-DCg?KGBT8R823Mq*Lz_fj!!*-`(%Q5p=&Jn$N95??!`H=&XpG|@J{ zY!fiQU#snv4W5noHkvf3Up3xqwAjn~!JA{nEEz1MViL9hPoPik_}RW{$1>`zpBAX^ zpyIim7e<+GI}j$nOzQHn-7S$paB0XfHlZf)PZ!}s*kD7YF_c?P6GR1M29|X@C#3h|wAY;f&WElMnskNGQ$@SlnBKAZ#7B=f;w&GNP-Y zqkVIC+9)UHQ*N31XE`3*v8l7{!M?~X(mntg!8xb=h4KbLmUfp>flE|}Z#{Bn^|X%p z_wdi>h7OO#bbqQJJY{v76A0+P4sSfBTx&CK7&)R(vQ8cHBBqkXy}Alu{Q_`NaIDoC z+!hDrkP^*?Lbsj(#u)ZNWi4t!S%o6iGda1cWC1d);UC1Brtl>!f(`MbyZen`+3GS_ zUXkq7oDNFt7BRPx%OZBW%S@rDybB#rBt?7_YVjNsb6|@mLUwj!^^lKFFora9KCl?xv-vkj%DUuG3Q zYtQ*HWo=~{RwZjupuM3Ku7kuD>-vkEV?l^IU`m%qS>dV#0jcLUcK6zS`9WLY-LMh#D44LbVU;2Cavvpr0)Uv7s}wcyZ-!D)ioNp=2=Vih2jn>h@kjm_Mu z{DXZj$+#_3nixP9Wl?VPWT8X%LULkFjjXVyWgYak2ND#%B@jd;R+C4v3MkE>>ca0? z=~y^W56qE&)_mfm?^hCw1;?K?<}3+`OGOVK>q>rW$gvL#RwCiViWx*3RiSNt_}=UW zexkv`d9;5d%@W+Jtt1-vx{2q))2!lio{VL(>at(@uy%``r?^d-xP?xL;U=V`ee_kJ zsC1rU2S^wwYdui7*i$DU(zH5=`WY%05Yv2bLC_g;oMj`AgeAdr8?jE?_U)2brYU80 zO*jT~sHz1s+y88g1!4Wc(Wib85lXI%SLNrQxF z>2?|UNj3=X?8Oq=DOgcMa{^hnT!%B`kZ}^81!zz$#IkVeX`Bd+`%dw=@M_|iNNgoF z%n+7YiruR7FFw4;Y0Jc#neYLX4%_?d+>gQZ+Mrk)LnSny;iwPhy*#j4=3Sau|LOVG z82U&i`N8qAh?J^5NKX7ev=~w?$7J80iAkL%c{`WB{b`cD;}F&V-ZY3&v;H%~@ z+6M&gl@Ibr<DhC%{ji8IU>zQfY%2Dv<VUIMSF1x%@PsM0S3I_b^o3D1w-)Xm4?)R^M0ltvgh@V>T9*>B~WRqIv~uP%+o zGJ$(lv=C)Kf2mfBd+s>ZK;^!fo!Py{?rEY#S}~XoC%HA#1zx;bq3CaiX9)T`K8StKZZ5XT^_Me|!6!>%4Rqwt)Tu z*6jXB$2QwZ;=BxAxO%cXpsFtC?Qmct+y*u(S}Pm!>r%>CtT6$tus3>2bgB(|eD_Mm zV75sD!dfiCP|rvAJG(l7`7C2s(yPq9(5J#u6FDB%AQ$`B#L9Pg+X-0)6F3M<;YpTO z9GpB*m|{^TVH4%{3DJU1xaagmqEWN!A>|y*wtp#wr&sBwfd&1D4RV@V`9^7Q8S zHyM(XGQ9)WmK)6WmgE>|SD*E)&d{5t1H&e8=*o~8o>g2k8Z-X>Yhu7cy9usPvHOlmxFjiIk6Da+pbY1;`~M@E+10?Zt>uvR+?dt z^EIxX@MmISZ$QZ4&JaCm;1-))H-W>oOs-j@ zh@{YI7kfaVfr}9ePlc+wV*M$Y-oeg!vTt5_#ZnTIewmYW;t-Dup`BkTpOPyNl^uc6$pb;{(6La8}X$OArIQu?jZEsE*v}a_A z=lwKv+^aK59X_QDf9}mMp#(h9*T>`CwdI@MRKOjDI^Y6J&$$AlLPtG)^J=#)>}q?} zQ0T)(Hs!)wjT)zwcvvj!ysF>zYR}o(%fM9x@-yA9?)v8$Y!JI)GWorLv5u+hN#BnMZf)RXVSaeJvKMS(*%{vD+ z+fP~mapI#Gl6y?Aq?{ZC5?kqmP0sxS5>km3CzoS0=D~dj2jv~3s$mG?h5SXT{PMY_ zwniO=O#bR8V`P-E`I6T|h|e!WxQIs^XM7|^5)koAz`?I@t~BsoFpwCc+Ty&foSsk? zFDM6xzCy`Rm>n|2Za{!iQ}V#gyJfM5(JVb(*S{HARzcRzJQ2-Eim|oSbPDc^;3u~5P)XL8FLxE zMfRh>KxslXDRu_Yw4fYri1JQ1f=`7K18L0Fn|7id*T&VxhRQwM% z>;jHY%PjPXd@5rGy{8Wh^dCqA3LO!-Com9ujKQbdm|Sn8e)9SK+aR~`)8b!sM5Hi2 zjRpbd^l32ql26&$DL&Z}+d}{N* z?f;W0jAx|(Q`7kShM%Ao`iz)A#}$Kf{Xff7ar{5I{1_Y42mPnmafr2X5Qr4v zzvqAQ{2$H!KX&!|r2L!!{)hDcYv%u#iT}j=57U3#|3_}%Q}F-c{{Ncsi-{Md`UgCn zewZE|I#OG)IKqI!5dR@&yE|{$^U04-O}Uw9ISPI5A*NpG+jYtLlZ-IJbdClexg`iB zme3n}-TXk5)QmI#nLSla>U905pbGST@V2UQe4>7-;<%_R?&jb11VHg@KHPI3ogi?z z-ox=p>zBBD5rx;Z)p@OVTy4y_^R+LSZkHYdJM*YRq_a{-_KWq#)Q>Ce` zZ<61C$3CV?5~gHj0=%;TNur#<{fRD*rcc_T$EH_k^z;;y&7V3)=dHG#>rqjv7ippR z@Bw~2PMZyH$qDvP%-%QB1IE(=&&SXH*5c(0Y2P`Vz9MCx6;sha5pJzUs4HY2;YvEi zNe#e>TmLQUvgdoe^Up69;PPz}Ibqa&TT;)KrWi|exjHTd;M7BoB^1=5M^ihT&Fu8L zu678tC5MXl&sEP;b^lx>1-R_rwU(aQs7rd8Yac>aztXEyk733Aj0+L?Xr=meF9+@4 zmeTRaGf^g_Q$ga&!Fz3c%9^EiH(4p8w$agY)T(d&xMY6~!M3MbLr}I_wXaCV6vB+*0db9V3J8mU9&-b(})s0N= zW=X1||2VcA9D5c~P-L`2ls`f&yA+DgYqf@8#|%r2UuZ0Q+5QZ8pPk2^KbY5Ze_xF| z_r4siHa|Lq4v{D%lhz?1gaf+`Bs1Rs8i%uJF$^3x{zJ@kKfDg*(3c<>PSqWmjgrS( zdfmD7_20a{3-;fs9ZeJvtEmBnA(xWJG#1BWptw2Rc{?h4&eoUp)2?3nI{b9?{jB;Z z#p-%_cIn(`+H!S}Loc}u`y0A)P5)%!Yd&m1X}%NqMdIp!P| zqTE0eIwtdZwR)2XH$6xHQfHZt(>hTm8K{n$i&EHV4rZ4{`|>2wE@m(3Df#mB&`Z{! zc~Ty?x4JsSP?y^JeA)dv^znYvlfm4Q)j9`-)D^pbV0)BG(mA3NHTB?;DWc@=(k=FMj|2fRVY zWchAyG89=JMl6jBdL?H)9KSstjEdqDlD*{t>q4^RDno%aLC1oqqC zv(r-3vT}*?@89rL22sny{ZW?Qd?)Q3CXmGUyx*Pv%A>U_-7(T06Uu{_q# z+Ht;=e^wZWhc?p$8HA5{dBG+{+9JV6d4Es|`n+X=i&PqIz0Mu6R$4lNk7m@`rVo_! z&)+mMc|XW1oPQI?{c^H!S~ZnoIWw;Ra>5%(w&z&ihe;xPiqzG?38aS60arJ~Cq_k$ zrt%8QL-*G5f!$ZTi!Y_x6n{1wZO1=Hj(tAO>MoF6%qv|WwP7)AQN2G;SzmA8@z1wF zx38>vtfmsB%dXtFl7}WRJ4#RK-Xg!AdnI*yl(RZ_++CCLnzr*I+hapi{V_%T^DiZN ztp)Q3V+_fJ^-Zz?EN;%zEW(J(qq*sfwIg-z8ln><{jVchshN8$rTOc6IOjIgVXsgR z>1gIyPQe#bO;{gCl{&dnl+$q2f?gj>?FEIRf|sieI||*;iGt5B$=Y+$3MSYigI!4~ zN+CzZ=11_lrc$j{UV0EUQvZBk#=-5+1?B8>pRI!%dwr*Yd!yQw%?+ejHZE2H4ieI(_0nqMI-uw9{wX=1&xc%7sW#hWj+{y3bea;E zMYE3WRYK~WRwt4bvEw@Tt@QtPtnP$4*N(&=oMQvk+&;?f=nvjwB+D>wg7@CA5HpXn zku~8UPG*mQ2fn-f2!GDU zr$Ao4e}lep-EZCe&-?w45he3|VIzXX=Ws_>v(7i9^10EmsEG}4Rg$8s z^zkw+T9oDMBj?b)jOHjR$`6c;^}tV0CLZ`)6)p9jcf(97uAX5(8#wuctG<*HM3 z__7`NJ9RPT>RF^(hakGub`sqpRYt3|vM16nDsK|?;eA@GOQhE(V@8aH zI8TgInECvQ7W2DVgIdd_vfkpWny%PQb@nXXp8i)0^ zm9IJQ*I<9Kz?t?k9Ylcj=ri5&v3|`Yfi`E9yvd+()?Ul>nMX=ch~B@$Y9yaqS+9ct zgXyy9&$F(<36=j+U*B6b&B@F49LDHlPVZ*n12=r5Sg`SJ11b8&EK@)r(dW96bAA*M z(}P(`%c?5T*4Wt=H;8BIx^UgNy@aajyn0(+Ot?Z+Kes)fV#@Q2u%WW?34$!Vcmx); zLpe2;EnlQUtx;lb4i|yesSI&}&y*8B>YIj_6JwsWi{NC8zfk4F*;<#|bpOZo7#_KX z@R!N9#SJFD4|+|*kgJ7}pPsL|1optWARia2-JkCh>?tFxFnqNttio+e&1UyA#}H^9 z8sr)bC*)tZ%I(j|0*|joeNibrk1u#R6UbI0Z8sJ;1-N}&-09m*1*DpcNEO&KoV$;D z,DxH2)+-3K&4ot1oeRDnoy1x`kL!O7E(;QVSknMo>YNXm zt{V+d$Q*XJ^r67hMa+mFY4FRq;0rFd#m8%4ve_YK*PGXLFnuUHeDx5Yp6-P>CuxCr8MD2D{AQRW%sTA z%}^6ZrWu67O!~80s1!%C$`09|CeyuGWuiFtNQLQ&^OG^GUj;O(wivYDr2Q~s*6fN& zI?V+kXPFMqh-gD=r0v3Xx}K9(9=u`4@sP_(^9La+G{{9_pI2S~9>xH-4wWqi8$udb zdCuv6NNMgSN1ek{SyX?H-i(VMFMLO6R|~*c(8Rl%r9Q*!2%#wg98IbhrmVAWsm-Lj z_VvVRBnzbu10HENkC-9oF%)B!`u0*=uVhS`sCZ5-G_9GYOCYL1YXtIdsll z>E3tFy|+RS29cm8do{!d4!WzWtE=n&^`CS8^Pf2It9Xq1@)`IWv&FU}t$%?%<|vLB z5r~Z@{%kys9s*p%GM2F5=aNAuXqSAW2vZMf#sEW zV=i9=@I~Ats%YhtO?@(AW+XIb$Amcx^%KMw!TY?1zmdn2YuH#s`6Woyz^zxfrl>OO zj!$W-HhcV7yVzAn{XACrj42B?1j+%u=)K;IG~~1~X_X8}0a8H~G)c<{INYD!V2X|Ng41H-G3WA{q5H3+Jg4 zUPuuN^ymJ&u7f`pzk=(n?tlFA2fzCKk&E0OzLC^<2Q^2~GqxsEo-|`;C(ZyU&%d8X zUN~|#V8PG(-*nTZ1J)HGUFQf1XJ;2;F=J$SfKw;Ymh6S5m)u1_O#19}+C)~eWT%`+ zMe)JI3UI5z{BWsQ5P!zU09&a{I*~95&QG<2y-}G>$BJIN)pTq-+t)8t2*S-1orql= z7bxIKnxG4fJC6+ndkIvA0YeE!+J*JONWI<@E+3?~MiI^0M=6L(cpxd6CRW`27pg?+ z0Ay+`2w^05h)AeIuNrO|;qWMr4|mWsv9d(xBjrTQQ~3x&!+(qcpqF2MQXAQl%%ouF zrR62vFdeHKEnr&RHmxkE$-eyf_?jh3dPz#8$z+`{NJ1)+%lXJ^*!LIL)t|j>Y&fYu zKi@Dl0+g!QviHrQnaN*2w{&$rdDEnHnAtIs{@6RNdTGA?{A~4^GnKaGiSw6?sn?98 zw+tq3+1S5O?SFjqORrRH8Q!f)dDC$I4P8eeCBjSL%HXkeit2%^e?6sH56M#K1@MSn z`DJ)~e)S`N@y{Vzu`4;aA=*7NI*`3?%Q_RDkIXI~on1Nqr~dqt2mi|tzy0iIAS&FD z?+fj*t|$Plvk6;Q@jybrYSyYVXXb~80W}CWEGP1^kbmuL(p*?j0EbufxEviXO2X~U zMUGrpst}xz+{|P$v6wD~fT}#JEylW3xhY`(;E)-QQ$Bdcbpf(0K01__5p~}A%m-Hp z7UoyGF>V$4X%+L+5y7Y5PRKL*5$zR`rA9?2y9kS1(BkEyNY9%bBZhpuT1R{%7%ylR z;S1aIYkw5fX9O}F@pr5EE?olks4OO`M2QGj{p2w^z}sCQRWUOzUZoqx%G?a2Zhpfi zRO+_7cBf;Q@mi^%uyH@I@|x8$tC#w&z9kkn*Lt86Nh+z|Wx~$gvldMC5TE5lu{%?> zrut;J;8-^H)2|<|bzL}mQ&<1#!0HQgbvXD^%YXjWhfe<9yS86HA$3N>>DXJZ8MfvX8_aDBtu+Ho(rkqDPdTFR2_i)qp$(`#-RS%tB zntxd-o&SwaFBcD-TG+F7E#8@icHgZ#{^sFlT#sH3R$T^Wt^WZzkr0=Ed1ks;sA4UT ztBrm40!+{l$uVS?pCTre@*W7e&M{_08zr1Gnu-sP4o_~JN~P0|<+K`YF?byqRxB2y zu6O3-35Xn3f+Ig2ob;u}6G=eKRKuyokf)Ne6&spPU%t?^y^lY;>_v)n@ZAoj zjDe()ifKCU6%uj{IRbcE4h)40n|n^=6EhXmW#vRBUv+L>OmQLTRtuLs&HnA zDzSaj3OTJSs?pX|5)p1mDMRmgX!HE)2e)F*nQ(JcJ*KMwF885^wzpC(LBsMQ@$Gj- z#z)?*Wuo7=iWd&ZBJ;&XNf?HTAX?_&kvziEhm&b_U09qzHjS7mAQKCMyl9wAWi&j` zs%_h?TGegVTw)X&U6Z#q15dGvbL!xRbT-FPh6W>W8a6NE%FoG|&wm&~r!A^fI#R&_ z|LeFBIX)+;xL zPerU_JFArjEC>TG@pI2Qw;i1J-L+l7rpFJS`s#D9Jb!fNBE(ksEp=?WbU8Xw`P1xl z11;62vB9%ckuE2n5sxIIt`k5 z{5x}K5fLhCh!ViG%mS@#a+du=LhH@Nv{Ggvx=F-QNr9Ncq_c3?AtSTTo`+>P2mk?_ zR_0~_j&p-~SPT3-yV&{UxO3CTyUoVrwySePL$k+@6n_?GH6u2W9~jD|tyaTzZHU*8 zJ@z?$=NoUh=S@Z;mLoK-6XE9t;8kdeS%Ng8JY#{>Af~CK8AH-j%1Rx#-t|K1s8426 z26^-L{!RUW3`BTby}ZGJ7n@qgzp|;s#^C|i^DeHI zw&r01M~h-~UJ8ICOvcSE^#9|}ku>6I+N;Zp#l;21vlEGAGL=ds z5-~nb9oE008&H2}*qu6@;Nr2?Fd zT5&ZNPXGlgHaex2<#fBi%_^r4yOuXOI222ofXJ&|x3~XDIal*8d?JUk*{anmD}N13 z6amHo@I82_5TZ5p)m=SaV&VU)9cS;U^5e&gH0%J9sqz4ZqTK+FeI}%C&Y0nS5cm& zLGAr)@a>C$?%3SwxgeugKXEBJb$`BPz12N*dhsGx@40tO;LL<}G?x`+0x%t(Svn6) zzPf5bw9s|Y_N3&jDj_VYWHP~E*>qNCPMu7p(-7&DIDi6#XndHU%kX#nfpG5B zu_H?_d|exyY%ZUwzLL-eC+rh1U|UTczEo8o-LmP;?^~Ro-S_m~ZCC9a9DmG12-vJQ z>~4oUyBn!2s^I~T3d;@K>WYk2VR;4KuG4PSDrMa;Zoc!5{-j>vb1QgpjW^u*6aC<# z)KnqP6m4h-Y7l1$lNmyK`b3%Uvlq1b`8$z>OXP+$-=E8q?YjhPpC}*@Tts&Ni6lLm zr8+jeHpYKkjBAhAEiW2B% z{g&OH4$9CeIyy?8MYaBZW1tchO$1#pMDcqP165Q{TMP|a2o)MJAb*ygeO~y&AnzU& z3IY*)Xj{zuHY3iJRF+F6Zr`y1=+(qvI7DOriG?GxOT61Tf~+h$t7ILe=z1Eib;2jS z`7k-8hXh5|NZs;MR`$hh&CZWm=M=tQag_miRr|llWIPGZmd zYiVvaH!uK*(l?OhvVSRDiUz=pp`(_)Mmz0xVdj*#cw8UeOkxRp`bFjRi;-^~zqvg( z-7v6t)eQ~%pBb{J^2##o5MH&qI9GXjFPtvN>cVSBa_aLhoH_ov zKZOHm@4P2Jv40Vs8Wp`O?mApxb8eoOYENt?Fzw_DnFMZE#+eZ7dN%Q8bCV%3Q>{YXCf9CO*+t}U0B9$DW zz7yD_vh$e8$eN>iUdK^2U}a=oca%#Y5tje}>>@GiwNXM{iFb=otxM!tx?mQbv{$F8 zbZYt=4=#Il=brmxu^Ww;Ua!_QUC-vy5XJ#xgb>fREpPR-Vwhu_w#Ro}cV=XZ_3~rP z>X7t+)_*sW+;;tjjhm{a5>O{%rp|o%Q_N~ZK>CouJ5(nA9y z<9|zMPTJjeI@j;njxbDy@DSobpq*N(KQ}bwxT50NV|gdBD(ndlU37v47?#r|RSDgC zi8Sw)9$rDG58<+Yo~{lJ7{nylpd1~D7$6_CIMS%EgAxThUosr< zBRM)-q5Y}EkG=KAq-mUekw5sv%U{CrFn>MmIO3)nOpJ?m53{quNN6v}xuHrquYvMw zi4hmy()X&5hh6Ew@RC4nJ>e)HUrKaM?KGS5p&?pX_R0&>E2qoF4-Dl;+U@ozW~r`P zm|XzWm^*z6-A4;^v8i3dV`KdT1KY3OF}-W|siQ|ynasw`TQ_an7LS{?YJG9`41X{X z2LPc~V9jb{!_J{G?2Q7pVx4&2U7d+-%>%zE9C<;_4d*AO`iJtcsuv&tgV3qG$hytS zBY*YG3y+N4dHl+*dD2a3NfGERjM1S!V72eHpJ&kIDc_5MGH)&HtPx>=6ONXA>+c>nB z)(hI?HRjlM*k^ZjhIQK{p0byYHw&|BBBxJYU7H_XU6>h}oQj$8Zl|?0GhKV)pJ-*V z6HAuUgX+i@TA1}}%lhQ5>f%w_EUTFzealU1Ea6p`_W$jFRdf?zU7y%NQhzvxm$@FW zC&%hkRu*;L0IcjZ>gi0@acsng)oF;niJ3@cQ@n*!PO}$XFLJJsOzm;$H)T=xXqgX` zemIIhMlNW)WI^)~->LAh4@68--`N|i1x==lu_;KA_5%{Sd6dIrrz?7ADT-*(kCz-5xDxYc!P<$r22owDYR!1BB5 zJwJ8oi7%zMT(@!4)+0}T4MIp0LY>>*4y+3HR%T0Ci=Ie<$~j}bF|xNl6$jig2)7>b z`IW~W^j2qRZJBl&uzamn70;U%BgqWwG`z}^(yc?#tc`ASPCQ#a{#5toce&lBb>I;- zn^(;=u3Ee0)g0PwvTj`)*cjV-qgPo`yN%?g-J=^e!AD*=-hZ){PpD=pw&y-G+wVD! z9)rLWBII^?brIrZhzdo!qM1kn6>K-^UcCUP5twPr&^jHP@p+D1lHtq!gTIAEj^B|) zLT(et@Ir@k+3FAJLLIjl5PghYE_**EH zg@eVU(^6-1OAWe(YZqP;}1RaHxEDC>e@bYJlnPNEc{xdeJ4_NdrqO0 zZ^w8sF3Fd=^2xsftX;7D$S%uE;o?3jc@;;9fCX!~FQ0F>TJd1Jnb$|tMN1(IY67&D4Oue)zzY6~0y z@IF{M%X4Q+CtqTX60_QFagJF{ZD^yS>T0SV7!7S!@O1Z&u~vcAiYKt%t4YEQo~J9}t(@)~t; z18Wq#%CcLU_l1BR*gzZJVodC$?W*EAc%?VXKy47aJ9UWZ01BzqPG5U>I@@n=+{I3I zXs2fGxa+p}efXxG!=OD=|NhoifE3JI1*1J-GyUc`}m9R{JG!U zao-Odc|G%|kX#F3_9 zdWj5em1)f+@g!VB*1^Y?r~7EFh=Qj6Q8k{4ZMvSsOxA50nZ8{AAb&8IYN_a~PBY$@ zmrSLx<9cK>usj4fBc^5sNIazvOlbY%v5BkQdeNCVNK_zbWqW!*nLCViv3P>S;%Y1j zf75mi!px!9zbo4}Xm#7grA24)7$B6f;aWvEXni#~wsm-NDhseNK4HX+l`Y#>7H=Qh zxb^1UlYJ(xsg$nVet&I#dNki`+g*t4G&YD`0EkBroUYEDp`M!=7|M@tFk(7y&s4h2 zrpoOS0prpD>-B0plZB@oppy`@8wPMpRxbczs%A3NmsR-09p-EC$(pOd7cdHpA^yyu zaCVUB(_x_^LJbU~{Te^@%ZR~1S5ZJ@exf}XCdmKcDYPg3B!9b7eVKwVvt>c@i}+4B zz6L^gu1YJuz|khqM)WuxN6nk5FRh5c(E4`lbd4(QTm$Qw@~!%L4M^7IZOzUTF1{)R zBCnER!TXh`k1K|Wy}xK-thtqyFMr|>@Bi74?7rc*+q`*#x>Q6T$#k~WY%o4YUPJRg z0Ide_AVt$@tAD1N2~5)(rW#AAxgj7*`p6c*7m?0r;aa8rgTs#1DW5r3(PNd7Nm!Zb zTn^qh7Bj~uCk$O%TEH04&g9yj=X4u*I*b@_4K2SxOAo5q!TjXrq0w<(7Ie)-GLcNW zjte{Qw6?pbK1Hz3H#iKy*oOx5m6{!IDFJH$xhOrCft$L$8vQCot zVg`b;^G$!bK+-5G#0_-Mmq_)qaQX5-LV}&o|tJi8};VO+$v7c*(EIWfPDZDC%T~~ zbAPItVpa#PN_}t~@Jmf(@%pkFc&$Jf<#y|{$F*D@;vlQr^_oT2tTi;$yJ!0Q+pT7^ zR@JoaQ`@G-Cdb>YuGO__)jh{v-fWeZwanni_{L;9t!i4XZvfucwQX4Bp63nZ^Vq?| z`5HvEop!5UExESSpC5tM-fGlst1~n_?tcK@X?m_7%~4g2OpFg~*}iq()Yenq{4BHW z*yig2n0Gy3%#Cfl_LjR`&w1*9{;o532;Q_BOD;h`*Qyy)dk{se7JqZv zo$9sAWnU*3rluWD(Csn_z zS*E=LgHWj~Ud+pQnq18nSM9-J8dTrScyF7j7tKeq- zyuB->s(4M976&X!)kF$c@^T4cCBPbBM&_nH_Njee{OgZTU3aVKS*eyw&4rUdSe6>a zBYXBFljcj$zqoMl83<2^kx-njl0;Dw<~YryNCGpv4g5>N+pMSXr)X`p)PHTM$*kg7 z%xcnB#dQX$>s5=Z)xt_~b@}Ey-eAT}xQ>B%ZP}dPa@DrNa>3;tFt*i=nTe6f(MF{) zKQld$AL(@3=!ifRGZ9Z^lgwqM0(ykTlc~uKV-97RY#OJH>N-=BV(?GBRIweae;_|L zl(^@f*X7413X5|ilT(u$$A6QCQthy|je&^?AskCUEEi9rX)L;W>RM@K8Q`OTXh>5P z*JURTzEFJSDO_bv=UBV$E}vjlJO1upe&hH5$lS@32cP+dYgzWG=a}md&7kc%FeWWG z3@3^@emVh2=p_QS=ohevoi%k8Jm*hT5RO24p&&Pn4&@8JHcKk4B0g5qA12gi(C{duURP3e#d< zIhfnVc9NtqzMZzJirrNQ$4%X^PCkF^*fVO(#DEc^MKh`Oje6zzM?dl3fb{?u1GLfy zH!vVjRvU9Gi45PH#yma%t62x~g++O{t!9U@(Z5kpT4lu>fq!MpVCmLYx*|6X|r!FjKj-uA?Iiwiem0W7*S351l!F*lUy%gA?0!Ubk)6 zj;pp!j*N|El7AY+QpZm&lvWoC3-k3_86r3!T;o$)0W}=QHIrtm)`WM2#Sgd%cz)!? zXX}sr1$?^rb#I~NIS4HQm9&wq1H+?E*KXFz)dSxki7e0A*U%&r&R)7-P4@AUrAcBb zR7=!xB7h2@lgfFO1pxPYs?YOWKr1bg_FPAUvxkOc9)F`2F;l>>5a|@<-fKti-mGhi zCJ<%+igT*st~9-%H(VsbLmPV%>6H)0Dh8@?z9o?bLh4r-gPGAJ==TdJNCy?YP`%~L zNB!O!-_cO28Te$S(ET%u#ozwK=Pr@dT+~KW@%Foi7Jqib$vz$XyoUF_Yt75V z20t??HyC;1-RF9%=WcowHeU10$df(We{gi>_kXq?sJh10&%P}vtH6cu$*Z5gJ6Fi@ zx2ULAQUvo!h=bepX z&#Gn`f@M*DLxF|o7!x}Z=?oxIW4X_sKdc&YH8WrgZSayg+APy%sU3^MZNRhJihrsD zW)U12>9S@?i6!91Ff`cztH1E!sjG%!suK9A-8f?0IBb0KK+BR%&?3c7{26~N7+fKv zxj;*a9_-ZTVoV8#IY#0*=Ihq|aitOcLD;k`JRLc1c;V0se=3?1GNyzBE z{jWu<@U?WEFfCNH(~G``M=GQj6Mrm`E4n(*TJ68L{ooIc&YWlC-`jTZgXh}d9E{|F z<*D;*1*imn1NH$3exVo|a9@|I0a|@@W~YG2500F9*Wlv&Ub!8R>szjO;7NCGrjD56 zItq_p)L6nA}UVi|MGVRp8 zc3q99fRW*PvpX070`rQ+iJ2fQ4$%;B6D>0U91XPssXncL6kkqMuUSN+7l;}4m{(q+ z^;PTG)7_W8hQwYs0P3=?Z`IL3)`T0h{b)CYsH$3;~7n*zjmjZjhioUL9`T@k< z;{1t+{#sQ?D${r9@rNL4Lv~r3aTkuMv7|Aw&DgkSZ1Z*qX6;lT>7T&fL&Mm*>-y^P zed%l;+Co5RtZJ}B5mYihFg-gkIJ#jg&?ul&t{%hOUp$-XA4*J2)qg9c=Il|{swnX^ zZ@I>y6>tt&y9yYJii&#SSAXuuhDY+tZDqFN9bC2`NQ5`KZQPj5XbO{QBSEkNeY$YM z3ALas=yc)Z-H9|+V38?mQhY!IITa;6-GO2Pb66jgu%(3gCPstmo<|}vq~DE0qqVg_F_VY?*|TGk*&G!PhiQT8YkQ7M)2EL92Gh`uX4gv~vDLdr!Nv{PXe8eC^{t z6D5925b=wtvx|iv|9?Nx6YX5~l055$d(!9$0enZWr(hG}|0Xs7%9HEe;5SrcT?0>y9z#>u&K-uOj2AIRL)bk-%rs8o@@zekL!q`76JvOQI%&DQBCPV@Q^bUKz^v*jZB+5H1CULmwdAA_?RArh`2gusO=l^8s;Uqw_;&uTIwcH5&QPX|cmb`SrTb(}kxj%vTbCyoQ zgKB9GrL6;#!1$0i*{$-*0-8$4lCZbseUBCMn@2Wp*MA2lTGg^!T~b^d-&8CN9eccC z1=QwF*qwGV)8|=j*a^T8b2`mxDISmOss+VO(lk=eAiTB`+y-<;uCY7eT!XQM^xd#cU+y>JJZUV z>UEmZgc*W>%|A*JXTm0uwKMBC{ z&YL&CY0ri~`_hZIUo(FFmSK4O=v?V9AKu^YqJP88joU_l?7o{GeDd(o+0|eBfqUTD zjU#=Z{Kfm>moqCB*dX7R`p=*Ea;w!5n3#&ke&@sQo?R;a!9RR0V&zURkVp5?YHDog zd*6KP4nFhd$mxY-JhbTi-Z#JQzB~4O^pg+n*gOH-z$5Ta_yfN@{N#a$pM2?meB_5A zT7UfbXXKQcyKma@wmYsL>d%N>LGU=USP)PB#)saM@5}tb-+dYO347yv@T1H1R_zxH z;}0xN0Vi6y>x(^W*54RN5IhTimhb%HtIuTvPT`xD#;4*f@w;D4Ui$;Y3Q$tevCB`I zlUD`ry&<91#__0j7uE@oAo!=}bOE+BxPNI=7my1n7+@Bq_QElAp@pz9mVo%no;d`I z6PGTm9M|%S%Mi^0`6Aqo4n+sB!gIq4{L^+Z>0rA=P03+iz}FlP8?S*_q2+>&nHm5@ zCXL8(g(b3pm1JPt$WQT{SDSmg=rYmUZRrCeYBG)N1Ku>z$DNO1$tG|zjY@#%X@BV) zLnRkOpah(PcT4r-%#6M~?V#rw9<~Mh83&{QE~6&>dH#DqZ$SuZhxkrnoN(0@t>?+_Nq(9#@%kKx?|IIa7}&v@bbtl z+c=tG!GZBUTyA(z6NdVIJCfO0cyGFMV`3_&f9^;Fdv|cuk#fsqB986fxWuo{$KSVS zkUO~JDF=|c@0x*?hP7C?gzfI;q2!Lyv_OQ-`Q&?Vo`ARLPa1*?-F@|N$A5DF<>->) zk4qHEd*O&9t>rnCh)%tqe)|nUjq;kw!5{ptYd`t$zIDrRp-7Rj7mm%p=bqhnUAOt+ zXO9SB#9h~KO~zv{9Gy{uv3sU>o}s^9`{ z67E`$GWU2|9p2)l27eGZI6*^ADZE#^Ns@im$>$(an|S-JW+FYi_b`0?@jJiwKfL!X znnsFE`r`g$vnP*KPrS&wHLtwj)mCunVuXmoeSN_68byUq&{lYJBFA^fQw_Yw840Yq z!kdzWnn-!YdB86{Jw)rpsnNk!yK|ywXD!9HoNn9VUK30XbAM#)j;*PTuFRCJFCMP7 zZErMdyk&cKBBNiEQx7b*oD`mkrHb{B=C=--duJvE*)56##9=JCa1qkGHd!SA_oa_eyV8?R7bM+zUp zRis6{=j-piz<-x!worfc#p(Sgmj*M5pLzE!H*6gpOec!9mV7Z$W|qsp_~&2z!=HNR z%yQ*pfA^S(B!_az_uRdE=cbW|pE)G5T01w5LeTg4{^R^R6>%aVp^%*bQhf3^el)sf zFi8B}zlC3Z;``nVl|@V9zV8TUXSV?){m?t_`L#d(hhW(O?Rwy$y@g60-U8nGo||?&at^?{{EFMT z;eebwJqN66rkk9#QV{3?V7&{%!*fJ@?;2c$_z}1mQ7*AENG|cSkqhsXGb~)^OvQ2@ zVNTZ=nSZj~E~}S-ZE?|q2ZRDp0Jw<`0SjNu(q2Q=fZYIup(BcFkZcY!6dap;J)wfx zE53gmf}l$KP+(G+7X#o+WEB$vJspV#+?PFWgcgent2}CVJsTjbi^`HtQWm{K`G79`U*OZT9(!Ac-2LSRd2fM?py-bPr6^5 zdeaW~yLNo$p~+YN@;}jTQwVD@o0A&ARGsIdLuscDp9nyZ!r>*dSiW$uAIRKt6JVNM zUVktKCNh0Pm1Y$$JHy1>7M?>K{xN@YrrU0M5RTfm7}VjxJ_#Awxue$b{`8@P9JuL< zqO?}CKl)wUQ?$7{KRZJDT|05;^x`W=mtj|>Mdgi~;_;aN*~ecNdw$vI>>k++H;ybFVbsy=TlIUb~KCpFK2MbRgP| zn!qsp{<}B^2?#QyfB)ElnUyMhKPx5s@XX3x*G>Unqpl|t|8R$cZ^!e~@Zw5itXQ&+ zo>|(lX*8cr6e`W3zVtPl#~$B*EHXea>^fpSDu=bX^ZY;-;=!4vLV#9la#+ebdVf*U z+m#}J*|7yD(SPO11CQ@JDjo;qni?Mho(1nxtke-DyVf5*@FnrGeTS!u)kbpNQG?_% zqq_^10haCvgU7#Hnc^ue{9FQq9$1+Y5uZS%H3_eunK+3F_;eMX0($ka*_{`AoL2^? z$oZ;-SSTc>0tAYBPGy<#I0bQs8-K(h@dj!D@WfN{LZ}5OMr#FZmXGyeAY)rhz<~&4 z0%JD99f?_BVo3!5;-ztOQPV`9n;QpIi)-UVJoTYojyuJIeQ zhF(v6&x&s1@xZ}5y3l`M@K{--&5D{H&~hVsZUjC>ZSIJ>I^$NB6Wd=uIb<$3XrZAD zXV_4h02jP^&+cQxn^>z#()~OR)<`@9A6elp$tv6iv>4D;ctnE_f(FSvN^Mnbq_y6Ln2{OzI_x}TXX&>s?Xr4)RSQL3jY7X;ptvQxLo|c!aYo_7%TN71XylNvRCtpMAi+}x6(u9~-fsA3p81x~~@ z5DG+v06A`b6|NgLwDOMhV^alUZN~UbBP}&CDP| zYO{jTrgCU$JS=evtd^5wt(pRUyg@;I>d+6`N;u{&KoJLDpW^Wq%73I96HHq$pr1*?==e6@h4?T8Bj5sVff%G0H2fV(0}eN&e9R<*yAEeNNcyyT+BZ9 zl*K0$*vUP#yW1_Eu}(atClkziBdspkr=An}Aa7TW*&E%J6ZYv>;H1XVNoL;*r_NbC z%rl{HWt}=aD>7=hdoCIC%7|{XvkB!a^;K4r&gjhA3YQ8RZ?wzI8o=LCW?W+=&S!u* zj9dDMjeq~;nHTTB=lZ*@-~N@o`);~s3gF<#so8UC*8N87bLF8(Z>)4>YVT1J*2Brj zS=*6|M5PPsC@!?cpDt`$=P-#BH2mYPr`H6Dd+T9TIR5mz&r|Gs)d)o{?+kOm(vWc| zZVV$7Lx(ktcWfkCOhkVedBO4k=Az+jGOu2Y4S#O}xZ%Y$hlgXXkVi=E58V2~&U3~{ zWH=IY6aj+3fZ&aU`=_eIP5_wn%&_oFAWY*DAx|QRO0-lTCcH?qvfTQgO1MmVCh#ZF-;i25g!8hf4 zD1U<8k+=rbzCk>eRuwoX@G{nE0@(rZf};dL9LSHp^8B;b%pqc$ZgFn;)C;Qsrm>U< z+zrmHFfv!UpJ_6uruulj6_p|ikT2>2Ya7|NyWOal4?YGw3qK2BV!JBa$Tb5FPfcVF zpE!N(b$jl+{raaqt8f}#dD z@tTZ{L>M>}@nOp)?Qv9`4UZCy8%@Ju_u?u}E0ZpveL- z633^mn^#)zF>;}18M4k;*&ZlZ_r31Qq9_yy*Fz;CWgt1-{^^O6?;KqGScH+0a~&DG zbZolF?(*~Ju!3GfYTH^I^RY-G;D4^484{I2kvQklB$Nu^E9{Q7dIlLyv#e!@Xs3bU zBwRWo+YJlP#Hty3MWNhL(269=Aow*(xz0;b;so3JDZDSPSltlo8Dp!}83Ycvi1B?j zE(1_#w<~==;6aVgDwI=#3D2*`fMhYs=daiv@0}wk)-0&&VMoi=(!D-+*;rTvzS6F_G51ps}vN`hNGwu0f z&gv;OmDAFL7^^xKwM!%@xB$LD917UF<;Jbo-7g+$N5cz+qt^NE*Ey!qblrVZo2`kTM?_%r)4EJEf>zV~hS?AW^T z5C8HX_n(-*@9tYa^6MY@_@_VLYPY8*M&Eb;y>R~LD_y;xS3))H`h<6pRXM}N(H+@A zRZDUg(-g+7fYhlzEyaHaP>!cL)@kVZgMc0f=tKkuC|9v(2^lw0+kag;d@a_rC27axM{n7S1Uz4I{sn7a@;}QKby*m46BjWTe%#AfU_lXVa;;-z$R%xc~5} zdv4zKo;Tmd^FgPG^r|F1X($rvJJ-GVXBG>EYUAdeTaMne^YQ(dDZl&19q?WPiX@`@ zgLB(m3x0O|RRrWujPVlp=BB`hath8dP%G zIV`dc2Kc|ea|o-t5as!R#Zj!UcwMS`7m%!Tq~0$gkiFE%@Un%Ycq4^C$-)c{-Ys!% zswlTJ5yGJJl!`nE?zhb{EGN5;oCPIX5ZvKyvkMPmR0u(tXMcOG8eD};Rt9yTPO6C- zcW#G-iF4M~d4ve}UV|f13oDQD46+-miz`P(MFp>hQ|Xg}4T=1agq&J9ji`Jj0OSEF zzAAfxpMS#0I+j4DY;eR87Y_#uE!nS; zgu+D_cuO$iTCz_yV|aRX18-(Lj798*zs;n$EdlzAs{#-W_VmQQ!|%EG&L4Wu+u)D5 zDqC=;fi2=m4qK?dQ-K0wvymz@dKmS?BN~n^B7As}j#pZ-)|eU_{=@(DA)XZ~{LUx; zH#~Xd%zq+aO};OC6Wz59;5=gqf%;GK8D zpS7z$L@fO0>`J-Sv8TrKAOFptfJYyB>ZOODIuL*s0Q4hI9RQH}z&r1TKf!Ju_|o1m z*QNC8XxUzBm%2Fit0 zSdI4a4#Ecy$eL}TeU)rsg}4kB18!5L^0&#M8HD}3vG;31AGb3A9)VilTzy_ML$1&45(?~zz002+vHhwF4WR= zB8J$@>^s&OP-DU5#;9L~UrcOxMlC2;oQVTch58H*qTArUgF03Tm`huA#)T0?#|Q1% zm#x$Lfi&650WNThTh&F(ZNUKpxc80e*?&CMG_SfUMo7UYH-@)peZ#DS=E$?fwR~fA zCQTIP8{788dgEl`NhY>!V`4jRY+I8|Y)@?4&cwFO&9`UwoZbDuzxs3+o_lXqb>Can z_gNMHJRafH;qX4pu9Q?hY@YTo+N7_+bO6>{`JCBxUIp54&c0RE#-JUjo_$~ z$FPkVNia8v3?31n38HYq{rNk1Rg@O3|2Li_n4#f}nJ;h1qmdF-6%s4x z2h0k4x^y3O_qfHL}19b@IhfI4S!r>gt_JQt?A&AC0 zA0POQ0`rS;h~Hl7*`!6${m~rNJTr9KWj+GJL?`i5!&7|?3W}2trT4>2-3fMj1LIO=Qwgf1Y8`gjmv6@Rex@Vul8(iVCCUQ7@wh zXl|LRAz)lR85%D;CiN$PU*KiN0f|8yjkuc-%$VLd<$Xx#HIWh$hu7c0e$AAULDPsS z9?oDvBH_VT3~IoWsZF-T{V+)7%C-p%{DxK`yGUOV^W!gR%Ppf96lJ_#TSalGHVlc} zg?FH`?t|2A%|tf=Xz%3It`b`CZ08(<)sKtW^W462cZ( zWu0vuG0Rf->S79X(gk>q3&M}#a6=|T^H1p%2_|>f@@G9!wq=ys{r$!dUWy|dB&}5O z)acExJHgIwdw~`&##e*6zvR28E9{f5{}I@wt!~xoi?Zc0kcd;Ou-qk-c1s85r=wGP zt$zs^!SbzN_p-(8YA@AKRuuy2vEE!VXWqfqJVQw*YS(6iPRf{l~n`-IJ1Vec8|9m1)Tk_eWzI36N7CA!q6ATZ) zH{)+6BuvMdYW_#G$U&3R&7BKj7WD2=2BU)__}xF`0=7;^Vt|cSN**4Bw~`X-9NSpB z(2WEz_2cTFYwkyttPRejA7i#U3ztbL3m)t-nsRYo!Z?I<0}qm$XGD#kM%VL=CzMi% zwBs1S>s#ZN;>-YN@)OoH*So{V>Hx{quDb4j^B%kyIqb02or)2ZuvJy3;#ie&)6PDb3ZMkBo+Vs}&TgZ?r1fy3QX9pjr>POeaHXihGrFzs!Ul!JeB7Dg z|It{M!tb^d?!Q&`!40uu8egrsJv@sqbhFF&n&3Qz(kJTSTmcU?lH6v!yA|JD$ z9hB77^2zHt_^`_*1CZB)A)rwa@Z1px~3n0@abMY zN(5FhO>b3<>6&yyAk=A92h6~m19J7iGxw}&OBLN`OMJ;m$!C8?IvOh`3(%fR)5_yV z6o;jmkD7qKKgwe1#NN=ym1D#emvf%`(TI6mFC%XLSsIt8lycSpDlVDp)g2Y-dAPqc zf@Rn-HIstWeFZ%CwAD?E!wxIoKe)7pGpR)cYZOZ9xsmm&Sb6%&vTZYKr z&pVNqq1CHTmQekaqn?LTnS4d&YUThXQJ-0|6K-7xQ$NA#I0|N%T!h2a6Te*)kEa_+ zvthu3Uc@v!9DMrFW~{_~7CIdl1uC*^=!X!e&{-FGn-7h(G6NDG0 z!Qp6%3a!fWgTKW_WD_6aB(_mi#UNWLn4>{M+0G9Ci?83`+W;=y~0tAFLrOi%4jlEbo1%++pBanli3=omo*B-=epA1|xnebiB{_#QjK zc&$wrFUC3Zi!gFLBNaV#!-HD{4kiaCOl-IbzPeNPI?P)e%FNbd!Go~r^ zl`u%eabpLYYh#65w2v*Wxx1LZh<DAMAqG==U^Q!Uzt zof`76ZO%3DT@U$1ftmMUgl`8BL?BW{Tg+G1pT%*fny zjbtcvBUd;Bt_UuI1Q3n!*w49E|9Ap{p7R082CK{5`Fw+mRJqICgWFK*KS)QrVo7co zK%ey9kSCg|z1j0cWM1c30&bHE1i=RW*x(x6tUKuh8yOR^>ZxYV2)sohNYhA|9@{WZD-uZ0}zf<2&AD{&^N z_6tSzW4OOkm%hTMM{|oiaBwVSK1HQu1yEr6b3Ne^$Md$_ z<;6t*s3JBhvyRNKt^pG%WEU5flkYu={8fks}UVJtA=OaOSQoWcnAho%vXb zC0RV%1OynM?>NR_*5Qx$-baFJqCsrxerg}eit;`7TUe26Qsjvo{e>X(3DruXn${w8 zH^Vl^hw}*jvj{1e;beh?v9A;jR#J^r4_U-tPsu&OiUF48ofzNMMOm`{E*iuiUb;`c z`X2E^lh#MxGcBl}@6Y|)xHir{C49XTZwUXPEp@=*_pyz(y>ji(f90Yg(5Xl^2ziZ|uDxXQK>Bni{7sc=6ba6N(8 z%}6hB9kNneJ1K*S8j-;Z+y(HI(3&D9->ub3Pa$RYWug`FxUALb4t+<1X_JZaclf*c zlRg_c_DTUJ(nWaQBdk+;fR-ueE%Xy!9D!HllZpN6rVkTaxkLcOnIw6QBXH=6`xH!44w2}5u97EdYZxpTIGY8@CYtM?O03*F z!<8iFy|^!fz`ZSo`#Q3HPeCCX!SoMt?xYhed+Q&2o;Ya~G-4_FH-&&C*6%&GM&yY)ykkCk=p*EqdTa9%4!{&S*UN zGmK7=5)i3yNwV&Ad+MBxoR%@%`Kb=7U#KY>R2nLhp3}!0vY7l?iH(pq{LOrlZU1dU zruK!A(ZRZC#^kK<7;=*=)PV#b?kd3rgaB~wixwDg<<@|r6^3JF2`gFHB@Li*kA(vB zjKKsP$zvE1M1oPH#!B4-*&9(^w;6T_+{koqtgF@j5XJ(M*G^bPlhgAv93VS2z`_2k z3u;l=tiOJGo-Wo2+`q>v9FLK?QLss`O$S3JibL5SiNq}JOucf` zV#}5M>8Sq<=oyoUrt~Mvbtst{D@j`=lnE;$BcSwIdtaF_3c*DI@QZ8+N3#%E7Co-i1mpyEX7e7E-z;ObTtC$@ZShplyrxwTmU9|Ov9D!G4CQ~ z9bC7irv!dWbSTboH1oZ@%w-NK=LHZGtO5W(c^hepZxNBtl&OD$DO$9_+NrS1AT38U z+e0mNM`Z4D(3AO`Hk9dg1Vt>WAiKnd1B(^w%wnfg#`6vlarl3xnWY|Z^MNsIF2je8 zSQCLJaCKmk9|0a~;HVojU!ju+Jr3`^0+}=zQn2IilI%ISzh+tMs53tU1mV&sXH`*8 zJgdwehC+%f_AS|eP-x*QgcbxcxhOuMgTr3z^yZ!U9WFf&4IN+=U86JLcsy%;pAo+3 z$;=?v1`3T9V*NAiMa7d$*$qb%)k&tAEbaxVK4f*$2(^7nt_N}+kOVQ3Tp%5#u$b7Uk|x7C>Li56%gcsU zBqgj$mCPpozNR)Wk|i4O^FBiM=*4wX_MKO#1c7p$G8F#2_L}a>Jy?2;T31`6&Yb}S zBb1=z@;uX$uh-_!O*G2Nd)fRjxRfegzC7QH7gysX==Uc(MFN7!sjM8>`z)F^lIdcA zp%Z%zu zyoMm8k&yw^XX6+`L2JP4b_+G#T3a4y0Ed)+pqwbVyey2-0}2pE+`yA(Dl7kJb?nOp z=wVgaAf!$u3$gnSC&8l_o>V4klv6XBJ0jF67H|}Tz`?vSgdxQ!4{H?md)1XKXfZfB z#HOWEY^=whC=6>ED@I6xRtJ8kM*)`Z;Fkj__)SnNIK#Mli7|GGyfV2(NhLxyLkJ z2JEYx*89K5&`QZxY5eWYp|ts6vf^)$m*+9wP-Y;a)uP|Wsd35O4ePdAW7IjkPN*r2 zr|c$`vL)#vzu~{h95sezaR6aJyFI=Y--Ep9AhS_jOLZV}PUh+$w2Fg&JI9C`Ilxw= zDJZUdpOal+SJaQdR~H;)T|z?LUJlnJ-q)HO_dQ!9NI+S{r)cSfbqFx{^NEaA9R1pif^O@Qlh7fCnFVY z;f^gahI}?wG!&8SpeNb6xTIL^JDq|b=!JUA9{2p+IujalR2)MLqjCHfpRY8?qWZKI zmmIUy@CA>-_OQE4^6lD`?!y44oej!6bQqsBl?{@%=8vU6RQ_+xFgGBf^GSZHP@iXx z6l9Z8$8GZ-D*OP#2vz&{CNerqZF+Q%jLsc{klQdUI|YDBHp;)=R_ji zBBZ>Rm`m-xbtE@)6t_}0^b3_=+7Fj^m(>rWnV#+!nurjLG(1|@5qEh;FJnA66|BBI z!f5c-ONR^0>qwcET;Xrk1{OQT{E@&=Z1GjuzA8O}1}YY}gN6w#oEd)SS5hfAM<&ur zxyZ!0#1&GGd=sf=r83f)(OPri#Rdw&zFV{o_|^3|-IE z(&kc&tH9dC@5xrp@;dTcYsKr@4I7y-L< zpSi=1=PRm8gG>td<(hxBcN4|&8Y(E-iN*=R?!;43HSk+Tkrvzr7)rKbg0b*~rvqZD zjEACC+_t$^eRBn(dLrB367Bz@6G^Z_ef{Y~VFneIK>{dx#!b#c-G1C@;>`Yizb^`? zgt1TV&X`-`|6M+$uUf6~@*;)((sg@l_jNeF6nzvC2l6EBMc~eE7C-hL&!SGj+d%P% z1n%;XpKN|>@kk8i8FvrS)D_}@op$~~CSx+q@)|hM(CA#SQwOZp#TfX}38@qIdi4Qs zQrUX8s3vSgcJea~ZpSW^m9o>!ovW`f*SFfm53?ITAXwZ|URP(WzfU39DN0Tjj!?Sb zCfgnq48qOEuzsn9!gqaJzs_6+u0SN7XCMvO#;IsuNV($>;5| zECC`a`uri?K`hxGxoHz0K;EwsX|%1>;1i*r1-&lTxzJ{CpR}MdIf#`?buQrE6M5b< zm}>Cpk+V9+J8`_X6)~gRzxTJ>+OK0UrFgZslHYQ)D?~rA+E{sL{oUH#^M@BD<0tqCp6 z0}9vYh&74n9S(**CpUy8Ut-Sv@#EKz&OiU6GEO3qtda#m%8|hmba!?~aG>wxIxf68k7ns_*E15HY_z$hXoPM(A9jF;Xt{Z^L9PA5K=F8!WvURF`~LSQrR$%>*^A zOW^1*1rheMhPEh0U?R)H-5yIFVbV%nQm{i@;UL9R^2HE|sGNjJu-&%$8y_Eco;BD_ z*Fk*c3L5dj436QW*~d1xx1HX|#NkIOUt|?R`mFb4ktz}o#32ck%2YvIwIrO5+=TiC zY}v(-_l8GJIi0ED6mgz+R<_<3ErP~>Vy)xc4bKOCD?bkjuh*N7cLbm##c2wbfFlu| z#-jzbC3xI1N2mk<-ml z=YFAim*(4v{&t0e&Q!Kt{8@f};BPTGmvpFAX@TcH2W(?OEUrIA&k^uakPo7>vlM>B zlXdpr8Yd~WxJDWylNAD6CvHHaz3JgLZIknA{MKKTSuAI!7&rQ@_PXgHnUx#Bt zZZXWU4DWBr9JjXll(+%|kqCjF6Re3FVx6$b+OolfKQwTC$Dj_C*XBV)f}0~8dy zBZyTf{zM+3m{lroFmyc(`B%9KlDCE{SB3Tr~B-_nC$)&hhSCk5ES++fe> z>(I~l@rptA)=M@BuU()R!H~gh@Bp|=;dx3D%59y1Z)7R_C-M18lZ@w3crSlA_%n7f zRv`9)XOZK?Em^KczOUS&1U+tbC!5c3LPCSR`^7iTO7f_rnv!wRDX~IvWL`pH^PDf` z>aN0D5(JYqy@WP#^6*x!v*uJ9iexVs^%+>$7O;K0Nl2|KVXPq0K^}X21K&h^jCarB zal)C1v)j||6hX-P-dL4gOUFEkdwv|6aDVm;;xRiF)iJD428m8{^ph= zz?*&p9=Xf9*aOg|=N7H^nt;pCCIxv{$q1vsJMR+aZ>g3NzKeqtQdgbzTwS+Lw%rMy z6wYpnE)deX#1Gzv>ElgdXsy(x%-AtDd06DIo6QxP@sncX`rs;55~f1^;+&;msSbJ8 zD~XQqWdCwG5;lEQ?aKFR%PI=7>Zl#_;7O8ys_?W%L#o)ZIalnp|_NPz#n%J?SYyEvzQY0 zJd}IRr1GGGL;4L-OUu1IeLXFy9~0o5f2Re{c_VLm1V^2Cd)zV8O2ueVub2vp7g$_t8z z!a~)fes@$&=Ni5d2_Sh7lvXYx`}WmoeF}J)V-tXed^WG2r^d7QZcruTc`T&stXFu> zhRrGd(OM5UC>`4S|CPk=w(-Y25>~v+wL902Eykt^$Qu@3Ww(5rUUrC{kDgnO+0}?Q z5m%y6%o8~+=zrB=9N|Aax&)1%ojIoFQOssEbdtc%JI1bTpN+eLx;8)EU=zhJVu>#| zjMza9IQb3EO!$0J~uc0GG?FI92) z5&NDPk{%(&q*^bcDu;+GMm>yJ=0jq#PJIWJweCi5{a%#0n(Z#ByA9|Fjc~4IT5PNn zPUP#OaqaNNZFEK05-)ejnke2C4KI=lHgTZtlL4A#rDx-sdO;+FF;l&Zx^d&XNmEVH z;Zb$p7G&W{q-W25I&Y-)OO`wnxjRyYVtU;?e@dYRf~DIs4Fyl@vGRMSoE{m~y_T}@ zdQ8P+g3`b8MSdx5>Qc2O!|qACNEL5;syCoRm>5i|>R)vk^3m7~d(cxg?n)1thkYQh zhKMmqhN2drfeLMoWTBtuHoKgZ(E?(yo1;djJ`eH@gFXn>rv})L@W7A7j*?w3qPh{hs1gfc{ zvW4+_ve!4B#A4fFXRT*HJo`h~6b(?W+ta?H?FVgOPZj=RH+b-6M!uG(r!w{YzV;;I z9YGwloa{YG7QX$E>cJC%`S%+389BdlKcKcqVa z7mkh_{KSJ?V}>I0nD$AGL6fF^$0r@k5_{=-3j7T=7Oq%zh1;MNi-0WF6;)6k84Wd= z@-O(@uDxQ*(fA}6HgA?>59n04VkP<_&!_M%(FvOU!0&{LV#ZIkLigTi?9LkT<5fbQ zM)Pzo&Nj;r%k|{yObmL*yEg4oZ=@?Ft78h)O@fnZ`2J;Xpl_QKx;`%cTK;|p&!lwm z?)x--BiF6GEMqxI4vM}&5<=4BalZct*kVZU8D!sBb+Z|^|Wx}6Y^)CnKr!7Gn18F1Ia2eJG zvS^%7$k0+q^0krqxOB}A8Z8?rL+aJ^o-y5*V*Q(f%7BA~u&`@yMe?58UQy5w z)gAhC9i!{TQU6Msi!D_TdV&N2Bbu{(P*d6;pSiHrr3u%vQ zMI55iJ4gSjrN2W9*6AR-TUzvS=^M-m1l3=R$^(H)rlL472eGodmGDSd=LvHgNNm%+ zQU5fn+=pG)byh)id)SGx4C@{L&Z6DqhHL!~0?*F5&5TQjKCh4vj>omUS3=;ZIJ zG0@H@7K{e>Mi}+-$X9t_K`Jr+&6wkLaShcy+*Ub6Jx9j@Zb-;Or44feOT*guwhU+zM92iyK|lOkVO~5Y z8I;54cBR&3@`9f$J#%?Ky^_q^59*b>d^zHla}PLRS@vmbGb#*IuuG_30p)a*pHi;6 z(pc1Vm-3+figejZWFl-v4{vqNmN5AVRpT;yr3zqJOEfDorKb$R1_@0Dr$mz?Bj#{i z%CLt9&ED@w-@)m9VQXV`g^Ufq9ma-bDMAmshK5U)Z|fYEkO2(&PfX2{R-# zXU(co13TWk-0kIBNJ_|6Ymivo3T^W6J+rZ7TO3GL7%7PCXswX#9yfON3c$xr8*lN~ zSh>K3zs0PP=B@#OdxM^zm+9d9P`c_UQch~FgL+hynh~k7j2>BA&Fbh^uC%y)m#=7u zSNq>@*$jmvca$tjQBA+<(p$lCFKZZu$Gor1{iwn$%B`L(^r&8sPORxs6;^bt1AKN#^52t)B9p5rqF8?@ z)zGx!ikX659BE@UGWJ5SIE{DPv4TqM6FRWx@k?Mwu5mkz$3n30kZLtX%@6bAEr8h) z{hVv(&UREp^d^VrYv8m+%Sp97rkJ>Gb z_CT5yBQqxg{*0XF6U=8s6Y&_!t;X2hbcPfG11YExB;k>0g+fP-J~ug+&`9J|+(8hf zO#d)n5ByV2RZ~c}KADcekTh=`eN^wLQOJ?jK35OBo26M;ZY5oZU?N17>5n95x|ZSt z%E)p^MPVLW-!qwk;r-Pd8TRB?D(%4QnpBORE$O%rx{av*D0hs+j3aK_w@^GRtgsL? z*)U}9s!1OcLvKquJvF_4XX~XdLv7H2Qg%?}52HjBGP0%ibsO7SV7Z7s+ugniRttDa zn|_N{bh^5jy}fsX#w)GLzMpWkiqh9NQ>@ncN>k?5JqJEz>=j?7mF zlj5Xdi=D)8&9}Xo8U19Xa;^2u{Jl8cICH_?YM7ljCQxYhEM%p~tdc2{^(erz!)a4)Gx)H3kbuh05)i&)P{3 zq+X;+r5HYWld>~9G8>(`XmT>C^0(&xqq5$3QFf4Z*@5Z8SWl=_l*vbGsnGK5%axEz zo>Q%2HtTtDeJaL&u;JGhvo0v=O>vaQQCwBCIczkXCXKOett2f~V-7WzRbcTlT4Z+} zbX0BsY;csPJa2lHjRK-Nj->vpk@bURXy+Wu^n;&dl);lMLKLk!TtgH(P(Ab9^s}sq zz9|C@v_8vH_~D?A1+L07P_{(2ZosYad)k-Wm9ul(T@5y0i+-hcVI6cn`iHkms~^X` zqC8ceC@qI}GKQ_AKNP|<_(N9vp;nc70WAK!8U=&GXujuJkmMPgE>V#7i%x}`$P05?A zsBV`qwVFC^JdLF^O3xs&^eOSMX1#{{hyXD{bk}AY)f>D zu~oyrS<0xgmaFy&hn`7>uzqRc4o6X8uC}-dq~A`JHtkb9B+ID{PLT!TCaN=C@A@B! zvf53$KbG`?2h<>O=pm*YhQhBLn!dtx7S{Zu$kuN0&|hMC=}YfncziR_|FoOZb5!6i1 zuKL7Wl6qqDm;BC?4X%%7X&0DIg)Nf0k=IN|MvcrK$@-zaL|ZmV9H7;IZ8Z&E9D`pyxi|U|La+G=SG-K)LEddSu^NUXXxS^ zyKi-PU1|83Q+t?*;#&IME+z3xRV$5Qq8Rji(zSjA-L#tq4p58ldYL4^3J`TwW?{=u zC<6e#jbp1Bx~?%|vk&!b0{}s~HERj`TE9Tf-@b0NYTPN7YaM_9KyE?Vlja^Cw}uB8 zAc#Qoz6d7M5&|ITZm=ORF{S7Vp-Tw{_|}iDR)dHH0Q5!x$qX~_W@fHP0H|WAHDymL z%!GCpUnN1Sy$KA8ClhL50KYheY_WX~Y5>3wRa>LoJkzGl9u5q!jRO>y>7M~v!(s!z zIoFhBUl`qh->iWFq74j_ZzA((nJEwesGdEJ1B4#S8UQ~rR3H++IT(P{bfm;{NmLgZ z@W&qrB!mYDlEbD{rJ4(a0R)?&#-g?a0Ra4gUel@Bj4MFZ*p$ znq-88d`V%Ce)Vpk3I@O*?F9$;O{3p^7<|>mhla%l0sdS=BK&j%2rkE$2MJZieZjzX z8T1T-1A?&Cv}?WwE=mPiDcBMUU;$er1q<*q00RIZ5dii>WC0hf1;Gkm=8IB+UN2P1 z6=nteG1L*l)c^pRg8%^gTc9MND1-n&aJM-~fgT{(_ho7TJHS`o4FG^8=ZMT9)dGP0 z2JPX{Twnm~VbUcCIjA1_06%C{U=cxD{+GUpJ-^O3!XUr^u+-y~9A(4+fDrN*HlPRm zs|RerRt%Id&DWd>>G@KNy(}0C03e07MEdHXp$4_@>k(wlmjb9?(@Fy&6&0iN%f#eg z!l7#Ee97krP4P{`0(6cHumGf@Dt+mP*%P1x1`tB{^)&`aa9=pn3XG&w2VbCw5jkIv zei@P;Ap>9;U|S&o_~`#B6Yz!jU-$pX)Qf!c1x5G<$oINf2;L>b^Bk_{|f$V`v0K-^gm_)e?k8DAOrqS z!T&@5e+#~L|BsISN!mX^$InoN5rt`7kbt1jz@e87o+kqJx!LsKMin+>SV#oFtFnbD zl#dWw5%PEyR(}ZaR8+q>R`&0p=Z9S5oA1UMRhzR7=@a{;U)E~~@D?0$NZK{V9T92Y zU^~RAPqA6@a%M>dogZH2kPwDQ!vZwuFV^ckmO8X2v$}fEVRbp9RtNjV)kE|=Zr7Q- z55hy;*2TNBxxBJv*p~KD;s-1BmmVhLclm#xW+Ys5Zt(AQl@+!e*YblNsds9(il7Lvv|hZ5%bQ|j zyV-8mRl4mS?cL3Ef}u~l16?;$CU_gyu~?A4hC9dGXlD3UUclGTzF7gtL5*>*(`#G| za|9QeJ>+&V+wg&)vkQ`tGpe=dR9LHRcsym|^Lpw}N0I+suFyKR)cKrzh+bP~M#SxK zu(N>HIvGbo(17StKp=6_`ENsGQ$gqF>Qvox zfH$cmwdGM{jt@K|DZmY~w1@%@Y&~o!Pey}XbvcHOJ2B;i>Jk*5wsv44%~70@7%UVY z1?=1U9>X3s+^{ykz5?8NR2Qe7)Wb!5NzPAXyKx0=`O+rI7($g45h(2kH zlO5Q-P9fu|gp} z_qrGn=a3h(`8NqPJ04t|;0N7#}Y<~P11L+1#ShgmxSDMnaQ1W+}Y<0Yh;<3`cE6>b|05aC{qZ5*A9wYA+>JFB{pZ(>l;75v1=D{E zm10g407QI?sgpnva;kOEp2(;0qaCL#n>tPBOa0@KWvsxHU<_aX4BRZ!%Mj9E4H;8D zSm`ig%7z5(jm0*HDW89P=OgJY=_}lxqeT~!C1GMn$g$?wbtaJv>xCv{AM@m15(!^x z7j!fIE_~;`oz?2)w&8WPOj|d3L?poF@zA?%9cO!FTIjBdFD4YiCfaukWDs$>z{CB+i-ex(pv#=7yi*A3#Wdij+M&&n&@H3+_ zuo_`Cl|WC05Z4+i&w=V85;)2evi!P4+TU%Mkv@8*mwpx7CIhW5C(pIN-%r1GIz255 zeHV92kce-ciJ8$GDV8l}v+I2PS)$upRz3Qs60O~~+_#d4_C4obPwC#Gqkd%*5A-?G zRFzxqu32?O*Kv{Ku`aBBo2G8#kg>b=NZsB{)5TMcAk$vWpgSyhg&*Ff4_TU znxqput|1})kfju3O%Kn`PB#1v`XRH^DRRZz+-q#?^Vapd{NHaYv;+~PdGKh?^@3ubOLs%V8DP~s(6%07rne%aT^)EDLM%!XT zYkSt9>$EvuVz0YXd>D@~Gb=sgcVf|>n$_>#rzm>vUrVwOQxA{W3Xp1#w;jhB&^5~T z?-S2ka$2SIcum#jN^LEA;YLbrrmfU%t%`nHwOZ>Lt^ANx-G{N_(~z zDxSzA3u0geh2zkw(gcOgicZhtLAJO1qr9&}*xu!|oxH&NQ6SmLUoNT}6p7b>7OlIi zED7ZjLz84FH@lM!pUuTie~|R(?9Bc4b?JdgmPqn<>AI&)yAG!J6=;l#1}A8BT_rmf zz50{dwA0q;FXAG-$uhl8XLYL$kNh0bWKq|32uF<2)7Dqb`+-Jw+vZ-PX5GQ&b1sr> z9)NNEg9Wo=HoFj4YDMqSFs=!^ETNYEb)lhk+@Cl?cM z?_X-|5qslULdNGSwdW^C{nuQtayu4%n#I49y_6apNQM8Ze8z_S z>>Q|NgxYU}Ti@80F4la{54&zAuNCubqve{a6q z(-B+x<(okQ(FxKz-)uYW{t*A%ZQzuwc>~XgKIPT-y!NQ;McgipKfc=|Z`=IgY;9pZ zTXz;_$sBLGqDZOA!|-JL<)ka{OtW^GcjfA^Km@1^kQGz z^*;1@Mv|G_^>(lSMSXVNrFP@v;|?jrJWq*AU`Z$2b3($7>%!XGLiKMX49c=+S_LH9On$=7sz2z2`gM|Nr0r{UJ$W3m)OH%Qt^2l`vXF zzd7K=)Y(%&vii-=)xZ80r8ao;y$82ne#1Wy;@yvM&<26oU+FDgTirDKL(HmIh>OTP zR5?w`5&L&nAAI|5R>ax6v$A&O20S>nG%p|&HIdND6d8}?ae&1-X_1eQK9ll~0UaR_ zJ>2YhsAP2HP8{F1D8r)7;zWO;E5}shtnZ29rpPSoAmCB}r`olHe7-;kmxmM)TQ=&M zLq$>ZrDE%#ws!B{xyzR)XJ?u_n|f)|u`B?xtp^WYIye9z8=svWFQsP2E(|Z9+po2k zZ@#y;wpJV;AGF(&qRh_Ez=4I*q@X%Z{s*z378k1d%~Yq!`rHeIY1f8#U`O^!u=>7#@kC_&YQWfrUU#<$dP@zt5gr zqDMdSJS@x2yUP$5!tYR6RX(A^(zQkL!bhLI^{qGi%lBXXP4a}h^k3&rpLp)mAEW+J zL2?jtws;}%pm>6VcJ_+la}MtWh|Q1Ut`QTu3i#qPkG=lVx8C{YTkzYH-MbxsZL9jn z|MK6Ee4LT^`~SnQFeF+yzqAXSND$`Fo)Uvz`KW!*rx3olf&KdWzyA-17wW~2KC|?} z$Ig84vG>0D*4owE@Z0y8q;Vp7KNfw2&1)_x`HU~l!xK7t2jBeHe?*_GedL#a#y_!i zC(M)zi_bst;I((wzk36IhaZ;(pPgKI=97KAEPu5B#9~8?!v!&N-CbsHS)8m?7UnK}>^Vh}`hy`viw)CmEN@r`HMX!XJpbgUe&j=K(^DlWjIKPy zrnYcg2Z`JOhrmG>MdNxzz8cEqpHR%O+`o$+`^Yo!CtwzXsteCt&KC1u`QtBz0K`52 z(DuU$4rp{U`}9Bj$?tsWf9p&WpDyHB3JLyg;=~MlqypQphkOwU61Zu{nCmP$J_~_J z32gDHM*$;NuiqWCi12Oh(%JdTXTS4DUm~#Jcqq&n!3Q}^qb+>k$3AiE8*g^@>ntaQ z$kaK^7#XG$p=K|ilT@X)yxycbTcUJ-?A-L_bJ(VoEU;Uljqa|`f6+oMC4iLc(?FjL zk{>+Z1`qM(r9LW&;Y^)ag-aaG${$6wqWk=R{*6DDf8=M`Xwt2&U^$otSxO)rmr1xs zRI;Xx8y)+`n{S@Ee3{g?F+rk4GMURJ0cD0nM5^hUe6U~dbvpB>7U278ir61m)ve8& zSKfw~RAy!-=jM!Lf6@=a;T)-CNU=cjU&%sB4mJt$ujH(Hf&QCr8&WvLkWSF@E#*Y! zt4C^%BMBh%zCDa6Y$Xja;_$7a9P(pwJv@R|%$ml-qev$S(K+2GT7#dRq(UztOtv$aK`!D!3Uhrqe*!f`_TM((5n?pZg{@)4 z46T^69kCBr)`GqUbym)^3;oc{nJ#V>QIh#zY z!q63bks%iFp)8@q8M^X*5+f%vKIb_ow}r0ffhhya#39ZU9U&wfY7X#g6u}@FUh&~E zPAYJEqsSgOe_&q00e$b~*KWQ3&gGAO@ch${vFRbq{v2@uk)L4@gCP{O-!q7B$X{8< zpTG$#k^e$5sE=U}aS>K} z^pWD5N5&A42bu01u@X2IxWJHewu;Q!{lr!P+&K7Ne>mBWt;&D!?%+MTo~U6?{wi$Rns$td}(~*)WwUoo+Q~c*{A1h{EQG+5`;G~ z`$mAIe|)1do#gU<)>k9ygu_oj@q0JiMVYmpZ&)CX)*OY=5$JwU=Ak17qYLplvY~AQ z^STaS0iY3neJlhUyCm{1LqU8eaYQPj8~%idAhwhQZhj?^wxLl;Js)|6S+1bp%|lFd zBL;(%=|Yht-?CTqhY^tV!8}ailN|)RQ3pu4f8(|~efUh3jD|$2qQDKGSF!1mhDp{m z$KDp+JQR)j^fyQp zHC70bfB>)GChGRZ%NIPl;DgDsG`8Z>(IIPP-gYbo_h}501jIM9;J{5Aho)VDp+W=! zf8nHS6oR9`g|`8m31QOUkXZs(`y<<-$mkm@)iGfU{gc>~`?)q077Yak_A#4g#3w}} z)m2OYR6%@PNfhHaNoYYq#ARF#H-Qf&45rkz10PLV{o1{%pAVqjCWS|q!cO(xB; z-f?of3JWJ^Z(qOdl5yuo<3KqvUmh<=f0M;|;qm#NDO4MlH5{_9;n+4%gKVKNUQ~NS zM1AbUD3YZDTxJ&|1$Q2z=>^+z6S~6WS046vR3d!!e5ITmv}<(-<84{OnZm= z>3o5rEP8ZEr$ix>bq8}jG^05+A)2NW&fh&$kmPt^IB!_sLK_Bibkzq3=}+Fpf1%B^ z7>LLLqeWh)f}6zR_#?sQMiObmx^%Fu@n@d%Nm(AUH-Vvt5Xn-Krc;R<|k?G{P5 zpIuZmmGva}dTR2B1&*cC8Gh5T+|-aS6jTOuyZ3^rPR`Udum3$Yk% zND)H}ZZjN>4x(?t9Q8aeC>!A*`t!5+K6ufjA&N5bF}55D6hbnKN4(xgfAytoGeLon zLg0%jijM`NAH~R0EG>epD{%!ke6b^!)wX z%LwUhGHSS+E0yxObS^Cw(n2AvBdoL5mQD{hdTv6K*EXBUOg5!+b#|I&k^%_ur3n)2 zk8vqYDE|2kcL*Qe;X^jf2T?ef{K{fO z92S*>aw7_6oBJ?C)2}>b69W>5ap+}=`CJ<5Ms`uq>qq9h#8y{eGZMsoDEOIlKr_j^ zL@|rmmWR@RpBqwlHikX{4`k7m1otVt1@*a?eEpi|v5qyF;+kzafAG#Gvf(3=DQ#zc zZ)#?2Yi0LiAAJ_iry&atHR>HP(LOYvJV@bT;jkRvAEU=t7jX=>I31RVaX4&Q@PbS{ z4!Lctj2n8ZgqX+&9Bds0>&hP{7#86C9ccL)=}ewIbIM=O*ax>z!^sCtf%`HJOC=$G zgb5!U%@K8G#8Trpv{-d1bD+T> zLV>IyvXVyrU-^PA8r3fFC3zvvxnc*vwNld&#B@#Jm$coZw zHq*JRk3CD}#Efz$uE z!Lclfd>V_FePZfs%B~=sB8(#Q+_0DMu*R2H+R#~qEWsa}+eu&OGjl%C7SpNI4oX=Z z>D&$@k$`;%e+-+62?874m~mR!X5`1|GI zOn0o0|4_-B+si|*p3$D|C>{!i%%IS>GZ2->wch?ue;$fC%puk)j)TBBm}SkF2aTE| zCjH{i{5TbnAX+^`3=qS3$NvDtS*g=nA@YX{`kxbJWBJriY@G)a=;EDvm@{}mhol2h zlE@Efy`Vup&|Cxr4f{%R6lp~1-GUgs@_bb%xru$jmya%V79Izw81We_F7QU7SS-9n zBY7?ke-mpcyq^hRL1+c!+zaZGykIYMgF-l@V6to5x?zysE7z4|nGK=idRYJ@&IRxXBILEiKW#|8wc&s6ypWNxL92bCm|qVBwynjC5Lv^0w;t(VH%7pW^oQp(GbHhflo9df*ADIv#uQ! zjIhUkoQ=aF$5Bkg%{0W}l+$4HDdwvqf8oI(PKt^792URM{h?ks*cx%z7QjF#ngbYS z!ubJ?VWvFHOd%8 z9-^EfnL@BW<0~+#veP|BRsm>o!{Jb2HUf0wNHj}{US>Gfl%c_o)^Gq@j6~C0e?38% z7|Wbpm=nc0GUMJM3lhlLz()60YF590;lcu)uTG1DVdd0y1k%P#&FvjJ4q8?i-eG2e zC?IX80R<6?-^bfx#D%f8}sriaC_}1TQiV_DLU$QB`rY2Q6HsbXZL=rA3s3 zRs-aVwvZyJ{az1#P9zOgQ&|eX(;h&a&Ta-e;8viMr$ouclA>&_Y{=53;a3a6`dk46&Is#7As8h}JO!mK!sR~p; z7l3B)wkYIfn4k2Am}i-9Ius?^1LEg-e#$9K@(1Z8zi5Dh1|X)%3Iq^-;vbKc1;cVA z#v{h9;@7IAyb)i>}0q>~P){{o$`0M8rr`a2I-;GdT+U!vO- z@HKp}S1p#ximW)ce*<46olcXR1Fo)V!MPrEy4V^>vN}F7&fKd#G>SlB+j%t2^9UbB zL5O$K_&tOXP>TUs2;VrG4B}rYadeiNA5PMXgQ6%#j6Q=;zKH(16Zr53A>W&ZH#Wnp zfXGr;G+@N6sNx9`W#jzqaKQ6|oOnQ6!XP%3t>CCFFGv+(f39~Q2aYIy(f|qE&@CJk z@ch7-0Z>%b!;y@Q8q(AH2{WW+8An7%+tYg`uw!E&87do542*)TmMFwj!B~hQ?n61O zxY*k7^$J45X1&qxYLmqoRTce2tU{J4Qwd<%-`IV|N~1DG)ktLFbREl<5}^VJiE6N1 zDdMQINR$TE|JYih4U`?cE}@sHWE;({jHtVYu`(h#-94vhu{qiU0Pq=>DC*?V##%! zey3X)E9;2_Y%rFGGTCfxcMn;X)7YPR@|p313aDs%eywe!=kid>{dg~hc$cBTZ>`~6 zTZ|7ke}vG@X+%~X;R^~e35BV8EX3BG;49#9i`d5%itgwR$PM+xjOTpeLIVH!W|Bf~^cLC?rBCf3CI=F|1*KxV5@*@%#)>2_`gm=>P~M zQdK1FX!A$Q_(u%*0u&7Ha~UC`sv=2rfEbr}IWQeG3Z&sEkW}_elrogXGbf&T>J*W` z+tdbYNLVCs5Y>n_Re=Mb$z~ncjblMPCMr&LX>!ehm&siBfFpf$ljkAZjZl2U!MG>zZ(DPXatNGcv5>PDnkZf$%v|i!{bK zX32mf!x8LQMZAjB2&~r9}Ws)3wgV+WnRN%tXbsF_8A5 zlTpwUe-4MLqnc_{i)D5x}xhuaRNSWhD29Ai9me~cc21B$R8Gnh1Sgmdx8`=DrI8;+0H zi<#ht)q9DQ1yD>M&-Ky1k?T&3(c5OQ~e`aiA ze}Wh*I=mtMXn{hADDn}hz@RzGpS=|+4Cxso7W0uB&cBAt$dDV2iX*oMA`hJMCJ_f^VBbQ_2Td^uxI!2epKrhXeCHeI zhBroQUhKs#CpQh%m7Kqn7*2EGliz!VoG;#8=QxGx?di^Yfe-Js< zwy`bYj3Ke5XFC|4pHM|0dV6ad_39pM%SI{*8@vBi95UFB6wBcgkpdSnsf)IQW76TU z<&BOQP$YlQK+vdsl;rBr5+R;Vp-%;3K8OBEki?^{??dSF*bW-?Ng zY$H?m;5KR24&bTd7a!LR1BjCC3f)#m*K}t%*x1=N8@1ep^V@5?+YgrKPM>b>@52q! zs#cLT7++YJoXit?>yZgjo;M;r5Q0XtNJ%@YPT>3w5$Ak}g^0R_0M4oWls;47*UdhuKm!d!+m%Am*cGB~e=iVPPgG$vMX%MZiwqhE=CY zssgw+MDW+?N+OjI_YcgC`**UXGEJ5deYWF}mLAV@3zZ7o2m9MwfB9l5mCY)mZilTi zY;p(Pz}QSbvaQOpvOVv*lbxDuZ1Qv;^OX@dcs-3mFYOXLbGn-BNjj{gDDjWk#N4b$iPB?+UEw-v9G3@5yQ-|@k+Hgdg zUr}W$4^iYAq(omwA{~`6V=VV%>zyB5|J|kbJIAKhBEuy}d&#e&1R81k}SXmOoerDTB7>1&0q#)=C>4Y@sbq1a8@L+FpegQVEVZTeAEu>Bpu8s;H zW*zLLf9K8^>2y-3DbYh`N&Nmp7)E@m#h8J$_BwypO9fS4;osw z2n#~Z2}|1bx?JCv(sqw+O2M* ze=eyipp^kgiVfB6k(N!$$%HsC$qXAAL%2$( z;CQ}pl(iiO#(w0qGyh3R9=+jNddv2(5G2$Y5hJsFxR`>t0Fl|gq8JRCi?u$-r>!x( zQ#c*HUlyb^hh-;@N^@bp6d9CWX%7Hvf5)L>blSzon=1s3w85$%>%>Ju%zhzc{hmz6 z7E>Dr(Xp(4uM1~hHIjr|DJreNcq~B)2xyy@su9i$n@B1lHQNq6;@bAa>2pK~qUpMk zg8K;GhjzAWu&E$(Sec#%1eBzx4OtSuKfyZE$4%suPF(*K_U)=M-`7sF6aMg#lgii> ze*_RRZzsKUES?-@hOBrmiDJ+|gqR?J{u)Th19iOYRR1<`#l(b6ZNbNbDAsL~_ze?5!k$-VaTE-V(8G|CiKCsF zn4h*lZp3tpjBqOmfhc8FzKD}+rW zY3S|tVEyjxcV2tz*4^6PfvaocnUjTcr?QHwj!#b)$0{3p?)~@fXBHo6*K4nT=iS}9 zE7Cmn?)qx8y4P(sw(sBB+uVS6BU&v<@d(xG(zy#{i_aEIaNn4)sInPN(^W~de{Gxr z>`KU%i&a?!1T<7pQ^c_HVB5aeVu;$3KVi=w8H2drp@9|VtuOt~RRPC>NGx;N;qV=B zzR#aa{%E#~ZGsF4I1unnV4b9k)1|eB zaDZ5}IUz1x5wb!Y+QNs1s4|^Ye+9o(NwQ40y1B7+|2}*S96bOTvv?ONcZ09m@Ad%T zj8vKdFu*}|Yopg}02j-b$KW`!`8=6%>DX|&A$Zq~EM3@WVfa zz@TRI!I9r1E!iTQ>lZ`{k?B3g@uph86EKd|ydkwPQUg4a^D$`HPMsNfe|)HW9Hx za&`fS_t z^h^ruT&gBQ)PNrBg`@PnUHWnwrc_SEO#AdcY&WbWqfQBOWmt8l$*@UtkYUYKWZloIP2J=ehjS z5&3?xO?lSx1Xl4~K2280&rnq)il zE)gYxSBtU9eX3;He@sU}3L-$e6j^dTrtkHqT*F6XlG672_VTr>=|bLdY`7USDUC8{ z1$G61s(!aab#N{f6}!8uEA9FLFyelvoiA4aJ>dp|s{s2d8Gb~)vy_kM<&m__~ZM7&642V?im*!@4d;M z_MObfzF7Es2lCh-um1Q^WoR5W&T}a@#LM4BQ3&Tmhyg`n3l`CKzo4FnIVcHw%|_B* zTp!|y93klKe+hJD2pyqOh-czs!gtR1iUXqvVfhq0_ph7|%N!0exh#C)T&V&S2C(bq z_uffnGJpt@tfb~<3<#(+5zq=K3_&M{vRseNi;^@=8+JRebhg)4Z+!U+`q)%ydT!_4 zw+8#$g}FsZYHVM7&93jO+5BL49X4|%oy(lK@WN03fBbuIzJC4XmlDaJlr`f0H!(j4 zK}3Cb2RXzr3swc(_Q0?JwkFGDzMPX!u0Gs=^+0*Alr0wbYi(;Vgg|6(V@=i6Zo9K_ zUwPr<&!kfVo#`zqwkRLE`@n!eMej72gu({?)6ETUQcKebgaC2Bow?gr%+{)vEg| zH*e^Mt{F+-O_nu;0jkxaosB&FR4E(7RJNDMJrVk!X=PZ^rb=Ap5xEm1v3Hcf&` z)(#i~lj~qj6XCS<`qr@9EsvMsfAJe{y}fngOly30uDY?#LIw}E8*^x+Q(O1$z*mCfOcUcE zq19##HUE)=n*Nlx+>Gv|;vhmsg{MJ|SXD`KcKjcK+0-+#LFf6wdsMAWQ% ztjtvyu_q6T_XHOh2;MO+e0KhK50nbu5c+=aMiE02f}B{0IAJ{HOFK~jxEM#m=omsp zPU)d;HxVH``X8B9M|5qm$f8d9n^^LJ4F_};g4w{*4u9#CSn}CU`is5v^m?Qv8 zLz9W(Hh=Y&*>AVu3`mOV6bs2@5)N|E?R8u2Ub_h=glGjwolYmd_&S*qnk$!PCNuD! zodMDm0U|_SPcI69IBRRfLtRVgu=gYr#jLPh72f!pzpj1v>&c0E*mbPg`F~<%0uTw#{N(I>Dwn@~~puI2`NCiNJzOkaK}; zB;)d9#E`^|v?v6{?tbO-aLTOuUgPey`DZ>3 zs|zp#xLz`yZZ{5AZ{MuG`v#no^og_SLP;H;ghfkkM4RTG9VcHbAFMyHTL+X`Kz|J7 zz4-_KN4tIi*f(+FL?V$GE9WN0i+j6uMJ|-{GD}D?17hU(x3#VbOdDY&2#m1G9bIOE z8!Rv}NTyg09$H>0r?7y4xbCPV$sw!02!|O5!41kxn`uqezab?yEL!ptRS8maBcBLZ zbI|hEZ{LQiKp3m0C5%*VYz$rpXn!^6wBVxjyX|4WmoSp)T!H!Qz>{{@mEPi+GU1^f z5J`ys;E>k0+S{uS_SRNw+Z);9SaGbPCX$k(q_UZAt9kpCuX=<2=@)(wj%R;!W9NIX zkpNOwNJ<~$L8trh-lihWzWVa(jazTadP33@v`|ROWB`;CGjn5;V>hmR7k{7;B0)I+ zaKHeeGI0g;*f1WeKXls7u_r!iTjrUi3f<=-&uGlIBVj=hzfX`DN=Zg$1@di8JoH3~ zEgTAdML~SOD3rY`=V=uiZGmIsNk+P2j(uA((#)fnRx_M{5@iPv=1pCWEI9_60N<=J zXy3zO#201Fk;or5uTkJ_i<36y8h`4j$B8YtfP6&V8uLv)G9wuSEap%Fn`Ew7f)D66 zn}x9o#1c-w)4Ki6yPFU8p8WyWc>(TY2*DsuOy_bFrA4?8?%m&=o11`Dfr*))G2GiQ z%2TEBaoB!kRW{O@rAHro_myu~H&%dTO)i|wja5!vxKz&RG#MCDG|1Q9;N`Gz!O(sbtI7dlC8k!K3;cSZFU84=3(_7ge%%7OjHBr;p zymvNAQj~-AF!fnsP2J2uJ#e<6sX)J`VfbC&dv)*Tn{QS(*Y<8-cY3Yl#9XE_*{to# zvgTOB=Kh{L=n~swRjaMs-tDysZ%rfT2B^LN@-T3bA^6j?^ z<<7vYb%D4R1HHgu{kt>WHqY0 z7`XtH&04jTCvHNlw|`VVl(=v{DVTWwNkcJ(u-qu^T6r0_FnrNtJP4`8930f={ajS z_V%E!s@f}m_-{^r@I?T)=IY(d%qe7=m1my@dPO$X6DK=EG+B`+f8s~iHueVHPBNFv z7sv7`GI*6Kl7Ge~r>=kQw;y}q4=)Fgl- zLzBX#NgFNwO5(s2TC`zyd%J$;dsiO5^&LPYKoidzctB=p2a}{~cBkp~TS_XY6>@H` z3t!6Zk$;+6zW9Aq#>)f zZ<*b`XE~W-i6p9IB~vOXifT$yzt@2%x4C?sCV%4`*i=%6(CzzfAAw9?JT9|7n%;^h zo?Bv29$8It@e*swa|4iL z{wS(_{(-@zF)dqKebye*=yyf;gcDHr?;qC0=MR(8xn5aDc;<+cEnO{7!v$0-l z4sscz+e7)Rv~+5+Z;rF>mhQk?U%qQw7JpDJL?y6q{nh9H*>C-`-yZbgFfKj+!o^Ex zzwrBixcknl`7@6}a8#a{dgcdyNY!tI=<_A&hO+s;h6j?3n{C zUxrmq#3GX9^cnIC(y;<^scl!-9BJugs=r7xQD|<4-)bv+@xB%}6H;{z8*gtxmb~2l_27`XP34hVLZJH!r z?hhfB?`-U zc7qW0!pHeEIm5fK@fgQCcz=QnI@e$r`dc9sQy9dO{V3Wt;;lA^%YQ*T8|K?8h4}nB zuKyg1(P6}MSj}2(;mm1OQ(>LJmI(X^KA_ib{@tJZ)W<*d{I_5J?%QAZf4dKFn~hx{ zLG}6`vMpFb)VBqRGFhKXAN}E9{zpGiObP2%VebGXGnsb%px2V&9Dh|MDN`&b4NX^s z{W`FR<*kSJ>znKAx8H-?9Tq`*<-MEt`v3TU{QHfLu(j*`&F8;Ze|SeyRja-SADk)OPGf)10*ImADv(-rCi|Kq(1>OWJStLqG1plcC$u=QYv>H_+ zm$$5Jv9!JN0N9z+Z-2w`CM%pc4Js57i0K#b8UQ#rOa0B|)}6PvQ~Bk5@#J$a8mY|k z4Hs6UIUKgDJN>VGmRR#F#6IDWI&1q6pM&;rQTG(@`*V9&@cUg|dL)2Eg!oA65BpjG1M zc;gsC@ji%r8i{w^3#WS=Z~KFNuN8dAT8DLs(psB$l$l8+IFf`&&n@x$gtd|~y@tzNtR z&6jU{<};Um>ZhJ+>}+3OU&fY2JfspSV|)fyY-(c0vu)K#LLg9{o-L9xpfEoUza{fb zyp2-K%DOZ>w0ToW2OR#h};mhNcUrWbH0s2f4DgMd$F6TSv_XefC6D#ZFkU7k{S4`rzPOXW!)%E&zb$6UL1$zINaZ)H;P!e`1Fha;8%X) zQ?re}@ZPdJxo{Fr5rXfls^zJfd}-{=nMy(v-nz184}0c-NN|BjlC+d->xpD>d|c5I z7oIBDtGjTq0IFa!0B#5ocVllGt{tIR{eM9^pR4cf8p)KRX}wkhs9o!zmM@oE`!(Xw zu)76!SgKg=9aPVr%7jBbj|$vk@!+wc;-Qr+i7^v}`1nDA8yy%a91?FcChR4ef`$7?`ig)(L>xNt|%(s`(6Sci6>^6yn0c`)u*IrUoy<4xn z@#lYF_W$lL{Nl4ueezTHzV>;CB!7D4?5T?vKK!CY4c&D;(b%sZY;VHeD+*7AU(Zkk z+Z=2z-|y{h4)!+SRn>?0OEU|$H3Sj|kmQl&D!S$%Gk-cYwNPKa`7eI%zqFbMun1Gr zC-sS0Ba=-SN!Z4R{Vwp4ZoAp4u%d7=+-0M zF%Y8W%fR3msAb2e;I-DUU#Lu6cA}YNcB@$~7pb;Oo}DC~5CAUyt}fs@pdoO;-SxF>p_oXevwx*RDxE9j6gae8 zv8?DCyo3}uYdYfP2DyFzok9#iQGvI(e$Pu}*rY4tChK2?t*; z2%SEieT_qHK&(lVYXI4xfVf20uYsFkHrr8|3D#-SKKGMhpa_^JEt z4Rq8!;$~lCd^B1yh=1ZI68j^gx#;P*I4*Kn_q!Jn<|m$d9%o(0I=_&Jk0opIIdS2v zQ$JDlzoGwonL3P5d8NK^w-`;R`UD!*=zO;yw8XA zhrf^pz!DaflkZrQLJZ~O(8IMT^3sH8)FAI+AJzdxF|zIwVt;e(qq&4iB4HlX9^QKZ z(4fe$%m>JEAW~>_o3H==Z_O_K&XbRqF8%1w9_(yo^2Ku>cqW<4rc$Yc8WBLlS~JpV zXJ|RWWCQjK;HJ5J9hN98av&i6&HH32nuD1OkL}d9hzYNvk*c4pkk1;MYTbV~QLF%Q z)6!Yk=g&X+41a`s#Pt+5^lk?tqh6!lZ8dU*VltEKwOe{JsYnWJ`{l75d=`W%DwP7+ zI&l*m)T>UnDa*8XchGCyzt-PcMz#$Y1cXjWXT4!x&y`Cj&Wz8_1C?-W6Ob^G&ZII~ zh&17S%)w&&pymwwKoc^#f~1TAmSl28d-0Olr~*qu)PKoTFO>EC7(irpY90sOa=0^Ng<7Ez!fAmv!V`5<-!eoFh-5zr;FbW>^UxtZCenUkj#BKX%K-i43e-(0f+ z^|Hmx)Iy;$4u>@Cb@P?6;@IT$(is4jiSZO$z|#ve^;!cy^yKNeOJ`_}GRP7rk}zH( zg8x0EG=H>Ev(aow^3p<4mxXq1zrMTEZq(Rf7<4+oQd8M1;GlfsWKYS!$I%YmJ|gpq z1W8ee&n(6hbMt_Yu#rHhUL3CgvC?z{?lQwj!qL074M1kM4q#OSl^mZv0c@_`7Q(sl zV%+bL=T>51y&st32yDiW7`GeaXQYV7;6z}p!GD{Ygo`}d$D>h67;){?Jb5GOA!@AT ziBaH!g2tEk3*sV6DdgeMmNQ(m;i^V_e+)WScM(N`zS~)V2nccF_)p_sXTjl%;yb@2 zz4Tf6i(RC@j?M@{SMeV?FZ`kX;mCj?_zHh8d@lTUua@DA4Mbxv#GxLdHo?g z0DtuAg~ZCF)ZKAX0w?c`5`l3WKk={xgbBD15=Yov%sDHbzzP8iPy?Q{vHWoD##J?$ z%~#6sUUtV+5(ct|U;JPG$=Lt(?|$)DK3!`PAtD(=V8Uv}ux1iT19tez?EJ><_jann z!bEg>Glc>&hs4B^B;vAY)T=wCh>e-`+Gk%}jZ`UmgRP%N9$-TU$2T_(%Lan8 zaPE;|x6^6V0rB&daR|WSua94z^nW}4hr+~|G&5078s&Q{Xul~=6^YF>ggYut!2rGJ z^x(pwn^)d~(74}j*EW{&W8?39>#Js`Wn_y0vbISmVXs*q_Hv!Z0g+I+PLf_DEtMR! z4Z^&N082o$zokSnHRyI~+ne{^dbM)$3~6Ho7Hm6(+4=SXu^d>tbpz-s@NVFSS|)!F zyTbUw38udnc^8Gyk4y+1B6;g7zwtl_JUp%(H-StX|Ml&FA6yIeN#L&~n3Of@lbNp+1uhB^CJG89KH#C-Ulxrk1kQ5{m1d z=okJvx(x62S>-Q2DPMcTJHsIb%Q1gpUVo3VPiW&UFk<#3@SWHqiaU;y`!bUqRCl`TcN4`4qMy|C z#@(yHL@FoGZ@>2C-}|-y`k(ynzfBn=;nQe)30<;mqT5OssrI1O-Pr=Zv$cQg%}+!= z4zRB1aS(G!C7D&zIa(NY2hDxJM26g2rU-mWQnhZgfnCe9OafS*gRJ4od)Fa4GY4Hw zpM`&QtfAGYI_)NG;Khl_ZleydkK@?2t@T!Y|B=VeFD;EV#*5|Yxz53X>sX|Zx-_-} zTYaZ#j7=JuJS_EGxk950;#Yr@FINoUS)Kz+4&qG+ZHnU)dP37=fMXzn{ZuYbbL0a6 z-4#sZ@jYo z&Z`~-!fFCoWM%0>B9)q5I(y>G>4Z)yftrl>>Ta{P4}tEW-;;@#3n71QxqQ*GOjyQa zGqZ3{tExJ)bk@*SU6=YpZ)5r1J8y4NzZXSICTFH|sw%WP!gs&%jg_fsMOCl8@{NTv z7iQ0%J9(mP*}~l$_pf~QFS{G}Mc}ixRoi%Iwhr3&uP4T)lye`j%|00<1DM^cky(OH zqFp5cY;kH%RW;nK16qGgo>)Z0($6qE^*i5wC>u!v#Et_{YeUrBY7-v`+Ft7oyAD;l zLx^p)YO^O#J8n2}_HQR`7mt17=%iC#-^l@x#G4(D%sS?0N`z?@jAPA;+*k@a&w-5& z^?1)II?FDM3XlG3!8jaV)x~&LV3Zz~?YKPmu?*Jrz-uL`2r)}4oAVq8?hm`&B-)aFYSk_?S?8S0kbsXI4 zjt^+KG(T6^-Rqw^cQ%)isc#gy3WFgA%qnDsXFj-Cnw61(I z(*`v@#ms*rzm!)?xv5qcD2}BYX&{(HKtRp%iC#<)n$^8@K9|dAfQAWOux%0O-of5> zZD+Gtt>#L_7+TcYr>>iX)dzyDjk-E~Db7*iPT zZzH;4KT=`l zg!i9HaR@2mwsL|Hb>ni5%4|TO82p4sVTOk@Awa8mA2!!iOe4PIE%#7Bi$YC9C@U92 zsXBiOt9b9rurL>ChERngBXcf)gz+b&YlLdKj|QJI()c0-6IgN7w~P?qP{Vf)!mke} zR^fqH2lKm5`o3K{tsP8C?HwmQBFKtI$|L=lg6~2Z>FLqYXvOhaaYX6Ptea$FYcvMI z8tJPb)$uNo6d^BJsFW`}z5n*hU-}*C)Wv_tU==~YM2rL!wOy-P{SH8n({JAR=9gE0 z@W~TX!tedT+ne`pA8f4X`4Z_>p|vnltxqIXBZZM~(~Ib&M)(EDNMtJgj_et-o)lTf znJhblF5uwS@?D4?;8P&7g5BTlbwv+BJk@J8hrM2p#8b6S{Xh~vT$!wp=)=PaLn?pe zq(VV3w6ohMPGwWd&_qMi?zdZmPTMgpSUhP%FpQ)u%JA~}le4<6lT3h%S*sGf1I=zI z_E5}~O3i~>wpg4jtE>?xol?>UU@pX2#EJ{}rfp;Ri2h&*j04tKzC4Cd8VKpxlSU@> zckbW3MLNtUrY0s!rMx&ag+|MRm#BZLsH=qS0(1=feVTG2#Y*PPmrkdF;x*t54+h2Y zaiU5ku2`aNyAN+%-F)}WM0v^vqO@`gn5olg0PX-eop|!a|NhtiX(}b$Uqvtd$)DVL z`;A_!K{AG9cB4#FND^`_P0ztbLTUx=20#)-Z~#&yz}(xQ_R^$Y3d=ywWUPPTVA$9n zv|1-FJc=9}E>rRJrF16WZq_t4;n=3CX)avfVGo{c17-uDQn8kzCdw02`7E(f^hd%R zwWwt=Hn`WfBo+JtpM3TzHcXHcd;w8tKN$_vIS#DmLr z34VU5clvbk%?}%Ee`cQ-;yw*L#9$oFR*B+1gm9ewj+TwN@gFgZXTN_n$FW5^ab8wc zxL1L{WM&t!W0BvU3vondau(vKy(?d@UHguf%_HLOCTqFU@L(5U4xWtc6hs`q`PqN2 z=Zd|Z6+KrbrL$aFQdDa0NpqGMv1ArgACsBU5Ia~yfHR;Kxf5r5J8Ncb%NU=PH4VO= z*{A}95Ib?8X7otBVIO}U6iX9;T;2LXeQTq3_Z_F->8##nvW7vU24RROtJ#^8XP0Yx5@gtz^=EJRCr$N7e9_X_r1Cx^zbY2Y6 zg<62#S?oCNPEn^*Ks8Amx=0}^9yA=faMo-KFW^I2g@GFZ)OK6-eya&^kVs``md;3I0#FjZE1)S2YKT}AXv@~UyX2qX ztF@D=o@gJ`zWdd`+8l?CrYUZLvj<%t2~$p;z6t+6U~u z=`|aGvPNkpydxB;)tO-t-wb$s(p`*{6@g^~cL4uN{e$oo*S+~avOmOmIgkf`P`e4g`8WP= zTR(Ztn~ntc{3rUY+T^t#HdY}Xe5w5e`}kM;bH7@A^M}&+Ki4{skBO-d<*=eB#p;0K zp_d3p4ETSF7#7^Yq_I_&34*u~^dMQ);C`i=CY8<{M5UAGR3qJ9y*)hGgC7K0=``<1 zil!GUE~zS-YAV~^xHmA8>6uf>e3=j^xJ}{BT&!n`q(&B8X+T6JkuuwL!mVie$?3O- z2joF4_im&lcI9f;E!)m?wvUT@xi*KF(qAllvL;9!T0NC)_H zNyfQ${k6?k|LW@br?V5&Pkr)7N|o{DTi4BAx7%#M%{T0JYY%UiPo1qy%~jVPY>_BT zc3d}SnyzI+cm+TA8+CX(>7MI#Ng^NN{mnD^%J|sq0)RCsgCBNcYiR6_3btOwVxHfp=@!u5N%6NW*&VOQ@rAG`}!Dp{J<(>b`J zz#9Sa6X|^U%w^3miW8H6{=ffAr{7LbF35kn0Z>#jLX3B@h@N3r3v(J52zW3wmcYnwDz0VGQ`hi;sBdo7j7rts=2&ED5$Ff}xEdT`p zAD4Ujkg*1TzS5s#;0Tf6Rde$3#O{BD+}U;0QJeH=lK`h$i1$MYk;R~|(>q#r7jG12 zfaS0ZE>$gfaC0SK6Ya4!Li6P^VCXEhI;VISBKtSf=2y3-Id!a9MV!*ZxUZz6vIKn6jj z-y~`cMO71N%rdBMc8zpUE66M99BFtQbg%@kN@~Ob72d}JT&rDwwQHh?kk7HyuYd|Ol?RL6YB#LL(1HMCZFHUD~YgpU1;0c4Smd=em`W$@6*2euos|KK) z9~;k?Dn=$vs)5~ZV|NSSth0ad0KSxxN~bE*^+wg+UNH}L2Yc&4xJ32ii;Ghb>aA_` zUi+*6uz&wO;57g!Z~zd>!Nvez4L})qBAl;u;fKqm9IU$Cor9aNf4j9$vTx>~)7yOL z*(RJ2v$?OQ3&5E2bEoyBVGV|Gl5n zvH9&+z5=HXSaVjkzf#q-ieqW6Fh&Cs`h<2xrrp0A7&*6YlnC2Ena_-;9k!_UyUoM~D!i)QcpaD;p<3nuA{u7- z4!{Q_EI;o%c7_>+278Zhkj#<99vFHXD1i(M*4mx(QV`)I`#!-?lc* z0emUD|AL}uZ@>J~)|IalV3Md|0Y-WzN3;={0>s5uySDkx>#psbed1||1n+(Ct>)V8 z)c8C($*v2h$ZAyOWI8i*3bq6-ou5B<5x`~b&U;!a2UIAN%YW}%FI&U@V;2%%Nv7>C zKzh1e-@kwLt^WwoA5pPFP^`!hhclI|2WSPyEGw0n`E0(}s@KT5))KTgKv9XF9bKL`>9 zt$X23iH-`&#K@2jvkVvVy(SYLWKCp^hB=$7HZ7iPt>GW>ewev*#{e-d?^9qyu|0Nmr5jV-oIZ zSPy2aiY!~tmq{CnB*8n6EuD8vtFyZaA1{AtK*S7kRb7ivA>;usgU=$%!?8sL7FAIf zilRsdSTV0;MJ1iO34;ivnVkS(i>jJT!B+shvpRKHQH;*On^TWbUrY_3(rwn^%yu`I zA?l${jW#?@N@dh!Rw1k~NnWK$!+uw!{XV28x!VE?MvzoeNV$!SP4q|@MQWF_md$?y zbA)>oz!do4TBp_6SOJ{s?W{P19y>zWNCLQPnIbS&TC(W$fsWPpwy%Dt+o;){X7m0v zI$@irzU^+EX=_vCa|-n=gu~cfT~20l#6>!lhU011Yx@uHt zcG_P;9baj%=8u~dG3Tc@N?6Du_vP$J4Ekoph<9*|%!?rw7UFYauz)d+t*Cz>zk?7O z&6qGxyMUGw={!k$$EVKF@ukPx3gYnPemfzX;6S5G969R6tg`U?ST$fa8`Sg5j*NAN zRY)I>Jx+a&dq@{#l7o-ASw(}Lg=p41r$vujaFM@$I7#|m|Ihl<_pJiog7ZRhV^Zxc zY4!V7Q8+yOIl$R?c<4L!jQD?5N7ogPQmxS{A)z*sWOdt4zY7GXU)_YemUOPM$P1u! z{)}p*iC8wpEx(B4SWd5FwrUXm zz@EV1m{$ z5t&OYDG0fw_a&G;2lP$Js%E#XWpW;EvZ0>Da$uuNUJieSZv@zp9Gg^O<@ZQN2_i3` zFaT{NqlbVzCdtq$%QAq+jE%ReyRaaM`$0mbM2w_?$hUx%n#$?9yff$ua;S?G+`+Vnj4$+f@(ToJt8S{xODd3+CxBozGnvs7t`#rcr)KrEj=4jyw z{&OX1P~9LMPGp;L$RZu~0g-dXawbb%RSB`fA&pQKF-(CIQ!qI)RuRJ))O5Hj!c5!% zte+D-a_sCdSm1b5TQIhi&Cd0kSi)d4@SkFR&LWQHGB68sfmT<=nDZQ6XI^OH9z6M2 z9TrABT*A&F`nrE79RA?LXh1)YHSjw$DuOqHYlik0M@IH> zDoy~)?sa7aZfm=mU;_SICL4z1H5!jgX=rjSHJAK)c+6Fz^iztvv7 z3kwN&ke)5e38S~W2CJ^Wy^^fVBnlOY4z`0MaQcJZ-ny19KzJoEx6NQfsNT6+-*^CM zNK~VuM}(uU3%3blL!M z#!LWw7%6`}m2oW-z9ZFt(Njl@45DF>^s|v7uIgHnw3tywA+m9}9?2Yg5R_q*&g5%b zYlHnwqcG+hkg`AF{OC!V@s&LD|0nKEV=c?B^RTn`Ip>aVsH#_Uv3g>6ligyI6q_O? znW97qwyX$|EGd61Ku!$DvZF*mV#HQ#L2&{HNsNCOh-^SH^24wN{jdQgF&)dYY|Yd_ ziA{=PH`&eZ>aMP?uKCp)?z{6D_RgC2aL&E2sz^~zvDA9+)qQt3XYaMw`qsC;Zvpws zaOVPqEh@e+!NiI<%ZBGJ!^5cO(1BnCS4M{5aF#~(PMv{3Fh96c9PGoLMImVjG5E++ zII(}!M=l%0ZumvS0TU$h_XZpHr&rJ-a5jPD4nop}r=NTBn?3}Y(Yse(D~}Fm^Dz|K zRW&2A8YVwt|E`>)Z5n(`j4a(gT)KUvwsvU-1>-ojh9Lo}ilf~-C@zLf3sMb+xJ(-O z)|=~@dU146P7b!7c&=P5U~P0aPt?^CmQ8;Lj`pYH4@)-co=`* zns4vE`D5MRhcEu``A3v%DM$mPpD+CcOINCRPWbnJ+HN^DlGt zsYGf@^vi*x+}Vl}atRfyso_0L@7;jMV`V$og7*($h@N2+*%c5t3M~3`H#2{=F#WjO zKwlK7ilv;dQ;icsd^sog@9Itu5{>(}->r)|WI8?UGuVU`j<8aw5SGI7woLHNYl=P_ zG=Wh;h=FIuzdfifbCPDL349Ip1$^GlV6%cm4*SY_hTX0{7jliNva0SB_$$H7MYpR3)CH$buDur$JkjiXK-VH%iDp$Wl3SKs0XV zIiT;c9nSF?mW^etqQ-w=oUr`+t-l|JpKbT&XW#bovyUf9sLQ^u|5f!xq0~+g+XMA0F!hT zsqEU^u4X892RCXCHI7Ysr_RCQj4uR#P2~ryFbzqtwh~Trjo~L%J$9IydPHmRhph4qig_R(@x9OOzoZ-zckM7$;i~B9h;Z1foPx2ToY!G?_b>h8k zT*6tIDZ$|hPc?rtIOV=wlyzCnClEUzfeLHLNf6MQhATiY2gJU-M-?M0uBJiKKPN46&eiaP@~oFzWlkvt6zbz3-{>U^Dk~} zoy_tKCj{_!yMO&BKjlmPoz3Jg{n&>Ri*sIo^C$k{oj-s6y?QZSjP}I;OQ-s1AI=hb z7e$uzW!Qj@qP)L}=8q^YR^s(VQVU)#NTP8_duw| z84|lVF@S$tkdia2FDnqHM99qYu!KfI?FzYTxI9qqLgU=K>(G%XRV)qciWb&Vue^Av zbuN{HJvkU&xoSY(9%W?SJQ=?D4fU-rZ@$-q)=Yf8Tc4bd7d+M)g`_~9GSk$?EHHwz}Cjo8~(S+pFgLMyhwlX9~YOdl&2@A%QXi)=-*D?_eBgk zaqaAmjjAD8^IzWjK7kJD&p$tS4obf-%+5(#*Wi4Zzj@=67qiK@%#ymP?`-`Trf#V5 zB<<1YSh6|7`$ak0HXf{r)&O^SG0(c)dOqhDfJ?cYOio{X?C{ogvs@-QCdIskP|UN} zrzC$1g;@}SLBavq33EsyGz2oT4HC(;P+lp`87Y=>P?b2i#1VYawiCjZ_%TB|1*g64 zusu3#m0~`sX5-~}A178I5cK-6EpX5TUmf!WgBVuY-9FjfIwA5DMA{;3E}QS(gg2jW zY@$5^)|+UVrwOT1HM(obtONYFL=Qmt81R2zQ?Ur(FdYndwNZ0zMyR>#WKd|cPQfH4 zKs|xW!s9hi(9sI3mdJX=h^DotN~5?@jg_XRzK2muqF2_q6?lEuv^baZYCc#m7zjK0O?XF(Io5Ab`0tJTr!U}cULcunzIXe?Q{Oa%bEsIBG~00I(&e{b`6CD` zq-cs=;py#n;QB+J3yWc}d2+J9_wr{yyPQv1bFM0jbwmbQjc}LutF`~8dJ{>cW+>S+PS&oU@Lt9 zSR3_>aHyJ_kqCUi$(A7{y}z|H8|}>rIYy24EKiA;!(lNob%<6}_$clWyhdjTIcW z@DX1@S3gvtp?r!RcZ%f*K5qrFDa#AO;BqK+`$I$GpYSWhx~v(VW9eH0yl@@`3P4*> zy0^s8pOFn$T@+X&FBcH;ZCLR&Yab^W86{xeStXrbQeb_Gn?dQt(cXXZaBm6O&~R(( z@_V7;hIfTi0gu1$@ZRmot*h{{A&x`-_`y$LF?ee~IT|JNnf>N(3Vju*v`@bG1<0PV z&VV$P3~g}L**J;8rITSggQI`Cv$1V@19(^S{d=MLjRmhp0*W#B-+c?)s7D7I=O3Go z_910^`FDPGeB&y_68L|-^Lsb8pL!mi6C(AgbLa0|d+Wv}{P{SC+-Fr}G| zIX2Pi;l!lm1;>A>vZlO)AW`{jXgy=+kQ`CbRQI+|m$M_-@aTiw>9RC4X+~Q5yB;8c|<;-h|}#7hJ}CO2D3=i8=fuT(^1w57h!pH zz!#8@1nl>r(0Z5sbD+G{Jsh2ZD*>MoE-B6iRCPKWY@B@$25ZR3u-HV>0OWm0I_nOp z(9X|4_u`8md;ja#lArtOpSk$V3-5mU^E;0{{q%=Fwz+-s+~rG~8(C*_+Z>cwxm%Qw z#-YVN&gFkVDCzWvmLj;p5R4Zbz8&nGgESW2BRqe#nAX&&Mdm6AB135mKiR$cE;bzZ z??RZy0qMz6T`dQv&hEeYGF-InoikT{?^h45eg!|it?3le(K;p@HH<;jL9D5@U-L8^ zg@Mc&Rnt_da}zX}$$E(uXTGSDRQ5PTuT(paFWP_Kp-69R#=EX9;S~Jxl3*hj*@)00EfF~kp;WB#&E(Z$f*DG=r1t+(a(h@MI4EnL{OG6h zUhnna{v}#BCFFIMDl!x`g%FG+Y}{#35E*}{WU(RGhX`n~HmoTPl+ze8!O87+2B*(; zk>7+_0Af85QHI;_(va!Y^J!-rb2_*Zv)x-9b|F%CHcsH?S7;Gd+9hfs*h5dnaNaNrZxf+z6seVc^x1dnfg(zOmk6?ev zRt)*VM<|wq)8|pod2T=RZ~iS@@T0wZP(I&!LJx@uU>yn6Vs&-U^qYGdxsSq^7oXgSuR~8JBzAdZj$NJ z+bknMscFy$^M^v@?%17_cQ&>3-2T)mUhkAOE8`8awDuZXuCth`U}Vqy2F>qK!iLsf zYMC3sk?g!yG76`BpppM#V6q{s$h%UKX<8p*5;t?kReAiIbx8HcV$ug{D zDoUZrr@^FYha&5)@t{Z{;{X--F%1QW(DOZmf`R# z!_A{x*J*MS8O0d&tQ~)zxtJ4=6wU)U|InLyb4OFHjc1$AWIe(iB;gI*nR%B!xF+UT zl?dM?N-@NjMY|Rabyr)NMZB48B;lZ$N?}=_k|*vxZiUqQEEiaof~LH*PiwfjPIO^u zoJJ;P@xF~l9eu;ni)5*wLX#LT{7j!niPcTwKoZ61lGj)bA5ecqlBf+;3Z+#u$an}X z4ge}qjo)gboQ(&D7kTJ|LmKF+yg0tuwYIhDfg#hzZ{e7H4fkYK%t=xMmQlf=JE~~* zh8w3&AKtpoA%F>U^kn$|;AX>4D3yZr2dY1K1~{&-{oyq44Z0`Kl#3~^KSR1m5CIK! z%`+UV&CM9+{!@SAF|cY!hGWc*}3)*R(?s^$+?wNFK6@R z3`-m2Tg=gC*cIhWmrk6ikOGFA3KGds{1eK$JlezE+UY@>Mu&ev&Gdb^&Um_0CPjNbYRM3z z)tJ(jC1iXOXY0hIR#WAOl8A_x6+GetFR^>=jsN3+{l&Xq`9rAk5bzpo=EJkeQH>*T zhtt4%qYcRiI|Wd@q))u?(dRz)iO>DYrw{Mldf&%BdH?41>ES_V(1+``wR8I7lh0Pm zWvA2GIC+0=d9Z6p#1#=HNPAJ0pX7rPNyy+5=}xzVLbW$Q|4MW!>kW3!66YhMDXYxo zK#E-sVF_XPL#O^mSeN_X=XxN3dgmW#wDjdP4hv+)h38XX`%^%gew~-!Vmj={KcyB5r2-#TFAjEbbKbuV_kQP@500*1F_fAieGxJy z4HbU}0_Vl#h#Pb8wIQ0K8EoQ&4NkXoHM-YmyPzXC#gGRj51iOILMZH{6c@y_f@qa? z(SE&yx&^iDe9Ez@mu$m9>9H$>G-4^x$xG_ZD_(ySd_BmdAdEsihzyDhQjC=3l4<$jP~Jig zc9lBS5qu{|<~*8I5K}xQ2RC+Q@p9q4P*#g80WAtB)?U5#Rqor;<}t-+ALokleyI-m zFs~PL_*b+tObMppNduKkXio6(-pwJpO4FYyuF#PjwgDm6!mwlQF(HVi;v0cMzjPfg6Dk!9A*tbD#~>^<@+5s$Dsd39DNDZT z6lYUG(m7x`Y=)XBVMX2wqcl79)}Bh;XFxNWtE%_WG%XKB_o z#R4iyO^FPmayBJMI5jv7ga;2)g4bXAjq9KPEp#5c@z&MP{`(4JE4qIu9b9`2MTa2# zbP;zOp1H7f`r^H>>_O2AZ{z63TTlj|f9%md!fkNIxlIabdUWFj z;=oZM!z~4wbTh_>8%%%h1UAAmmFZ?2DYVj!nOpBq)fh9TD268H0q*uj6-i`ws)FiG zL*to{1gb*48HQIn_6eGccLXX%FQ8nfvRR#lfYpjSVY)~ipVFu%IHlIG?H?9?qUTp% ze~3E%U%5+&2nAGl#L=541)ga~x89oV-J)iEhSw7JZ;1@}tXqGXDHL%y{9G1wxj^Dy zcTi#wK`^YGO=^ZDNNp9D8jYAC3JA9Qia8 zd*Wj{XqLnKOgma2wpcaZ3j_oiQG%3{lS(E}EXRj9>|GWLr2`Xchc5Ae#kw0?6C~GE z@`F*>4c0?Im2da3higV9>bbRMsIC+ll-$iv<-2Bzai;p8;w8Q|4ahz6w zMxlDba}AB@V*JMFU^F{_VKjjSCL1i5wmrNGHe?xyfLsQ?%`=R>n7d(CN5i3tZmjms zQ8g!MtYLpz6YHEZAHREDREmR0g9T<{$xUoJYvZjI;{ij*u2M=xj((owmc-mhk#^ug z+7?|PB0{Xvog$b_MKsHHUCFge_>m;1_7Md2)v*rRZQ&Qy0`lXBt4CDs|C)lCYL$eH z)Isd{k zOT7zJ*N3FCSWxzX^U?)sd!oQGd}>7vJJByD%^4oz#r`^u6+!B{WN@9PvQup8BLyFk zxbAQZF2)>c_DoX_)xin#x^_{Za-%Sq?qYu_jExa|QwqhxAmY@6t?j|{AGv$wmCj%b z{?6{-dh+9c_RZh^e12eOix{;@ z_76245J@Z+Gx!O-b7ETA412QLxDw1a%E;jv7YPp@WN-yY@Seh2H=~It%HXJ`wsn7o zRz@_PY?*f}ISXQ`RD2ny^C>I=Bo|iPp;JNJAs$5zcF-aanusK+^6Ku?g{1ah6#NiE zs7WtSbGty&dmp%7Pe)P(<H`@PL%((WZbZ}F z=wh-|m7Wx{5t3~4K1#Uj6geU^T*<6dOaqBl3R%qN#V2s(!zL%G37(g(Nj@y`&u?w_ z#7?ac7OgoHs_-5<{mmM?pVG5O4tJho zQ@1MM0f@EX&~O3ir=dXrd=Yla7Am2w8Cj@r&K2^Mo=lOQZ(W0gKX5)|{`eS~skcjcWd zVxwlSkw5`XMN+CJmJxqlLjjE%?Gc~Bwg_dmA#JQ;@#R?QIB6>GKb)myleN;=!VC{2 zJ_=Y`4mZYJ9Js^dd~nNIb$?Nb-jJKIK-6n;h(l+(%j!I^jddqWD6&x9Zm@H&32VUg zs^k?h(+Osp$82c&G^mql+yset&14t{fu|xF@uk+CF5*h4X&|80)}^P4DWtb` zo_A+uQBFq0*rb2|@j@s07hc@xS9(N4(7CXfGdZR5P5ThSV6Y zZHjRdlG72@kB}kK{2eB2YB?YCU=yKE_$ssew_p9Wf4MlkcjY(#mF{+6VO;&4f4!U> zK;&5L-&;-(``f1n+dD-zDyE3UZ*4)M*&lA6UrbT{uf%`C5bhfsdYB#awROxRB@s)Z zOg^SjEbpL+g2DwmdHm#gM|bj+>OQDrN*@^JIB#(jrR$_gUBFP!UERh1GMv59*!Wx zpbL6_15iCD{k4m<&i*QB)dpV?zo%m%r6~zr(VwLW~~n8&eny; zA+CQdj`qsQ0s9Pjd_o?BA{h(52sFeUQhAgVOObEI8Lzu@gzztB?iOI(_vCl}&|m%U z|JHx|XFdcce(&UYl$o{$+YTirj|SU$m{uZp0qV`d9^HHsF3$YmuHbR>x==Eg1Yi^W zY6-Ct(ypo~H-=F6p}%Pkf9AR_;Iv4Vi-LdmPlD`=dq<`#Gkh>VFEFQ<1%4}-HrAE2E&qk{#NrNFNRer8m zWhz!xSIYYw!*#BCN2iMVi8Nr85ZWcm62!zOl^POKBsLcdImoiCjav+gz=tHv($If% z`fx<%tw|J{yx0TrF)Y1?N>`Q9iTvjrG*}ZU%p@k_@EYcLS{B>N#taNz*eY!h*KNDK zXdTtoGxwX^h%m(zjM%)kP$U=YpQ@qhE(2e(`U%va$zG+J9!xIz67Gx_Cqob#NmfZw zS5!}tx^jluSqA4}T6-9a?VfaESM`5!sr5y}eQ9^&#PIY5C=&PIehr>6fl|oLoyyB; zm6#-^7xURt36=4fxg@ec><+i^!*&OGXQP}=>v9312MQL%p_U6GU3;53z91%Hngai* z)7?Dx7?e~cIcOYL)%#mev-ShMLl-@gBzP;VP0(i)F`_hCeyxFOUcmY)6fJ->Bl$81iMLo18p<>B6Oi$f)Z43*UOcnezV>@h89m&umhv% z%|ItXU8j`b749y>*A-$b5XJHi)F6ww6uNXKTc2kk)tF%QMw>#jKFoCYW@oU4W2-jP z-F`6}i~h1!Ejqs`7Yu*RX5AqqO7nx+gCRbSAQ)J!<(vZVM1eo-3^q3}KDqbi%kfK4 z23NX<4&Jx<{#{)Cc~%$8I0mgP)G=Y8i5AkLG10`uv2H7fdt;N~aFwhlq5>7{)=IOE zC-)!2a}ri4XQs?KhwEk&pQFJySAO?be)exK_}lxhf3c<{7ukPaIIg5AmF7rI;CoW4 zBo|EsonV&(RkLy)z0z4~g_D6D;l=c@tPBtQV`tZ(%?HMvOqrribDh&zBK)AP8G%Y- zxp9dnHBQ~2S)}vqYih#TsJ9k@O_3jZtR%(Z$k<>Z5fxAlz;b;(6RBkx%1>-%g1-)t zB#iTpm-5i%J0^b!5c{0WV^2X_S;{@fmf(lSqNz<7D?lGXAT$VRxwPIZb_Oe<=pSPH z_@t%o5;WKS#%kthMy(qLY`cCm)v_Aee2qZ2&J_(~t`5}eNB}2B(=r}==86n+$JD{w z(aa%#1Zk_VN)*%!2%>8qqes&L^k3Lvkz$1oz=nv|2MB){VTFi_1syc3XJFnS%NaX~ zsiz3~ZHLkg#d1;Yah}YwqP$Ybr6~+;Nh;5y{7~nN4^Wy0K_(>#)M~(5P9cK8+pz`8 zlQSew(s~t=jAB(*_Ci3;y_=pP%~eY#vK9wimO)%Rw)y1zo2TBo`PTWz%f-wr=QZm? zaAO}wUFLuECT%ojq5R70ZSBBEosaG_ZPJVO;swt-_!%*Q%6%{+kuNMWAbdRa9Y1j6 zi@!C!j}~Dz%Ul-)t06q}4A%u_@2xNGzx^^LQ+l?01AB{M)XsQ)lN3qnbja5w6+1Y> z#bg3{QEZU1%o%=96yN#yC?TanW}ZWCV#?a9h}VCG5f}yjR+b5oQXm&~EPgE7nyd>F zNW4kpf!A#OQveb@;z+011M13U+NL(1fMSERgBPWu7vRZ9>=4(nNU35$0Chl$zo(TA<3K!4!CfRq z9|xx|zyS+c4@$Fidyonhv!njj$(?6DboTLQArjqs<4e1*e-SDgl>HoRc7|J{JJ*mo zu$=XVC$ruVRdjm;ru?8%QkuCj3mX1PQqlc_ZGd!tiY3ZX;hdUf2|(TL;+iXpB*ajR zkJwMjyRgF{7%1Z1c$P*~tZ4?(SWXUV zoLfqNg8ZQf4ZuaH^Zt-m0M&*HKOLgu88s8oZyq86hI{yyHcVX>mp}Tc|Lni}ssH6i ze-EBv^F2?GZ@eivlGDAU%&F4k`V)=8TbDt?BQ>*Ft*|RS*_sYvg86W%)8S#LXP?57 zt_;hi!O1kb^Nv7>hA5eko~VWdl3mtO1_XzHM=DX7QHm9N(y^&HU#Im@h*hDaObHy(@`I z(Ks2B97@G13C?fAuBJ=2NpoGzP$CD$I4!l!fEXb2H59NmL9Aih!8&wn9nY*?ryyg0 z8?)8E=!*@a8&f_q?Vd3nAbO!$D!CLvh|2pH`LS?bwRA*_ASd0<;m(EUzWYc1&Oi9i z`33&j|M~mBdgT@PAq0`j-}2q>|CaCkcmL?`EKo8Lw^?1Hfeq1fmb}|ltUSaClx1qA z8>Z)O9c(9En+&-vh>k0ct@t+b?htW*dN;O?jEbzwsXH3IIM#S0BXt)AiqJPWJFFn=iZ_+H0DktM&F|8JpayG^46(#bz zgHz`^{SCMXO3i45Xe-BgLwNILo_G4&JNDdV$UUn$q*^5=T;&q!xI{@MZNF}R-rpcd z5vK@AT+m;0WDpU7%TUFoT|-6R_`+}f-S7W1Y-_fC@$vEPYw%Ag?;I^5i5$6ol_4;& z6Rtr1gad>f_@xq=NpwvpL24C+b;iz<8t0qfbWzFp_B+c0sYljJv)7^2@f{e~S5l%` z7f>V z>%c;2+mSZ9byk{&$~#cBjjU}m+BN`$hRa42_*NzHJhRHSB&g!Zb*#toI=!tnB)m2% zxz1oP>}o?E9_X^k+KSSy708b^^wMLgFU6uGTX^aKBobpA$6*MD~WMXfSh{o z2VgV)w2M~o=P&=YZ=W3g8)PM=IZ^9wtWk!_xP+`^u$%9>X#>Y~%%njP-W5AG#_ zYFs;T!n)y7HQT*4+&N!=&XK_naRxcxbT!gWUt!0xPt@=MWOmgYqS8!&@7^Hq_jRWS z@1Qr_f*8$CJhP{@U{4gAc+hY1t=m2w1B@@&CYr{Oc2G$;rx&}t*4 zP{GJN#$+6{;qxYc<>^{2@doc@?}4rO1F2^6=rb~z3UVwf)ucXoa+ZX}i2dUZDAiIc zR*fKJS}gOmwm=OSJ|=!fcDHe{s8)gHrtHR=M%+4tD-*1WhgM+GE9++N5Tjtd5n^@L zEEIwjjm+I^IRByK8J;*J2XFM}zxt{FIEI-{KlMT}9`!bVwr2bHf;bU{LJ#T1!v*Z^ z&OI{LqE)QrhNVfy%4&$8(WZvChjTMHY$!d-laD=H7mLx2xAIJ^`1S5^lgMXNnlwgLc@z#V=9a@#r=y4_MuwvZ_8B7Fmrztsj-dL% zjI7f`9l0!jFN;M9Kdf=g1tq_CYmx>Z+R2CD?c~juNbY+^^4FM6!LQA+BM6#8EdQ>Sy$n@kxzi4ylk4@C2vzCW8@az}HhYxJXdUFoD*j zY~;6YO(0x)U$dwrlt#a^Q1u~6#ho(iZ=+ zH>GKRjqEhAa6IIMMygtAm6zzU4;=ej#|2GRr?agKM#?^TDu_dT=9`(mg}KtA#AXk% z^(YDJ^ib7T*=VI^k1B08}J=qK|ohg=$;K;VkAj;_G@$hu2<%pPJ=zwtpKf zA@YvyZ=hU+7CyS7h9(buz$SyJfwXnP>1Y;DFGl+)1c;=8nlh$pade-Rsw_<>6TYC9 z<2^)1P>zDehI{?)_UYbWtC$`w$NS64n8z`we5*)xuTt#22$=|EuyyLXk3>LIDS0A) zm}m^2^C2XB;4>guLFL_z$6x&J!`pA~z5NwZwO6VkKV-tbBx-^TV@GV4M3#0)%tMCj z8JLPQF(OGBDWDXAKAH&=2&Y#(x2%{WhUlI?|J=9Sef4v%zx0Lo{P0J(bj3;O%Gd&d z?ljW^Z?ifLDz{62!egj5H!2?-&!1CKaQ@xTfJe6A!{E-(peHxae|B!sXC=#Ll@DvA1fHipw14F^WG zjcouuQCJC{)y}UWWX&yjJuzyP*Y1z5b}{J3lG>S4r0KklC~wz2HfhNyCynucZ0r1= zmGpSlBJyn`RprKvrIVtS=XXd8qbAUlAG4Te20KSM_I5PtpF9gIckkM(pZ)aDzwyQ2 z=Q+6fbbR_fPi&t#{}+Djd(WN0=Y_fqa+&#Pw?;#)zMqn3(hBP5ZJa`JP~728_bS|4 zn#1o6^T7txm0YEIWyp->eR(2(-?ef|5_Lh#8Ei++>at4n49%I-j`Ai2^hnfi>J7=a zIj7!b2aT#Qc-16!j%%Da`-z#)SQy8t)<_88+yhb}lGcNw4b|YOH&(e0x3Jq2ue$4$ zEhAEBE%bP_wCX~sxR@LgIg{5wZAht=Qz2ASxbenh_clpCmu&yxQS*dEGhO_4?dRJ&)M`S7hbU!9CU zyqFrk6*Qsb7#LVQQqiV_NyW0i%+U4-OYO)F{%EgjG67T8vyp%y9rTqq?4l7v<7G*Zk}}>Nw(oZO}GT!TN9~X zS??k$!hQnpY3oO9R5Q^DTUG_ar;kMSGS1UEa$JF{&6pFZ3udo@Ano`aY zO?RC-48M<6Oj&mjI0w}iX3`W4iBniT5 z4LSm(5(ViEBxyn^ydq@=Y{NmY84l~kvY3tPV#(y}niRebO&wBIl)Bx*;w?4J$<+2} zpVA1N>&rUb&TzYbTFx*mMq{7?HaNKwx%4EaX{?P42W;S@gn7yGI7G=4Ch}UXkCo$u zGF%c_P00kTCIOj58dVk|FT|#;bB_!j%n0(Q9-QMpTD?z#Se*FesU1k z94M8D>$|baxWVj2Rm715gAJjFBmzOyE%f3}aVQeoBjtR5wteZTVm`ZnyFA*TRmFTU zpVm%77P;gkw2+9yDB!>x^tTdlshn5RYV$SVp zc>I8&vX7wjkoosbWr%eJmkKJFT531NlcjLoamq}PJiIpBY$CB4*46$yuR-*GA&CVOT^TM-h+$kTu-~2$^N7?I zn3e=Dlx=qNyhl^}3A`xI598iTDl`l$#QlYq5eAv8LlVFXVoP9mj@C44<5e@YoE#>k zC_xR)EYaF2ouW_34&FZ==)GD zP{$R2esu1AAG?3`E5&qFR^@Q()W?6|$9~{H{WkcGzyA~e)9b(Si(~YHwV%#z$&B~nx_56%4huSnuq%4c$2lko{= zxATb$D>l_EZOpkXPxeUm9qBQ6$#cXaZPIj>7NR<}7bJ%>WNu^8@YMcWwl&qB%;%>_Bq8n-Y~$+<`%!DJ@Iu$2UTGKY_7 zH2Xs3le{}XGSp&LE@$K2n^1OP%2O;!?bjqai1RbaDC>3yC(lgp-y!GZ7`3w@@uR|u z1i8@K6Do}gs!OyGL{r7Z;Vv4xV`r~_$AtUtU~6%7f3|;*Kpe=ZQ0ApTkUnP_DFGC* zTW=X5V&_C&cZ$+8Z;C??s2eRU6n_tD+u_W@ITjnY$z#D-5`-`UFo$8Sh#I4Gxtv%Q zedU#%b-(Y&e|qcG&d>g(Pe46eE~a1nwg0Ouiv2s+uYUGdpy<ws>nTX)C_sriQ3J$hifKI5 zMt47&h4PI+UVZ#WN1$G-xQnQNMP4ejc0d)?&O88{$i$A3Hmgb^$^wfwSnrgf675Ir zlIBQr5VH@A&?s?^B_)EOpj`tIHQ_3|s<9O>&4!82DwjQ$25f;=t31{9ap~bdKbFvt z#N#9))yPeOwUqe?e6%#(SxO5@{BLWXZ@`livu>R9gd5f!Y@^8vDjdvz2>?OoUYa-V zdN9Q;0vyL#PL3idQKq1UjYb~72=LcVOcp07P#_RuP>mB}Gc#JMG*5f|-quNY=@cpH zER#f~gl)G%7}FuWH^n~8OxkiM6BesAgEBI1CP}DO@nn->^}VLf@4CLPAP9Q%++#<# z-{!nnl8e?k<)2(7(u1#m%YXLY{BUPu3k~J1DQ1%!fBc!-U-=x4E0I*2m6=*BkvC3X zobKI*yb`lK&s{N*6Q3wB`PUTsC9y-a996XSv`Q=X&QJnv*`OleGzNJ5lUgLi%+h%u zWfY-2$J1rFd3fvXDeBu$1x*S(w3%tc;$c8S{;>om&5p(569!v<#+hHtB=}5{Sv1?I zQ})579%@~>0H^rYJ53nt-7vX^mE;l`cBzxo3NoP*@j2a7QEJ>6@NHXR_%P9!0d^;P zYiFtTwU%wn!!=~_lxi-pww~XyC0HE7j+dlr{F8mC7|b!@<`JZ`?AI#qXIlptjpoo` z3a%512qIHm8()-v1!e^Ux;W>axFI!cUn1&-{n z2^gNaJ=A4KmE>-pB+ugkO6hhHa}Z0daz3q{`hq~VWMEYyyoI}TR-qmX8c&f^9ya() z$cbF#%jCVd1n!ixiJZGoK)HxT ztvK84L)&D4cjFV;*>q%VIG(ar$g` zxOI5rO;qxKO0{rbh}*?8MhT*QR^EUs_k74uO01qsTxHq`QPrWTN->%>ML5p-)kslG zN0RM@yYhpFZemXI1SNlY^|rywSkDN0fXL6bWK_>{y$j8i1ksRVmM zXpf(8IX_~BQs+vF`(JrZ4L4X+s$%@p3l*3o79O%Pcc4f$#X2%NqDcV+NK-lOP+SwG z;uChCL1o8jxtO1Q;@SP{ua)z;PI8kFNf@VpttezDmS#6{mKdL5`4h`|0^<6y-jBwM zo+LcB6$GTTo7;E3GcCU?0{B#F6@%QQPNm3}$sN6x)ss{^il`Q?NIUtBW>C?gZc?I< zpd#0>NZg%+o;HE&5H#FvFkNiTvBdv(Ojui+!mSL$BvY)tceQJtz>Kx;7N{-K$Dau za~m~3g&(HYTH|{#xJt4-b=*}7VLJ7H;}`3uqLi-(TqV_@uGqktHc4b{;>7-fl z`6u_Ty{5JBA!vrtpu7i*5?jp$X&3P9U#f54Y)K-mMqWT%Gtvds+Lnt78)wWra7Q01ht$Y{G} zGZKS|(BE3v!d?WA@3X11?k0vYv90&g8+2e2!a?RK3de2}(^7*7VjNz7$)BR0LDp;C zFwymMu`%H|PW6Q@=43;>1d*g;w!sy4($t>v7michv>645lG#I8>==`!X>W6T|0WiD zL@vi5?TQ_wW72p+hK!@C(8Y|OesJns+UXwMx+Y8?d=)X+AZH#cx7p7O6EW6kfv;mby_`S?51Okh?EE_yRHC3Bl=Tf`J%@ zxf_p=Xk`;A^bF5ukfgasnz*st9>{cW75NGg$<66%>LAi;7%g}6Ss|;Aw5a76iFhgK zW2RkjWOASpqP1#&8&9gx^dSw?e?% zYSE=sW7@^*fX6hYcr|!1D{e;l!#RX+DLIXNO4ZJu8kOm>pm%d6J}fi(Iz!8G#)aRA zKba%E2=hvRJZ6nZn-d#1RW@l(s8$I{&60y|>YFdp8n00*%T`q#erU6_v-9Nh_ul-H z_3qwDMa*t7(sg10RV1QnRD1(uOkc>RHM@|?^V4*Qjjoq5QUBM34Hn&CiDM?H?% zG{(I{u14HyH8!GL@VObox;9vw_>PZuP`Zg`*+Xf6?z?r$hdL9etpkfblYJ0`>vM@)is#X=R-%PBPTGtFbmz9GAEL2?{;?rxTlw4Or6M zRzlrXHl~Kju^hQ(+oX<%it30JX4Q=C0-m*pv#G<0mSvEXyF8GMuZttDf{%FB&Mv(oHR-!Cpk-Uw6 zGD3GJ!|hW~eds%`y!7jAG^_pSYNI-{VQxvr=Gh}FYPlYh9|ZnJBSZ1wNO?G) z(FuIZ_*r#`7pYF%z%w}ov>i$PF&ia+TCKWD1?gcGNL8x&RLA8WsugY=PT+&=aR|CP zcKGzEr&+%q?TZ?EfKC>5iP*P^8M)%TriwH9)ydG<@nbv%OjVvTvdg_6HS(~VE zZmTtS*Lo^#5+(ZPx;N0!e~lCM7vx=#l@3~TSykAHMm3B5ati>O1K@8ymBQQG{UVk)cmumz~W4h z7?rEMgRZV==C=;c;^lgH>fB&|`}E%R*Q@zdXL()b za(~jUUOOf}Fhr{L5%##>(JPM;Z3+?|PGT}AsU$fHyjNK?wkglZG(H@4B^%K?X`L=g zyQ5yMkV=A3nH%|#T^;8l{4_X9i?+;lU6wVI$gEjMd|jtNX2cvmQV2*qe(qi@fKX+6|+I^ohNj*wW5K5Qz$2ax$J&)g(?$^WnX}_%r|e#pk}o zb4q9?Nhcy`Yn{0y=MT!4Z2l*lwy=Yifc<#oWnx@-S7P2_oI?hqJ<93oI`}2kG9Rp% zjfIm67_IV-BKIwMO_~Z=Ob+Hpd)UoHTX~eVsLNt%@W%5fgzJ7{=)q3^dLe|Z+(5k>4s#WWmFUgpRh8(QlX9KQ}&(%SY}d@RSi z#o8t@-O&fVlT|Cljc=I?m8!vhh&QQf|GWE1c&6yF?lraWt{*LEDd8{pceU;>!>0WA zxW|NN@(=T*9sgHg!7W+AEE}OzHD)yxtE{-$a_3f1uf(S+#swn%GnJUA@Uw9&BjtD- z)mlk}n)`j_&*r9!ni1-}PE5NYVwoV8rqN)Dk)7XMOc0NMaFp8h77yO}>d*c7_mkae zx)$STFUH8NqH(x}s!&GZRS-9E?RLVmB0xkXaeAn{yp&=d07{jSmKph#m~gep9(;Lp zupI5@y}s5R0`(xW%nSf`}49%hUl%4GTQg9Mv_F-nGO+TPE;E;JOuFl5K^!28%P|l&a&%QC0YWbjmDmgCXsn)cYNN`37N^`^pm+cE4o%EbfdVlh1EyMzI|C3^yt zUZ4ptoFil3T7pPvY?TJjgU6&GpmFgK84xA4J8k%X_%i;e7uw9qMb~j^6wHcL&`n^^ zUJo$KQg*avqEl->R1xVz+epR0+Lo5AcHvS4DzyKhqxD7h2Vn$IL{WU+*Wl04VC{*E zPhNQDBk)~sV|(}d>-VnwQB@Q+G@kJl^ZwxS2fw439v$7iIUn!VMOiIp$#TZs2$jSI zY_gJn{fAJmwD>%-&X+S^aP}4ryOcyVmXrxe1k1l^EoYJn19fD`u22ZWIxdp-$sHAV z{L%zPnW};+78VP9kMh&A@%aAjJjR9Q>&nvTMzC5ILJ3}fP> zIB-WJ`zjgXYW4Hn(>b2{S|*Vf^b3UN+9ph+edmP+eRZ>xx_lv9D{(s+jhF zf~Xwvn^6;){;lc$y}EV;s0alq7qk5vSBU#oI}=?U-t$@_ zqITC>1@KzdsZHW`gp3Fh;+$x)7-Stj_LTIR1u{p(xs6;@uJuwUKqTGYKxcE=5QEl< zt9F%k;F)sD?TFAV7t;~;m8Sk|1nYRAs49c#>Z@-ulci<(XJOw10AoNeM(MMD~>QQbwtxv}WoamkNe%e_<& zbisPWq(-@e>rW-J{QohMb3Cm9+fT$v*MYj`hH_*2mGV~UQAMp2Y5d2BgbtwJI$Kx2 zlOFVkn~d%Ft7TLoMsrku)DuRTP$OcP4wJKz0IEQUq173FfG@;tP?ffLgQUl%oh*9v zJWltnMKZQN24G^bn2qkuM!U1adsqq970RsZ)U`n++M|^N&cu=Fe46@BnHaV6(SX8O z$|oQZiC4yol=BJkgC9vKJA7UdI)Bz#IWWuKIXr4sLzM=kG#ZS5czwH)Jn-GMjxGlW zS!u~p!bMzmP4nAMb8TUdNa?uRI(`0yPy9zWu3WzP>Pz$K2(|g~GjhDklx^rwy42ox zef-#?jpyu=NJd2k@h6X9YT*O>)^gmMQK3(o#ELSGvgbuW8*|HX$Els`iB@t8|Mmlt z@dVeyxZ=%nA+A_|U1L6;1N{c2J5j#!jbd+oqj*>};)N11ZWuGz$ws&rwquf11uT|k zpjgyMj3j+p6v`DhyvP78n{h>Ew(k@g^5`;I*(zDiCpbu2my7AqxyPS9eesDKSH84+?X@L2UE+H~ zEoLz&LBBPjHLJF!iZn%SQ%N_d*=a|}jYc`F6p696Z=+Cj!B6YJi8Mh z2Q(5_5F{>4dN)C_wa8L~DDUB|7^qmS0ab)jsIMn~Rf?6y9$Gs_*ZCWrkVPLY{q8^a z!>_;n4sXBPZ@=oW38Uh?*SA)cgKyaYin~0No+xL3B=`{z0Ag*G2PI7R`-!*tX3$z> z2&}6gdH0a}0qrGxXjQYeFRb7+>kv&bO(?42iHx?Uoh-7aiN+=LltIHXjHFD6gs(00|~LP$kMxsc)}{Va7ZX*xo#Z$P)^#r7M^(8j=10l~ z#DY&<90Di&MI4Tl^4W-!y>}5tmak1oy&4^V!{lFyN9o5yB)4N>cdbH$G9~Il#%fev z-B>03otBG?@rCXjT`TuQsV9yzvQ3UeRb3Rtataq}=i*a4m!8sT2Vz(`pCX;rZA+hu z#-tDjGO$v%Ze_BQx715+O?fxyS{n+U|v>p)csLFdHdjyq*|(#s`bXd=5TiA!e##A z+(s|s#2#{XEC*_yf+m%M+PMBt%0A(8TJh*tx?g3LnyXd*2{(E!QYgqLpXqf@2R)B{ls%09p8CJRK2CraUy)Q`jPHfNMe|h zY)cEWiTnND>6>#3c-jn7H}ZCV{!>44_v)ATuD{{rO4NLOc=NT-S5?6xx)9!f$lKAF zVu`jr#M+1khHM~72=^?=ehOjAb@B0XY3o5O?`gm#8?h@KdjWfPMS<=+&U{cxWUZTI z3*K1Vm*5cv2q+T8Sh|lY+=y)9@JgKuU4f>dlgvA%qhyYv1Q=~}NxHbImepdOcl-VA zohM)T_@$>`xO@He!`tsn5AUIW)HRnR6#E6%jjAH9Frnb0fZ6feVM@PSkMJYT8 z?~SmU5*jvUd#q4L)CwAYoQ>!8@Q)!1AZ|5uj#D}I4$y`3Jmy^-2{geNpT9PRai#j;7U)~C7r;C!R zn(UD&c)661%+6p7#XV4ecVs4F=??p_kSa3EuD|lx#q5aWz*5|#kgZLR_UC9as8Pfj zE-U5{S6}*7gSrUXB~Apn`SdC-60|rk*+7Ft8i7Dlq`0rF4O~JaqP$$N%ju&7)SPxY zaCnecvq<)Y0@pnU3dxfBnAByCQ^SqLSaymvi)my>bB^VA9#?07oNh@`hF~A8jiNU7 zvaXBe9RE(oQ2Abb>I0YF`+?EkoxPh^XNUI}laXQiF=nYLD<^X6z{uxSjd3R>%^+8z zdbX4hVjKa`#Pb1dyHIPRnZQt$#VQC&>(y8lecjSTP-}#&BCdlGcPgu9RhlrpFcQ%{qP-5gmAZpG-`3)=9DQ zLKhrVBZ1;#Hc9gyX?xeUoI&kogl9;bs_-VjHhbDwAc1B_DSpb_B)K{Xtw_ghQ9}NvAh}MK#zwx$*qR z%VIGd?M@CbY(ce%lFha?x)3;~vi*%1?>JJ2r}9a9W}V-jq;GQjni+JP`_M30PFk8_ zO=*s(DG`>5Y8e{E->7xF+_iI}bT<^3evl9rF5mtlBf3U(bHa+Lm$XVq1 za0StSB?-hLf zQl3oYhjKE{U=%Hl<_v^KT`+u4_HJsHj#9dR#rCpz-z)aEpuc%z*o5rqBk6?%#~pFt zF*kML1g5JLg;Kp&L`~9NZiEw6K-h>>avSo4efnaxT+XMX z`FOOPjo|C$?5HZ{WOPVs@dO`YbHmXIoz!yeeCljulcmJ1ONdZ9L>i^zM9F%s(U7Ho zHJu$|BAg8(d#YJ2$&6Hxg|X`Z9UC_~8@Y7@k5etx57j`_ZL>8IHRPL8vdPNFQD0A9 z^avt=kC1e!2hA^vHKdQqxLC71hr0)%B=7cW)MAHpN!yCdX-uU}YExQC$P&sJAi#bi z+^EGgF;(8{!u=TCxxRJ!;^yg#{mqkqkb*%Zsf(h58gF!eG1`Ys3y}_y^?QB8i&mokBBXzAh8s@X1gUvp`0u@aG(Gw+}DtH$toP*(iF7b&WdbiC}~0?HJZP{E=S(+6GARulh03B zJGK~z|4^NI@&miqzlyJdS(V481yYC)S{cVAWDd0$OH17wBJra3aZ%^Xayf$^cDe&t znVZ|EhMOlU_&G^!EvDneFpj6Hl><48bBQoszLHA(XP-y=$_nFg_IEe@70AHn5HupRugGSDRP~DQXqx zQsGc<%XcNsY^=>yB!0L4SmK^$jI)h? zEm$zNQL<4&s-hJT(`dDSYA5|MsI)rF7l$xGP%Wt;s&>U;xm$*9zEsDcK7NYYJ(-TX zT*_JADo@w6f<3D?!k}U##q~0=rc*J0UkDIUZ_={2b4o`NTEd$&vb5=?$E9Z3Cx zWzpu@edjeVm`9bM4sV_*uF?rpo(hHM2Z_2^8Q`NDkxDyMJxw!zIQiyd1;=WqKS3E+ z5H7#wjz`vy4_<12y%kTx&`<@l6?JTmW*;2LA`b$*lzA5sDb*it?p&b2RKva3gcH|f zDu=Gi3Z2TKq=Up8*3DpJC(ZKdXm>t3K)zpMDXU7EISKc>Di&3>Bu-L=)n7Wq1yCBo zL2ACKu+AoXceCyYo-^Ad!$E}eQM|ly7uYlqmLPgMiGC@6YXhX{#K$EQ)1&Hyip}V% zSvR>J!I~bN|v5{^B=7NNmk(Uf*iDHMN zQbTUZD$y!`c>Ex4fZLmJLmYVa*F>joLsL7`eIT!~74v5NcmNF~lCnjTn!>;h*5od) zu*(c_3mqFFaCL`Uoo>&dbzF&zTw~zd-e7}yB&OmdY`UC};s3*uruvaA>FT;^F(++M z;b9PEh8HkPuZapsA`&-lLeubtWNGLKtyiHjH`!a5{VzXCUOh@aqq7YqK?Uu>?(nDC6t-w1l}>RPQ^3a_Mtdh%#vN9mD#8y zgg}5wkZFIojX=0HP}V`HnvCuvOhDX4EE3ZWKRYDpXP$jh2k)B!TO`q53@6OM^oRjAzdm%q{NE0Osb;O%MYtCM>O#aLh2XR&IQ?L z=uQR8%Nr45W(*vITAc*jOgJu|X`u=i)%2T`)4HT$b2WO?xid zJI-hn*BsSpRlduMC}5D{0@3l1#iWpayK)AC7W;{d88KITonF7&>r;CKipmlWTJrjT zHbhTJw@+WhJRS~0Ed8*X1Z%Ze;IG%!(qI8mA;L&zt0>gvIP|=LUG+xH7^~aZFi$lY z?el6kN5HwS8&Tpo75H(E&lpO@6_F*c6V_0vi6O)lMTmyMTtxa;4OZK~m3POY=V7dMZI^My&~u%my$W4_Lb#`>UsY5Di()+hKY{~|2%BQIuF_nIn}S_V z4tKA8HG?3P!->?%hMf~S8*Ef9(vm23sexysuARIDO#>bO1$);BvHo=f-O< z9o)T!v| zET_Njh*5?~Zs%E3adWXIPg#zbDC>+Qm@yoR@NTnCACFA*kQ*kw0nbxHR<$G-OE@rj z$P|%zh;SQQTc^%toeU=gD1WNU3aL58vMd)E!YJh77j?;&O)@SXk7w9_cJ2~bk}Yqs z2trIEfvZSLRIM<*qPd_3%%EbK=x|;(WdfURKD#nLoCMWb)%2tZi?U?{tX9i3KRX=t zCe;I>DBI$7#MTz8xu7eH+b>T63kp4j5Id|GJig}BYB?#30*)+h{@r&E?p&WA?j7u2Kia(oF9D04ncVeqar=#z(@qEd3$+M!<-Ni7nM;?ReG$I7 zf9ooIjK%n{E+P3MxjV?D$fPgJx;3ieK!C!cpj_nWImTu=jL|@U2*#e5^tQw(NLjBh z$wX6T#cI)b!vJV}tt6$E7LrdYuGIXyVWdS6H0`GGRSTI9*cW-&G_rl`{b@r?@tIS& zahfYx#rDO9azhgfaVJC%BPf#`0z08-jzi*Vk|XK-JV3=K#(O34ORU);AZDNXrX*tfHVwg_+@Y zYRaQdaHAo$B8#>Ty$xpGrxZrJN^K&9S``?9uzp-Fk=Rwql(*uBK@U4lonE(pGEF5l z6z4X>7IOsCS2cn4VkPa;Q2L1|T1IXr6v}?V^*Ul z*mk08@BF6zNP7UtjeJ=3C@h1-uBz%cf{k61)2&vtjdadNt<1FntJCcl%Ng9ha=Ba_ z?UhS7XAlfddqc>BFj6ICn5v|M!zg1pAJ1o#<#fb3Gn`9Rb%eNXc1Yx-ye^7Q|J>uR z{lPCo^!fgOAO9b}{JX!rck3<4)MkgfaFiijkkSkdq3;N%+k!t~wOG(>kS6%K9@%%1 zp3@&9j~tfO<_SpaDlAzKG20^0*C3&ZEY8a$>vjewPRmhAJW}{v_(IOMQve7j1juQL z);PCl5hBmLTMW(Ic=u@?6IGR|ex>avt# z5MC1sANn9Rai-jf?>VtxwDzK+5pzLME*U!04N-J1DV-n$=@z(eg`yQJ_~}j;!XjL1 zZR)f)fPaJ1i~NmvEHTeIU3wmp&GAg`cJk=+tpHzH;>{@C5Dbi3@uG*t<(Km!;m~V% zbd}bBTdv7%2=Xazd1Ln(dpfyHR#0R@@T=2L5?5fG>GjezG z4z)*fNFH;6dp_;<$#WdLK2DRwkiI42{W!XR zocE9dhMM9T)PNY*tQhuc_C%o$SKc3-dF)wuT|8H-YI1mQeE$|cYgr~Tk48p2ZhiQE zZz2G5$5cxqQV8Rm#7UB92E}QxxX~Py1XY|csT2RvZ5$xf0$h}NwJGnI!2N~Vb~m?+ z`2=krwNlNFHTkM$iPKkzo?JJNx}XGq-!T4^Pf;g{Zb<<9vRCAIXn3obj^SqMT&PuW z&HI}>d8bd(F{P9Ji`%8{<5(345n4M34L3X#)xUD-V!58?yK=33o)GfV7$kU4s(}!L z;1eN&MG?oPp{Ym2UB;_bBN4<4j+}|A!2cFYcpfYXF&-ILX!9H^_MKR#kTCv#j727* zVQMz|w$`~WGIHOTuS;x16t)2q^Fu|RW@8%uDPdT8O{}o1L(6MPUbd|Z`T#)5t`91) zV~%|o^V2@$`<0h&Kj8fz{#O3t`7@h%!Y>iUT+GL#>A}6MKP1ft!nc=GI>0*cCEWf_ zzmF{}Y}U;AxrzNuYZvZX-RCENg)kI3sSRLN6pQKIH(%)vHamljl1e`aPmr!(c;83L z#jK({XtH;=JKS6x?&C6o1ie34Ovkn;N!8OZNgCddopbSpFHJULG*$#z55qXHbW&T) z#y4O8BlZF3w47#NQWASe#1m9GK7B+@F*3bTvD}K!n5b}C2uk$KSS*$E2}T^O#V`uZ#|P=j4$imZ&Z^xd z(ai>s3WA05t$z{S1aOppT4U}NvC@sTL93t^O;|eOP_08zww0z3Xkd-OGQgOEVJkHi ziseexOq1%Ul@(EoJ(ms3!*1V2H_J#CWMg>BRwahBVzI0zB)eNjlo3SIQj)>IzuX@n zAi~pbq7NH|s-~c_a*~5K9&I$X(H~qRpVf|q>jFeW*3-)}uc_33)N%bmyKWHCV`+9x zJ@}B}=rt2K_F=k%7_g>Chs9#Pn2fQ%2328MNXv-FzUci`%b7CBT|jUido+nb(7gjo zraRbDi?lXHw>!vsLr71G`GSe*P!+PKRR`lB9z<|66QV&thW-4v{rR_F`Rv_muTnQk z87MlOwlAy`1jti=ZA6$QRkh7Xnub{5uJ=Y!3H~i%W^-wX@s2B_EKADx45VCCf>puu znWfeREeg7tDZ3#Wt5v{ZXk%)R2sYcyE!Xpoz`F*_ z0*eg-L>3Bze>92{-oUQhATiigCA;<|*qSLo&_L9) z3YnAbNeVq4X-emv$tD=X;87TNyRxx?5kRRFeh7jLmtcDVfC4FJm*RT?ngXE}mwtQ! z76zpxo#GyomzsP5L4PD+Qy~gfg59C4Y}%y*qG~P*;e~2I>`1zE=*he_{}T@eDw({H zV{{;!bWrv8>jGK+q^YK9PAoG6 zewNZ?wA6e&C?{S0F`PvrskYbBn+y zA%A{L2j&*0cdglQB>(Hu{K4U1LCF^yy&Ih~Qk7Y4q)ZEeRp63v*aDcFjh461Yl~tC z4tj1iyzSKzRxd@P=wo>k4RF2CZ9^K>0cI}IiW~S;fJignVY8l3xT~Bg)-|a>Q%qEC zKoVo2@s|jG0V97Ni>7Ma{^x3xy)nR@DNc7W{rR2ih;o}wf*QghGOqY?A?BD!dQ`(j z(ZO7bBGL4!b!#^sHNS7y!s33Bq2E)kIpWyfu~T9~ikL;9&pW+U{3OGn5QH%jG-4?c z)3O?ras~>2Nun7_rchLcO%vEmu=OA zocc>^XsCsWQC;eq`lPn*}Z!^_pDyONp?>bO27wHBY}}y(D87hL&L}eSVK?|GM~e*wLJ2)a?h1v4D_Zgc1N@8v#`Z1Pp)g{aK5PWh`AO@# zqU0K&gEbrHNxw;e3WPV!4d@2pZzGk+^egGrK9t4_5z};i|WAfxK+XM10rF&0*FhHW__r%odu(!Vi>W=3;>6J z3ey;1$-%0TOAi0xa)rK~K}G}u(8EJk&Hz+&x`RhY1yno&4L2-ddZ$h4r0C{D>$;GL zN$Ka%gT*J4?#QxfaEuKTrfQLpGHsZ{M4EI#Bs$w7KckqJPuNp zMGyC?8Z69Liks98ZAGxzmHf{OeKxPOjw@NrzW+%8OjKxAU9`o2`^+;y zLi-W{d6fbxU7`w2(5z;%DAh^5d-a>j#Vj0{(^y%>-3G>d?JMv!r3;fl zH1!4wYyj}Uq(=RF7P#~~4L`s7fST1F$#Ggw|31d5%J=)~To(}c8 z1dyADzJ3(ZwZsH$ibz~*$W_QVYEFcKIWg8G!9$ua#*yCa+&*6N3o%LO7vW8euk0B_ z()kQA+p6!yLIMtE+FCU?6X_+CE&G+~_3TK^60y>PrWRMD0xFx?bVGrE`zAc7D;am4 zBqf8S{SbdzEDsI`qDw}eMx?pcA1V60L=+~tAGjYR{e+HP%9-QgrWH6PVIb+5q(7`} zt!$6r*EuyUNNhyxQ;3Ol^ogghUU$Tv`|mn9w?_vDOMON2#w^V^lldlH(btSChQWjJ6yG)oI@_@x%VdlhW^A#*;Jfms+RxasGYodDtQ)kesbs^W!_EDrc_wK^d64+vonKQbSZV}{>a!pt)*QO_DmxN=r#jKP z5-Ze^I$csJtJfLyrq`_BxcS8WyB<)*m$KjQPEB(Y)>}F#94i?E3fQ_d#ER+(L>W;S zP2nMSdnyU*`1H^!+fhY7Fuh||bF^}NwOBc948Z^c>DK~(NB!sNr6_U|!>Ha-{H|6L zOfj5z8hJLk?89o%Z&QPymr&DhR!%L#3VMS_WWhX?R}r+Z5f}$UOvr(PT#yzI&Q8s& zRe8gzsyt+X9eTl950Hv5P?z8_5<|AOj1Y+#i(2U0TTsxKfk8?WS_CS4K-xgPTr)Jx zH;mFkRIfRI?x#baCocgvN0vwwVXUCe>at8YvejYrJj%g=s%$E%y_pMC%Nk0D7$n_0 zN^uXg5}az9rgB^9PpZ_fN0gxM}Ui?$pf8 zn)UN@yQ@W!W}e&qfXZbE{8fL!aF!|@mQ|IpYM`CK7bSwpg$GeFoFmpv)$ka-v=$); zn_+}9WJ!j7#AqUDS4-i)4QQ)3wTgS9Jfsr3?e;SQP@5A9HnSB}wH^pKjRmxl_8XVBp)+oP7|%JuHKF$)eSTA+z|EbFn+g3`Gz6~3UJx(>K)S(8vh z0V|znDHLe|nUe~oCAB4##Fj#AX=QmO>}V+f(Nj71^aw~=#wLb+vQmkbHlCngR#Ou7 z1(=+TK`0hsm6r5Bl6Drue{Am2mJ8acgTl9-T4liKggOp_VmalL(5(fQ`jxSeNf>;_ z0n)1L(!pK@PW!zPQwq==mk$Isirg##sf?1=VL2E*Yk^qr$Ux2;a{M0XRRbZ0f}_K$ z2eimBhcc#4SA#7_?;BZp6xEsFe?}3YZLOtTNlJ3C z#pI$O=y1Ah6-xF_Ey0x*ni7OHi#RJAth(~M3mPo`>-6fiYc?Id?~(iZ3kSvY7i=I? z0s*OOVG8ow5mif(ixKVhqP10^B1Ml5w|m@=MNE<;@* zpdc_4MkKA$KrnvO2JSMPCq)}GoLHf;u(pMmKx3eAG9~h|O`oHw0Dw|~*4o`vk%18j z7w{>Ay_yXu&f9u;FiU=)8^{629Q*47SGAGyL z{5yX#dl*I2YbNzYq(bUIHCHK=Dd7mv!ZoV45jL7AB#j}L^QoP@Ff{NGz$OZb6QRiz zNl+hjl3?IMqANLg^mU+#=ZQL?tEEyiXdFF^AOTsqEkCWEf;_R9r-d-O*G>N#5iO|E zya|1}fA-m}F|AcCFAYQn%izT|j#*G~idL9PDWDgEy+HTHx;0i|lMBoItAOi;;mxSD zRF`S?l?^4OXg-vQ^QoED{IdsUcMq3DC++m=b*11w9(06+`oO5a7uJ4A3rWgLGw9e~BkaCRLDUYay5&3db{mM72T|jyRbD zbIg%ZYPVWiZpH9tTM@yCAc#(k{z4@fZ&0-63PIDpS5VWTQej$!i^SL@#OQY6P&A&} zSjWl&p)VL|Y8oGb7&QQhj9%oin(Us6d%W!eLQEYFf5RhI#XdmfgGDMg}p zhY$m>Elzy*v=qN|uX(TZ#-vi8O_8-xZ+jPOz-L%SW7=#e%{ zd`ht9s^mK>Y%l;OtEA{R)D!PcO>=7^f9L`PArTft`2%fg$h4yIRd*<&h9zY$77xx! zI@+qMDuq&PLPUA|Q%eVxOqLxU;@rI%Ma3MEGLd3P@E!0|H0% zcznb=g;Yi;ETl?Foyvf>qkt65wEq@%HU@<=$1#I$6}7yYUYnT-2hCvw50A9;f08(V zs5PPuZLvChS9o6iY$F)e;{iVz1X0N2k`9m`EUqvoI|RDuC6c`u&=&e!f2Qu>6*pVr z;TH8X66L~@;HNM*j^&FI8B5Mqm4Vb;T_L~#2&&21I88IakR-)D_>)FaQ-U+aV>y zj|ra51`nAy z&lF-r%!~0HLJE{Kji40;i(?STRNjFq@3_G|w0JVx3}8^Ier^iU_g68GcyKh6HsWPI zMBaTnDtFRsUp(bPNXCND3jL5PFaWgAUip^{Aql*qIw*BJLseO|e>x|~YOuDTDNhuE zb*Utt&@|Hs8X)QKpb}*fKyn0{_!KGvBD*ZfH>75lYUPqTaKgP(oP2x+3f^Sh_91!W zRAw3##F)wCy6UqxAUMHu%M?YCY#6L`y^`Pxy-Wg<9uBG`E#i^hs@0-pPg5tmUa8_pdn?35y^(PIw(eTlv#}CACdS_ z78P&B8Hp9bFa!<^qW!K6eRcRCBSa`%LU4q8j!1npOd-4ie-=>4C$sedBfv-4IEYaN zlMxx!B;h(s7Cu`hq_T`RA!G%zQ1=je=GML7&92UUxDe3I&XsZ$uyb|mA*?!aiS zO`VEIRY726tBsbRnLt$02~s0aqZv`AJ4J|~Zm*p<^wTM{#t-28F*?{$y@!%^LsI>M zU>p|wd7U0gQfwk&tChX2i^mLGj(pK!ULPR(`MVsUeq*==Y2oq6d>aMzlF;kbDJ7&faw)f#M4{%Q4F8kweR=!wK8>kZRXEufX)6EY0tyaB`$7f`}<4OViBb zFMuX}Q`rVr%|hjeMoOU*StOdIoxWiJhB9PwK>-MCDS)B2)n?HtfMMt#0EI=d7ZgWbB|0TofAOFqZ-{afe}(O2j5$dZt|GkKwb6_t(gK&r^OgiU zp#c&|A{q(S6Aw@q7}J2J(0>3(g|`7z6{0^xRX%7oIoa7ihOuh@iT2^%7-vTx>CUQ( z6v~i1QodkTs>tOsohmF7ZGeIzOW~rW)hi1nilsdWTal}b$_F?^i(58bhLCC6H9`nd zf0dpY2XE9-^J|kkR=)(I)VRm)=A4m&^i))qj1i+i+OZeJl`^_!+9X$1c|B|D&Q{36 zE|k!*H-9e(5RuVLyfXdF(fC?BR$AD-`HsGcaxso~m%N#a8L*9I2aW6-P-QMsZU@0x z9mL4qrI6H{FQM)60(cYJPdqhPmJ~e`fA~l8Q*&{Q0;$&xp$#!MDcQl1s%p_^aTy2s zH@l&qbRVitU?y0Nz%9R~gGv6cf}uAIhFTBGz9$8l3k)Whsd!g*NE&a(baJ?!Q`Z&- zv?(v@G9&sV2BF6w8U5Fe6HQ+ys%(saf&r;JhNC7G{!4qmJ?EK|hdz(P$j=A$|M zRR;ZB6&eT4kEN&z5p&Qh+f45Dau!8U0r11VNEe=RoaUjdlqV*#dejw!tgl#W+@Ous zTP|;CV$dG~iv+cv7zVwBTJTDde~{SuPY?iAIF2Ythm01(Jc6D*vih}(*U>+Nr;2QT zr_Vfiga|<7s%SDx4}A$JGl>S1!$RgC6^Os4UTGc$!tIR-l!~WTNnnt!cAgp26k6>w zjp)RUIiM+rL)cD>VJ$t((gK7?EA-J<9y&7gQzHXJ62=YPW}0pRJjaN7e}h$E@oj}v zS0w0)RbS_B9Q3qULHti$#I$=A5Kk7P*cJugfr&{hQ?Vt1S}%{$7I?_mB8Yy+mgb|@ zrZyRkD(+rt`AMt~*;z969$6?zqscsjqf9jS6b}_Q5(k2x>%I#x)`7o|ah)!R!}Vkl6JxnLx6f`G~@Sp1hhBvN__ zPbU@V+DDt5F^|%UD4}9|0#1D+;7^7KTm(Qz8#tt>eYiwB1CuJoe`&u5(t)K{_cWAm z3UNA@B=`X@6R5_|2o0ov~AMp zSt!WmwrIix{Fnhuf7KQ;CaHbmBQSaS%x=6Cf|pKr4>6IbCDA%CVt`F&xWj$EO<>;}k68GgkgeuyMPEyPkb9f1$?@AhwzSiQAr>fN@U~)CSiHqXFX&0@lLDVe9-D)W7E{uYr~-v>(>V z*fRF8-1jVE@12H-5SatJ_NAOJ;@SXpomi;g=oe_9{xP7F0!$Xgfkmy$!6Xj*@Uyv} z#FM7MXWb14SebMs#39%?qbm|YXgQ`*PBIV$#H7Upe@A5i>0|gy6ga3a#H&9*;%P%F zQ{wk#Lzu(`207albEkmskOiCi`-ovCZ`T7cEY9L&L7>ioXZQsB^3^h~Y5 zFw!uspEg}upCOb0=tX=qP70T)*sBR0BGS$lWqPC5ws_S*Up@%(>sYi>crZyPEkHjS zx*`BRe~G_e_6k@3u$Hu}vI^8EEiu1tB)&anOp>=$V9c#OV(}?VXrjv)dE>n)ND0yW z?SmSxT`7okX-S7sreh%KBh2RYJwu$xtfwD%yjJDV6+ull;hARA1&FO8L&g}gk@D{; zWJf4FQ9Hn4g!ll)nHpU$XYR~LszG0;r9)nkf8=AMoPRFIM98mA3G)t9#uZxGoR0MUzTHJ?ZeUZK|0F4#1)mHHj}mz#R|_c-QDb z1znh{Nn=9IjU-Hw+83w|hJgewF1v~0T)@$4!vHKpY>9bB$8pSEK*63JNRW>M0)t$; zVnf|ngT@6sa#-{J9I&Y5QG4#-n?sa5f5xDikfPgx#`G~HA|Ys-Ny6j}!~iGTFbo{w zPx1*SNL)wqb>gfDHe@>wft{i`%>dS*X{}gcbsQ0Glqh;)43#1j5H2YWfgN>?dvPSB zR=uEyo}AjJOwnYR%+`W^CQLRGloz5=;0{36U7y;*Gqjl-PouE9-mkHpvwZ0{f04e$ z)H+@3hBSj@B3lE{B5N9DHiG^Yh*Iy+G{^xm))ex)VO$%@tRXFv)nI%n=2R{qPYWDX zG|;~%A^tIAxe$_BCKxqG9}%rWL%rlt*f5vF^412&Z?1bs3r$(#G%gV=l_hG<1+{ZZ zhnxij4q581hwNQCR1mup^B2d1(;lEV17 z2!p&UEsbGru4a1fAqCXIM5Q#ANoY|j2){MbOhY(~6E;3LT}|~KSSvdOX~zRg+aOO79yY7n3)#gCBL6FCozb@Cr2QW!aaJEIWz8L8?7Tv~fA{5ei2`e*T9r;# zMV|nGOl0i-3fQo&LP+pkw4YgLl2pOKHh)e;~BVHkJi7kL2Z|Kk!U>Q<6=4`$;Ku9eFKG45~ zs{@TmjVPzyqQDDnfAIm3w_1?NQm|O&tJ#>Q)7wyQG2^WCxE*RS$g?KAhMa+6giSDV zfO1{{RQcTt7q$a2BM?i=f6;bXm%JxXcxU*)TM@#n z3r6Wx3SOd3@K{@nXp^19RC;MbYfFqZOVUBq_X)T25EB(UuXCq8(r;2Y>=wu?jBr&k z9hE~ zbf{0>L*DK&Ke9-~<&ZIJ4R$Y?LJQ9w7wECIZvzcce||b|HbNgxt3WwAn31YSAJ$Og zv3k65sc~LFoD;Og#qjY#0m;}T2FN(uqiJ)&doIjEnByoOVh<|;Q%HF(^TP5@gsFaHyO3;vW{(sl4m{JW%q4J$P8_aO@7ms1xoh; zG$CF$6(Lzv2AUMH3|2tvB{b$U>>dunNj*AmsglBCp^*g2YXu?375!Kek~o4?cN`TI zfg<7Xjn+B^t(=MICgUhIfUH9^Y63NrZN}Ozf9{5ZwWPY5VC8R&B2M~g;f|J zPP(Z~`t}GsmkZL|oqz7Ys0ZesGoatI(%ehoqY^-tv_jN})61q1odad!46M zfA3Ghh*kmW;yXxBVywHi)^l$RIy!*H1sigOi+TW7T}>17M}a1X*ZVBi1!geX;EHR0 zbkL5OTEhDHy%9Tz3|pAPbj(Qju+WKxFdxH7IN8$kELqFdu9;KYgt~!6JuS-`2>CgK zAtP=GAp*bW6%r!?Gcc6E8;95jr-@D+fA6U=R*Q;&$fyNPQnxfsdAbYNZ|q zHS3JcVd>U&FnZ{Pc6OYAN}_YgTc9Ad)<@kTQD>*$P~|A@Sccas=EVl)Q;;X@e+9-i zol@$hPJob1IxrV4L&`_Wu&cCiS)i@+UCR{68nY>5##qTtVReK=R4v@;fr0CP%-&r^ z=p8Gk`SB_w5EB5YEJYiKsDV5JM;lL`R|%OUE^Fzk0YpJM8cc~)o#3HHgLp#c0eOyZ$Am1d(gk@zkiAz2F5ALQeG3S6R^N~k6i_QFaw2XG~< zTQ=(!*4D-0Fpbz0XtqmjV*u_Mg<%kUuKVtZDY0Bi#eomYuW zxsy~kLeRmu3$YP#XB?7n(|gQTAvJu2o^TT|VgZ9xdfv6x013320KzU{=)@WZHKfjs#3=yFf14mJ3rdaVYg}ft z$ylf{y_v?_2xFR@Wmu~)>29=cJjN?~(bCZ{)2^~<9Dh95c7!=(1XvV1Ma(mg7cfnp z61)vmpOhZLVU&Oo#VTgqDhN|wVNB+UvG}@sGO>pV`V$DFHkv&2TuU6`(c^NSH?$oI zbUhq)(O>8Ah$|O#Qt^s-n6@$;GEQ6?ijFu< zSymOcAWkr{$-0<{#F3MsERhbT*w-f39UuScKB$^3(9?zX?3+QUg3lE031clm?J333{%h&lP0Js#;eG)H)_{D^&JLcicLTAu;iA9MLJ-Ez_P5k)eKQp0}V1^9^$ zs~uD^bRP>qR_GftKXakGa*CoOkY7dNF{z{Hm4MR+K&oa~d!NwbezYPf(Ru?1rs*~ejihiv8r=)mZzmSaw@B(GY4ZIs@(x#)Gxa{ zJC&(6V5`djR@?tlSNj}?XnEy{lp*x6(hY!+NLk6pP%s-JVF;+V`KW~O6RNp&7Xk|ttA(%G*DW@aGfIMtB=Br>fu5iCEo ze{%~w4zT*7Qm7uBCuq-!*+eANwKVW`JfkN1vyJF0Z=S}?A;Tn%P&>TVp$ADtA?-LY z(mEN`L+1=lEU_78)w`{&VvHmPm+Uq$a^@4m(@c^ou%VaLsbo$`+NlZ?617I<*&w2@ zrJW9_1Q_$mmC5G_1WlVbO}4WYS)KiZf2`}*!kMzgN{m)kV5tTb9AWx_O(WLJ`mLC? zf)P#DO3fE|ESRdysVCt!!ehtPn#84a8BJm(p@5iH+W?Z6K^Hhu3uWA-f=pMzwye@p zl}Lg)pDaKO;i4@=4zBes%0#Rf0+ki zB!G5)ZUHe^O-855wzi`a8C~QKMz)S^y@^SMe&h9TH;=;!J1+6kipvKpzzTf|S{SSh z_%mYpq+K{}EZfc-&9t11jD*eU@PDeZlx~@d{>qRB(vhB`u^%X9dpbp@$2wRJ`YotN zAurU>GV##RrO7-sCT#t%z<1vufAZIwVuWQ!8x~EH=FfPnWj&Vd%Z<{l17lp_-qO4U@QP8XKY{vjMYe4FBtiItgJyB?dV0YV6>2# z2{FSEM>uBvCe&u!PvVXeH(N6Tbp=JYHzgREo0SJ-ev5y&9G1gD0i8~#8≧Q~EQc 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 delta 67214 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 IM6N<$g1B)~Gynhq From b3afabfe09146f6544df199433229ea69c1ef581 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Mon, 14 Nov 2011 14:46:09 +0100 Subject: [PATCH 10/16] Native check mark in menus on Windows; no double check marks on Nimbus --- .../com/intellij/openapi/actionSystem/impl/ActionMenuItem.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionMenuItem.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionMenuItem.java index 6b3b167eb439..c2a7ad08fffc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionMenuItem.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionMenuItem.java @@ -268,7 +268,8 @@ public class ActionMenuItem extends JCheckBoxMenuItem { if (isToggleable() && myPresentation.getIcon() == null) { action.update(myEvent); myToggled = Boolean.TRUE.equals(myEvent.getPresentation().getClientProperty(Toggleable.SELECTED_PROPERTY)); - if (ActionPlaces.MAIN_MENU.equals(myPlace) && SystemInfo.isMacSystemMenu) { + if (ActionPlaces.MAIN_MENU.equals(myPlace) && SystemInfo.isMacSystemMenu || + UIUtil.isUnderWindowsLookAndFeel() || UIUtil.isUnderNimbusLookAndFeel()) { setState(myToggled); } else if (!(getUI() instanceof GtkMenuItemUI)) { From a675493f61ad12221d5aeb18531e6b19224c6d96 Mon Sep 17 00:00:00 2001 From: irengrig Date: Tue, 15 Nov 2011 14:38:33 +0400 Subject: [PATCH 11/16] git log anti-aliasing for inclined lines --- .../git4idea/src/git4idea/history/wholeTree/GraphGutter.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/GraphGutter.java b/plugins/git4idea/src/git4idea/history/wholeTree/GraphGutter.java index 8e117dd56daf..993932550f06 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/GraphGutter.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/GraphGutter.java @@ -410,6 +410,8 @@ public class GraphGutter { } private void drawConnectors(Graphics graphics, int lastIdx, int upBound, int idx, HashSet selected, List wiresGroups) { + ((Graphics2D) graphics).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + final Map groupIterators = myModel.getGroupIterators(idx); for (Map.Entry entry : groupIterators.entrySet()) { final WireEventsIterator eventsIterator = entry.getValue(); @@ -458,6 +460,8 @@ public class GraphGutter { drawConnectorsFragment(graphics, idxFrom, yOff, used, new WireEvent(lastIdx, ArrayUtil.EMPTY_INT_ARRAY), selected, wiresGroups, grey, wireModificationSet); } + + ((Graphics2D) graphics).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); } private void drawRepoBounds(Graphics graphics, int height, List wiresGroups) { From 834c4bc763ff6cf19ff4fcadea15658abb1fc965 Mon Sep 17 00:00:00 2001 From: irengrig Date: Tue, 15 Nov 2011 14:39:11 +0400 Subject: [PATCH 12/16] IDEA-75800 SVN "Merge from..." not working --- .../dialogs/SvnBranchPointsCalculator.java | 21 +++- .../idea/svn/history/FirstInBranch.java | 107 +++++----------- .../history/FirstInBranchAbstractBase.java | 114 ++++++++++++++++++ .../svn/history/FirstInBranchAccurate.java | 65 ++++++++++ 4 files changed, 222 insertions(+), 85 deletions(-) create mode 100644 plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranchAbstractBase.java create mode 100644 plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranchAccurate.java diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SvnBranchPointsCalculator.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SvnBranchPointsCalculator.java index 5380bac9ccae..b7147758667a 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SvnBranchPointsCalculator.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/SvnBranchPointsCalculator.java @@ -33,6 +33,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.svn.SvnVcs; import org.jetbrains.idea.svn.history.CopyData; import org.jetbrains.idea.svn.history.FirstInBranch; +import org.jetbrains.idea.svn.history.FirstInBranchAccurate; import java.io.DataInput; import java.io.DataOutput; @@ -248,7 +249,7 @@ public class SvnBranchPointsCalculator { public WrapperInvertor convert(final KeyData keyData) { final Ref> result = new Ref>(); - new FirstInBranch(myVcs, keyData.getRepoUrl(), keyData.getTargetUrl(), keyData.getSourceUrl(), new Consumer() { + final Consumer consumer = new Consumer() { public void consume(CopyData copyData) { if (copyData != null) { final boolean correct = copyData.isTrunkSupposedCorrect(); @@ -256,19 +257,29 @@ public class SvnBranchPointsCalculator { if (correct) { branchCopyData = new BranchCopyData(keyData.getSourceUrl(), copyData.getCopySourceRevision(), keyData.getTargetUrl(), copyData.getCopyTargetRevision()); - } else { + } + else { branchCopyData = new BranchCopyData(keyData.getTargetUrl(), copyData.getCopySourceRevision(), keyData.getSourceUrl(), copyData.getCopyTargetRevision()); } - result.set(new WrapperInvertor(! correct, branchCopyData)); + result.set(new WrapperInvertor(!correct, branchCopyData)); } } - }).run(); + }; + + new FirstInBranch(myVcs, keyData.getRepoUrl(), keyData.getTargetUrl(), keyData.getSourceUrl(), consumer).run(); - final WrapperInvertor invertor = result.get(); + WrapperInvertor invertor = result.get(); if (LOG.isDebugEnabled()) { LOG.debug("Loader returned: for key: " + keyData.toString() + " result: " + (invertor == null ? null : invertor.toString())); } + if (invertor == null) { + new FirstInBranchAccurate(myVcs, keyData.getRepoUrl(), keyData.getTargetUrl(), keyData.getSourceUrl(), consumer).run(); + invertor = result.get(); + if (LOG.isDebugEnabled()) { + LOG.debug("Accurate Loader returned: for key: " + keyData.toString() + " result: " + (invertor == null ? null : invertor.toString())); + } + } return invertor; } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranch.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranch.java index 97df183ba6f1..cea878769e11 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranch.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranch.java @@ -15,73 +15,32 @@ */ package org.jetbrains.idea.svn.history; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.util.Ref; -import com.intellij.openapi.vcs.ConcurrentTasks; import com.intellij.util.Consumer; import org.jetbrains.idea.svn.SvnVcs; -import org.tmatesoft.svn.core.*; -import org.tmatesoft.svn.core.internal.util.SVNPathUtil; +import org.tmatesoft.svn.core.ISVNLogEntryHandler; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNLogEntry; +import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.wc.SVNLogClient; import org.tmatesoft.svn.core.wc.SVNRevision; -import java.util.Map; - -public class FirstInBranch implements Runnable { - private final static Logger LOG = Logger.getInstance("#org.jetbrains.idea.svn.history.FirstInBranch"); - private final SvnVcs myVcs; - private final String myFullBranchUrl; - private final String myFullTrunkUrl; - private final String myBranchUrl; - private final String myTrunkUrl; - private final Consumer myConsumer; - - public FirstInBranch(final SvnVcs vcs, final String repositoryRoot, final String branchUrl, final String trunkUrl, final Consumer consumer) { - if (LOG.isDebugEnabled()) { - LOG.debug("FirstInBranch created with: repoRoot: " + repositoryRoot + " branchUrl: " + branchUrl + - " trunkUrl: " + trunkUrl); - } - myVcs = vcs; - myConsumer = consumer; - - myFullBranchUrl = branchUrl; - myFullTrunkUrl = trunkUrl; - myBranchUrl = relativePath(repositoryRoot, branchUrl); - myTrunkUrl = relativePath(repositoryRoot, trunkUrl); +public class FirstInBranch extends FirstInBranchAbstractBase { + public FirstInBranch(SvnVcs vcs, + String repositoryRoot, + String branchUrl, + String trunkUrl, + Consumer consumer) { + super(vcs, repositoryRoot, branchUrl, trunkUrl, consumer); } - private String relativePath(final String parent, final String child) { - String path = SVNPathUtil.getRelativePath(parent, child); - return path.startsWith("/") ? path : "/" + path; - } - - public void run() { - final SVNURL branchURL; - final SVNURL trunkURL; - try { - branchURL = SVNURL.parseURIEncoded(myFullBranchUrl); - trunkURL = SVNURL.parseURIEncoded(myFullTrunkUrl); - } - catch (SVNException e) { - LOG.info(e); - myConsumer.consume(null); - return; - } - - final ConcurrentTasks tasks = - new ConcurrentTasks(ProgressManager.getInstance().getProgressIndicator(), createTask(branchURL), createTask(trunkURL)); - tasks.compute(); - if (tasks.isResultKnown()) { - myConsumer.consume(tasks.getResult()); - } else { - myConsumer.consume(null); - } - } - - private Consumer> createTask(final SVNURL branchURL) { + protected Consumer> createTask(final SVNURL branchURL) { return new Consumer>() { public void consume(final Consumer copyDataConsumer) { + if (LOG.isDebugEnabled()) { + LOG.debug("FirstInBranch started for: " + branchURL.toString()); + } final SVNLogClient logClient = myVcs.createLogClient(); final long start1 = getStart(logClient, branchURL); if (start1 > 0) { @@ -96,11 +55,17 @@ public class FirstInBranch implements Runnable { LOG.info(e); } } + if (LOG.isDebugEnabled()) { + LOG.debug("FirstInBranch finished for: " + branchURL.toString()); + } } }; } private static long getStart(final SVNLogClient logClient, final SVNURL url) { + if (LOG.isDebugEnabled()) { + LOG.debug("getting start revision for: " + url); + } final Ref myRevisionCandidate = new Ref(0L); try { logClient.doLog(url, null, SVNRevision.UNDEFINED, SVNRevision.HEAD, SVNRevision.create(0), @@ -109,36 +74,18 @@ public class FirstInBranch implements Runnable { ProgressManager.checkCanceled(); myRevisionCandidate.set(logEntry.getRevision()); + if (LOG.isDebugEnabled()) { + LOG.debug("setting in cycle start revision for: " + url + " as: " + myRevisionCandidate.get()); + } } }); } catch (SVNException e) { LOG.info(e); } + if (LOG.isDebugEnabled()) { + LOG.debug("start revision for: " + url + " is: " + myRevisionCandidate.get()); + } return myRevisionCandidate.get(); } - - private void checkForCopy(final SVNLogEntry logEntry, final Consumer result) { - final Map map = logEntry.getChangedPaths(); - for (Object o : map.values()) { - final SVNLogEntryPath path = (SVNLogEntryPath) o; - final String localPath = path.getPath(); - final String copyPath = path.getCopyPath(); - if (LOG.isDebugEnabled()) { - LOG.debug("localPath: " + localPath + " copy path: " + copyPath); - } - - if ('A' == path.getType()) { - if ((myBranchUrl.equals(localPath) || SVNPathUtil.isAncestor(localPath, myBranchUrl)) && - ((myTrunkUrl.equals(copyPath)) || SVNPathUtil.isAncestor(copyPath, myTrunkUrl))) { - result.consume(new CopyData(path.getCopyRevision(), logEntry.getRevision(), true)); - } else { - if ((myBranchUrl.equals(copyPath) || SVNPathUtil.isAncestor(copyPath, myBranchUrl)) && - ((myTrunkUrl.equals(localPath)) || SVNPathUtil.isAncestor(localPath, myTrunkUrl))) { - result.consume(new CopyData(path.getCopyRevision(), logEntry.getRevision(), false)); - } - } - } - } - } } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranchAbstractBase.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranchAbstractBase.java new file mode 100644 index 000000000000..1626bd2078bd --- /dev/null +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranchAbstractBase.java @@ -0,0 +1,114 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.idea.svn.history; + +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.vcs.ConcurrentTasks; +import com.intellij.util.Consumer; +import org.jetbrains.idea.svn.SvnVcs; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNLogEntry; +import org.tmatesoft.svn.core.SVNLogEntryPath; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.internal.util.SVNPathUtil; + +import java.util.Map; + +/** + * Created by IntelliJ IDEA. + * User: Irina.Chernushina + * Date: 11/15/11 + * Time: 1:30 PM + */ +public abstract class FirstInBranchAbstractBase implements Runnable { + protected final static Logger LOG = Logger.getInstance("#org.jetbrains.idea.svn.history.FirstInBranch"); + protected final SvnVcs myVcs; + protected final String myFullBranchUrl; + protected final String myFullTrunkUrl; + protected final String myBranchUrl; + protected final String myTrunkUrl; + protected final Consumer myConsumer; + + public FirstInBranchAbstractBase(final SvnVcs vcs, final String repositoryRoot, final String branchUrl, final String trunkUrl, + final Consumer consumer) { + if (LOG.isDebugEnabled()) { + LOG.debug("FirstInBranchAbstractBase created with: repoRoot: " + repositoryRoot + " branchUrl: " + branchUrl + + " trunkUrl: " + trunkUrl); + } + myVcs = vcs; + myConsumer = consumer; + + myFullBranchUrl = branchUrl; + myFullTrunkUrl = trunkUrl; + myBranchUrl = relativePath(repositoryRoot, branchUrl); + myTrunkUrl = relativePath(repositoryRoot, trunkUrl); + } + + private String relativePath(final String parent, final String child) { + String path = SVNPathUtil.getRelativePath(parent, child); + return path.startsWith("/") ? path : "/" + path; + } + + public void run() { + final SVNURL branchURL; + final SVNURL trunkURL; + try { + branchURL = SVNURL.parseURIEncoded(myFullBranchUrl); + trunkURL = SVNURL.parseURIEncoded(myFullTrunkUrl); + } + catch (SVNException e) { + LOG.info(e); + myConsumer.consume(null); + return; + } + + final ConcurrentTasks tasks = + new ConcurrentTasks(ProgressManager.getInstance().getProgressIndicator(), createTask(branchURL), createTask(trunkURL)); + tasks.compute(); + if (tasks.isResultKnown()) { + myConsumer.consume(tasks.getResult()); + } else { + myConsumer.consume(null); + } + } + + protected abstract Consumer> createTask(final SVNURL branchURL); + + protected void checkForCopy(final SVNLogEntry logEntry, final Consumer result) { + final Map map = logEntry.getChangedPaths(); + for (Object o : map.values()) { + final SVNLogEntryPath path = (SVNLogEntryPath) o; + final String localPath = path.getPath(); + final String copyPath = path.getCopyPath(); + if (LOG.isDebugEnabled()) { + LOG.debug("localPath: " + localPath + " copy path: " + copyPath + " revision: " + logEntry.getRevision()); + } + + if ('A' == path.getType()) { + if ((myBranchUrl.equals(localPath) || SVNPathUtil.isAncestor(localPath, myBranchUrl)) && + ((myTrunkUrl.equals(copyPath)) || SVNPathUtil.isAncestor(copyPath, myTrunkUrl))) { + result.consume(new CopyData(path.getCopyRevision(), logEntry.getRevision(), true)); + } else { + if ((myBranchUrl.equals(copyPath) || SVNPathUtil.isAncestor(copyPath, myBranchUrl)) && + ((myTrunkUrl.equals(localPath)) || SVNPathUtil.isAncestor(localPath, myTrunkUrl))) { + result.consume(new CopyData(path.getCopyRevision(), logEntry.getRevision(), false)); + } + } + } + } + } +} diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranchAccurate.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranchAccurate.java new file mode 100644 index 000000000000..a733183a487b --- /dev/null +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/FirstInBranchAccurate.java @@ -0,0 +1,65 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.idea.svn.history; + +import com.intellij.util.Consumer; +import org.jetbrains.idea.svn.SvnVcs; +import org.tmatesoft.svn.core.ISVNLogEntryHandler; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.SVNLogEntry; +import org.tmatesoft.svn.core.SVNURL; +import org.tmatesoft.svn.core.wc.SVNLogClient; +import org.tmatesoft.svn.core.wc.SVNRevision; + +/** + * Created by IntelliJ IDEA. + * User: Irina.Chernushina + * Date: 11/15/11 + * Time: 1:23 PM + */ +public class FirstInBranchAccurate extends FirstInBranchAbstractBase { + public FirstInBranchAccurate(SvnVcs vcs, + String repositoryRoot, + String branchUrl, + String trunkUrl, + Consumer consumer) { + super(vcs, repositoryRoot, branchUrl, trunkUrl, consumer); + } + + @Override + protected Consumer> createTask(final SVNURL branchURL) { + return new Consumer>() { + public void consume(final Consumer copyDataConsumer) { + if (LOG.isDebugEnabled()) { + LOG.debug("FirstInBranchAccurate started for: " + branchURL.toString()); + } + final SVNLogClient logClient = myVcs.createLogClient(); + try { + logClient.doLog(branchURL, null, SVNRevision.UNDEFINED, SVNRevision.HEAD, SVNRevision.create(0), true, true, 1, new ISVNLogEntryHandler() { + public void handleLogEntry(SVNLogEntry logEntry) throws SVNException { + checkForCopy(logEntry, copyDataConsumer); + } + }); + } catch (SVNException e) { + LOG.info(e); + } + if (LOG.isDebugEnabled()) { + LOG.debug("FirstInBranchAccurate finished for: " + branchURL.toString()); + } + } + }; + } +} From 2d6bb54d9f86c66780a7ddc2194c3b2a11afc5c3 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Tue, 15 Nov 2011 12:02:03 +0100 Subject: [PATCH 13/16] New home for PsiWhiteSpace --- .../intellij/psi/impl/source/tree/PsiWhiteSpaceImpl.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/tree/PsiWhiteSpaceImpl.java b/platform/core-impl/src/com/intellij/psi/impl/source/tree/PsiWhiteSpaceImpl.java index a13ccd96802b..a482ac2deb17 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/source/tree/PsiWhiteSpaceImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/source/tree/PsiWhiteSpaceImpl.java @@ -21,7 +21,6 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiWhiteSpace; import com.intellij.psi.TokenType; -import com.intellij.psi.templateLanguages.OuterLanguageElement; import org.jetbrains.annotations.NotNull; public class PsiWhiteSpaceImpl extends LeafPsiElement implements PsiWhiteSpace { @@ -41,8 +40,7 @@ public class PsiWhiteSpaceImpl extends LeafPsiElement implements PsiWhiteSpace { @Override @NotNull public Language getLanguage() { - PsiElement master = getNextSibling(); - if (master == null || master instanceof OuterLanguageElement) master = getParent(); - return master.getLanguage(); + final PsiElement master = getParent(); + return master != null ? master.getLanguage() : Language.ANY; } } From fe5f20c043c8e964620dc367d12efac3541c366f Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Tue, 15 Nov 2011 15:32:48 +0400 Subject: [PATCH 14/16] IDEA-76562 Suppressing spell checking for eastern Asian languages looks incomplete --- .../inspections/IdentifierSplitter.java | 17 +++++++++++++- .../inspections/PlainTextSplitter.java | 22 +++++++++---------- .../testData/inspection/java/Japaneese.java | 2 +- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/plugins/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java b/plugins/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java index 8c8f124659e8..66c65d958102 100644 --- a/plugins/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java +++ b/plugins/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java @@ -84,7 +84,7 @@ public class IdentifierSplitter extends BaseSplitter { } @NotNull - public static List splitByCase(@NotNull String text, @NotNull TextRange range) { + private static List splitByCase(@NotNull String text, @NotNull TextRange range) { //System.out.println("text = " + text + " range = " + range); List result = new ArrayList(); int i = range.getStartOffset(); @@ -92,6 +92,21 @@ public class IdentifierSplitter extends BaseSplitter { int prevType = Character.MATH_SYMBOL; while (i < range.getEndOffset()) { final char ch = text.charAt(i); + if (ch >= '\u3040' && ch <= '\u309f' || // Hiragana + ch >= '\u30A0' && ch <= '\u30ff' || // Katakana + ch >= '\u4E00' && ch <= '\u9FFF' || // CJK Unified ideographs + ch >= '\uF900' && ch <= '\uFAFF' || // CJK Compatibility Ideographs + ch >= '\uFF00' && ch <= '\uFFEF' //Halfwidth and Fullwidth Forms of Katakana & Fullwidth ASCII variants + ) { + if (s >= 0) { + add(text, result, i, s); + s = -1; + } + prevType = Character.MATH_SYMBOL; + ++i; + continue; + } + final int type = Character.getType(ch); if (type == Character.LOWERCASE_LETTER || type == Character.UPPERCASE_LETTER || diff --git a/plugins/spellchecker/src/com/intellij/spellchecker/inspections/PlainTextSplitter.java b/plugins/spellchecker/src/com/intellij/spellchecker/inspections/PlainTextSplitter.java index 579536abd1b1..0ec175a083bd 100644 --- a/plugins/spellchecker/src/com/intellij/spellchecker/inspections/PlainTextSplitter.java +++ b/plugins/spellchecker/src/com/intellij/spellchecker/inspections/PlainTextSplitter.java @@ -52,17 +52,17 @@ public class PlainTextSplitter extends BaseSplitter { if (Verifier.checkCharacterData(substring) != null) { return; } - for(int i = 0; i < text.length(); ++i) { - final char ch = text.charAt(i); - if (ch >= '\u3040' && ch <= '\u309f' || // Hiragana - ch >= '\u30A0' && ch <= '\u30ff' || // Katakana - ch >= '\u4E00' && ch <= '\u9FFF' || // CJK Unified ideographs - ch >= '\uF900' && ch <= '\uFAFF' || // CJK Compatibility Ideographs - ch >= '\uFF00' && ch <= '\uFFEF' //Halfwidth and Fullwidth Forms of Katakana & Fullwidth ASCII variants - ) { - return; - } - } + //for(int i = 0; i < text.length(); ++i) { + // final char ch = text.charAt(i); + // if (ch >= '\u3040' && ch <= '\u309f' || // Hiragana + // ch >= '\u30A0' && ch <= '\u30ff' || // Katakana + // ch >= '\u4E00' && ch <= '\u9FFF' || // CJK Unified ideographs + // ch >= '\uF900' && ch <= '\uFAFF' || // CJK Compatibility Ideographs + // ch >= '\uFF00' && ch <= '\uFFEF' //Halfwidth and Fullwidth Forms of Katakana & Fullwidth ASCII variants + // ) { + // return; + // } + //} List toCheck; if (text.indexOf('@')>0) { diff --git a/plugins/spellchecker/testData/inspection/java/Japaneese.java b/plugins/spellchecker/testData/inspection/java/Japaneese.java index 617fc02f086d..3eae1726a235 100644 --- a/plugins/spellchecker/testData/inspection/java/Japaneese.java +++ b/plugins/spellchecker/testData/inspection/java/Japaneese.java @@ -16,7 +16,7 @@ /** CJK Compatibility Ideographs (F900 - FAFF) * 﨎鶴﨎鶴﨎鶴 */ - +/* 私はJabaが好きです。私はJabaが好きです。*/ /** * プロセス毎に使われるコールスタックは一つだけ !!! */ From fc14cfb25dee2edd238c12f007179afda112e235 Mon Sep 17 00:00:00 2001 From: "kirill.safonov" Date: Tue, 15 Nov 2011 11:04:34 +0400 Subject: [PATCH 15/16] system-dependent slashes --- .../com/intellij/openapi/vcs/actions/DiffActionExecutor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/DiffActionExecutor.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/DiffActionExecutor.java index a888c2503f68..6e43f994fb7a 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/DiffActionExecutor.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/DiffActionExecutor.java @@ -99,7 +99,8 @@ public abstract class DiffActionExecutor { final Ref requestRef = new Ref(); final Task.Backgroundable task = new Task.Backgroundable(myProject, - VcsBundle.message("show.diff.progress.title.detailed", mySelectedFile.getPath()), true, BackgroundFromStartOption.getInstance()) { + VcsBundle.message("show.diff.progress.title.detailed", mySelectedFile.getPresentableUrl()), + true, BackgroundFromStartOption.getInstance()) { public void run(@NotNull ProgressIndicator indicator) { final VcsRevisionNumber revisionNumber = getRevisionNumber(); From fe46aabddd9112023ebb6caa48153ea7790bf7a1 Mon Sep 17 00:00:00 2001 From: "kirill.safonov" Date: Tue, 15 Nov 2011 12:26:18 +0400 Subject: [PATCH 16/16] all capitals in dialog title --- .../platform-resources-en/src/messages/VcsBundle.properties | 1 + .../openapi/vcs/annotate/ShowAllAffectedGenericAction.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/platform-resources-en/src/messages/VcsBundle.properties b/platform/platform-resources-en/src/messages/VcsBundle.properties index f86974145a95..5d6f22501a47 100644 --- a/platform/platform-resources-en/src/messages/VcsBundle.properties +++ b/platform/platform-resources-en/src/messages/VcsBundle.properties @@ -565,6 +565,7 @@ todo.handler.only.in.changed=There {0,choice, 1#was one|2#were {0}} todo.handler.only.both=There were {0, choice, 1#one|2#{0}} added or edited,
\ and {1, choice, 1#one|2#{1}} located in changed {1,choice, 1#fragment|2#fragments} TODO items found.
\ {2,choice, 0#|1#One file was skipped.|2#{2} files were skipped.}Would you like to review them? +paths.affected.in.revision=Paths Affected in Revision {0} #Dir diff refresh.failed.message=Refresh failed: {0} diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/annotate/ShowAllAffectedGenericAction.java b/platform/vcs-api/src/com/intellij/openapi/vcs/annotate/ShowAllAffectedGenericAction.java index 5b2b63558e35..3ba8d25cd226 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/annotate/ShowAllAffectedGenericAction.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/annotate/ShowAllAffectedGenericAction.java @@ -60,7 +60,7 @@ public class ShowAllAffectedGenericAction extends AnAction { final AbstractVcs vcs = ProjectLevelVcsManager.getInstance(project).findVcsByName(vcsKey.getName()); if (vcs == null) return; - final String title = "Paths affected in revision " + revision.asString(); + final String title = VcsBundle.message("paths.affected.in.revision", revision.asString()); final CommittedChangeList[] list = new CommittedChangeList[1]; final VcsException[] exc = new VcsException[1]; ProgressManager.getInstance().run(new Task.Backgroundable(project, title, true, BackgroundFromStartOption.getInstance()) {