From b0539f0ed9e848afd6df2cb4d01eb5af70168df8 Mon Sep 17 00:00:00 2001 From: Damian Jansen Date: Thu, 8 Sep 2011 12:11:11 +1000 Subject: [PATCH] QtQuick 2.0 elements system test Added an application to browse elements. A very basic acceptance test method that each can be performed in under a minute. Added the .qtt for formal usage. Also moved qsgimage system test. Change-Id: Iada9804e2efe1339a072935647962e54aa3b4c6f Reviewed-on: http://codereview.qt-project.org/4380 Reviewed-by: Michael Brasser --- tests/system/sys_elements.qtt | 413 ++++++++++++++++++ .../elements/content/AnimatedImageElement.qml | 111 +++++ .../elements/content/AppContainer.qml | 71 +++ .../elements/content/BorderImageElement.qml | 97 ++++ .../elements/content/BugPanel.qml | 57 +++ .../elements/content/ColumnElement.qml | 85 ++++ .../content/DoubleValidatorElement.qml | 124 ++++++ .../elements/content/FlickableElement.qml | 135 ++++++ .../elements/content/FlipableElement.qml | 105 +++++ .../elements/content/FlowElement.qml | 105 +++++ .../elements/content/FocusScopeElement.qml | 71 +++ .../elements/content/FontLoaderElement.qml | 97 ++++ .../elements/content/GradientElement.qml | 62 +++ .../elements/content/GridElement.qml | 95 ++++ .../elements/content/GridViewElement.qml | 120 +++++ .../elements/content/Help.qml | 52 +++ .../elements/content/HelpDesk.qml | 58 +++ .../elements/content/ImageElement.qml | 116 +++++ .../elements/content/IntValidatorElement.qml | 120 +++++ .../elements/content/KeysElement.qml | 114 +++++ .../elements/content/ListViewElement.qml | 171 ++++++++ .../elements/content/MouseAreaElement.qml | 153 +++++++ .../content/ParallelAnimationElement.qml | 94 ++++ .../elements/content/RectangleElement.qml | 93 ++++ .../content/RegExpValidatorElement.qml | 113 +++++ .../elements/content/RepeaterElement.qml | 96 ++++ .../elements/content/RowElement.qml | 86 ++++ .../elements/content/ScaleElement.qml | 94 ++++ .../content/SequentialAnimationElement.qml | 94 ++++ .../elements/content/SystemPaletteElement.qml | 92 ++++ .../elements/content/SystemTestHelp.qml | 74 ++++ .../elements/content/TextEditElement.qml | 144 ++++++ .../elements/content/TextElement.qml | 101 +++++ .../elements/content/TextInputElement.qml | 139 ++++++ .../elements/content/XmlListModelElement.qml | 154 +++++++ .../elements/content/cookbook.xml | 62 +++ .../elements/content/elements.js | 56 +++ .../elements/content/font/Vera.ttf | Bin 0 -> 65932 bytes .../content/pics/animatednokialogo.gif | Bin 0 -> 151202 bytes .../elements/content/pics/arrow.png | Bin 0 -> 43908 bytes .../elements/content/pics/cat.gif | Bin 0 -> 27392 bytes .../elements/content/pics/logo.png | Bin 0 -> 1478 bytes .../elements/content/pics/nokialogo.gif | Bin 0 -> 1785 bytes .../elements/content/pics/qml-borderimage.png | Bin 0 -> 5580 bytes .../elements/content/pics/speech-bubble.png | Bin 0 -> 1864 bytes tests/testapplications/elements/elements.qml | 72 +++ .../qsgimage/ImageNG.qml | 0 .../qsgimage/img-align.qml | 0 .../qsgimage/qt-logo.png | Bin 49 files changed, 4096 insertions(+) create mode 100644 tests/system/sys_elements.qtt create mode 100644 tests/testapplications/elements/content/AnimatedImageElement.qml create mode 100644 tests/testapplications/elements/content/AppContainer.qml create mode 100644 tests/testapplications/elements/content/BorderImageElement.qml create mode 100644 tests/testapplications/elements/content/BugPanel.qml create mode 100644 tests/testapplications/elements/content/ColumnElement.qml create mode 100644 tests/testapplications/elements/content/DoubleValidatorElement.qml create mode 100644 tests/testapplications/elements/content/FlickableElement.qml create mode 100644 tests/testapplications/elements/content/FlipableElement.qml create mode 100644 tests/testapplications/elements/content/FlowElement.qml create mode 100644 tests/testapplications/elements/content/FocusScopeElement.qml create mode 100644 tests/testapplications/elements/content/FontLoaderElement.qml create mode 100644 tests/testapplications/elements/content/GradientElement.qml create mode 100644 tests/testapplications/elements/content/GridElement.qml create mode 100644 tests/testapplications/elements/content/GridViewElement.qml create mode 100644 tests/testapplications/elements/content/Help.qml create mode 100644 tests/testapplications/elements/content/HelpDesk.qml create mode 100644 tests/testapplications/elements/content/ImageElement.qml create mode 100644 tests/testapplications/elements/content/IntValidatorElement.qml create mode 100644 tests/testapplications/elements/content/KeysElement.qml create mode 100644 tests/testapplications/elements/content/ListViewElement.qml create mode 100644 tests/testapplications/elements/content/MouseAreaElement.qml create mode 100644 tests/testapplications/elements/content/ParallelAnimationElement.qml create mode 100644 tests/testapplications/elements/content/RectangleElement.qml create mode 100644 tests/testapplications/elements/content/RegExpValidatorElement.qml create mode 100644 tests/testapplications/elements/content/RepeaterElement.qml create mode 100644 tests/testapplications/elements/content/RowElement.qml create mode 100644 tests/testapplications/elements/content/ScaleElement.qml create mode 100644 tests/testapplications/elements/content/SequentialAnimationElement.qml create mode 100644 tests/testapplications/elements/content/SystemPaletteElement.qml create mode 100644 tests/testapplications/elements/content/SystemTestHelp.qml create mode 100644 tests/testapplications/elements/content/TextEditElement.qml create mode 100644 tests/testapplications/elements/content/TextElement.qml create mode 100644 tests/testapplications/elements/content/TextInputElement.qml create mode 100644 tests/testapplications/elements/content/XmlListModelElement.qml create mode 100644 tests/testapplications/elements/content/cookbook.xml create mode 100644 tests/testapplications/elements/content/elements.js create mode 100644 tests/testapplications/elements/content/font/Vera.ttf create mode 100644 tests/testapplications/elements/content/pics/animatednokialogo.gif create mode 100644 tests/testapplications/elements/content/pics/arrow.png create mode 100644 tests/testapplications/elements/content/pics/cat.gif create mode 100644 tests/testapplications/elements/content/pics/logo.png create mode 100644 tests/testapplications/elements/content/pics/nokialogo.gif create mode 100644 tests/testapplications/elements/content/pics/qml-borderimage.png create mode 100644 tests/testapplications/elements/content/pics/speech-bubble.png create mode 100644 tests/testapplications/elements/elements.qml rename tests/{systemtests/declarative => testapplications}/qsgimage/ImageNG.qml (100%) rename tests/{systemtests/declarative => testapplications}/qsgimage/img-align.qml (100%) rename tests/{systemtests/declarative => testapplications}/qsgimage/qt-logo.png (100%) diff --git a/tests/system/sys_elements.qtt b/tests/system/sys_elements.qtt new file mode 100644 index 0000000000..1f1fbb7ab2 --- /dev/null +++ b/tests/system/sys_elements.qtt @@ -0,0 +1,413 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//TESTED_COMPONENT=qtdeclarative +var adv = "Press the Advance button"; +testcase = { + + rectangle: function() + { + // Test Meta-data + testApplication = "Elements: Rectangle"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the rectangle element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Rectangle list item | Verify that the Rectangle displayed in the center is small, blue, with a thin red angular border | + | '+adv+' | The rectangle should now be twice the size as the previous step | + | '+adv+' | The rectangle should now have rounded corners | + | '+adv+' | The rectangle color should have shifted to green | + | '+adv+' | The rectangle border should have increased significantly | + | '+adv+' | The rectangle border should have now be small, blue, with a thin red angular border |')); + }, + + image: function() + { + // Test Meta-data + testApplication = "Elements: Image"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the Image element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Image list item | Verify it shows the Nokia logo, large and still slightly stretched | + | '+adv+' | Verify it shows the Nokia logo normally, longer horizontally | + | '+adv+' | Verify it shows the Nokia logo with the sides cut | + | '+adv+' | Verify it shows the Nokia logo repeated both horizontally and vertically | + | '+adv+' | Verify it shows the Nokia logo repeated vertically only | + | '+adv+' | Verify it shows the Nokia logo repeated horizontally only |')); + }, + + animatedimage: function() + { + // Test Meta-data + testApplication = "Elements: AnimatedImage"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the AnimatedImage element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the AnimatedImage list item | Verify it shows a small animated icon, but slightly stretched. | + | '+adv+' | Verify it shows the animated icon, large and still slightly stretched | + | '+adv+' | Verify it shows the animated icon normally, square | + | '+adv+' | Verify it shows the animated icon with the sides cut | + | '+adv+' | Verify it shows the animated icon repeated both horizontally and vertically | + | '+adv+' | Verify it shows the animated icon repeated vertically only | + | '+adv+' | Verify it shows the animated icon repeated horizontally only |')); + }, + + borderimage: function() + { + // Test Meta-data + testApplication = "Elements: BorderImage"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the BorderImage element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the BorderImage list item | Verify it shows a small framed image | + | '+adv+' | Verify it shows the frame, large and each side stretched | + | '+adv+' | Verify it shows the frame with slightly off centere sides | + | '+adv+' | Verify it shows the frame with uniformly repeated sides |')); + }, + + systempalette: function() + { + // Test Meta-data + testApplication = "Elements: SystemPalette"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the SystemPalette element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the SystemPalette list item | Verify it shows a mockup of an application | + | '+adv+' | Verify it shows the colors similar to the system it is running on | + | '+adv+' | Verify it shows the new coloring |')); + }, + + text: function() + { + // Test Meta-data + testApplication = "Elements: Text"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the Text element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Text list item | Verify it shows a Hello message | + | '+adv+' | Verify it shows the text increased to twice the previous size, and wrapped to two lines | + | '+adv+' | Verify it shows the text smoothly changed color to blue over a second | + | '+adv+' | Verify it shows the text as blue, bolded and in italic | + | '+adv+' | Verify it shows the text as alternating between green and black |')); + }, + + textinput: function() + { + // Test Meta-data + testApplication = "Elements: TextInput"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the TextInput element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the TextInput list item | Verify it shows two fields, the green one displaying a Hello message | + | '+adv+' | Verify it selects the last word - TextInput - of the green field | + | '+adv+' | Verify it animates a copy of the selected text to the gray field | + | '+adv+' | Verify it shows the text as asterisks |')); + }, + + textedit: function() + { + // Test Meta-data + testApplication = "Elements: TextEdit"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the TextEdit element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the TextEdit list item | Verify it shows two large fields | + | '+adv+' | Verify it selects the last word - TextEdit - of the green field | + | '+adv+' | Verify it animates a copy of the selected text to the gray field | + | '+adv+' | Verify it shows more text, with the end disappearing past the right side of the green field | + | '+adv+' | Verify it shows the full text, properly wrapped within the green field |')); + }, + + fontloader: function() + { + // Test Meta-data + testApplication = "Elements: FontLoader"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the FontLoader element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the FontLoader list item | Verify it shows a box with a named font in the center | + | '+adv+' | Verify the font has changed along with the named font text | + | '+adv+' | Verify the font is changing every half second, for at least a few different fonts, without error | + | '+adv+' | Verify the font has changed to a Neon Lights font | + | '+adv+' | Verify the font has reverted to a named system font |')); + }, + + flipable: function() { + // Test Meta-data + testApplication = "Elements: Flipable"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the Flipable element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Flipable list item | Verify it shows a large green rectangle | + | '+adv+' | Verify it slowly spins horizontally to show a red rectangle on the back | + | '+adv+' | Verify it again slowly spins horizontally to show a green rectangle on the front | + | '+adv+' | Verify it again slowly spins vertically to show a red rectangle on the back | + | '+adv+' | Verify it again slowly spins horizontally to show a green rectangle on the front |')); + }, + + intvalidator: function() + { + // Test Meta-data + testApplication = "Elements: IntValidator"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the IntValidator element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the IntValidator list item | Verify it shows a green field with the number 0. The upper and lower bounds are 30 and -50 | + | '+adv+' | Verify the number is now -80, and the field is now red | + | '+adv+' | Verify the number is now -50, and the field is now green | + | '+adv+' | Verify the number is now 35, and the field is now red | + | '+adv+' | Verify the top value has changed to 35, and the field is now green | + | '+adv+' | Verify the bottom has changed to 36, and the field is now red |')); + }, + + doublevalidator: function() + { + // Test Meta-data + testApplication = "Elements: DoubleValidator"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the DoubleValidator element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the DoubleValidator list item | Verify it shows a green field with the number 0. The upper and lower bounds are 30.06 and 30.02 | + | '+adv+' | Verify the number is now 30.01, and the field is now red | + | '+adv+' | Verify the number is now 30.02, and the field is now green | + | '+adv+' | Verify the number is now 30.08, and the field is now red | + | '+adv+' | Verify the top value has changed to 30.09, and the field is now green | + | '+adv+' | Verify the bottom has changed to 40.05, and the field is now red |')); + }, + + regexpvalidator: function() + { + // Test Meta-data + testApplication = "Elements: RegExpValidator"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the RegExpValidator element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the RegExpValidator list item | Verify it shows a green field with the text abc | + | '+adv+' | Verify the text is now 123, and the field is now red | + | '+adv+' | Verify the number is now aa, and the field is still red | + | '+adv+' | Verify the number is now abcd, and the field is still red | + | '+adv+' | Verify the regex value has changed to allow four characters, and the field is now green |')); + }, + + column: function() + { + // Test Meta-data + testApplication = "Elements: Column"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the Column element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Column list item | Verify it shows three rectangles - green, red and black | + | '+adv+' | Verify the blue rectangle slid in to place between the red and black rectangles |')); + }, + + row: function() + { + // Test Meta-data + testApplication = "Elements: Row"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the Row element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Row list item | Verify it shows three rectangles - green, red and black | + | '+adv+' | Verify the blue rectangle slid in to place between the red and black rectangles |')); + }, + + flow: function() + { + // Test Meta-data + testApplication = "Elements: Flow"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the Flow element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Flow list item | Verify it shows three rectangles - green (1), red (2, to the right of 1) and black (4, below 1) | + | '+adv+' | Verify the blue rectangle appears where the black was, the black sliding to the right | + | '+adv+' | Verify the direction of the numbers is now in two columns | + | '+adv+' | Verify the direction of the numbers has now reversed, still in columns, but progressing from the right to left |')); + }, + + grid: function() + { + // Test Meta-data + testApplication = "Elements: Grid"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the Grid element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Grid list item | Verify it shows four rectangles - green, a red to the right and a black below | + | '+adv+' | Verify the blue rectangle slid in to place previously held by the black rectangle |')); + }, + + repeater: function() + { + // Test Meta-data + testApplication = "Elements: Repeater"; + testBinary = "tests/testapplications/elements/elements"; + testGoal = "Verify the Repeater element is shown correctly"; + testPreconditions = ""; + testGroups = "BAT"; + + // Test Steps + prompt(twiki('---+++ ' + testApplication + '

+ *Goal:* ' + testGoal + '
+ *Pre-Requisites:* ' + testPreconditions + '
+ *Tested Binary:* ' + testBinary + '
+ | Select the Repeater list item | Verify it shows five blue rectangles with text and a green rectangle at the bottom | + | '+adv+' | Verify the third blue rectangle is now gone and the others bounced up to fill the gap |')); + } +} + + diff --git a/tests/testapplications/elements/content/AnimatedImageElement.qml b/tests/testapplications/elements/content/AnimatedImageElement.qml new file mode 100644 index 0000000000..be772640b2 --- /dev/null +++ b/tests/testapplications/elements/content/AnimatedImageElement.qml @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: animatedimageelementtest + anchors.fill: parent + property string testtext: "" + + Item { + id: animatedimageelementcontainer + height: 100; width: 100 + anchors.centerIn: parent + AnimatedImage { id: animatedimageelement; anchors.fill: parent; source: "pics/cat.gif" } + Behavior on height { NumberAnimation { duration: 1000 } } + Behavior on width { NumberAnimation { duration: 1000 } } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: animatedimageelementtest + testtext: "This is an AnimatedImage element. It should be small and showing an animated cat.\n"+ + "Next, it should animatedly increase to twice its size" } + }, + State { name: "large"; when: statenum == 2 + PropertyChanges { target: animatedimageelementcontainer; height: 200; width: 150 } + PropertyChanges { target: animatedimageelementtest + testtext: "It should be large and still showing the cat, but slightly stretched.\n"+ + "Next, let's change it to preserve its aspect ratio" } + }, + State { name: "largefit"; when: statenum == 3 + PropertyChanges { target: animatedimageelementcontainer; height: 200; width: 150 } + PropertyChanges { target: animatedimageelement; fillMode: Image.PreserveAspectFit } + PropertyChanges { target: animatedimageelementtest + testtext: "It should be large and now showing the cat normally (square).\n"+ + "Next, it will change its aspect ratio to fit, but cropping the sides" } + }, + State { name: "largecrop"; when: statenum == 4 + PropertyChanges { target: animatedimageelementcontainer; height: 200; width: 150 } + PropertyChanges { target: animatedimageelement; fillMode: Image.PreserveAspectCrop } + PropertyChanges { target: animatedimageelementtest + testtext: "It should be large and now showing the cat with the sides removed.\n"+ + "Next, let's change the image to tile the square" } + }, + State { name: "largetile"; when: statenum == 5 + PropertyChanges { target: animatedimageelementcontainer; height: 200; width: 150 } + PropertyChanges { target: animatedimageelement; fillMode: Image.Tile; } + PropertyChanges { target: animatedimageelementtest + testtext: "The image should be repeated both horizontally and vertically.\n"+ + "Next, let's change the image to tile the square vertically" } + }, + State { name: "largetilevertical"; when: statenum == 6 + PropertyChanges { target: animatedimageelementcontainer; height: 200; width: 150 } + PropertyChanges { target: animatedimageelement; fillMode: Image.TileVertically; } + PropertyChanges { target: animatedimageelementtest + testtext: "The image should be repeated only vertically.\n"+ + "Next, let's change the image to tile the square horizontally" } + }, + State { name: "largetilehorizontal"; when: statenum == 7 + PropertyChanges { target: animatedimageelementcontainer; height: 200; width: 150 } + PropertyChanges { target: animatedimageelement; fillMode: Image.TileHorizontally; } + PropertyChanges { target: animatedimageelementtest + testtext: "The image should be repeated only horizontally.\n"+ + "The next step will return the image to a small, stretched state" } + } + ] +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/AppContainer.qml b/tests/testapplications/elements/content/AppContainer.qml new file mode 100644 index 0000000000..e1d52609e7 --- /dev/null +++ b/tests/testapplications/elements/content/AppContainer.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + + property string qmlfile: "" + height: parent.height *.95; width: parent.width *.95; anchors.centerIn: parent; radius: 5 + + onQmlfileChanged: { qmlapp.source = qmlfile; if (qmlfile != "") { starttimer.start(); } } + + Loader { + id: qmlapp + property int statenum: 0 + property int statecount + statecount: qmlfile != "" ? children[0].states.length : 0 + anchors.fill: parent; focus: true + function advance() { statenum = statenum == statecount ? 1 : ++statenum; } + } + + Timer { id: starttimer; interval: 500; onTriggered: { qmlapp.advance(); } } + + Rectangle { + anchors { top: parent.top; right: parent.right; topMargin: 3; rightMargin: 3 } + height: 30; width: 30; color: "red"; radius: 5 + Text { text: "X"; anchors.centerIn: parent; font.pointSize: 12 } + MouseArea { anchors.fill: parent; onClicked: { elementsapp.qmlfiletoload = "" } } + } + + Text { anchors.centerIn: parent; visible: qmlapp.status == Loader.Error; text: qmlfile+" failed to load.\n"; } + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/BorderImageElement.qml b/tests/testapplications/elements/content/BorderImageElement.qml new file mode 100644 index 0000000000..89794c27e7 --- /dev/null +++ b/tests/testapplications/elements/content/BorderImageElement.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: borderimageelementtest + anchors.fill: parent + property int bordervalue: 30 + property string testtext: "" + + BorderImage { + id: borderimageelement + anchors.centerIn: parent + width: 100; height: 100 + source: "pics/qml-borderimage.png" + border { left: bordervalue; top: bordervalue; right: bordervalue; bottom: bordervalue } + Rectangle { + height: parent.height-70; width: parent.width-70; anchors.centerIn: parent + color: "gray"; radius: 5; border.color: "black"; opacity: .5 + } + Behavior on height { NumberAnimation { duration: 1000 } } + Behavior on width { NumberAnimation { duration: 1000 } } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: borderimageelementtest + testtext: "This is a BorderImage element. It should be small and be showing a frame.\n"+ + "Next, it should animatedly increase to twice its size" } + }, + State { name: "large"; when: statenum == 2 + PropertyChanges { target: borderimageelement; height: 200; width: 200 } + PropertyChanges { target: borderimageelementtest + testtext: "It should be large and still showing the border frame.\n"+ + "Next, it will change the sides repeat mode to tile" } + }, + State { name: "largetile"; when: statenum == 3 + PropertyChanges { target: borderimageelement; height: 200; width: 200; + verticalTileMode: BorderImage.Repeat; horizontalTileMode: BorderImage.Repeat } + PropertyChanges { target: borderimageelementtest + testtext: "The sides of the border should now be repeated.\n"+ + "Next, it will change the sides repeat mode to repeated, but not cropped at the side" } + }, + State { name: "largecrop"; when: statenum == 4 + PropertyChanges { target: borderimageelement; height: 200; width: 200; + verticalTileMode: BorderImage.Round; horizontalTileMode: BorderImage.Round } + PropertyChanges { target: borderimageelementtest + testtext: "It should now show the borders repeated but scaled to fit uniformly.\n"+ + "The next step will show the BorderImage return to the defaults" } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/BugPanel.qml b/tests/testapplications/elements/content/BugPanel.qml new file mode 100644 index 0000000000..7e60a3f684 --- /dev/null +++ b/tests/testapplications/elements/content/BugPanel.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + property string urltext + urltext: "QTBUG-" + bugnumber + "" + property string bugnumber: "" + property string bugreports: "http://bugreports.qt.nokia.com/browse/QTBUG-" + visible: opacity != 0 + opacity: bugnumber == "" ? 0 : 1 + Behavior on opacity { NumberAnimation { duration: 1500 } } + height: buglist.paintedHeight; width: 200; radius: 5; border.color: "lightgray" + anchors { bottom: parent.bottom; left: parent.left; leftMargin: 15; bottomMargin: 15 } + Text { id: buglist; text: urltext; textFormat: Text.RichText; visible: bugnumber != "" + anchors.centerIn: parent; onLinkActivated: { Qt.openUrlExternally(link); } + } +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/ColumnElement.qml b/tests/testapplications/elements/content/ColumnElement.qml new file mode 100644 index 0000000000..daaf391172 --- /dev/null +++ b/tests/testapplications/elements/content/ColumnElement.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: columnelementtest + anchors.fill: parent + property string testtext: "" + + Column { + id: columnelement + height: 250; width: 200; spacing: 5 + anchors.centerIn: parent + Rectangle { id: gr; color: "green"; height: 50; width: parent.width; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + Rectangle { id: re; color: "red"; height: 50; width: parent.width; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + Rectangle { + id: bl + color: "blue"; height: 50; width: parent.width; border.color: "gray"; border.width: 3; radius: 5; clip: true + opacity: 0; visible: opacity != 0 + } + Rectangle { id: bk; color: "black"; height: 50; width: parent.width; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + + move: Transition { NumberAnimation { properties: "y"; duration: 500; easing.type: Easing.OutBounce } } + add: Transition { NumberAnimation { properties: "y"; duration: 1000; easing.type: Easing.OutBounce } } + + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: columnelementtest + testtext: "This is a Column element. At present it should be showing three rectangles - green, red and black.\n"+ + "Next, let's add a rectangle to the Column - it should drop in from the top and the black rectangle should move to give it space" } + }, + State { name: "back"; when: statenum == 2 + PropertyChanges { target: bl; opacity: .9 } + PropertyChanges { target: columnelementtest + testtext: "Column should now be showing four rectangles - green, red, blue and black.\n"+ + "Advance to restart the test." } + } + ] +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/DoubleValidatorElement.qml b/tests/testapplications/elements/content/DoubleValidatorElement.qml new file mode 100644 index 0000000000..df725b357a --- /dev/null +++ b/tests/testapplications/elements/content/DoubleValidatorElement.qml @@ -0,0 +1,124 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: doublevalidatorelementtest + anchors.fill: parent + property string testtext: "" + + DoubleValidator { + id: doublevalidatorelement + top: 30.06; bottom: 30.02 + //Behavior on top { NumberAnimation { duration: 1000 } } + } + + Rectangle { + id: doublevalidatorelementbackground + color: doublevalidatorelementinput.acceptableInput ? "green" : "red"; height: 50; width: parent.width *.8 + border.color: "gray"; opacity: 0.7; radius: 5 + anchors.centerIn: parent + + TextInput { + id: doublevalidatorelementinput + font.pointSize: 12; width: parent.width; text: "0"; horizontalAlignment: Text.AlignHCenter; validator: doublevalidatorelement + anchors.centerIn: parent + Behavior on font.pointSize { NumberAnimation { duration: 1000 } } + Behavior on color { ColorAnimation { duration: 1000 } } + } + } + + Text{ + anchors.top: doublevalidatorelementbackground.bottom; anchors.topMargin: 50; anchors.horizontalCenter: parent.horizontalCenter + text: "Top: " + doublevalidatorelement.top + " Bottom: " + doublevalidatorelement.bottom + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: doublevalidatorelementinput; text: "30.03" } + PropertyChanges { target: doublevalidatorelementtest + testtext: "This is a TextInput element using an DoubleValidator for input masking. At present it should be indicating 30.03.\n"+ + "Next, let's attempt to enter a number smaller than the lowest allowable value: 30.01" } + }, + State { name: "lowerthan"; when: statenum == 2 + PropertyChanges { target: doublevalidatorelementinput; text: "30.01" } + PropertyChanges { target: doublevalidatorelementtest + testtext: "The TextInput background should be showing red - input is not acceptable.\n"+ + "Next, let's enter a value equal to the lowest allowable value: 30.02." } + }, + State { name: "equaltobottom"; when: statenum == 3 + PropertyChanges { target: doublevalidatorelementinput; text: "30.02" } + PropertyChanges { target: doublevalidatorelementtest + testtext: "The TextInput background should be showing green - input is acceptable.\n"+ + "Next, let's attempt to enter a number greater than the highest allowable value: 30.08" } + }, + State { name: "greaterthan"; when: statenum == 4 + PropertyChanges { target: doublevalidatorelementinput; text: "30.08" } + PropertyChanges { target: doublevalidatorelementtest + testtext: "The TextInput background should be showing red - input is not acceptable.\n"+ + "Next, let's change the value of top to be greater than the entered number." } + }, + State { name: "increasedtop"; when: statenum == 5 + PropertyChanges { target: doublevalidatorelementinput; text: "30.08" } + PropertyChanges { target: doublevalidatorelement; top: 30.09 } + PropertyChanges { target: doublevalidatorelementtest + testtext: "The highest value should have increased to 30.09, thus making the number valid and turning the input background green.\n"+ + "Next, let's change the value of bottom to be greater than the entered number." } + PropertyChanges { target: bugpanel; bugnumber: "19956" } + }, + State { name: "increasedbottom"; when: statenum == 6 + PropertyChanges { target: doublevalidatorelementinput; text: "30.08" } + PropertyChanges { target: doublevalidatorelement; top: 30.09; bottom: 40.05 } + PropertyChanges { target: doublevalidatorelementtest + testtext: "The lowest value should have increased to 36, thus making the validator invalid and turning the input background red.\n"+ + "Press advance to restart the test." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/FlickableElement.qml b/tests/testapplications/elements/content/FlickableElement.qml new file mode 100644 index 0000000000..67a4d8102e --- /dev/null +++ b/tests/testapplications/elements/content/FlickableElement.qml @@ -0,0 +1,135 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: flickableelementtest + anchors.fill: parent + property string testtext: "" + property int sidelength: 1500 + + Rectangle { + id: flickableelementbox + color: "lightgray"; border.color: "gray"; radius: 5; clip: true; opacity: .1 + height: 250; width: parent.width *.8 + anchors.centerIn: parent + + Flickable { + id: flickableelement + anchors.fill: parent + contentHeight: sidelength; contentWidth: sidelength; contentX: (sidelength/2)-125; contentY: (sidelength/2)-125 + onAtYBeginningChanged: { + if (flicking && atYBeginning && statenum == 1) { advance(); } + else if (flicking && atYBeginning && atXBeginning && statenum == 4) { advance(); } + } + onAtXEndChanged: { + if (atYEnd && atXEnd && statenum == 2) { + if (flicking){ advance(); + } else { + testtext = "The view must be flicked into the bottom left corner. Move the grid away slightly and try again" + } + } + } + onAtXBeginningChanged: { + if (atYEnd && atXBeginning && statenum == 3) { + if (!flicking) { advance(); } else { testtext = "Drag - do not flick. Move the grid away slightly and try again" } + } + } + + Row { + width: sidelength; height: sidelength + Repeater { + model: 30 + Column { + Repeater { + id: griprep + height: flickableelement.contentHeight; width: 50; model: 30 + Rectangle { height: 50; width: 50; color: "gray"; border.color: "black" } + } + } + } + } + Text { anchors.centerIn: parent; text: "Center" } + } + } + Text { anchors.left: flickableelementbox.left; anchors.top: flickableelementbox.bottom; anchors.topMargin: 5; + text: "Dragging"; color: !flickableelement.flicking && flickableelement.moving ? "Green" : "Red" + } + Text { anchors.right: flickableelementbox.right; anchors.top: flickableelementbox.bottom; anchors.topMargin: 5; + text: "Flicking"; color: flickableelement.flicking ? "Green" : "Red" + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + StateChangeScript { script: { flickableelement.contentX = (sidelength/2)-125; flickableelement.contentY = (sidelength/2)-125 } } + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: flickableelementtest + testtext: "This is a Flickable element. At present it should be displaying a grid,\n"+ + "with the center marked and in the center of the view.\n"+ + "Next, please flick the view to the top" } + }, + State { name: "top"; when: statenum == 2 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: flickableelementtest; testtext: "Good. Now flick to the bottom right hand corner." } + }, + State { name: "bottomright"; when: statenum == 3 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: flickableelementtest; testtext: "Great. Now drag, not flick, the view to the bottom left." } + }, + State { name: "bottomleft"; when: statenum == 4 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: flickableelementtest; testtext: "Almost there. Flick to the top left" } + }, + State { name: "sections"; when: statenum == 5 + PropertyChanges { target: helpbubble; showadvance: true } + PropertyChanges { target: flickableelementtest + testtext: "Excellent.\n"+ + "Advance to restart the test." } + } + ] + +} diff --git a/tests/testapplications/elements/content/FlipableElement.qml b/tests/testapplications/elements/content/FlipableElement.qml new file mode 100644 index 0000000000..8c0e80828d --- /dev/null +++ b/tests/testapplications/elements/content/FlipableElement.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: flipableelementtest + anchors.fill: parent + property string testtext: "" + + Flipable { + id: flipableelement + height: 250; width: 250 + anchors.centerIn: parent + front: Rectangle { color: "green"; anchors.fill: parent; border.color: "gray"; border.width: 3; opacity: .9; radius: 20; clip: true } + back: Rectangle { color: "red"; anchors.fill: parent; border.color: "gray"; border.width: 3; opacity: .9; radius: 20; clip: true } + transform: Rotation { + id: rotation + origin.x: flipableelement.width/2 + origin.y: flipableelement.height/2 + axis.x: 0; axis.y: 1; axis.z: 0 + angle: 0 + } + + } + transitions: Transition { + NumberAnimation { target: rotation; property: "angle"; duration: 2000 } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: flipableelementtest + testtext: "This is a Flipable element. At present it should be showing a green rectangle.\n"+ + "Next, let's flip the Flipable horizontally to show the back" } + }, + State { name: "back"; when: statenum == 2 + PropertyChanges { target: rotation; angle: 180 } + //FIXED PropertyChanges { target: bugpanel; bugnumber: "19901" } + PropertyChanges { target: flipableelementtest + testtext: "Flipable should now be showing a red rectangle.\n"+ + "Next, let's flip the Flipable to again show the front." } + }, + State { name: "front"; when: statenum == 3 + PropertyChanges { target: flipableelementtest + testtext: "Flipable should have flipped and now be showing a green rectangle.\n"+ + "Next, let's flip vertically." } + }, + State { name: "backvertical"; when: statenum == 4 + PropertyChanges { target: rotation; axis.y: 0; axis.x: 1; angle: 180 } + //FIXED PropertyChanges { target: bugpanel; bugnumber: "19901" } + PropertyChanges { target: flipableelementtest + testtext: "Flipable should have flipped vertically and now be showing a red rectangle.\n"+ + "Next, let's flip back." } + }, + State { name: "frontvertical"; when: statenum == 5 + PropertyChanges { target: rotation; axis.y: 0; axis.x: 1; angle: 0 } + PropertyChanges { target: flipableelementtest + testtext: "Flipable should have flipped vertically and now be showing a green rectangle.\n"+ + "Next, let's restart the test." } + } + ] +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/FlowElement.qml b/tests/testapplications/elements/content/FlowElement.qml new file mode 100644 index 0000000000..eccca1c2ee --- /dev/null +++ b/tests/testapplications/elements/content/FlowElement.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: flowelementtest + anchors.fill: parent + property string testtext: "" + + Rectangle { anchors.fill: flowelement; color: "lightsteelblue"; radius: 5 } + + Flow { + id: flowelement + height: 150; width: 150; spacing: 5; flow: Flow.LeftToRight + anchors.centerIn: parent + Rectangle { id: gr; color: "green"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true + Text { anchors.centerIn: parent; text: "1" } + } + Rectangle { id: re; color: "red"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true + Text { anchors.centerIn: parent; text: "2" } + } + Rectangle { id: bl; color: "blue"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: 0; radius: 5; clip: true + Text { anchors.centerIn: parent; text: "3" } + } + Rectangle { id: bk; color: "black"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true + Text { anchors.centerIn: parent; text: "4"; color: "lightgray" } + } + + move: Transition { NumberAnimation { properties: "x"; duration: 500; easing.type: Easing.OutBounce } } + add: Transition { NumberAnimation { properties: "x"; duration: 500; easing.type: Easing.OutBounce } } + + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: flowelementtest + testtext: "This is a Flow element. At present it should be showing three rectangles - green, red and black.\n"+ + "Next, let's add a rectangle to the Flow - it should slide in from the left and the black rectangle should move to give it space" } + }, + State { name: "added"; when: statenum == 2 + PropertyChanges { target: bl; opacity: .9 } + PropertyChanges { target: flowelementtest + testtext: "Flow should now be showing four rectangles - green, red, blue and black.\n"+ + "Next let's change the direction of the flow to vertical." } + }, + State { name: "vertical"; when: statenum == 3 + PropertyChanges { target: bl; opacity: .9 } + PropertyChanges { target: flowelement; flow: Flow.TopToBottom } + PropertyChanges { target: flowelementtest + testtext: "Flow should now be showing four rectangles - green, blue, red and black.\n"+ + "Next, let's flip the layout direction to RightToLeft." } + }, + State { name: "rtlvertical"; when: statenum == 4 + PropertyChanges { target: bl; opacity: .9 } + PropertyChanges { target: flowelement; flow: Flow.TopToBottom; layoutDirection: Qt.RightToLeft } + PropertyChanges { target: flowelementtest + testtext: "Flow should now be showing the four rectangles aligned to the right and in a column order flowing to the left"+ + "Advance to restart the test." } + } + ] +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/FocusScopeElement.qml b/tests/testapplications/elements/content/FocusScopeElement.qml new file mode 100644 index 0000000000..3f299e8dd2 --- /dev/null +++ b/tests/testapplications/elements/content/FocusScopeElement.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: focusscopeelementtest + anchors.fill: parent + property string testtext: "" + + FocusScope { + id: firstfocusscopeelement + } + FocusScope { + id: secondfocusscopeelement + } + + BugPanel { id: bugpanel } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: focusscopeelementtest + testtext: "This test uses a FocusScope element. There should be two boxes, "+ + "the first showing a red border to represent it having focus.\n"+ + "Next, let's press a key to see which has focus." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/FontLoaderElement.qml b/tests/testapplications/elements/content/FontLoaderElement.qml new file mode 100644 index 0000000000..7488ecad90 --- /dev/null +++ b/tests/testapplications/elements/content/FontLoaderElement.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "font" + +Item { + id: fontloaderelementtest + anchors.fill: parent + property string testtext: "" + property int currentfont: 0 + property variant availablefonts + Component.onCompleted: { availablefonts = Qt.fontFamilies(); } + + Rectangle { anchors.fill: textitem; color: "lightsteelblue"; radius: 5 } + FontLoader { id: fontloaderelement; name: availablefonts[currentfont] } + + Text { + id: textitem + anchors.centerIn: parent + height: 100; width: 250; text: fontloaderelement.name; font: fontloaderelement.name + horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: fontloaderelementtest + testtext: "This is a Text item with the font defined via the FontLoader element.\n"+ + "Presently it should be indicating the font "+fontloaderelement.name+", displayed in said font.\n"+ + "Next, let's change the font to something else." } + }, + State { name: "changefont"; when: statenum == 2 + PropertyChanges { target: fontloaderelementtest + currentfont: 1; + testtext: "FontLoader should now be displaying the text in "+fontloaderelement.name+".\n"+ + "Next let's repeatedly change the font." } + }, + State { name: "switch"; when: statenum == 3 + PropertyChanges { target: fontticker; running: true } + PropertyChanges { target: fontloaderelementtest + testtext: "FontLoader should now be cycling between different fonts available on the system.\n"+ + "Next let's use a locally stored font." } + }, + State { name: "uselocal"; when: statenum == 4 + PropertyChanges { target: fontticker; running: false } + PropertyChanges { target: bugpanel; bugnumber: "20268" } + PropertyChanges { target: fontloaderelement; source: "font/Vera.ttf"; name: "Bitstream Vera Sans"; } + PropertyChanges { target: fontloaderelementtest + testtext: "FontLoader should now be displaying the Bitstream Vera Sans font.\n"+ + "Advance to restart the test." } + } + ] + Timer { id: fontticker; interval: 500; running: false; repeat: true; onTriggered: { currentfont = currentfont == availablefonts.length ? 0 : currentfont+1 } } +} diff --git a/tests/testapplications/elements/content/GradientElement.qml b/tests/testapplications/elements/content/GradientElement.qml new file mode 100644 index 0000000000..b437ea2f8e --- /dev/null +++ b/tests/testapplications/elements/content/GradientElement.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: gradientelement + property real gradstop: 0.25 + gradient: Gradient { + GradientStop { position: 0.0; color: "red" } + GradientStop { position: gradstop; color: "yellow" } + GradientStop { position: 1.0; color: "green" } + } + MouseArea { anchors.fill: parent; enabled: qmlfiletoload == ""; hoverEnabled: true + onEntered: { helptext = "The gradient should show a trio of colors - red, yellow and green"+ + " - with a slow movement of the yellow up and down the view" } + onExited: { helptext = "" } + } + // Animate the background gradient + SequentialAnimation { id: gradanim; running: true; loops: Animation.Infinite + NumberAnimation { target: gradientelement; property: "gradstop"; to: 0.88; duration: 10000; easing.type: Easing.InOutQuad } + NumberAnimation { target: gradientelement; property: "gradstop"; to: 0.22; duration: 10000; easing.type: Easing.InOutQuad } + } +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/GridElement.qml b/tests/testapplications/elements/content/GridElement.qml new file mode 100644 index 0000000000..544afc3f63 --- /dev/null +++ b/tests/testapplications/elements/content/GridElement.qml @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: gridelementtest + anchors.fill: parent + property string testtext: "" + + Grid { + id: gridelement + height: 250; width: 120; spacing: 5; columns: 2 + anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom; anchors.bottomMargin: 100 + + Rectangle { id: gr; color: "green"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + Rectangle { id: re; color: "red"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + Rectangle { + id: bl + color: "blue"; height: 50; width: 50; border.color: "gray"; border.width: 3; radius: 5; clip: true + opacity: 0; visible: opacity != 0 + } + Rectangle { id: bk; color: "black"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + + move: Transition { NumberAnimation { properties: "x,y"; duration: 1000; easing.type: Easing.OutBounce } } + add: Transition { NumberAnimation { properties: "x,y"; duration: 1000; easing.type: Easing.OutBounce } } + + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: gridelementtest + testtext: "This is a Grid element. At present it should be showing three rectangles - green, red and black, two "+ + "in the top row.\n"+ + "Next, let's add a rectangle to the Grid - it should drop in from the top and the black rectangle should move to give it space" } + }, + State { name: "added"; when: statenum == 2 + PropertyChanges { target: bl; opacity: .9 } + PropertyChanges { target: gridelementtest + testtext: "The Grid should now be showing four rectangles - green, red, blue and black.\n"+ + "Next, lets alter the Grid to form a single column" } + }, + State { name: "singlecolumn"; when: statenum == 3 + PropertyChanges { target: bl; opacity: .9 } + PropertyChanges { target: gridelement; columns: 1 } + PropertyChanges { target: gridelementtest + testtext: "The Grid should now be showing four rectangles - green, red, blue and black.\n"+ + "Advance to restart the test." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/GridViewElement.qml b/tests/testapplications/elements/content/GridViewElement.qml new file mode 100644 index 0000000000..86aeaddd03 --- /dev/null +++ b/tests/testapplications/elements/content/GridViewElement.qml @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: gridviewelement; radius: 5; clip: true + property int cellsize + cellsize: Math.floor(elementview.width / 3) + + GridView { + id: elementview + height: parent.height * .98; width: parent.width * .98 + anchors.centerIn: parent + delegate: griddelegate; model: elements; visible: { qmlfiletoload == "" } + highlightFollowsCurrentItem: true; highlightRangeMode: ListView.StrictlyEnforceRange + cellWidth: cellsize; cellHeight: cellsize + } + + // Delegates for the launcher grid + Component { + id: griddelegate + Item { + height: cellsize; width: cellsize + Column { anchors.fill: parent; spacing: 2 + Rectangle { + height: parent.height * .8; width: height + color: "lightgray"; radius: 5; smooth: true + anchors.horizontalCenter: parent.horizontalCenter + Image { + height: parent.height*.75; width: height + anchors.centerIn: parent + source: "pics/logo.png"; fillMode: Image.PreserveAspectFit + } + } + Text { + height: parent.height * .8; width: parent.width + anchors.horizontalCenter: parent.horizontalCenter; text: model.label; elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + } + } + MouseArea { + anchors.fill: parent + hoverEnabled: true // For desktop testing + onClicked: { runapp(model.label+"Element.qml"); } + onEntered: { helptext = model.help } + onExited: { helptext = "" } + } + } + } + + // Elements list + ListModel { + id: elements + ListElement { label: "Rectangle"; help: "The Rectangle item provides a filled rectangle with an optional border." } + ListElement { label: "Image"; help: "The Image element displays an image in a declarative user interface" } + ListElement { label: "AnimatedImage"; help: "An image element that supports animations" } + ListElement { label: "BorderImage"; help: "The BorderImage element provides an image that can be used as a border." } + ListElement { label: "SystemPalette"; help: "The SystemPalette element provides access to the Qt palettes." } + ListElement { label: "Text"; help: "The Text item allows you to add formatted text to a scene." } + ListElement { label: "FontLoader"; help: "The FontLoader element allows fonts to be loaded by name or URL." } + ListElement { label: "TextInput"; help: "The TextInput item displays an editable line of text." } + ListElement { label: "TextEdit"; help: "The TextEdit item displays multiple lines of editable formatted text." } + ListElement { label: "ListView"; help: "The ListView item provides a list view of items provided by a model." } + ListElement { label: "Flipable"; help: "The Flipable item provides a surface that can be flipped" } + ListElement { label: "Column"; help: "The Column item arranges its children vertically." } + ListElement { label: "Row"; help: "The Row item arranges its children horizontally." } + ListElement { label: "Grid"; help: "The Grid item positions its children in a grid." } + ListElement { label: "Flow"; help: "The Flow item arranges its children side by side, wrapping as necessary." } + ListElement { label: "Repeater"; help: "The Repeater element allows you to repeat an Item-based component using a model." } + ListElement { label: "IntValidator"; help: "This element provides a validator for integer values." } + ListElement { label: "DoubleValidator"; help: "This element provides a validator for non-integer values." } + ListElement { label: "RegExpValidator"; help: "This element provides a validator, which counts as valid any string which matches a specified regular expression." } + ListElement { label: "Flickable"; help: "The Flickable item provides a surface that can be \"flicked\"." } + ListElement { label: "Keys"; help: "The Keys attached property provides key handling to Items." } + ListElement { label: "MouseArea"; help: "The MouseArea item enables simple mouse handling." } + ListElement { label: "SequentialAnimation"; help: "The SequentialAnimation element allows animations to be run sequentially." } + ListElement { label: "ParallelAnimation"; help: "The ParallelAnimation element allows animations to be run in parallel." } + ListElement { label: "XmlListModel"; help: "The XmlListModel element is used to specify a read-only model using XPath expressions." } + ListElement { label: "Scale"; help: "The Scale element provides a way to scale an Item." } + } +} diff --git a/tests/testapplications/elements/content/Help.qml b/tests/testapplications/elements/content/Help.qml new file mode 100644 index 0000000000..e0b7c026a0 --- /dev/null +++ b/tests/testapplications/elements/content/Help.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + anchors.fill: parent + + Text { textFormat: Text.RichText; anchors.fill: parent; anchors.margins: 5; wrapMode: Text.WordWrap + text: "QtQuick 2 System Testing

"+ + "Each system test qml \"application\" provides a basic visual element affected by one or more non-visual (functional) elements.
"+ + "Simply select the element you wish to test, and follow the instructions. Use the arrow to advance the test.
" + } +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/HelpDesk.qml b/tests/testapplications/elements/content/HelpDesk.qml new file mode 100644 index 0000000000..c60b8dee74 --- /dev/null +++ b/tests/testapplications/elements/content/HelpDesk.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + + Rectangle { + id: helpbutton; anchors { right: parent.right; bottom: parent.bottom } + height: 30; width: 30; color: "lightgray"; radius: 5; visible: qmlfiletoload == "" + Text { text: "?"; anchors.centerIn: parent; font.pointSize: 12 } + MouseArea { anchors.fill: parent; onClicked: { elementsapp.qmlfiletoload = "Help.qml" } } + } + + Rectangle { + width: parent.width - (20 + helpbutton.width); height: infotext.height; radius: 5; opacity: .7; visible: infotext.text != "" + anchors { right: helpbutton.left; bottom: parent.bottom; rightMargin: 5; bottomMargin: 20 } + Text { id: infotext; text: elementsapp.helptext; width: parent.width - 10; anchors.centerIn: parent; wrapMode: Text.WordWrap } + } +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/ImageElement.qml b/tests/testapplications/elements/content/ImageElement.qml new file mode 100644 index 0000000000..a8811675df --- /dev/null +++ b/tests/testapplications/elements/content/ImageElement.qml @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: imageelementtest + anchors.fill: parent + property string testtext: "" + + Item { + id: imageelementcontainer + height: 100; width: 100; clip: true + anchors.centerIn: parent + Behavior on height { NumberAnimation { duration: 1000 } } + Behavior on width { NumberAnimation { duration: 1000 } } + Image { + id: imageelement + anchors.fill: parent + source: "pics/nokialogo.gif"; sourceSize.width: 60; sourceSize.height: 80 + } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: imageelementtest + testtext: "This is an Image element. It should be small and be showing the Nokia logo, but slightly stretched.\n"+ + "Next, it should animatedly increase to twice its size" } + }, + State { name: "large"; when: statenum == 2 + PropertyChanges { target: imageelementcontainer; height: 200; width: 200 } + PropertyChanges { target: imageelementtest + testtext: "It should be large and still showing the slightly stretched Nokia logo.\n"+ + "Next, it will change to preserve its aspect ratio" } + }, + State { name: "largefit"; when: statenum == 3 + PropertyChanges { target: imageelementcontainer; height: 200; width: 200 } + PropertyChanges { target: imageelement; fillMode: Image.PreserveAspectFit } + PropertyChanges { target: imageelementtest + testtext: "It should be large and now showing the Nokia logo normally (longer horizontally).\n"+ + "Next, it will change its aspect ratio to fit, but cropping the sides" } + }, + State { name: "largecrop"; when: statenum == 4 + PropertyChanges { target: imageelementcontainer; height: 200; width: 200 } + PropertyChanges { target: imageelement; fillMode: Image.PreserveAspectCrop } + PropertyChanges { target: imageelementtest + testtext: "It should be large and now showing the Nokia logo with the sides removed.\n"+ + "Next, let's change the image to tile the square" } + }, + State { name: "largetile"; when: statenum == 5 + PropertyChanges { target: imageelementcontainer; height: 200; width: 200 } + PropertyChanges { target: imageelement; fillMode: Image.Tile; } + PropertyChanges { target: imageelementtest + testtext: "The image should be repeated both horizontally and vertically.\n"+ + "Next, let's change the image to tile the square vertically" } + }, + State { name: "largetilevertical"; when: statenum == 6 + PropertyChanges { target: imageelementcontainer; height: 200; width: 200 } + PropertyChanges { target: imageelement; fillMode: Image.TileVertically; } + PropertyChanges { target: imageelementtest + testtext: "The image should be repeated only vertically.\n"+ + "Next, let's change the image to tile the square horizontally" } + }, + State { name: "largetilehorizontal"; when: statenum == 7 + PropertyChanges { target: imageelementcontainer; height: 200; width: 200 } + PropertyChanges { target: imageelement; fillMode: Image.TileHorizontally; } + PropertyChanges { target: imageelementtest + testtext: "The image should be repeated only horizontally.\n"+ + "The next step will return the image to a small, stretched state" } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/IntValidatorElement.qml b/tests/testapplications/elements/content/IntValidatorElement.qml new file mode 100644 index 0000000000..2b1f80274f --- /dev/null +++ b/tests/testapplications/elements/content/IntValidatorElement.qml @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: intvalidatorelementtest + anchors.fill: parent + property string testtext: "" + + IntValidator { id: intvalidatorelement; top: 30; bottom: -50 //top: 20; bottom: -50 + //Behavior on top { NumberAnimation { duration: 1000 } } + } + + Rectangle { + id: intvalidatorelementbackground + color: intvalidatorelementinput.acceptableInput ? "green" : "red" + height: 50; width: parent.width *.8; border.color: "gray"; opacity: 0.7; radius: 5 + anchors.centerIn: parent + + TextInput { + id: intvalidatorelementinput + font.pointSize: 12; width: parent.width; text: "0"; horizontalAlignment: Text.AlignHCenter; validator: intvalidatorelement + anchors.centerIn: parent + Behavior on font.pointSize { NumberAnimation { duration: 1000 } } + Behavior on color { ColorAnimation { duration: 1000 } } + } + } + + Text{ + anchors.top: intvalidatorelementbackground.bottom; anchors.topMargin: 50; anchors.horizontalCenter: parent.horizontalCenter + text: "Top: " + intvalidatorelement.top + " Bottom: " + intvalidatorelement.bottom + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: intvalidatorelementinput; text: "0" } + PropertyChanges { target: intvalidatorelementtest + testtext: "This is a TextInput element using an IntValidator for input masking. At present it should be indicating 0.\n"+ + "Next, let's attempt to enter a number smaller than the lowest allowable value: -80" } + }, + State { name: "lowerthan"; when: statenum == 2 + PropertyChanges { target: intvalidatorelementinput; text: "-80" } + PropertyChanges { target: intvalidatorelementtest + testtext: "The TextInput background should be showing red - input is not acceptable.\n"+ + "Next, let's enter a value equal to the lowest allowable value: -50." } + }, + State { name: "equaltobottom"; when: statenum == 3 + PropertyChanges { target: intvalidatorelementinput; text: "-50" } + PropertyChanges { target: intvalidatorelementtest + testtext: "The TextInput background should be showing green - input is acceptable.\n"+ + "Next, let's attempt to enter a number greater than the highest allowable value: 35" } + }, + State { name: "greaterthan"; when: statenum == 4 + PropertyChanges { target: intvalidatorelementinput; text: "35" } + PropertyChanges { target: intvalidatorelementtest + testtext: "The TextInput background should be showing red - input is not acceptable.\n"+ + "Next, let's change the value of top to be greater than the entered number." } + }, + State { name: "increasedtop"; when: statenum == 5 + PropertyChanges { target: intvalidatorelementinput; text: "35" } + PropertyChanges { target: intvalidatorelement; top: 35 } + PropertyChanges { target: intvalidatorelementtest + testtext: "The highest value should have increased to 35, thus making the number valid and turning the input background green.\n"+ + "Next, let's change the value of bottom to be greater than the entered number." } + PropertyChanges { target: bugpanel; bugnumber: "19956" } + }, + State { name: "increasedbottom"; when: statenum == 6 + PropertyChanges { target: intvalidatorelementinput; text: "35" } + PropertyChanges { target: intvalidatorelement; top: 35; bottom: 36 } + PropertyChanges { target: intvalidatorelementtest + testtext: "The lowest value should have increased to 36, thus making the validator invalid and turning the input background red.\n"+ + "Press advance to restart the test." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/KeysElement.qml b/tests/testapplications/elements/content/KeysElement.qml new file mode 100644 index 0000000000..c754376dd5 --- /dev/null +++ b/tests/testapplications/elements/content/KeysElement.qml @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: keyselementtest + anchors.fill: parent + property string testtext: "" + property int sidelength: 1500 + focus: true + + Rectangle { + id: keyselementbox + color: "lightgray"; border.color: "gray"; radius: 5; clip: true; opacity: .7 + height: 250; width: parent.width *.8 + anchors.centerIn: parent + focus: true + Keys.enabled: true + Keys.onLeftPressed: { if (statenum == 2) { advance(); } } + Keys.onRightPressed: { if (statenum == 1) { advance(); } } + Keys.onUpPressed: { if (statenum == 3) { advance(); } } + Keys.onDownPressed: { if (statenum == 4) { advance(); } } + Keys.onPressed: { + if ((event.key == Qt.Key_Space) && (event.modifiers & Qt.ControlModifier) && (event.modifiers & Qt.AltModifier)) { + if (statenum == 5) { advance(); } + } + } + Rectangle { id: leftone; height: 50; width: 50; color: "green"; anchors{ left: parent.left; verticalCenter: parent.verticalCenter } } + Rectangle { id: rightone; height: 50; width: 50; color: "green"; anchors{ right: parent.right; verticalCenter: parent.verticalCenter } } + Rectangle { id: topone; height: 50; width: 50; color: "green"; anchors{ top: parent.top; horizontalCenter: parent.horizontalCenter } } + Rectangle { id: bottomone; height: 50; width: 50; color: "green"; anchors{ bottom: parent.bottom; horizontalCenter: parent.horizontalCenter } } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: keyselementtest + testtext: "This is a Keys element. At present there should be four squares\n"+ + "Next, please press the right button on the keypad/board" } + }, + State { name: "right"; when: statenum == 2 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: rightone; color: "orange" } + PropertyChanges { target: keyselementtest; testtext: "Good. Now press left." } + }, + State { name: "left"; when: statenum == 3 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: leftone; color: "orange" } + PropertyChanges { target: keyselementtest; testtext: "Press up." } + }, + State { name: "up"; when: statenum == 4 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: topone; color: "orange" } + PropertyChanges { target: keyselementtest; testtext: "And then press down" } + }, + State { name: "down"; when: statenum == 5 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: bottomone; color: "orange" } + PropertyChanges { target: keyselementtest; testtext: "Excellent. Now hold Ctrl+Alt and press Space" } + }, + State { name: "modifiers"; when: statenum == 6 + PropertyChanges { target: helpbubble; showadvance: true } + PropertyChanges { target: keyselementbox; color: "orange" } + PropertyChanges { target: keyselementtest + testtext: "Test has completed\n"+ + "Advance to restart the test." } + } + ] + +} diff --git a/tests/testapplications/elements/content/ListViewElement.qml b/tests/testapplications/elements/content/ListViewElement.qml new file mode 100644 index 0000000000..221c967f14 --- /dev/null +++ b/tests/testapplications/elements/content/ListViewElement.qml @@ -0,0 +1,171 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: listviewelementtest + anchors.fill: parent + property string testtext: "" + property bool hivis: false + + Rectangle { + id: listviewelementbackground + color: "lightgray"; border.color: "gray"; radius: 5; clip: true; opacity: .1 + height: listviewelement.height + 10; width: listviewelement.width + 10 + anchors.centerIn: listviewelement + } + + ListView { + id: listviewelement + height: 250; width: parent.width *.8; clip: true + anchors.centerIn: parent + model: devices + highlightFollowsCurrentItem: true + highlight: highlightrect + delegate: delegaterect + section.property: "os" + section.delegate: sectiondelegaterect + header: headerrect + footer: footerrect + spacing: 0 + Behavior on spacing { NumberAnimation { duration: 200 } } + } + + Component { id: delegaterect + Item { + width: listviewelement.width - 4; height: 30 + Rectangle { color: "blue"; anchors.fill: parent; radius: 5; border.color: "black"; opacity: .1 } + Text { text: model.name; anchors.centerIn: parent } + } + } + + Component { id: sectiondelegaterect + Item { + width: listviewelement.width - 4; height: 30 + Rectangle { color: "green"; anchors.fill: parent; radius: 5; border.color: "black"; opacity: .5 } + Text { text: section; anchors.verticalCenter: parent.verticalCenter; anchors.left: parent.left; anchors.leftMargin: 5 } + } + } + + Component { id: highlightrect + Rectangle { + id: coloredbox; color: "yellow"; width: listviewelement.width - 4; height: 30; radius: 5; opacity: .5; visible: hivis + SequentialAnimation on color { loops: Animation.Infinite; running: coloredbox.visible + ColorAnimation { to: "green"; duration: 2000 } + ColorAnimation { to: "yellow"; duration: 2000 } + } + } + } + + Component { id: headerrect + Rectangle { id: hdr; color: "brown"; width: listviewelement.width - 4; height: 30; radius: 5; opacity: .5 + Text { anchors.centerIn: parent; text: "Nokia Devices" } + } + } + + Component { id: footerrect + Rectangle { id: ftr; color: "brown"; width: listviewelement.width - 4; height: 30; radius: 5; opacity: .5 + Text { anchors.centerIn: parent; text: "Nokia pty ltd." } + } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: listviewelementtest + testtext: "This is a ListView element. At present it should be displaying the names of a few Nokia devices, ordered by Operating System.\n"+ + "Next, let's view the end of the list" } + }, + State { name: "end"; when: statenum == 2 + StateChangeScript { script: listviewelement.positionViewAtEnd(); } + PropertyChanges { target: listviewelementtest + testtext: "The end of the list should now be visible.\nNext, let's add a highlight." } + }, + State { name: "highlight"; when: statenum == 3 + PropertyChanges { target: listviewelement; currentIndex: 0 } + StateChangeScript { script: listviewelement.positionViewAtBeginning(); } + PropertyChanges { target: listviewelementtest; hivis: true } + PropertyChanges { target: listviewelementtest + testtext: "The ListView should now be showing a highlight on the first item.\n"+ + "Next, let's move to an item down the list." } + }, + State { name: "highlight7"; when: statenum == 4 + PropertyChanges { target: listviewelement; currentIndex: 6 } + PropertyChanges { target: listviewelementtest; hivis: true } + PropertyChanges { target: listviewelementtest + testtext: "The ListView should now be showing the highlight over item 7 - the N95\n"+ + "Next let's add some space between them." } + }, + State { name: "sections"; when: statenum == 5 + PropertyChanges { target: listviewelement; currentIndex: 6 } + PropertyChanges { target: listviewelement; spacing: 5 } + PropertyChanges { target: listviewelementtest; hivis: true } + PropertyChanges { target: listviewelementtest + testtext: "The ListView should now be showing a space between each list item,\n"+ + "but not after the header and sections, or before the footer.\n"+ + "Advance to restart the test." } + } + ] + + ListModel { + id: devices + ListElement { name: "N900"; os: "Maemo" } + ListElement { name: "N810"; os: "Maemo" } + ListElement { name: "N9"; os: "Meego" } + ListElement { name: "N-Gage QD"; os: "S60 1.2" } + ListElement { name: "E90"; os: "S60 2nd" } + ListElement { name: "E72"; os: "S60 3.2" } + ListElement { name: "N95"; os: "S60 5.0" } + ListElement { name: "X6"; os: "S60 5.0" } + ListElement { name: "N97"; os: "Symbian^1" } + ListElement { name: "5800"; os: "Symbian^1" } + ListElement { name: "E7"; os: "Symbian^3" } + ListElement { name: "N8"; os: "Symbian^3" } + ListElement { name: "C7"; os: "Symbian^3" } + ListElement { name: "X7"; os: "Symbian Anna" } + } + +} diff --git a/tests/testapplications/elements/content/MouseAreaElement.qml b/tests/testapplications/elements/content/MouseAreaElement.qml new file mode 100644 index 0000000000..67399688cf --- /dev/null +++ b/tests/testapplications/elements/content/MouseAreaElement.qml @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: mouseareaelementtest + anchors.fill: parent + property string testtext: "" + property int sidelength: 1500 + + focus: true + Rectangle { + id: mouseareaelementbox + color: "lightgray"; border.color: "gray"; radius: 5; clip: true; opacity: .7; height: 300; width: 300 + anchors.centerIn: parent + MouseArea { + id: mouseareaelement + hoverEnabled: true + anchors.fill: parent + } + Rectangle { + id: topleft + height: 50; width: 50; color: metopleft.containsMouse ? "green" : "blue" + anchors { top: mouseareaelementbox.top; left: mouseareaelementbox.left; margins: 5 } + MouseArea { + id: metopleft + hoverEnabled: true + anchors.fill: parent + onContainsMouseChanged: { if (containsMouse && statenum == 1) { advance(); } } + } + } + Rectangle { + id: topright + height: 50; width: 50; color: metopright.containsMouse ? "green" : "blue" + anchors { top: mouseareaelementbox.top; right: mouseareaelementbox.right; topMargin: 5; rightMargin: 5 } + MouseArea { + id: metopright + hoverEnabled: true + anchors.fill: parent + onContainsMouseChanged: { if (containsMouse && statenum == 4) { advance(); } } + } + } + Rectangle { + id: bottomleft + height: 50; width: 50; color: mebottomleft.containsMouse ? "green" : "blue" + anchors { bottom: mouseareaelementbox.bottom; left: mouseareaelementbox.left; bottomMargin: 5; leftMargin: 5 } + MouseArea { + id: mebottomleft + hoverEnabled: true + anchors.fill: parent + onContainsMouseChanged: { if (containsMouse && statenum == 3) { advance(); } } + } + } + Rectangle { + id: bottomright + height: 50; width: 50; color: mebottomright.containsMouse ? "green" : "blue" + anchors { bottom: mouseareaelementbox.bottom; right: mouseareaelementbox.right; bottomMargin: 5; rightMargin: 5 } + MouseArea { + id: mebottomright + hoverEnabled: true + anchors.fill: parent + onContainsMouseChanged: { if (containsMouse && statenum == 2) { advance(); } } + } + } + + Rectangle { + height: 10; width: 10; radius: 5; x: mouseareaelement.mouseX; y: mouseareaelement.mouseY; color: "red" + } + + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: mouseareaelementtest + testtext: "This test contains a number of MouseArea elements. At present there should be four rectangles\n"+ + "Next, move the pointer to the top left of the square" } + }, + State { name: "topleft"; when: statenum == 2 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: topleft; color: "yellow" } + PropertyChanges { target: mouseareaelementtest; testtext: "Good. Now move it down to the bottom right." } + }, + State { name: "bottomright"; when: statenum == 3 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: bottomright; color: "yellow" } + PropertyChanges { target: mouseareaelementtest; testtext: "To the bottom left." } + }, + State { name: "bottomleft"; when: statenum == 4 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: bottomleft; color: "yellow" } + PropertyChanges { target: mouseareaelementtest; testtext: "Then to top right" } + }, + State { name: "topright"; when: statenum == 5 + PropertyChanges { target: helpbubble; showadvance: false } + PropertyChanges { target: topright; color: "yellow" } + PropertyChanges { target: mouseareaelementtest + testtext: "Excellent.\n"+ + "Modifiers test not yet defined." } + }, + State { name: "modifiers"; when: statenum == 6 + PropertyChanges { target: helpbubble; showadvance: true } + PropertyChanges { target: mouseareaelementtest + testtext: "Test has completed\n"+ + "Advance to restart the test." } + } + ] + +} diff --git a/tests/testapplications/elements/content/ParallelAnimationElement.qml b/tests/testapplications/elements/content/ParallelAnimationElement.qml new file mode 100644 index 0000000000..eb217da286 --- /dev/null +++ b/tests/testapplications/elements/content/ParallelAnimationElement.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: parallelanimationelementtest + anchors.fill: parent + property string testtext: "" + property int firstduration: 1000 + property int secondduration: 3000 + ParallelAnimation { + id: parallelanimationelement + running: false + NumberAnimation { id: movement; target: animatedrect; properties: "y"; to: 500; duration: firstduration } + ColorAnimation { id: recolor; target: animatedrect; properties: "color"; to: "green"; duration: secondduration } + } + + Rectangle { + id: animatedrect + width: 50; height: 50; color: "blue"; y: 300 + anchors.horizontalCenter: parent.horizontalCenter + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: animatedrect; color: "blue"; y: 300 } + PropertyChanges { target: parallelanimationelementtest + testtext: "This square will have two properties animated simultaneously.\n"+ + "The next step will see it move quickly down the display, and slowly change its color to green, at the same time"; + } + }, + State { name: "firstchange"; when: statenum == 2 + PropertyChanges { target: parallelanimationelement; running: true } + PropertyChanges { target: parallelanimationelementtest + testtext: "The square should have moved quickly, and recolored slowly\n"+ + "Next, it will recolor quickly and move slowly back to it's original position" + } + }, + State { name: "secondchange"; when: statenum == 3 + StateChangeScript { script: { firstduration = 3000; secondduration = 1000 } } + PropertyChanges { target: movement; to: 300 } + PropertyChanges { target: recolor; to: "blue" } + PropertyChanges { target: parallelanimationelement; running: true } + PropertyChanges { target: parallelanimationelementtest + testtext: "The square should have moved slowly, then recolored quickly, simultaneously\n"+ + "Advance to restart the test" + } + } + ] +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/RectangleElement.qml b/tests/testapplications/elements/content/RectangleElement.qml new file mode 100644 index 0000000000..a34e43b7e9 --- /dev/null +++ b/tests/testapplications/elements/content/RectangleElement.qml @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { id: rectangleelementtest + anchors.fill: parent + property string testtext: "" + + Rectangle { + id: rectangleelement + height: 100; width: 100; color: "blue"; border.width: 2; border.color: "red"; border.aligned: false; smooth: true + anchors.centerIn: parent + Behavior on height { NumberAnimation { duration: 1000 } } + Behavior on width { NumberAnimation { duration: 1000 } } + Behavior on radius { NumberAnimation { duration: 1000 } } + Behavior on color { ColorAnimation { duration: 1000 } } + Behavior on border.color { ColorAnimation { duration: 1000 } } + Behavior on border.width { NumberAnimation { duration: 1000 } } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: rectangleelementtest + testtext: "This is a Rectangle element. It should be small and blue, with a thin, red border.\n"+ + "Next, it will animatedly increase to twice its size" } + }, + State { name: "large"; when: statenum == 2 + PropertyChanges { target: rectangleelement; height: 200; width: 200 } + PropertyChanges { target: rectangleelementtest; testtext: "It should now be large and blue, with a thin, red border.\n"+ + "Next, a radius will be added to round the corners" } + }, + State { name: "largerounded"; when: statenum == 3 + PropertyChanges { target: rectangleelement; height: 200; width: 200; radius: 20 } + PropertyChanges { target: rectangleelementtest; testtext: "The borders should now be rounded.\n"+ + "Next, it will change the color to green" } + }, + State { name: "largeroundedgreen"; when: statenum == 4 + PropertyChanges { target: rectangleelement; height: 200; width: 200; radius: 20; color: "green" } + PropertyChanges { target: rectangleelementtest; testtext: "The rectangle should now be green.\n"+ + "Next, the border width will be increased" } + }, + State { name: "largeroundedgreenthick"; when: statenum == 5 + PropertyChanges { target: rectangleelement; height: 200; width: 200; radius: 20; color: "green"; border.width: 10 } + PropertyChanges { target: rectangleelementtest; testtext: "The border width should have increased significantly.\n"+ + "Advance to restart the test - everything should animate at once" } + } + ] + +} diff --git a/tests/testapplications/elements/content/RegExpValidatorElement.qml b/tests/testapplications/elements/content/RegExpValidatorElement.qml new file mode 100644 index 0000000000..4892ca55e7 --- /dev/null +++ b/tests/testapplications/elements/content/RegExpValidatorElement.qml @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: regexpvalidatorelementtest + anchors.fill: parent + property string testtext: "" + property variant regexp: /[a-z]{3}/ + + RegExpValidator { id: regexpvalidatorelement; regExp: regexp } + + Rectangle { + id: regexpvalidatorelementbackground + color: regexpvalidatorelementinput.acceptableInput ? "green" : "red"; height: 50; width: parent.width *.8 + border.color: "gray"; opacity: 0.7; radius: 5 + anchors.centerIn: parent + + TextInput { + id: regexpvalidatorelementinput + font.pointSize: 12; width: parent.width; text: "0"; horizontalAlignment: Text.AlignHCenter; validator: regexpvalidatorelement + anchors.centerIn: parent + Behavior on font.pointSize { NumberAnimation { duration: 1000 } } + Behavior on color { ColorAnimation { duration: 1000 } } + } + } + + Text{ + anchors.top: regexpvalidatorelementbackground.bottom; anchors.topMargin: 50; anchors.horizontalCenter: parent.horizontalCenter + text: "Regular Expression: " + regexp + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: regexpvalidatorelementinput; text: "abc" } + PropertyChanges { target: regexpvalidatorelementtest + testtext: "This is a TextInput element using an RegExpValidator for input masking. At present it should be indicating abc.\n"+ + "The regExp value will only match to a value that has three alpha characters\n"+ + "Next, let's attempt to enter text that does not match the regular expression: 123" } + }, + State { name: "notmatch"; when: statenum == 2 + PropertyChanges { target: regexpvalidatorelementinput; text: "123" } + PropertyChanges { target: regexpvalidatorelementtest + testtext: "The TextInput background should be showing red - input is not acceptable.\n"+ + "Next, let's enter a word with not enough characters to match: aa." } + }, + State { name: "notenough"; when: statenum == 3 + PropertyChanges { target: regexpvalidatorelementinput; text: "aa" } + PropertyChanges { target: regexpvalidatorelementtest + testtext: "The TextInput background should be showing red - input is not acceptable.\n"+ + "Next, let's attempt to enter a word with too many characters to match: abcd" } + }, + State { name: "toomany"; when: statenum == 4 + PropertyChanges { target: regexpvalidatorelementinput; text: "abcd" } + PropertyChanges { target: regexpvalidatorelementtest + testtext: "The TextInput background should still be showing red - input is not acceptable.\n"+ + "Next, let's change the regex to accept the new value." } + }, + State { name: "changedregex"; when: statenum == 5 + PropertyChanges { target: regexpvalidatorelementinput; text: "abcd" } + PropertyChanges { target: regexpvalidatorelementtest; regexp: /[a-z]{4}/ + testtext: "The regular expression should have changed to match four characters, "+ + "thus making the text valid and turning the input background green.\n"+ + "Press advance to restart the test." } + PropertyChanges { target: bugpanel; bugnumber: "19956" } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/RepeaterElement.qml b/tests/testapplications/elements/content/RepeaterElement.qml new file mode 100644 index 0000000000..327eb626e3 --- /dev/null +++ b/tests/testapplications/elements/content/RepeaterElement.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: repeaterelementtest + anchors.fill: parent + property string testtext: "" + property bool showme: true + + Column { + id: container + height: 50; width: 250; spacing: 5 + anchors.centerIn: parent + Repeater { id: repeaterelement; model: repeatermodel } + Rectangle { height: 50; width: 150; color: "green" } + move: Transition { NumberAnimation { properties: "x,y"; duration: 1000; easing.type: Easing.OutBounce } } + add: Transition { NumberAnimation { properties: "x,y"; duration: 1000; easing.type: Easing.OutBounce } } + + } + + VisualItemModel { + id: repeatermodel + Rectangle { color: "blue"; height: 50; width: 150; border.color: "black"; border.width: 3; opacity: .9; radius: 5; clip: true + Text { text: "I am Thing 1"; anchors.centerIn: parent } } + Rectangle { color: "blue"; height: 50; width: 150; border.color: "black"; border.width: 3; opacity: .9; radius: 5; clip: true + Text { text: "I am Thing 2"; anchors.centerIn: parent } } + Rectangle { visible: repeaterelementtest.showme; + color: "blue"; height: 50; width: 150; border.color: "black"; border.width: 3; opacity: .9; radius: 5; clip: true + Text { text: "I am Thing 3"; anchors.centerIn: parent } } + Rectangle { color: "blue"; height: 50; width: 150; border.color: "black"; border.width: 3; opacity: .9; radius: 5; clip: true + Text { text: "I am Thing 4"; anchors.centerIn: parent } } + Rectangle { color: "blue"; height: 50; width: 150; border.color: "black"; border.width: 3; opacity: .9; radius: 5; clip: true + Text { text: "I am Thing 5"; anchors.centerIn: parent } } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: repeaterelementtest + testtext: "This is a Repeater element. At present it should be showing five blue rectangles in a column, with"+ + "a green rectangle at the bottom.\n"+ + "Next, let's remove one of the rectangles from the column - the column should bounce when they are removed." } + }, + State { name: "back"; when: statenum == 2 + PropertyChanges { target: repeaterelementtest; showme: false } + PropertyChanges { target: repeaterelementtest + testtext: "Repeater should now be showing a total of five rectangles.\n"+ + "Advance to restart the test." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/RowElement.qml b/tests/testapplications/elements/content/RowElement.qml new file mode 100644 index 0000000000..dda913a2d6 --- /dev/null +++ b/tests/testapplications/elements/content/RowElement.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: rowelementtest + anchors.fill: parent + property string testtext: "" + + Row { + id: rowelement + height: 50; width: 250; spacing: 5 + anchors.centerIn: parent + Rectangle { id: gr; color: "green"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + Rectangle { id: re; color: "red"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + Rectangle { + id: bl + color: "blue"; height: 50; width: 50; border.color: "gray"; border.width: 3; radius: 5; clip: true + opacity: 0; visible: opacity != 0 + } + Rectangle { id: bk; color: "black"; height: 50; width: 50; border.color: "gray"; border.width: 3; opacity: .9; radius: 5; clip: true } + + move: Transition { NumberAnimation { properties: "x"; duration: 500; easing.type: Easing.OutBounce } } + add: Transition { NumberAnimation { properties: "x"; duration: 1000; easing.type: Easing.OutBounce } } + + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: rowelementtest + testtext: "This is a Row element. At present it should be showing three rectangles - green, red and black.\n"+ + "Next, let's add a rectangle to the Row - it should slide in from the left and the black rectangle should move to give it space" } + }, + State { name: "back"; when: statenum == 2 + PropertyChanges { target: bl; opacity: .9 } + PropertyChanges { target: rowelementtest + testtext: "Row should now be showing four rectangles - green, red, blue and black.\n"+ + "Advance to restart the test." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/ScaleElement.qml b/tests/testapplications/elements/content/ScaleElement.qml new file mode 100644 index 0000000000..2563f77023 --- /dev/null +++ b/tests/testapplications/elements/content/ScaleElement.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: scaleelementtest + anchors.fill: parent + property string testtext: "" + + Rectangle { + id: scaletarget + color: "green"; height: 100; width: 100; border.color: "gray"; opacity: 0.7; radius: 5 + anchors.centerIn: parent + transform: Scale { + id: scaleelement + property alias originx: scaleelement.origin.x + property alias originy: scaleelement.origin.y + origin.x: 50; origin.y: 50 + Behavior on xScale { NumberAnimation { duration: 500 } } + Behavior on yScale { NumberAnimation { duration: 500 } } + // QTBUG-20827 Behavior on origin.x { NumberAnimation { duration: 500 } } + // QTBUG-20827 Behavior on origin.y { NumberAnimation { duration: 500 } } + + } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: scaleelementtest + testtext: "This is a Rectangle that will be transformed using a Scale element.\n"+ + "Next, it will be scaled to 2x size." } + }, + State { name: "scaleup"; when: statenum == 2 + PropertyChanges { target: scaleelement; xScale: 2; yScale: 2 } + PropertyChanges { target: scaleelementtest + testtext: "It should be scaled to 2x.\nNext, it will shift to the right." } + }, + State { name: "shiftright"; when: statenum == 3 + PropertyChanges { target: scaleelement; xScale: 2; yScale: 2; origin.x: 0; origin.y: 50 } + PropertyChanges { target: scaleelementtest + testtext: "It should be on the right, still scaled to 2x.\nNext, it will shift to the left" } + }, + State { name: "shiftleft"; when: statenum == 4 + PropertyChanges { target: scaleelement; xScale: 2; yScale: 2; origin.x: 100; origin.y: 50 } + PropertyChanges { target: scaleelementtest + testtext: "It should be on the left, still scaled to 2x.\nAdvance to restart the test." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/SequentialAnimationElement.qml b/tests/testapplications/elements/content/SequentialAnimationElement.qml new file mode 100644 index 0000000000..94531a2184 --- /dev/null +++ b/tests/testapplications/elements/content/SequentialAnimationElement.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: sequentialanimationelementtest + anchors.fill: parent + property string testtext: "" + property int firstduration: 1000 + property int secondduration: 3000 + SequentialAnimation { + id: sequentialanimationelement + running: false + NumberAnimation { id: movement; target: animatedrect; properties: "y"; to: 500; duration: firstduration } + ColorAnimation { id: recolor; target: animatedrect; properties: "color"; to: "green"; duration: secondduration } + } + + Rectangle { + id: animatedrect + width: 50; height: 50; color: "blue"; y: 300 + anchors.horizontalCenter: parent.horizontalCenter + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: animatedrect; color: "blue"; y: 300 } + PropertyChanges { target: sequentialanimationelementtest + testtext: "This square will be animated in a sequence.\n"+ + "The next step will see it move quickly down the display, then slowly change its color to green"; + } + }, + State { name: "firstchange"; when: statenum == 2 + PropertyChanges { target: sequentialanimationelement; running: true } + PropertyChanges { target: sequentialanimationelementtest + testtext: "The square should have moved quickly and also recolored slowly\n"+ + "Next, it will recolor quickly and move slowly back to it's original position at the same time" + } + }, + State { name: "secondchange"; when: statenum == 3 + StateChangeScript { script: { firstduration = 3000; secondduration = 1000 } } + PropertyChanges { target: movement; to: 300 } + PropertyChanges { target: recolor; to: "blue" } + PropertyChanges { target: sequentialanimationelement; running: true } + PropertyChanges { target: sequentialanimationelementtest + testtext: "The square should have moved slowly and also recolored quickly\n"+ + "Advance to restart the test" + } + } + ] +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/SystemPaletteElement.qml b/tests/testapplications/elements/content/SystemPaletteElement.qml new file mode 100644 index 0000000000..8a0347e104 --- /dev/null +++ b/tests/testapplications/elements/content/SystemPaletteElement.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: systempaletteelementtest + anchors.fill: parent + property string testtext: "" + + SystemPalette { id: syspal; colorGroup: SystemPalette.Inactive } + Rectangle { + height: parent.height *.8; width: parent.width *.8; border.width: 6; radius: 4 + anchors.centerIn: parent + color: syspal.base; border.color: syspal.window + Rectangle { + height: 20; width: parent.width; border.color: "black"; color: syspal.window; radius: 4 + Text { text: "File"; color: syspal.windowText; font.pointSize: 9 + anchors { left: parent.left; leftMargin: 5; verticalCenter: parent.verticalCenter } + } + Rectangle { + id: shadow + height: button.height; width: button.width; color: syspal.shadow; radius: 5; opacity: .5 + anchors { left: button.left; top: button.top; leftMargin: 2; topMargin: 2 } + } + Rectangle { + id: button + width: 100; height: 30; radius: 5; border.color: "black"; color: clicky.pressed ? syspal.highlight : syspal.button + Behavior on color { ColorAnimation { duration: 500 } } + anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 30 } + Text { anchors.centerIn: parent; text: "Button"; color: syspal.buttonText } + MouseArea { id: clicky; anchors.fill: parent + onPressed: { shadow.anchors.topMargin = 1; shadow.anchors.leftMargin = 1 } + onReleased: { shadow.anchors.topMargin = 2; shadow.anchors.leftMargin = 2 } + } + } + } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 100 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: systempaletteelementtest + testtext: "This is an mock application shaded with the help of the SystemPalette element.\n"+ + "The colors of the menu bar, menu text and button should mimic that of the OS it is running on.\n"+ + "Pressing the lablelled button should shade it to the system highlight color." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/SystemTestHelp.qml b/tests/testapplications/elements/content/SystemTestHelp.qml new file mode 100644 index 0000000000..7f3d8c3451 --- /dev/null +++ b/tests/testapplications/elements/content/SystemTestHelp.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: helpbubble + visible: false + property bool showtext: false + property bool showadvance: true + onShowadvanceChanged: { advancearrow.visible = showadvance; } + + width: 300; radius: 15; color: "white"; border.color: "black"; border.width: 3 + height: showadvance ? bubbletext.height + advancearrow.height + 25 : bubbletext.height + 25 + Behavior on height { + SequentialAnimation { + ScriptAction { script: { bubbletext.visible = false; advancearrow.visible = false } } + NumberAnimation { duration: 200 } + ScriptAction { script: { bubbletext.visible = true; advancearrow.visible = showadvance && true } } + } + } + Behavior on width { + SequentialAnimation { + ScriptAction { script: { bubbletext.visible = false; advancearrow.visible = false } } + NumberAnimation { duration: 200 } + ScriptAction { script: { bubbletext.visible = true; advancearrow.visible = true } } + } + } + Text { id: bubbletext; width: parent.width - 30; text: testtext; wrapMode: Text.WordWrap + anchors { top: parent.top; topMargin: 15; left: parent.left; leftMargin: 20 } + } + Image { id: advancearrow; source: "pics/arrow.png"; height: 30; width: 30; visible: showadvance + anchors { right: parent.right; bottom: parent.bottom; rightMargin: 5; bottomMargin: 5 } + MouseArea { enabled: showadvance; anchors.fill: parent; onClicked: { advance(); } } + } +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/TextEditElement.qml b/tests/testapplications/elements/content/TextEditElement.qml new file mode 100644 index 0000000000..4be0188c7b --- /dev/null +++ b/tests/testapplications/elements/content/TextEditElement.qml @@ -0,0 +1,144 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: texteditelementtest + anchors.fill: parent + property string testtext: "" + property string wraptext: "Set this property to wrap the text to the TextEdit item's width. The text will only wrap if an explicit width has been set." + + Rectangle { + id: texteditelementbackground + color: "green"; height: 150; width: parent.width *.8; border.color: "gray"; opacity: 0.7; radius: 5; clip: true + anchors.centerIn: parent + + TextEdit { + id: texteditelement + font.pointSize: 12; width: parent.width; text: ""; horizontalAlignment: Text.AlignLeft + anchors.centerIn: parent + Behavior on font.pointSize { NumberAnimation { duration: 1000 } } + Behavior on color { ColorAnimation { duration: 1000 } } + } + } + + Rectangle { + id: secondarybackground + color: "lightgray"; border.color: "gray"; opacity: 0.7; radius: 5; height: 150; width: parent.width *.8 + anchors { top: texteditelementbackground.bottom; topMargin: 50; horizontalCenter: parent.horizontalCenter } + + TextEdit { + id: secondary + property string ignoretext: "Nothing to see here" + font.pointSize: 12; width: parent.width; text: ""; opacity: text == ignoretext ? .3 : 1; horizontalAlignment: Text.AlignLeft + anchors.centerIn: parent + } + } + Rectangle { + id: shadowrect + color: "lightgray"; height: 50; width: parent.width *.8; border.color: "gray"; opacity: 0; radius: 5 + anchors.horizontalCenter: texteditelementbackground.horizontalCenter; + anchors.verticalCenter: texteditelementbackground.verticalCenter; + + Text { + id: shadowtext + font.pointSize: 12; width: parent.width; text: ""; horizontalAlignment: Text.AlignLeft + anchors.centerIn: parent + } + } + transitions: Transition { + AnchorAnimation { targets: shadowrect; duration: 1000 } + } + + SequentialAnimation { id: copypaste + ScriptAction { script: { secondary.text = ""; shadowtext.text = texteditelement.selectedText; texteditelement.copy(); } } + NumberAnimation { target: shadowrect; property: "opacity"; to: 0.5; duration: 100 } + PauseAnimation { duration: 1000 } + ScriptAction { script: { secondary.paste(); } } + NumberAnimation { target: shadowrect; property: "opacity"; to: 0; duration: 100 } + NumberAnimation { target: shadowrect; property: "x"; to: texteditelementbackground.x; duration: 0 } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + StateChangeScript { + script: { + texteditelement.text = "Hello, my name is TextEdit" + secondary.text = "Nothing to see here"; + } + } + PropertyChanges { target: texteditelementtest + testtext: "This is a TextEdit element. At present it should be saying hello.\n"+ + "Next, the TextEdit portion of the displayed text will be selected" } + }, + State { name: "highlight"; when: statenum == 2 + StateChangeScript { script: texteditelement.select(18, 26); } + PropertyChanges { target: texteditelementtest + testtext: "TextEdit should now be highlighted.\nNext, it will be copied this to the other TextEdit." } + }, + State { name: "copypaste"; when: statenum == 3 + PropertyChanges { target: copypaste; running: true } + AnchorChanges { target: shadowrect; anchors.verticalCenter: secondarybackground.verticalCenter } + PropertyChanges { target: texteditelementtest + testtext: "The second TextEdit should now be showing the selected text of the top TextEdit.\n"+ + "Next, a larger amount of text will be entered." } + }, + State { name: "largetextnowrap"; when: statenum == 4 + PropertyChanges { target: texteditelement; text: wraptext } + PropertyChanges { target: texteditelementtest + testtext: "The TextEdit should now be showing a line of text, chopped off by the edge of the rectangle.\n"+ + "Next, the TextEdit will set wrapping to fix that." } + }, + State { name: "largetextwrap"; when: statenum == 5 + PropertyChanges { target: texteditelement; text: wraptext; wrapMode: TextEdit.WordWrap } + PropertyChanges { target: texteditelementtest + testtext: "The TextEdit should now be showing a block of text.\n"+ + "Advance to restart the test." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/TextElement.qml b/tests/testapplications/elements/content/TextElement.qml new file mode 100644 index 0000000000..2af1214186 --- /dev/null +++ b/tests/testapplications/elements/content/TextElement.qml @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: textelementtest + anchors.fill: parent + property string testtext: "" + + Text { + id: textelement + property int pseudopointsize: 12 + anchors.centerIn: parent + height: 200; width: parent.width *.8; wrapMode: Text.WordWrap; font.pointSize: 12 + text: "Hello, my name is Text"; horizontalAlignment: Text.AlignHCenter; textFormat: Text.PlainText + Behavior on font.pointSize { NumberAnimation { duration: 1000 } } + Behavior on color { ColorAnimation { duration: 1000 } } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: textelementtest + testtext: "This is a Text element. At present it should be saying hello.\n"+ + "Next, it will animatedly increase the text to twice its size" } + }, + State { name: "fontlarge"; when: statenum == 2 + PropertyChanges { target: textelement; font.pointSize: 24 } + PropertyChanges { target: textelementtest + testtext: "The font should have increased in size, and wrapped once too large for the screen width.\n"+ + "Next, let's change the color to blue." } + PropertyChanges { target: bugpanel; bugnumber: "19848" } + }, + State { name: "fontlargeblue"; when: statenum == 3 + PropertyChanges { target: textelement; font.pointSize: 24; color: "blue" } + PropertyChanges { target: textelementtest + testtext: "The font should now be blue.\n"+ + "Next, let's add some formatting." } + }, + State { name: "fontlargeblueitalicsbold"; when: statenum == 4 + PropertyChanges { target: textelement; font.pointSize: 24; color: "blue"; font.bold: true; font.italic: true } + PropertyChanges { target: textelementtest + testtext: "The font should now be blue, bold and italic.\n"+ + "Next, let's use rich text." } + PropertyChanges { target: bugpanel; bugnumber: "19848" } + }, + State { name: "fontlargerichtext"; when: statenum == 5 + PropertyChanges { + target: textelement; font.pointSize: 24; color: "blue"; font.bold: true; font.italic: true + text: "I am now multicolored!"; textFormat: Text.RichText + } + PropertyChanges { target: textelementtest + testtext: "The font should now be bold and italic, and alternating in color.\n"+ + "The test will now return to the start." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/TextInputElement.qml b/tests/testapplications/elements/content/TextInputElement.qml new file mode 100644 index 0000000000..14e3203238 --- /dev/null +++ b/tests/testapplications/elements/content/TextInputElement.qml @@ -0,0 +1,139 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: textinputelementtest + anchors.fill: parent + property string testtext: "" + + Rectangle { + id: textinputelementbackground + color: "green"; height: 50; width: parent.width *.8; border.color: "gray"; opacity: 0.7; radius: 5 + anchors.centerIn: parent + TextInput { + id: textinputelement + font.pointSize: 12; width: parent.width; text: ""; horizontalAlignment: Text.AlignHCenter + anchors.centerIn: parent + Behavior on font.pointSize { NumberAnimation { duration: 1000 } } + Behavior on color { ColorAnimation { duration: 1000 } } + } + } + + Rectangle { + id: secondarybackground + color: "lightgray"; border.color: "gray"; opacity: 0.7; radius: 5; height: 50; width: parent.width *.8 + anchors { top: textinputelementbackground.bottom; topMargin: 100; horizontalCenter: parent.horizontalCenter } + + TextInput { + id: secondary + property string ignoretext: "Nothing to see here" + font.pointSize: 12; text: ""; opacity: text == ignoretext ? .3 : 1; horizontalAlignment: Text.AlignHCenter + anchors.centerIn: parent; width: parent.width + } + } + Rectangle { + id: shadowrect + color: "lightgray"; height: 50; width: parent.width *.8; border.color: "gray"; opacity: 0; radius: 5 + anchors.horizontalCenter: textinputelementbackground.horizontalCenter; + anchors.verticalCenter: textinputelementbackground.verticalCenter; + Text { + id: shadowtext + font.pointSize: 12; width: parent.width; text: ""; horizontalAlignment: Text.AlignHCenter + anchors.centerIn: parent + } + } + transitions: Transition { + AnchorAnimation { targets: shadowrect; duration: 1000 } + } + + SequentialAnimation { id: copypaste + ScriptAction { script: { secondary.text = ""; shadowtext.text = textinputelement.selectedText; textinputelement.copy(); } } + NumberAnimation { target: shadowrect; property: "opacity"; to: 0.5; duration: 100 } + PauseAnimation { duration: 1000 } + ScriptAction { script: { secondary.paste(); } } + NumberAnimation { target: shadowrect; property: "opacity"; to: 0; duration: 100 } + NumberAnimation { target: shadowrect; property: "x"; to: textinputelementbackground.x; duration: 0 } + } + + BugPanel { id: bugpanel } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + + states: [ + State { name: "start"; when: statenum == 1 + StateChangeScript { + script: { + textinputelement.text = "Hello, my name is TextInput" + secondary.text = "Nothing to see here"; + } + } + PropertyChanges { target: textinputelementtest + testtext: "This is a TextInput element. At present it should be saying hello.\n"+ + "Next, it will select the TextInput portion of the displayed text" } + }, + State { name: "highlight"; when: statenum == 2 + StateChangeScript { script: textinputelement.select(18, 27); } + PropertyChanges { target: textinputelementtest + testtext: "TextInput should now be highlighted.\nNext, copy this to the other TextInput." } + }, + State { name: "copypaste"; when: statenum == 3 + PropertyChanges { target: copypaste; running: true } + AnchorChanges { target: shadowrect; anchors.verticalCenter: secondarybackground.verticalCenter } + PropertyChanges { target: textinputelementtest + testtext: "The second TextInput should now be showing the selected text of the top TextInput.\n"+ + "Next, let's change the way the entered text is displayed." } + }, + State { name: "passwordmode"; when: statenum == 4 + StateChangeScript { script: textinputelement.deselect(); } + PropertyChanges { target: textinputelement; echoMode: TextInput.Password } + PropertyChanges { target: textinputelementtest + testtext: "The TextInput should now be showing asterisks (*) for every character in the top TextInput - all "+ + textinputelement.text.length+" of them.\n"+ + "Next, let's return to the start." } + } + ] + + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/XmlListModelElement.qml b/tests/testapplications/elements/content/XmlListModelElement.qml new file mode 100644 index 0000000000..3ea0f9cc8a --- /dev/null +++ b/tests/testapplications/elements/content/XmlListModelElement.qml @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Item { + id: xmllistmodelelementtest + anchors.fill: parent + property string testtext: "" + property string modelxml: ""+ + ""+ + "Hot chocolate"+ + ""+ + "" + + XmlListModel { id: xmllistmodelelement + source: "cookbook.xml" + query: "/cookbook/recipe" + XmlRole { name: "title"; query: "title/string()" } + XmlRole { name: "xmlid"; query: "@id/string()" } + XmlRole { name: "method"; query: "method/string()" } + XmlRole { name: "time"; query: "time/@quantity/number()" } + } + + ListView { + id: recipeview + model: xmllistmodelelement; height: 300; width: 300; clip: true + anchors.centerIn: parent + delegate: Component { + Rectangle { id: delbox; height: 50; width: 296; color: "orange"; border.color: "black"; state: "closed"; clip: true; radius: 5 + anchors.horizontalCenter: parent.horizontalCenter + Text { + id: recipetitle + text: model.title; font.pointSize: 12; font.bold: true + anchors.horizontalCenter: parent.horizontalCenter; y: 20; + } + + Text { + id: recipetime + width: parent.width; height: 20; text: "Time: " +model.time + " minutes"; visible: opacity != 0 + anchors.horizontalCenter: parent.horizontalCenter; anchors.top: recipetitle.bottom + Behavior on opacity { NumberAnimation { duration: 250 } } + } + + // Sub XmlListModel + XmlListModel { id: subxmllistmodelelement + source: "cookbook.xml" + query: "/cookbook/recipe[@id = '"+model.xmlid+"']/ingredient" + XmlRole { name: "ingredientname"; query: "@name/string()" } + XmlRole { name: "ingredientquantity"; query: "@quantity/string()" } + XmlRole { name: "ingredientunit"; query: "@unit/string()" } + } + + ListView { + id: ingredientlist + model: subxmllistmodelelement + height: 20 * count; width: parent.width + visible: opacity != 0 + Behavior on opacity { NumberAnimation { duration: 250 } } + anchors.horizontalCenter: parent.horizontalCenter; anchors.top: recipetime.bottom; anchors.topMargin: 10 + header: Text { text: "Ingredients:" } + delegate: Text { + text: ingredientquantity + " " + ingredientunit + " of " + ingredientname; height: 20; + } + } + + Text { + id: recipemethod + property string methodtext: "" + width: parent.width; wrapMode: Text.WordWrap; visible: opacity != 0; text: methodtext + anchors.horizontalCenter: parent.horizontalCenter; anchors.top: ingredientlist.bottom + Behavior on opacity { NumberAnimation { duration: 250 } } + Component.onCompleted: { console.log(model.method); methodtext = model.method; console.log(recipemethod.textFormat); } + } + MouseArea { anchors.fill: parent; onClicked: delbox.state = delbox.state == "open" ? "closed" : "open" } + Behavior on height { NumberAnimation { duration: 250 } } + states: [ + State { name: "closed" + PropertyChanges { target: delbox; height: 50 } + PropertyChanges { target: recipemethod; opacity: 0 } + PropertyChanges { target: recipetime; opacity: 0 } + PropertyChanges { target: ingredientlist; opacity: 0 } + }, + State { name: "open" + PropertyChanges { target: delbox; height: recipemethod.height+recipetime.height+ingredientlist.height+50 } + PropertyChanges { target: recipemethod; opacity: 1 } + StateChangeScript { script: { recipeview.positionViewAtIndex(model.index, ListView.Beginning); } } + } + ] + } + } + } + + SystemTestHelp { id: helpbubble; visible: statenum != 0 + anchors { top: parent.top; horizontalCenter: parent.horizontalCenter; topMargin: 50 } + } + BugPanel { id: bugpanel } + + states: [ + State { name: "start"; when: statenum == 1 + PropertyChanges { target: xmllistmodelelementtest + testtext: "This is a ListView populated by an XmlListModel. Clicking on an item will show the recipe details.\n"+ + "Next we will change to source of the model data to a local string" } + }, + State { name: "xmlstring"; when: statenum == 2 + PropertyChanges { target: xmllistmodelelement; source: "" } + PropertyChanges { target: xmllistmodelelement; xml: modelxml } + PropertyChanges { target: xmllistmodelelementtest + testtext: "The list should now only contain a Hot chocolate recipe.\n"+ + "Advance to restart the test." } + } + ] + +} \ No newline at end of file diff --git a/tests/testapplications/elements/content/cookbook.xml b/tests/testapplications/elements/content/cookbook.xml new file mode 100644 index 0000000000..33dd91a5de --- /dev/null +++ b/tests/testapplications/elements/content/cookbook.xml @@ -0,0 +1,62 @@ + + + + Quick and Easy Mushroom Soup + + + + + + + + + + + + Cheese on Toast + + + + diff --git a/tests/testapplications/elements/content/elements.js b/tests/testapplications/elements/content/elements.js new file mode 100644 index 0000000000..fb8cfdec45 --- /dev/null +++ b/tests/testapplications/elements/content/elements.js @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +var newcomponent = Qt.createComponent("AppContainer.qml"); +var appfile; +var demoapp; + + +function setapp(appname,par) { + appfile = appname; + demoapp = newcomponent.createObject(par); + demoapp.qmlfile = appfile; +} + + +function removeApp() { + demoapp.destroy(); +} diff --git a/tests/testapplications/elements/content/font/Vera.ttf b/tests/testapplications/elements/content/font/Vera.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58cd6b5e61eff273e920942e28041f8ddcf1e1b5 GIT binary patch literal 65932 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

B-* zC^QzD=7A5@!hAMQtdbVU3v~1J<@)*N#pcD<8ljf06jwpfN)(KwZpZzF^0u2a0p-|!ObcW!}m_*E{=TZbfN8XRDk9()43 z^bP|YgmykD6|i~dJ`>KjIO|O5Cb*~wU%^FHpFlKXG(&K&oz_fa8y~g3ucYqeTf%SN z{1Bc(gOdw2D+D^=XD)Ul1RKt5us+a~pieM$7kcY^nnvg+N)PIbg-7)Bgn6bKVTn*H zt=6wFZ4%ZCTcoG-n@yqcQkY(+GawWI=Qhw_x5U#9LL!ToI_MG%i6*zD2jN~o=NqTVAwyT6x1cLziBqm2}Qk#f_k%@{ls=PlC&v=#|>^ zqfp(vf`vn4HbG;4gEgfmn>-!7yMh)DKqff{^y%D@L)L=mk)TU;2341;ak^hu8^p-f zMt@207kUWELNcT^Q}75L$)kTjctCnUUnD#(Y!vJPG=xPO<7p!6MSC-k5&L#FpOqVT z8~N!FQzZ@BSG<(Jc``@lvoS78Pzkp`_uJ29xQTQkS-A(w&s@((;Fma(i2kv z3(?z6Nv0mGk3P*blnvL9HjQJG^u?@1UuK%e=Ia-mcAEk?XK+3NJJN$jRf_dZIqdA+ z0qjWAbm_|WyJZKriyJs5Ja=LuGSqZrtj8uEkdF!n$V=GFv%y4<6Z{K2_R9kmEdfy^ z_@NuP#Uk}!7=FXv9km8sKhZKgGE_QSnPj|$9;S#*su^0-{f}qemoF9!2Y?1 zP^L`${(IT~$3NG}B8T-V+m9>9kL6!KYIHDj2H!2_{UBOk>`|Q z%CK_+groTqU9HSPQUfIZh7vCND~GVVxBZqJfK?RjJo<7OWCedj|GR%w4%O9hYz~UI zgjI4eT6Xgo=rQuL$c9j)GH@io1#g@d$z?#{{&)aifwYWjcN16f+R&pRvK4EpZYa&mEorr04tO+!eKo(>%=uMGK@1GG5dR@2-+oXvu zeC{U1Sy-f$cxB}%yZ{Ol}D6Emb=TNmP9OxT;g65 z71Z`DaRBWFHnoJBquRyZh1Wkjw6tv7iN?mXQ!5XhZ@x=~=eFb>&nS<}K77x+HXc zXhSI9ytTN-JPyx;o$9U$@mTgv_ER}8pE>h#&QsZ=_D*SrgV%-1fs|Bi({63DFBf9ZpjQrxyHQ9u(84 zb-Eq3cwkIrrk3y$(DpomJ=56O_oc_q-@AAIv6q_9f^7TugLLe;F!iS!`wR2w5UR&( zNWS9ol84cfS8g#Js!WJsBZ5Z5d%I zh^N(4AWl5(X#2K$Wba8#3oj3E2>&4bR=AW#(rB8H=1L2dI_r}3NrukGGEzp%gfdrI zsA0;ZoWN0PT19Ih89P!PBFs1f5f?WdHD7#X=GkclA3UPmR?gDIrZ1?jQP{h3`w6Qs zb@J_SdZhAmXW_>q1*2$^^5KaiM-IOx`)|vcQBc>E#6GOce)V~k z2g-PHGI(G@w##swA(+Dr&Kkdf6E=1tKBh6@l;MQ!wUF@mV4^n-IxB7~zS_RQY;O?&rls^8nFD0lJ?J@CM; zF~2?5=jdanv=1?6LYoCr+flJm;-5!k*@bgk8ILy}qZpR`ze+RaE#rr{7y(`U1?$&!szI zSNXd55;=u)X}w4?Th65sx5fJAdqyqI9_yP&fcY`?TaEZn%)8ql`~MZ=-TOotua0LT zHZsH$W)gJ7`np+HE4@ZenP0N&?UFp&LiJ{nX;+V|uS3a0k$?~UjFdA06FEGN97mp` z+@Ve6?+XHJ6F&Rf%x)zk)mhhk^ybd|ZE}adLZUbYcLEb5tWV;v$AV9hExur|o@BNU z24DB>kocK!yI`rx3ev}gX}r!xb9uuN4kHrTkPNBEir^gc6neI zZXpj&o;)GMeb;Z%=vT-VfdZSBIKIbX_r~kX zrCSJ5s_X)*WdEP=d&DZObm3Sv(PXkGUUnLSY(x&%xy-fUZq^ujD%h?g4x3&t=Q#AX zoUkC6q8Mndl%^)c>r~IUfB);Z)i5p>L62W@Y)))>?E2USyxxfYEcRZk0Wzsdp{uQA zwu-1r6Vb$sHl+eR?MsSYg*QJKlJ< zxmL_OJbl_@UJS%SVBm+-xOVI1)Gx0WZa&rZaxBmFdnB0Ow_?2D{OXFq#C*YMI)9F; zZvvrj{Nxi(a>Crm^DCXU2bj~9abJF=CnhbpnpDe+b&K_jvDaB_sx~jSEVeGTEw(Rq zR684jZv{I5O`DXPc4?TEn+`o+zwywajkl;%xq0jF%JR!NLdJLL> z@s|i31n`{QRFyP5Jru4*JC~#K#EBNqLg?*tH}*FlmW>D7_!jg#pUDLETC}wao6qlQ zw5h%nT|I@~n`(T6X(+;+_=KDUKj4*MM&x8w=Eq1+cV`Gc=(|ov%Q7=6B z)4#kj#fF1&4wCHgmk~X2;JT%?(QryP>kVR# zMKseJ#DovFO7yRBtqS5kSR8yXUlempsNSm6`$uPV;80y|7sZ5Ah772G-sFo@-3e+@ zO!bq;cM|yKb#|CB%oJws3fH2usk6DCp`Wpzsh`>8CTb@WT}PjYn(=n&B% zGSQtF6`N3FtTEM?Yb;IzdI^GTlugXcEX>Mm%+7*Y2n%IlxK5Rjl$e(IaN^>`C5h`3 z8xn6N24R!EnLb|&DiSf{gYR%nzkwJ^xl8}aq>H}iqGUPTT}GB z=lQLF`CaibG3{`N4!OCWtSD>8ZL4-3kBND`M~_JljL3md zcoYiWXdc3CPEW%9u?`uz1=iaodL%ppG!Q^5Ueb>{rB!F8#- z!=EKFt{aBHAP))hP|^lrkD%xC8<0uD4-!IHh!~H6Y9dP%-TEG+2kp!HiU^<}%$LQo z#7t?J?9q=W&Bp;PJ9ca(?jhKjBw-PoFD?Sp7t0HEixD|oU|4LZ zHqJFIGS~7Gc^q!>6=H1qPWFOrl>|xJ~&r1j71G?w+d(1Cd ze=EGiUK8=#0fslMr-gUe1@V1pfhs7WG!_47jETmKZ~XeJt6zWBsC;tu?>}6H$ZTda z`TK4I+uSr0#O{YRhhKm|D0i|aQ{utfK#8aPI%<^^8cgAuMz7J_a?nJC?P`-n)}1Q5HNqf2SdgMV8ZEv zPgJ%VMbQ`{x{UG00b)1fIB|k*qOsUGmo60N>Z*)u#bw5A;%;$^?n&c%<34&od{Nx1 zd)C-s3`3ww!cm0@L4C<(2r==HaGaqd0>X%zvtCkn9S`FtTe4WDlwlZd@>p<8LMI86 z*aT_3JV`fRKi)9Olw&Eg%%_VjJLo3e^K_5yh~@W|&n)*WNnnXV;1ORnEH4%+kI;ix zm6OWJtMp~1;wnv~iDF*!XU%WXMrD{VTnJDer97540GEgXk6jfGjY_V z2B%u0tgS~%>S+qjiBr^j1e_;&l@oS#`P$)?wJcwi6Zj5jQSRf!E!=EIDpwZvtZw|4B*b+!A zOt@QgONmH^h%?5TV$BJbj@FJgx1$&IEkf2}veety)6~=4+tSC{$Cm6EL_8D$Y^0}n zyvsG+kYOBZ$+BkIJdRxQ0DV9h$8y9RaBUp8Ho-6fOLm-jl68_T$5Bj+g&D>YYl$t- zQLUeEoo`!3o-nL1tuU{$tg^1MZ8OxH>do7&+iiPHd(6*UpSK-x{NC}I5)v$PqHwFKf!s7g%2QJcLMcf}2$4XJ}@8MQEX5*(|-W;WL zu2kcNp+c5UGU;umAQr0cq<5QoB1oQW;xx=qX*gIv0ip7TO?fm=C}w$Lo-_^N@+GDh zO`%-Pv;@o_Wiy*c3dfoj3CEg?#Jv4YpKRREkOM}EauheT{gH9J%+o#C<}%4~h7h|e z+$6c97%?3%AiVpg!F9mzr8u*}D8&W@lW?QtC-@V0@L;1&io>lu9-)DA15cH2t@#^! zZCrBYn{7CU{KmGgvL)<}{9|AY{qDv1C`|PfiMv1p;QniT!c$MxEke9TO|QhCfK)MX z;7#wn7JNY`L2Zc(L53drIm$S=}GE%efc z(?xZG?$6Igxf;*jV~Ot{FGEtZeeQHJNEYJvVFJz=7*# zJ@-@E>*MQw+_^3^c->P!uA5M|@zY!Nm338HzW;O+_;QtALI!;|w1TXq5EU9aG02VBL<69@0+~m^5(I*rTH}`m2v4$-R5fR>)P>WeZR<;0lhd zDI=%o9Pm)9nT=?il|+&Ao?NrTVh#-pwK~E=Bk&G)goTA#98tC?v%_k(*`nMITT~?f zo^B4cSq$tgmm#9wVp!)6iwF-3az{p4oU#?$!ca0kD9k30cZNkpa|?MR#eVrF4h`_~ z2{8{t_W$~$o2cNpw;uTWPEEZ59sJQsuoH6Q7-NdZ9b&FD?=bU>v(TKFVoQm2j-}eV zAZ$VST=(3lB{60!*tR=ghO|4L+TptvqvboZ+(~Jk2@})OCT&%22~o<#0RwkeRy>{7 zU+~xRpXJGElO_yGn>bPV2NI#P6DzYS8=kJnoSS%OwVDzQ%2q0Kc#bhBi-ZqOS@J2x zu?}i@F6?UEBdF=1)j+g&(K%X;l&YJGnr_}2i70A~nh~b*DaBjEXo6a!W_GAGy?r(0 zrdp$(;vkD5f#)OOKOI?%p9tg-{JduHuhx9rt_C+tTSi;guBKO;nm@L!K^A{&pKIQl zN0mAJbOJS*Uf4dxFJW=m)JVJv^{^JGSN}@QVDf7 zQAYz;@E_+7e)Y>sgZ4Fpf3@c0b~PLV-)QUF)o=)WHGlNhsQX(L0@z?L1o#~@K=AXL z!TcA_ezE4`b~PLV-)QT24K!V!d;J*lW1veCkOM8AFycofn?mt4ylnqCe4gBW-l!vz6eO8>Z4Fo6eusLjinkN}T+#ZMg zj_Wje$GjobFxmMan;aCXUSxq9y^YMKc30u>0~&$+1{@DtVDSqir?fODr?hOeXKtsi zT~E~19&41!%5p}}o;`YW`Ori18U&^Va!5IgT=uOv+l?X*cslt7_!FC% znshiYGTCcvE6peT1578vBf}a4)9q16xb31!EQvCt~gnb+L>=Eq4R}P_>tA-6)HLCdU z{6_cRi)q%XmirWhpe# zG|(@U&;>V*%Z9NZf>v=i@~G|GNZ~^94OVm%{33iwJ z<1&z%NDmXLUVREvT@L*2h1cac#&Ze7 z5V|x)-Z*>qqi+Xnk&YctOx$t#<2ohj;6eIf-AyX}Ba+kqp?d@H`-D6@b|Bf{>7SI` z5&yTk@Z_GNCE%{*vX?KfqgE#khOi{ zgiU>mAN@4=qa{-w?APzTeOcSs{;rd|j$BdO<-x8aRtg*UBqZbvom^?t&)Z%!c})+$DV)wu|w|s1V zs(uI_a}wF^N$!#mWfoZ(w z&(kv_eQ;XJxnarY`V1fZzPZo)&dL_?J_sOqu%7 z)Gr_3N_Dem&zd!Rw(`@~t;$c@Gu17st}dN0vG~a0lDwe7T~{4i+AphT`VOgh>eQ)U zEnE8K)Ts|YJax(!%U66kW$M)FrRaTU`&Q-d?AfJwrqb5!RK~M1O}Q~}#K^Si^A?OR zcj!lDefD8qsxO@$=rE_yOk!_PsFZ{n&2jle=FS`hL(k@?PvYbFcg%1Cpn9 zG{{4y;^wGxI5K+Fi;D z1)ob_mR|qd^E*5X(+980{Nvrbf6Q7bUHmnYO#dYU{&Q)R`^BerAC8P(93FQ2gAacQ zgWjbHY@?is^=`(A|3FU^#ie+o=(HlZc+LWYj+6;$8Z%5YSqf~^{0bZ{HTmu`bgP-F7Q!R*Z%lE^L{@wc|+a_353Li5CTC)L<^{hC8O==)e2QFYBg{zy;UlYO#a{Xotf~^d++alKL3GPIdjh5 zXYak%+H0-7_TFn(NRTxz_{h&mXT*~OALL_}P8G?u)bN#lTw=YGu4layW!L|<-bws{y0zix&Yxqs(?g<9 z-ZNgUFGeg^nKyr2R%5?wP=B^))0J^Lg4Z3v5DYR5)=7mdq!Kq!ES$upYqF^U&#&0L z=7kh`Bfhg_Ok8`{ypR@qNacYEsf5eOI}JXDX;}EWNL!>^WL#vj+^S(}UgGcRroR1l zbotwFn>=s5^_IxU4^$C$ejml`#O1+Uc)0Ysy$0;|cI^>YuBo z`=@8l?XyBH_1}|O-^UJJWW}xp*~fz5aH4J$rkzsE*euOx87b8%W{788W0uZbWO${k z^75x|!>*vBqqjUW%P{fW*5H-0MQG8h zuLiG_JwuCL8?kYwX4x$JTduoi*Q7URMNe_x&^6cWnh3ldRY#3`^{Xf( zu)@!kpK1uWi*f=P?woQ5e)&u#zTV|AC%No55W@q;rJ#cTEO2JTWAc~-mVh;26OU=SC(E1V%krlur3ccJ^L6?9e0Wc@ zu{1s3l8=cE@tu}<%DiR1G6Ya7!K7%Ft_sW4vGCVaZmzOaS*vV=U4z|&J;S`ie8c>M zlLiL{Ctn3$;8k&d>Q$Dj;7=Xx8toqKx!!xd?|T2}q|t%V$rH9^y^#Gv&I`FO6uwaO zLZ5BL=)AITCZ+<#X%n*qI3ozNp+~;MT7;C34M+4px$ME4W~{tt(zplqT=u~DnN7HQ zu=(m=PJL)6A_x6^uY2jjho}?fzEn{e3sN-THtJ5r4fi{aAaS>6~dZ&M@oKNHYkPiWBTEGIS9u7b+Ga6kn0- z-!rSh$qWwF(l}I0!wS*3KfKR_?q>IM?#=F(-Nqu!G8DOrJ$<}=eATWR&uYg*zUQ33 zcC~t1ye@H~$;v)ximDy#&sA3M}7#@w@5s6OIHs2K8rdgtIyskB9%XdZpi0hYc z!bbFPv_=azRQ{p?duK-IUh8_L;TM&Hp%7+yKEo^kj%W!MAY6bx*`&8R^qS9YTAi6J zQ|{{bIcZj(OuJ{vygMTZVD*L=_gGniNSi0P&w@*XUdhUxmb*6>%l|H#f@jZ*EnzKW zT*Ja5Z|K#BS3mLOt9b?1?9Ad(c~^~dSFEd>`B+JGg2~o3a@`ZpKd*cA+%vT`cE=Mb z$z#S|fBl#-UGE8h&F=oYez&m{{@Y?z7fe${Io1qQQNV{I-X4U<7 z^~<`vF8US%SG*X#`u$(MscE--d{<*My7#UIxFkW7wCKIq4YM1P{MKNS&EU`(&Dav| zupwA7Vj`Ikt}hmv!h6-Ln z)HGP{vOlJK3^!MrM0rUF0qo>OFS2UYhR$Y-Jf)yG_)d8e;z#Bm)UiJtlpR%{Hr@XS$&ZEzWZ>hqjyGnT55_Z--lp~ zIzwJ^z?hrmbL9DE8}qXAVW-HZOHfeMcp_3F_V3G@Wq1KELmUL^L7pq^e z7(kzrlpOG4K$V%AndZ&wBb_o2YfZ@m1FI29CdMe$j8iPyCl6{S$FTa9Ic|4ZwYPsk z@7~qv_bdS%h(}UF|gB&KSXP(Po@cw?!^)p5c z%_(==Y|%5i7w)Xl>9yBxx?!?S4Qg9TzYClT-Ti~eeD%F|gLGUZBkJmKMaA#`n zJZA}-fRSBA1;YsnslioWe=1uV_I&l97~;vy1Xuus7VgFLR#ne{4a=R;y!aFi7H!CY zS!{r+wYnF&#_B>(_G`X%HF%&&HkZoY=iFAXmHW6 z5vv!ke%Nr!ExEZ(nVBz~yz=_sbdHq&&+wEJo zuGLCj#gf&BqxVMN{$uogM6%S&oQHWK*65iK;rVh+AH1@tv|y;qsRpzZBtIB<$fsId zgMB+P)A~PHy0b*T!_{uS%=T(l+9L(S22>ZC+^V2D(_H8dD2sDwp~YQVZOOfA7{tsw zhtAa^0w&rMpTHuc>=AXe=hJft-wJktNbq21g?JdH;pM?q<$cThm6w+HFE1-E5B3fA z3zi1^2g`!xWBZQnH@0+a|FLCb%OB|bK>5mGb8vI;h2S58`+^_i-^pMvcp6Q^oWoqh z+{VN^68RH(vAw{w(7DjH&^@i+w9;w)riZp*?(nOFK#=aHENCp z*Mno0hU!JiQF`XZTV?bKh8e1vUeSKN=I1+HBSs(k(SK+bY*Tn=`|LkWpT2MIZ@#^5 z)ccS9{=kJBX?}e8AF)j~x+i3Rf>u6xYV_!t$-DkkRfXLP%kN#bto`}(J8PyzQ{%gC zK)I3K&lolsUW<>zJ`L9P?N^x9EB!m;upNcY9qF%rXB>u6STD0L?}lQJFXbv3hk@lP z;$sXUM_e(3QeRy(4vWpFmj@U1(T0^yN}7;4zSo58xq+EEIBUkxWNf-%9dMJQ!C4<@ zNN>t$%53V@)VnFGDZ3%3DYq%FDZi3VX`zhY#`l`sXO5cbpMf!4 zy}FBIxHY|>OkJPxGg&U;OF%yVn;NA3r#9 zLI0m!*Kx0gmBy6=p1=O3>)u=@tB(g%K0gMw4I(}2e+PRt8*1ypU|DuLHny756sI>- z&i#3gC;gA)ttv3(rX^dAno7?_r~)lFGp7)N36l{i?ZhF*c49{dj$<|&P#pa;dIE3` z`yRHB2ab@$;y5haxODnGXuk`aeeW{eWxglVD1MMwjI_9d<3=P=9uiAU!mc8)TBY{& z>(!Gd53am_{+Mmkrv72ps~?Y=G_kx8;k5R=^_F48h8aJ+dE)m*P8+DX5S{O$QxocV zYJzT+!GaL5dbBbYnU4!hzy2RiO+drqI|dWy99+8cq~}}(O%|f&dHt1sox-^afoGBo z??n;c=P_+Y^cSLOKhUzUMqnz&zbQeRVS^4q@={=WA@C{v^m|04iy@BD$Ma{O(@(|X zsV61h(C+t)X{JVu!%Bjw*hP+m4`9aV6n2#J3X(*|t?L?sw`WBsAeclFtfz;AK@23_4sTlTG}*0g zFnfFVP8*))Kw$UYTDq;p;(yrpd2)+edsuyLXvz7RJJXWiyBCZrhaI)DDIbifSS|Kc zAjF*X!c*demVSwEVg!>?A-gzWSe+lfTxwUvXPC@9oIz)j&Jl}NTMfp@@pFi6)D@2H zH*HB;EvCTUXd3+5&cV~m2HakD`~2KB-)bqt^56Vf6?E&fy)x^66pcLA^+5F4!9enJ zIXP>d)3rUOjo$u-PsWuvgylp1*RcDCU~gSk|E!u4RhsLU6&$@wHe6P-As5Ry92@+# zy;Z5Z7Q?ijScu|Fqz{NbGaFZjOlZ+9 zd}+*8L*N)R4ZZdzxisoBH$7Eihnv}$Kg@F&>YmV-B(W&|oUH|x4 zcjcM&*nPjp=sq(HZ{DaLH54E&CSuA$;*8RNA#tC+i0$zH0#(JTW6TVhY+vAD4(k^d zt3&?StWLAj@`c B$Rw4SzSQ=Ui5YQD@exg+`lsp<{syr;k8E%leX-35St!f~_w0 zE+oQ7#)2sDcnf$J5l7M=`(r4OGbW;a^J0GtdAqP3@9SOKGvl;pdM;&LxEn1QdA=o% zFL3gR&1(MwQI(uuV8y5dO~9H_;}?j@pw}6`z#eAP7wA<+G+EQsa0lW|u_X?RW>l7i zHnX-+uNI*twdXLfj~h=sP9@P2S+scGFOg_LqD2UZDecg-g4mzk+TmzlH020fO#yvM<9Eh0h*iLr84cnyC5N%zvrpX`>Y%TJrOgttP z<>IVPeDyy)bV%27`0$yw!-u2%$Qpv!+9Fv2lUQ|Rl2u1NPha(E z1*}vu$_g0Z8*3&k4(KWmJQ+iRS@1N&&#YFZikI1%idaPfxR<@~G6&L}4C)65GdKd> zFSb{J27$y+Pk4(1ITHRy<)q}r{#KgLB%<1#eJ^@_^a^d4_TsEn(OnWoUb_M=Qzhg(TzmI;0r9HPG>(w;> zBLhq-IrlQF8zDBXxy)z1p|3CVssS)rWGgjo%$Opjafx+P3DXj+T^=kLR&`s|qN+_* zd#mZQ=es>BY}1@jlo zPwZ`4c;~!D(W9#qd!IyODeX&x(k%zZJg*>}z?YbQD0`D5`Ev2$5)vrQVG^Lrbup7)PrwzOV&qegm zyE3=~^Oi#)c4E$hDCR`5rXF~dAC)+(S$I0R+~A^q+#YH4KwMm zf!^^P`Ramq^8^C)3`FwP)cJQC4>OkU?-CJx@ouaPlzOKI?P{Zb6$0a;wov-#7!?>J zrdTy&6^vI+Ftb%3)!s|w#5o9(Q(G+NLhKj>$r&r&AjKOGKNa1r4U^H)2kNJoOInC4 z>E*@2B-N=ibsBV*4F;P77Tyx9zC@FFD1+d7&pAXVmp+5OE?YUpd87O26h2*N#2sr` zcq;1qMt6mHg-y{s{Z}SgQ;2{~K`%tP1@Zf0@l6p?1wNaE8N!v=RB zyol1GYr2o={>+hc-=H6>$r1exM*``G>mE_-44@k7fu?=>X~O0Ziv#9{%omn!J~w5v z@#N`$iF}``#u;8SY=!kxrtXKPvStJfrM*>ArY@(K!&jPQx9RB)uu+h6lkOhy&!aS z+_Jn_arP+69u0Y+UKHA6PrYF@EZ+ch%`bv|>`AF+>_+pfcBQ_a{G#h;R`r@u!+fV9 z86IkPlEGq0Q8v@H2(kbpP*!lu@(Peubmiw2UtvW`+}7>!7N*l%n6A>}-a-r}xHK8R z(PZ3D%oL}4l07L11ej(h&lsDr(!J8N65$&5W&9(KZY@KMa8W2CgYkkeBGb)=! zZ_#Y9WIUSBb#1aVG1kKK4V3m>6i6VMtxHzPm$VMQQ6TOoTIVfK8Jn`ww$i>bWpm2D zlz*gPDvbl3OT!9apNQHK-F`l@fb5GlHe4KA;QR_inJdrsnRY0TWrq#=#$|J?()}^X zttNS$Sc_Xe7y&n7Cs#LUyk$kIPW2IAK2UnvFFXvhvTagWrZTw zDryTqicZm0FdMH^K4Aw-4+=IPu_)UBz~R^v{JWEKcD%i@u-#VcTgXhshcj=N;2UV ze^KmpI_kRUOi>Q8m&TP6Kf$?RQGjexN_{*A_&QeLwjN| zG-UWkvB!BGm^uiH3tJ~PEWAWE%N{6+h;++^>+&v$nRPAs3g_G>=1?xMXf8TL?E;@@ z4g|jcf^=9g8FN}+;xDy)ee?9`7ap#5`mXqKYK8(Hu9i4zZEO7SwN3HE*mU1>+SJrO^j?Y#9o{{kD?9Ji5UE6e3cpSbQb$5)nr*Wxx@lt=Vs zB9H$3YV=Fisl$Y#mHrGwVHQ`g_luWf=q{5d-BCQ5W|kTxo|t1#Fs@U&iPX!9C;Ir4 zArR&}FM69P{v>Ae%Qzun^Bdx;-eXUsoWv9JMNclwV~RhCt(2E1iIwt(_)7WM6M0+W ziTR=@7v?d^6ZFyDsP%HpSL#*vcC|~VT@Cbb)@mxf{Wl1WwL zY)_-CU&7H`cVi$OTP_LrWKV4U*cwwa#pVTDb}RjPML6gBl_$PgyKUQAS;+LwH+b_a z#$Ni-rfSR!+!4%IKC{bi(0pdM-Qarz#~8g4u>WT!4jEA9z=Y&`vG41iOs&0Lqa#U?dLDzvM!DwFz>hT5N*wYd8gBFNNdr(i7ZJSdRxUw)^tZvxEGV z7q&KhkNx(WCroqRW81iH-A2>MYpxl6?PJZ&SgE$&I6^m*Ys>ltt-5#BpAA@77MJ>o zR-poy2IZnBZv8v&m^|-@)$x_#6TJ_SEM-N_Z9y-#*8G=sxBH)|YJy`KHqxX*FMKU} zL?W9fFcqU&Dmf<=>kfMMD#{AB#Icho`a3BuuoSBk3*=!z>YkbyyyE7YuLw@8-?Vh; zCixn_9yal2+?*I(x_PtQ1MamvgfBziz?!M7pv!8qIsb(t^^~VbZ^a6H=?10wJ-k^qu8+l~{y`ukPH|Z&$Bs{Rm;y zq7O-&WNFK_J#EPjy6rBT`CqQD!Cp2)krzgS1df0qcP`eLO0J8Q9?-LLQ+xH^(!SLL zvoFso9MQXeY1Pn)S^fLF-4EDoH{V)52QRuv66n=7gZ2_m!@C>7PUDgQ3-m6o{&ysS zzA~k{Qm?&2LGX>?D{a{~-=OkZ_kY1sy&GdeCw!E>5lK|seaZyChz0h5-Gw75v`mM2 zFhXIwWaulVTSDt1iZ~p4<=e{LW8Dadfu))SDH=^3j4KYlt<{W;-iv_ZQ=ho*6GW_g z>cfT6uMp*5H)QUDjneycVA+wdk?m?~5J6961)>RIQ&FrHYyIjGkjPda+w<}1x!O;A z3Y9fKoD%?3erHp&-xCifztm7~Tjc!MdD3Z>iecyjdkobIzuI_h+{~a;`$ieQF~VDBH0iL66t)(6s5r{F7t)VvV?QKz zHayj3)15LXfzsEpt=YH}baP;YF)Ntuv9{QqpqlSVm)&gE(qM)=lhX_pHm@_&qL!!A zZ6TXLV`qfCSrNCBf_<_xnlfI<&~LJCvTd?&!tVJ^?oFOe-d)yRwq5pJj$N)@?p>Z; zUJut_(9u~lbzb90BMcA z-6n_6cZ127Dxtt2`=H5sR#yVq@y)RqN6Rod7Ci+A!&%~Am;C)tvnw7TiU+3*E0G1I z_aqne&FYg|mRFWvTu@qAT2#_!V8PV|6SF7gOhcr>nYnjo-<@-JuD>7;!)UC2FX}Te z9|`iWDwv!-Ij1hW4s(P}T9d9`-@rIQO&7!oYVtMto01v=^%?b?E0leS%W^lDoGdAl zaa&@#FScgTFN^ABS{#$(;+8AIv71GeDFrD;{nZr{i+{5t^!U2aKm)oU2JxKqcw1yAA^HVAvQurU@I3c2N_=<+M#Mvd8LlU-&L_dg ztLy={6&>D}hPi5+hJgAQAHp}>6C++`2N49wosyL@EakS8*hvLEE|Ia}v1luH{7d95 z9M%;J4*wRy#sB=r;JI% z`~EmdCt`7uE{#RRI7tk;_J4|#WPZKtnePph1bO%Y&MW;;_a5ZJ`BO$?yL)2`GPrV3 z_nxd1#E@_pj=<`G?0g`2ooz!b!o&v578r1{7lKh3H(&#XVM8n;#RiE;fy2I(Z381x z47bU#L70}YAn2=AqDPx$r4|-gG8hF`efKQ?PV@)yeo9%+Q}Nzy7=@;)(XenE5i>uf(PT0V$JD0ls9PP?{o8)j?OT_o zT$cN^fD5Z65lk21!nk@zBE)lSnHWW4R*^0~n2%Kh5l!L3Wjlc+&4k&I=et^ShiMaM zj~`G!^126V)`g-k57N7qEXW$9T{d<24S9JDnVCPjb8Ym~a@4L)_b5G#ebmTck(}0f z)S7iP+kZ6RJZk;c^zY20+27`^D^B*Sq_q1AJ@?5uoyDjiW+P;i1dVX`_+%_BixFfL zT&{iBNXmndj`fb7HAWbq>Ks#My#8WMkAtg?CPvI`#JHxAmEM!>ED#4k?~<7kLAD3^ReWKYrn4{ljP(>@TysV(5juz-Jy~* zcQ`$dB)@9>nO&FVK(ug+#b)|Jn$LfgoRx`HL+4UzvGuxZW|JkdhU=PT7#+PZC z!NJ+SgSno*=7ZL>r_)2pPxjJy{8rhzUXK)8EBfZ<6z3IU=1z}YB9?yHg?_Ww0)r<_ z6_(_b)gIbYagNbS;|}te&S&@8Q-L*@J&OpA3hrQ2_MB2j*AOG?U~|qjFQjr4P6fwE z74Rg)7iiYwEN{)OvtM>o(j3Q~t_ALeo`v3pzJ>ldN%OK6W-rWHn7c4U4<24-d1!~}?K8a3ybb7EUbaSK+Fg$ik z%gkTCm94v?y6bbD?D2hlQ1s#Kw|+UZ<(5f1ru}F1?LG&q*J|1yt2gw~2A-(ffpf^_ zO#V}QLu&uL?Ea|@?QczG^lrB z%qF%*$^K5UX~m6*A+rku%h+i7d$vZ&Lt_8G-4*3UitpbQg?Fd&6busTd=&BEcXvyn zgP>=~>~mtfl<@;Btbu05o-y4?dKa272ZebbOeE@uE8Q7P{b23~+fGCgy%Sdr@$-XG zGMCCW!z5xA`aI|_^q>XWTCDA$Ex5U72O2gTy2&Pv$<|93rA&_sWJ@*(W8bK zZdUL3^ykJ?(QlzOUIC6r8^6SQlDmUB$sV`f@4yl8dP|Dq4TJxU49l6`9?gx@i6^9* zCs+{}B(5x|(rWRe0@f`Ty(emW>0!W$+Fp8i@HUS?(t;wb~-AHP1Eo70Mia&dMz=% zCWteZaDInGX;<3+znI3RZU3(V?c7HHeQWKB=}7@Gh~bA0?zfoxgI#z6X!U( zMhoxx`R9Uj`06yZ7k-4xjNifwcP~~}$uW{}!pUNmJu$@Y;mDiRzjV-@z~`mG@)C13 zm!=Q;g#{c2VS-**bY7;F8m#E(aWCF8uN_?b+;eM<-$qYu-Fi{Y9*o6~KLe)#4?u}o zF){C;M2w^38)pH~p#yfjwBY}HMbRhpm@ig7y~mWTa`o9Jsc78E@C@sD5Kac$)~!*F zR)@hJ`xz83#Kn))uhq+{cWl*C?9}f77LiqHN270RRmsn- zUfmq6GtP|Os>|&9bpFnr%f&VgJ=N{YU$C@`8za3apJ?P$sdejb{NSAJ=@x$0CM5JEA zxeA$=a5ox1{4;GY9a#&iM-#E?T@~ z>0NiWBCL=z#}UKeXoIwU0ddt(Z7B4u`=i`N1F$$YzY2zb)V|i%$irr!bvt?-7;9A5O+ z%C#%BaR_C(Olw5mH+AnbuOE49m{*tUX5MMYt6_!(TVT4s!S{W9H+N$c-hE~F>~4ho zSL)oUa~~@8@lQW~;NuA&&6PWUTl}}%l=|yGjJrrYncYC78Z4!e4_5W@b0+p%>!GNY zt#K|$8y-*bJM}Aci3im0)lb#m)q_}Tu~z+3wWw!7^oOx_~?@Cy7)J*3`% z6@C({0b13+P}(=@8Px_qL0E-Uow`FctLf@(HADSLy`}c5chsNNyXp%yQyozI)PA)^ z%~JnR>(pU&P#sdURVUV;txS@&k>a0|&)N%Enh``f@Inmgs8>@r-{tHtB9!*zYQv)n;ir*41=>Xm}=eZGKzrl>3Iyn0}|E(~rjQzG|U9PgUbt z$nYBQwN_2Q-yw2ss8kb;STL>IiYOzpa2n;a-O_fnTiTpxlhj}8^u1ryQR;W$7ximK z{lfVE4d1U5b(8vC_?3EH_(j`m@O=aH`JK=R*Ha9yYL&R&XvB%pFitY!-y(y8-Kx}k zQg5{10^H9uwW^~DTCzPUY8>*0uo7mrak@&wzN`&~SGqp|Udr?xYAL?cOuf_?^M`2L zXKEzq|CsO|^QNhx$eYFM$=zr0d?UWQ!5=4ZUnOuQG`Bp4ZyDMK9>#NJC_tI`f+yv> zRo;PB(I(;@wAUs?*Wevf^_5t|R;hNQZDsOB{u=Tz@=1Q%YoMplLuirsi)--TGvL1{ z{+jR|B6Uc7$!o%I_zIuko$`GJ-^2KZfw%Se`xXA?;qOWOy%v9W8=AWROLw)>fp=C5 z-w1ySj|hK&?`@drR2N8a8k?J{k{Sy@$T4Zc(HtuyadYvSKJ=`X^I(qDSs3*I7M zC;rOwc>fi=qAu^nX^T3;G*qxh@x{A`;VenmH>vUP!`zIxV3X8jbql=6x59sXo0_Je)S(lm zs~M1uvmo#1K-SNLoSzR#zYtP>G3ESSkn|$wmqEtYs|LvUM#%RjB@+IJ&_1G@9)x^; z2)g27=%z=YiGB>MHA9m;4&4Ol3(fU2$nBp)V*f&IfcDy`HbIv>4ej(R^{o1}dQSaD zJrAAMs(!0}2aOeiE_y+|s6;1-77&f_s@ef<(yp)-S-q}ysXt&9z#pOS_CQCx2@Urr z=()Gl+i|V7ml{p<*kS0L_n=`uh-;gp&@~@H_k5!MgL>#Q^*QwF7tmv!&{!v+v%Z2B zJV~AUFKE!O)hXyL(OPGrt3{i2YcS~~DlxoQMpzPN9BE^PFU<~@rPI1}=3TRwFPc4L zfosu>C36-|zhlONyJjqzG2L+0-Afi4?-)3ssz%_za>C09D+ntI2NG5j4kD}}+vS2= zccRdbR+^Roi$T2K1JZ0Esc+2oNL~FRp_(PM?bf4)H^R?#f=5v-Amc5p* ztjX4K)}_{vEz96vkn&M#M(UNRD^tHsOHR8t z?Ij%XI4=F^^!GDXXY4@~vS0SviF2gx&H5tymh2_j|H7iJ;W_`2^N*Z!xz^ldOgNS2 z4$U2%dvose+{L-~<*vOey(Q$(McW`yT8!qTgfv zUMwA3y1Bor|G56GWvk1tDF6Ls#>;Xp8++N_ijfud6(3bzUAYMV8Y>^J{8{Da1L_An zHsDtS_7CW;%B-rXnpL%~YGc)JtM(4OW#CT+{<-?f>Xz!`gVdnRL8EKjHJLTVH3Ms| ztQlK#Yt7u6dux7Fv#w@i&2MX7t?8&aQ1g$$nS&b!Zyx;F5X+FMLw-DD&ycTcb8By_ z{Y~w*+TFG9)_zzU9eT&*LoOeA`S{D9y8Q2#cMZFJ*rUUa1P2GN2~G*l57q})2cHN& z9SjBAgMSJh4*tg#!7Cm-)!&`^{`^wv{+5r8$_4*?GDZUY?By&kZ(+X*OhwI0YIff8-e1L;!;IG)#&x+A!r%n^~2#Fah>=tY`*)r&A6@5xt%ye=WEARIs_KJk2D>~=u0 z{E@o55pZyKGay!70oL;A)lB~b!jXidK(%}|j@LI4-b^@=xh4Vs`D!xopO0vKcLUb3 zCexW_7U68BT*&K1go_E65H2NLPFPRaK)8aik?=mgp^0!M;VQxw)(z8TD7TH}h6uMX z*Eaan^3}`Th&O{Ma#FW;wy^`8l@A#$7>f|@WBUDs2M7=Horeey6JoT5^qqXealY*o zQ=aDiv%Ee>*hPqAwxLV0+De-LgA1? z)Isjo@w$cAQhFh9D^Ej&+X!FA??T{Hp311G5cm`rArxE{0$1`>@KeOHu#*ROiokmU z2lKwPx(K~b?nsG6N=ht3ZxR?H+y-th0v#iO(&{4Bfxcg)!h9Mbl$I8=lw#$LZpU>m zP^uUujsO&F7lZ!=j^Leb7yq?JWQ<$cXa1P;I!g+*u63!=FK)8sx z785QZTuQi{Z>}e7AY4J%NO&L9G!d>OTt(Od%oM}=5ZK1|hX@4^#jro*{!ZTM!1|tI z;6d6LAr!h7tK+;DikA>4C8Tl*Ft8nW1oI`J^?E>|bqO(FLd=(t)+MBM3Ha?Gp1w@j z&h#CiLJ4VILRy!A%IhJ!g_rtLBK3tuDc919zHCKbyk|SEUj{$-1?{#&%6kZfA4*C6 zQr4lAbtonEOG*7w<}GF3Qsiw$dZBwM+Is|g!qZ(0DDUZyUe*j)K`64WzZ!(v_Gka< zkM?fI^$4aMi8}WO-33l0oC50iXHEK}56XLH5zgit<}lY>!g+*u63!=FK)8tSSxmTu za4F$(!g|66!WD##g!d6P5w0X$Mc4xQ+@IL%Pi*ujHu|eAtkpJPvOjUsADkdHZ)fYI zC-x_P`p5CJkLmXl9w0o(79AoyOxVf1$N8SKOw$Ee2HYN@q=cIqSltd-9sL||5NcS4 zUYrFu7@St7YNICsN1*gF?9rE8;|M1bN^dFyr^$O}@jbKohB-_x-l;NJ`U3AHoKJ{J ze%uj#fsrQR5<<}zWlHo#nG$_bhIkGFMPHOD(HCXvKEfu#m4vGZg(u61)iUt8)F(u^ zg|*riy&b<^?vgf2|0+}MY?olQ3_LICBZT{yem~&>!h>wlA;QCioy;peu>!rL2G9#x zT|s?aL5_uGgIZOTpays8IhbiY0&Lg~&a6aJz z!bQxxm~aWpw|dMFYN7V&?^ftA6lat^m+(Ttc7Yd zBH9Lcb@W-lk%ZTRvejxFug6CZ;(7wpOpHcwJ(<^2(C@0zN91kO`L;Q{KbLSG;hlu@ z2^SD9 zau+F7LuV`Q2x}=Zm*%;UPHUR29{d{(pe5TL%L(+X1Jb^ufT4q@Tm|a|!1W-bpy0 zZ~@^WzF{%p62hf~%L(fV8wghrHWJ>)vYH5260RZ?i7}W~++g5Du0w>|SSztz2Ll^Y zL*cibP7Wb=4MES6r?dD}`j`dUhlT3VsCv_fkkJwC_%k$ieB@KX!9At@(Hc3 zIZQv7a30~Eg!2g(5H8{y785QZTuQi{u%57ia0Ou_;e9NziEt(1D#8}Xy;{&qS|swJ zmhz#Nc4jT`(~LV}Z`6`rwUiIFln=GQk31FIvKHJcP^`yVj4qque-Z0(C^hC#;(sXK zCU@j*LxJrh@DbkvI0`A70llchC~*6BK=Ck)f>%MH@bf6pQSOT-8ik&91)%WKDDu)M zye)uh;h!1O0a3!JmdB&6a zGSg2c2Tlggi!qNOezRM^b-Mw_5sJU-7VwhX zSxmTua4F$(!g|66!WD##gy)!7JV;a6kETG*$aODp$Q0IO3TrZjHJQSiOhL^LLNbcw zUq_y)BlYVbOQ9(tmyQ6I5Q>JaQv(Ra)~bVamH8JL9l(DF{;7kF+6*YZ!8%x~@>JSb zM=q*EOXXU8gLP=HTno3(!y($sHN%)p4v>$FW`=$9i=f>(z0rSBKdjd4upw9eJh>GeL4K5~GehQwPZ} z<%(~xj@r3SiEpqD6xRcaZ?F#IDQTnl2J4^&Bqc2j>gYP^=sN1?I;=;K_sgiEj-!S; z%-qPe_y+4Bh2(AGbE~7xSqG^o*Fw`edfw`kP{pI zbZV~Y)Lhd^@#&y=A<~HdZ94sL)2X?pQ*%vceWug@Hl1~tg|c8Lfh*boMJCLGwh|~K z&{-UT&O+(UxE5dBES5ft*qa5tAa}$UHw)6{AfU+bSsa1R0{@S|wfJOaK`#iD5$J5T zYc_4d*|Z5~qxA~+#g{mnZJEtF&t{!x(6ha@yKzS(=W^y+&RolpYdh|Ut8x(tAV*1m}>=dtzfPd%(a5KRxsBJ z=32pAE0}8qb2TzoBXcz}S0i&ZGFKyWH8NKtb2T#88s=KVG;5e<4bn7YhEy=N25H(b zhanhlW}0TEX+|2k|1$8|j5P90tg;r&;~W7LdD5ba2#a}NWJ?P?e3GV=*D{aOf*vJM z#&<0kVGEQ|UJFK(0;~CE85g%e=ExgF=Cptt=K&7owP>prXhnhJ2*(pnVtTO?T4*P< zkjGjmVOqe6l71QCa>9DT2ErADjf86mn=vokLjG(af3{%WSKc7@Y74ks>LXt67IJJ0 z=5*y+#+xlzvm{XFaS*VGu#@S3+fkgo4jj;b^GWzBcNb^GWzBcNb^GWzBcNRmy04A8 zuZ_B|jk>Rmy04A8uZ_B|jk>Rmy04A8uZ_B|jk>Rmy04A8uMK#T_lxe6H4Fj;|83NL zZRpo}T#N2&11+SDqWjvY`(%}#q!)^`QTMe`_q9>?wNdxAQTMe`*R)ahwNdxAkR7|+yp|b_ zZE6`)E@!TK!Un<>gpGu2Sd-=`G_-2t8$yIK`>+l471+-Dgn2(gD0275)wv?IL} z^$^cSJ3Sli^lY?)7R|UL^K0$&Y_!v}(GE}4cH9xqMms$l?euK4qX$V!nMZ4#k0`?NhNdMqP07SlMe8wTo)4xe|D(8gr(@G9jZUC%LoN~9jcPo z19)Asl7tclq_*38{w6_Bi3_co2FnPat z&O3Yx?WLH_JeolGzO{|@k{ykGdUgZS(qKEu=nVd{b~B}|yQ0A--P zVQTF#bwQZAAWU5lrY;Cm7htpoT@a=&2vZk?sSCo?1!3xfFm*wgeLPHE5T-5&Qx}A( z3&PX|Vd{b~bwQZAAWU5lrY;Cm7lf$`!qf#}>VhzJL72KAOkEJBE(lW>gsBU{)CFPc zf-rSKn7SZLT@a=&2vc%~sS9MCJp9Gf1z~FKFm*wgx*$wl5C$$~Zc;|9Vd{b~bwQZA zAWU5lrY;Cm7lf$`!qf#}>VhzJL72KAOkEJBE(lW>gsBU{)CE{G1sNV8r6QzMgp>jw zfKpf&Kq&TAgp`VqQkWG%&x(*zuqr?)c(}n25mG8bN<~Pi2q_gIr6QzMgp`VqQV~)r zLQ27x1L++hr6QzMgp`VqQV~)rLP|wQsR$_*A*CXuRD_g@kWvv+Dnd#{NT~=Z6(OY} zq*R2IijYzfQYu19MM$X#DHS25BBWG=l!}m25mG8bO3CgAc>nQFpx9RtQYu19MM$X# zDHS25BBWG=l!}m25mG8bN<~Pi2q_gIr6Q!%K5FfK)Y|(3_|QETs`*4{_0 zy^k7UA6vAKT6-V0_C9LueUy{?sI~V|Ywx4h-bbyyk6L>_OWe;A_p`+PED@{R(8m2N zaX(Ak&l2~u#QiLBKTF)t68E#j{VZ`mOWe;A_p`+PEO9?eJirnUu*3r_@c>K2iaL~d zfF&Mai3eEX0hV}xB_3dj2Uy|(mUw_A9$<+FSmFVecz`7yV2QHkPJu!)&vlSCgLvBH zT6`J@!2<$igebj4plIqt%yo#l4l&mu<~qb&hnVXSa~)!?L(FxUxehbeVdgr_T!)$K zFmoMduEWfAn7NK2S0Ok?=2eez{CJGx?qeJw9%FwzhWALC=}aSIKN( z5ea_`Zx$%y++!T)9^*Lo7=FnenO8kVK0L;G)nlAj{fzd;XBg=!XaX67dyV9WSTFL=2_ekkHnWqvmNW7#SZDD9nwiVq?2|?Cv|Qo?T}8|A)T~C zI%$V=(hljQ9nwiVq?3BElX|d|c1S1fkWShmowP$bX@_*u4(X&F(n&j{lXgfa?T}8| zA)T~CI%$V=(hljQ9nwiVq?2|?C+(0<+993bx-7Ip?2t~{A)T~CI;mAV(duU07tD0h z4(X&F(n&j{le)E&y0w$KwUc_YlX~+w@qCLh%%xCdZy8$DSs~ zo+ihhrdQ`QIrcO;_B1*6G&%M(IrcO;_B1*6G&%M(IrcQlmp7j#JWJRGc$O_a%a)#H ziD%KqBe*YZJj*toWgE}3jc3`$v&8UOdScI_jgnqg3Y}#e&$5kYS?*c1RGvz?T`a4M zWp%NvE|%5BvbtDS7t88mSzRovi)D4OtS*+-#j?6sRu{|aVp&}*tBYlEnrkiQe>Fg%G-eS<{3@eq|;!)Y7C7*nT&$(+U%F8~B^C6;1+IsVRP2>j3 zCdEV=#0+ZQa2r;tcQ-2)Lxa$v=vapmO-FXJZ(FYzF@ zKQ<`qabTzw2TmJ|7W~kgdOoO=#bUIX%!rf&fJa6PF7eMO(1>U_28+?i^vI^y8}(NC zfujZxh#C*Dd%=R7u@_wM+6xPj{PMM0twy88YDSUBgPpHbf8is+@bc#XwiFrXkaZmXB!+8-sAL0YQY&IM4VH0%V6h%bhlZqm?i4oMoTaW-~wb*S&Btyl3u=DtE z#;^cR7 zNOJ@eF??9fpdtQQ&1OjsstL=OkqxNCes+9}_$B0&zetAEIJ<-&;S{7x&{2LdKknP@ zcJP25)C2wSM!~1iVh1UuBqWqqBTADA$xy7|!z`5*CUMJ)_+Dg2Z7<+)lO9zCPFYE- z)EEU>&A4j;$>a?&%7B6jQRuM`9h_nV-oaxgo8TjcVu1z&aA|Vl3hl941s^t)Cp>~< z7J(RW85lxX#)52kuD44*^cD0#v*aSZjxyp=C(iW@JX+kno3~1D$ug37<;j0ACf=$%4hx^cri4QsA2Co5c8Bq{u zi>k;!G&hzOoU4@6Yau@D7Ka`9Fx$cD7vTfAG&@lM>H`kKOYEqu4Ryr<9ylN#_=xqU z9()M$h!2t!_z;4l9Im6K9Eq-CFm%>&FOc~ie1L#PkOk!k3z|@n-KqzXgs?_~bVYoCUxkqERweSxX>-}Z zV-}}~AYzz+xU}FHLLdP>7udHr?GCF0C%f2fZUD$fFobj=w4C^GOU2MJtrif$0^#RG zZmXPO!_W8NL%0}06s$M`54^j#j0Uts!2ad=&|2fas zk~oeJo5uqw;PePOfB*~dj#@fAc(dRGRQI4O;lObVlA&T~o!|p0fscS494Oo>odGDh z03TKZDr+^eHa6k|1>uNO5DEXFzAnUvH%0Jawz%vbCpwVT1=VCi1L7a@memUuMt$U6 z4yzlLbs`j>)9!QH9N;o=G3o@dYeV0(8NI@;5LCiHXq3tB0y6DvA{#G2>MhB@cKDzZ zpk8*n*Xu=}@HoNF$YX^h5t#veAnY^VVzYUX*y;0Hk<4gxp-53?U_PVKn!*Z;U=(aR zofq_Z8^jNUvaqSmCSB4Dd^l|;x$6*h9_L*2CZ&9-cANuiwz%zHCsdc!4IO+|{0Cvf-zKDY}>0(`iDUj)F$TaW;Baryl?LKt$xjXo&&KuUC)R0og_Jxl_k zuuJgaw3;B7PzI!r*$l+HP%(?s>a;?gUx*KXy5IvxA~<|5;KSw-e274ceM~rM+hg+s z;i!*W@L~730W(lm-ZwS z02FxK;6}UG?QwWqPKVnCe7K-Ly=afq?sOm<@MTIu&72TbNQw4BIeL-XiNkVZ7$yeD z*ZeKTKscc1Ih{#KN$3+v9+1x~oze}NWp(=jLQln#Qi`ZfIgArMUg%*hsy&gW%DFC?G~RCZ$Sbi_a-OXk<4uN0gDFWLpn`n z4?ciQ!3VjIzyTs6RB=pB`+UF$5HI+U&`S=OHzM%y0jDXI+*|NrwfS5DFH~0yA0TM_ zgJOL?M=}cVx`123hoAUxIX&)VoRbWlF8Bba;0Sf}C#NYHHFH65yIeqo!)12)go8ca zSbe@99}r2%l#Hg@eF5SFcidjlDc%4y6W-(lK9eC@ys61{Btyj@#SD<;z$Ng}8z(kP z`QRI`7c6oSKJYGw8Pq||L_}GEc&`frMeqTNp6|&@rDP#GKTIFLJJ|<(IQ(M5q5<&_ zdCQT40#F~H*KBq>K|hzz<92y*7>vsUo$iM$krSkmjrfr63kBzP`GF4@3x45XuTQ!S zKI90gw>wpxLBpBo*>1Lf|vNKcXv>%*Fk#rs(X0ywb3QD;# z3URxW+(47XorK(OpFdWg7(T=t{0=_csi~=u5h;EYiL4F}x(M)*;&R&XGYQR21wQ=g zsSYGV#ehWvR60_^O3CiQ2apMrm}6}eNPIXge&Sw4lnsdY3qH{C!QqxTJ|NYVO3TI3 za2A^*;7Lt_Dt871A0TM_W3hm@oM}L~-vitNAFgD7k~_)kar?Y!Ubh!gC;(XkPH|g3 z9^k_)Sn|M}^bjA2M;Q((^pTN3u7K_(+za2pSOokhfgvC;;?HO0rnIf)7s;LOc6?={}DS zhG{a|gExDuUew2JP6Io55$fOL4xsfgo|2Ip_>gXck4pgYAs75Wd4Nt{PkMSfWJFpL z*f|+@d`WH>_$A%rvf*bknwt*Ml9ZX@L^6vd87MSBx5e<0hq_Rg3PXcMF2IM|?1d=9 z;RzrVq%rUT#3vyfD(?DFLD63FAwDwlJqlvfk>X7cz_f9t$S@#*4Y3!&TdoXr>3|oS z4yxOok`(X+{2-Js!|(OOo=Abv2d8*#qRTv%bjb~Y?!|Fa9>GV7&*%3h1(ITKMMCO4 zOYEmW$q#|+&B(}rj7UcaxRey!0SQE>WWaX9&lE_74B#WsE7OH!s2HdKV;EK~ez@{| zkWivag`t5G2=~Otjh6deR zx*2?S|rf{cu`q_UFA%1A0FC#kHwr1EkKk}Ak4 zD#$A;DoCoNq^K;ZvXY9jlB$Z5s;aW8s*0Mbs+!tL)zwv3{ZaK*t5!;sl&G#jT&1D0 zN>frzqNb+CYE8}6t2MQ>G_U6TCL|;zB_(dzvL!h=IW;wTYg#-# zEtbADj!sXZ)9LBy>6w|C+qP}nzI}UER#tZQj-5Mq?%ut7&z?Pd_wL=le?No4U^1CG zKf-3Sb8~a^^78WY^9u_L4;(m9R8&-4TwGF8!sT*HOH0ej$|@=VD+VkJQ)KH#9UHIdX)@<25xkHUCJV7wzajjx3_n8b{_kYj%^$gQ=g$2fdGO%DqeqV( zKYpz7JKE1JaD$5z)y;Gb84Q#R2#s$LfRyAbX=QM%3=;ri84!+C^x*S`a}Y8H5##*E zkv#lruX>N}rb}#)@s@|<-OZN|5?$mc^-i@+lQs?uPwTZq_=LHK z6Fo1y4?EgJuj9UG4L9Pv7AP~Lg_SWx$tM+T+_cTdvPc458yNyFXo zH}|<6>wg>6pZ3&&V|aQ^z?rO%uuI2I8~Y9I17C)a2KZhVb7iVsy9T<~jg_q4%q9(< za=lVzW;NP1Xy!cC;35Svx^MRKM&0`6{;pkp^LI|Djg%bEwoD!A--@0({=oSC<6Zl~ zrw#WEJe(VQq`Ce?mQ7~Q)RFSyHEN{KuOd#y-0j@^OZfZlv&%V04EFsR@v;4Cb8zRr z-!^@1d@!=gVE=ODFCB{sCr<9y{e9W$H#p4~gtM+;p3;~JVWRp+X*q^Y`G?q?wH~w4 z3b6R7Tw?0@Y|JW{LUg2hNk~P(_R9QdH-i(_{s-2$Lt=`gu6aC-w`z@xDM7s*f12Rv zrw|+BfZJJBnygWKxGY?*przd1*`}q!Dd1akrG0d5bCp$wXLGd)>t$1oVOc>_txl6o zQ=P`CZ;gjkFV;5JE8OtZs8pZtc+s%u%geUC3}`@+FpatX!qQO6wv)K+fc?alD{oGVa?xpy zbGCL^eRv0p)Ox3BHQKdhAV+`jZN`QogJyZiMB7x8*|jeGJ?7M@YxiULJ@1wdrFKh) zmR)b1+jl^0bi;YiTl2%J^WLZD)!%g46Z1$Jl-OzNPF^#Lm32i8+&yvly|elfsHe~F$&G?#&Di-}T+J^YT|L%czrUpt z7s$zc;XCsNzV%I6@Mlj(=v?ElnH`?hedUptHI#DOFAH4na@Bb6I`lrn0zz8jaY z+0v>}xj5jNMy8*+)%>C2sc$c2{75e9d+g1xjVrivtP6EXYqciI8-HK^_3MTG#Hz$w z=993&=!I*kv#aY3NYj=a?r^}>vOMcO(*=};>+y*62H}~0%y}o)E-aI6_e#!Yv(eM! zhvB(=Tj0eL)KTdo7r50fxAy43D|=pshhJZKK2%!@+P@4%y58)}wSOizoA2S%Bwgyk zp|oFA0M8Szc|;9lM@{8%6N%1mD93&7t=@_;*L0C(_K!{Q6;I8CqZLexzq?5Vb#gBm zr64T9SEAF_)FUt^3Tro?GbkAv(D;64V{dNn`oxfkBLMcm@b1NHbeV1!lku_PaBh=K zP;7*z3<$Yx^7R3?t4)fRL)`ls{flus!_T%xP27PBvuGO{A7?2_i#IJ+93DSP;(2&} zA{fQkyK22;cyK9N+-*z&(XB9QXyNFzbP(yN)YBbYzwu)+?`p=>j1it3E+I3)r&;q( zK3ATe6Plyas@6_{dW<(IMw#&p9I7wpCS}x2FQZ&_pIcK@v#wX0zC=T@nQEO!u zq3?tm=lv*}<-zPDFHuc}XE!A)EzLc58A@{BT~J;RFTM0x(f0cG=T~s+>tSD8HLm&* zdsp|Ts2YB)IwntQ#DXH@G`taqyjyI0T2BYk}+7jzKBS2?>T z%(ghKw_?`yne+3!sju5Lcdj*b)&+IkIEnR=|MW(PwrcmS!?97nuyyazJ$l2pl@lF) zQ!{~U20jff+v;w#+U4fb@KLXuB?4InywKmMGmMLI19Vu$EchQcn3rFDN$*M3I{e1N z+&!dC8ta`}*7X-=<}r!T(A~8ooX@>^V58-DC!^X+f()Y$VsG@*cn`gHxhUo0YtJn! zb?;5EdQLr!$QPX1WzUyyL7a7N4E=53?7`9AExVhwwbGpKoWh#!Dlqbhw9*fEy^+<6 zlq02Kuda*qTn~`?bVsC>;1uTUnxnQhE<-M$XfnQ{2igs>52|wp@9V2dex_`=-@{w# zjTtxdv-T{nGvuo;z8zxmUTWHqu(`dOKNzPvpUt^r8EG8V_`P%Qd+*TS&3oGu}ZmxJyE?wGhW~R60={?xg@@@ z0F!=Ge9nwhU&iNzO&T_jXFdd#zexR%>U1uU za7-M;{{ALn!vfm7E4$g~ovAZv7MFot)1kUC#pK3|zQ~uy2V@7|`Dmmk>Yk`N;ksKP zGU~wWhwqgW3X9?fwYu=(jh1+I{)l1l*?^ZvYcE~iZsKfDE-u;hy7(h$P4lX@n5d)M zSJ!SfFPTYUI^C;!skFR?u?)o(=_J(hc~E=4SK9-q%&L%u4bpIeSp@jda4O0Z03 z4kTZ`>a<1X=6>(qIApZn<`>*ORYgyaEmNNvD9M}>Y#iBf19Fz;XV`*hA)a=;ZdKgB zlefy$J0o|;*)!p~duFR{AIJP&I4r+VE_=3U&Ux?Rjps>wETi<;bhipghO>JM3uSR5kqSP5> zUS;ft9T^(?7WHxdnVsF8;Xdo=@{^A_%iphjKAs;Z<4UkLvisgy)V1r`U`!9cfX6=tKim{5Q}bf!tL<#a>Eaa(i=ax9K7V1 zMa{9Sag4xXL#p$muLMuhi+xqyTR_8Iqd&xZ{19~aw7=E zb_D1EoG-I6-8&Xv>^S!V$4rQLHD;TeV?FbUzTA_Wte5uw)_T{Qh6`hw#}Jpby!qc%kvOZ_-d0v8S7={NOo(R@6v{t+&K4$ar|+sG=5&-uRC^z1clbP z;_uufxvaK1#7Rdw!A!n}ZjMQE2;L(DL_R1FWYTu-m&tqxCG{?>Gi~>Y;piQa&#k?A z;C!~j!;h&OFWJ59p;b`>v4phV9`Eb94)-gZ)IKM?e_>U{z^Q~deFq=FL?JWSdh}Ri z(*T|UM4r?1pU4bGr*HVMWB;4%{ez>nY76-gjg8$ON*3=HU$|j-Vch|pdA-y0yvqZQ zU)?y=tj*+QL4_csopl>SGpZxft#QHMOafycX@=;Ip5T^GmsI?^9~-V5#!7 z>wyVJ`C+7t6PUwAH46~C$gp5KbfW-BmzKt3ORmWrw*B9iHK zH(!F4neajYVh8zXBO7O^o zL}UdXS%7cs-3H_d&_iOhK!_d{VQ%xVb5z_bF771_H&4br=3(zpu-65cD-6sfI%Y(G z9;Be#_{eeqB8FP;Agl*B0;+kKQ69RDhRhMdLIq%4I?$Vns1_sJspvBdjF5`GO~o|x zKvKlWDk1hR7c;;>)ly1(kcZau&@c$95C9LwSJ?3Ya?^n2ePq;8`hFe{S;s|IixB~I zLYJ_WKmeAJvD18vfPOTe47UUjf{DnZT+}HZT0p@}2r;*4*ck@)4g=FILgtGhkaSQ3 z4c8xr6Y;S3h1e%FOp6#LpkkjBrM}Xo)Lo>$FuJr|q&|soFGbi<9;!?PkD?z2@qiry z+GOm6$FJ(1=#BV3}1{aAtQ2#U^o@n zCd6Fjp^ws#YzC};5YliDFGU9u=^!I6_;?%YJRftLj=e3$jEd1miD2bMv_6p_M@Jsp zg`K3KkC2bsi1B`8WE*`MeSwOZ1YkR_U_~OVoicWqi>d)2B5d&_F7ntG>}`6-RbtN! z0B074o2MUpO2sWuaprZncVgUoqSQw&Zh%>y8JijF{lpdtY32pw6pOh>Tr zh<$YUBYiksd_IE#XV4J`@vUum^Z)=8ABMd}>z-y{&Ja;WG|8|5pD+X%Q&2Mk>|HTt zh>ohEB0`BBs6|jJ15u4fbqmm!xtM7(c9Ms#qVeDw@XLbE+W_ok2D(ky?#3Gc@xeXh zzVHXwNdTsYfocSxcy!b$K3X6~U*Mzr#HeNlvQPw1qr-PH1TA=UivebkjP5>#EEIr= zK7=!ZZh{7=UW~N}#}3m`6-31P`pR4TJBl6#W$_VJ0Mtnay7kO(8T|q*9X>6<-e;T}7YtW15axiRAOU!YEcKp$ z;xPa_4#1q@qR$A?7x0+#6m+KuSw=*}<6#?VP0&l=Yw9?Tdl9`-=J=1w?lL~?$0Dt7+a_cdjd}O`| z3aN(<39)n(c7%%Vq$8bago9-4GcxWG57SK>%_R4O8xfaj*v3j!EgccViEXXiBX?}^>SAQTA>14TTN8$E!=q}c$TBe^R|HSQ z!@}v383?4x9aSL1Dgly-1JzDP<)Kjdf*bH%1sErAGp|=f$Bv3obv(p+$`#lwxPpfo z1oT`!+c_h`oEE}BbbzxM_mYa66JYv8$OA;Uyb)ld7;Sl_uQm+118_(V2p^|4&kM05 zJXEa!;YYs^PDO9tgT2N_H{p?)g4-aT76;(onM-idpMo>>8#D)ka(LtI3koqzJq)7*nDB$&YL^T6- znuxhX#9*%=X2=rXXVc~;D3~4*vV;dO@U}WYS?J}W1$fLT9WyS9oSt zbQ(|yKsE4@bPTeLEV&lQaw75o6~Umv#Wt`=^5H-tbUk-5fC8numYS*!uC+I! zO2QwWi^|OPu4r*oP~L@qmfBv2c}D420?WN z}l?Recw7xxYk6`;ydRBu25vOGt?vU5d>Gc2 zrfQiuo_)z6NN-)zsIEmU=&P@VS!6p2d4p_SKCta+<)aUy1m}i);!$*n2#BY*C&6l? z7%z{?2d%l+xE3v^KkA$(2Dl$eZgPSt1duee3P2mS2nyVs{h!Hi&Nb0F85P;x+z1vf zJg-aU0iVlyfd=Qath<2l`m}mN5|`wP@6v#3DwcrpuEbf0Tu9<9MGF1H*Jyepb z3S`Qiv+`fJz%;wxD#sTRUde|<`ai1-iDt%Cg>M7KE5=qtUDA-4tQ7OyHK;IK}9Ef_o)NxsV~xYPE5f_meGM-IW{2b5%*} z?TA-=2bs{k5ef~Nt4bDZ*QpNBvl-31(a(jdq;zTAG+uuPPXWr4UXH0{-O_-oT(uXc(@5?D}N~_hD56b|;l$iXNFs1%_Aw@1e zL@rd0I&Q7d4NEy(i3#mouFX}7-tx`0)IQdugJtKygjQFSI_1{*CsL9MsvRKl&MsaV z3y^h)PFNkyZ?J`Hgt!(8FpPgm>J0(OLQdp99N^R?HuyiU4)0aTVcP{Rx~px!q5tC0 zma;*PY~4724!J6JA)9YgH2XXfzui+?#xc4D#hWWZn|UOEeWXte0-P9g2F1Oev`o}1AjM#n5v{PrC7g$Yn?Dvr8bqci=1a+ zc5G{XbVO_Im{N4~v{tD_tM~4bh${av#mInRErPwK!hCfCWwnk%Xk@9j+$KISFSY+7 zhQ^B~#3x4JmhA-%U+gvHAcNuSBWIEBlZ~M0QkFrl6E2QIt&0Q63xM82C+V#srS2xXroikXjhJ12OdZc6Xq0I>I{98z3VD zTeK3e@t-th%fv1O`U^zV!-K)G-fWdMGhA0$u=2GKn8`N(Qvo4!`@b~Jne16C^qr5= zNRk2R*^f9_IIknn6`Q?uxCIGxzRGP{t})HOaKpJd`C-bKX%(}Gc8ev;-~nGp=vDcQ z(l^=wpiXc4F$wqy)mQX&7Kw!X2T6LMN@4_@&@@2d0#iZaVSSWzam?tP^e#GRRCT$D zfnrdgrsF`VJw%A%uS}VfGnYP;O&@Ym&VvcU)3v}dyrb0gh zYTz-9^n5srJmiDa)iF5+w~i)?4&_=5IpMao#L#c+xvw$RfJEV*gD#3i<`s?T4S~`4 z#6)eWz(s6&{>bWw3u9JSn7HkH7sXuz0$3$!O}VEgk-lq$|~^skKB9IL0v+!DhqIuR(R6b+;}8BsF)Q^9|(>x#9Z=4 z!o5mYyQg2otsi*msm|qWcr&Mfy~Ht!bVB(KICUl24XeUtIiZ8Y@?UcbNtWIDjwB84 z##w>PG7;&=n3L^ba7cPx=*Um3#(ptDLnv}puK;biyl_dM{ zUoOh*q&w>b?M8*>zmo5zUeeQxf)*_|v7wpS;6}6?%S|h$Y-F61)%_XNZ7)FPkB{mF zrprdqLKF^*86aX~QM7BEEEm7%IR@~IRdi7}x+JHZl^_R202RmZumod`d=q;sxbA7E zD@hbEKJkN8A490Tb`i0bt$}F*jG3YWieXr+Y_8&nOd%1B^RUvE8XqyKV}{23%F3!B zvSn@8DXw#ER=H&jvtv$y(hA} zc6zS5f&S=COPY!oMVItW)b(=jA5*%JeMy@&&qc5=&demj$N?ruD=p^boCm-zqw|dGM;*h^=j;;Ik#Y9DwyljYE=A#P zw=7w9Z@yh`6eg4pk~@Ki*?VZpT?iR7;|*g%KE?l<;lK`KzzV4xXE8HHhP8nQOQAU= z*TBv#a@Gx;{JoiSERpSCU2Q3nHE0*$J_)2MWThy^c&*{`kfzX5pt;_#T-SlyF)RjMk`7PeR~S5J2zm-wV;i20`(4ADxO2s+7fitHnx2> zYpQ^uCT4lga1w;DSUhuXbrGV5oggMQda8Qj*%s~GihO{)80?3K9lMEgd#SUP1&hgt zQn_p!@rCBqz*RFK8$`}J7mR#6BzBgD+m8UPkK!0}zKhX`Ys2t0@) zVz++dus=Z~1~~q+93DP5HZeDmE_pjSE%gcDL4*OkVNo-j{lChh&O#$7R@8QgX~@Oj zRXE;>&fSRsul9i`qH;=->$YiVyyEfPnD!`ZSVBH*%K$7zBw2YbS3ARrYgdgT<%Tan zJO>~F6!}sO6_)|9PEx*IK6LZaxNlJr$-2a+9U4uACDf3%wC5)CVO!e!1GuLZdRf7| z+^wOqn`=1!GxZe^r;U1?s`;z?p0cHO4uxkcPzH=wDRLz1o4a3)QL?LswoTTDayB5C zms=*U^iG~5L4(guUYnmpEP)-DMu!s_KGwN$T&NR$aydYe6N&`WB#&(~5Pi|)y>kwq zk`O99NOU%L^Ef92!SQTAmSR_c8h{At_)UtWb@w@ucIU%+kWT&K01-QM5xnmWr}qro zRT1Kr4~gl9`jsCJ7bz66bfxp5ti;?X9>Y2F-x-iP&!_?qbRmyz5<J=|R^~!0No9N-DrEe=Jq&kW&a)R}P>o zW=GO1M_nN9x4397P=f;Y=0l^o9`PZ!aVZQp#av!(Utl|%!Ufwfa_j^-E;XwnQ>~z6 z&)v80?p;3Wt1-@Y65VCU%?#NC4FNf_iZkq>89DnBHSQ3HGn2p8j+MeHE}uDYX(kg0 zwByedeV#$dGMxeCZH&5*alB3nTlw2e<#7R=$MWGqaBr@9lOa`o_YTPc4CZgc_+YmX zPz9AC&w%(-pjHPM;7g%Jmmm)OyEbBWfB+1+1oj71R(joRIX|;DAKdlq{)x}`PeLE? z~#>B@KzOy>A_ zK&(AjNGijK4xui{hAu(E-w43j%&3~a5Xs#4IA>LfJzuTsw zEkJ)UyUs|~Zk$Rhb(WU}1q^e7mx7IFfT&a{f)Ii%FZUT>4~Iu8Yyl|gK{p3M3W^!) z2B4dpp?lG6yX?Dm0Eio(O{H)`v&V0o0*`rA7^syGf8X5rL__nhl zG!e?78cw~IHL8SuPQwB@etb4=K}1NC@)l5}-DhPt&dSBl%4f|g&;oLd0^SkcAp8e(Fxzt!ge13 z+N(c+53sFpAV>9ZDK6VZ(aHJUeQ*-^?1osrk>kRiSpGAHyvLm9^ZPJ7P)P*zS-y|5 z1}c*`ulEb1wgQv2;<}0fglwj_-?KyK88Qnq!MSnd*0@936>HAN9ef7b^f<1__ul5Q zP|rjNLoUARFxx$m{blX*gWAvCX>2!9ZTwJ3Ts*{`3~^q_Sv!zp9Rel`S$cXb)kG$a zN88dLob1O=d6(lbo@2+$u};h}1Ay1Gv-Fl}EX@U=DuXGDU}CJpwzc{sM?%~LIaa&` zqjr!UjYX6!2o3<15}C3@Aby;I%4fhRVa$C_$qo?1XAA5&$%L1444brXEyT$B<$=$v z;>e_Zn}F5(lJ-7g)Ru&V_b2T;US97v1GbK8ke@+Xvu{GT>^skJBSH{*ulBBGAVZ$p zMZT)HVL%cYux!aXI{;b3INr)YwFA(S6&n2OZuMmTmscnr<9GuAna@BByn-hJ5*;9f zvHKnUTM#vj6aA8{9foAv1qXP86ElXtFa)qSSmDZoGn(?cZyx}j$bfKPD%dlgWHUqy zuh62`7t~Ym2p|EFx-5-aRAZ{Z>HSIKv0YHs2 zE__KbP)fbA{Psy&DgnWqvwU|Q_jcMcRW5`nm&hdT1S)agDYY{zdVs3dHcPkOy=_?k z?(sWS0aJzlPN@d?@=lq2;yYOnrVRcqKKm_hhH)t^<#g_A7?lAQZ1uhJzGJxe7I$}o%x`kE?Z4g4IR_F~^Vc{)%*Shi604k=mbIw?l%XTr7ua3doV)v1rU#G#0azjx4U>r>neRsXk#D2|-2z5NUvA$Y&W4GYs-s zdJL8>eHo;i2-2Z}w8)^|O%hc+l*}9LW zt3K*gXBfQCAT9w{iJ9sm;F7D23Xl1riuo}u4R7^Ua{1=gh@Fh-^IuY@*Q9>-V?s9r zNz62((sz~R+m!ifD){&1BcFWkeo}4!m2&rsP68|S>lf`Epyd4^J>m{M>kpZZUo&)fqz7l{?8q?7`(S)BBX7Cn zqs__8rBUGPRwgnJh*|adIc$mXf{wi`R$u@XYu+hwKfUVzq#^*mxwFl#dj0#>Y+r?~ zdp8eKx6*OH(>FLWW!8UoCPJJQ*-jzboy1_r#Dw4{IaPPTYq{IQPHwm3?X=Cl8wt;{ zQp}23pC!LF-FN}CM#v%oK4@Bf(7KS7=9roG{>#?Q8R@}0wpH)ST$j%WwpC!-4Z)^iF5j$3jLS7yd~f2-99^Zzh3_2srw7!uDC=h z{Y!kR8(^mk8B(hIt<3RT(ALjc`?iNX0oSx`4?p>B^A50ONKT9uI3Av3jM%lRI%`=g z_=9%-SIvbFhEG0BulkLgkZGcuX}06To$I@Vn?K%yXHMV!VEux*yX}_>m0ysKTe0uO z425j${&ziA*=XIZ9~wUOZ617jQhe$lU14VFiShQ&Uv}S-2Rg4xS@L^>v1Y$h_|=*C zYnj!z^7T6_cWfU!_$~bI_Q<>(t3I@l7LnJdv_YnkQd+NJ~HW0*>)slm1%!@N9c~b1S_;d1I@$Bisuiw>Da^J>Y z^`j2;GeJ-|uKmQ;&6Gz@JE5OnKDlhXih<3AN99cu@}g6_n35GRk5)IiK>Jc9Da&&d zXBhV3X^lL!T}vAI8im%H1=@FBtlPi;ZTDpcTgm;hYPz6XQKh63IHs^19^ns-cX~qv zBjszXwMyNTcWRY+$j8IW;hNUXDi*EjW5t`dm2%>IWoJh)`iWevny5k>om!n;1f{yj zZNnV-5U+7pf}@D80gb!AQ@3H~T&*CPV9nFzF;TX9jU44&dQAleXY`tjZNKZalzQ3f zAFV8Gcax=b(K@!E?D4~phu5lZ!-F?{cG{?x9j6LSTq^|ZEuFd?wx{pD@@7zvyYf1f z1P0Sh#*V?$gUHi~7maEgsjvjVKc*-8v8}5qFcmY_maUs{o;xLgF6uC*b zB}{zDYik@aU2Jj|!rGE~>@Q?h}9i>8w%BP5Qj;X2?Ynf2Dw zqtf2QC^o?jK^T?NT;z}RTV|udKH%G~x9PKcZy!GYHH{y%F_;68O|w*TliBK{uZ`a@ z^jlVWU|@l8s{p(|SPYe%-RAEm7g44& zd>1KAm2TH7{sR%0=$8eeqZK#PrJwxKHv6!FOBiB`<;cpigv~O zQh`=M)F9*wc%O#rc@y&!5XYAV9o^If}~upv#OuamCtd=%c`bLEaoPP-s! zJjV+)x=!{`OQICi8L!g*35wVRLz+TBec9_wbn2_q$E)z|i1^F7OAlhq^*RQPEQDT2uf47n#$$F(zSm=1HWuEVC| z?X`DZ&1((R#Iiz0RrqCgsp!x$zGpQET5qb)Z!g$f*ql{KAUA9;%_)|}qxw$V8!z{_|yZhO0abDL|> zol{NgwBlTQPJ2i83!vvAIvy@(@KITdQHzIGDK!?bj~q8=-Z~fYyq^yh9@aOFZl|e# z9)LNXYUHx^ys&vN;kRRGcA2{`V#MAo`!eCVndz1=jkjwG%o>2HiHThrV)^f7v_h;# zkZgE>EXYmW!Mw@m*0V3?*7@+iv>q2dC=NdqZQq}3p%J@!bibGaw`4S;JQkRk5JtHS zUJNx80LNL>Q#$QM%+T?RFSaPxqV|>N%*BrQ?cC)-`I27$AwmnGra!!=X$oz+mn7fx zeUb_DMclqp<&`KtuIEr}u+gbfknw=Ichgbbd9z_ESNGv;Av!f_^^^5w#~#j?t=ALu zO=LD3R@9Gj@Yx{>c_fPDBI6KFo!hl{ zwpRuk$wn&nK34OsST;)x^Bq6hi3#MbMJLbfeO}I3>U{>h@$Jd>Udcy8QVm0Hrfwuf zG<@8aV0U=}_vl2k)tR^i(t{2K&h?ve=$N+`Rmb_9*?|1DMeRT}4ktLDvH1p zubu3{>Odnz_#D7U?ahbsOT>@|&v6wXb8?Dw{nqOnOz^C*bb6KiiTD&(sFJS=C^DRv$qP*hiT!oq5W>fj$FuSGq18c;LgF9XU8?OLT zDfB}pG@xCcCJ&G|vK)e#ZlvQZ!A1MWdQevpNR{UQ1QU~|JN@vv^$XT$qY$zhG7Pt= zS$0Bu2!P1M^N-+(6v)5`@F@CdA!aAjThrP9z#Lcm=(aiM3e6LuE-WOX<9qsKnS8&X zZF2h)^SZ4T@2+J&HhNbl*bjny0jcS@n{An_=xq5&iW`GFZXHJ2QkalmzXNbw0ko{R zOI8mpR_htYM%EHa*rV`Uop*YjSw__R;@n4J$^(Vf6?3LTi$o8(oo6!CE4E(v5dXeot&Tuv+9Rw_uh zxVt_CikNr%HYoMIG%{K*SEYAVEW>Fk%2Td=Q@n5$?iK*E2ljh*ZNoz~NFW79ryvl} z_k98vJQ1fz1R3xkRX*2APUeSwrcyK%vS#INho|a`6w}JUe!L)UQD2Sg$46AL7D0cf zC=}S>{!RUhtJKXs2R`-!zAlxKCtOXA3pRV$ibb?TZz6PR3CfF% z{lfsX{k6|Q;ZP4iX14lBe(l+FSCgrL^F^p9gpKb9A;8BBU>2ma<9=t<>;xlfsvUE+ zchd2Zrre~T+~m}eN1E4u)x1VjR$w(Mewn;3P==n_2vQDIu7WIoOuFheUS{szEcT5N zhc@FIZ%7Zi?i(N${^~{>K&VYdXtpxfzTEJdDqZmsBlG4iW>Ecx2moIr>tb_Ag!Fe4 zF?v)*vajxS`ubh>xk>td@7es^8_0d0wwB}>&e?K)ubS2x&}!L-ep8I7cZyFxt(SlA{E^q~t1BKAP1R3Q)Sg1V zw5&gM-wWEJ*fi;SfAY%1xi#wZJR>c6TKR@6vVrb#FS1KsP_$p1n~G_ya#7bZ4j49$ zzM(KAl#6e1FPQ{2Xos~P4LhM7h69EV#f52ZUfkYHtU9v5Sw8$--`zh-K4+#pr+uof z9sg!@sziWU6Il{RY@IxZ37+!PHi_GqHnkz(Sy@3zTx4r(ZAttbF+MCl$Tlukx|R2> z+<0GH6H~(^a#qfn7W%y(L}Xi5Q#aVNl&>!7dn zI`C+qvv$y$gt)BMI0;^4108(Z6uH#xW%#V;tfu6>|C z(RFTKp``J;y{P#4ONgyVdZB&a7YrBH$!mJ!0|1y5m_xm z8@db1c@a zmGr8p{PeskYHBL#lB%n%lJtk+U17W{hW97n)mQ<%D~4ABcs2hO@ap^oyaxI@h6a-A z8A|l-3g9*Pp?3|8j11ODDxteS^)C5`-u*#$%}m#rnHigzNdT{@nVFfnx!E6j*HWT) z&26kLZ6$Qq&dSct*6s)0by%UhwvLYW6v|pBr?t+`j;<~gS63G|H&=Iew{`2>JUraJ zJb%(%PahvIUte!OKW{44*WaHS5D>6o!-l}Xz>OP&LV`DjhW^mI;b9RG61uzT2i=X5 z(B0VBn7G)O`1tt5LfN7o_u#>U|IoYT<>mhXyb`@zTU+~YfcNm> z!#@FUV`Jk_!~0jjD>1xXU0o8ud*Z~2pMdwL;qC41J$?H0zZu^1=gSe=^>O4<$T$-b%p2l z`IHH@CQ>9kcli&V`_kctI0NBaZ2djai0^^&U!CWSLX(zT8K!PdF)KWm>=El_I)Pc? zxgUP;+?IkBp8L|_mxpHSO+8#8&Jvz$cipCy7;OL*>dx`gLG{s+(XJ@td<(pPxyaq~LW(H}hb&0l#gWQFIR!~Vf@ zum9k==0A9@pY;R59Q;q7t0v*O%oUz{=SIF$@uY<3zQ7w@Tj9B1EN9u7D?Im{uThLF z;NMbEAIpTzwr0&n=Sh+`4tv*^NlY zKY4By=DdZ3=O+E+x!Mw*>z&ItU*Wm2(nWTcEhRiR>YsQnbA{(Fy8Pg|8h`LyYp7!l z>j%%J{N%aC5}vyt;kl1~@?6{s&!sE!S9q@G51!k~aQne?FaCq)MoM_@xqsogz(09z z;|O_tY&eYJ{FCS2$j|&M&u#e&&#fER{#Txhca-qleG;CVyTWtR|KPcJ-xZ$A{U@IL zRO3!QUNL2b=jy1nk~!{z=oOx;{|}z~AxGzLcE{~OPxq^}QQfDXd`%5#$>JlBP#^MmK2{)gwr{>gL0{xi=t z2Ox4+crG2|@h8u1`42pIAK<_8Tn(qc<+%{#zwq3+)m#2E&%OQ^o@@G(=hpr^&&B^O z&yD;KJohX9Po66P{0+~I{438L`CFcA@ozj=_+NSM_yNy9c&^T$JogRxpLnjyf9AP& zq=>wK;kgvz-|<{5`M>bo4c0$-uJ#{17xZ6v?!-UwT%|vFt{88b^S|b~5F~Gf=js;s zGX;O;xlW1;GCz3k&OdlA^Z%0PTKvIt5o*dmdG5r2=DB+%Ja-=d?>x8ce|WCxKl9wM z|0g{6;otFG9{DHFW&T&5tAOj1@LUj>_><=%z<2~`!w;UDNBNWIw*5QLJ@+Ti-S&g$ z#)#l~KY1?r?|81oUwCf({{_!&{eOYyn*0;bokmD_?!Ny8&n^Euo?A};ljoZJ;JM~M zc&$aqjo(lvO3vKf#rThMe=iWv94bN@)gXeCe z|G{(fe)3!w_}~r1Po7&W;kh1v@Z7vVd9KHwJlErId9KNS<+)4=b_MSfAS-B28$^)0 z2_Rt+;KqeZXpiJL;U+#*f^PkJwO#^<2N$$94wi|p3nm}x@vJ+#vo3@I?cE6t5>)wf z>->0@+HI;9>YBpLWVl>2&ojr9y0v5X4n=oNS=T~k_jw4x=V;G z6~Yrm&<%7D!35$}i^w4(_KV>RJc31UWC-Dzc-RI!1X>E9(vUoXj)-a%p(Hy< z7sTlE0L)o2dVr4Zr=WX?=xzY|1dZ21Mm5lo2k?j#D%8Cb3?m>f^3i-DaxoMZ3~0gv zfsR6WDFZ3djVB~xmWmlCV!A2t6P|cQKH`=DbAiq)#Upr0@Dn!Bb2Q3fE+T{ff7rXv zsHXD0;rr=zCnVHRgwU%HP!tg{R1pzF5$T31#S#=9>`6#4RD&W01Pq8YQ3E0(3Wh38 z4JwKag94&hf;x`QahQ9f&YU^dnRC{4ujhI5to3B=x1{Wp9kTzQ-xt}IcoH5;PLN^C zr1L(okcBN|V&`%g2n`Nik4h#%up>-Rasmxf>|r5#1*CL06I;c?HL&rm-!yRt4d|r< zJraB+9h<>GBB0PXA#g`gcSi=?W)q&$h%doKrNT2mOU`_ho@sk{=1P*%FASy2#h_~? zw9#-`H1v8o6g~?Pi;3^V#OE@gNrBCw?=xngj!3Z8One`U@SIJ2#jKZ6arr2yfJ&TD z5bm>p7ACGhh&cqFUxh%6WB^Ey8x`1G20D@fBJFw=4s?eC+e8Bz9|8lQjFe%QiplK^ zxbir(h_OV@Ab_^?h!lP76)B90t)%0__snzL+cW~Go2(wq0aAJyTZ}+-K+~m-cWDHf z7`zt3eJSA?llV$be61iV6ht??66kSfAxf9Mm0n2+H)urANKOa|T~Ztfwi6VkSsu8F zETT{aUn<6cpqM5_<;t*CbbKeB@R&rLpc9|52#sPCBAc|ENq8nFJYf*}L9?ob^-w_I z`nYi^@g<2kqG&uKL~mdts}qYOm>>&3xmk+BYoQWk=nNXRl8NsWpC6F}*QNM#Y>ak3 z-jYhTlwu!C36EsJB?#`Y6#Waf@dypqAg}2DCJApc=2!1jp1|u2qCF*b5p4W5IsS^g z>=NyiRCeWt3>cb|00STpo&n4T8z0FCauV@5W65I%VL(`)$3%xI;3_l{Rf@eYA>5Mz zS82FHDrSSQ8rOl?C&h@Upsxdlq=3~KKtjjx_L8;>fydzbAsV5Vg|9BgtQ1O7QtUKc zNg*a??VX3V)l%F!7G4S=Omq>(goHaR0CezGa;%7nEn(s=$nd?)wgEcOLc@#MC=!c& zURXo+gO}2sAIN|f(3Hv1>4PLCHu4xfCDonqNJ@~?h;l~z0Q2e*8G89gNE{0|WdVTd z{Tdax4lZV*fi|7+0OaBd!Zu6dQwVW;GVukQxMv^nc^F|xSU;B|tzRmXsxYvih3^t} zAC{qGXbAOsk|hb1LC2OT&bG0DK_<{h!(j8#BZ^jw%|J6qpy?Q*H_4ERo1rVc6Si1{ zx7~mc?kSolSj3A?#4&J(Qt_oS$4vRPN-F*e4d@1)F5BW11XCSOJ}rYP>%&VS#AmWg z9qfx-2om&hBqq9yguliF9`7ZL3JHr&p;W|}k3u4-(mUy8pTkH|uL+M?puPi|q&SiE zIIbMkLu+58iZ5nkb}33w5=@_@@rE2<#lrIBNQ#gI0-1vlY^fC2&T<{06FS&fV+l!x ziP`zJ^$r7Q5_j*GUW56EQJKiY~YxvX#~jI_Nff*?uZq-4@ls7w*xy{S8S8f=MYMj6w(?jy$Qr9FPseInWbS;*1rc zLxwAqqG8Jsjxv~`7<#geWKYGE$Z$hpy^SFASM;fpu~{Hwl}bmckD9h%g6G(`Q4O$s zCa#$T^h`tyTQ+({wuOiCb?;KlTbVCfi&glrIBxK0H>FU2LYN6LP%CPurA z4&*15c~b93Qt@VkAkxK&=$Q3FDV2(z%U59QK~2gAM)m^D3~VrS3K)i$$$^_Pz)A;y z5`yJ25Zj-?s-%}bZl;5S5CjVJPC9xwI7EepJub(d5}$6M;ak}A<0C*#+9JhEX)~AQ zxDqyU0TerXkF-UMzYQVu3-5zG-IqO$fekq;;OCBSVNI6HwbE4wsA2bzVG z90}6w2BMw>bWnk7LVODoe+hz_!9rCS&>3eag$>nWLv=}rcs8a4g6|X(9y1A+UqR82 zJtRi0ry+EN)jOEWH~#uAUyAl&#_W(`em`-rUkuy}1C+wh3)zoR!>~fdl|eS}X{g~K z^E`5P4&qJ6zm|aG7A8sI_%b*~|`zcC{ILB&RriZT( zKO?4`SCK;vA;<%4Y?B(2E&%1FN1;_0yIjoISjOa5=oba+y@Q> z5I1*z#dlGAd*n}d(?6ky;bJNwcTDnI)=KAtB=B6*D@n(cj4(*Y7b(zIHy@(JsFQ4b zhwMrZ&8%4pevv`zLu*uQF}E2X2gLYO3Jgc`88Hj-Bw zhIYs<-J}BNgxEt=bjB&f1t#I^*v(@k%vv-#p9aX})0e=}7;>~5_5MK;FuZlPRE9}n zI;bh&NmLAE9CODspkWu((9=q@G3v6z&S56~nR^yW^05xJHncIannuRG7eDJ(tL{6y z#?<fPb z2@)xN>$B2^ZcaJ#j)_dyR8N6=Rza1|CcZkl_hicCwl6*urzTpmsv z;EXowSSY1*Ll0>uuv0vax|LAQ8<+|@)I1{8`Z&#}i>7y1#GafaIqW$y>< z63hdOqvJtXDl;l(W_f#OA~p1nb*vTzxG$*X2Dd(#(u&&(oy>QVAFClGzQSh|fGFA3 z!}FLZPAj=`nP;J|)@%$f(+pd0&h$+b9?qn*cv?H|E~^fRj=qc_*`KTF%+&K2N#*6E z%-)tQuTLOVSG^XPnJ?LeJyf!-elBrJ!~f#~c$UFkkfKK(_|jAD$-TIwR>^_+5$#)? z)Jq9-^y3jVjoyoizTq8{$D@w)_aFD!O2xs$wa%Dm))>qh<_wDkaaxHET_AU_$!pCC zDU3p03b0p@!YQK8h3mQD%#j&Fl`Odyx z^cSHm`ldQtm%w{XgPNnOihGMSr<6x4n$IEX&TTGNP85g4Q$ihFc)99;_@#2tb}Z^m zY+h~8;hsZv>|?DsWio&Xl_Lz_3t^a`3FvM`&(a)~+Nj5_ zszQkSf>G(A)k3cNRfwleQc8<;3y|i%tW$xz3tQvmro}&sG*#uG%)aWY)GIt}3mbA` zzg8%ZJR3w#)4&Lb(wvK-!9W)M@?(YJG0B z8i(9i2wc6G4dGy^9X_=f;1GPJsU!;h{`B6cw1Rb<@j}mW0Z5{@7&ZqUd>jBtP5tD-`b`)k73O zG6T8|)SFv+3VdyGK0pPg@T$J*NAYdgmyQ&Nml)%(iga|K6tj=bGj)&3vVQ>6sGC6A z?3%3%>vL7*2uBHG=;e(LKIsvX*J`N^AVf4!iNJRf_R?{4Oh}hT3yGrtTEfVjrmD=0 zW3Ajfu?srP=K{3&<1$QM(A_YCepKy*BolVUWl%lfUuhq0?B%8z(JIhL<30#Pll zAm`))usv`$L8sbJZ9P`uE?K@#&(`@L^U{1wXU-^~ls>BG8@hfb-3NM5#k_+;jLP&C zJX1X3XoTO*|%R zOa{fTXK;zBXVY~Hq|A7lhjnTcK4^0^dAEQYrw2)Qq(m#Xl{Q)LYrqH74RD8i2M9*C zfC=)HMiYfEno!&?ub1zh0;al4Qr-Ny((JHGUT2mWxHh#pBQyHD^;8(~dwRB30 z0$~)%y|-|E$BH&7GE6xiZ7*L(dNqzsH;clo1fD5Z$#AQZ$=Sj^70SF(7(ltm4<>c3 zkoNTy>d&HQg`V(qFHeV@0LM*~OwB=NpO3v?#(tGJLfF+KItk?=aaPMRI>(T}+H*!x zU!SRzTYAIpie)t`n6UB%tAaTht?d=i`)<=vz*i0>7BGpYYLLS1v#Wf9Yp+*AuG8X7 z&4Vyp8)GKlp&gnV>M$3L_ey{UnjYb<(t(@y(I44bC1j};Jo&Vm13!8C6wfiOeBUMX z0R?~MzGp|{39HQxygznr-&8W4bXw?PWkh~Hz7hHbc?4>hW_#K{wL&>-8cyCO8LBDE zFC1ERaCVyl6G~0jy4$C9_jC`|Yr6fl%jdS#1H#PY*skC2rCo#UyOt;@XnMfY6E$YF zK;vo40#quLT`V=z5L;u8a8Dpsj&k*ap_FNk0gG!}lkQ34pQUHSgOFE@-$u#sXCfBM zE`1DZU*^Ey=zx0nUVoGPebMbR6e~8*l&t992 zbd;L3*FZv9bB;_Aa$TQ+O`o-sPaGiB_RpOG5}v_SG2!se%DUSYD@;@KIAUcxGw_9lj2jHF>o z#*cuwuchsulBLc)oH|pw~N4)02T%XVB3n|8M8rMz6^ZV=-KtcM_?QKMzjf?oc zjJA)D&KbNUhe41Y^yP3V=rmFB4jCJzwnr)!E=hndry*8PFAS0KnH1$sigKTt`U9z} zXV?&TMuwMp1{2~L%H{{LkO5}=`U)OhkSW);lb?Wj)gathumc5o2obmSO5Zvr&#`3@ zh%F=K{Ql)WHlIC{huPZGFqdgWh=R|=EZ)F`Ke_^)qmLpOG=2aRS%KjDj4rdMaI5yM zX`kkKVcH!P2;aVRD!r@1j8m%MbC2?zN4dYryEabqBLsXO3Xdk!m%AW>1Wh4Q%Gw0p z`lEt{B7SH=#ut5uRiZlU7JkG8KS0QHlERD_;4279U_%~Vz0qF7b0M``j~;F&m?fXM$@f+zHRd+TX~e{m8MIxzq81m zje{V4!66ts@7NIdzS3JuPY0Oi-dQwyU7vxle&mxSg&2v`ZP{gx_5r?v>$_8VB@%H! z3*Clo09UY`Mf@nUj2H*hXbciy_@_p5U1W$=ADUho1=eQqmW*7-GPrg^xLwh8Td(2} z3D1Bs5^{PZ^x{ZZ&q(;lNW|nwA|rFCP8SCD)MZ)r`jH;W$>?5*kw zKMjYjlp+G=*iCMjb~00I(J8oTf?q`%1VayoWW#*f$PEtsf`6nt$@KlU+=qcF%IGXY)fP zJSPf&caNwv8h-f*hCa$?lK5G11$)mR($@Q7D98wE>smVEQ(zyg9G;rU_Y?8lAPvXk z9%>tSpNQT-vp=<{n2iUe`E z$ap?!{+;W?E94L-aeEIxJZpNmj~_l)8QyvE@!*@V!aI+9CLiB44sS(188&`07ki9@ zH;d>Tf$#E(Xy3v!O?cA21z|3TXpi7^*FR~EKwKSslC_0rGaYehKW{U3EGrk`VHR0+ zn&&AKPIv^Z5g<0DM#i=wyn}fUPmFEs;d!%o2L~fJo{hZokI0SuG0(n-vppkTES?2@ zW8_)3XBy|zll6c!^2?3 )p_)6>wO+3GTAh{sceLohFweK9VKx1Wt34ODyclsIwo z^;#w`A`B;%U-Xcx?(`!BbF?WiWBHTc&fY;&pv1*6la@s!lRyk*T-R(|#dF+ogsob` zq0(Uoc1O96uvJ9kQ*Gm_pV)*YY{K+-$XW>Tb2>nY4&BLfZ)rC=H+RP?jps=UH?0cr z79dLe5jx`NrMW!oT|CcVgzi|hP1`dYU!E%kLH`V20eZn2xC09Wg6SX)q%PX?@{M?ij z3tqpQ?}T2$gq9Gxx@uz0Tegq0+_x&4;r!g6h_LsKTM<0Dob}u>Z8Eql&b}rt?B=Ak z9JWv~X(57{lcroexefr=;~vy&D@VwM>TJivw@o`BRJ;X~H<|g+2zRE9GbkC-%OD01l?>^6Jcjz{l{Uk_{n{I4Z#$ z^)#p^`(@l#&Yr3XvUCEF$L9N9^PnR%?!B~HfC&Ba(&h~W(0z5v^HpWgtJCqXsxrb) z?t1lz$99=!*XUkHNMAucN6${ZI+r(SeKASipM(XeE;tes{J|a^1}bNR09OeDC6ScTxp^MT~c=Vp`@GpfOyzO9MJ^I|EI z&7v|W$Y^g&z1Eg+v=y)Cv|6Ay^Ai2erH69o87}cN!Jgk!MrUu)!%53UW}OGETC>CkfeZ`Dqy#`@I%w^l`Jc!0<}qD3C;$+#Kl&#oX>Ib)m)&OYc5w1k8@Y%aY=_@ zQN&mm-B@F4yb+yiC~$Mvefvw$+Z%b{^4zVxgKY4O0S|e-!TD5UFB?$2y+nkz_RgqK z-@V`Uaxh~q@j=;}h~(HWZ=uf$x0}Csqicq6369}@no7@$3)z}(57|N608cU5!PkAU zh`wVHgU`i#jcw#h#Pvx5jM!G_`SMg7v%YONEmm#1FQscJVzwEDHXx zcfgfURR~EM(y|Qb~HV$}2yrF6Fveb3G4!{DrvXMOEsWlWz$vv$(z# zMDMHpgGp!S3guX{~f$#TULf_>=v%gk{Hf*+_R-Q+FRZzYF=30vrXrqD(=*r6B5kG&4(8 zR+>;Tjdyd7HSn59dkghMZPDEH8D!Po*3dQWsYK>aYn$a?eB^01&h_eYMAa|YxsP~< z8NFMOi}5qfpV;T#?eSOQkc2arbvcbocdj8q*W}G`-tOEm_MZ9fef00!ZS_8+EP-!2 z^kHsn2lN)K@VbJqaT7@+#fM9)z|J#+@4KeT_U-v8)glqUmSF}rD*P#-YpA0 z?-rGPoGU+{y7OQ>p^yD4a!>8MO?!C1)*Ron=a(d28@$DISI(+kxvO?;I{aa|`WGkP z7tVRyt$Gvg8b5g+e&G=x8+vkQ*nQ69DUSK^?NrLvsdrl@#x72d?Yp_@^PZ}Yw=|%n z&+MHV`vK|f?QMG^&aw?^xC^Jbj=yuk9cd%o|NG77D}pwei>KYLO?&iyNR<=q|h&c!)s*jkZpPoTj;It2;UxDaV(OOzHJ#CA`scPF7OM|0%0+OC{+O#aH z3q{bRFWZ=R|qjEBzCTIet6n}dv- zjY^`izXtXlt-jfmbf;{~qYJNZHEe%z8~G2h_1M)tzr24l^NWpK3QoSV-u#&s-Rb<~ z+>;0QHa+V*VrsbLjLN1iyhcKFpZv>(O*f0T`3mF?){~N;Du-pA&pi&^ZG?vPhKxtK z6LlQxzd|}I1oBS)A;|ER^tYl#TM9E|J3hHAO}<(1rSWvuQGJ_s*LTiA`aF!v))!M- zQrtar&72#zos2f}EHKD1+;E`0^G0cn;nP|;I!`;P#3e%`DE2t_C#*8EEKQBx6y~9E zOq{>UvR($uSa?-3&vQjl8J0EjVNcU?_l^6t?gqN}-drKk+qg&0xxQf6XVWL_xd=wS zJK?eU=jU{JTww=_l*Jz7EeJ^~&(IlA7!}xiEi*nA=!)$+q@OpM@1<3$s)I4x4ms*m zJie+pF|Q37Bi!3!ZkRjQ*5Ijyh#UubDx_8(4dnjh;%>bkoU3k9BA&omExxQ@U^hfd zFIY0lf}cJXx~G<~-uH_UP`VxS?1<&QyOUUxTw=t9@tBsmqMeC9 zOA#8I6&*Z{c19P$K>?!Nl?ZY-$&KXVPS($M+TN%4lM|0bkA3W>w0xSLNSJAtaru#1 z3g~vb@ug>X2p6WE-O{4AY*_5&FXH0VEn27Xw8gKc3to7y*m-(lj9Oc@{@h^Vm6P10 zaw>Z|c_wE`r){-XJgJ2bn(7XB<-qc*v%RiqI*nv6r;7*`ABWkcstk8BU)A5o1^Fy6 zu)*QEU_<_A)%-PNr0P1S*-I)uR^{%>0sO})q?HOu*NFXQuMb$`OgR+2s3GCuj+G~O zK1fqbMIBw!=j~9w$DG%inxVbx*N;aJyVjYH^sg)3dM_8JJm*C{`1;YdlHXUGGIvI% zHh9dlUgY!fg9nl7lbiDS>S3EZkpGBC9Y=nh9b9?v>)W3?oHfD{{N~igR_g9nwK{(J z#_l{!&`W5Lo&6%eW4KM)Qb=}q;MoeRc>VFjzAXu^l}|_u9jfgz%N^b?Jl&D(_r{>? zl&+fnYV&QoRZl5@?CrI2n0!TmEKk=QprdH}#_=DspK3^{?lfV!z|$&Pb4c86Tm~hq zbx&8hMfEVZZU7t~kCSG8y7pVtI4=7HSJmSF(wmy)78i;-HAk)e-jhU49HZWW3|8U^8S>K7BI zzFI<3%Y<6Cm;2h#;jDPkGfmfJ0|CwDgsm+vwBOg>+W$)B2SBE&1ke^b10{*3e!#Ijy2pR7d%G?vem{gMh_`4n=6%yBoTYo2I`(xM;t^uy<;*E>SC;PHQdOZKEm1#O zYXy!}3A3kmDwolbmdvRAiVrW>RZ|86bnR=`?XM5ml6GrPb5vag_=`|BX3d+)^V#wf zu8>952qTdnrs9qZfqj{a+9j<}>8lAvcLf2@@)wn*jEI7d39hJfNl}I{*Tt-K1DZZ= zeG50LO@7D7+pjEVidm{63lPy?$;@Vo@t!uoV)79H>ZzpTQjW_>~UOe zq)Lp~dRL0Pt@Y@E(FI$_2Mc}Rv&ixia1!Avv$rW1rTkwOZpgf0Y;2M3{h;5!u(7sM z#jHG-kv`y$Z~7Rm)>=1cR6wq%xZ;wOcyH{)#U<@4PHfwp$=~RTfGN3?I|z_}Ak1}^ z;=|H5uFFqgnjKIsa9v<5yco9Lr&T#SWTftQJDt!QDWf^6*+;0)oVPtYX zbhtcfFu6Psg0RZy3btc#)raV4CwXvRo}!?}s$7mb?ENAwr17#oBX>;QW#*jI){bDA zzS6U`tAE1Eyt{`k~-jQ!|xCn;(3+ssXDJZ=7JL515=P zE3h|T@iJl|lXLYdPZ`~6ofmw3F1P;|q3RL0Ls1l=*ZuwXE1&rd`8&usLveZLjmP)L zuR6G{mT~)tMc3@heRjLGr^gmtL9bY?yq5zoea#oJ4uE6+p@Xi6>9=;2eOPozv)b46 z*)KI)ciJQ_FMJuc&BUwytx6vq{l5Jt^Yu9Wj1x!3H5FV%lM=6x1;taiTgc+$YF zXVNpz1}~Jgt+2t?K+vCL#rj`C>28+1cR3qcdOwmz0@wL$f47qmR~B80ZdW|F+4rnE z|HCqtQ9+=MP51TdA!iKk_(;RDYkFb|_~9fx>ahS^Rj0v(s?j-aWT?_zDL5G(S)jL( z2E66ayXzrSabuM%-LF`^Cvy-Ewr=QaX4#-fS1=O(s#f>LW^An}Yv0FSugi$-Mu)ES zyF>1E?-%xdB+Ekzkchy;gwmrA)1Vr$E^6)^6)K0MlY<#rfVzovlSg6-Ah_VZ!LnjSYpYo-2v~%Y}P|16~CPYLS37DzB4dovFcW>h?y;7z+wi zN^5Rtq;k|_MQ%tav7U~8?4kCs=gn-!WP{$jCv4)rv3Hr{lq2KV3MMXVY?^ZNH0>~c zSHS(nxreT1k9Vx88CsLseW;Cc2t7nHE?Vnc6rg1kr9q2QrFD=I9fW!*%IO&+Tz^}R z^w%ie%0TZIanW;%od%jH7t;Z~-y(*l>#1^MC42bniw}%Wf<$hAO>@esq z*`u%V3;q46tS^R;>00nHBbw>hR0vWM8%N`HvDRRx7Z`6XyVfwY7RB+k zHtrM70g=V|{brNCo~PE$(cMv}J@$-Ydi7k&h9dHOG&MP7#gQ>g$(Vaptgpuy!z3nh zDlTK_1O2w%<_Tb@QSPYMf^Mi+@zJ0{7po`hesRiEU3_=L?qFE{$gnLwrJl#4x<8VhSN_CkDoz)g;$5YzW4hg>db@6QpqELCok>4M){lXjR*2mrV;FDgen*&# zclkuCL*wn@W34xBS1(ciNZ3YPDxahRV}NO_iOcS~P2A|4>?JknQ`3_`0!JC<@bXw7jH?H{ z+;>y33S|&bnoF46w5v2g)!Z*%Gf=%>sWfp|skX=}G5@#C=Eol%t_czGOV@o-to!}* zIyRTg3(Di_rUz_LqNG?vy zAQJUIC-`iMZ}++-+%vU_Yhpaox85Kz;I~6ZJ{?_g*2Ql{a8R+oFt^U^OEAxaa(I?P zTu3fxe_)yG0?vm5@5Ws4sL0~(?-UD8f^blW#KpKWJCbw*GkmvFjhObv{=MhtF>aIM}KMx9_>ye=FAh5v|33i`LFl z*MHHjf2M1{)oTgg!0W%7S0%7s`z>JmXT$be#`Z_a_B(<7YtL2<^slO_fAnlszx8a@ z=l$z90{h*+&R1=<<~OivtNo*D3qn{OFl?(kU$tE@4`KBde2dxY{fOCqFWDOEe^;b17Cg|@Z}?Lho$_Z`35g8p?Lzkc_x z_KTK+{&nf%9|7BC-vYLvf_40%U|0MI*nU^A&Y*&Ib94Da!GaB2PcJVoFkri84Y+x) z^#KVi7_jyA^IPZd&j<+co3Gb`1U7g>NJt2nt_=?hi--tgZjAh%uATR zG5Lpo{WDz~&th!_@$2^O+rOu4{|kQoE?+_X3d+~->Dur373|i67qDCV9lwIzT2Q`% zmp{|Bf0eJGdHvq4{nNaHw)Ri+Dv?M)?fNHpZEkM(=*ZEvQ`|Ja_>x-avH9q7Tx@O^Ay{OZ}C3#-EF7@ipT6B{- zuU%2;^D$c0tUt7?;o(Jo?y8;NW3=_u%74aa=e28Ct~t8lTZ}dU?_TvyyY5N{EKjKi z&c|p2Ky!;`zw zf5vE6fZCNmuU%jHXSy8w9;1!;rd@X}eV+3zM*BF|I$1ULhj!IRz(MUgqdYKYm<(!H zLr}Ydzwd(DRsW9|t-@i1ITWwZ9{fBm~ z`lel<$iHdVW|Q6Z9Ud6$3NS|d++kk3F8i)scl{ZoP5n!ZR{y(p?e6)eU5)$C|In`b z#R-A-L#So3-?XcalDzo9@MV2-?i&9P`mEPkhsokS9g^h zw^d+_)-3if+O=q2yV`z_(R%#Qu6;;1i2-FkM(gukyB-6z>-&FdSKWE-O47VIuU-AW zY1jH1zV&>J_TC@bwT%gC*N%VDu7Ad8`{8zdy)F?V1J!RaTK~U`(boN&b}jFVTlgH!+;zlqTr z;r>;-8mIne?fUOATJCr4I{ZJh>)_vN*L>!G(yo8TXdjFJUAqo4|6RLY|6A?q_CK`i z#DCSU6kzQS?Yj66?P_KB7wu~KU$iSpzwckPt1IL0v@25lU$kp@+IQ``?1y%Z{x90~ z=3lg{%OBd6yyVLNTDuzIs^+!phTLZU-)Pqk?ddz;v}^hg?OOYPsa;S1(5_y(7T>k& z&Ht=jf1B5?{}!Wt_D}8F_!sR;iuiw`U0?s5cCBK5*RDnXRl6=Fwu0JqJ6!*}c1?qm zD6sHv+7*OzKVq~Rxc?EO?f65x?*67-lbK)#@mq{G;P15S#edVT|2Hw(`u`WSYr|i( ztKWQ#HsgPxU5o!tyB7Z$qb>iYT`Rw7SHJ&ljJEYZY1fb6wCm6F+Eriv7wua8uiBLi zJ0^2HOwZ5wr*_@&cQIO3-1ivmZp9Dndic9`J&L~U|070w4AicoAKLZsAKKOL5AEvr zx7xMiziL-~oXR+yC&wO>qM0;g@iHWZM8?yQd^UQU0yVb?1@>scu48}{wqg>MMnfmE zie0d%rjQfOyH8x|_YGpZFJr<`Oi~;Tmm^14X%=`&pd=17T!=~$q7o&jtul0$0wZF9 zq7#l7MmNmSaYtF06bV?bElUI=vU1;f?I}geHOs=82rV)?i;hW?t=vvUj|;&2K|Vyn z*GREKHad}p3Kzo2`KTf>_BaVElwh)i7y%2zqn_N(EcT-zP*D&j8zZ2eOcSE_$~YGmn1PBS8g}1hQYT%kY>Ry$COn`L+8DUGViv~Z70DSiFeH2f6AyMYFEQ~K zq&4+oT(~3lpd7W1N#ZeaXT-QV77p}m9m4q@BPa*Qsl?}WP)8Cc>BLDPaY{@C8>}sR zoI%Waiw;yvF)1|ER&P?7qHYpG9Ae;4L9lTW5=x2`$g!tEx=AHGp%W*V;GYxfWoRr1 z115RLWrW)dATbqu@{3VI%m^F26~Z+pE}x2Kijg)9vNjl$W#QYYKnKW#h4>mOT5EQm zeQL|Gqu#`aRG^NP^Y#HrMS&`j;22s!FNjx#K)<+QP;S}A!WBs{Oa{rDI*&AODu6-x z9B^Am7zbOx3gSn`g(Z70I3!+LSLwhImGF>Cy!b2e9rKKwO&Db0OPQF&IR!$EPAU}=#z-~9L2RZh6&?lgk)c7% z){_j}Vtv!1bf8EMzqXrnKuCB7A&#*KLsERL5Sz<7kFdqf(3Ecdbl ze6s`(hL$1t+6F1Enh6#ZTL(yl5faFk6@NvkBZixWnN{vXtZv!8OS6J&O5w zGi`>@EJu|=lwPt2z|iUmCdR{wgq5M6u&><*^`->hOv1a#Ay^>$f|zZ6$SZ^T4FoTb;rY+N$~kSQA9?gdWCig4qQ z!wSMUSj?ppt~2qKU}PIIy!$KS8e?FJ)O?c$@;toR{yF?rar;#RLVeDBhIK5w77X=v zKko0R0&OIGzOYTp1$R-0oT&h^HWT{j_%bPmDepxOqbr5@9+vCd6NLM0zbGMuEWsWA z&|W9S3TU11d{mE+&^k09(FW0SoE)My4)2uLfrZ*sr$!svwc|{}a}v1k=DVwzY-Gj| zYzM0yjA-Nb6Gjz;F*>1vhSCLZUWyrq5ZM-lUh(iT8Jfz2iWCIH(%vgf+);=)l=1L% z+X){g!bJjKN`>16@xrd5dWim{%yf=V~=f3XfVB*ipu$%fxF;w8J z7V$m_P@2K)TtN~-2)j!OmOi+(Cr;WhP)8xSIySyj)_9jn7*^m*gs``d`FCY)qa=c6 z+i(V{ACZq8r!T(C1i-Rth8($`dTA-EM@M2a;UKQYLI*g(Mk1mh0TSZw8}nK1aw>MW1dbphs@W4s z;kY6h`dT zZ`mn(l-oKV#qFkoe}XTC+|%el@1l{n(}1s=LCk-bq%rmU45E-$*Tt+8M-pz!271Jx z6kkD+0uyq=s1#J~xT7+3mj%R`jeAVLH$;1p&Ay%yiwD8?J+Q|uEzM9Mg0#@B^4o({ zpq5cH5DQr@Men(ZYh%`dHaP~5^=3UobC8$lPv(=?^1cl4s4)&HV=Z~5=$f3vLw>^~ zDn=2uh_fWZDI($c9R9KdcT}ucFpSzspL@(`YPlxHiP#t))-yb$wNlstTH;=iw~K*6 z2qFI{zFS6!p99|-crXu=LWO@2;71kqJyKi=3v(igOi|!RA%x=#aEBPEbr9FBG|=h; zonXbDfj!8$fp&q#fPq^Y?ks)iy09@P8y7`~@ehz9S@_C1V1NpM0{f^Gt$zM`DT`1Q zPJAkUI%|PV6C;<=et9>96`Z)@16bzEXBKpzjcv#~WO%JGAW#>(k6DfdO z6(4$J4R3pZeg<%bjXNR6BuXE{NT^=vyIYXK5*fzlEeR!o=&}(? zNrYAOn8TI;oibWnin>f6e%}2?+ni8 zTr#7?K5hI>%|v~j`fLYVu#0i}#P-eyz8d~^QAW7m3Zya0{?YxDn#pBkAJN7=9ma)z zzY6LcE4;pRyYp^;HZJL{_+qT?N1ruP4chLvS}S>%&#U9Bw^Hl4vEA6}6Pvbc8Y?^b zc$wuUNHyPz0_}>PFI7`}$We_F)n;kNu*{A07m8}DebVk?4;A?cwu^J3rpsTH?r0>> z#TU4B$_;Ru%0e?BzEAUocJh%1u<07hOycl*3C3tgFZ+;tRD*V5dnwU-@>8-ltsZoZRwM65Y4;si zjXdgVlU#FFC$mdDqajOyqb1udzZW2*2 zL@$2Wwm3Fn{LtGs5axIetwV*79?I^TXt`?z3ztZb(S*L|8P4@ep!^BC@@YYjHO~)- zH9AGP%y7?CZDhN$x;AwQJWMJ17kD&%_4_TJ_D9IsK8lX$Tg7aPBOS{(eKt@lX7V(q z;*ddfxK{fNe_`w}E(8qB4htU74%p#5ayVGKQ8v6}gQ{TxS8Lne4BLrjtOpCa1L)_N z*AM3=v&<-s5We9Qjjt_yhbpPzBMvrXhtzbcY?m=1(1g0{3^&aatC9Ul ztuO;xW?Xl-L7$oD;5`XRDVXc`mU+l=z=i0$r|am`&nSmZGBG75{ph5_D#yFFk{uWA zbVjJ2=I^D#b&}`c)csY<+Vu%xY?s5d3*DDxb1r$wq%74!YWIwRKcAVJu8sPdX*9+} z8pW=Gko({kn;Y=IO>z&ON^_?is1<6|VX)=m95WLR+A{a(Vl17j=bVp^Qa$pMw|Q^8 zXH=$hU=&al$A<(NG$KU2raM&+8&!+gmw#)$_W zk;B4pB4Gyj>7{;2%r||km}}zk#?|kOiWXU8RNW@nV(euXYpno6{O4z?M-^^bWh9=R zPp9fdnMb_&jx0uCG@;v~#vroFK%HF?WVai&xF%n;mFKU0Uz}m<2o04nnH0MyPutD5 zxYZw{Hega9`Xbx#=%#2D0R;Xfa3Ukb?0H&`i0`OG=I>swuhw-eXCcESYYk0?ZlK21 zfy9+T>co38YqO*@e0=?DjSHiu`rx6@!|Igws35~mXED~bz8n`yMVNXQ;$e@X)v89j z^>P>t9uVDRQk+gJXv_&u;3;{7#%js%vaQN7lx{PWE$Rb4;;yS9FE?*IEjqEtis$Egt%tni>9CW*#5p27Hza+X7i0*!-a+Kk2;K|P# zR28Y6mh*H9LS(qlWSP<5I!>RNd> z*wfbG7(N1Q5*HU6F7zGGq|sALR3u&HYd`iT-OWnsYC&3hb!7UaMXR1sl(hAm09k0b zdzG}Sm23wMrKR7y#(ZM%3}VC!l#<$}QKrj6bW`>{-!Ll4xXn$;_M>x^5+$7~IaD}6 zF@u^1_t^Nm=7h19lH(Y80NwU+?DU$_{lP5P0x51wYPwbrvnQZR4$n=GCw5EvJlyYR zhlndmH#fli{&9rR5NxC=1W-2dQCU7d`uF!Zxf!f&f;z<-sJCgM3rd~?g?>8S`nnlC ztH>GWl5gOC*Nj^#Bxn78c?VQQe#JB)Mf7tIY@vBPYkIZHq41nJ^0iGf9@Z=lK1}AS zRx#f71S+~%vD-zZMVR3r<ywB|vA`MXs$nekpAFr=!Uyf}6Qqqzs7wHu9P`~U@ z8CU%*Ys4_Jbl+_rn{?UBbE)8C?zm+Cs^tSWa6Lo&GmMz9r9yY>7BZ2=h8H}g#5wGn z*!=02jrv3kGI{#MCbJBX53Xk-LnO{245XhN;VLot{U}CV#7k~jxlMTCcNuCc%VbLp zDvE*7v#e1K=0%$w-dLLvN4>J&j^`wRFZD_XXT;l@rQ3^^tP}CO1gJg%e}Pb{7b{Q| zru#VXB(BqWih1_VS!4G4%}2?~e}1A;Wch^UAP0Rd4_gKeW*+0VjV zPPz6u&-LPdbI;ss)-Vih7)Vx*qx6rRi!yJu8@;Ay4;WRFOl0c1Q>%ep_utIPX z2opbaWF74yb+;N$3Jss=$noR4)A^C?A}a>w@EiU{68@-|ydhKQOoJ{CK`xo&Pzyi5v3X-xBc2AeM)HoX=xhh?*0y2+}vJRH>XjGVi>@chu z7A+S?v0L0p=q4n@m8=m+f%_BqK0`dOQkWZ+w>A^HxVfV$F3*+(yYmF>DdumKoqQg0 zG+Isw&*mYq*f2( zpyqUlvT)7Htyvr9gposV=o=Sx2W@FEujYmjF&uK8 zAB;R4wY(81DaMt;X>x84rnsh+KX{nGtqiu3mThh8YM_LTK=K>Ik~5lcWsius}0{172ORS6NtK-`|;p|blxJ+P`AxP2yMS9o>6+$FlFxwajT9CAMc z3wyDmfFOk#q+O3A`@g(|47G*b3LK~^>m3arFy{N;@tg0m$R03j92kz_BksaVZVXs{ z_UAFc!8Cr+w}It1{nhC30HFLyd0@l$R|1N&A)GyBAPpo}huJl;i=)o$aLk5BO5vNw zFF2KEnXv*88$e$49;Y8w#z=S+(s~0Z*C`YFC2r8OW6II9PhWmn`i@Q8>vO$h=UJ!6r5cp>X1%bw4 zwB|w-6&Bvbj{@m_%E`It@)U7*h&&t zCl$G*S!jobdy9FWdxO*B^Mbp1=JU<|%3b_unF?Z?s&7q!KOKIL^C$)hSM7K#_2l~# z$_2$kIXi~3PYmUq$73mczb+VAGIVH3F0zZG0X$>1ev(ZC8_Hk~woghTkQ$k0M~Xvv zLa=%1lcUyPzZ;>4&$AB>g&z5F`;_&Q7M0-&>*3QbVcv~BKzi261X6t>#Did4)A867 z1glLQ@?ycxb*%RWMnV}r_7(<NpiXk$W$B=2Ht&=n*h|J6P4ZQn%km?m zLi;Q>l=}EI^0x9f%=;Jfwk(P8?RYi_4;qP!@c9fH-WlN&0a9uPpNb!bu>b`KB9Oq! zG>$4D8B4)hlt`^+j+SktmJm$JYv!Z@6gy@Bg0%{V-S?Y9wwbu`Q$Ww6hnym z(72Fo{siZeOGlB5AY`C@$z)6xgQu;*id}4W+T-+gwmK4GG`IAEHwY;LVW&Z(hG3aD zM-~B|UIPXe?R*EzY_@j**?q1z4~B40-8#S&9DMNL)bQvYy>-YWh5IG603Z+ z7x!V(vntZhN6K4%lDBdw)*$YMC?ABfop5|K zfwql9(Iybg7j~Ap-cp#C80Jy>O!$_qk_pz5fj=*S7)U7CSZ-L;WZ21gtkcg>C>c)?=OUCT9OcY0^4tXKucMkH%v#=#dht{|uh+q|3SHQx-Jd0*i$4Fwo45c~wBtqqyUO~}ex z%e10qtza+(Hd)Kr%;jY0GC~#w1f@)K^QX8LGNuK))~uAfbQ`xIfg9?|jd(X1d2qDY zh+Fh7Uf(t`v_IakdGc7(q#>PKIu-xz2PfKcN>w<57qj223ElnZr7IQC{xGUM3rLTy zk-xO7$yy~!S_NX-5~f#XLRV6zc^T8$7pC*xaS!wZ5mkt}2vU&2H8Ocswl*;`<5jaD z@o06t5$RRILCA9KtDDu_mM?E^_P@Ci`KHMg5{2iU>>qtu9Eq<1f)p1+s5oCICg%(NWhUTWbs9OQGQlWh@_NTsq-t z2q9|ED!a`Bq)~O_ED)nr-#<$-&Q(0J<+s=u2*yk5Nswa;2rHjm9Q9Q5x7M`?57f|> zg??|y{8(aBLUR9k9nuZAc zLUk)*lZ>V)cagQgo7uz=u+|WmOooKsd1ET#nl(c#$mtfc=_S<9fo|ys-!c8yC7Xj@ zE#*OsOar0ZIDWL7SYFW#K(`m-PETjH1V3R6;#Qb2BT!VfUdhxT~Jc+wl z2DV?H^7_X|>TiLJdudLK!AgX=kp#{f>pA!l&Qv37dm)I>wQceAw(CYt=FQxI_ZjkP z<~Cz!_EhEy`P`vjG7lbN4!HgzR!bh-l-__({B$8*Ul_H^HwA~_;K?tMzkD_~OjDqI zaA;v0tWQ%!azu(?j`2>;la(HH=#mqr73{@3S0NOcptkwNQuckS)$b@({_ zQ*4Ricc~|+YGb_j`l!&R|784TfJ`DW09QGZfmU`g9x@9Rg);7 z9f~}eY#74r*w4K&^5)Jyvl{OF^pU+Gn`;|3%@-@qNY(ckg}f^riEsWgIiLu6aAg$g z%ld8Y2z+INDvhJD2pr!M{p4{pk_ozTWdJ1yDQAKUq0Tn0(ccl-L?i!mnYyup1KM^O za``M2xHRl!q@?TLo=r5+T$wgA4a8^kDOAr{;=|y(tM}x`VdaKsgb&m&_&%b{$Y?X z6iVZpJlwu?aG9HSs(1@RgOTC~S9Z9;YAuYg%wa>7n{6Bg?;d6xiF9GX^f$Nsc(iy6 zC^xP>a>);=Q-rm(-~oE|XJ_su8jrkfnxK4%BROD^L%2oa{WXh=Pvjt1GDEt9M^Xs$i@W0 z_h;4kVGTqRiNPo(8ky~Em#9v)PRiZ2^?cWBk6nGg z)Dl&zCN`ZAw8E56uAO4t#-+W@3AkuZRX;k9Vxw1El&gEO&p~sI*r3w^8kAPuEbIph zvhYK6=V4a3IpT~{zI;jdVy?RyLhD@6yR)mR?2b5MthX)gvwoVtxh4J8UF}l+3i%NE9>^OVC znzNI+g96!LOxU)`$8zz+iV+*Rr}F5YU;9?x`Z4u(sg(cNd)s~3VGtAPjP|fVbS|G^ z>E(n+)RVcO4{nQhPy4;C+L+DZE3e(gws{@FZIpy4i4SlP%ye06m>8VQeYW+NZpgLt zTOcTwuWw~L+wq&$HXo;7R>|)hSdGlf23*bjzfP*fKD(+@wA0H_efTwN=j*Y3nBb6D z7fBPG6ens$=-iFmbyYGo@)B(^x9OMX9hgnK$5ysd8a{kiIoh#mDJ<8PtXF%+x_`$z zcR%!TQZoZ?Oma{#pQb|F&p0$_fWW8_DpXHqhYkm2ygjY+Y6EBl^uNNn^++!$OFHHeY{L-#N?z1E= z`sA5>h)Nk<+dxHk9=WbG$2((rZe9VE4Vc#PO&hJawx9O?c&a+4 zS>L%fZ1Yymr|>Vf!TTF86ywubbsHWZdvvurNHOE4dE{sD{=|2mFKq8}TJ(;!f2RKP z`6y*mn^8)@rjyD!Z+UU{4xt{q))v&5&2sQ56lm9X-dSP@$g*6s_@Olj!n8N})mFx- z6M#xnmxcWRl^z~>evgrAd(?O$_Y z%S!Z+ea+|dx;Lw1t|mTkE-628aHdTy^L4;38wVfQht?RI>&h?v+@eqIsb!vU96qze z;(&U{3xq9Y^)N@YW!^NfJot*;6*t=o;uY`qj*6T|4L!x@xAvJY*4zDT3R2O=WE|zB@!3dA8W`Zus<0yf`a0*}DFCgiR$Fw=tx0dn+i?ci=F(_MC+hQWFNBl1h0rNe_`&E^NNqMcn@aw6V^BPZSU9CwXi|1-rn4|qd#Qp>dyTw z=-~4@E*9DeuLaiIl<((6TG?B_V*2}liwnLSDl@?mJ$ns}TRx!T?HHA@4$P!j3wFU8 z+H3zT;JM%~P01-W6l8@X5g78|pUs9-gss?()73Vy*OCu?yLNXMGGp=Jjf9O(y|=Zm zh_k=$4u1t{67Sb(@KW!6`}UYa!3;J_KmIP?_0aK?lRkzj$Jm>8``aPc3tUJD$?c{FyPBt^?(7aJ#nRcS? z3)6FT+wF(*PK~HvA04`6Rd4lhs{H2j59vEsPDLWGH1D$W^?&r>S;3>P$~z*>_h?SL zq1qbaNb3zw`+{EK=sTI6%^=#44KX3R2fkMZGmk6B#E@@4x(}MQY1Vywy~ODv#&dn^ zeEPMfD|?<{@?s7*6-oIv+phFJNlX8*2TR!pkT;FUlRe5sr!C^g{7`&j`_`P*ie5KT z8nq)gw^l2NVD;e)mG6Ck8MKDz3M5ZpIePGqkuM}8V z)i0mJIrAi%xBZBZ^N269C!T~JC|+Dp)eo`a>S4L-sZ{g~l?c3yq;pgm4r(k11C9eJ zn?n*SYltE>8nl&d%9X1h=oLFCX+}d^9^_k}`sfgKH8t8Sz1-{}lH__!{h+Q!iLQnt zSkpi1Glzkk>O%St$9Fi#eDaL7cg1|qoxpiKAfNbJK-AafqJ#oiz63oXQN%j9%0W1bM3L#1=*si{CzS?smLEfY1VY!}}zrFp8H#*K2Ut!S05YbtLojOoCnK=b{lX zSP@f~3Z+RxZ}g$7@*Kr^X2H%;k{&l?w!2L4h4rGP*R&QPau*?D7gzU_DWC@(`T_a0 z95%3uit2p7+wNC{H< zR&s#0ysv=9_OqxgsKOsPSLt`D5=x`OB|g9xi&KixHJ~3BiXSt_jdQ63Fu1~8CC0JO zQO~7Drz#}(Sdz))o^Jd;J{w8V-_V8&uI(s-yC|f@&oHRf=?4uN z)jmn3nxWc7-|Ub68uBn{iBYUkb!`9S0M=tBaDPN3JAQn!K>I|bo=1hV_t&HMFHyaw zQakPh<`Vr-Bo58_2zF=!LA9P2CE`Q zs^An2IITb7o7OFUbpd#w0b6K&!bqR<7^d5*cmtGjC&BVO9xAOyK2%2)6V7!EZ?ZFr zZ8Hq7oeaA)`SynK?mHWIYu-gNCO?8YVy^kd`5Pg^?=Ifr^OAlz(F3JP_Di}@tpwv> zQ;fG4-YxjCA=Btg{PA8s}%YMm6M)$E=(74_T;_O8lCE4tpn9(m-oZUCd#mUkK=pi$aVLsbYl zXD_u*hY}w}pAX@f4RgXAfZr`+n2KgfASu!v28Qq(6JafW&s73O0u#MeeAPbt=2V+p zXnDQ<>s_4GCE}Ch=G+TsiKm;`eV=^4rqAN3&tuP&Gj%^(LmD)PQgsN64W*O9L|3qX zeo`%MOOoD>B!kZ?Yffmf12z5Q@2jCmKbr5#%f_!Yprbyy)Hk8ZWL^8D<68La^Po8D zYm6+MIQ!`Uz6;xD@tRNsb8V=|w{o~-ldSUWncAjkgwKq=tDeDH2=HpP!K2nCq9`vW z+4X4gmM5xN5n4UZPk3J?shEYSdiWaz6&l7D-tDn~^^6+aOfl>`2SZ1~T`Safj(rNP zK8oP`sO8p*bUNLFUUvnsyfY9u^(JttNX0RO#f$F&wqsONREQQvVl( z_b>;U0iP`qkCE4J#YKmD${hK4$jbk+pe?tb7W>Khpv7#SHD8ylJ!8=0CInVK4# znf?WKO)VD6wLrGk+;WLI(5$5_1%kBz*tJ{^Xx-&Yt$x;Oe`?+3HrC5+Y!Wxjg5^!v-aAxYuA5nH-2ssiKMl) zwe9By1Z#gMynoed0mb|1(W8G0)^5=Gf5F=S`+~J*{~)|@?%m&mwaqfUPUqSM!rRO! zBpCJmGvPhE_Tl$7q+_A&HxtXtG<1Q%en-1ri}~83LKlaG1;V?ER_U>#?s_x;@Q)Ow}pil4z+%I}2tr1q!(6s)!SNqGDI4Ay=;c=NvFPs02CpzZU!N`DdF zB>>?)yFhry^>Q2v7lO6Zgg*)Icy?Al5UhQMvrJG4{DbhCeP0OHz8FW%>nBX?BrFi# z%L{~;PX0-F-&>s&|3P@8|DEuDTv`PLYZnObW#dxXPr`dJ$GBGZC*iI7Nq8rvcW-=~ zzF}jOR$9PEqm}`|+HtD|!fXBC2(Q`igtv&lKzMH&bRYkn@a`j*{xjh%Got{6w{#&` zyWe*2SPu11!utq&(;XnZ1?{U}tFDT&1_*DmKy1H2cwv7>c#9VZFY0%~YyAh|E#*^d z#(xHDJ$@&=g#h85_y^%7{Z4o<|AX+>mcoA$-u}M`ZxldyZ~Zgj9sMg94$0^t>z z{Y7}uJmbG1ykFq};a%fP`-AXS0ED;hUkLBfj?W~!d+Adi_}>Yyr|&-quQu(!5nhii z_d<&xhZO#2uyzMPc$2xtKM8NrKM1eEpM*F3KNDViHu@*wm14dBB)qWyKzKPO|CR7s z|2^TY{MTS@l>zHN6W;eA#ZQl91{)p19G$at*2Jf&{y}(K|Bdi^s{UQDwjk<15Z)ty z5#9;L-w@uY|4Dc|{+95r`8UGb^v{*Lg*{|~~O@lV0pU+|ob;ji!5 z39@X5KC$L63zAJXy&v>-eqcU*M{lW0YVH34!W;chgjaWg@N)hagtzqX2yf|MgqQP^ z@bZ2VUfusK;cfm;gtz@C;q6!;yk^pWBE0+mmGG8B3Z-`W)B?^w2(R(q5#EVEg0*Rq zKL~IB?}S%h;i}#rgtrhNye5AT-uyoaulJvX*ZXe?Z^8c`;hlxDrKrPng>X5{m*uQa zAnHir0-?e-szNILSoKvz92pTNg8R{-3VzU3xKEaT}!zfU~EI5~dE|;NzA^ejXsDnZzk0MGE!GpyxCux8m0})4nTiU?` zsPJ$poB=9hiV>+~g><0;hmOpVA`ekf#pKFEA|zXah@!$hc0v)e$QvxoSqbW!J0e_u z3V$CGK}Q~>qmD38$0ZB#+FB5%nt}ABfMI?L5;3MuhANRDchD75g$iodpb{DGF$G&E zMdgSQ5fZp3i|9m0&6fe7SdPq>ArFyJ2Ssr8dW9-9Lzvf z0mhfI01ayy=yECQC;=#FD8z~2-V_)!jNnFAsOUzlx~9OFB1=K&N;bNIin%UY=<(jB zVp}S(y+9z9jRoSJO(OIu8Gxpbxf3AYxY%w2wt)c9E@Tp+2D=O#Kt+}i&;XIWLBRr6 z_%Q=_n}J3p5q1F77Jy%XSp_sO162TmDzLy|axCB}C&;+#1T>$42xp&EZAF|SqbmUK z3__QK&}9td$1vh$_IY9fxP*e&dx~olqL0#%ZZd)iUEzdi9^J&oT$f>5#F(orOcRh^ zBw)@G7809VDDb{j1RWs?C^0UeKr!|{8z6@G*T921&?yz+rx^HYAiYay^job6v}}PY z>np0&T`}gA>}0SMdU+?P2#}k=88GSjBC$e%grG%6jtyfQ$l zp8%CeHkvn2AgW8j`UHqR2+<|N-#5qIprQ|m5dk8|WjoYEIqoSPXLudOXTVX*z$Q`{ zpN=YLqp#5y;Pb^g++7eloCQYtAtzXpQNRT=+#BCOU|{HVa$|HdP9j1dkt@)`PBgkB zZl6V@&=r7+Gf#*t7NO2CFt;Sw0S4|K8)&(r_0GB}b08&D+yDXBO~#bTkm(Fq;&nnG z19gUqX%RN`v2ag7cm)eQstmhpC(=e4QUGcK==eQ0rdovBBCppW088b-tL3N>27Zi< z>mpzPXSam~y_|%4LdIv-VrxOS{8$7HDKtrjEF;ujmtfxw1&7eBRgY5PAp2z4J{Few44E#3VS5PcD5x3+<|ZB6N5(xC;YJzwSqAf!eA$QsHu@GB2k3U`h7JWUyfnG-sTg~Y-TV~rxaL*q zgl=USY6OJO+=;Cbp*V~_=qxxus89?-SAj4$*;w;3+*2WLkm|s!BdD{G!!q0xA?`jE zFr??xr4ZOGcozc~;E8|An7;uy*J?WY3OIHsPB z3X~F0laDI-DYOHk8#n>aKEZjD+EIUvBMXjyp|2HjD5kKd?8c*Z0vo zVPFJp_2p(NrjdoY3h+;$AWX-0u&@hIP>!`v#f^w@W31+80xE`%9w*?R0zp_RW|xz~ zi5;MoY;;BVy*6p{ns9=;9Gt+oFpb8v$fQ6P`(i$}S`J@yoS-g5UOW!89dNhFm~uIC z3;P7L035->2AboCq*w_EQz=FjiIBMj)Dbc2xX=@b>>j5BV;hkBMaY9fR3!m(ZJvS! zTBB9wm}=HdO+R!Ig~%je_dmt;1M30hNQQI><^U@pV_HPmQ@F0@@}4wph1T8REn2z@G>dD?QtDcOa&RWg+2_O zg|>?Eb!9jy3)@1+h{^kE#b_}LT`93U#6WJ7!h?nI7zSdW40)1`ZUkL!0AXs#=;H*W zUMg{N6)~BPeFY3hAYZSLAtOX%3KB%Q2-5|^%|DjnvUgp4!p5GE)hH~3bhCj2=>k=* zpi}SrakmL* zU-@kvI(m{mGz9ciLy^39LzOJa3kL2?FB0xcTqDE?jyLbThRO%sh1M(F7UDejVCz7) z!X-Dfs7DI{b}gMB2QE+C7h$p`H*m`!g>szc37owT<}?MhgZ#AQ2XYv2`egjDq^*OE z5wlQNb`b&zJpjz^m7Qy$V(JJe+gn5n;Wf84*k9H*ogt(4$;8MlU}wpK$_Bi1D;3+r z`XVKm?O;Q$3Y!Oo*hJ^^tEq%AHdeg)<{1W1tA%QgAv;;`dxe;CDKbq6b1+BL18A1; z2@v<)?eAdA!0YG=C34ixI_!M{u3wDFC&2K_fP3%lei^n)f=PXi+{J#gf`Z=r95+P9 z_0X|T_MY>6k7IfWh2heahg%M zej!kL$24p}CQ;#_dV}sm1O@COLRQja%W&~pm!1a`vQ{OgcDh}9-q59u_sW*!Rn>I! zatswueyy4bS;lDcig)C7b+mf*T#7hcJ#*w-z;UBhX`g5TXE$^mbLf5ac0)63^hW$? zgm-9tv?SvRx5G5g{X&E{T50lOa#29%LEPcVvjt`37)9-)R%XQ(;kUR%^QQcxD-vH^ zaENuCc~s-UJ}0zi>H1!Z>*7V6k54W>z2;a-(Cv)3nvDs4g~a(?yOY%{Lh9%z?1GX4 zO?-+VXJ37oa7ARXdFg8fn84F3R@e#aE76a|ah>e3F#aoSK4#PPg!+dmN0-N358M*t ztkBV}R$9S-Bj|fF7}F-eIc2mwS&=*>IiSDNvh2#O9>I?f5A%*#hSk{Y*&(PdMfPR33S$vJn$*Lh$AD3q@n=D+z zwAfZ*FUYCZOynKqtGMCK49e0UxxYM~kW$YJy3kKDT9i5X6+!ZykjCU{6Sls|iD-G1 zpp_)ZsXFYulWjAcFygnrEJfHIOk6clV^AE<(@iL4WE8ll`Y9bP54z&vP(^o_fIGEP zFC@-trd+yz=eX|XHut09c7FO)^*hTxYsLfuaauEcnB$S8C-#Pg*28I=vXmIpt=R@A z38x7@DGt?|so|gC#Wr}m_G4e091v>Wc=rz?{e$y~#wS?k+!IQ?Ka@K1gWu3z8zrPI zt5UK;4HD*{EooibCoDsJpP9aO>w&}6Bl-c$ITkVz8c?njB1?ql_R=p53 z;m~l6#9EHg5kG^k`W?FTa=|fX$!vUypV8469w80M#o8(PRVw*RT$)t>Bz!fgMAF7j z9!sj(;#wLq2zlXu(QewYl-2Wf>R3VsszbQ6qLfpKM-wj`iQbuLqO$6m&P@Y7v^Tei zX#+!)coRZTBVO7uvkcdAazlo=>Mc~?rSmOfa9GF-{fOHz-7aYvG(|=j6c#T}xQ}uz zbMQ$`=24cnVVN_=^NgNk4NEEeiokewyQ`$H)z6-uY*05}9|26?qogXM6aw1K=g zCXU#}au2mly7+Ije!F87m{uXRF)NNtxYPw-n#s}jCvds5(9;gDL3Ife0+j+#yVB5| zVqFRV8O0rzT;2T6%osfEj035C|wSgmb& zkrve1Y&(NX=9V@5*4p{8{Fn)dYN<)PhJem3WO7ul40SBsM$8Mah0vqhr@$XX`CXig zL?)veJuX3w!SpqHLR^<`;vnj`F;rh?Dm32(A58ufqo~|X)o&@sZ{2-c<5G6JM%Tuh zn%-o^W)p-RUpLP$Zd~!MJ&43AIB?wlg?g>D{qCh#s$TZ`Ix^uM3nRZZ^%l{aK5-Ds zQ^07~bFFB1Rx2W(lA~?eu2v(1k&Le1&ytB!3n^}ug9Z3)mHOd**?isI-46=y%18xz zZdP%+)utA$$Tg)LvT00|9)+F!NNSv~ZM z7g=MPtYDMtho&;i6%2O;V1WeK zk}e10acYM}iUYZkSJuPqst(8&!bi>-yq!!A_<#QkGW7=x)WowXz z*!yNw=54=exxlojq|b6lPx}>lzm-~vLRXUep_`x%-4?mS;S>>kovouvvsge)aa8LN zy845j;*uM>u~GJH{RZ8GtT?D<(@^`Osr~o7I;qgU8%OR zfP=~8SoJarB>%)#@Df|P-7O|TZ%8^CvMnL)ge^>cTZ)kQjE(dxbySy<_pftqQ)a;g zexfbw;y_tyRbpNhwv8WT?_?(t8JXFaBQ{uMsW;MG%mTrf(Dp6rH<1FXAR@{71&)DN>6NFK)4<;rSv^mkCPv-oki+Gbr`fzFPW4@E9S7A z4Q+IDCzRf?uT$Y<^6L@}=Za-HAK^=A(I`g?hr4qV&NfZ6>aAsM%EyP=jcN7h&}R_! zChAj@Yu=2Li^hknUqhCbUBaoa`L1$8%rpGH2OSi+N3|~7<&pl1=GHNY`u*?lB}RVP z8!J22AH?#scQb{Wnd3e^NY`Oxy};(X1Mr%cFS`+$7gWSmJ{t!m)gI&N8${!3hu}L8 zwqk-(xWrvUVEBDPo;@*3eO8ZP#=B42UVl+s+|||#je`emn-^$U3tUQ@Crj|mam``j zog=nekX9CB3dtg8li+2xVN!@%mE74t0(wktXvJ`@vGaQ!4sNFFYh0y%Qa>h#uYy5L ziljW_wad@}Dc2rE+~ZsNZ>h)ahG^uxfSXx5AXnt?#Tpq+h`S<0A`{_9TJ|aT6jsbn2_Xd1V3yMyWGI)G z-4;^A4{LTf?#Y{cQnPA>P;(lVL{eap4DG-2!-agv06g*Z=?EGh1#`}t12Nn`Z z+0`Ej0^fXoO(OKS9M_9OY(Kdm$pjHXg>me-i@VG&IC3=SxHJ=ZI1ORh4)=R?XJ><3 zvj@bd3*eYpyR3xR`BHF@T#(v@NUmAFktHy{j9C0p5MBx~{^+K{$fD8OvxLwD0wN5_ zUst2P?-T8U2pTshh^~QUfA7LeAs!+8XrUl=2$4(`gi2vnNDhvDYF8OMQgkR51YZ#X zAz9^MK)jf)!yj4dfTMK<^&HYZkz89~OywsJAvPlso*}gF~w?8P9_Zvx)0*G=-e8A~-e+ z?#Dn+qB)Vaw}1#RBARCh9A|8^6{%T~5=_vG>*4wci>(MxUY&I&&;L!XVkRsBM4FEu z;s;P+%QCrJxAj7qkPXet6X%d|w5t})-4bk(n;1IMZfrM)4a(#D(yEq9kLyTbKvp=3 zPmNvR(d&}DU3kiIaUZ3tu@Nud@yn=5()c4Nno@O`4wwZVEvSXkvtSk3i z0FwW)5=hM6(;Vylb@1MgiF@=+*gQ-Mdh6pd?FN2cgPH@mb`koSwzVStNHIL92Da0l z?aD@IYbb_f@ZL^@P=p_$`N7VsLpqvWujPi|&R5;T-cpUzLPUDNK+ zxHU}BFEJ>F!0z9!_LiXXd2oGABtHEhLCy;oJBCvF?QOYJq!LIbIYc-o<;xvTA~&n&v;raMgo z9|gNf6(gEWy{WKOB8YlAXBYyH&&S@MgU!JT5PDVdA!Y8Y9_><8jdAeYutiJ-Y+)oODpDQpS!L1`MMD_8Uv$M!1 z0lyCNPS+JIrNT>ih>Z+Hdcc*{(TI2e7qbbU(!lN#IDoe`vmQr+1h-c$XUcff6MeSS znxLU9BX($(lsnB9gi&3f);a!2xUT$3x#4hN99*V+yCP_~3a1~;q=lf5bO;7luDBetuv8R)6C8Q@B21cgVBJh>LSD zZ`qv@)kyGHo;Tz9m`h~KFz0wIXCgiFa1FybkKn?c#ceEPba}Q=+M$}4AeF_>KOTYh1@#xp8(Ql2TzdnDeBhmhTGs12tYQFe6jRpm^ zM0koLAQ{iSL_C=bWAM34d8%yiADQFkf~(JuyWI6)-1C(vJJE`RVAj3-6;+QMB*xdq8w$ZM*vtuBRT z3w47MCr6dmAXTZnkh!bCjm@6`_eJvGngdre#t23)mfO5o;rhaAs?XR}hLNxr z!l}SC%Q?2)$yhx51-6+DCp}dn#eRDZQX~MYpTX*Ej)sV%CE;i@;&h}@KOTZz`#D-Q z9DqLq>s|r!tc2v?yFhC#hZWhJ#SKx9G{GvA3815@)y2`7=B)q1SuBhX{lZ!Qj-$hv z&=PSpfYq{8j#Bpc^P9dZUEp0Eqo^UaB8j6+1FO;EgD!BGB~uYC6Old~W$6jLxch7n zM~574{VrTZJ~an_*^A?7k{~YTFMDsYH!Xs-g}=P{7Ni~mW9Gl?owx3DzwxrS3g(uX zwWm7VQwVcmMzZ_+QO#^@7s&P z>{Vab`wuetE$rMD_xyvr(V1a5jkyXBCYo@R7*i^AFyKQ^B!InJ5|mBA#OaAabOi4t z(-sKUmN5BuK*fmoi;P5j5dHK!_R*%qjcX?~yTESm7W(jH5=4*8)uR9f;N;7$Tm$-> zg(NFb12%!^k+>Jy!9A1&v`TFOoU5@pLH(Qyc!)0P zjXo_Iz{EzG++G31B%5m@UUzBs(O1Ae>- ztRg)z)Dq#&eAajZ_?C(1!SUMC(F3ceuS!px>q1A^esE#c#3d<|`aNr$Np!N#j;2ZjU@Ftw+7r@%Gq)-71 zc`E*T|K`X?$pDJiJQHQ0K3mw5CT;H~&^a1X@I@m?w-3aSvH7lA>Pw^42PfY*sU_>y zym_=Y6`;yC`y$&SnU(X?cCJgRC)g^b9Gy9^9!0~bd8XfWlR4l9V z5}#^fk~(O#O)p#is3k56k>G2YHqtmGsL{m5BtmTAeX5G$bY-Li0t_cJv%l97Sz6k!}*O|dQl#zTSLof> z*e*vb=8h`N%hcybe)%z~xT9W>+-$?WR5H^rvK8RGYxlkH`!X}>^Deh@erEg5NknSz z;KENm%CVqNd+|?F9Dic~j3rkpUYcPC%nJh*In_CKJY7s7BFFSqb zfcC1LpXO%uvk7`G`PvSJ&N)g(z5>S_y-Abe%HWdaH`5IB0?q_qpu`{h^t#BzPsB={ zA5ZTtG;kMcuZrOz3v?a0-$hqr-SFBgQwD36ovzBeVF46wIpgnhl#Sd7MrUW8I&-wi zo4SN!kO@>F#%G97;hd+j5}QMx{<>mXTH%&;VaA~yrDh2vB65^dpPX{YQCnjcpF2={ z?MS4z-Q@O1=flhG6We(1A@vCd%3Q9Oq&{7=d2FO6^6|UpC6o`>n5{9JbLDKf@*-Wx z>HRtR%bZVAuii$gSSHBtJ1O`aw@$p9|8>A6Pc^{46{h4OE_T9MR+1qK>cTH%9&u-e zgF?;O>L*?{sAW8#HQgD{=)TyEMX83v)x|7bwU?@C-8p>N);`>_7h7$<${uZ)w`&i2 z9{#vbemdjXRk=>o_z8w%v^qx=8T}Kmvo+B@o_cK+Sm8)Sh!fs!a9e;6b9SOU)7Y^)Sl93M=~sj${RVD0)C zs<^7BLI2R&d0Qv!aOz{o8QBl(AtY&!6zqH`g3<~p3Jq=}@1~#KU%XW^>$*3Qg}SpZ z*twNQT=z`ksIUpWdgi!RCdDzy;-<=B{O0F7lzkj&y(W$M9=pz;wt3>Ld}YAh&a}!t zY`YHbNKEak>JuOMTt?Oj^|qQS*9i$<7T0KeA&$F=imCnk~NwW zh%QPFcV(RM#;1FCF>%&E8U_oMn;KEA8%91CY)Fn6dbw=HQSh!a$M(+eY}xkg<&|6K zx6WQua(u?(jy3Q4ZOyxD8zsNG9M;;m_S?yguxoCFHBl>H2Ss+T{LCz!{it^B!)tTQ zV)k$AK*Tev1?l9ppx)uH0(FwINHNfz`$Pdf+fr8b&f`*rs@5P|up%FfjcNu)o&<`Z z4?zgb2M_{M)25o60LE)Xfp@J}x^P0a)W(^UxvA#1?}>W^rAjS$bo%}i=Y2er#Kjt2 zWC0~pi~$Dvsa=vBKSwxY>qT$NBNVIYo{QhG`3W(jX@x;!u`J@%80aJOPMh^k*X>GQ zK}drujgs&1l;~d%KIwO@Y$%ry1R|~PbOm$sw>W%VuaZ`NX1i6&yd1lc0;F>3h~>g) zY%Bq4)GBiK-dlb+axPBY@m0HVQhAZzU5MEZC;q6mq061Cdh|lNn!ZUcGCVGC!?r*j za{B&!x!%LGL!@%BZsBhzGar~cQtJzJf$ z+D!YM3on<24Gd@woE4;3Uygbc9;Z33;cF$mTu@MCV7TOJyZ2sjkqJzOQaQsox@wK0)R<>&Rq}6VnFF3Hf(qL(~^U@t-r|2q7 z|4MN&SSPTg?^VUN@d4>F^pw5wo_rUgjbx?f;nTKWIUZ#>7rc&Q;(!=%r)`2iIqa~9 zX$Lg&J;k}?L*vEW59=alSqe9l)D(BnO=Fbvu3TSMQlInCX_4OX{cTMRc+2N!b+gd@ z&b3=lYTYn4Iy!WZ4hhU{Ihv%5_fQKP=rW4B;ehLzln+PhtVL=q)?Iqq{9vuC zt~Rz?-W_$c4QhK-(LWR#cR-SP#Dg%SSKQ|yy1nm|hvwD5`R|G@-hZDw?KAAbo18le zTdb9DW<_vmJJf#Mh zy0#rvQ}s2w{l-vXl}}Q^AzSnH?zYHtmggF$Ca$@5%I4waSNl%)I>$xapAkA*{IQOg zWRVqN`dEERaWj|sI_crP-jQn`&)nlBYw|L#?XXy%Jf_v?`+GYY?%9n$p+wFM4^nZq zsL0%NfE;3&f;{gxJwiJ*y|%%0*kk$1h_$o#xAtv0zVHxvZPLj&?+vSh^2m82qv*HS4m%o8C!4)^))%DE*R^4D`_>UJP#L!gHJEqT`RdeHdTXrO zU;ciR`gZ%h{tuN`4Q$*?Q+3*p9QstdDBa`W!~UE8k=^UWH>L+&J7bf%%5PWdn%C~T zRzEa)eoY(RNN=cAuy`7l6`_SJaQc#+2tW&Q_(Gl$Lx&J7byU3!OBL(PiBTpciQ{Iu9qV_8(%IyaL`gXoM;(fyQ|nFwcNSr z)spK4Z{MoBU+uWp;FEVTD@ASQjGQ;h1NZ-UCE zDJpUBSKIF!hUFOewD-FpB5k6CWCz zJy=tI!vyYntU4!v*!p;L^9-Da>6`xbSJ{hHa%1CwAMRC@MDD98* zR2>=sF(P=i@yJ$$ym;M88#P@r?qY7XlNn}f3BHPkx@qSfbc=yEz1hU*JmZIj&RbVh zyPS*3G=EiWUfgH)ihd&HDy6uyLv(edu=Sp4>T#j&4Y#6kn!VmZ@TRj})=-_UX^Sqg ziQcxYb3KRHj%vTLz4c~w=4M(^oztW4B)HY7#{*0yCkBtz4O$lZ4-bMD`yVQ1&wH7zfkSFj$Zdl#s>Gr@n-oSC`vhvc6QR+5v8(W& zT3oAw9^pV1^TDoD+e_z8EyEZLhX-?@Sg<(mdSsr<<98}Oktlb4@J&**ed=&8ZEtWa z*1g`pHA{U@T#(tS@DpDjCFnasU-1(w3|D)AI<vhJQ}N97f1oRbwV0>Z0JM?fQPvI!zF ze7bIVnH9V*^VTjZd;i&?TS*^C@s_@dfyU8GoV!g(eADC33L|u!F(1dL*IB!~4K&1l z$RaMoG_A6vZ|Ec{7(b38FD-?eH0Y`rg zzlNFpKQ;P)pBgp&Q;m{xzJ*^ezOeije!Uo%BQd=Gvl@Lm|2FC|;FxRudBnWN4Nrl> zud6cU;a5nFMop^GrjA+H_5TdNqJD&57ha#`<02)~+6gkN7HGRF0y2Db=)gkL4pr?k}~38Y44*0=TL;n(=@YV@i8PvKXI zT#e2$I>?w%qnB|;l`p=l(aG@ZkZdCS`oVBRZZ?{LvvGvNuXb`ZYX5g?wD8)eCsVvl z7n*)kqZ8p*dxQ4cN;?DExZdn4Zx2Jk$AVv07`OOLdXY zF7oDO7b|}WzY5z*{~CT3I6!JN8B(J;^6=}r?`l*Yetj+aDg1i$Pc=F$SEC-ix_=G7 zYM}lh{CY#jp27Gj{QCSaYP9N`8eK(Rd=~SuQpfYB@T(T%-_)qry2Z<&@GIe0HOhh1 zXar(1{MzxW8a?|j;nxrtAx9p56%oC@tI^1RP@~EJ9)7i`|J(2@@2_gqz##FT)#zII zf2z@($?)sl|5T$Yf2&6SDg1ipPcQ8_Wwor_4-e0)csrdRq{VkqdeS1_;uy3nySB7 zqkj#*R{amvX!SQW+NNbRsYb8=vl@K~snMoi)adA+YSi~9H7fZ3FZ_COLXDdKP@`?% z)aY*7cQuOr$MEZh2{jr;19nfU(TKlOqyE3B(VG8(8vQ>Je)aiDjXKEHX!3udMi2g- z8a*f=YX&-eMrIPLCe-NJ2{r2Q->T7z|D;9-C)DVWT#cH_eo~|7{;Ecye_u#!chj?z z|5T%{f2T%K-@>mOq~Fx&?nyN|3wz%2n;Ol9)Ts40HM;w|8uj|FM!o(&s8NnQ{F=tZ zA7%m_v(N|95jP$|jtWR+0?Bls$oRl^7Ir-wI!%P0%L1KbIa>t>zBFRa-o?aAG3x~f zXD4B|im=;3faVTddWs2!$_y-&tGEEY4qL~@Z{2{6WnfmYQ5{gSorwq%VL9VWfFn7$ zT?FK^aD{AKmKcfB!CpHKY^7sX2+^;eqD`rYYzh8^2$#viMoG}0kE7j$6n7h76B~ob zz{FCqYnTWX3PGJl;V}tk>G*sq5JSa;Fpvt_a32BgxBw~x;>+lA##ku8Ws3nG3mYy( zdx9uz7{X14ULitRUO;)tP)nHTU$fr*h|){77FguoseZoe4k(t*ndacL}UBopm@ z0g17|)r$#dVE8@kBO!E@LJ`6T1TsO~UJ!R`1MUb7|8Wy8TmpY`9@1L)BW&CrN#S}L zFiQlpWD=xw@*Ng2wgiZiqWz@M!$ytoli>0g&~pR$0w6;S#IPt;A~>;+coQVG(gP0OVq&pOFf1#5^iC zRSaZX8BgF6;nMvKdGh04rFOBXr6hC~GPs-K7zsG-aCP2nmklfcQ$b+_GH~j}vMcP~fqs zScW@9gKow^qwc8;FrF?ih(bNadNJ`fn*@blU&0jL&=uY@6udkY-hkDwU<$9q6JNjrn%vQk`oP&TbUJNbIn}itBy~%O=LEp2RbVPe z9)yv#uM#gX@e~jHSyJ2(RpAAVd{YE9d$A!R)I3kh20FJwjDHtfA!K2jOiME(0~02$}%75JW?U zJBo!BF!ASE#2YM9w*Uffc-4y(0iBY`Jl8F{co@WOrJ=~#@OUZCcm}aqOzdKuovKM5 zkdgYta!0%y>Oo21*<$hw0eMJ9JV(Rt0nw^D$Vv$83a-?%@%v~%_&jjGlr+pB-^AR>7eZ>LaL_N+-2J@kIu1tL*eR0ff2I zh%bfYArYxdd__RTetLR1M2cQ70uHh9=a|GB;+DqM#~I{%64FNx(rsba9X9l|N&S!@Ws`17h?j);gDhY@tWBSZm(s|eJc-9y zxOjR8fr(g51@=pEWs(aGGU82$p=Nd6kPwd0(1dMZGOO#c7O4qh)pXo;SQ|kAFJqBY z4_(2W#TScl1#H~eDMZK$J`$5XuAY6*7_S}%p*AsTXd7_{4>x?5QcA~XI}vZvNK^gr z`#>Q00%#<{&d(%>1y`XSZx2Lwg(Qe~_P{zW(DC~v*d{v=EKBlDr4rB{w}y@&YT+JA$j`;irlrIV5wQ~_ z-I0=@?DPv-HMGL*wU|7@>>A4ID=(CnXT3K98!ITMS?MGlY$pUKMUZPI6oPD2Hr$Dh zJ2@^Pw9=3FilL`;`i_iPE5j|=g?P#)w_hTzs02bK=c5?+JB7q%7zE^qbF4^rWu&ML zq&9&IhmF#QAqtm)vn7Ow!p1Ivi$ILtdI`3bL4+SBaTekCQn6KWpuP+l#|Eg2+M8s( zJv7o~F|fW8oK43+7Bu$LNX@YBY$^sD3LQc00IV9y3-{4UP!RMA49{WUN~nZO65>4( z`8BKhK1ga57}bHqCKeG2^j?CBv@m?UY(QBD-_!-BNl4CiUoq|rmT`SyD*GUYyWyhq%T&A@y$qpXn;pELSyg17bw z(Od6fnuJfFG;|w-pxo4i?1tM=F==$DJASS~Lez{SwZL$|GcZy@e8Rc{vC<|-{Xbx7p4f59b~z6dZT5Zh^_+X6_dzq$=0)rhdZp-&I7szb7fz21N)9rU3Qp9{%P z*rZw*ek#C52wD;!vB^(lq$bGqihx_~xOXo}eG+2cyC;Xz z5l*5_LdMnFPGTo@oLD4!sW5=K!636wkh-bzu6MQoBa8>9vT%Kjz6Zk2E_R>(Lt-!e z#vtwG6DHZmj=bpQ)ea`HNdiTU7q3*O7>h7d)&Zl7pbjo!fj-c=15~G>1PuHc@$yzS zWXC^fJVa~K5sg%G!6o83(cF02GXmuHsbouUVmTYPiFQ*Z3@4G1?lDPCP)}A21klc} z7Zc3C5}PIXLLm^&C^TVXazO~W5@yvAn`ro4GR2jRzbm*n{RLq$8OIeNBQg<(ge_yX z#4}P{Ivdk+yg+J#*(wI|LHr3OB<}kvx`^#eVjG<(781@<@#Xg@#*9L6oP(*M6YIqt zOHD973qT_&<{%T#xY%#n5}~N;(|_voHYC(dZ$mZ&{X_x$k~dR6B#^fHBOrD}Ck+Da**SWOtOhWn}8S zt^>xNbG%e5JkwB=yYw6t3+B0ilwu`dk&6B-=2()Yb4&qU#i#pOifO@($Ywre$}nNS zDI?S=wAm!*`ti!3J^3DiodHH}n|4HYF`ILYgD&hK&B!w?fM9Bzy~caeva=C&F8+OQ zor-ZzjO4G6_O0GOGptF`+%q~W@N~$TfC5DG@fQrN+&{Z$YfX2) zXvKMImH0x*?dsSrfy2vbmx3m7PbqR#o}cn*$y==C-iS)?&3AE#O7t@{EDT z(mV%3c(^L7?v0B^R9<$f=K8z@*TM}gPn!u8jI+a`wRP<+Y5_DH50_pBxM;>#>I`3< z?`3bLzfjO^crbR0af+giRR~=WbJ^!segJ*5QZ^;#DJ^+EphFRLVacax&G_O&@q1$1`Kg5o zmy1#hLW6Y-6fN`0b#Bu|=TkLYH$p;|p0s^tX6Ws(V_I>+8+k-+OGZ)VqQ3VAYUMi$ zJ{oGj@A6RcCKn!6kL$RXVrt`O?uNDk??x*52Ol5G3)#_qFF$MR#K~SLY8zsaz!&m}|PGz{^zMY`R;j8p<*@5IF24UbG8~{KTV}k3#do{W^?~ zX|B!+LJt{5*JdcVt;-2V9aUXo;jBBZjk3=E5{6CdOSUY7?@}lzwpkL$TslXFTFBxm zRf^E&TXcvKrg~bnwHPaE8QyoDgYH6MN@H*oZVt%d=rlT8l~Z*q_Ss;wcxJQ%-jz{rpFHYl8Q@c|Tc!x4xQcr94qMbmqjsrOvYlXaK;A;Bqh`M~ z)>aa>d%a+x*8R2s%N^rk1ZZ5HQUSk7M8R9N=Q%wN)gf`=fLXH#rkGv14mL%jF(zfYE(dT)a#Y@^=rZ%dQ^ZDcEAa*I zx?(Vgw8}0^^$f$=B)BRwQVm#E8&lzC8Ajf~^H3I0k+as;VprH9H995DM!MNRnK=_* zBfkAUDSJF)QJYR>q=u7?gtvRG$V552S9#kiCO?9GR7)x%&#is4Yn@-BMpq;1@%R?y zMRdm%c7e{;9qV>)EZ5U0>^0rSlw>9FBQ!3EoivhYWv5VV^nyUH@~}8P#4F;=W1!WF zUUU~dCMIpAHtEfQXZYnqe)n$U%(i;6XL_<`w=Bh2>rIMAAW=W4*4f{EZdS0MSdjzX z+`1l24~^6BlRw}S7z6}G);+$V>&f; zPL2yHCf_ONX4{OSU2h0WOcCseQ1Nt=b>%vP4O-76sew@O!_%)J`M2H_T3{7c>8s-!HLgoX^buhx+ytufLurfEoQe#$ z+%R0eT@Ptach*X4i7|oC zxj8jPP^~2{c9{`hh4&XZrq|Y{n62l$S_VPS3vJHkYl;Y|ZyQwe^)Rz`I}kT_6;Iin zk5tyrN%qx8snqf=c$HJ*cQ$uI}JW3v~kTEe1g`+yggQt z-8QfrN;j>OhKkma|)2<40%*l;Q>~!&;I$*d&F>j91 zT%{5Q+TaFy^lnP9l;`@Ky_lX3MMnKZsF-a2RC-D*WEmNlFnWq?A;K_opGJZ8ab}8l zAa5Q$Swn5FP2i=HGbxoOXd5P6jSe?w@q9!n;kBunjTXrb3ZnCvfC62w+GJw}X8?rj z#w5F|rT7Befi_rhn?htQ+KY}fOge{VjC1UvS(*7M+~kYCBfR--HCJpAx{Tv9Ea3C> zuq;q5nwq*?l;tl>X;w?MA!3$Gc{HtAQvhrnh;hqD*lCeKDJI3^|1IyGI>Hk_ZovZp1`7)~zPV;YFwkae_$ zKijDhQ}GP#oOJmFW0wE;`Mi}d%s35YS>7<6j*bq@Xs4%m^&-vK&W2LNTp=n5NL@Kn z?FDmj>tu&WE&RY_1Ga0WTXHxpH4KD^VV*k!WeBz;+U2UMwSOE*u9X~G0mG~qK_BYT zEQh787(*}5Pg(hivp<&)%ZG>Y_pcDA_*pyIj3Cx2!L3G8m~HMwMX0%yRxXvJBSkoi zQlg+yaY?*gJ*tVhfSFqA>X_8fF_cvjmnuG8DS$7Q9I`92h6`nc94e!*#}VlZ z>)3rBX;KRZM_SP%>_rUM6>aE+ekdC$!teyg6-eEG@xa0_+-dn7JrL3qyx>_&tw8AJOTCGS!~LZ<|y)G*LEy&%CnpO}ZvPWDH<;`v_vTXwv-44h8dIM085`HK^Gw2weoqlfTSI}!w> zxQ!&w1pPnv!nFBZCpv$n6m9->hEhyQEIl=#Hu*3;z^XRo;Z5{=D%#7MH;205!xxl( zmp2%L4!T#qAa+SQljAILzoeg1sg!I*eiW1yD^kw1dB z1X5#qQwW8Nv#nEnk^FA(r2HKaJ4TWF#UefcoPVsfV zo3}COvpDPhwz~zTK>`_vA?58kdAD%i;wec8Zx-sXa&Ybtd`25@k6K^Ju6@(N6wen% zC)8Y&)etkps679^6DbN{8^Vn48CrJ|8bw#q+*f6GohX3b5xgh5_o_*Y6{Wnoh&uL(^kjp$ zkk<)t3p&bE%3Cb7S=@%o+KPyodd5x69WNoV$slKXZ?eZ2&j-wQ8bb^tdrMBj&GM5M zvUsj;JR1pjK%WLmP$y3I4|HWrg#>B7`y+!;Wh%mFjAzSuFoMRZ#)LBRt)A`+ol+aL zn2vhU9I7TmdDHD*`-gh5Lr3?8+K#~A?F-cl4Ef+3GR+7+=KsKm9rAg0h;8kPF9!W? zpwW1I2n#K38RB^+ap3d&Nm7)TWEsjlImdhbbWpOUWOk3YY;< zWgze=Oa^|3{>|}gy25gh2KR_yz6RxyJ%l2 z8GtJ$xhlDF-0~uoAofY+KuN`XI@2v?LD78}nAEDw;;8aDkQdc}O1fcs%i)@VLsMzd+9RCES8#1+w018%V186k*^qMk z;7s!nw{pZ``{l|(aNjvm{&R+>(xaoiqgRrjXw|~yY*jEEe0dO`zq~1hr*FiE2w%W> z=#wB9I7MvysXuxOY*-aa`_iKP)DD|xnC@+|1|(iqoV!Zi^WfY`9tNpV_!M@eavpJeT$vvU zRZBc~k0|uANdRnhz_Fv(*u|&VM*^c-I6c>Drj%`WX%v%#l1rw~R)+^NDx z@cGY*AF#>7*PqK?pBP^Af%y92<&n_`BfAY>WxwK@@)3Hyoby(LiTbPGmL*%Wke#<* zn2QlcRIcV28`UZ!-jR`>$jE#4Nj}JAM7AS&-A5;mjrls66frjid_Ezq>%{nanaIBMncs`9k4aSqgDHk{6#o;Est?WhibpyoGg z)1sF~KT&1Hcp9$KZVfHPz^5eDyI7<2*ezfn)Oh7+0|;FjLO+mem;?!2gt2%-k&tVD z3{eFAA+(=s#O6*<;u^+qA1_4c(-68b>vhIBK~^ghZjT1$4Fx5_RisZ3lV3c$_OAEx zniqyInlx9PxVCENHFoLY*PjnRD?hbXkpXw3ZLl0aK@Q|-^l~60s^^BVz4F%nG{O}2 z;p8oD*h6mk%nxDHKA5&4nCB2Pq;D4}Bp9i^Te#q|zFUHv6|+Z;pCszY5+TUTQvFDU zZCXF`BMZw-*!gbb5$9>Fk5S~6Q`y5C$9G3@THXbxX8XKgf6<;*>b zYhu*O#FY;>6iNNOrzSYgO@JQIfpeb@F1TE9=TqU6&8tp-a9aFM&l(Z8f7Eb)v+Jgh zZi|POM8|M0zdL;RrPhiuPcoSoVoko8j3c^>$zhaP3a%@%uURm_DP`n#cX7&S>T80b6gYYTl?0x z`}cpC&f*^a_{rwsX2)}1Y|m}*M!)NNvTgj@&QI5;CroE@yH_AqD{Lt~GJ16FrVTrW z{Q_2&9ebz7hpP#sR-j(fl_itC1ZhvruGoeOzNS}PY+q(TuG+ewJRkH$R%~zg% zZsRmHt}dOs{G9r(CvT&%A6_o~@M^_}m#v7VJHO}s@%DNex9wQs&DIZbcM{iZ`a>sa zR9Bo>w1E5U+-BQzUpilJ+x7A7_{W_^Fu)jb6wE>l;r1FX$}@F%Bx|GSI;Ap{6bG>` z)9jO2{R0+q+Ub&W*5`35Y47ZSVlVemgU0Mm=?OuFo>E2&L*yKFP6rF#6gzvW znEID3IlZQEOQ1;vVM}O!y!4dqJl0m$A_&Gf4~`C!ErZ5WxIU zva7=UFCr+;Nq-j@Ni?pdCgXQJ0Tn@YA71RjKqaSDgC}nXFBi4DX!3O${HCN^w+ogM zX)g@42u(#yN1VO@Y|z_f#N}&`ud6L;QI8hDTU1vh4LGYVXT8x%2z0}$1RW~f*Ti#b z@?T1tRVU)&bmHjK_AlS^DQf%2eF6kwCXkpD#>ZJxQ&ERM497Z#@CTCCw^vh^pH9(V zvhPyi*mNOh{H|uv^hfVkGK~>;_Ol$03mP&F+l&wZH9_QnX*U>6(@qdqVfNT_;Uxl> z`O^y%eYJW}xz0qmlft}1A06@f2{6M`=bu%q#!TZ2rWKgi!IGKD*)a>{G^^F89LTk4JUaJf4q^`+{Opm;01m+v-h<4CQG z#!7zhv+N*tl*G}^E$G2G$+D8+h`wl2M{6WtrLQnAb})y9(z``WkHQXVkg5-X8A$e9U z!x2N8_tmP$$8+k&Hra)(?=Sk#+IDo>hno7w*GpGfBq&v?=0 z+N7KIg6OI_A9=S~B?#;?p)7d8XvD`~m#fhkJFImN^*zU2{yniMMcFSmo(InB6g6No zw~pJ46m9zCI&I#)%uRz~Z(nXw@>GL2ku8Oivm=lio!7r}tUFD6bB}|o7K^T3@hn7e zA2n>>FLDHG=lwBm_ilw^@z$qXq;Ixr)i2ckq`m;(o^r*HKJXcwKPajh=ss~}$A15a zuj9A;(>kMcZvI|1Z`zg-AMA&|b5)p+J23jX@nLcP0>`_;cP1sbsF-KnzAv?FIO)}< z3ydUr_zR^DF}n!9Mtq+OR?)LQ+`@)WKj8-iemJ9i23&4Bh0|%-QbkrP2H)Sj|Egkt z+Ve04GAk)rbNpDUmC#|uea*&luF_eA3)a+0uPw;wH_3N#Kuv%I_Utl$K8DM8P6l{M)$gIr}4D6?(fmggYWfU6=iuwicZO?R~EI+ zoPU>~ONwoCSvSrQIMxSLlYJIyA`sxm=L_F&NyE;QDJ0duEz;xybVg}Wu1n8;b>F9Y zmOLHeQC)vQxN(V2_nEw!Is^0cgsZyB>4eMu2wL{LLnDDj`O9?(h>MNTd87Ial~s>5 zU2hz#v%ZSn)t`s0GR}>uk_xuob!QTt%hh|FoD9O!&%`~N?qHlTJuT^pJ}&HvXY`FN z2L~U%w)@mR?J}HS^ktmbnrCxNiQxcR+(LFvII)U z@{9IWX(`SmB$-5%Wy}JCqIvzJdBpq1i?zEQ*4QcCEO;iKofby&rrb=1-Ea5S7~r_b za+lohO&G`0-h=T0Tp+3Cw;b!H$fu*n7TCqzARlU)K6TVR?c|pAC)UYKmNuH)uF9#d zjP5$DH7ISY<|+!|QAkJQV5eER^{!g)V~%I&`*viXb;qo8bW~E(;WNq|*XArasCc5c zxeb@OdwXSy%00s@M!;;d=2)LiY<{Um@o{#NiQy-z|JS=y6y}wfta?emHLv^wd6V_Y zSf7K~8#iidw)7&`Y&dbxesHbA=bL8nZQuFrolllPU;J|1k@@Ge2dU8foHSbIM? zHtLk@(2OP>@1;kll9CmZTT(8Cb1sIc6D$eg;B{-bXy8)SuC^euz)}E%h3~!3+oO(SW)iQPdyP#Ed5!6{u zZNmoZW2IKpi9WZFt?z!lv1o(e4Y{Ny+`Z9Q_+j>#M#f)>iBx=BsaL{Xw6BkYA4qGre>qhP~)0g zbnIIj+JnC`wAV1Q48)=yxO>S-`>_s?@y*|Wez<1a=&zFQ~685 z^SP(}o8Zm+Lo9-qhfUWi+5BL}nY~>v=m-7!*yzeV3y*G`wzu11iT?T;<1;S>8~B4) zZT&Kc-B{bYFcOqoH0Xcqo$7aZl&De|qXG1#?i{txjVrW~-Z~i~K00s6L1~1)bx{*{ z<=JZuE#_6p?JHGRPj4~ww>ql+j{2Vb$wF`{Jgmz4X~&xK7dC=2+wQ%^tHvX(AKNAP;6q{^d+TrEiLV$IsX!d!x^ZnCW zWK!TI-q+L%BcS8!U^b=cAzxr1t>s|boo!QtayBlrx=+_CEILc~$l{4FFgp}-1W@<9 zDS_VnB^%ckh6jAl8u_k>VPH24)``L{Fgq{wQ?wWDqS!6MB*1orNK7?+H3B@d0`X-+ z-SOYcAGIfloBX_hvjRex*Z4-SE_T+emNb*wUb=}#txd9i7w@^9b=0@l)gpW^wz&;k zi?wYzYBwhf=z%GqpyVw)l26Gk>7EtKtLzc)6Vd_6H9Kv6#|Bpz4*bxSlTD*kc)=m; zND+2PB_2=oOI)r+D5UguQx4rYub8MTNO03X!QB0+35Jhrcd03vHGG}C?!f%|poJ8Q z$>!^-vRx`)Jf~0{J`IWqxopphJ-3)7Ywc2-2U&05Esb&C#}4xUL+Sn>Qo>^$A8!?~ z+s*-!rG2&Zx5S|VH$l6b9{xCZp{~fh!K;&bv_*8alpXQqP;r0H;;&!>Z~2?v7=M3P zL^jw}@G+@ATMJZ*i&|Qy5cntqRmi|+!!)BkP05Nn8>g6kMrS5uQe&@H=X(a98tUu> z6$0oA+NCkKy{s;jHi-y;oA1hv0n0Pg?PCvw7Wbcm3$A~OVtUszF=PhbAn+AsMt}sp z?&=PJz~oKwey6kEaHYEC)wSh(Y9Ce4#sll%Taur-F?4#O@3Csr*62%nS9$w>75D9R z_xEp)Hqx0|NCLQLQPZj*r4mHyC_=6>_+4`dL5ZSM4@0hpHR?bB^b<9ZZ%~vIy~)X&-vqL`K`Zf zlebQ~O^9$#piQ~kL{DrOsP_45@KY`}{{w9jp^Zc$lK*s@WN?CRQYPr;_uA)#+nh2{ z`<$eklX_ECMO9TrO-)rD+U2!R`L3y<@l)_~f^JR*Kjm~&n@WZDX%o%QNxBIIKXv4_ z&q=xoxy{Mo=LFp}F*Y=Tnx7`dGfYfo%z%QQ#-^r|dUGQCX>JN-KW9SO&&l%VWc(9i zoN~!YgCysyS+pORb0P#f3&Nap=UC32Yh^umHe@)V1gNd8wXLnK-8@@6J6n6X-n9Ex z{-n$Grqe>Y)53*L6MEBSLT|dcxl8~~$Zt*pP7f&lx!Bu_!I(6hK1+Ok{QP|V{g*6V z>K_yo7#tk5Y#C%YgD3i*p^)K>2oHzipOKM~(NU1$jE;$kf%>1TSFehTgBa&(IpbUl zG0v608qQ6dHbDtc$Z-BhfbQ6_<5$M{9|=&1asHYBg({%?_U-#wavnHv0J5A=0`v#w z6bgk!MMb}Q&WehPNz8fjgPfudbNzVz@K+m2%3$;LhCY?|X^vabhKU$#wK{|VS zdTvjIK>Pdq@87=O)^c#k7p@5JA}$Tr=?piQ~_0!d(O`j70{-M3h2}Mze|@a zp5^RhC9i-k+hcp2n&9~t&*|A^ge{dNCtLN08@SMB8RY31d*#lKTBjuh`YmfE)wnx}T zij8SiJC-1?fbNoe&IhA>hdn)z=X?e(>bk>BGfSNNh=0`E4yu55nT0A@eXD@#jmayZ z4;ygfx}i`7RCnxK1ynHYncQ=}kyk)_)a0Hs=)329rZ(w0f17#qTLpC1^gO!>&$$LS z{doU(&v|sB0@@B$Kz|>pt1;M+L}>>)iQID< zMfi1Wd%A4d^^xJr1-s-G&^HTjR;1buDSz{vYUl+e4XVgNYM0Ao1$56h&pDvCmT0BB z5R`jPiP{;t=X9L#oW}*tW^&Kj@!fOU%PXLlf3AQY`O|YITR@(3Sr&J)0y+w8{MB=o z|Kd3hwUz$00tzmGJm(I`b7sjsXSbriX{o~FO`tdAIo}9>@|=3QxA~y@LE&t03sKqzW2~y_l z{qHNFz)^Vx)OA$fK@L`-Y{2bxTG! z?R=56^L&%-)Db>PC!lI{_nSMruH2Y$#WmA#(CFMhc~0Jh=S-1%PCW>D-Qjm^pcqB% ze7*9op3?%cM`FvTXYcsabAANOaeHlhb8OG=wQJuy^St+qChyfv-zuOR*xx)S|A*%s z1?ppRT{lzq{Ny?L-#w@EchBkkx1N*ouNBa4{FH2Dnhaki1Ck`rN)ogWh@eyak5ULixA=s$ycJC1@upoLmogq+{xz0>{n+d5}Y-;`3>M z79C8G;uoNRXervCj`m}tjTrDOD&dq6m&wL5S!j$0+KEM>h_IP7;6W?~%)o3AV%`K% z%ITD35n%@kpGC(;FwitQjO+uC5a24Lco9etN#)M7l!}KMp}8zzlNjwSMq(+bcosHZ zj1FYWMci^WCLY8lu(8`|K$-~1X5jLLxWh0gNr*p2hnj!*0x6Iz#2hq6&trnw40)KV z7{qO-7S5M}I%3o|7LWx6K4CZk9d{54bJFkv7FwAO#tRAOrT8N(T<|mOcoGdT6T-Av z_yG}lfKGy(TrM3O$bc3OQaqTr19a%lfVB+}2~Ftk#wm4U>siEl20|}&m5GrWmvIT&V5Qbu)I$@TtsN`-YA)k%)r=mt|DJC>P zAU!#y52LSHsQlSc=?%6GgtXH*v08@9m0_Kz#RLbK0ULXE386+vxFnK0&nhYY7>I`u z?j9Nt!$3Pos_;~FJ`G<=FTKbkUK5d^q~kL&6arOvEg`>=lAnvnFBs%uI(a}s>Jcs|QG-0sSzt za3k?744*67ju#kR)uE_|+H#Iv5I)h8Se2fYdM!B^2pc zWeQwR3_wn9NJwgy;&X*nX7tK*kOWm%p=|7N0WMjF0vuo_Y&2hlI|@QUM&fM=)Nri1 z2I9Sipf(*hNGCs%l6n}#-(dJ`Hnt}jA*4duwWLwc|?db?-rv}E#Ub~vTxj_V+>p}9o6K4gBGO^$w=3v_yRU|UjLb?Y+46<1u!zvJ}a)qQJkbH|lJk7vq zEJGR4E0sZnnHcFsM=zD2BV<^pB6$oXoTn16LeiPpaG8aV5yGd|M<_U8>lkwFRnEdq zZ97LCfXB0NB{F=qK;DsUmd@y46WiJHtRB?)+es562jJAHwu?hof2I^|qPx-BK%Iara*EJW%cPtj{0iJ+rHI4vH>Wl4qG zXh04XU&A2YqLPOtRFY-JH!ApFRHUiLknbyyENh!P_YO-S}50$hO*S3o^VdXC+|IiUM6>;k9qI0&7CD?3VOK$J9Yil? zps$L_gHlKecD2)qS7dt%XqbWVUho71Kg9y*6*lldm1H#OEN-(41a)yzsRV5ERa5;kq20$ zHZ~#2R-(azYqOB|7?&U{NU#FDMYTy(BIJT^3W#SUxGV`KJ`0?}hC6{+J_Gk#2ccC; zye=k|GEl1a;A{r|kKalCf`KX-^s$GAQko%B;s>U}E7AE@0X`Q7c(b}uEOZUEx&JZo zs3|KEzJEQ*PgFvOlP^HK=mS0KZH8y7Ek zgTx9!l_LYxfFb?Z*h~SgSSt75-R!z%7Laib+(xf?Ea>l+65ts?#tE=YMt%>we3uU0 z3o2`01RRh85&5Bj)GdY*(6^U87}`%qpIJ`X3&SaPBZ|b$15A>bh0haVrOUgbg}BSl z2_4KQ0@7Uxm9T;J9M6KEqK^zRNl^KD`sG>_3B)K zq+y)3(P!!8>@OsKKLJ*OKP)+1F2$b}6B^m$#B0k5`=zLKAoipyGFn{ug`q8P#OEFZ@5fCxjk~8jupI0TCmh2BbFw(rf5l11h4TlY}Hv zH6Th6H6S7uG@u~ZCZP+KfQq2#gd$=Ojs+cu{oLrx-m~}FXRmYC|NrJ$>$%tU0+|~}Z{!kJ5z$|+V!No1x&XH?M5_;gM-_O%_;e)*6-XzVi_n;3cnJe@Sb{vY zSNV(rfBy*nI_qj4Xy#S}UJfW@5dLQ(mYRyrJMy4Uf|H4EcQ7z{VyG`pIhlofD*8_M zW!UqQ7rQ}FND;D6f`1@fRLOY~xU&f2>;uvyLd;oEXE{vr5*8>y7KzcPsMu>VpgW6| zFN}BVI>H%54=E9UhY56!ySE7^x!#Bd2kccMu2XXBrU-Y54O8|aJYg&rNb5l89PtKg z8G1x=4;UCw2Y_)&1#S*a$KgS>=|QJlau^hPy+p+01Nn ze^Q&zn07B)9_oC?_IB09xa(1S3Jv_APRknV{I(jM(`a-zjt@O@kXT8U(&OLP^Mp9^h?>0nOk>6ZZm)7!YDzPVi8Htp`-sw?qI z+C*+lX>oqcOx2MZ{oX^4PNSH-$o4O19la5Av5?Y7!F%#$kC z3Z2u1VP!{rPWfAEITvCjb#ay1kNl7|X>6;LWsWoLQ)L0!S_^{87~Vv};b8CPc*3N( zJ4+)N!`YeMZ0t=l>M^PGds}&cZ6*OAVRH5tUg;WybADk=V@!Vq zgEEnacJjL7td%PAaMkct@r$#AcNZE}CkmQRmU|Pd@^Bk0!98k$i5)Hjk$aV0DY)NrF?B36u6qTanB9*xIwE#WM zmY&oI@g3?GReO9r!mz9HqiKZ|8k~UhjMyBdcrOpb!=c+IdMcPN&3o^}?DFHQlrj}+ z+VL93w)I%j&BWxy)GzTwYB|%Xz*x+H9&jXe)T{b=TAft$r%z0)xRZ8Hmu-yjC^QG0 z=Cn$mx^SXAqfI(fbk%7;>!&F|g_?I0w#{I9Q&$=V@e?6vHV^?VU@k zW_o%|?>FrYU?UVn3^Qkg4z0A>d?8j38*U?vu3&Y_-SrE-h=s(FMug4&n4*nzu9AH| zDAZI2Yi@o_wkIh0I9{WO^81IR_(gf`x5+sePB^YVM?te5iIxZ5)NPjXG8EKvry^*AG^)aV$wt z>(ac^$Ty=~AxBY+g`V zaoDy=VmzfDL0WLcr#eHmT1H{|{bFl0!cpVuEk5%b!xAngt7+~=SaT0~8z#e{-qdcB zIzPgWnv^AJR|U2njs=cFDe}E?fvTXHu&XdmCjr(&cJi-TaxGSOYIfra`W(^}<+x6L zw96z_@8l<8EK%_~-ovOgKlpd4mgyLoLYY9$m3KoE+nr5px{8wVQ<_J~huo8eB@HB~ zhVlz;3}r~|-p8znjg-goTP$omYg)aU>a4r%BQKb?+^SOyAEtxFL<(5x_$c4{S}kFl z=!EVw$?;V+R`naj7xBR?Cjt%BTS}B_OwJpxKI4beSFS_o)gQnyfePq+kCsFXH;>O; zz%p;~*R;%TaDJYLE>wAm5ak2Z)NzC7H%E+`6hxwCV!}VH(z;3RH5=(vhm1Q$zNYut z7G@T%m)yhNqCW`o!J53a4@J{GX z&bxjpvug4oa&dtyh;lX&(vtcNaiY?7Q?*`kXntMuI#gvxArYG{?9zR1xR2I3hhs`6 zGgdX8XLhJu500U$`1qY$k?x0$BFAYzA-YAzHLv@!9|pZgccZQQh+gjyb3Eid9e<68 z4p4N)4(3GZvrej3fEOaSmw}fVBYWi z@R)Ud;1@mA1RRUFq9{m`ZCx@Xb1}LCnucf^tJUPF`z(){?7G^nPFpTjZDhgCSyF6be%De&OugghTHV<L$Ra!>h&m>Wi7UQG&L{ zKe@%du2UvdL^uMBh`4+1wo^{rrVe?~EoisO<@hJv#NXteQJwpZ5(4gU_X?zXC zM%?Xr_+IG>{3M2NSzy?5w)lBQosvJf^Mh-hfYCmweo+WF_t(St5bKWkJmq*(%;{Qr z(M5vzN_(K*sgcjVeU`hP4fB%07({r0_~%eDJffcuZ2g=HhXv}hO(o~<`mLcWxK5pH z7kWp-W1b5=&wRH!q!DCD;m0wHE10mAWQblnXHOx>xg8$S&aYtc*5*S%`fPnFud|51 zsUK!43iOy1@g1PoT{;|{Y+zE~=RF#APuVh1-W)UeW$P{eg7@k89t z7`-;7Qre78fW0X&P72st3{TCm&j7WZq6lJH?a43Tp-k9MD=(qR++>9y4JFt}&(mju z>9t^ntj1&weB?@=2KlVZEG;FI?|q6e7^|TDn>U7#SLQtJo;idh3}ROHKA~qn?j5w z5E~H8M+j#o3+}qZHy?C`(D|ELf>3gC(mjkG8Gg69f;kU2E!B~Bg6JszMrw27AZNdU zngftVB?_1#xPLorgFMe_HqU()rd9^eouWs~O1_|@ANEQQv61zba660PT*$!KfoB&4vN8c%kEw@O)`6d=y zx&EX4qav8)yjICHW*Hq8Olc4OqRkvVa(xIM+0XyI^XE-+m=hE7Ql$Vp3(M{BY1Z=0 zsRMiDw@0FMvbCX2<^@;=M;8S#kVEMGun;*eo{foN@M)+O`t!W>_G9TX)40Z)ULLB;g>F5+sN&_242VD*UK)r$Uq~n z>+N}h+Gd2Ow&27I*gDh(WWrD>=&lBTh;+!0vvWwRbx5aY=z9Oql4pK8J)F$fL*(r; z3<(-8#>Oc4;rZ~}^8nZs{FdxS11$`HVQ|LOhRxtb7&bp)p6^fN(TLZY@_BY(LXBqS|dn<1Or-%!K5DT2iC4EXj3yKNe0X99wwK7R?ez#S)*O@HP4FTT}I~y z=VN~7=C21qP3RD7HjF{z2ebJ8B-plio8ELk2m_kLa9vr*TPuO2`m^TbD1~ z07NU-;@F%ebgrQzJd%M)o`-&z^3y<_3RCdoDsQT8=i3Vhbg!$Et}mk4$D8uCGH0WZgV zARpyzSdc@Og2;F#M+e0yom;fS#cerTD9d%JL~x+GLh2BiR>mt-haZ~Tqz zA!k>Gr|`fAApS;i-o@?VO9KIebMood;BSI#(rn zo|hOugk?ZOL4&y_cP4M?cI(2TeL|Jm^EQe2Kco3R?)TP9{j}U+-!_SYWoHv#@PBvA z+i{K^L34J?=V~X9ewl^(i|%d8U!5H`WcCr{z{Z|M@fWT_d^6hGB13T~L?jVz-pDDl zKx;{0SO>V@D9@+8Or}oq1{v1%utR6z;W7jFQD}1)*OCnV;0+IFm-#57zr;p(%#NUY znPnl5z4Nc(KFOO#uR3#{;R0ea1n9yv4x#vu1Ci0|5V^kI@bb?}N z67UkEn6+%jWp|h^6r5hK9F@DGw4_0MQtrkqt4o|IVn8H0}Yc|FW2J-$k7}tN4=O*u4 zw|CrYeoCS;-F+M8B;YwX#CP5Xw)>~un7_DYKlXN?_Q;31xPv{<$9s!;9&DHkD%w{N z>fRggs#xmZ_Glv^;Y{GOGlzi3dDr(mtM=j1&nH~G4mP`$P{$`my?s{sjO~e=sk;tR z6W@#V9V3$U6WYcw6tI>kG-+?>*7C&E{bLvsC$V>?B7?3@w?og)9J^DoO&XXW0%h@@WBWk_ zfOL{MK#db1ofq&^#r)dnrwL@3D*xIjj=C21rZppT0gPdKCub2?AF7tb}xOEw>cS|Gu!0LbEd!w zjbM%_p5(^tI$2)vNV2^M5T{UEcc={+Y6Z%(kU`8FxhCx=4C!1wBE)!rqb&rVi~=v5 z+MlXSKgvQi8Pm`|oq^U{YzW$VYt>n2_BW;)MtBXNtml2%zmRs(* zzPso8=40Z!53XB&J(j8@e08QRbyr*3KHJhS4Bqcg({8*?bDB?+Xr!-KKs)awJB%jp zk9utbO6mW^y?KLcDuS4>A;uvPLpo%+EL{%-S*GADm2-a4m>YllW+^pO$!$(8cuonK z`Ly?qeCgZC^BgVeOVVtLCKG(r7kp~-+vk>Vh}12Y1!)~Kp!V!nZGtWLq88pMGqa40 zImRnElmqWoMej{7WSR86H~uN>zVEyD*{@m~-d%ayBDnLa=_$r_bc@UEyBmpHL7FhI z5{yn(tfjnmkmT9Z(|ZzMBanHey%2NpBJ8E)K(KwR&wJhb?K{bn{5`Nezip^ekQ!8{hVBEneISm?cWPs%~+JhR;WB=AGfUS zHSjXs^8G+i%A7FTtWA6SaNSFthaa|X;pj%cRb%d0`nPSvpR&FjdwX`_?Z@cVTg_j* zyl|c^Mr^?Y@zC|}*-AOoeWkf0&-e7b+r7o@Z${ax*MC~i&VjC1l=!BvPJV68er?g7 zeQ@N{Ed+PzC`YG~1H8s+WX|cfRP~+7+chddKh4LlRyfeo;lFIPMnNt5A!e0aV+I$f zC+X&M)D-O6gq<7gUzZ4=J&6k8vDc>gTtgCfNe;))@+;su&-Q&i_wZ}e^RMSW@3Oec zHk;qI^yCpI6i<(|Tek^>XKZy6Lo@gLUHG(__w;jg#gyvYOYYMh{I++^4R1Ae!d&IA z=wxtK4I57ctLJb=?|{eOf|Zcm{)%rm-7qMu{EafZ^MK4KyJNXr4w$bmy zntP(Ue&cGSU0k|_$jAcfPL#g)rf%S+7xtL;y{GJWt4v!eUH#j=z5^H{M_mX6V!>o0 zSC0w->be;_xW??gfaIl!7G55JP}mDjJGgIt$)0iJ;+8>fzf~yx{B2SrRVVo6?WE5k zKYjcZoDsV3r}>A#t(S3c|BlGZ&vVz!?)ha0_tVDqO50%$$tO(#jnO- zC9~AmAnWe@GDBaHbAdG<6JQqH;NO(`vG9;-pvbpsLEptwjk2+Z7FsuLuCm-!fK!IR z@|Bi3WWVk&okB$Etok%uIT4ItYVAd;T1Jql10=&pYk}5QexX{K#WAvDEHD3-9-Z|` z-T~bwtJB%F7X@@l2Q{ox$NM4i*op%1ZzqR#tav+qW&7u&${|)hM+z`wUs7^U3Dj+K zP>yFVomMjqJm=mMyQJvw>##P~FJ(t}A685>2b?4vDhxJ>?X$Ex3-c&#bsFzHWM6Uq zi7rj?{@s?Tzy0((y7J*qSLa+RafPc8DsH770w?t0$ir2MM>4Y~Qk4DNOH(yH8aiFY zCG{#9tz&}6c<@Zm@hHTnPdWyxo&=zD`rbHq;udbL`OMqo=a&$f^Jx3(Y2jEx=F#l| zp_xzBdzx;_OnArG6c%mb)1;DBPX{Mv`&{{%~_YY@g_CI37-D8 zAnoK6W1-ba+6_Ua`?ND*;pvu#)Itibk7ZM$ZFJ`~V+&jFLkxmLK5H)f_=*pG*sM)LmCkwsi9pst7|fD^}$eq7GIjx80K2m z^d(GGY~nRsHE7phPCI1JV+(|qxmtBnjgPY* z+EDHBBUdw!X!Chn@p~9By2s*HeQQzJZQDMbi6e8Kr0w_BH_w2PtNcv4nWl0UtJ70c4@py?m2T<`PT=#KI2xLV?cgUqu;Q9cm1~o zdxdn_4pluCu>_1Z?`Cx2*T_CD(byP7BehK zhou9ae{=P3>%Pe~t@nQW`1q&w3-7SQP7A;P22?A6jhDpe8>R93l^>u z+P16LVhi6Z)2T>L`(8Wk@S(F2<(tBuJACfQl!`N@_ckn5F!yOcQV7x+8?^5*5Z1{u z`{~n82Wvz;1IvZxf{g(n@W5xGat#^&X_q4oc7n1XC$B&DEq?E(uDTb$8(Lw*4(9o@ zl?Otm6VI0u&Ej?{7t6{HU!0zNkQ!9GW~WhctZv-R*&Ns79~_l>yH70rJnBZ9rs9)H z^`sjT$M+$6rJngmmAu;_%1rW4suBspna))cgAT4_9{V+0lGlFC5cO*eHawpW8y!;3 zet*qadFI4Mz55oHnNk&{7B$bm$$Pz`?8@u9yHC1UnL3)KXo$2wh%6Q`E0xjGJGmWA z>*u9PdngT7zY5(FI&15<$YRK~THUXS%H|1q|pTp#YczZ~L&H|}_sfsm@DQqBKI8on3Ey##0g*;9k z40~9I!7fa`AZT78%fUOOSol&g2YHJRU(s$qsdXUtly&%r`r96x484FMYvG?SS)!M| zeYxeT>7??398b?TFZa1UzCtJ>wOjT+Uw87i!z~E4UB|9TqhJ$H=%|qsea?wHzqliN z8g}3*&tkL?V^68=pRvB5Ams(l1`y3rtnc1;yQ_2&R;*B590{t`uXsj1ScUT>tgIaR z_H5NpTDZ-7FL1PO@h#|;E#i|a_*;H!!>-or(wR{dLM?#5uS2>7>ul;&_sr6dkk(mR zcCx;h#A$~I_dSJQaO=TNlaF5}Y`9UYQ+RFz{aEe&MB4VUgAp@!1eF4Wh044 zYk$WXp3A!W_(?-sUGVspjR_>i*M&uc|*O88g%4Q zfMHJiv_aGp(e1J~r#3%+Y}qHS(|j_KdC(qsrB_ERXou|Idr3TvZ?UdO8Q!Tm{?v6D zZTR43#YwZ=r@lXJ(47J8Tf?|s?;mWgJ1P3uw9?@|^lz==B8!>0^<&tr0>x3|kux9Z zt!Oh~kO7MmzHxc`{Pe>hn^x(PU-8Ecd&owg*M2s6vA6fx)g|f|+}*UdZH(K~?3}c# zvE+`Rf1mcgjXUf{PWx`RW9=mzedsW|>cB@D?RR<9@pduXW5%|tLz?_EH|TwCXi?zf z?NY<@@~szso4&L4n0U8M;i+wJZeV|TXMxD==<$sFsqWD8{Jss=UqR)Wo?ds+l}tR+t_R z*zua18{L0m``a}=SPvH|d26cL>Z#f>x1S7*;FJ+31sUx+9?DgX6V*4y9$nx((QM#! zM;=E-J-wImLHKsd_nNae zeXyCwYiV>gQtpki5wb}!5iWHG+%k%CK;(7zSQ@5Uf>@dmQ@TB-={i$OqhBE4NoUWQA6q4m(>iY4Rvc{P76stIp3u)i>Z}=bqG+?a}H@(8UjrZFkU7XZIYu zzf38t!0Kra^bO`nfS@Laj*K59aR%FU?@Y9p4jVY%>-SFF=6;;r-<%7(L32&d@4g{H zn7(=7oKfl$;^Xqn+h!8|kVTI@8sOj)rt^cJUx1hi5* zx_@EV{DDf8FWxs5zakRbHecrSP31Z3&gF3iBdh9gXhKVh)v-gaQRa!{?QXhS(d z5TUlkm1pxl{%AUz2|0KVu0-_y=I4D(1C%83CPM~pN*)gJjldXh$QM*BJYNCcRD!sj z{^)M($>^8QmN&m?JOfV2-et6dbhGqUaK@@0!CO&cD7rjoy1ee>*9f{yOdKY{oEir! z-q+hip;!o@;yVPR_!f2^xE90Ic^ghS|I3k}ge3pj8rMjzhRQ>XA5YdRLL!UUT}lZ{so2$2&8h!uQ6WZ?1^#tkAgsqAbUS z(1~d(C;D6mcA(0CF;7?P@J6IdHss%nOzlo%n0w}&h!*v;VYTW6#Euu(yl;b-Ldsit zrTt%1Z|>Lp0FJyqphI|~bNbC$L}bD(f7M+PheOZtpU48RA~q_S{Wje)t;=^v7Q}0Y zVLb2mMvc>rca|9--da6!F@#Jqndjo1z05+Jl9I94%3go^w-Oitzkdh7Kfd@c1o$5h z{L3?eZvhzmcM|+v1uw#2Km`LA5{X0s>yM5r8iW2$g1@I+af=<-MGw44f(d_5x&9Lg z{vLE)thoY96Gao1_TEMhK2-%h5|e|EId3MsJuo;MKGCBv49YcTNJ_x2|(rb?>smS;K7?S zQnqXc`mW!3@RrS)nVDO+W^LWN^?TxV`*$0>^RJ25f9bpa3k(KSFmN3>a6l*&mX(zO zB>1l?xU#acs;cT=RPcW#!3_-!e@(msB>4RK^FZSDuO9fyl`B`TUIiF1a9zKC9gx7l z1;kyuySoPl2L2j%{TB(G^#3Gq#Q%K~*ytY;Sg++4m8X%KTzg}l+vhA^l)yK(l`)Km z*uUOgzYu@sMMF*Yz>9UGI90S$CGBhDiVmRcYP8R(+RJi5+}Pscn6fB=ZQWsBHbdr% z5}1(pvQF98`OmT|Ac1ZCoa4D`012#QFD6g_vji?GF-1xjC2-3@tn-=g5}11tXMRG1 z2b5h~@&E}uA^j%_y#0p+7Oz;8z_#_eHr|(~m%jct61aR(0^{xg|C2cPuFL9&1ith` z0X2D)uIIc$}MoLT$I4Ci6!49uq|z-vTIQS?7|4KarNMM`Ava88a=64DF z6m24&|5E~=`7VLSh_@FdaJF$yeKQ}8b^#>tjPqjI)#XRo)s|MPUE=>tZ>z5jZTiUV zKP0fx4+(sUzoyXGe67*VQ$Hl|di|rxYPLYxHQ~Di)-|^SByjzA3A{$&h;jZ?0&C!} z#{d#o`a=S{0A<%Af!KXf0@te+$02FETpAPpB7sjYN?^wyWmlI!Byc<2SrSWHl)wQ$ zByc4lffYd6^$!WGzbJuOS{;iLnEPD{)-Y= z@)rplX8=fG9d=%5o{rJdHZk0LI(D(_YQCaF!>{vm-OMOP!uwC5*hHrz;Y-Cc0726^)j35-$N*p2us*7NfJhXmFE zf*RZp&u(4H5pKYI*jH#Xqi#{jq6DVm{r;4|-TzJ5HJ|YxC9n%vr{wmG?IGi_o7{^n zQxW-+E4v)T8U~nulE8*Wx&Ipp-10*LzxWpk?4|neByed=V}-aQL3cWbKVloTBBu81 znLY2kLVwp-tx{n2boK^jEN_&o2}3lQpT*vTov3X4r2a~G>&wBI;_Pde@GsL>r{Bk) zuh^lVXyS02(?)XIpIBIq+UxVhk1yJM=(MMiyT`vsVEKP6yV8n%|B%3Te@fuje=WOO z{r3`BL)l33Pi0qc_P>?Dvi~4~!}EVgV3$A2u66%G0uTMA>>B!q1g5IkUi=?RU<1sV zMG3sGq^;`TNnoAXP3l*RC!O~FA%SoHFD3AUKO`_}DfNd09{TUgu1g9MR1H*U7WQAy z6rbDmtfO-O!Pt5m6+F*G{I==s>~nnCU&^k;=>IPg7}obiH`u0lYxy97UoR2wOgPoD zIr|LzhXg+TA0==S;RYaqW1&VrBycj6m<$R3E`b3U*3_H$G??h>_OE5vu0JJk&iArw z3L6MI(ur+rOAr1#34G|klwJQf5?K8Ig9I-9OWBpPSa!|-A4uS%|4srQmHa7zhrUbT z``;xn=YLvuz46~kU^R5+`~iYG8j!$7KuGfM68PaiOW+ttrOd9BUYh?83B2#$m0g`N z2v`6_OF4&#ZrOU^aJ_r!4+)%y?BM=UcC7>?aQ+`<*U~>Fu-~5&*zey;;O74*ft#^P zWMw)P4S1D$Dmqt)h*!WTXb18o=t}BhzO>$>`hW~o$V6oe5m7Q9ec7%;&cs39sm7uF7i`w>-40B!rY|kO#nW#}M%t0A43urhf;As+w1|2PtV;e>20wOYr zjEI#3jZ)<$B2=XuHEx2;A|f-{z>^^w%^0;g)Exz`mxZlWpmN2Cb<`^S94HBd5i_vu zBCPpW({|<}2|f+DPa!f%0z*td4+8d-i7uz2t7T{r19L`!F{#F0mSC@lvDf9;pT7&F zP8P09fvtFfsh6M&gorPvVd_NYummUlZcnqx2u}r(LPnG@(A9GEQ6lCfd(oSANHF`T zFoQFooh)3R9NWai)DY1NB}~+Q`cWMTW(ts?EPSs5b3}rS1tDCR%IOSD!}sE8i4c{~ zMCB_G8ez&Jx^g}U*CocjO+jUm5o^S!u+3lr5p!OF$^Kf`s=zdfF%4wQF*;fxa&Q5i z)mI=&6{tcoipxfofY9Y)bhinnfr&W{Xl6F1k=b;LiK)b3X3*#YCNhEn-zb53Q_sML zP^ZYEG%-9#aef_9d4&YNnTXu10E)Lrp$J{e!jv=Ny9ba1B3zdU+bY7G6rszBXmb&W zq(BUlmEMX7Pb9cD#j$7!OoyQy1ju0_x?F@}%aFN3BwLO!U@BMBmG=OBzX1mBDhpF7 zLuHF#;%ed&CbABM1)x{A5I4xi^#S!e#qq05Y@-ZaNJMU8gW*!-DLJO~5vCP{>y<6m zPXYZm#Uey`5rF#Nl(_X51^$T`|B#IDC*oR}m}(gk808-fnBK3bRtYBIB_c`)4+g=2 zh^-$8b%2SU)oRW9fW1scQW!)H;0}`E$Ef(*WL%rP?Ev6jC9nY*;WeFbpNMOep;9Dp zccyZ*41I!(sV8HO6EPwMx>Nzt%tWh!QMbhSaVB0W!5k5yQmzoy8L;CZ>=i1mA83HG z@ed{VTfgA}iU_#cekQi612Mbs6@E*EZ%+f#gt&eg){_aw&4DzS;H6{;(5@s?;Xg|V zZkywW5ka6a5UFqx8~1^*RYc_5)SuNRpw%+W&qCZ?*>wp6n=MwZp)2o{ z;GO`Gnut3qLJO!cTrH#!=wivRT|(S#@}gsW%)UAAwt=({WU}- z5M%`v5O(l*Ci0*VbCrebe~jyuU`3J&f-TX(2fcBzQ) zA>wWUj_^o&e%m9^KIewVha9oDUVIfi!h+H|UnhbzjtW=D< zE5whp+wPI^Lkis62ROJr#%HziJv-$RKqs^Cci2@2iOBmmff6R7nvD^&u{YRfdgZ73 z$d?{?+nyM})ge2P`Lkf-cj%wdm4^6}USR+uDM}9_lq^<}H$KI+;c(aJ&-_>u+IrX~dX?#t*TdwA zD*7Qb7u@8 zO8E@C_I)bmfF)icT&%Xw?ILQhQKuQ$8+2UCoriZM*l_Ww4Wf6`5`3TJE?a&XDuuN% zY^TNe$YuAUK?=1}Xg8BEOC=18uqT=5Pn5L9GLZi2v(dAq{17c;X&lf zq4M)VVt6JSRmFM(1c05>#K)Nzbz(3lQ|At`9s(8NtB zV^e*IN^-<=z^==>-0vcp??%rsrnH)X(HE!)@fQ^-oUnOZ!|V9=^~4|sHsTfD(qc}+ z#2#m2hGm4ea>5%Sfq4!1ghPX*fC7B0xAWj9nc8b)F2?N4R{mY z9iy&}_ZW37JrgFWTzfFlC(S12xHBbJ{7kof%R}zTVHgGDq+Z>YanH!2(sW}cLuNBP z%s%}Hmi)z$SP(IRSx66C^?tbe!OMewdifbo+9Oxaq^jy$q0AH=i9Xfig{9*m`2-4i zTdh%b0poPNlI8uC(t`;#ehrlo-Z#62aE=p%=;OK5urmJG&P1(n1%uOpQ6x7=lB=x} zD+-r}c0p^Sa-6lcC8{EI;sQ9%tCyuG*B^=&dLXn)(=*{}^g%#7`T(HIw>?XC>xy;97MXzFM>TwPo$hmNEzOrbmhfoQiz>jcYyYIB~L9lYYtu+v)@lpWpyNU zh7=Q0I%Ui=C&6nPGaD~a!Fu6z#Oj4BwIxZ@b!yqwPRfO>_HGv`*Ds_-Mabak&6AO~ zVkvQ)jEOSXpdHZxH>FLi*OBNidC73ITbJeFVsi@Bk=*Anp1D7D6rvnm8ObmQp*QEm z>5R=6S$H}YtOjkN)RFptEG9nOn~U41&~RD`c%(|VpO$yP&1h1CcY5*2%b;lXYYA>R zVv2O3Qb|J{IAI(iRj#MIn2D2A;taYDxKs~nL0UPHAt zHq1Ga?lX!lcNrr;3Z@O{H@6{`E8`@;oyHHvZcPUn7Go6cM%8;AJI}IfBd<&vWueIqk{5;L&V7m~TMsX$e z&na1`$3iR}V%3_&d`s`F;yASpE34RJj&}5hd(#lL{mial!ldB$bEwj4cOJ=8!@`p| zmEM^QH&%1>u>a7hmGsrc!WWEToYU9rBC8$`Dld+fOsWb-I|+NgXep=HX^&7C*1M#I zR|2Fz9Y0N17XrFBe@gofO|T+&4jZG^<$l$^=f#;dY5{a(J9}~uy2`3JET5~ALpkXr z5aw@vI;q*sJhiYn29;;f4OOl}tjw}1bZei8!4SKwK1~%fF9AJH7L<7H6ncL_ym~c_ zca^|h$Y)ZQYjw%tVPBbWtqd|UKH1rbUWy5st}~D*;O6GFJP^KC-56I&O^+$`1Wm#t zfA>bV5R0?wr*x-CZmX~PId9n(r{jcm3D{?<7Qn9a(3f@F)N?jPupuhh%y9S(A^HM5 zFYcwCtEnhUjd)GG#5x^eY26$Fzs6R7I`3-RURP*t#mV*==2ag4it%-DLg(z18278< zliatc9ZBY`%aEf}Yw~pEv}seLQh}Mb6v;^=XzlkaDbKX=*sJrxuZ>lhc1?C^noV8P zJ6F;Uf~s6xJ7C(PB|-*30P*d%`i36iuxN@uGTLL1%#P8x-0q<<3P$Lhf-M+2#9+eb zoisk223eDqYd>+{N9~xyMcYiCyS0<8m!C<JSrL)?w*HZYQ zFpL&->I&P%)HxG%G-0QD1c8CHb~H*$?$Vj0BJE_E`|mXz)|Rq)$A0C4eP*9)^)~ig zA7zcKW}{BEDtP4cOfJSj0;4lK)kj$<{}1|FBXR+d*(Gdq$n!lwgpqZJ(1GI46Zymx zCr~YJGkK2mDV3+`jMsoy%CX$!ZdC|O5M%>g@=PwU$pvGa7ji#QY~A@b`rLaF!b#i6nXC{Q>%*Pzjh|?fdm7!Lr zu1>Z6?M}+sVyL>14qJg7$URzWnSffZne5T6E+U|!8Bm?OAulbwtqN%D7z~}lCDZ3_ z{PZhK&ETcAsjIS~OZ=2J+6!To!!Zc98PSxI1y-;F=a`CE^#c^{4K@UtA|4=JCiX0U zDxS=%iP0K#M^N9U=9}kU_7KYXRst|CoVPHkoFn_{xL38fwBAl7JH+cqyDZ=LQmp3n zQNGb+Xp=kTgw|f&UdtfAij@W=y|j6Q&gxp+@CAMKruNx=qq}iYA)N*LZBw^p$xvRo zlWOPZA5qIo%Qic7Yxhz4j1w0*o3>5qJ_ET$2qsYcX-Dlwb+_APe(&6-WAIQvKoN0X zVGGSz@ULqSWxvAQ`k}6RUIngtO-5Gyg%AqTpGspEYU zx<&}K&vCLRRo*2+!{rNzEaJYC3T*r+-=G;wqN%G@!dUbs;NDD=8HNkbF8i<)AJ?^- z*F}S2aCD9?2|^eEYi?`aG|Qvxfn0X+($q%QOZ6dTje_2L67Oz)_$YrKEeHwF0I1xUN+EKT zlg@0)XcQ#M`M$Hd{6^4*en4p=TFCgc97IwGBAzOUr6A(yf~}=M_w>LP8B9rW&He~v z!zgc~m}fKEOb~NzLOL73oQ)xZ&pCqF+0K9vct|5Wyb&If!w(?yH?nvuMtd7d^DGzg zRW>vt)};ty^369XU|wR_Mk;*UFg%J<07O}%NBLngSTY!crSmQhEeoGL>M+l(XyJxa zRN~}EJaT|IZZ~L6-bNOmsaTu9`^b_eAvF+Y+*TlJ(Fy<{R zQROB%@N82=6dmp@ftpELjK09cU__Lp0f4GcbMm6-f?zSsT6A+p%ywlUw#X0(&WNaF zxSx#YD#^29fKL~9H!Ahr?y z^QF91^ANLqh!LGjcm&oFfk_}=GAqw#zU=5QKP&|9I||{Ag1m*RKer$F$Cp?E6`-Km@i<&k< zsI0sVWV@`=UUhhBd4XWBQ-!LJB$B!Scc8gZ#r$jtB7zKeXF-c|rTSuCq!|6gsbWHG z99=jx!vbr=@4AhW64ek9bl%rr`D#N=ztby{+^ei7?yY-rFF{u|k%6d@6$i_B{to#- z=y;^a=w4Btt}}|t=5KQp9Br>y$*9p6ft7REXn3I}EAOlOJ-?4q6B^GqhgU0JLX24# z*BM|i3SR4-zfu8Dq`@2X9z;BN5c%vu)W-+W@DbX59yVV^SprMS7bHx>{VF?|+k-UE zf;OSx=E-G*N?5@M&#CHsTF%JkqZXx{ZKwns_e0g9t0#GV-v*PRRxmwQI_!|sef ztbG|AOyPS8AFTcWVxR=!^E?_wiJ~BNS^~n;Y<`F55|9Y zEo8+?@J~zNKFOoU48!bRfu2L*YblRTwq8Wi>{1gRHR3O>rb2+@oo9ODi<6 zA0J)7-?ac*yr7?dI@rKKtriD{!$ZVH_J`wU`J0HmkC#^B#PG9Nz6~9sLzd==**Zol6jzjJjJngU9-(p$bCG=6Vx#g zH00R;du{j9BN;jq6yQ#0%^w1huaCShglSKY)Z75ME;7ZR{pH+JKCB$Ao&%}y*hcb$}0cKRz=;hAz@|R|Sizh=WszJ+mU=Tr6S`CunF;}jkRXrO08BZ(yJc??1 zai>g#Z3kv8iek<}O@~E?AHiP!6dj&RA*zoZhI3@(Qd{zm`IzTGiie1;vEWNd4&B6usalN($w|Ug7DPHdzAJ)5_2+vx5Oodv z#*L#0hbPAs=Rgm?k9)O<H6rp3jiUOwD|VrRNrz0k94~#M)IzNCuOVS%$nFt@UmBb?CCqYBh36Bv5UJP1Bfen^VfPnP~VheD~%~s51_Fy168k_`H0QJyPnM$OoFv3!S z72t;erli2yO0^)d0fI>udzel`Oa@qhxiuEB@=wI(=gpj{ zpUG>VDeRjms-FQWoM)RLhD2Z%5KHPb1V~Nl&{*1TEW81W1h7^SQw=b-q$tIh>Afak z8T&{ndNhvD@ZY$(zkHG)oFJkm4=zm77NUrdY32yCYJqvH;!RcXZB{#Y)FVdGK1x16 zWdk?m*b&%z8qAdnbIFf!CczvPQ;tiZ>pEiWI@noL(!qk^Mjre=NSLHqg`SkxQOM|H?b5S9=4=7~+NZ)7?q zgBBuz*G)9>x?VDMRQ)yGB>Lz=wDQ1qQ6f`*dNQgaR{=C2#^%LS^aH`)sEJR zX=i&FJbK52BRkfnEvevDmF%oyD6XGQc>VSWrZ;KYPEKCm_Wefm_xgR`Zyq~XpLXy|M2cHcVm zj^H%F?ma$eO#GpMdlwQCd97z+lhr$-ID*ptLuMe3GIB`L{ov3R#7|-aY~$iCH#+R| zTpdOTl5*P~vh&>+ohe1p_Q>F<5?y8|GpJVLFK%bh`Xh+;+hy!`8LtDIB0tJc?=M;( z)wESo_*Er89`z|IJG$fSO zfANuGZM_*+6V2S)bXY1mn%d_puK4f)A)z2p%XB;|^*Y9B#}!OzF_=jD5O%Re~vB;HACcw87S>7thf;9{FbB z9bBEDsYE4_DyAWdW`wR@)50jW%*G^ZQB*dLu?9L50e z+qeI9Gx7i$gmq(Q61ORla zSJo%Y(TDFNI7f9rPpagC+BW*LhdT8#UAxa|| zqDZcYc_68@jioA@!5&Sr}8d>-PzMUw>FUws}c^xh-tvO$UE7!$!+z zaEozB@r%L9clTm$ytM4|+n%K>6L2tIx2`*w&b$_Gfek7Ox!hxh~!efje= zD9-4#$N^rU(k;35+VYYh{J^n6I+QT@N?-v<;Kz*%vEH(yGk_HJJ;}E)$$NEO!M|_9 z_nq2Dm7UjXQ+#Zf|<7H7#Tdl1AR=j<9ZM*-bDBd-8$REXq1-(PP~A z?~W;w*RbVc5gf6Gl%Y;%65h7K^kPI#JBZEbs7a(Eu7#Ltf7f_-?eXAGTGDA;7qh4* zz796wh@*%W9=bY(7}`N2)U^!WA|H7?78C$`k6ibODYd_H3_mGO{q~uTqor}>fT4F9 z4H6#I?d40EbBoR`tu!s^w`ZlU#5fq`B_z9$A$r-Qhh8~#rz_U1FxaB+emOBa)325H zSg_tvg)4Q!;CgRz%zF97&u@%UNUfw#)5vvVX6jykC;>flpPU?u-3APTOy;q$YjTX` zg!aL1_C!7Z-3Mj5wUJCgr`b;F)2@_qgHya7ZM~8r(m~xduk;`9HxET`jEP>|ukUV> zmw-~pj1;=%OYh&0Iy`yH_q$Aq&=ItS$Wn|l`$+G$ofhJEP@qb!VtBNtCVDN6iBR_g z7+q{_iu3K20dxN$c^xy6pU7AY{!sQbo~+>leKi^(jXUDk{aFB-Zb) z>#psWQyu&Cj0GBYAk9~wVgD$h& z6<_qx9@XKbm_|Dpy>|PIQmFE?#+_!FE$9m&;RoE$88jD@p2coH_H9e$kL%Xn4fzj9 zhVXWTT%}#sYrFS;a^ttWQJ#klmdhvfa^igR4-K%LXGq6XUzi?U_p-(B*fd+IkW_}c z2C{k;r(X0(gh+a%Ov_=mnESx%i--QKy9}a7s zm#sX-F-pFF&}<}4;qK|`9X^>Efh|{al7B`x$GBV;I?J+3nt$Ba_?Gq}UFXy>$<@7- z6h2=?SGyUd($btjsV@xTyf(E7Yj*U`=+vMkG;9#)?^7`3WHv{Ht6M1?yT976G-E^K ztm+EGIZ&zPVp8R#%n7;uu9ZV52HFl*hGjR$e>%Xf({C z;G|=e>87-~RlA%D#F`558ymDC^lmAI`EnXKFn zVtJrc%*v*%Sv7lxs|Gq;^@#o!n>qqtuYP?Cy-{>6<2R#?$Mea{^F1S{KYm?4bQGww|sujOvd^^=i`8hY$Qn8~?DJ!dXeL2S{|5Bj5%rm<$ zGmkCa12M>S)IrQM?o&T0)=Q`BnXx-Ulj8Qh3_H-WOsMkw!PSEgisip88!w7j5uQ7e zLa#ja#jX3$JI#mR^J3KMia#IO)A+{!w^al8)fZH9evT&C9K0VM|2}Ka%RVYblB>Y2 z=H$GK!YG8XWSsTe<)QwUg7&|f?Rl_@(|vbp@1#w%pxJpu*xt-^>8ao9yLNHmVjMM z(mOF>^!Mg!D?+i`Hzz!^2wJ=Ex7EF?AG;VGZu)ff%XCRo@6(G1@+Du^{Wj+X8c`v^ zAkX0th?Yo$L?X%3NI$@&N`H+{Pu`BHzk6S-1{%fVHCog(+U3$dG#7a#cUDQnsh22i zpOiKyP)Bk3n-{*iVd4=%8toazpLsO2>^0T*JR^CxQE|hGh39V3uPpMq~9E?E7yqFWdfAWGFiB_Cw zEyyNq$>;g-Xwr+%r0yOcy+Lw<6^qd7W47EGMu|D_l!R^b(z5P2H#GG!-FQsw_QqN8O|`Fv1b$$y1ySMnFd6N`jiJi&z5J z%FK*2`GE&G9%{vC6)%`?rz-hjAPG~7A0d@Y(lk>kk6|yABV8oC{Zc%10Zjjbxno%D z%oB;%I4HPO7O_QlL_;rCODpr0W=fc5+PF>51-+zFi5W@5OQg6^Y}lmL?DZ0Pd-%gG z&7EA;ErlCR>K=Z2uceayc(mk%gGqZBO{Ly1$FWDoQLD_=xy-rgfwO0X_S#{Mm{-63 z4AH=y0wHL!JIAd1`gP5fR`vC-Ig99#w;zmG4J7=`?%*!HsM zVH;6yr22Tr4<(dz!GckQ(+i%9(S);&wsTyHgUsn;dN7S9-a`52>B^I;XCGjki+ z_nLlh$k(&SZ7*0RowRnz^|Gqi(p0D}kMJd=zPZ~o-qDlX?OEF0fg<*lJU@X-jGD^? zIj3vR>$M4e7wp>cW=cqx|c%sr(<^LGq|AVf3e!SkUsr2@5W+OHgycv*_|Jr z)asacw)FhjKjMd7>Orr@46m!NO2)anH!! z9Xg=joL-b;%X}gR^_3>bD`}Q0Gf(>TdOP@5RP!H4XT%i3JYKv^7r3aNQx5!D79?l{ zAMcqdd^$1sq>5Wn)VxWx4PDuupvuqcrT4gcMx4#l=j_byN^{Wf(CalQR}9(vWN(Sg zo*PdMn`L+jn|(rC(FxP}PqWhsIwl7?e~LC|7aLrvm~E?Ow)wt%f6L(V0nw$|$t!1P zuXv%i2X0`;bh4kP=FBfIO*+eM9J*FA5EA+1GXL~Yor&SbpeGysw&}q&^=rMQBwH$4 zu*Trv-Fgpp4-g7{dMZaYJlL;VlY9AA-sSDMp^M#!_%zHJ-r2Lc8AS>HmlS(XXLNT& z#O-y3EqpG~cq)SKJyp-#vhgd;HfUQyd5HJfr?muT^x>^SxwOz3j==m_46O?UIgNAO7|c0y=WAAN$LLC?!{oSSRAkcR`>UO@9$Pu ziXgSLNfC)l+h0Ll8QDLruG}&J>MmJbIXS@U{^GiSv$_fjK+|_A>#OuD>kE{9m*T$v zD0csbcGdn3?P{n2iQm8VeMw7nce&Q@iQlElFF<#H*SmiJ-WB?P=v^H{gQd{#65s{& z?(d;rV*``F>s=EwvZ=Y5>F-(JCAz!hc7G50TK)?9TK&#-SFf^Oz1n6q5cFNW+HR@o zYrFPW*7sN0ca8nJHTL#v9e~YYsqgFbtMBWw)c18-@9OBb-g$%D`lYn*QrvgR?Rt7{ z+PrzQ7X@&;UR$;RW#27Zw=U6LD)m>{*B_v}{s7$#4hp1&1c!!(g#C*9Mn*C?XlegAa3zti1+ulbh!x|ElfU%Ys+s;cVGnlIpXe^2@T z8S(u`x7*az^o#BOh1&%RzWx3EFJ8R(v)~(x|NjfV|KD@FT7P%D_&N`>UvBr_55Vo# zF1g)%zua!hKe^pO+2z07?zHLc-`(z|HIF~s?$uLEZnyTY+^%@Z?Z#V`tNQ#W zw_CR4c2zyi{>tr+O`HFd+f83`yOO`T-8aOd-wVEg+r75rc2#>!x65At!|iIxF1g*` zyfY-)+b0fi|8%=T(wjfs?%+SW-8X-@-92WP|8To|{&c$=^lN|o&Fx~@{Gf8}(x|KWC@{J-dSjRCjo{NLPe-9NZp?*EnB#r>7ry`1*D+pYee zxZQhz+m(T8{qA-Zp+vnu+-}aFZg<r!_UFnx#&C+`UD-71-M%}x=@5J7Nbi*h3CnIts4qU#c0x5^eH;(pcoNC zf_w8J2qvnF51eU$$rd6LBs_$>5KO2Ady^61D2BEpjnhJnGQfMjIgZrNi_ z0pUspjNk<_KT~&Z>qT{;6xaXuYz+1i$l|3Wkfof?tANP=f z>)_(ri8z30SCcSjMaT$&rxX3cSqiR+UUXbk=`V&#Ie<;+$TZ%$JOLV*xnD!a-r-^* zMCC9|6p*`YWniyTmiTd+2$k&*D&XR0XoQyx*D?lb7ZKqO0?Q?!s^~|n1gn5faxMuS zF9yliqGiXB0()Ge5OYo>;lNrQkFaF6J?SReFJJ|Zs8 zZ5tU?AVveHwbX-f4*&=ZXjFTsEQLtqqk7!&`wn6+3(%U!Ay5h^5r{-m2*W}gFxKt3 z7!k~XDQ=WL#=umQum%7t6JRbryd)=$0TRkxYlUQ#i-0I4hF@f0?=hB0>j1B8 zj9xa*FB>2(>FXjPDpUx9g+eZqFE#(7fXJBf&pwOs1O z8^V(S!Z>9~rsdcp{l!&K5@rnWxxC6+@`X?e2<-s279-C9bWe=!q~V82OTFIL6^QpL zXqQ<$ka&E^uPLCTQ&)quNx0)(_-;P-0tpq#hffyNUgXv^3bC$tur)$N%k~nnq4Ys9 z4xrA`Z|<-}SJ6*Eb`x~UpNnw64Wf_RBeYi&ExFhSjOzXa z*PavcO=1jTFDe2EZ_D<)MIqk@Es6@DM;Gb)1L) zl5?9bu96~Sz6S_8dEJi3iAr>Mx&U2C!rl|&`bcH4yTFkMl6#JLkcPh*Am|cduL#gt zWSHg}P%)YCM)2rN=2B^MKfgSb0vs9<`?$!%A|#89Vu_H7cEu%P%pLos>Tow5*9^FA zp5&oi0$}W=i9Ga>5I-bz0D7-<&~4Lg=qfSBZWV4Xw)-&%|D23}O2k7hUk$M*Dp1h2 zZ}Ecw#Rl}RJ;G!YSe6d9qX8qTfL$6}NkmUavuoEB}qwr2T1$#F8agEq#U_g%r%m<4ha*o1s|gg9LW(j!!7Q7R5=KHi*j+( zcbvm*{D@$Qz&{`ju=q~aLX5LAp-+4s{OvN~2}p_y){@X5ZeqkK67EoA2LPv(iu8Zam4Qpfa`hqXMCK_PwZVWw#=jcaucqT0vv#G z1twTN`J#Y^!|cM{rD1vY@UJ_hoB1=+($LG~IXlmn%Q06H#OONul^*U?&n5hGt^^xP z5yH7hsf~meB;3stNZw@_pF2Ows{~=t+wCFpUWhK>ygZs|ofw_NeN#j_@=2W_jl%*# zbF3l!4oT_@O==Dpr@+IW1tF;ni1a9t%Eum8=^7N^8u^%Wbd(`u2FgRf;u2o*@a=~# zuE&kWti^l2xIeV>=`CJqV%)=4GVTuX6Y-vOBPovP1*;R^ofP34@1T#8igZNCQW~~d zfE%B~+up_Zl5yF*k4P`jKEcv_ftSD>1s?hc{gtU0JxL)<5D5UtuArb3>3KM5>Z-*dt8MGDfbfkzK7^d#P)0~8z$ld z3^Bx;H&NNhA$!rN_{~*Nt2cv)7sCaD`_Bq+tstEGU3B&j#bT25HXb(Q9=?t8?Fgv| z#2i1V=O@V9&{e-F)GD?`>#QQtE6mwwwmbV((px!Q2OsSydrQxWo6)yCd<#B?jl1U= z#mB4YngsBD&#B&sA=Y+R(??|;m#1#@y|^xT!AJRqd!A|7gVe9ya>pDuUXnRpru=o& z(6!JycVE^iW*pmEI8bfTA3tcgVORY$gP71&74jf|<;JM)Gu7V7mn3jiFQ1D7!xF)V z_DB8}AyrmipVZblscz;cp*Kz$6R$int}D850m^&hCN~b&MRypK=pDMh z%xcH8O1stV$8#^bMr3Z@L3HhJNStW$eTI@hPNRv_~h@m$aX4HyXTuA)n$r1D3tJdgV|i&>me`_A!D^DMsdpB9tQ1Y*$=N<4w00#07e^<*X^> zx}~`DYf}qiQZ{f-Iozf2pMa_9Q)?nkuC$(1@M&b9iQ$E|D+YSr(w5S0nQqMsYjCp2 z-)8dOF~xPATbae(lv{AQO^6amoBztQQz|=4L+5?MGWB)x!yAqxRCYEgZ8#TOxIrg` zMnF_31O%etgngW>$}@o^BY_Mjcy98tt(zi^ZDY@DQ-~t-E*SsRQ6TL3+3Bn)30Z%D} zB&Nf2H$bUg@iUY^Gj`alJ_`K|9+xI3zE&Srpc0hE0dbl?t4f!_3k>^R?uF$z#SzW7rVk zNyS#mGo6PL?zxukW~HaeK)6;qlgbT~+2`gRst&^L=7p>Fxuu#0Gc&w-<8pUM7m9Z@ zV?1e^)a`+thW^bwq}#Y(_aNssq68jR2ZOjwJL!6kVS*&A%=?w+$@UIV42-QTZk1I# zK+D~#eNCw?4X&rM9~r|;3qnhbz6zwClTaIWILcmb z;Fz*P*A*m>MH|I3_41bMg$_VCEc=3;s?C|ZX)xvc437S)lJqmW`!qI&pmWaEcI@Sd`GhUb%al5$l`SwbCyu8 z%nRS4bzh-c+^Th5Tp^ei$PJT@Szlsi20MS2tzx*C97*5@;NWQAa*Uw|xMZ!~a+O|1 zMT_-jPc%-0rHiQ?<5?{&uo_gMH2lJc=M%v~w_T?cwMf)~6+ z5QPqVgcW&IZW^Rz=*2cnd~$sFn`79e0Vo}w`PAL#zUnJ+phc!8&K$#5Y-Si3h$$|j zrx3Z8maQf^CHOs+%hfd2YFHOEW4#vX0$taHjD9y}P~rW8QF^IGer=}2Az?wToN?cF zv&V6t%7F*#5WBg*)ulzIUD$&|KhKOkgrjNa5>~0x4G*Zkh%0kan-hP0K#9 z=a7?9O`5YZ3w|u(X}-dRN|;)VoFaw?yal-s`92|v(h5;L8{2Mn2#no4V5zky`R#7* zH?-SJ@EszqKl_1oQmYVF+p0Y<6*^ePJOEY9?B@ewNa3}c+J}iRVD1)Mm$u#rZ zt(AXf72C5FatBVIU#=C2iUi5Nm`-g1N1YGjI}**@0-+B{0k`K{WOFE$&OGk%C`%`$ zM!{!QgKuZ>*F{J-21Ksj9$|wUmnlz!o2D^w`;L}N9SCCT)w6NoZyn`p=xv6~h3c)!-40kl6 zSK0q)l}+P73>(we9dgjJX0*YcEPL$!wnU08NHI8&fQzBBRmOy>wuRYPpJdjuQhFQN z)s9dR>!ciguuZ2$wEV%5&g;2{IePw~IJ?ghKT?Ax7J^0IdX9MY2Bp1c`+orK+P zvr4%WVhCWUeMnW}!^o6jH0mNap8s}p= zp!ZrnG|N7NMDtT4#qcd|DaKUrGCj7t8)q9A?k9i)Wz=m{c;G>HyTe6Fa>~lx5HBL) zyvh zaf7g0a0~87h2Oc~mf%sl!cBFVnC%0c;@hAZ&&~Q!dBJ+oOj`_JACT%htzGNSRiwgG zI^o+S6wXGX;WDCtGb)-39Hp3@h zHB1q{k`5{C;5kp{gwuF)(;OQ?hpXoOzHcxZ5rI%41pro+3$r10RH?4tT#0bJ&v6}K zX;tdx0ZCX2;t^dhpaWW4)^+=O*BxA4ers3bL|2m$2lS>(AnTFo!SSXsnw`5_e>D0q zWZM$EANZJ2P_T}-4l-Ppxf|P%=lD?djuFk_&JU0*30&=@i=o3du0coyWAO9-XUwOi z4BR;E_Z;X9Y-0>NuLC5L##G=j6@^T7Y8S$p#eeId%Ih+vcP;$ca$QejZpqnZXX-kxm#$2~SQ95~e(!@OZexWtk0( z3OYq4a#kmIq&2{N-K~OSIBr})ZVW?<#);US8qT+Ic7y8avE+pvvSTos-h~kABVQCJ zBH<)f&b#La*r=f(Igz!KH$C53GUxdOe7+T`XMY_o4cppL zP9?)Pi^|d!VKn>H2*uN(1MXgFt{bZ_NiEt^7|=j9{?@w;_s_n=42DV!r{*Cm)OTyG zGxIVE?n>>8QG0;rfmfj5>$!b9J~tC8x5j_&Q?~@a{?V79w%S#@e~(LlqHq7+$o{0g z{rfoEm=+N8HeZYY>SvRB!~b%qWE!T-s7sd1+r-$)STP_#aXd)^mhV8G9(;Y^z_Fq< z00z4=1~OK10Nb0v8SoOPMDz}D>;^9VpeB7z*`PSc8HVj&Ztr7-2_%r3c?-D)qp;(^-)%7{S( zn}E>VrxGcfr@4_XA95JID{2rn9=kuYiADa2<*-df!->7HQ;k81b1--Dz_8l3&BB!R zu#p5fXTqdp2Tc(`|DF32F`=g5xFDV`lE zs}x6fOu{x1M?YotjqM%XVfT2keDvFm(IJ>&`Ql7UICF^V!paeE4~hOh(vH7mi(+XI^ChE#;im3>UL#YgIlaGRuXtKe5E zs6cmK%6hjA;0qurGE<(%R0mEjb^{zDOD`W{P{}fAU>OQn>r*4#0I|xOFvy4Kb0K;( z)(SU>Hi@OV$W-UQYX13BYG5f``&4b~Y#F2DC*$_YS9dpsuS^ZsSY!sYPiml8fjyJz zwD5avuQqg0L#r6lF-(HxfZi#Sk(IYNiM^*MnLJr{b-kmg1>hh-gb2 zc09mP$$2;iZx; z(D6l*Ow~p?6kzH3N|pM`e;yo|`UjW$IZma0M!LO5!yiU%GHsk?G;0cfV*PG@efRHK>tF`H4o>rfHlr?@|Er1{d`FI92 zRC}6D`J0=(dT1ARw`h9B)SK>2VLf(Xa`xagd9V$OP`gUDO)}I<92IZEesJV%{91M= zBD#2freY`5niN+y^|og%Kt^XJ6;rX6ZtV6Gvk!FGW{T`Y1eCnUGUdmaG{hz6O&AQs zU2UK6=$qIi*<7phhSJA8qW-c6KTQ;aR9pj67c2~uOsj{19gHCd089MPZ2i165iBnO zDbIscdKk1Lu(f=)t-VEiYTQoOcbye)>5{0fq+Q*qyUr)=>WbR+X>EL!XMC^c>%B+j zBq!nr5%j^-=qo2CHUv*pH%;geH+K?;-kaA* zS=US_2Hbq)(30nl;(@h*X+C_&`qXI9u4q%J9TYrG;n%GbwnOG71K_`0m{=C=PH4`rN@vzNe_%88^WIE{Q1ZC>=NFuYxjwyp; z5|X$3w)(mQyNLvg=-31tOPV<0hjk!YWC&odk^Ot@`ajqm6Z2gmha?lV2#Bfmc2)bt z>-FJHk%_Lq4LOI**hs)6#qF!564z{FtsqC}#IQWyeS#xDQ=;i3N5m+NPXSlMmBp{g z>zT_)O!IY-oUJ<_c841Zd=XsGvebELJ@E3p$)+}@byK9f#vAvVj}E`h1+4w#G8#B; z!rW%P2j{kPjoefshk+!9r!{R)?-^>0|Fmn{=STQGvuv&q#9J7Gw*uPYrFb2Z*yDurR zf1;zfpwCag7KPL-eAtg6yw#SY9?h5 zwhx|h=-G4d1jM75BBnudsENENh+aM`|HymAckfg#{@jcBpeRL$Sc?t!(I33~ zV0scfju@t%|D5>fN8zp-tN?WJ=z*2@lGCz5GITI7&t`?2ZFFjsN%CA=)6|~!*zfhb zI@Z3fs)*}Pozpt`diYD6@zEcL+reaox7&0j8If)89S;~?Wt`asBQX>SHdC6QG;K;n zU~>znOMx8P%8jK~WGY$2=y;cPOpUjt@6dC78&l!oWFFp{f`(23N*8$z7$De&$<_Df zk^OR7QQ4a74v2Wt_c<6@ZAW^8nAglGb3bDqKl@4ld8PM7px}GM9*n^2*cM2_d#jGg z+obBHI|@k(rWmDFDb)9KLs|4E$(f7%vHa{6n=5=eIptjjX64SYEzTQqv}_NG%QTm} zV&!z)l0{r5pYRfaF($zGFb5^h+9fF*FH389 zimy*-o1BYsx@yh_t!<+@uF4xCvI*|`<=id@#n3&=ys0IejRPr~p3cNt&0}f@7Plm2 zm(W`xoc0UBNaYCeFqCKs4Er#hy`>wC_YpXtba+A*)}+;*z1LdAuOwuxx&#f+c3%}+ zwvLK{5uIXg&k)08n3|Pt+O-#C$_owv1i@7yF4Z>PJ?iW#5myg?qx5VA#-W7fcuw<> zSO=-n@iizTDXdMmuG65)2aLD3cYrI!2$)DsE=dn#K#ZF%=^GQpNaY1ToT(@-Fx0s< z)1rL&Li&N}XVu1xw3e$nY14-M`=xr!+OBWk-_^m_oC8a4Xr3lj)^plP(9#U6hxrZb zA_`2}uy@p)(D;5Jz;=rlL zSx;B(xoc3yO+;&v?Tp}}YQ2@id$;uppb9ZU<_%QzqxkBKBdcc`LiemndTbZ7qo~?K z!NBzCo%$@(LZxn{FV9RI%}O{MCd#0AlY9XfmUK>CZbX6jgL&gqoZ-j5G?P^}V=^Bz zXKqVx^sgs4SV#uCUGDH(Fmcbi-cU|=?cZN(I5i{jQ>8aNK?FsljJe2fbE}0BE%WW0 zXU5jK+?ZAIIcSX0zuOc4w$9?k%JTOX3o-9htkv0K?)skXLpy)NTuh&GHaaqh-n_Mz ztu||a%+`6=foMIp;$2`RPTK)#06M>DJ}n#V#XHn11OCR>F|9Vs3|}ekdpmuxW$@9% zAg5P~V)2=K^0JSUA2<~c=^-ypqKPhTEJjhGuKHSWsMG;_9zEr8h~BvLGHQoYK`1Ve?AV zuj+6(uw#1ClwHLPd%7iu>Ql4=i)ir(GtPVlD@6A$>V1{I&Rh2e{7(L+nTsB)FqM>I z3-#(+_cBN7Ku4t7X*WA_h9=gR0wGYiN(bU7Ij63G*4|unF#Y!Eyz9YcU6=iA)ioa8 zYX$iYEMkg=qG$A);n-H?W|S-Wxuis@JaSc5+7oztX!^VB>I+wZRqP)OgaOF`;l5s- zIlRSRbz1PXu+uR3R^63Iwabl;_1B4@jnq7+C(y;c7xj-I4101w=Dx3e`Kh$?5s&gV z%580-`0FAqZ}>H6RXp3BUWGcb_evu5hJiK-;d3fdE?;#l%@vhfl1`7&)WW2tZ+)JY zOx1;sks7T?AC^au&9vNMz__xc-ir^}oJH1*fJZENw~gK{b{$&K>`KH7)N?=5<; z#&cWzH;qnn1`{jz3{J=eCB2UeiYWD|$$P04^7ET{|AuQ6Q~Lm=WqYaT^z*iyG=@a! zAHVe4Xv}uu@QG#f=R&@%eJw3HIbalhY}QZcC|gx;H0QE;wHw@oLP$vF$N7FwMc)ZM z5Z^#nF}X5^3opB`Ug4%}GoC$S3A1TQp9?whF{c@Kvu=7^cx6X#;Olz*{r5hAPVBkc zEyeHg*IYf2{7m6dZ1KKO=Cu+;U1GgX8XFZvDJ+0vGT6*!D&G)mwwI zpP|>!%^iz&y7Qv1De1;{-rU;jx6*b=k_smSqt{|@3!j|hmpG_;^gIW^zO=F#B?vY*9lX{CW{pPo1xJSNkrychbv|81B zVM`Js6l?~kJQj@L;3wIq?oQ~ev(_+5z7lRb*lBO?*34L3n7D5$z z-(FpJ=f$h5X)fJIq%-+HDaQ<^hCd$pa_intE!I1~JF9)(v0`j*d>7BHNeeiGU;9a= z;sK&)wCw=GyYq4OHPx$|JDP$E)?B9j4Bl+J5SS5r<@K}Q;@&?{a4M}?^Z8uJ1pmP7V>F zgKs&U|FmiJ_HbJ;uT`ELydbetpFsD|7=tfmx_?g(kyd1W%hix>{Wbbut2sRKWk|}$sIBVFUq!vt ze7%BKibOZ2YKOy>Q7e&=I`KsN`svu=2EpDOo1+#gFbMXKo9$N1|RKNFJcMwS) z5?mCk$(9~@q$J7Vgu;|lw9>Q3Hw2DecvL2ji!$hukFOq=r3V>$r>)5=mSJEve=B>O z{|JAVD7o@fBFG`wPVy<+Uj7gE?meFA|9|}d&f9Z)Zk|KVG^cVlk)+cIkweqTA%_vA zQcdS`+iY^GMiPofNTphdq|=B(XqAeRrh`h*s0dR;!>-}n2^_j36@ zFOQ4MTrMtLwmr=*o{#JOR=<5U9YMy*yvK{6E|fZ$C)Tkow2`38@|Y8in_E+>UzT0C zx+F;O#Qk<{ers%gEJJ}`NVrkrgUJim(<}0fj5w?x-XG?T+vbBzb2af!wIxlc5k_6` z*!{=t<(8$~*xaa9O);LmC9N~Qg-x?U7q1k-PjG1jKkc|3rSJNDNYyMg9sZ_Z{^sHa zZJYY|jwFvbkEBJxqB$MHTML#hE)iJu@vRPuEJMA7MHXMYxPLt12QTzDDqY@Ce+lgq zy`{`A&8+t}zi->J`#a+d^#lhW=aS1h=C98i{iyh0o&uSNmOrVV(~I)MuH%ur8j)gx zMt|OxyW5t$_vH6qac}gBusO6`;TeJQCSgViIB_c&3$o!oxa{ zRiaqvZK@mpa11L`4CZ?U7JT~i3&HInZmOcE;K1X*cVUStZc6w|7xqtX`j6HW8M3By zy2_e0+dvxN&i-X zH8V3+QPNRnLm^mmi_xRLJ5oy(BK;vqt!!;T0@e!jUxyN~HcTd1b`B2qW5%fZuTG8* zfA(LU9e>1MLHTv;`0>uJp!qrhEI>)et2F7v;qvQ{CjHreoigc9P3ksfsyoZ$dkEIU z%hO}pG*2HNl_vF_KHbmP$IowiKmZ8A1_TBUYto?#Y*0{02%x0j9cg&@yoiW!4kt1y zit`I41r^x;qNEFlDzJc(sw%KQDe3CftJi{QNbA=9q@-JZP*QR*>`~RTn|9#NZ^iOE|(xJs}2%1*5-?;2?Pz6mZ*_nuWbNpYR>5cwOlKT#qFLAa~ zZ*qp|Hg__`X7HfU#M3Qe7@Dq19n%b}0er>Xc`2%2ySL?VrflX0xKvXiqxxGU3pXMHek5 z;8f7`T&vwMG`;p{$NB5-PO3m`e}Kz9*-7FhI+!ljM5GvkK__Jxf!O!XkN0l>4oyvmp{bdt3kbxXH*MPZ9hw?t#br5x zKy1`dAhyfW0t8~$0ce^x&1Fqt%A_CAv=lx+9t2_&gcF{R7$0c~02RY6meA!vG#=V_}7#Mb?Urr`jZp8XY??nnQCri(5y8!y*}3f(n^0T_&L)E=!x{6Qf0mG~EEI^RSEP2*M2bb)>` z13wMKZ=)O)mOlfrcN0hbCJ@_+epv@1!CP3W&{f{I|+Y>ri%bHbrg&m3dEANegdk@LlIb^h$ed)PBvl|5(1st-v{=iu!Qw&oG-PhRc#}=I@eH@(X;rB! zw{0Z-D>T)0)B9Z@wx0BtKx~QW;(vyw*Zu}g$E3F`$g02>{#PLO>hGax_&-3?ar7U7 z*m{)K-vhDXe}|@*ejA7#`(M!X)V~H|t0~jJ2VyOHXe+38hYaTSGjBYtjCgjmTJy{+ zKf`|x#I8{@jr&U=){F5wXi8=MOCWZp_b@cI{2qu^{}*W5{7WEK_eUU>{=WcC>q&(w zXgYd()%M>*Q%6lzAa?C{Xv!akre`m4W+m#>9gc_(Idmq|!!NMPb*oXKFcV4ZbEbY{R zmWxCGcLK3pmwyw8Ep!=%rlNm^rrNa1A!us)6PmhUW)1~nQ{;s2f!Kr4W^K>Hg<#&A z8*T0M>7K~hAJBB^P#`u!N=zAsrr6&>(@qR#4x1m6+$50@)hjh*)uxVuwC1KXvwOjkwZ9P-(YS@>IGoE|m?T$Bh zwqLwqeQ{dasK*wS{{&65NUA{WZW4f|rV{wiK$lL<_}>GuWHN*9EG1QgtSSTA$|G>ZcmPeUd4x12aTSvo&m)wj3=aI{qWWE>#0#V6K z_#6-$3gET~@oYl87^5L2R?8^|<@rldgir~74iKl;(OcytA*j8w2{9}}G%s&|3bKz$ zhh-%BP$?Ezv&~$BGeX}eRdLvTatK5|4{*rJXXK+S@;(`9J$uy&(3+IMS0(UGmh)o? z?FI0JN}A7I+H;92atT<8N>K5rw@}n(7F-R;D*|!B20$jxfQ9HtAh`^dA(T8RX@wj= zMSE@iM>4rOvks}RzOPILv2dQ(X$ zA&8ClWuiy$(OVhh11NF<7s`;6DpN?YVzgEiWRyy}D5q2a&!^0vEyf@xu;~c7SWZ4I zrCeme%?h}kqY`SDfY#)ZoNuC&oi7!2u1@I%~B9~Iif;P(t;oNLoAu50km9i=4nQ)5|z6FYy3TlTKe1ydtpsiwD zOeo?Hi3@WPtCgq+XP9BsYWCnJRj9kGy)yz3{TMGJ*lW$3-4P3A#2wKmm z{P2vBErxbUNy#iyvY3=6C+*@ud&H20a}W^NDkHfuh#Q$b00# z?3H32Fa=U-x0rfELCIK53SpxuQP_ntQZ|ze(wJApXYO#Q7dQ}GjI3e-ym+Psfls2y znF^8%<77F52AF4u6y7i&5MJCEDaKliv1DURm1qMtdfO7PF_4(6go*%0ltcT(&>ksi z#1i@mIY#3;@g}3Bg9Vqfpsf-tnU48-an@=A!Uk60DOPV=6-@b|Jn}Ql_MU&myi8@7*fLGg?fnnRGFV_5?+{ zgMtrofFnHyVw^r4sF+DPgTR-iFiOAtj+oj)KHb5f0)SpF&kvV0E60MD59&1ue1T0l z#)Se6=xinoAln@_T+V^`ERfY5M0P3QJ4~w7=BiMFFHJ>8a`9;#s1Q-rVQ+G&fVUMW zPEw4C*SIZ|aJY&^&f<|KAZ?)>7?{7u%p3PYpd>lrh-Ln4q##6jVx|J;rNp{0K${2~ zt{_QJ6nqWE>IHcpf-^Lv=OGpJ6PSD%RksCh*N2uNd&wE-g-oazML|ylC1&{zHua92 z`a(imapc4?F_a=}!xQ+RtgO>bXGJsWNqL`m3x6KYxh{xR+-Ab4_H!iP?}$ zmQ*$<&$mnK0DHX1ROP*WWeNM)&I%6o9O$KriEdoFH4_H8X3)7UVE}81w`QCapuod= zUF>>wWIR&%jI@spuq=$XJ%5@5`7cD`xv;G*b!^w+OgYh>TfLr14V*;V*aDFLfffaP zNld9`P!7rA!Fa?1PZDbMVAUItRb*#Fh!&kzSD_4+_|jQ1)p= z0{)`3{I-(vDV?-n87hNGg$!u781N|>xtM81mJ#l-)ZR;JJ>1I`QfP(boMr~`K0<4; zDmy(iYvN7{V$UL952fAX!AGx=xC|`hfM&C4I}RTN;~&lraw!#DNi^q$VG>3CI{qR^ zcXRte?f2RgN(C5Q00vkeEx%$jAdn$!DXqJPTE`>r2B+mj@Scg#J~U`R&N{C)88_lO z5yel_bzXLj*Q(x-#7ASTSt8${9R}l~r7mvGy97}ppT55H*4vf_TY7{GVmLW7pEPIL zJ8icf7ZB#WpnCe8=kNF>(+Lq(=VxiZ3Mu!FEo%(+**3>Ms(v5l-q^G`Wh}k55e<1O zZWWbJ&`(LTq}_7}JLbW^dn%>fI=nu|=g1oWWn<@;$}Fm_O!HgfF9nB?i#^SAq8~Sk z&T6%^n>mdhw7Bsi+q{s#+Ry zeBS8@eo^f9kP}fC1?YDo-?^h5bZTB@sZ+vSmUoqnIO4f@rbO$=+AW;b%krz2Hu%|M zrh0B`X5=mVO!k6x><{hjD|a#4T5@3O+gar3?AAQTsFM?Yn&)p51(OAIc5tqzHYeF3 zDJN>vXESqrv!XX|arTJ@jcL8!CgyN2qs%=fx+jM25GvhS!Y)3f)Q#{vVMb@Vct2AM z%Zs|46B*qk%y8ZUwjev|)YfN(34k%3yGc5OJl7_xS2t!8|A~grmyRe*b{BJj!E!qr zf=(F6Ay&;cHYwyNp76W=F2rUXqS}^bW0IunQ(=&vmVhgC6OucsOEl!T4V7 z5RY6T;@Xvyi1@NUi*y!}-d@%TGAlfl8@;8|v-%Lu((P6`t;hY=eiqYA>`}mgkZ)yCeAD7CjlmU!UGu-;GIJ7m8>t-ja>o7W==WgJ?DXTaA0pv z)Eb8pb+;~Y6wAsR2;AsRgSidO6U!_fX@uwGCgr8`qdYUm6vsUjEqOwTQj6Ue0+KNo zz#M*i_Vkq0dB^w!-KfhkBF)(mwfLrmhaD`m*o;L7Qf8GtyQv+{&21Pl)3s?nZu9Zb z63sdJoRYjnInd?ZzR2|=EFqI8)C?8J6Q)J8o*l+&oj#GI!=k%A5@iJh7wg^H|5+5| zA(KvjFd}$8VM$a(r!Zsk?D?b}^JZW9ntkSevavO6mXTz%?#7!W9se7Wy7%S#7@i3W z^Bj6-%wTS)b=@uRE74zG>{hDf-&a<5B1^~nfaW}%CnepXjRu~(CPoLZ;qH#leIjtp zPsWd{M$;0~v4+pN#EFB&=(I@;zd0J!^%J^*`E$B7BD-Vih}lK>h_Fj~H<(E_)6EF_ zeKW`v>(U&VB4}E*F|Oc?Fs?a}wp_eaXK(ThjV%tfE4&|RuHXsYOIHXy{0``u%}ZM3 z<(9(gV{Em7_~zAtG_Kzx?Xtc(Mqe0EV7-a<`9{3mGB-+4mWk$`U=Iye>BanZcdgZ5 zWad)-_N6vY4M;5nTP+8pZ>u?sJ2_s=-~`BB?8b$41(v1slIX^0jZsDX!M9?{e2W7* z)rt{j#avs5mO8yV5--O%uarqPQKJnR4ddJR)TnrOIG`~kHG+}SV)79{pu_Bc~H`O`A6^%B@AR0_e7|nGdjF-7lqfR|k-&`%AC5gASHP&g>$npQVaXZC} zRGMeQ$6L>I!p)4?u2Wr)Gkq+@u0JNk`g&tcEchui(jRJ;GoIOW@1aBtV05gWc!tzH zA0#Z+V_?_2Ty|LJnC9;ypapPDX`%e|pdNQuL1SHIG!KeqrA{i#ovN`R1SGu}l%))u zsafsZS&ag%({j&9c-6pq-GrY?}wwM(Og!NNqRE8+&T4wUGjE(;wl z#aYKVq|H-aTmEtC^*K*FQ+$fcc6}7iv391XO!hX83=d?HYow&A?C9c_rR`&~jG57) zMdIsYQJTx%%!pAw9MzYoraulXjUEupPxhXAc!zdJ6l|(}oFN+R>PE)(2(&M9+wJat zPVss_)-${he>-9~Wo}$FeOX^@ke8Ce1>5apB)oAA%L2<}QLM0gOQ1^Dds|NKX>uRJ^$}Qg7}ac=zC|R;|4Q$I$yYC+GJGG{xdX`pk#enSQ1Q zEjW@4b6gMIBGa zqptW^@&bmOf!9~QyKLhobgBuYM%O=7U(dr(1+3(N>N>5;zIhfl#!1sEaGI_G*VR3G z?k#!jtzFiLdprtgH19f%GKt7;lSX=^9CIS57G=pRgzSq+SVI@A^@6^VB@?IWoF<8a z8(1Q9xR&UeTuYwL6lk*e>e3Dob4?7{Ut(;|8Sor`qZXby=v~A)T6 zqtGJDml7&{sFBr&oSS8`cup)@EApe)IGfqjCGrgYZW7TYsRx=&-ej)ZacQiunHmRU zwaZ9Lj1=M|$E-p)j)OHIB|vir>U7(y3C=lDsSiWDdas}_+0`fHEal9%yT(bn;)C9{ z*Ab_g&Avr*zfQ&MNHl0;;x$tXc0-L14IWEAIqfix3Xutls~Q{Z)8ACZv-TOB=3$9# zP9JKUWJsA(|yv9`rQezt3)x${+Q#&|U3FyJ?n%PXDPI}n-XFE*XEsNYNtLX`| zNOvFF4&W@Ea@3trruwb718u|Jq=suI>UAgywsZfp%q2&l@i{hy>Wtn_J|tZf6D**| zOE+b&;%6fFL^kfV_0}CZA8z@HES{Ss_pWz;uAIwKZ(N(sffv%3lGaVNF`hT2QlPPe zA@pGtE>R}gagQ!8!bGvoRvWR^5(F{vh;EAk`3rt2zT7ugXdCW3vCBeP(O zg_D?q$_X@la`C%M;|=3<*P)wVq{3zRD6Yn|=|U%xAWKIOtV7tn!qTe|o zjFhmx2R}OpH=5;E9*2#P7UUc%F9<9v&&>@I3tcM42YZXQoH=1d5=E5}7P68!C{s3N zZ2JoVk~1}lRP~?_ADmn{rfj?`=iF}cxCLc|+_bXVKolH@=dhEaq@qBMFwhD0fIcp= z!#zNbbK&r`2NHu>1omOVVp+~2My{tIX+|_5P(J3H!<1|eE(Qc&*G=^SrmzF8_Y7qf zCj>>;xs7F~-r)R#aaM{8i#Leo1ShWb#f1eM@S}DHdFMJQSdn*yd2jI{I{0baQ)}n* zV2+U7na!goVF!J6-CWEJP@*Ws*w6u-mv^FibnQSRDp0H*$q{)mAvX%zp;0(14j-iO zp6$*2bdvcj6d$-wkmTgETgJ1i7Cpdv83Yny*assdcz>qgmN$Q_-h$phH2O9UHFo$)PGJ9%zAOu~~jn%$a1oJR;$pLoWp zWvwZe#U5cP7QG0uxNHrcR|5Ek;J=Qcje_QRf^Qx8Y1INl?p3#|D%2av^e#>uH>j74 zC!Z2c^2Q|ArP{@viBO2ba_| z_{vQDR=$f4rnMApABe}#jS~e+MR&`#hbVDOlt+0ZYOd6BL+&7+P11IX!@Q6IEZg8< zNgo3U^Z?&XE^tc5&6eR$i<72Tmq6V-@(ss#*%VR;9Z<3c!YKseSIIOhz`v*YFz zd^_uW>VY&vx3TS0cVDF;q8TI~kJatd49{uy39E(e(<|HezTkN>5`CYv2iT59;%3g+ zZHHH4f_S?Gg#t%DM)&CUxpJWg2i%Qzm?;cHlE&q#lBB*eVPFnE0!5g~InN$3XHG3@ zhElgo=RlB-=n7G$}+||b57(33+9r*WV&6mWR6Ze z0i%PjBSE_(X{tTrvX*u&trWJM*CLdbe!5D84s3>^{N(jIpTrqol%YR z;$Tf(&`$j!X&U$d>EZGZcMG!6Y&p*TkGm%g=jwT54&4u_h`o2{1xk;Jv62hT;_uZ| zo`K@fBjW_tQe4BSdlyBg=`y}qHD;VlL+05v?J7#ItfPK)*f)ObmEB!UC0)&xT~`~r zT5g5ys^lAWbzO^1o{YlC@%IO(bugfTln>*7L|5-iK2iWDCBx4lcSR3}1$#fy-mwD*vgI zgVvX#4P;>NCEt+4A>2me!DCa3)&=C7!ynH~VSr%o)Q5eY3P^m&In6D}40NP0o=55I5Y3K|_ zUAx}}0lGWzK!e25)=}t)`MNnk@1pIp(c~mP7};kMz=yT?YJEJjg8B{LcyvO*>koIm zIk@uOk8-x-rdH3d5D8s79-Z7Q95?Xj_-5e>gU996$5Y!vZDu_#5aEiJJl;F@zIS$v z2`2>4;X!3Q|K7*YfTA}XXKvPs&*4!TdDL|eW_R=8Df<0N}q&QJ()Ku z;#f%PX9puC#ml-d3pI+ne;hxA;El1D+2ewd&HR>Vqz5YcIa0;^~&Q zruwK?2M+P&}zYt z;A&oW)q`0Gdij5DR@J7u6qgZ!czbuy=8slb85%~JWVcIm-XCe0DaI7 zW5yDg1q;mM1kF|bR}1>hyfKa0&ktXCUf#WU@K`q*-^SM;Sd4X6=qVrGvRkyv=mmKT zIzNJc-kDGLo?p3ONzk#N<=u~AmnR8xBh^s+p3)aR1pbO;58khie9#7_|Mcy>ilTd? z*NUPp(*y^%#5Wc6U+rDi(iY#E6yNr$|FDtZt@G=5Ua#M32|f(Qm$xl8Jl1ox8*Qk3 zethuZF1v>sI_R;l6f?SK;Tf^u)Sxi97~<2a-pAPmJcz@?=k#hFK|Qs@@n`X16kj6_ zjhU<{u8LxCpT8Z2DJytR-~SvL_vXFx8)W};C2e_YLBICF{#QwFw27}xlNXx|#2dZh zf2KYBy5pr|z$2Orb^k&qB<5~vL8&nY`8&7pZI7X`&P%~d(2dd+mU~v*y!_T;&kFo9 zPDxdi!JyJOd2!?IS6A0yMz0e%1-%>16F6@ZI8Axya=c%A8b<&4VtIE0qlyoWdSPP6 zXIw*>%m@LkQKG>ua!xc-w$QqFVOmn(mdTIc!IgB@3pMtVPxpC#cUC3LeW1o(wP{P7 z*0Q&D7x=ht^yQD-{!#CAj`xpUyK>wfLGVt2Mcg}=wSrNS1heGl#EtVm{9y7615;oSAy2(^%zQf zUL-xA^K_Y0qs0vQ>VcmclG9J`&93;0eYJ z2qIC$gT2J%-d@4Nsnv6_7JQxHe*LzdPZy#hgE(I&KhtFLchlZ?XGN=tUoBVrq|Z^% z#(gqj3X}zJ_7Gnyt5$v}SZnkVP29mT)_SC!{4ziLc!>=EY@Md>;VYJ7&W5x880+Yw+_B; zB6slA*il-yAMT1&=)U6HFI@cT^5S<9%gft(411$SuHi7+*59Vh-(@s^jNSZwYu+dK zF7p1*LdofuJyol=E`Jff-*s>*N(dmds`kvqjw{=6WZZa=dOrFT0}9Vl`>*B<3?ulf zwhLN~yU4@*0X1g{Tl>R_?r8fhE84X_*-Uxa9vx~*I!_%;i7T8<=5!~Lo*>au0jDZajq8(6UUJgG0VBH~&K5fO8@oI(O5@1Y+tT1t#+DNiV*Z^>E=hg?ZW+%@q z*+w%M!{Hs`^mpWM-Gmu2{e799(}Lz?^t)I}w&jd$xYPJiJ-)tZ+Ah1LcaI40i|*8j ztoLw8iNu8?)AMI8Q)COH#<*(~F85;$Kd$q19Noktk`Y@Lms;hvMiU^Q5@ovJ3R`#8G#=3skk?ZY7_c-iBzY0C1#H~PgaY!&K_?SFjIM&MI2qtno665 za>J=__-HB8oHaYJVMK6Wo=7V+{*ATt;)+_l^wP5H)+a+a3HXZBa~<$U*=Egg>KSCT zN6Gk@nrGzE$qF|@XhvwM+TEqxI*M~Y;z9RO`W!hLq`dn=`e6&2a3QKsKS}4?m#_A+ zuMfZC2W!LI?;SaLwVS+D^QPUKvf?R9?jdUMvi0sH#azboYMX3sINqdMVt3ZJMbBO< zgme{O%Td0t*LBzxNN8P{74=Sc{2f2XYZI>;th^Wn|KX`km{QVkGRS6PpGNBB_@&6? z_Y!QWQ*hT($e5Q~i`U?GCFH_9xjS{jx#zDmDj(*(ZMHqzb-ZQLgME(oS0BiDcYoDY z|B9AD^3ss&mqs07j*yRexk?>TL)WWKQc9-M#>FgtQfiRUbjJsGv>gCqKpdlV#823n1|94IVUbT9SAxq0pP8qP1j^zB`@^PT>$-B%kXddXVpey6TqSzH)j zF-OyAaOuqe`;2N7QS;q=5?K~|qJU+hioSft z_w1Xb4bR7gBXwklvagq3yloeb_HbKT-F)lZDYm_x=F4?gR_0!)mmVig=L!aD6!ING zP6y~Of`gEdevHnEG; zKOYm8_!p{~y-a)%DQh2Jx9aGs0sWx7>GCOhvO~m`8^X)qJF%vWKqA^|MpWdK9C65e zlQ`02?#UMK%S`9jY1d2&d*Wj2rg|<9v~0QgUVWSJdB|~+2e*fUwG`@LqLS_&m`y!% zXVU8@gW_!uO(Q=?qY_P)9WooOoH>03wx-S{!F`5V>rQ6{ny#7R@0$mvFp3im`gt2y zd_jY^CPJ3`;p{avv(%NsE8%ZX?m1UK%WmbfvMAT)?8{EQBmdKPC8kEXlV9KMcmTSj z)2tLHpNjgl!n<;s*NV*NOVB=wwfeQ2cI%EGp5pJ`;Gba>dwaRg%*?7c)AM*nAhhynnlN!nk>@N29jmCh%BPE|!TF&)9z+1C`haJiEhHP$Nv>(5p?!O^3 z3qE|iGJ5)S)~UQH=fRxLJhK#=gp}zOhwtnO;MsBu7lM0}Vfsdc@Slk`(S@m#ZBOhx zw#SSgj<0As@~ZOWe**pe9*sv5(`9zfx6&eviV*c2Cugf31ELE%;BD42v~8tL{HKaG zvb4nZXph0Nl}GNiZ=kL66Z$+0SX=akVN4o701Km!be-g0SrrEzTN!?}OV>YX{GKMk zf=p$i-X^~@-K#BE+-BrHaau^}SXzfH;|gA%JUykw_9|xIMy)kBPG69Z&7ZGeXB{Yx zIybmGkUgS+CDdPa`aGcxTKVW}*QuU~xR`_AmEsC#99!!9~Fk&Wm6*juj zn++aHAAIsovTSomP>WXZN9?p3O9B5bUv7QvjC>X@|3g2-=Iz-VA;gay@0cmhy72y` zaP-#T^cks}wwbDVHZ?w5zNwC7W5e2JH3bz&c4cT-eI;J7TgF`)8`h(Dv;FGCfX1nW zjr5)6ol?|@BA5aBoKnw{hz7vi#@bzqbL$(uCZ9A&KKa;5v3|UNLhAb6Ui&R3@&vpceigybKu4(t*T%mKQ@vGf4?ay=%b89-O3Ohea zZ{Y;H6+J85TqX#nP5ojwBCxi2{LDr9b48XyYK8iY^+9$B2C>?g9vr% z890ZjNTd6Kg zjQCH+-M!yNqO`i6<0b0kTn%z(v_aG%AL9{o3rCprXuRTUjbY&G3i?a(wm=W?diyUO z%5QtWT^@&!#>}WlXEcS6{MZ?2guiK2JCb5Pi`rXA9i{Qqu$B(*0{iyJA2QWGatd&T z7hgVL;M^JTKF!HJ;_=2K%L`_(qDRg)K7_`YE;cbG3r25v_zZHlNG-A`h>)!}F)fWY z)iX9*T!^t_B*YuylL`aHQJqH(-=Y0uQ33BKH4qcJj#fvV%Hn)PM>OM$MxJDkxohmG zhaMcM>&EbUL<^X2cWb|i>qGivV-14BFn)gR%Ub8qBF&Hc8LNsc3nI!&4j|+x*Q)uh zGsDN1npnH`XxVYJFB|F5_S{c*l^+(rokvitiirJALnlhR^XBag1*!h@_c}xGW zs@w5$NYELRu@g`uDxw;ptB`>orA93mmPMPnEQs*?k9$g+ZBzibca07xAA5l{LKEK zqo1NPji!@f+xs^bsbwt9@!rtWPsP7#stsqemgE!%%TP8@WYrp4BWruyN`*PdZWkDbr<*%Hw@>* zWk$9fx^-grPS}O8HP@})^69GCcthxi@z$R&0BR}H1{Z3{9S6w5y@+&V@P zP!JlrrSJ|E`G&e6ie?_DKI38-o3%nr{AQw$H=UIk)-G4;3C*#8Dhile?0woN5EAXeC^!RyC?KIMLCPe`!~Nb ziZ6%_HL{%iFyghSN0~qBt?@#;=S9TBJ+*L5_j-d>dS(XUaqd=TWZPy3!cC9pCzQbU zPlmUWx9n{BhM3(lFdu)<`^-+C$2mUV_=e^DYMv*UxUYurn>^gkDN|oc{VpWCb+u4; zmKt_`vshfkU*x*DqpEZ=pK*H_0+nLJ^NO3F@h zbDQk$&YC*a-9uGe1xD6$nwQs5an;AyS5;i~_wxhARW^G@U|`^^nSrxs&73m_6j$d2 z1bfB*3$W~_O`A4v-n@0|RvwQxBxV1^vfH+8OHNKsNl6)& zvfHP&Y;JBY=&phTK-piJtVALiX0pRl7SvaNm9j^Mj`H$y&|sBHrN7Ov z4l~(v=gwWcc=2b6_0pwFmoHy#Zf*ulwzakO#*G_)kFkb8|If(&-)CeQe;V0uf$8=` zMz&gkx#Dq1Wn`;WM)oTAFGlv}KoQA(r^^=$yOZAJ>%hobrP&M~N>}%Ei&Pm|JMXOK zF;_KJM)u2)kv;Xp$SS5@8{^@Ds{=;XcZTaBhLAGpS0g*2)q+@}GP0$n6psTkm62UB z%g^e7)_Y)NOC5octOGO}l+-;FGH6CF>2EZuj$eq^IEvbMuU)_L3yBkMHo@!tIJMwT&b zWHlR9M)sR&)7I}sc4SsuyUNH$4;k4oE0vMm1dMFa6_-sXQl|VcvQ_Z;Nx;ai$4yij zSzBOa=Osybu^qAA67Lq^tX*vRe#MpglgY|pTf z)l?Z-sm@82ksUK+WDkk)b}A#={KLpjiUdaX!e5N+&loFzszc*tx3Ki+VI%uC`8P(k z^lwIXZ)3@S8QCeo$ZiEjHuYB{D^?j71neS?2>!}z@a#P3En6ByYge=)KdKVq!38T$yIN{z4nX=JUnC;pp}^-7o#l8)Jl z`MZ%_3XH62-LR3J{-=>O`)*{N!v5LFYNAM~DkH0;c>FN3xPOSTZq@l$BTJ9^t&tV} z)yO_E<^Hpgo$)s#JM;HO))(n_6tDbX-Xl32{K+3F!;O8dcHNpD`42`m=%JGsxf$fF|sV??~E+|-;8V^ zd)Ua@emAmX{>8{%{l&;yemAmgy7S8aag0?6dTPMPj@w?v|BaD#)9zb2WMnsgH?kSS zM)uPGs*xob7!4cQtN(0dj{+m>@i!xT@=qiC_7@|Ig#GUr*~h;#vIo3}jqLV+HL~Mq z)xgL;#4v`9Y##<8VFHJYY$}TQ-N>H)ZzFr*hmqwD8QDlBF?HC;n*Pqne)yY_9rcTm zC93_qkv;T(z{tM&#mK%<8QHD>zm2T;cSiQj|J2A<|C5m|9x}2eDkIB~{?IaIV*v0a8xL+kb!|2 z5m_kOJvn?%NiIM^%Fo1OA=qjeJXk9xXER9)d3m#xScpwmXOfCJ-kyVyYSfVFHP57Cj69w?~oO!yQ+-o+uUR}dY;*D zMFOAYkoPe2LnV0@92DgZN=uG5mtbs^n6X@ZDu;ZA3(J9nlfsu|6see~$sMF0VIQPt zpwd7cmIt3>kuzANC0wjp6fToXu0|aJSh7<}eZZtCcn5C)(#V0fNU=CRCX)jMAr)xk zD-yVkMU{)GoeJuGDfOPB@|0Com-tk#g!bgF%PW*xuk`3e4mm?X4CSG*Z!m|%v=?03 z11Wq$dMsRehb>G)F06_7b)JNGE4XL%$CF|wJhN=Y`$C?}ZYObKb56uX*C zynv$hNU3c=lZqiBLI_Y|y;%5QO=Bs-(#(160co zRWTxiV$YHetDvn8t=AVsfR7Vm6POy@Z;xu>!O#gSl8+YZQ=K_qa#o zN)=rc@$ju@kSSbZx)>_vQ0nC1!K!RwQ_{rUkpg)op!7IanyO&a zdc@RvDJv0G323YkA)k^_>cuJ=dxuNy;v7+ki-DuQ42l49(s~Z=kSl3$r<9Z^Cax6| zx3Wm73@8r)-@rqJx0`CaA=@kTEiv-$-9}cKb(aR zVq8pX#%PI=adKiBio|7}m?aAc;^D_i&Z+m1ofvcz1=J^|a5(4G0$Wk%olH$P~RyhFJ?Mi^o;d&XRQVjJBAp7Nz`WqCFK{<{h zi#fz#z_8^KwKu3OY-o=hD&~@pGbn>q5(*Hj=fo8C3#28S2N*UcjRmI$z%r>SbqY}J zHD;4fOw}Zuh32|X_E9%EDG+C0~8Ib`IEEdq+||h z8v+%eRAuRF%F0K)15dfvPg~u%!i8&jl;ctosg+*Eq-Z#h9)-iAR4A26Tzei-=MZy& zxR;fRyDv8(hp+Hn*NDkqwh$ay2qebtM#%fQ(5tV+^{o84{?9@Doq^*9;6C^c z;*9@;og&4$%Wy$*d}$}%kNX@Bdy%PlaZL>V5S;%o34xTD<;vzlG5ItCH%Z~C)>OFy zZncF1P?)LPkqHPHG`m|Ruv+UG-eLrFQSVD=bv4B;lK#^uax4m?&q0F}%;FhnEh&1u zgx1ZYhJ~sia21M@$G&QSh5-bIQBXIdcIEl~>3JnEcnVG50)v(nLNzAR>X@5O1V{fZI=oRUXwDQ zXG~SD^&SEjN^AVY_rOFa2?}nO!E>&?I;VJbP)?fv3OO&KsPpmXc(mL-rKjSZNc)hpNx7OwA zYun8mGf$%D5GDIi#P{!ee!_ZOYqq&d(BfcCh1pCSPFbkPd8_4b2zm3EhmH`T zm@zVFX7c!6(9Qh(Bzv}Nt@{)@o$ld*_Tb_6E`;3tW(+t>2Ug!Rn4EimyB0Q#(>%?4|qvm2~g_Oh5kr$9H&chK+5Q z&8eBw92+@y(B{<0nQ};M&LmAmI=r-Vb1JEvlIGZYm0nX3y`&`}uabJHBx#PRR7hS@ ztVcy8_G!HXjjFw8_q9eAM}T|!1yyNP zZUbk0;Fl+;X7sdKLXzlV(pmcKDh&j$CQoC-(kGJ2qv=u5zqTDm%+S-sA@GVwYJShD ziw=5;gp8Uj`?Egsxo%anvlWv_53<{gZt|ZK@aja54xg&{;}5-Y;bcY2zq_x+ia9S` z_A7yHLar}N%X5%gWR5{{UJS>3JuuT0+hOC+r%Tdibwf?RPZj3uX-}+5t4V7z^Ml`u zkE%Uakwi!;0t+vBFI7xX$$n8ymB$bG!p;W88aEMGJsY;!q!*kvJ3||2C#jLbT`Bge zpXswzY3(rlIe+xiaC58NiQcMY$XD+WZ(8M4L}i_;pgaz^ul&=Wp0USV4=L(Hh#Jl^ zpepI?d@dYnvjEkO=7!7?Qp+B~)LM-ydj8F9Qtf?xsU9ciY$&Z&vLePquhSc17VfC; zDvL_)YSO)|^_Sbh%Gt@pL3OiI!^CcxVeCY4wk*MLTGG2-;l6mn(v_*AA6$gqoQ2v$ zg(ln+dz1T}dCd%tb$t&v~Q*e{#K*i z$Vg1sF%zt^X>t)6)JaX{2Mf1Mw`gRNhtTnCxp(*i;#u$%p=(IIu0p=a8<>jk+axeU zW8fXWZ0x@y|4zl*-*%X`FtMuOJ6+Q{nbZkEhcF;NmczK7bWgoO;!aAseF6TD3~SXn zi2cyS>2#u}?hVlc8y3@wiN3GfAu=|8t9*bn@6~ZTHcVhYy}wThfYnO{=#7;i8%e#v z+je;Rqf(WROfU6&lHLcR3ENHNTHY>uHb7B;AX*XzJfg(QDu;3Y%Zn>0U|+*TW#&%l7g}#~ z>$h**cQ8T!RfSJ)d~Lo{dkf}aznNnZO+7f=1GDQGh$N+*EYY}+yQD#PCkG^ zdOMUbk?}vdxcc1lT4Qv@85g{X!MM2Bp0NXNF&6^b0_w4dXR5~_!*x4k4{So21woD; zs{2}vEq$1Eh9wZaCk!9^_EFKM9wOLg&coOStQOu$!d-8N+3mLv_Wo6uT>ydGvpD(m zxjI509&YD|5K%-QNnW{v4I^z@{zwusvckiNc)EZ=;YqfkR1TXv-C>Nx^Jz|!HV$Zei|{-mX6_G@2ctTsHVcSa2- zGS*4?3DN$eq8qhh1wtOXr`@y$TYoT1J*t7LT`7Wi*)Q?@UAw(fWDlfe;0AvRNizh^ ziN_Kl3bQc|=A6vS+#RD9S~00}lVM|*!BN|85RbC&=vQ}cDauxx(kTN0xb$EMZd$J5 z6%5fj%K%8ra=6vVIsc6ewIoLq!hMmqh2G)`1A~6$u#wOq54a!EP=_VTJZze1Mw!8$ zgnO)w?u;5gT(lv z&0_V_L(r5BOxoY}d++`c4B67r&DLLLV!?krICL0X6rVeFt6K)MB%MBC%>bY$7(N@u ze&l;s-$VSKIcIvz*eb$$Qp3e{h`?YLU4c#EvR8T}8%SVXel2zs8|2o_K_w}E#{bFB z^~6`pAbLq&$N}oMjmuj!(uwzVZ=~{7m#0)S6HR>2OQG74QYRgBo%VIHfR+@Z76h6s zZ*Yc?mKG#NF_Sk2=iR{yM z+gNHQwew8$!F*G4R=$5?H}<&e zB~d0to#m)u@LG1q>0$_Sw^z5c{z<>tyn>9Q*XeC_Nk4ejURD0J0CFm|+J)|l+}+=; zEuQnTpoXYL%1QVq{cxA)9U7sC&hO>}V;T%j_^Aw@-aiWuOoLf@YbkuK68R3@{UI6& z8J&vXD%3-jU=RAm-C3OA1^Ch&9LIz+rLYlo+1DSy_6mH|JwBpGhU`S3gZa_H!psVt z*g3wtgcHX_rmuFS6LCzjAaoA=^j}$^p1_}iQ4<3!sW2SPo4pT8sem^=g@siBlMY+K zBCtOd-eDzt@k)>|vLQv>2})#-oX-a;6p(N+96kK!E|B1~tbU!8{opldJ6rfnhJQm6 zcq6LtrcMJ67;>)Q9$gT+3Iz1G1Q7)hG8mH$zu*Rs8UZFhfb0J@@)frwJcQbgbXX3- zb}cIJ4<`0Q^#mC=z*U$b7m$}P=*swuB%#~^7Bs>qSb^z8VP(NZCP?^o4)AH`ZJ6U) zvLUu6T0x@fTKs+leYR=*}3{@xrd<&*r2^u$1d6rRR_C!m#2Jmi;YhPx$7M+kUQ z8fNzh9&;sbR6!D@be$=jA#HyBOv=GJ#FPj&-T=Hs5H$*WJso~eEC^zGTa8qq7<>l0 zFFM!p6$YfMO!7I6@OMkE?OlLx8U-tL70wkJQ~@`s{U7+fo$eSQzG&o%HUYu1&iaH& z0O}A|&w;JW=Ft(b=ypLgxq7=42#9o33QQ&gp0+CJWtFS2?^O;#c9+19JQalI@|{Fn zgAou^#M#`=4`nq+_OB1_=Xiu z0|}J4^5JbkdYX*U4+~`jw*6pCWG6x!%p9s@whIEu{QdjE>cL#k5xydftvp3Ca^Tp+l7HrcJoul^JSRct-CF6Qpj(j`rP_CkE<1`>g|v($RJ-bM$643^s<1$b@}AQ z*(Bz(xv;3zzj;f54V&imAs~ehJL=n`qXWXR`F)d8)!o2WGQO6>4U!0$bYVoKrzpBL zPI~pihSPSbZsv^wO%AYC%$@NHsvAU!7a;S{dBh#x={gtKgkHw0~kf{Uuq zDmsXSKc~#Ly1nPEUpQGPX8-tp^F$@zgUmD0IjzU$g;U@uc=*~Gb|hQKT;BtMY}uOqnhWC*b6`v zCq5E0%y&pQSwI&D-1Qy{ECu8^*z94Sq572h{_}b&$&=O$fdEA>jQ2c7##BQ*Oo*a5|92nx# zrGS4s;Ku;A_Lp`zu@O{8Q3>#>P7py9_*EF#u(<{-4weD}-bCw2XUZyNxPW!b@Z||M%I6Cfs zZNzzM`Y&%D=hyT#9iYr`reF)7vMH(D4A>T%RDXe|otISpfE!Sgbo>nm)}B=E#DR>= zlx5GvwT&3)B%f$x*I6bPB(YKC=|tyQlpKm>B@2^4N;T&pnn?TnQbo$v2Sm zK;_BDZ1^VVl;h2_C>G!i;vf7R0Y^6}jjty~epBJZ23Tx_n5`xQq2wSm2&}A$V##1F z>KuP(Dqm>_iU0Gd8muXGF&iOCh+7%O+A#qtXwyn+vE4*eJ)52ic(dLVJAuq*Q`A9o z9QV}!U;fq21^>?)OO)nW>6SS)7+KvH6FZF7SnGV7&@3L7eu#d@vQPm79tl zQhueg?P`XPC4n}du@%e~Y_;}auqcn5ULSs(pf6Gt4uM{f9HK%$d&EY$TSdyWXxF*th6S~sNR-TLE z4#sjH2SOC4REY9Z5)ndDA{ZsA#(yyE=hR>0H0FUX<)!n5srg+X+t@v~+G??Z@hYwf z_u4>$qDhpT&Bo15@64QW&&5Wt$%MN1xt-Qa;oioRoTktFbl4xX7^zs% zK5ovU?(szoYmOHs^>9}}`FT?=?w>j4V6FD7${dbTnSEWRk8M7|-mZKPG(bZDR5{drh_|^Px>=%xpFFn` zo-2#zjQ-E5V#$#TwSKvuBIi;p4p;|&RiaaKI@d%2%8IK5<0HY^xv3gbWs?}Bu51-q5_=5ZQa+kwp+xG3ebog6NHoju-e|h^ZmwnM-B_v*)YIbIVg8?sB zz*C6=L@QLr+Ez)ca^wp*E}x?e zZKK;kXTBOjSs>+GI1MzIsSFu_n;qXEMG~x zw32@6NXFZoeJcMs6Avlfu5H|Z(sHgvB-dn>V<_S1Qo-nosI@aG>Xg;3C(EFS;4boXb&wZo5}9L9lin8#Bw{Ra|m zr6(O?A9ulcx&9iC_~S*&5hbO)q=Ilix;%F;?9yPh>)z3;zPzSKcuGtgqZZrv@bo&j zWC>`I3hFN*Z7a1&TQczlgRU=#R@t5MCNjfxL-u)?P8hh|OfwY*d`^z9NeH8^rL4Pb7`DeV_aqb9$b=KH zX`BbzL8gnID61IOI{yDNvN{DlDhK#mE)994`|Cc{-IW;Po!~VM;vx1c3yDf2J5uMd zC$|ER$3|HQv=qKTRvkj4bJe7Tre;|U5Qp1nFe{A?(=!1Zznh*7@pCgfw+}NOi&s5G^C6%%{bUgm=~r2J9sT)vuV={|LF+3&3`{%FvBe9!O&jyM-DM>BK9V9H zFjw<<(}aWThRb#xS^VC%;YpYG!q=nNn=W9Ox9*$Rp^f)jsSw$nAMxM|P8VblB!$QX zh!XVuJGAMKfOcpwQ_uoEz?60;IA#b5&pIv$^|Jo5KQxwo#s1do6#5DHYs?vYA)YzB zD!8$WzRR|49nWTeQ#BT2SG!4c#1nPyANIM3fV9Ec&wn? zUgpck@Re6Lo(lCdS#N)N>`e{2b>hgTX$pa(t^uDQguQOjUbl6T-|tTj*^lwcwX&c)mSAAvFVHU<(*C=oNJ{rz+!n%MkLGV-cXxV81m#u_W9R(H!Zy8ZTTqb*^se8 z>Xx=jFo~`2iC6P+O(m$SM@YGClPV5tQC49E4wZ_P6mk~l&*RBOW51tO^oF#w6hr+P z&=fSZJRpf%y(cUq@Q^-QE`+A1U4TOf{n~2S9PTiPxa$(#J4bN>Y(U|tCl9rfC}m4=={ZQw%K1;=-)s5%N6GH zOR%Tt;u@I3i|UQJ&{B~ao}dpUQ=wH>*2*Ks?8X$@mZhxhyq{B~-G}H@c2;1Wv!)tSFQA}MDFbD);U#W z%QHHdN78@w%P;wQEacz13>(IbHomW=G#jqwC`LU?hZdXPXwDp-bEtesO?iQ-I^;zQ zObrV~eGuB>R*Cz}L7n%oxZJK5EkV~oaOGKFD+ft6%Ew6(13OT}?99Ob@!fKRUuL+~ zm9dzQWL#&{o>O^9(_QW(M)k!)N0Aq5oj2o5LxapefEKpnCik3*L&+`8;k`fz>>SQZ z>(pU0%XLwg&fmq^rhLuc{_nwvO3C|cx1SYb4-X_5sr;NzS!${JR8wZQlbCIh5I=IaW)1_2mr#K*WBa1NO~D#Y z)5cDd9=L00m_=d_+*(d8;{9v@g2iqK)e_95Fflr7p5#3TMg<3hjl&2Y!x!|*&bJxN zPTwOU@}b4g7tjw3Bx=Ddf6a6$MAJq*kU4nmIrTnvq7~P)zL_xZ$1|X=GPgpX-e)LG zRP-)>>DBJwY7ZXc6X(V7^;ED*Y$tPxqBPxNS*jne|KA>dSKD_-`1{wKo2wz`|2k@U zAm!GLcU+f$0+TvH-OB#Fp9v30{ouCPOW2c6+jDrwk3T}ny;*Zff}!nkE1|Q_eKv!b#(yq+ z#Hzagb{jg);MZ#YLin)U9+=BxaXD zovz0g=X9uN6(m%5v5sxc{IX<-IFNX{@7~b^mws4!KlBp$2F0U(G~CCoJe=9^`*WHW zbh&=LkpJn-xs{(Dy4U|YlxleLGH|DC%H*!AUzA_1FM93inUfAoy)!D!$G2*Z#XWLR zyP;V5%|S2h`}*t4?{6tj3g;gi?I-TK{zvukx$(~r!C$_`{^uzFkN*U^UsE}92{?

S{nZT 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 KY?ZW0@c#fU9Ox1N literal 0 HcmV?d00001 diff --git a/tests/testapplications/elements/content/pics/cat.gif b/tests/testapplications/elements/content/pics/cat.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea9987d0f356d159ddf1112a7e9c689d45ca3353 GIT binary patch literal 27392 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 literal 0 HcmV?d00001 diff --git a/tests/testapplications/elements/content/pics/logo.png b/tests/testapplications/elements/content/pics/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d75936b0075ac6d7ef1f93e61d924a5549b3cc2a GIT binary patch literal 1478 zcmV;%1v&bOP)4^I*xW6+xGnRYR~gLpF1K>!Dyt=+TTuS&+}aF5k?7wL`sDC-zT)^xgtDF zCP|_oN}@~>)!Omd{#Ewyh&WT91V}VWWd2bi_FqqE&mG}mOj)qBLP#?Nz#s_vc|toP zB2F1(7^cqu5JZBMAW;LtzXVBWcZ7#X(CTyL@ffcvm5DL|FcFDqyFJ252}T*2FhL|CLQuUdCX}c^lI@O& zFcPJYX`hJ@WeI=!TOOx_B-`x~kvA-QnSyC{jGbudU~`9XpT+7K#)t&E&+HfJm6#aSzGfd+)8Z;XL=f^1~<< z&M|EHI;Qk@roa(#pgc$cRlv{UC*D#&+N5onN)g41-2a3Z%H0+#pEvtlK{m_HAoa z;p`El4Aiiz_r6mvw!L5RS%P+CM=F0I2z=e`B0$X#4*!x(c-kHAjtuxz(>E9)o$eK- zA9`6e=Lwg{l@;oXEG5Z? zMBj(rHfyzdPIZ%Sy#zUBo4V zb>!6ySH0OUf75FOMWOWO&)tfzPv3cN}?OhzTUj_N4my$U3 z?i1&lQd2f3%2$lcD4kR9M6I!=Gqbn5WRmc9oXrSPGZVX(+{l)yksFi*y|vJDaGl{> z*|B29>=hMXNs`^+Zw*SqIco4*Hn~LMOc4~;+80UOqXv(OS~F2d9#%OiL9+1Kb4c-Z zqODk=*hl4t2uh;|kJiBXystGV7WW!82-#QTkf^s$n%?+QMuAM5JvqP{&)%q|U1?_L z=Zv^SW^Z?oF^#_~_*_hWzxjN67qH-*^L<5ndqqEHy5C9FyJ(|tI44(GhS}${1PpKM z%IFi>CqqeSAleJ{GQ26ReBcm3GIPZh~(vqXtWLc=Wz#K>* zL4lajJnGb!mwojs4_~~YC@sm^ii*=Pq(MP4Oq@{%CfPmRU%XfpSdxLo$e}$su%tQ` zmh@>2a{>hrl8iBIJRDU+34*^%S4fwj#bVuH@Ydc%9>~b zm>HvlT$Wz^A~j?^BC7m`sv48}SE;dwULMYDBGXFd>fE0{?9Q5Ur2e|H=guBgW`CAi gek-{CuT)*!ht^fc4 literal 0 HcmV?d00001 diff --git a/tests/testapplications/elements/content/pics/nokialogo.gif b/tests/testapplications/elements/content/pics/nokialogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..7a30f6916bd3c34417986c7c510d9a5b2265df82 GIT binary patch literal 1785 zcmV@Nk%w1VSfNZ0M!5h00030|Nrpx{_pesvdH(b$M(Y0_`%Zm(cb&f-um$L z{eY(Nfv56;r}2=o^O3Uip}qB?z4Woj_p!+K!PEG`)A!Kc`qAI};OYF~>ipp8`v6kn z08-&yk?viQ?Ou`YUXt!_obPa)@Nk{*aGdXer}2=o@}Rx+p}zIt>iqBY{Qy(qNrvo6 zhwMs+>;PQk0A1t&T;no(>N0%lGkohaeChyZ<^W~o0A}S6aOV$k=MZt|5OL@K|Nj60 z00000A^8LW002DzEC2ui0Dk~N000L6z<_W_EE%ZmX<;yy(_r5!o52}GL)1Q zMHMiX#k2v*lq<|e6}`9>XEnpUFBV4L8^Qr8!P=OXl-dvhcX9;aOGNfBj#$daSW-GlDImsLYfgHNBqXCcYgdGww znLy&uQpprbdvPOSFU9~e4k-ztY!8OG0GR_XDCbLwEs0?2rX$+AxgSM{$UN9qTwaGFY>> z60tQvv+HMJ$FLS@iL50#M8-rL4H_&cLHVL1F_IKRL;|?2M}l3x*z}MR?pZS4Ma(GR z-bFg3(2zFQOh6G^>#-yMQ9okXmm60^5O7f?tW^@g0=ZQ}0tGNuP(h3oK=2h<(3CK%FpKX=7zone8~l2g9s@f^U7b6@UXH zT3Mz=#e4}yV$zSG1Y1OhA1ETa%ASRla2S&{fLyIj;@gLgT+5JL>|f(65BAMX$YQ&oNEbPhsr znS-&jjmA|2YvHhgE(LJFR1UNX(Li9=adqkqVp0GDk%m%`!wy7NwXXs=ya2;7VBnCR z5DsjRfC?~Vw1Eu@Xb59W0e}!#0~@430S6N#u)zcR)P{LhZ3%#bOg1?3zzPoIj5!7y z&}B*hIS@quCI#8-R@SzGjS$1f8x#Nrjw1c%!Z93FrN9Q0Gqdk0LTr$qqoue#Hi3Z z&>vSys6H5piACz0!K~uvs6kjSZbB$U`$EP-^Kqa74$#iqcEu|V{xBQNn3J?tID=f3 zfFoU)!P104gTu8TNevT1TiVBs{mGyOL>OItL>Cx{jcIFF^CTVm{*?#a;1Teut9nX5IgWW%5!oQ zf+PcAq6ut{87@fV=v-if_<%tLR#V^v?q-7(h=KzQh@Qn5Il8E%ZU@XrC1Hdz0}_l5 zhSP8atE|>P@U=0A;;8`(0>COAynt)%+W|nn1VaSG00%SR0TjD100%Tn0Ka;c5EgKa z2E1$m7OH?WFd!=jTt)#8SODk*&@2hWPh-7`z)CFetV#-j0K**?|!HQZT0)?1?F04Qb>v;5}C{3wKSIW|sy7Z+M bFpa59XG+tW+VrM4&8bdz%F~{DAqW6F&7%vp literal 0 HcmV?d00001 diff --git a/tests/testapplications/elements/content/pics/qml-borderimage.png b/tests/testapplications/elements/content/pics/qml-borderimage.png new file mode 100644 index 0000000000000000000000000000000000000000..8035c79f37ad346224e372620969c4f03347beb2 GIT binary patch literal 5580 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 literal 0 HcmV?d00001 diff --git a/tests/testapplications/elements/content/pics/speech-bubble.png b/tests/testapplications/elements/content/pics/speech-bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..e6811ca899b80085a617f78e77d4664352c828b8 GIT binary patch literal 1864 zcmd6oYdq9x8^`~H(l|u>2t&jgp%~+o(;}8Je`B1jsMZW7W(_kj<&@(`wKT$v$YDv0 z4yX*PoN8vHVx`S2tuk_`CWD0LK!azzcwRg&p7+n^zV7R~Kfmku{ao*^yCA^NTUAL% z2><|95bYTR01zYDJ8;i#S+4A32g}OtD2%r!u)TAx_uXX36etB9o(uqcIXf5furz*Y zM?6PykNpo1l)AJcWvDsm=^m2$W@$2#6e@(USC$>coqf#glGWHwDKYK{6<0m)sbeT1 zs|U?6VTOzNM5xs?x~xAz?K#~VUqI%%5cdq~i*As|`h5Z-%Z&*IV63{_chP0nXC>T- z-p%B!jECwM92z^AZUQl*rm@RWJhis)#GWr5S)Rd3GbH1;1JTP=%HN5?J$;;qs zSu~aT&xkSIMJ(FvC({ZP>Y=S||3tmv75Qg54QxgBE(7Ufu}Lt+mry3xktQPP6Mu;! zWH`51SDVEXbJy4En=S^N!kXH9jndTRRMehK8w|36L4Ms6?}MB{hKg96JTq53e^7f` zZ(7wSSEpyo=8z2v`d4`qiA-v2Zf9In)kW*4<{-(nGo@Ly!hxV`8yo2KjKTDb_4i!= zGz*2jawd;@mSYBP0i>>Pi6Rnjh-Ffj-+9!-)s45U1h#4GUlhMHaiRYDWnViPgi7bHhTTeAv|>%hyvL5xuD<*+!@0h-DBQc4wehE=qx@HYTRpMm&%=?C zS(WSY<0V+JficffM;9s-4yTJxm1l0+Eo0wD9afayX})Z%=0^GzUKAN?GSP%JSIlxQ z)gBukYinw6r@k=;=RyM^y7u(u+cPT#{c(O+RUsD3bvXd0u$UOAon41795r@9?!(oq zTo(oG!Amb)YBVATP8-G;-{x63uRB+@l$%-f@^)zx`dDrhtKqCXB_ z#p2grlDts14CqSK3#a>v@t7)NmMKcCrF7tvU{>p!sPw2k11pALsw!9QQ!}}}X^Zc= z82ewkE=WrnZwoW6?(9A{nXLBsT~EcX6Azr+;6%ZxgAHE9p((p~iEwLEWBl&fEcEEo z3Qv2p_eS1h(!?KgJRTg29Z>_jGgrepUnpzd&wh=_+8DNp`Th4DwQu!U3gTI?p5E{Y zmO^?ux?RQN;Yv9HnS#L2p*#qLc{@<2*!IG!S3z#8>_YRo$i6ECcw!?DVOqL zIlfcyKIqnYUueEX9 zuh97J6AML=0! zFT-+1pzr{mS=VeRSTI`p{82i{Slqqk3d86qvy)p}rTAxie;IF$ZfRM3+mlFFU;<3D z^J}UHTzx-}g{?2obEPneF48G{p;?(--jzJjj+g(lHdQVn;`z{!4+dZ(K{r&`%RIWm z#Y;1iGo!Wo4oUf2m$fDozXC=8WBtCjT!%6A?ZU#m;M4UPjv^Rw0@@y1QA@^f$qg|z zjg@@CTr?Quw9iZv9H}#LJV$H1SKM;1*#D6v@3qIY0cEyI?8jLtgDkN>-Z`vKjKh5x zW&VvgiB9`be)6nVJ&V;5U|pBOd|(?)qm`U|q*7s7AxHhFa$W=*;NI+_h|ITPI zH?7Uo#l5~Z^bGf}>sNxV{RBCpw5vQUt3bs5%QY67 zj(%o8c;~9+C{N;4=eB|GG;av#e_^U*pNTQm>o_$APbD}-ClO=?utr*0Ss<+~kPabM zNGEG+CnVAWX(!7*d`FG{0usnE#M5d28*uKQCUBm$6~fF#*Qh3NF@<~WD0>09cK`AHY$olNIre$16S4uKrcVfyB@f_e*?RX BRj>d6 literal 0 HcmV?d00001 diff --git a/tests/testapplications/elements/elements.qml b/tests/testapplications/elements/elements.qml new file mode 100644 index 0000000000..414d5aaacb --- /dev/null +++ b/tests/testapplications/elements/elements.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of QtUiTest. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import "content/elements.js" as Elements +import "content" + +Item { + id: elementsapp; height: 640; width: 360 + + property string qmlfiletoload: "" + property string helptext: "" + + GradientElement { anchors.fill: parent } + + GridViewElement { height: parent.height * .95; width: parent.width * .95; anchors.centerIn: parent; } + + HelpDesk { width: parent.width; height: 200; anchors { bottom: parent.bottom; right: parent.right; bottomMargin: 3; rightMargin: 3 } } + + // Start or remove an .qml when the qmlfiletoload property changes + onQmlfiletoloadChanged: { + if (qmlfiletoload == "") { + Elements.removeApp(); + } else { + Elements.setapp(qmlfiletoload,elementsapp); + } + } + + // Set the qmlfiletoload property with a script function + function runapp(qmlfile) { + console.log("Starting ",qmlfile); + qmlfiletoload = qmlfile; + } +} \ No newline at end of file diff --git a/tests/systemtests/declarative/qsgimage/ImageNG.qml b/tests/testapplications/qsgimage/ImageNG.qml similarity index 100% rename from tests/systemtests/declarative/qsgimage/ImageNG.qml rename to tests/testapplications/qsgimage/ImageNG.qml diff --git a/tests/systemtests/declarative/qsgimage/img-align.qml b/tests/testapplications/qsgimage/img-align.qml similarity index 100% rename from tests/systemtests/declarative/qsgimage/img-align.qml rename to tests/testapplications/qsgimage/img-align.qml diff --git a/tests/systemtests/declarative/qsgimage/qt-logo.png b/tests/testapplications/qsgimage/qt-logo.png similarity index 100% rename from tests/systemtests/declarative/qsgimage/qt-logo.png rename to tests/testapplications/qsgimage/qt-logo.png