From 13d5229c3b0d478761c3ee028947e86988dde64a Mon Sep 17 00:00:00 2001 From: Sven Riwoldt Date: Sun, 9 Feb 2025 10:32:49 +0100 Subject: [PATCH] Init --- .github/ISSUE_TEMPLATE/bug_report.md | 31 + .idea/.gitignore | 3 + .idea/PyRex-master.iml | 10 + .idea/inspectionProfiles/Project_Default.xml | 589 +++++ .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + Example.png | Bin 0 -> 60044 bytes LICENSE | 21 + PyRex/.idea/workspace.xml | 42 + Qt_ui/generator.ui | 250 ++ Qt_ui/icons/code.svg | 73 + Qt_ui/icons/icon.ico | Bin 0 -> 15086 bytes Qt_ui/icons/info.svg | 73 + Qt_ui/icons/logo.png | Bin 0 -> 5002 bytes Qt_ui/icons/sheet.svg | 73 + Qt_ui/icons/windowIcon.png | Bin 0 -> 5279 bytes Qt_ui/mainGUI.ui | 2226 +++++++++++++++++ Qt_ui/sheetGUI.ui | 1610 ++++++++++++ Qt_ui/src.qrc | 10 + README.md | 51 + __pycache__/functions.cpython-312.pyc | Bin 0 -> 15538 bytes __pycache__/generator.cpython-312.pyc | Bin 0 -> 11789 bytes __pycache__/mainGUI.cpython-312.pyc | Bin 0 -> 106798 bytes __pycache__/src_rc.cpython-312.pyc | Bin 0 -> 24769 bytes functions.py | 271 ++ generator.py | 159 ++ main.py | 117 + mainGUI.py | 1357 ++++++++++ requirements.txt | 2 + src_rc.py | 1547 ++++++++++++ 31 files changed, 8533 insertions(+) create mode 100755 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .idea/.gitignore create mode 100644 .idea/PyRex-master.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100755 Example.png create mode 100755 LICENSE create mode 100644 PyRex/.idea/workspace.xml create mode 100755 Qt_ui/generator.ui create mode 100755 Qt_ui/icons/code.svg create mode 100755 Qt_ui/icons/icon.ico create mode 100755 Qt_ui/icons/info.svg create mode 100755 Qt_ui/icons/logo.png create mode 100755 Qt_ui/icons/sheet.svg create mode 100755 Qt_ui/icons/windowIcon.png create mode 100755 Qt_ui/mainGUI.ui create mode 100755 Qt_ui/sheetGUI.ui create mode 100755 Qt_ui/src.qrc create mode 100755 README.md create mode 100644 __pycache__/functions.cpython-312.pyc create mode 100644 __pycache__/generator.cpython-312.pyc create mode 100644 __pycache__/mainGUI.cpython-312.pyc create mode 100644 __pycache__/src_rc.cpython-312.pyc create mode 100755 functions.py create mode 100755 generator.py create mode 100755 main.py create mode 100755 mainGUI.py create mode 100755 requirements.txt create mode 100755 src_rc.py diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100755 index 0000000..819b935 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,31 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop/Laptop (please complete the following information):** + - OS: [e.g. Windows] + - Version [e.g. 1.0] + +**Additional context** +Add any other context about the problem here. diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/PyRex-master.iml b/.idea/PyRex-master.iml new file mode 100644 index 0000000..2c80e12 --- /dev/null +++ b/.idea/PyRex-master.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..17a7663 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,589 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..98cd536 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..34926be --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Example.png b/Example.png new file mode 100755 index 0000000000000000000000000000000000000000..9d121c457236e79768e0db9173c9b6f66b1d0a83 GIT binary patch literal 60044 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 bqG93(`9tz1S3hgF)Pne)u6{1-oD!M<()UCo literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..2b83b98 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 user0706 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PyRex/.idea/workspace.xml b/PyRex/.idea/workspace.xml new file mode 100644 index 0000000..0dbd183 --- /dev/null +++ b/PyRex/.idea/workspace.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + 1739092909700 + + + + \ No newline at end of file diff --git a/Qt_ui/generator.ui b/Qt_ui/generator.ui new file mode 100755 index 0000000..e9d2fec --- /dev/null +++ b/Qt_ui/generator.ui @@ -0,0 +1,250 @@ + + + CodeGenerator + + + + 0 + 0 + 800 + 333 + + + + PyRex Code Generaotr + + + + :/icons/icons/icon.ico:/icons/icons/icon.ico + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + border-bottom: 2px; +border-style: solid; +border-bottom-color: rgb(255, 85, 0); + + + 1 + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">import re</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">regex = r&quot;&lt;CHANGE_ME&gt;pattern&lt;CHANGE_ME&gt;&quot;</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">test_str = &quot;&lt;CHANGE_ME&gt;string&lt;CHANGE_ME&gt;&quot;</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">matches = re.finditer(regex, test_str, re.MULTILINE)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">for matchNum, match in enumerate(matches, start=1):</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> print (&quot;Match {matchNum} was found at {start}-{end}: {match}&quot;.format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> for groupNum in range(0, len(match.groups())):</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> groupNum = groupNum + 1</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> print (&quot;Group {groupNum} found at {start}-{end}: {group}&quot;.format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))</span></p></body></html> + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + QPushButton#CopyPushButton { + min-width:60px; + max-width:60px; + min-height:35; + max-height:35; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 0px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPushButton#CopyPushButton:hover { + background: rgba(255,255,255,50%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#CopyPushButton:pressed { + background: rgba(255,255,255,100%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#CopyPushButton:disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + Copy + + + + + + + QPushButton#ClosePushButton { + min-width:60px; + max-width:60px; + min-height:35; + max-height:35; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 0px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPushButton#ClosePushButton:hover { + background: rgba(255,255,255,50%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#ClosePushButton:pressed { + background: rgba(255,255,255,100%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#ClosePushButton:disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + Close + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 0 + 0 + 800 + 21 + + + + + + + + + + + ClosePushButton + clicked() + CodeGenerator + close() + + + 432 + 560 + + + 399 + 299 + + + + + CopyPushButton + clicked() + textEdit + selectAll() + + + 366 + 560 + + + 399 + 280 + + + + + CopyPushButton + clicked() + textEdit + copy() + + + 366 + 560 + + + 399 + 280 + + + + + diff --git a/Qt_ui/icons/code.svg b/Qt_ui/icons/code.svg new file mode 100755 index 0000000..b0106ac --- /dev/null +++ b/Qt_ui/icons/code.svg @@ -0,0 +1,73 @@ + + + + + + image/svg+xml + + + + + + + + ic_fluent_code_24_regular + Created with Sketch. + + + + + + diff --git a/Qt_ui/icons/icon.ico b/Qt_ui/icons/icon.ico new file mode 100755 index 0000000000000000000000000000000000000000..a5e96121897ae9562e65cbca5fd321f00972ee8a GIT binary patch literal 15086 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 SSZUmUt>@mWPb}}T?*9M=Pk^BS literal 0 HcmV?d00001 diff --git a/Qt_ui/icons/info.svg b/Qt_ui/icons/info.svg new file mode 100755 index 0000000..5a1eacf --- /dev/null +++ b/Qt_ui/icons/info.svg @@ -0,0 +1,73 @@ + + + + + + image/svg+xml + + + + + + + + ic_fluent_book_formula_information_24_regular + Created with Sketch. + + + + + + diff --git a/Qt_ui/icons/logo.png b/Qt_ui/icons/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..3e3922b1c5cf1508d257022a1e9af9fd87a16ee4 GIT binary patch literal 5002 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 URm@0&qyPW_07*qoM6N<$g3&c@YXATM literal 0 HcmV?d00001 diff --git a/Qt_ui/icons/sheet.svg b/Qt_ui/icons/sheet.svg new file mode 100755 index 0000000..1a52738 --- /dev/null +++ b/Qt_ui/icons/sheet.svg @@ -0,0 +1,73 @@ + + + + + + image/svg+xml + + + + + + + + ic_fluent_text_bullet_list_square_24_regular + Created with Sketch. + + + + + + diff --git a/Qt_ui/icons/windowIcon.png b/Qt_ui/icons/windowIcon.png new file mode 100755 index 0000000000000000000000000000000000000000..139ea202b5875ea94c63061a180bc871580eeda2 GIT binary patch literal 5279 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 + + MainWindow + + + + 0 + 0 + 1081 + 600 + + + + PyRex + + + + :/icons/icons/icon.ico:/icons/icons/icon.ico + + + background-color: rgb(225, 225, 225); + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + background-color:rgb(255, 85, 0); +min-height:40; +max-height:40; + + + + 6 + + + + + min-width:30px; +max-width:30px; +min-height:30px; +max-height:30px; + + + + + + :/icons/icons/logo.png + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 27 + 27 + + + + + 27 + 27 + + + + QPushButton#CodeGeneratorPushButton { + min-width: 25px; + max-width: 25px; + min-height: 25px; + max-height: 25px; + background-color: rgba(255, 255, 255, 0%); + + border:1px; + border-color: rgb(255, 85, 0); + border-style: solid; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius:5px; +} + +QPushButton#CodeGeneratorPushButton:hover { + background: rgb(255, 119, 51); +} + +QPushButton#CodeGeneratorPushButton:pressed { + background: rgba(255, 255, 255, 0%); +} + + + + + + + :/icons/icons/code.svg:/icons/icons/code.svg + + + + 25 + 25 + + + + + + + + + 27 + 27 + + + + + 27 + 27 + + + + QPushButton#RegexSheetPushButton { + min-width: 25px; + max-width: 25px; + min-height: 25px; + max-height: 25px; + background-color: rgba(255, 255, 255, 0%); + + border:1px; + border-color: rgb(255, 85, 0); + border-style: solid; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius:5px; +} + +QPushButton#RegexSheetPushButton:hover { + background: rgb(255, 119, 51); +} + +QPushButton#RegexSheetPushButton:pressed { + background: rgba(255, 255, 255, 0%); +} + + + + + + + :/icons/icons/sheet.svg:/icons/icons/sheet.svg + + + + 25 + 25 + + + + + + + + + 27 + 27 + + + + + 27 + 27 + + + + QPushButton#AboutPushButton { + min-width: 25px; + max-width: 25px; + min-height: 25px; + max-height: 25px; + background-color: rgba(255, 255, 255, 0%); + + border:1px; + border-color: rgb(255, 85, 0); + border-style: solid; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius:5px; +} + +QPushButton#AboutPushButton:hover { + background: rgb(255, 119, 51); +} + +QPushButton#AboutPushButton:pressed { + background: rgba(255, 255, 255, 0%); +} + + + + + + + :/icons/icons/info.svg:/icons/icons/info.svg + + + + 25 + 25 + + + + + + + + + + + + + 6 + + + 15 + + + 15 + + + 15 + + + 0 + + + + + 0 + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + REGULAR EXPRESSION + + + + + + + background-color: rgb(153, 153, 153); + color: rgb(255, 255, 255); + border-style: solid; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + min-width:150px; + max-width:150px; + min-height:20; + max-height:20; + + + 0 matches or wrong syntax + + + Qt::AlignCenter + + + + + + + + + Qt::Horizontal + + + + + + + 0 + + + 0 + + + 0 + + + + + + 9 + + + + QPlainTextEdit { + min-width:360px; + min-height:30; + max-height:30; + margin-bottom:5px; + + padding-left: 5px; + padding-top: 5px; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 3px; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPlainTextEdit::focus { + border-bottom-color:rgb(255, 85, 0); +} + +QPlainTextEdit::disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + insert your pattern + + + + + + + QPushButton#ProcessPushButton { + min-width:60px; + max-width:60px; + min-height:35; + max-height:35; + margin-bottom:5px; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 0px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPushButton#ProcessPushButton:hover { + background: rgba(255,255,255,50%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#ProcessPushButton:pressed { + background: rgba(255,255,255,100%); + border-bottom-color:rgb(255, 85, 0); +} + +QPushButton#ProcessPushButton:disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + Process + + + Return + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + TEST STRING + + + + + + + Qt::Horizontal + + + + + + + + 11 + + + + QPlainTextEdit { + min-width:360px; + min-height:30; + + padding-left: 5px; + padding-top: 10px; + + color: #495057; + + background: rgba(255,255,255,100%); + border-bottom: 2px; + border-style: solid; + border-bottom-color: rgba(0,0,0,.3); + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} + +QPlainTextEdit::focus { + border-bottom-color:rgb(255, 85, 0); +} + +QPlainTextEdit::disabled { + background: rgba(0,0,0,.04); + border-bottom-color: rgba(0,0,0,.15); +} + + + insert your test string here + + + + + + + + + background-color: rgb(238, 238, 238); +min-width: 300; +max-width: 500; + + + + 10 + + + 10 + + + 10 + + + 10 + + + + + background-color:rgb(249, 249, 249) + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + MATCH INFORMATION + + + + + + + Qt::Horizontal + + + + + + + border:No; + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 300 + 449 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + + + + + + + 0 + 0 + 1081 + 21 + + + + + + + + 312 + 91 + + + + + 312 + 524287 + + + + + + + Regex Sheet + + + 2 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + border:No; + + + true + + + + + 0 + 0 + 296 + 1465 + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Basics + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + . + + + + + + + Any character except newline + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a + + + + + + + The character a + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ab + + + + + + + The string ab + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a|b + + + + + + + a or b + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a* + + + + + + + 0 or more a's + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \ + + + + + + + Escapes a special character + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Quantifiers + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + * + + + + + + + 0 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + + + + + + + + + 1 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ? + + + + + + + 0 or 1 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2} + + + + + + + Exactly 2 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2, 5} + + + + + + + Between 2 and 5 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2,} + + + + + + + 2 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {,5} + + + + + + + Up to 5 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ab + + + + + + + The string ab + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Groups + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (...) + + + + + + + Capturing group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?P<Y>...) + + + + + + + Capturing group named Y + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?:...) + + + + + + + Non-capturing group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Y + + + + + + + Match the Y'th captured group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?P=Y) + + + + + + + Match the named group Y + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?#...) + + + + + + + Comment + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2} + + + + + + + Exactly 2 + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Character Classes + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [ab-d] + + + + + + + One character of: a, b, c, d + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [^ab-d] + + + + + + + One character except: a, b, c, d + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [b] + + + + + + + Backspace character + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \d + + + + + + + One digit + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \D + + + + + + + One non-digit + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \s + + + + + + + One whitespace + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \S + + + + + + + One non-whitespace + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \w + + + + + + + One word character + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \W + + + + + + + One non-word character + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Assertions + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ^ + + + + + + + Start of string + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \A + + + + + + + Start of string, ignores m flag + + + + + + + + + + + min-width:100px; +max-width:100px; + + + $ + + + + + + + End of string + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Z + + + + + + + End of string, ignores m flag + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \b + + + + + + + Word boundary + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \B + + + + + + + Non-word boundary + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?=...) + + + + + + + Positive lookahead + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?!...) + + + + + + + Negative lookahead + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?<=...) + + + + + + + Positive lookbehind + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?<!...) + + + + + + + Negative lookbehind + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?()|) + + + + + + + Conditional + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Z + + + + + + + End of string, ignores m flag + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Flags + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + i + + + + + + + Ignore case + + + + + + + + + + + min-width:100px; +max-width:100px; + + + m + + + + + + + ^ and $ match start and end of line + + + + + + + + + + + min-width:100px; +max-width:100px; + + + s + + + + + + + Matches newline as well + + + + + + + + + + + min-width:100px; +max-width:100px; + + + x + + + + + + + Allow spaces and comments + + + + + + + + + + + min-width:100px; +max-width:100px; + + + L + + + + + + + Locale character classes + + + + + + + + + + + min-width:100px; +max-width:100px; + + + u + + + + + + + Unicode character classes + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?iLmsux) + + + + + + + Set flags within regex + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Flags + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \n + + + + + + + Newline + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \r + + + + + + + Carriage return + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \t + + + + + + + Tab + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \YYY + + + + + + + Octal character YYY + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \xYY + + + + + + + Hexadecimal character YY + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Replacement + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \g<0> + + + + + + + Insert entire match + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \g<Y> + + + + + + + Insert match Y (name or number) + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Y + + + + + + + Insert group numbered Y + + + + + + + + + + + + + + + + + + diff --git a/Qt_ui/sheetGUI.ui b/Qt_ui/sheetGUI.ui new file mode 100755 index 0000000..0314dab --- /dev/null +++ b/Qt_ui/sheetGUI.ui @@ -0,0 +1,1610 @@ + + + SheetWindow + + + + 0 + 0 + 379 + 600 + + + + PyRex Regex Sheet + + + + :/icons/icons/icon.ico:/icons/icons/icon.ico + + + background-color: rgb(225, 225, 225); + + + + + 0 + + + + + border:No; + + + true + + + + + 0 + 0 + 344 + 1465 + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Basics + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + . + + + + + + + Any character except newline + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a + + + + + + + The character a + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ab + + + + + + + The string ab + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a|b + + + + + + + a or b + + + + + + + + + + + min-width:100px; +max-width:100px; + + + a* + + + + + + + 0 or more a's + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \ + + + + + + + Escapes a special character + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Quantifiers + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + * + + + + + + + 0 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + + + + + + + + + 1 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ? + + + + + + + 0 or 1 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2} + + + + + + + Exactly 2 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2, 5} + + + + + + + Between 2 and 5 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2,} + + + + + + + 2 or more + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {,5} + + + + + + + Up to 5 + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ab + + + + + + + The string ab + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Groups + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (...) + + + + + + + Capturing group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?P<Y>...) + + + + + + + Capturing group named Y + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?:...) + + + + + + + Non-capturing group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Y + + + + + + + Match the Y'th captured group + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?P=Y) + + + + + + + Match the named group Y + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?#...) + + + + + + + Comment + + + + + + + + + + + min-width:100px; +max-width:100px; + + + {2} + + + + + + + Exactly 2 + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Character Classes + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [ab-d] + + + + + + + One character of: a, b, c, d + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [^ab-d] + + + + + + + One character except: a, b, c, d + + + + + + + + + + + min-width:100px; +max-width:100px; + + + [b] + + + + + + + Backspace character + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \d + + + + + + + One digit + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \D + + + + + + + One non-digit + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \s + + + + + + + One whitespace + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \S + + + + + + + One non-whitespace + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \w + + + + + + + One word character + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \W + + + + + + + One non-word character + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Assertions + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + ^ + + + + + + + Start of string + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \A + + + + + + + Start of string, ignores m flag + + + + + + + + + + + min-width:100px; +max-width:100px; + + + $ + + + + + + + End of string + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Z + + + + + + + End of string, ignores m flag + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \b + + + + + + + Word boundary + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \B + + + + + + + Non-word boundary + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?=...) + + + + + + + Positive lookahead + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?!...) + + + + + + + Negative lookahead + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?<=...) + + + + + + + Positive lookbehind + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?<!...) + + + + + + + Negative lookbehind + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?()|) + + + + + + + Conditional + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Z + + + + + + + End of string, ignores m flag + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Flags + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + i + + + + + + + Ignore case + + + + + + + + + + + min-width:100px; +max-width:100px; + + + m + + + + + + + ^ and $ match start and end of line + + + + + + + + + + + min-width:100px; +max-width:100px; + + + s + + + + + + + Matches newline as well + + + + + + + + + + + min-width:100px; +max-width:100px; + + + x + + + + + + + Allow spaces and comments + + + + + + + + + + + min-width:100px; +max-width:100px; + + + L + + + + + + + Locale character classes + + + + + + + + + + + min-width:100px; +max-width:100px; + + + u + + + + + + + Unicode character classes + + + + + + + + + + + min-width:100px; +max-width:100px; + + + (?iLmsux) + + + + + + + Set flags within regex + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Flags + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \n + + + + + + + Newline + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \r + + + + + + + Carriage return + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \t + + + + + + + Tab + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \YYY + + + + + + + Octal character YYY + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \xYY + + + + + + + Hexadecimal character YY + + + + + + + + + + + + Arial + 9 + 75 + true + + + + min-height:15; +max-height:15; +background-color: rgba(0, 0, 0, 0%); + + + Regular Expression Replacement + + + + + + + background-color:rgb(255, 85, 0); +border:No; +height:1px + + + Qt::Horizontal + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \g<0> + + + + + + + Insert entire match + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \g<Y> + + + + + + + Insert match Y (name or number) + + + + + + + + + + + min-width:100px; +max-width:100px; + + + \Y + + + + + + + Insert group numbered Y + + + + + + + + + + + + + + + 0 + 0 + 379 + 21 + + + + + + + + + + diff --git a/Qt_ui/src.qrc b/Qt_ui/src.qrc new file mode 100755 index 0000000..2dfb176 --- /dev/null +++ b/Qt_ui/src.qrc @@ -0,0 +1,10 @@ + + + icons/windowIcon.png + icons/icon.ico + icons/code.svg + icons/info.svg + icons/logo.png + icons/sheet.svg + + diff --git a/README.md b/README.md new file mode 100755 index 0000000..4e7cfef --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +

+ +

+ +[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) [![python-version](https://img.shields.io/badge/Python-3.6|above-.svg)](https://www.python.org/) [![Qt](https://img.shields.io/badge/GUI%20by-Qt%20Designer-orange)](https://doc.qt.io/qt-5/qtdesigner-manual.html) [![License](https://img.shields.io/pypi/l/ansicolortags.svg)](https://github.com/user0706/PyRex/blob/master/LICENSE) [![Status](https://img.shields.io/badge/status-test-yellow)](https://github.com/user0706/PyRex/) [![Open Source? Yes!](https://badgen.net/badge/Open%20Source%20%3F/Yes%21/blue?icon=github)](https://github.com/user0706/PyRex/) +## Description +PyRex is a tool for visual testing Python regular expression. +
Based on the re python package, combined with the Qt user interface, it allows a visual display of the results of a regular expression pattern. +
Also, in addition to the above basic function, there is an option to generate code for the Python language. + +## Prerequisites +After opening the downloaded repository in cmd *(Windows)*/terminal *(Linux/MacOS)*, to install the necessary packages for PyRex operation, enter the following command: +```python +pip install -r requirements.txt --no-index --find-links file:///tmp/packages +(if not, try pip3) +``` +## Download +[Windows XP or above](https://github.com/user0706/PyRex/releases/tag/v1.0) + +## How to run PyRex? +### Using an executable file: +Easily go through the installation process +
+ +### Using raw repositories: +Execute the following commands in cmd *(Windows)*/terminal *(Linux/MacOS)*: + +- Download repository +``` +git clone https://github.com/user0706/PyRex.git +``` +- Entry into the download repository +``` +cd PyRex +``` +- Start the program +``` +python main.py +(if not, try python3) +``` + +## What's new: +- Code generator for Python regex + +## Screenshots +![](https://github.com/user0706/PyRex/blob/master/Example.png?raw=true) + +## To-Do +- [X] Python code generator +- [ ] support for PHP regular expression +- [ ] support for JavaSrcript regular expression diff --git a/__pycache__/functions.cpython-312.pyc b/__pycache__/functions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c816fa375c22d8721df52841d9261f5c6024c79a GIT binary patch literal 15538 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 I1wz~YAK8{ur2qf` literal 0 HcmV?d00001 diff --git a/__pycache__/generator.cpython-312.pyc b/__pycache__/generator.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb903f73cb77c36b45ea256b3c3f03c5c2995eff GIT binary patch literal 11789 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 literal 0 HcmV?d00001 diff --git a/__pycache__/mainGUI.cpython-312.pyc b/__pycache__/mainGUI.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30914cb27ea96fc22427bc8854815cc8a7ffda35 GIT binary patch literal 106798 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 literal 0 HcmV?d00001 diff --git a/__pycache__/src_rc.cpython-312.pyc b/__pycache__/src_rc.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a8f0e052c291a65a1769d60627fa67be38cbeb5 GIT binary patch literal 24769 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 "HELLO world + Great day" + pattern => [A-Z]+.* + info => [] + + return info => [["Full match 1", "[0-10]", "HELLO world"]] + ''' + if pattern: + try: + NoMatchesLabel.hide() + regex = r"{}".format(str(pattern)) + matches = re.finditer(regex, string, re.MULTILINE) + for match_num, match in enumerate(matches, start=1): + info.append(['Full match '+str(match_num), str(match.start())+'-'+str(match.end()), str(match.group())]) + for group_num in range(0, len(match.groups())): + group_num = group_num + 1 + info.append(['Group '+str(group_num), str(match.start(group_num))+'-'+str(match.end(group_num)), str(match.group(group_num))]) + except: + NoMatchesLabel.show() + if not info: + NoMatchesLabel.show() + return info + +def GenerateGroupColor(color_spectrum, target): + '''Color generator for groups + + :param target: Result info group name + :type target: str + :param color_spectrum: List of optional colors + :type color_spectrum: list + :returns: Selected rgb color + :type: str + ''' + if target == 'Group 1': + color = color_spectrum[1] + elif target == 'Group 2': + color = color_spectrum[2] + elif target == 'Group 3': + color = color_spectrum[3] + elif target == 'Group 4': + color = color_spectrum[4] + elif target == 'Group 5': + color = color_spectrum[5] + elif target == 'Group 6': + color = color_spectrum[6] + elif target == 'Group 7': + color = color_spectrum[7] + elif target == 'Group 8': + color = color_spectrum[8] + elif target == 'Group 9': + color = color_spectrum[9] + elif target == 'Group 10': + color = color_spectrum[10] + else: + color = random.choice(color_spectrum) + return color + +def FullMatchTagUI(scroll_area, layout, tag): + '''Full match tag header - The dynamic part of Qt ui + + :param scroll_area: QT ui scroll area + :type: PyQt5.QtWidgets.QScrollArea + :param layout: QT ui scroll area layout + :type: PyQt5.QtWidgets.QHBoxLayout + ''' + CollectionWidget = QtWidgets.QWidget(scroll_area) + CollectionWidget.setMinimumSize(QtCore.QSize(300, 25)) + CollectionWidget.setMaximumSize(QtCore.QSize(500, 25)) + CollectionWidget.setObjectName("CollectionWidget") + verticalLayout_6 = QtWidgets.QVBoxLayout(CollectionWidget) + verticalLayout_6.setContentsMargins(0, 0, 0, 0) + verticalLayout_6.setSpacing(0) + verticalLayout_6.setObjectName("verticalLayout_6") + CollectionLabel = QtWidgets.QLabel("Match {}".format(str(tag.split(' ')[-1]))) + font = QtGui.QFont() + font.setPointSize(8) + font.setBold(True) + CollectionLabel.setFont(font) + CollectionLabel.setStyleSheet("color: rgb(78, 123, 179);\nmargin-bottom:5px;\nmargin-top:10px;") + CollectionLabel.setObjectName("CollectionLabel") + verticalLayout_6.addWidget(CollectionLabel) + CollectionLine = QtWidgets.QFrame(CollectionWidget) + CollectionLine.setStyleSheet("background-color: rgba(199, 199, 199, 50%);\nmin-height:1px;\nmax-height:1px;") + CollectionLine.setFrameShape(QtWidgets.QFrame.HLine) + CollectionLine.setFrameShadow(QtWidgets.QFrame.Sunken) + CollectionLine.setObjectName("CollectionLine") + verticalLayout_6.addWidget(CollectionLine) + layout.addWidget(CollectionWidget) + +def InfoUI(res_widget, res_layout, res_tag, res_range, res_text, res_index, res_color, scroll_area, layout, tag): + '''UI information widget element - The dynamic part of Qt ui + + :param res_widget: A list where the i-th element is the i-th Qt widget + :type res_widget: list + :param res_layout: A list where the i-th element is the i-th Qt H layout + :type res_layout: list + :param res_tag: A list where the i-th element is the i-th tag + :type res_tag: list + :param res_range: A list where the i-th element is the i-th range + :type res_range: list + :param res_text: A list where the i-th element is the i-th text + :type res_text: list + :param res_index: Current element-widget + :type res_index: int + :param res_color: Tag background color + :type res_color: str + :param scroll_area: Qt ui scroll area + :type scroll_area: PyQt5.QtWidgets.QScrollArea + :param layout: Qt ui scroll area layout + :type layout: PyQt5.QtWidgets.QHBoxLayout + :param tag: Tag name + :type tag: str + ''' + res_widget[res_index] = QtWidgets.QWidget(scroll_area) + res_widget[res_index].setObjectName("ResultWidget") + res_layout[res_index] = QtWidgets.QHBoxLayout(res_widget[res_index]) + res_layout[res_index].setContentsMargins(0, 7, 0, 0) + res_layout[res_index].setObjectName("horizontalLayout_4") + if 'Full match' in tag[0]: + res_tag[res_index] = QtWidgets.QLabel(' '.join(tag[0].split(' ')[:-1])) + else: + res_tag[res_index] = QtWidgets.QLabel(tag[0]) + res_tag[res_index].setStyleSheet("min-width:60px;\nmax-width:60px;\nmin-height:20px;\nmax-height:20px;\nbackground-color: {};\nborder:2px;\nborder-radius:3px;\ncolor: rgb(54, 54, 54);\n".format(res_color)) + res_tag[res_index].setAlignment(QtCore.Qt.AlignCenter) + res_tag[res_index].setObjectName("ResultTag") + res_layout[res_index].addWidget(res_tag[res_index], 0, QtCore.Qt.AlignTop) + res_range[res_index] = QtWidgets.QLabel(tag[1]) + res_range[res_index].setStyleSheet("min-width:60px;\nmax-width:60px;\nmin-height:20px;\nmax-height:20px;\ncolor: rgb(54, 54, 54);\n") + res_range[res_index].setAlignment(QtCore.Qt.AlignCenter) + res_range[res_index].setWordWrap(True) + res_range[res_index].setObjectName("ResultRange") + res_layout[res_index].addWidget(res_range[res_index], 0, QtCore.Qt.AlignTop) + res_text[res_index] = QtWidgets.QLabel(tag[2]) + res_text[res_index].setStyleSheet("min-width:200px;\nmin-height:20px;\npadding-left:5px;\nbackground-color: rgba(98, 98, 98, 10%);\nborder:2px;\nborder-radius:3px;\ncolor: rgb(54, 54, 54);\n") + res_text[res_index].setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) + res_text[res_index].setWordWrap(True) + res_text[res_index].setObjectName("ResultText") + res_layout[res_index].addWidget(res_text[res_index], 0, QtCore.Qt.AlignTop) + layout.addWidget(res_widget[res_index]) + +def PreprocessInfo(info): + '''Define the length of the list of variables for those used in UpdateInfo + + :return res_widget: list with the same length as info parameter + :rtype res_widget: list + :return res_layout: list with the same length as info parameter + :rtype res_layout: list + :return res_tag: list with the same length as info parameter + :rtype res_tag: list + :return res_range: list with the same length as info parameter + :rtype res_range: list + :return res_text: list with the same length as info parameter + :rtype res_text: list + ''' + res_widget = list(range(len(info))) + res_layout = list(range(len(info))) + res_tag = list(range(len(info))) + res_range = list(range(len(info))) + res_text = list(range(len(info))) + return res_widget, res_layout, res_tag, res_range, res_text + +def clearLayout(layout): + '''Cleaning the previous state of Layout + + :param layout: Layout to be cleaned + :type layout: PyQt5.QtWidgets.QHBoxLayout + ''' + while layout.count(): + child = layout.takeAt(0) + if child.widget(): + child.widget().deleteLater() + +def Highlight(plain_edit, color, start, end): + '''Highlights/marks the appropriate substring of the test string + + :param plain_edit: Plain edit component. NOT text from plain edit + :type plain_edit: PyQt5.QtWidgets.QPlainTextEdit + :param color: Matching color for the background of the corresponding group - tag result + :type color: str + :param start: Starting position/index of substring for marking. + :type start: int + :param end: Ending position/index of substring for marking. + :type end: int + ''' + fmt = QTextCharFormat() + fmt.setBackground(color) + cursor = QTextCursor(plain_edit.document()) + cursor.setPosition(start, QTextCursor.MoveAnchor) + cursor.setPosition(end, QTextCursor.KeepAnchor) + cursor.setCharFormat(fmt) + +def ClearHighlight(plain_edit, plain_edit_text): + '''Reset all highlighted/marked substrings from the test string + + :param plain_edit: Plain edit component. NOT text from plain edit + :type plain_edit: PyQt5.QtWidgets.QPlainTextEdit + :param plain_edit_text: Text from plaind edit + :type plain_edit_text: str + ''' + fmt = QTextCharFormat() + fmt.setBackground(QColor(Qt.white)) + cursor = QTextCursor(plain_edit.document()) + cursor.setPosition(0, QTextCursor.MoveAnchor) + cursor.setPosition(len(list(plain_edit_text)), QTextCursor.KeepAnchor) + cursor.setCharFormat(fmt) + +def HighlightRange(string): + '''Convert a range from a string type to a list of integers + + :param string: The range of substring to be highlighted + :type string: str + :return : The range of substring to be highlighted + :rtype : list + + :Example: string => "[2-9]" + return => [2,9] + ''' + return [int(re.sub(r'(\[|\])','',i)) for i in string.split('-')] + +def strColorTolist(string): + '''Convert string type rgb colors to separate integer values of red - green - blue + + :param string: Rgb color as a string + :type string: str + :return colorList[0]: Red value + :rtype colorList[0]: int + :return colorList[1]: Green value + :rtype colorList[1]: int + :return colorList[2]: Blue value + :rtype colorList[2]: int + + :Example: string => "rgb(255,100,50)" + return colorList[0] => 255 + return colorList[1] => 100 + return colorList[2] => 50 + ''' + colorList = [int(i) for i in re.sub(r'(rgb\(|\))','',string).split(', ')] + return colorList[0],colorList[1],colorList[2] + +def GetCode(textEdit, pattern, string): + '''Generate code for Python regular expression based on the template + + :param textEdit: The QTextEdit element carries a raw code template + :type textEdit: PyQt5.QtWidgets.QTextEdit + :param pattern: A pattern to be entered in the code template + :type pattern: str + :param string: A test string to be entered in the code template + :type string: str + ''' + template = textEdit.toPlainText() + textEdit.setText(template.replace("pattern", pattern).replace("string", string)) \ No newline at end of file diff --git a/generator.py b/generator.py new file mode 100755 index 0000000..e177fb9 --- /dev/null +++ b/generator.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'generator.ui' +# +# Created by: PyQt5 UI code generator 5.15.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_CodeGenerator(object): + def setupUi(self, CodeGenerator): + CodeGenerator.setObjectName("CodeGenerator") + CodeGenerator.resize(800, 333) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(":/icons/icons/icon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + CodeGenerator.setWindowIcon(icon) + self.centralwidget = QtWidgets.QWidget(CodeGenerator) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setObjectName("verticalLayout") + self.textEdit = QtWidgets.QTextEdit(self.centralwidget) + self.textEdit.setStyleSheet("border-bottom: 2px;\n" +"border-style: solid;\n" +"border-bottom-color: rgb(255, 85, 0);") + self.textEdit.setLineWidth(1) + self.textEdit.setTextInteractionFlags(QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse) + self.textEdit.setObjectName("textEdit") + self.verticalLayout.addWidget(self.textEdit) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setContentsMargins(-1, 0, -1, -1) + self.horizontalLayout.setObjectName("horizontalLayout") + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.CopyPushButton = QtWidgets.QPushButton(self.centralwidget) + self.CopyPushButton.setStyleSheet("QPushButton#CopyPushButton {\n" +" min-width:60px;\n" +" max-width:60px;\n" +" min-height:35;\n" +" max-height:35;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 0px;\n" +" border-top-right-radius: 3px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPushButton#CopyPushButton:hover {\n" +" background: rgba(255,255,255,50%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#CopyPushButton:pressed {\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#CopyPushButton:disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15); \n" +"}") + self.CopyPushButton.setObjectName("CopyPushButton") + self.horizontalLayout.addWidget(self.CopyPushButton, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) + self.ClosePushButton = QtWidgets.QPushButton(self.centralwidget) + self.ClosePushButton.setStyleSheet("QPushButton#ClosePushButton {\n" +" min-width:60px;\n" +" max-width:60px;\n" +" min-height:35;\n" +" max-height:35;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 0px;\n" +" border-top-right-radius: 3px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPushButton#ClosePushButton:hover {\n" +" background: rgba(255,255,255,50%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#ClosePushButton:pressed {\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#ClosePushButton:disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15); \n" +"}") + self.ClosePushButton.setObjectName("ClosePushButton") + self.horizontalLayout.addWidget(self.ClosePushButton, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem1) + self.verticalLayout.addLayout(self.horizontalLayout) + CodeGenerator.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(CodeGenerator) + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21)) + self.menubar.setObjectName("menubar") + CodeGenerator.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(CodeGenerator) + self.statusbar.setObjectName("statusbar") + CodeGenerator.setStatusBar(self.statusbar) + + self.retranslateUi(CodeGenerator) + self.ClosePushButton.clicked.connect(CodeGenerator.close) + self.CopyPushButton.clicked.connect(self.textEdit.selectAll) + self.CopyPushButton.clicked.connect(self.textEdit.copy) + QtCore.QMetaObject.connectSlotsByName(CodeGenerator) + + def retranslateUi(self, CodeGenerator): + _translate = QtCore.QCoreApplication.translate + CodeGenerator.setWindowTitle(_translate("CodeGenerator", "PyRex Code Generaotr")) + self.textEdit.setHtml(_translate("CodeGenerator", "\n" +"\n" +"

import re

\n" +"


\n" +"

regex = r"<CHANGE_ME>pattern<CHANGE_ME>"

\n" +"

test_str = "<CHANGE_ME>string<CHANGE_ME>"

\n" +"


\n" +"

matches = re.finditer(regex, test_str, re.MULTILINE)

\n" +"


\n" +"

for matchNum, match in enumerate(matches, start=1):

\n" +"

print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))

\n" +"

for groupNum in range(0, len(match.groups())):

\n" +"

groupNum = groupNum + 1

\n" +"


\n" +"

print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))

")) + self.CopyPushButton.setText(_translate("CodeGenerator", "Copy")) + self.ClosePushButton.setText(_translate("CodeGenerator", "Close")) +import src_rc + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + CodeGenerator = QtWidgets.QMainWindow() + ui = Ui_CodeGenerator() + ui.setupUi(CodeGenerator) + CodeGenerator.show() + sys.exit(app.exec_()) diff --git a/main.py b/main.py new file mode 100755 index 0000000..0d9b9f5 --- /dev/null +++ b/main.py @@ -0,0 +1,117 @@ +from functions import * +from generator import * +from mainGUI import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * +from PyQt5.QtCore import * +import sys + +import os +import re + +class MyWin(QtWidgets.QMainWindow): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) + self.ui = Ui_MainWindow() + self.ui.setupUi(self) + + shortcut = QShortcut(QKeySequence("Ctrl+Return"), self) + shortcut.activated.connect(self.ui.ProcessPushButton.click) + + self.Pattern = '' + self.TestString = '' + + self.ui.ProcessPushButton.clicked.connect(self.PatternChanged) + + self.ui.RegexTextEdit.installEventFilter(self) + + self.ui.SheetDockWidget.hide() + self.ui.RegexSheetPushButton.clicked.connect(self.Sheet) + self.SheetFlag = False + self.ui.CodeGeneratorPushButton.clicked.connect(self.CodeGenerator) + self.ui.AboutPushButton.hide() + + self.ResultWidget = None + self.horizontalLayout_4 = None + self.ResultTag = None + self.ResultRange = None + self.ResultText = None + self.Info = [] + self.Match = [] + + self.ui.NoMatchesLabel.hide() + + self.resize(800, 600) + + self.WindowWidthFlag = 0 + self.WindowHeightFlag = 0 + + self.ColorList = ['rgb(198, 227, 255)','rgb(198, 233, 157)','rgb(245, 171, 165)','rgb(255, 191, 109)','rgb(193, 203, 235)','rgb(215, 253, 227)','rgb(227, 255, 172)','rgb(232, 141, 238)','rgb(207, 221, 103)','rgb(255, 172, 192)','rgb(132, 214, 238)'] + + self.GeneratedCode = Ui_MainWindow() + + def UpdateInfo(self): + '''Visual display of search results''' + for i, v in enumerate(self.Info): + if 'Full match' in v[0]: + FullMatchTagUI(self.ui.scrollAreaWidgetContents, self.ui.verticalLayout_5, v[0]) + color = self.ColorList[0] + else: + color = GenerateGroupColor(self.ColorList, v[0]) + InfoUI(self.ResultWidget, self.horizontalLayout_4, self.ResultTag, self.ResultRange, self.ResultText, i, color, self.ui.scrollAreaWidgetContents, self.ui.verticalLayout_5, v) + SpacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Expanding) + self.ui.verticalLayout_5.addItem(SpacerItem) + def eventFilter(self, obj, event): + if obj is self.ui.RegexTextEdit and event.type() == QEvent.KeyPress: + if event.key() in (Qt.Key_Return, Qt.Key_Enter): + self.PatternChanged() + return True + return super().eventFilter(obj, event) + def PatternChanged(self): + '''Search for test text based on a pattern and display the results''' + clearLayout(self.ui.verticalLayout_5) + self.Info = [] + self.Pattern = self.ui.RegexTextEdit.toPlainText() + self.TestString = self.ui.TestStringTextEdit.toPlainText() + self.Info = Process(self.TestString, self.Pattern, self.Info, self.ui.NoMatchesLabel) + self.ResultWidget, self.horizontalLayout_4, self.ResultTag, self.ResultRange, self.ResultText = PreprocessInfo(self.Info) + self.UpdateInfo() + ClearHighlight(self.ui.TestStringTextEdit, self.TestString) + for k, v in enumerate(self.Info): + hrange = HighlightRange(v[1]) + if 'Full match' in v[0]: + Highlight(self.ui.TestStringTextEdit, QColor(198, 227, 255), hrange[0], hrange[1]) + else: + color = GenerateGroupColor(self.ColorList, v[0]) + r, g, b = strColorTolist(color) + Highlight(self.ui.TestStringTextEdit, QColor(r,g,b), hrange[0], hrange[1]) + + def Sheet(self): + '''Display regular expression cheat sheet''' + if not self.SheetFlag: + self.WindowWidthFlag = self.width() + self.WindowHeightFlag = self.height() + self.ui.SheetDockWidget.show() + self.SheetFlag = True + elif self.SheetFlag: + self.ui.SheetDockWidget.close() + self.adjustSize() + self.resize(self.WindowWidthFlag,self.WindowHeightFlag) + self.SheetFlag = False + + def CodeGenerator(self): + '''The code for Python regular expression is generated in a new window''' + if not self.Pattern or not self.TestString: + self.ui.NoMatchesLabel.show() + else: + self.CodeGeneratorWindow = QtWidgets.QMainWindow() + self.gen_ui = Ui_CodeGenerator() + self.gen_ui.setupUi(self.CodeGeneratorWindow) + GetCode(self.gen_ui.textEdit, self.Pattern, self.TestString) + self.CodeGeneratorWindow.show() + +if __name__ == '__main__': + app = QtWidgets.QApplication(sys.argv) + myapp = MyWin() + myapp.show() + sys.exit(app.exec_()) \ No newline at end of file diff --git a/mainGUI.py b/mainGUI.py new file mode 100755 index 0000000..af5ec31 --- /dev/null +++ b/mainGUI.py @@ -0,0 +1,1357 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'mainGUI.ui' +# +# Created by: PyQt5 UI code generator 5.15.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(1081, 600) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(":/icons/icons/icon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + MainWindow.setWindowIcon(icon) + MainWindow.setStyleSheet("background-color: rgb(225, 225, 225);") + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setSpacing(0) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalFrame = QtWidgets.QFrame(self.centralwidget) + self.horizontalFrame.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"min-height:40;\n" +"max-height:40;") + self.horizontalFrame.setObjectName("horizontalFrame") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalFrame) + self.horizontalLayout.setContentsMargins(-1, 6, -1, -1) + self.horizontalLayout.setObjectName("horizontalLayout") + self.Logo = QtWidgets.QLabel(self.horizontalFrame) + self.Logo.setStyleSheet("min-width:30px;\n" +"max-width:30px;\n" +"min-height:30px;\n" +"max-height:30px;") + self.Logo.setText("") + self.Logo.setPixmap(QtGui.QPixmap(":/icons/icons/logo.png")) + self.Logo.setScaledContents(True) + self.Logo.setObjectName("Logo") + self.horizontalLayout.addWidget(self.Logo, 0, QtCore.Qt.AlignHCenter) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.CodeGeneratorPushButton = QtWidgets.QPushButton(self.horizontalFrame) + self.CodeGeneratorPushButton.setMinimumSize(QtCore.QSize(27, 27)) + self.CodeGeneratorPushButton.setMaximumSize(QtCore.QSize(27, 27)) + self.CodeGeneratorPushButton.setStyleSheet("QPushButton#CodeGeneratorPushButton {\n" +" min-width: 25px;\n" +" max-width: 25px;\n" +" min-height: 25px;\n" +" max-height: 25px;\n" +" background-color: rgba(255, 255, 255, 0%);\n" +" \n" +" border:1px;\n" +" border-color: rgb(255, 85, 0);\n" +" border-style: solid;\n" +" border-top-left-radius: 5px;\n" +" border-top-right-radius: 5px;\n" +" border-bottom-right-radius: 5px;\n" +" border-bottom-left-radius:5px;\n" +"}\n" +"\n" +"QPushButton#CodeGeneratorPushButton:hover {\n" +" background: rgb(255, 119, 51);\n" +"}\n" +"\n" +"QPushButton#CodeGeneratorPushButton:pressed {\n" +" background: rgba(255, 255, 255, 0%);\n" +"}") + self.CodeGeneratorPushButton.setText("") + icon1 = QtGui.QIcon() + icon1.addPixmap(QtGui.QPixmap(":/icons/icons/code.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.CodeGeneratorPushButton.setIcon(icon1) + self.CodeGeneratorPushButton.setIconSize(QtCore.QSize(25, 25)) + self.CodeGeneratorPushButton.setObjectName("CodeGeneratorPushButton") + self.horizontalLayout.addWidget(self.CodeGeneratorPushButton) + self.RegexSheetPushButton = QtWidgets.QPushButton(self.horizontalFrame) + self.RegexSheetPushButton.setMinimumSize(QtCore.QSize(27, 27)) + self.RegexSheetPushButton.setMaximumSize(QtCore.QSize(27, 27)) + self.RegexSheetPushButton.setStyleSheet("QPushButton#RegexSheetPushButton {\n" +" min-width: 25px;\n" +" max-width: 25px;\n" +" min-height: 25px;\n" +" max-height: 25px;\n" +" background-color: rgba(255, 255, 255, 0%);\n" +" \n" +" border:1px;\n" +" border-color: rgb(255, 85, 0);\n" +" border-style: solid;\n" +" border-top-left-radius: 5px;\n" +" border-top-right-radius: 5px;\n" +" border-bottom-right-radius: 5px;\n" +" border-bottom-left-radius:5px;\n" +"}\n" +"\n" +"QPushButton#RegexSheetPushButton:hover {\n" +" background: rgb(255, 119, 51);\n" +"}\n" +"\n" +"QPushButton#RegexSheetPushButton:pressed {\n" +" background: rgba(255, 255, 255, 0%);\n" +"}") + self.RegexSheetPushButton.setText("") + icon2 = QtGui.QIcon() + icon2.addPixmap(QtGui.QPixmap(":/icons/icons/sheet.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.RegexSheetPushButton.setIcon(icon2) + self.RegexSheetPushButton.setIconSize(QtCore.QSize(25, 25)) + self.RegexSheetPushButton.setObjectName("RegexSheetPushButton") + self.horizontalLayout.addWidget(self.RegexSheetPushButton) + self.AboutPushButton = QtWidgets.QPushButton(self.horizontalFrame) + self.AboutPushButton.setMinimumSize(QtCore.QSize(27, 27)) + self.AboutPushButton.setMaximumSize(QtCore.QSize(27, 27)) + self.AboutPushButton.setStyleSheet("QPushButton#AboutPushButton {\n" +" min-width: 25px;\n" +" max-width: 25px;\n" +" min-height: 25px;\n" +" max-height: 25px;\n" +" background-color: rgba(255, 255, 255, 0%);\n" +" \n" +" border:1px;\n" +" border-color: rgb(255, 85, 0);\n" +" border-style: solid;\n" +" border-top-left-radius: 5px;\n" +" border-top-right-radius: 5px;\n" +" border-bottom-right-radius: 5px;\n" +" border-bottom-left-radius:5px;\n" +"}\n" +"\n" +"QPushButton#AboutPushButton:hover {\n" +" background: rgb(255, 119, 51);\n" +"}\n" +"\n" +"QPushButton#AboutPushButton:pressed {\n" +" background: rgba(255, 255, 255, 0%);\n" +"}") + self.AboutPushButton.setText("") + icon3 = QtGui.QIcon() + icon3.addPixmap(QtGui.QPixmap(":/icons/icons/info.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.AboutPushButton.setIcon(icon3) + self.AboutPushButton.setIconSize(QtCore.QSize(25, 25)) + self.AboutPushButton.setObjectName("AboutPushButton") + self.horizontalLayout.addWidget(self.AboutPushButton) + self.verticalLayout.addWidget(self.horizontalFrame, 0, QtCore.Qt.AlignTop) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.verticalLayout_4 = QtWidgets.QVBoxLayout() + self.verticalLayout_4.setContentsMargins(15, 15, 15, 0) + self.verticalLayout_4.setSpacing(6) + self.verticalLayout_4.setObjectName("verticalLayout_4") + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setContentsMargins(-1, 0, -1, -1) + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.label = QtWidgets.QLabel(self.centralwidget) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label.setFont(font) + self.label.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label.setObjectName("label") + self.horizontalLayout_4.addWidget(self.label) + self.NoMatchesLabel = QtWidgets.QLabel(self.centralwidget) + self.NoMatchesLabel.setStyleSheet(" background-color: rgb(153, 153, 153);\n" +" color: rgb(255, 255, 255);\n" +" border-style: solid;\n" +" border-top-left-radius: 5px;\n" +" border-top-right-radius: 5px;\n" +" border-bottom-right-radius: 5px;\n" +" border-bottom-left-radius: 5px;\n" +" min-width:150px;\n" +" max-width:150px;\n" +" min-height:20;\n" +" max-height:20;") + self.NoMatchesLabel.setAlignment(QtCore.Qt.AlignCenter) + self.NoMatchesLabel.setObjectName("NoMatchesLabel") + self.horizontalLayout_4.addWidget(self.NoMatchesLabel) + self.verticalLayout_4.addLayout(self.horizontalLayout_4) + self.line = QtWidgets.QFrame(self.centralwidget) + self.line.setFrameShape(QtWidgets.QFrame.HLine) + self.line.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line.setObjectName("line") + self.verticalLayout_4.addWidget(self.line, 0, QtCore.Qt.AlignTop) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setContentsMargins(0, 0, -1, -1) + self.horizontalLayout_3.setSpacing(0) + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.RegexTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget) + font = QtGui.QFont() + font.setPointSize(9) + self.RegexTextEdit.setFont(font) + self.RegexTextEdit.setStyleSheet("QPlainTextEdit {\n" +" min-width:360px;\n" +" min-height:30;\n" +" max-height:30;\n" +" margin-bottom:5px;\n" +" \n" +" padding-left: 5px;\n" +" padding-top: 5px;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 3px;\n" +" border-top-right-radius: 0px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPlainTextEdit::focus {\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPlainTextEdit::disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15);\n" +"}") + self.RegexTextEdit.setObjectName("RegexTextEdit") + self.horizontalLayout_3.addWidget(self.RegexTextEdit) + self.ProcessPushButton = QtWidgets.QPushButton(self.centralwidget) + self.ProcessPushButton.setStyleSheet("QPushButton#ProcessPushButton {\n" +" min-width:60px;\n" +" max-width:60px;\n" +" min-height:35;\n" +" max-height:35;\n" +" margin-bottom:5px;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 0px;\n" +" border-top-right-radius: 3px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPushButton#ProcessPushButton:hover {\n" +" background: rgba(255,255,255,50%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#ProcessPushButton:pressed {\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPushButton#ProcessPushButton:disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15); \n" +"}") + self.ProcessPushButton.setObjectName("ProcessPushButton") + self.horizontalLayout_3.addWidget(self.ProcessPushButton, 0, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) + self.verticalLayout_4.addLayout(self.horizontalLayout_3) + self.label_2 = QtWidgets.QLabel(self.centralwidget) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_2.setFont(font) + self.label_2.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_2.setObjectName("label_2") + self.verticalLayout_4.addWidget(self.label_2) + self.line_2 = QtWidgets.QFrame(self.centralwidget) + self.line_2.setFrameShape(QtWidgets.QFrame.HLine) + self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_2.setObjectName("line_2") + self.verticalLayout_4.addWidget(self.line_2) + self.TestStringTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget) + font = QtGui.QFont() + font.setPointSize(11) + self.TestStringTextEdit.setFont(font) + self.TestStringTextEdit.setStyleSheet("QPlainTextEdit {\n" +" min-width:360px;\n" +" min-height:30;\n" +" \n" +" padding-left: 5px;\n" +" padding-top: 10px;\n" +"\n" +" color: #495057;\n" +"\n" +" background: rgba(255,255,255,100%);\n" +" border-bottom: 2px;\n" +" border-style: solid;\n" +" border-bottom-color: rgba(0,0,0,.3);\n" +" border-top-left-radius: 3px;\n" +" border-top-right-radius: 3px;\n" +" border-bottom-right-radius: 0px;\n" +" border-bottom-left-radius: 0px;\n" +"}\n" +"\n" +"QPlainTextEdit::focus {\n" +" border-bottom-color:rgb(255, 85, 0);\n" +"}\n" +"\n" +"QPlainTextEdit::disabled {\n" +" background: rgba(0,0,0,.04);\n" +" border-bottom-color: rgba(0,0,0,.15);\n" +"}") + self.TestStringTextEdit.setObjectName("TestStringTextEdit") + self.verticalLayout_4.addWidget(self.TestStringTextEdit) + self.horizontalLayout_2.addLayout(self.verticalLayout_4) + self.verticalFrame = QtWidgets.QFrame(self.centralwidget) + self.verticalFrame.setStyleSheet("background-color: rgb(238, 238, 238);\n" +"min-width: 300;\n" +"max-width: 500;") + self.verticalFrame.setObjectName("verticalFrame") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalFrame) + self.verticalLayout_2.setContentsMargins(10, 10, 10, 10) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.widget = QtWidgets.QWidget(self.verticalFrame) + self.widget.setStyleSheet("background-color:rgb(249, 249, 249)") + self.widget.setObjectName("widget") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.label_3 = QtWidgets.QLabel(self.widget) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_3.setFont(font) + self.label_3.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_3.setObjectName("label_3") + self.verticalLayout_3.addWidget(self.label_3) + self.line_3 = QtWidgets.QFrame(self.widget) + self.line_3.setFrameShape(QtWidgets.QFrame.HLine) + self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_3.setObjectName("line_3") + self.verticalLayout_3.addWidget(self.line_3) + self.RresultScrollArea = QtWidgets.QScrollArea(self.widget) + self.RresultScrollArea.setStyleSheet("border:No;") + self.RresultScrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.RresultScrollArea.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) + self.RresultScrollArea.setWidgetResizable(True) + self.RresultScrollArea.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.RresultScrollArea.setObjectName("RresultScrollArea") + self.scrollAreaWidgetContents = QtWidgets.QWidget() + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 300, 449)) + self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") + self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents) + self.verticalLayout_5.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_5.setSpacing(0) + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.RresultScrollArea.setWidget(self.scrollAreaWidgetContents) + self.verticalLayout_3.addWidget(self.RresultScrollArea) + self.verticalLayout_2.addWidget(self.widget) + self.horizontalLayout_2.addWidget(self.verticalFrame) + self.verticalLayout.addLayout(self.horizontalLayout_2) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1081, 21)) + self.menubar.setObjectName("menubar") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + self.SheetDockWidget = QtWidgets.QDockWidget(MainWindow) + self.SheetDockWidget.setMinimumSize(QtCore.QSize(312, 91)) + self.SheetDockWidget.setMaximumSize(QtCore.QSize(312, 524287)) + self.SheetDockWidget.setStyleSheet("") + self.SheetDockWidget.setObjectName("SheetDockWidget") + self.dockWidgetContents_4 = QtWidgets.QWidget() + self.dockWidgetContents_4.setObjectName("dockWidgetContents_4") + self.gridLayout = QtWidgets.QGridLayout(self.dockWidgetContents_4) + self.gridLayout.setContentsMargins(0, 0, 0, 0) + self.gridLayout.setSpacing(0) + self.gridLayout.setObjectName("gridLayout") + self.scrollArea_2 = QtWidgets.QScrollArea(self.dockWidgetContents_4) + self.scrollArea_2.setStyleSheet("border:No;") + self.scrollArea_2.setWidgetResizable(True) + self.scrollArea_2.setObjectName("scrollArea_2") + self.scrollAreaWidgetContents_3 = QtWidgets.QWidget() + self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 296, 1465)) + self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3") + self.verticalLayout_16 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_3) + self.verticalLayout_16.setObjectName("verticalLayout_16") + self.verticalLayout_17 = QtWidgets.QVBoxLayout() + self.verticalLayout_17.setObjectName("verticalLayout_17") + self.label_126 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_126.setFont(font) + self.label_126.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_126.setObjectName("label_126") + self.verticalLayout_17.addWidget(self.label_126) + self.line_12 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_12.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_12.setFrameShape(QtWidgets.QFrame.HLine) + self.line_12.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_12.setObjectName("line_12") + self.verticalLayout_17.addWidget(self.line_12) + self.verticalLayout_16.addLayout(self.verticalLayout_17) + self.horizontalLayout_62 = QtWidgets.QHBoxLayout() + self.horizontalLayout_62.setObjectName("horizontalLayout_62") + self.label_127 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_127.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_127.setObjectName("label_127") + self.horizontalLayout_62.addWidget(self.label_127) + self.label_128 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_128.setObjectName("label_128") + self.horizontalLayout_62.addWidget(self.label_128) + self.verticalLayout_16.addLayout(self.horizontalLayout_62) + self.horizontalLayout_63 = QtWidgets.QHBoxLayout() + self.horizontalLayout_63.setObjectName("horizontalLayout_63") + self.label_129 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_129.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_129.setObjectName("label_129") + self.horizontalLayout_63.addWidget(self.label_129) + self.label_130 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_130.setObjectName("label_130") + self.horizontalLayout_63.addWidget(self.label_130) + self.verticalLayout_16.addLayout(self.horizontalLayout_63) + self.horizontalLayout_64 = QtWidgets.QHBoxLayout() + self.horizontalLayout_64.setObjectName("horizontalLayout_64") + self.label_131 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_131.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_131.setObjectName("label_131") + self.horizontalLayout_64.addWidget(self.label_131) + self.label_132 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_132.setObjectName("label_132") + self.horizontalLayout_64.addWidget(self.label_132) + self.verticalLayout_16.addLayout(self.horizontalLayout_64) + self.horizontalLayout_65 = QtWidgets.QHBoxLayout() + self.horizontalLayout_65.setObjectName("horizontalLayout_65") + self.label_133 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_133.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_133.setObjectName("label_133") + self.horizontalLayout_65.addWidget(self.label_133) + self.label_134 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_134.setObjectName("label_134") + self.horizontalLayout_65.addWidget(self.label_134) + self.verticalLayout_16.addLayout(self.horizontalLayout_65) + self.horizontalLayout_66 = QtWidgets.QHBoxLayout() + self.horizontalLayout_66.setObjectName("horizontalLayout_66") + self.label_135 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_135.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_135.setObjectName("label_135") + self.horizontalLayout_66.addWidget(self.label_135) + self.label_136 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_136.setObjectName("label_136") + self.horizontalLayout_66.addWidget(self.label_136) + self.verticalLayout_16.addLayout(self.horizontalLayout_66) + self.horizontalLayout_67 = QtWidgets.QHBoxLayout() + self.horizontalLayout_67.setObjectName("horizontalLayout_67") + self.label_137 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_137.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_137.setObjectName("label_137") + self.horizontalLayout_67.addWidget(self.label_137) + self.label_138 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_138.setObjectName("label_138") + self.horizontalLayout_67.addWidget(self.label_138) + self.verticalLayout_16.addLayout(self.horizontalLayout_67) + self.verticalLayout_18 = QtWidgets.QVBoxLayout() + self.verticalLayout_18.setObjectName("verticalLayout_18") + self.label_139 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_139.setFont(font) + self.label_139.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_139.setObjectName("label_139") + self.verticalLayout_18.addWidget(self.label_139) + self.line_13 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_13.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_13.setFrameShape(QtWidgets.QFrame.HLine) + self.line_13.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_13.setObjectName("line_13") + self.verticalLayout_18.addWidget(self.line_13) + self.verticalLayout_16.addLayout(self.verticalLayout_18) + self.horizontalLayout_68 = QtWidgets.QHBoxLayout() + self.horizontalLayout_68.setObjectName("horizontalLayout_68") + self.label_140 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_140.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_140.setObjectName("label_140") + self.horizontalLayout_68.addWidget(self.label_140) + self.label_141 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_141.setObjectName("label_141") + self.horizontalLayout_68.addWidget(self.label_141) + self.verticalLayout_16.addLayout(self.horizontalLayout_68) + self.horizontalLayout_69 = QtWidgets.QHBoxLayout() + self.horizontalLayout_69.setObjectName("horizontalLayout_69") + self.label_142 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_142.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_142.setObjectName("label_142") + self.horizontalLayout_69.addWidget(self.label_142) + self.label_143 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_143.setObjectName("label_143") + self.horizontalLayout_69.addWidget(self.label_143) + self.verticalLayout_16.addLayout(self.horizontalLayout_69) + self.horizontalLayout_70 = QtWidgets.QHBoxLayout() + self.horizontalLayout_70.setObjectName("horizontalLayout_70") + self.label_144 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_144.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_144.setObjectName("label_144") + self.horizontalLayout_70.addWidget(self.label_144) + self.label_145 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_145.setObjectName("label_145") + self.horizontalLayout_70.addWidget(self.label_145) + self.verticalLayout_16.addLayout(self.horizontalLayout_70) + self.horizontalLayout_71 = QtWidgets.QHBoxLayout() + self.horizontalLayout_71.setObjectName("horizontalLayout_71") + self.label_146 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_146.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_146.setObjectName("label_146") + self.horizontalLayout_71.addWidget(self.label_146) + self.label_147 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_147.setObjectName("label_147") + self.horizontalLayout_71.addWidget(self.label_147) + self.verticalLayout_16.addLayout(self.horizontalLayout_71) + self.horizontalLayout_72 = QtWidgets.QHBoxLayout() + self.horizontalLayout_72.setObjectName("horizontalLayout_72") + self.label_148 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_148.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_148.setObjectName("label_148") + self.horizontalLayout_72.addWidget(self.label_148) + self.label_149 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_149.setObjectName("label_149") + self.horizontalLayout_72.addWidget(self.label_149) + self.verticalLayout_16.addLayout(self.horizontalLayout_72) + self.horizontalLayout_73 = QtWidgets.QHBoxLayout() + self.horizontalLayout_73.setObjectName("horizontalLayout_73") + self.label_150 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_150.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_150.setObjectName("label_150") + self.horizontalLayout_73.addWidget(self.label_150) + self.label_151 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_151.setObjectName("label_151") + self.horizontalLayout_73.addWidget(self.label_151) + self.verticalLayout_16.addLayout(self.horizontalLayout_73) + self.horizontalLayout_74 = QtWidgets.QHBoxLayout() + self.horizontalLayout_74.setObjectName("horizontalLayout_74") + self.label_152 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_152.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_152.setObjectName("label_152") + self.horizontalLayout_74.addWidget(self.label_152) + self.label_153 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_153.setObjectName("label_153") + self.horizontalLayout_74.addWidget(self.label_153) + self.verticalLayout_16.addLayout(self.horizontalLayout_74) + self.horizontalLayout_75 = QtWidgets.QHBoxLayout() + self.horizontalLayout_75.setObjectName("horizontalLayout_75") + self.label_154 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_154.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_154.setObjectName("label_154") + self.horizontalLayout_75.addWidget(self.label_154) + self.label_155 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_155.setObjectName("label_155") + self.horizontalLayout_75.addWidget(self.label_155) + self.verticalLayout_16.addLayout(self.horizontalLayout_75) + self.verticalLayout_19 = QtWidgets.QVBoxLayout() + self.verticalLayout_19.setObjectName("verticalLayout_19") + self.label_156 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_156.setFont(font) + self.label_156.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_156.setObjectName("label_156") + self.verticalLayout_19.addWidget(self.label_156) + self.line_14 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_14.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_14.setFrameShape(QtWidgets.QFrame.HLine) + self.line_14.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_14.setObjectName("line_14") + self.verticalLayout_19.addWidget(self.line_14) + self.verticalLayout_16.addLayout(self.verticalLayout_19) + self.horizontalLayout_76 = QtWidgets.QHBoxLayout() + self.horizontalLayout_76.setObjectName("horizontalLayout_76") + self.label_157 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_157.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_157.setObjectName("label_157") + self.horizontalLayout_76.addWidget(self.label_157) + self.label_158 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_158.setObjectName("label_158") + self.horizontalLayout_76.addWidget(self.label_158) + self.verticalLayout_16.addLayout(self.horizontalLayout_76) + self.horizontalLayout_77 = QtWidgets.QHBoxLayout() + self.horizontalLayout_77.setObjectName("horizontalLayout_77") + self.label_159 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_159.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_159.setObjectName("label_159") + self.horizontalLayout_77.addWidget(self.label_159) + self.label_160 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_160.setObjectName("label_160") + self.horizontalLayout_77.addWidget(self.label_160) + self.verticalLayout_16.addLayout(self.horizontalLayout_77) + self.horizontalLayout_78 = QtWidgets.QHBoxLayout() + self.horizontalLayout_78.setObjectName("horizontalLayout_78") + self.label_161 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_161.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_161.setObjectName("label_161") + self.horizontalLayout_78.addWidget(self.label_161) + self.label_162 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_162.setObjectName("label_162") + self.horizontalLayout_78.addWidget(self.label_162) + self.verticalLayout_16.addLayout(self.horizontalLayout_78) + self.horizontalLayout_79 = QtWidgets.QHBoxLayout() + self.horizontalLayout_79.setObjectName("horizontalLayout_79") + self.label_163 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_163.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_163.setObjectName("label_163") + self.horizontalLayout_79.addWidget(self.label_163) + self.label_164 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_164.setObjectName("label_164") + self.horizontalLayout_79.addWidget(self.label_164) + self.verticalLayout_16.addLayout(self.horizontalLayout_79) + self.horizontalLayout_80 = QtWidgets.QHBoxLayout() + self.horizontalLayout_80.setObjectName("horizontalLayout_80") + self.label_165 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_165.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_165.setObjectName("label_165") + self.horizontalLayout_80.addWidget(self.label_165) + self.label_166 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_166.setObjectName("label_166") + self.horizontalLayout_80.addWidget(self.label_166) + self.verticalLayout_16.addLayout(self.horizontalLayout_80) + self.horizontalLayout_81 = QtWidgets.QHBoxLayout() + self.horizontalLayout_81.setObjectName("horizontalLayout_81") + self.label_167 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_167.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_167.setObjectName("label_167") + self.horizontalLayout_81.addWidget(self.label_167) + self.label_168 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_168.setObjectName("label_168") + self.horizontalLayout_81.addWidget(self.label_168) + self.verticalLayout_16.addLayout(self.horizontalLayout_81) + self.horizontalLayout_82 = QtWidgets.QHBoxLayout() + self.horizontalLayout_82.setObjectName("horizontalLayout_82") + self.label_169 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_169.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_169.setObjectName("label_169") + self.horizontalLayout_82.addWidget(self.label_169) + self.label_170 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_170.setObjectName("label_170") + self.horizontalLayout_82.addWidget(self.label_170) + self.verticalLayout_16.addLayout(self.horizontalLayout_82) + self.verticalLayout_20 = QtWidgets.QVBoxLayout() + self.verticalLayout_20.setObjectName("verticalLayout_20") + self.label_171 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_171.setFont(font) + self.label_171.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_171.setObjectName("label_171") + self.verticalLayout_20.addWidget(self.label_171) + self.line_15 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_15.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_15.setFrameShape(QtWidgets.QFrame.HLine) + self.line_15.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_15.setObjectName("line_15") + self.verticalLayout_20.addWidget(self.line_15) + self.verticalLayout_16.addLayout(self.verticalLayout_20) + self.horizontalLayout_83 = QtWidgets.QHBoxLayout() + self.horizontalLayout_83.setObjectName("horizontalLayout_83") + self.label_172 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_172.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_172.setObjectName("label_172") + self.horizontalLayout_83.addWidget(self.label_172) + self.label_173 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_173.setObjectName("label_173") + self.horizontalLayout_83.addWidget(self.label_173) + self.verticalLayout_16.addLayout(self.horizontalLayout_83) + self.horizontalLayout_84 = QtWidgets.QHBoxLayout() + self.horizontalLayout_84.setObjectName("horizontalLayout_84") + self.label_174 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_174.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_174.setObjectName("label_174") + self.horizontalLayout_84.addWidget(self.label_174) + self.label_175 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_175.setObjectName("label_175") + self.horizontalLayout_84.addWidget(self.label_175) + self.verticalLayout_16.addLayout(self.horizontalLayout_84) + self.horizontalLayout_85 = QtWidgets.QHBoxLayout() + self.horizontalLayout_85.setObjectName("horizontalLayout_85") + self.label_176 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_176.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_176.setObjectName("label_176") + self.horizontalLayout_85.addWidget(self.label_176) + self.label_177 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_177.setObjectName("label_177") + self.horizontalLayout_85.addWidget(self.label_177) + self.verticalLayout_16.addLayout(self.horizontalLayout_85) + self.horizontalLayout_86 = QtWidgets.QHBoxLayout() + self.horizontalLayout_86.setObjectName("horizontalLayout_86") + self.label_178 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_178.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_178.setObjectName("label_178") + self.horizontalLayout_86.addWidget(self.label_178) + self.label_179 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_179.setObjectName("label_179") + self.horizontalLayout_86.addWidget(self.label_179) + self.verticalLayout_16.addLayout(self.horizontalLayout_86) + self.horizontalLayout_87 = QtWidgets.QHBoxLayout() + self.horizontalLayout_87.setObjectName("horizontalLayout_87") + self.label_180 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_180.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_180.setObjectName("label_180") + self.horizontalLayout_87.addWidget(self.label_180) + self.label_181 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_181.setObjectName("label_181") + self.horizontalLayout_87.addWidget(self.label_181) + self.verticalLayout_16.addLayout(self.horizontalLayout_87) + self.horizontalLayout_88 = QtWidgets.QHBoxLayout() + self.horizontalLayout_88.setObjectName("horizontalLayout_88") + self.label_182 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_182.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_182.setObjectName("label_182") + self.horizontalLayout_88.addWidget(self.label_182) + self.label_183 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_183.setObjectName("label_183") + self.horizontalLayout_88.addWidget(self.label_183) + self.verticalLayout_16.addLayout(self.horizontalLayout_88) + self.horizontalLayout_89 = QtWidgets.QHBoxLayout() + self.horizontalLayout_89.setObjectName("horizontalLayout_89") + self.label_184 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_184.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_184.setObjectName("label_184") + self.horizontalLayout_89.addWidget(self.label_184) + self.label_185 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_185.setObjectName("label_185") + self.horizontalLayout_89.addWidget(self.label_185) + self.verticalLayout_16.addLayout(self.horizontalLayout_89) + self.horizontalLayout_90 = QtWidgets.QHBoxLayout() + self.horizontalLayout_90.setObjectName("horizontalLayout_90") + self.label_186 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_186.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_186.setObjectName("label_186") + self.horizontalLayout_90.addWidget(self.label_186) + self.label_187 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_187.setObjectName("label_187") + self.horizontalLayout_90.addWidget(self.label_187) + self.verticalLayout_16.addLayout(self.horizontalLayout_90) + self.horizontalLayout_91 = QtWidgets.QHBoxLayout() + self.horizontalLayout_91.setObjectName("horizontalLayout_91") + self.label_188 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_188.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_188.setObjectName("label_188") + self.horizontalLayout_91.addWidget(self.label_188) + self.label_189 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_189.setObjectName("label_189") + self.horizontalLayout_91.addWidget(self.label_189) + self.verticalLayout_16.addLayout(self.horizontalLayout_91) + self.verticalLayout_21 = QtWidgets.QVBoxLayout() + self.verticalLayout_21.setObjectName("verticalLayout_21") + self.label_190 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_190.setFont(font) + self.label_190.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_190.setObjectName("label_190") + self.verticalLayout_21.addWidget(self.label_190) + self.line_16 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_16.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_16.setFrameShape(QtWidgets.QFrame.HLine) + self.line_16.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_16.setObjectName("line_16") + self.verticalLayout_21.addWidget(self.line_16) + self.verticalLayout_16.addLayout(self.verticalLayout_21) + self.horizontalLayout_92 = QtWidgets.QHBoxLayout() + self.horizontalLayout_92.setObjectName("horizontalLayout_92") + self.label_191 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_191.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_191.setObjectName("label_191") + self.horizontalLayout_92.addWidget(self.label_191) + self.label_192 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_192.setObjectName("label_192") + self.horizontalLayout_92.addWidget(self.label_192) + self.verticalLayout_16.addLayout(self.horizontalLayout_92) + self.horizontalLayout_93 = QtWidgets.QHBoxLayout() + self.horizontalLayout_93.setObjectName("horizontalLayout_93") + self.label_193 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_193.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_193.setObjectName("label_193") + self.horizontalLayout_93.addWidget(self.label_193) + self.label_194 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_194.setObjectName("label_194") + self.horizontalLayout_93.addWidget(self.label_194) + self.verticalLayout_16.addLayout(self.horizontalLayout_93) + self.horizontalLayout_94 = QtWidgets.QHBoxLayout() + self.horizontalLayout_94.setObjectName("horizontalLayout_94") + self.label_195 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_195.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_195.setObjectName("label_195") + self.horizontalLayout_94.addWidget(self.label_195) + self.label_196 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_196.setObjectName("label_196") + self.horizontalLayout_94.addWidget(self.label_196) + self.verticalLayout_16.addLayout(self.horizontalLayout_94) + self.horizontalLayout_95 = QtWidgets.QHBoxLayout() + self.horizontalLayout_95.setObjectName("horizontalLayout_95") + self.label_197 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_197.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_197.setObjectName("label_197") + self.horizontalLayout_95.addWidget(self.label_197) + self.label_198 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_198.setObjectName("label_198") + self.horizontalLayout_95.addWidget(self.label_198) + self.verticalLayout_16.addLayout(self.horizontalLayout_95) + self.horizontalLayout_96 = QtWidgets.QHBoxLayout() + self.horizontalLayout_96.setObjectName("horizontalLayout_96") + self.label_199 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_199.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_199.setObjectName("label_199") + self.horizontalLayout_96.addWidget(self.label_199) + self.label_200 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_200.setObjectName("label_200") + self.horizontalLayout_96.addWidget(self.label_200) + self.verticalLayout_16.addLayout(self.horizontalLayout_96) + self.horizontalLayout_97 = QtWidgets.QHBoxLayout() + self.horizontalLayout_97.setObjectName("horizontalLayout_97") + self.label_201 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_201.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_201.setObjectName("label_201") + self.horizontalLayout_97.addWidget(self.label_201) + self.label_202 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_202.setObjectName("label_202") + self.horizontalLayout_97.addWidget(self.label_202) + self.verticalLayout_16.addLayout(self.horizontalLayout_97) + self.horizontalLayout_98 = QtWidgets.QHBoxLayout() + self.horizontalLayout_98.setObjectName("horizontalLayout_98") + self.label_203 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_203.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_203.setObjectName("label_203") + self.horizontalLayout_98.addWidget(self.label_203) + self.label_204 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_204.setObjectName("label_204") + self.horizontalLayout_98.addWidget(self.label_204) + self.verticalLayout_16.addLayout(self.horizontalLayout_98) + self.horizontalLayout_99 = QtWidgets.QHBoxLayout() + self.horizontalLayout_99.setObjectName("horizontalLayout_99") + self.label_205 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_205.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_205.setObjectName("label_205") + self.horizontalLayout_99.addWidget(self.label_205) + self.label_206 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_206.setObjectName("label_206") + self.horizontalLayout_99.addWidget(self.label_206) + self.verticalLayout_16.addLayout(self.horizontalLayout_99) + self.horizontalLayout_100 = QtWidgets.QHBoxLayout() + self.horizontalLayout_100.setObjectName("horizontalLayout_100") + self.label_207 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_207.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_207.setObjectName("label_207") + self.horizontalLayout_100.addWidget(self.label_207) + self.label_208 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_208.setObjectName("label_208") + self.horizontalLayout_100.addWidget(self.label_208) + self.verticalLayout_16.addLayout(self.horizontalLayout_100) + self.horizontalLayout_101 = QtWidgets.QHBoxLayout() + self.horizontalLayout_101.setObjectName("horizontalLayout_101") + self.label_209 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_209.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_209.setObjectName("label_209") + self.horizontalLayout_101.addWidget(self.label_209) + self.label_210 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_210.setObjectName("label_210") + self.horizontalLayout_101.addWidget(self.label_210) + self.verticalLayout_16.addLayout(self.horizontalLayout_101) + self.horizontalLayout_102 = QtWidgets.QHBoxLayout() + self.horizontalLayout_102.setObjectName("horizontalLayout_102") + self.label_211 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_211.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_211.setObjectName("label_211") + self.horizontalLayout_102.addWidget(self.label_211) + self.label_212 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_212.setObjectName("label_212") + self.horizontalLayout_102.addWidget(self.label_212) + self.verticalLayout_16.addLayout(self.horizontalLayout_102) + self.horizontalLayout_103 = QtWidgets.QHBoxLayout() + self.horizontalLayout_103.setObjectName("horizontalLayout_103") + self.label_213 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_213.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_213.setObjectName("label_213") + self.horizontalLayout_103.addWidget(self.label_213) + self.label_214 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_214.setObjectName("label_214") + self.horizontalLayout_103.addWidget(self.label_214) + self.verticalLayout_16.addLayout(self.horizontalLayout_103) + self.verticalLayout_22 = QtWidgets.QVBoxLayout() + self.verticalLayout_22.setObjectName("verticalLayout_22") + self.label_215 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_215.setFont(font) + self.label_215.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_215.setObjectName("label_215") + self.verticalLayout_22.addWidget(self.label_215) + self.line_17 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_17.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_17.setFrameShape(QtWidgets.QFrame.HLine) + self.line_17.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_17.setObjectName("line_17") + self.verticalLayout_22.addWidget(self.line_17) + self.verticalLayout_16.addLayout(self.verticalLayout_22) + self.horizontalLayout_104 = QtWidgets.QHBoxLayout() + self.horizontalLayout_104.setObjectName("horizontalLayout_104") + self.label_216 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_216.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_216.setObjectName("label_216") + self.horizontalLayout_104.addWidget(self.label_216) + self.label_217 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_217.setObjectName("label_217") + self.horizontalLayout_104.addWidget(self.label_217) + self.verticalLayout_16.addLayout(self.horizontalLayout_104) + self.horizontalLayout_105 = QtWidgets.QHBoxLayout() + self.horizontalLayout_105.setObjectName("horizontalLayout_105") + self.label_218 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_218.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_218.setObjectName("label_218") + self.horizontalLayout_105.addWidget(self.label_218) + self.label_219 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_219.setObjectName("label_219") + self.horizontalLayout_105.addWidget(self.label_219) + self.verticalLayout_16.addLayout(self.horizontalLayout_105) + self.horizontalLayout_106 = QtWidgets.QHBoxLayout() + self.horizontalLayout_106.setObjectName("horizontalLayout_106") + self.label_220 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_220.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_220.setObjectName("label_220") + self.horizontalLayout_106.addWidget(self.label_220) + self.label_221 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_221.setObjectName("label_221") + self.horizontalLayout_106.addWidget(self.label_221) + self.verticalLayout_16.addLayout(self.horizontalLayout_106) + self.horizontalLayout_107 = QtWidgets.QHBoxLayout() + self.horizontalLayout_107.setObjectName("horizontalLayout_107") + self.label_222 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_222.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_222.setObjectName("label_222") + self.horizontalLayout_107.addWidget(self.label_222) + self.label_223 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_223.setObjectName("label_223") + self.horizontalLayout_107.addWidget(self.label_223) + self.verticalLayout_16.addLayout(self.horizontalLayout_107) + self.horizontalLayout_108 = QtWidgets.QHBoxLayout() + self.horizontalLayout_108.setObjectName("horizontalLayout_108") + self.label_224 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_224.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_224.setObjectName("label_224") + self.horizontalLayout_108.addWidget(self.label_224) + self.label_225 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_225.setObjectName("label_225") + self.horizontalLayout_108.addWidget(self.label_225) + self.verticalLayout_16.addLayout(self.horizontalLayout_108) + self.horizontalLayout_109 = QtWidgets.QHBoxLayout() + self.horizontalLayout_109.setObjectName("horizontalLayout_109") + self.label_226 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_226.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_226.setObjectName("label_226") + self.horizontalLayout_109.addWidget(self.label_226) + self.label_227 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_227.setObjectName("label_227") + self.horizontalLayout_109.addWidget(self.label_227) + self.verticalLayout_16.addLayout(self.horizontalLayout_109) + self.horizontalLayout_110 = QtWidgets.QHBoxLayout() + self.horizontalLayout_110.setObjectName("horizontalLayout_110") + self.label_228 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_228.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_228.setObjectName("label_228") + self.horizontalLayout_110.addWidget(self.label_228) + self.label_229 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_229.setObjectName("label_229") + self.horizontalLayout_110.addWidget(self.label_229) + self.verticalLayout_16.addLayout(self.horizontalLayout_110) + self.verticalLayout_23 = QtWidgets.QVBoxLayout() + self.verticalLayout_23.setObjectName("verticalLayout_23") + self.label_230 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_230.setFont(font) + self.label_230.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_230.setObjectName("label_230") + self.verticalLayout_23.addWidget(self.label_230) + self.line_18 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_18.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_18.setFrameShape(QtWidgets.QFrame.HLine) + self.line_18.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_18.setObjectName("line_18") + self.verticalLayout_23.addWidget(self.line_18) + self.verticalLayout_16.addLayout(self.verticalLayout_23) + self.horizontalLayout_111 = QtWidgets.QHBoxLayout() + self.horizontalLayout_111.setObjectName("horizontalLayout_111") + self.label_231 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_231.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_231.setObjectName("label_231") + self.horizontalLayout_111.addWidget(self.label_231) + self.label_232 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_232.setObjectName("label_232") + self.horizontalLayout_111.addWidget(self.label_232) + self.verticalLayout_16.addLayout(self.horizontalLayout_111) + self.horizontalLayout_112 = QtWidgets.QHBoxLayout() + self.horizontalLayout_112.setObjectName("horizontalLayout_112") + self.label_233 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_233.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_233.setObjectName("label_233") + self.horizontalLayout_112.addWidget(self.label_233) + self.label_234 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_234.setObjectName("label_234") + self.horizontalLayout_112.addWidget(self.label_234) + self.verticalLayout_16.addLayout(self.horizontalLayout_112) + self.horizontalLayout_113 = QtWidgets.QHBoxLayout() + self.horizontalLayout_113.setObjectName("horizontalLayout_113") + self.label_235 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_235.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_235.setObjectName("label_235") + self.horizontalLayout_113.addWidget(self.label_235) + self.label_236 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_236.setObjectName("label_236") + self.horizontalLayout_113.addWidget(self.label_236) + self.verticalLayout_16.addLayout(self.horizontalLayout_113) + self.horizontalLayout_114 = QtWidgets.QHBoxLayout() + self.horizontalLayout_114.setObjectName("horizontalLayout_114") + self.label_237 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_237.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_237.setObjectName("label_237") + self.horizontalLayout_114.addWidget(self.label_237) + self.label_238 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_238.setObjectName("label_238") + self.horizontalLayout_114.addWidget(self.label_238) + self.verticalLayout_16.addLayout(self.horizontalLayout_114) + self.horizontalLayout_115 = QtWidgets.QHBoxLayout() + self.horizontalLayout_115.setObjectName("horizontalLayout_115") + self.label_239 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_239.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_239.setObjectName("label_239") + self.horizontalLayout_115.addWidget(self.label_239) + self.label_240 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_240.setObjectName("label_240") + self.horizontalLayout_115.addWidget(self.label_240) + self.verticalLayout_16.addLayout(self.horizontalLayout_115) + self.verticalLayout_24 = QtWidgets.QVBoxLayout() + self.verticalLayout_24.setObjectName("verticalLayout_24") + self.label_241 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(9) + font.setBold(True) + font.setWeight(75) + self.label_241.setFont(font) + self.label_241.setStyleSheet("min-height:15;\n" +"max-height:15;\n" +"background-color: rgba(0, 0, 0, 0%);") + self.label_241.setObjectName("label_241") + self.verticalLayout_24.addWidget(self.label_241) + self.line_19 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) + self.line_19.setStyleSheet("background-color:rgb(255, 85, 0);\n" +"border:No;\n" +"height:1px") + self.line_19.setFrameShape(QtWidgets.QFrame.HLine) + self.line_19.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_19.setObjectName("line_19") + self.verticalLayout_24.addWidget(self.line_19) + self.verticalLayout_16.addLayout(self.verticalLayout_24) + self.horizontalLayout_116 = QtWidgets.QHBoxLayout() + self.horizontalLayout_116.setObjectName("horizontalLayout_116") + self.label_242 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_242.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_242.setObjectName("label_242") + self.horizontalLayout_116.addWidget(self.label_242) + self.label_243 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_243.setObjectName("label_243") + self.horizontalLayout_116.addWidget(self.label_243) + self.verticalLayout_16.addLayout(self.horizontalLayout_116) + self.horizontalLayout_117 = QtWidgets.QHBoxLayout() + self.horizontalLayout_117.setObjectName("horizontalLayout_117") + self.label_244 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_244.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_244.setObjectName("label_244") + self.horizontalLayout_117.addWidget(self.label_244) + self.label_245 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_245.setObjectName("label_245") + self.horizontalLayout_117.addWidget(self.label_245) + self.verticalLayout_16.addLayout(self.horizontalLayout_117) + self.horizontalLayout_118 = QtWidgets.QHBoxLayout() + self.horizontalLayout_118.setObjectName("horizontalLayout_118") + self.label_246 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_246.setStyleSheet("min-width:100px;\n" +"max-width:100px;") + self.label_246.setObjectName("label_246") + self.horizontalLayout_118.addWidget(self.label_246) + self.label_247 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) + self.label_247.setObjectName("label_247") + self.horizontalLayout_118.addWidget(self.label_247) + self.verticalLayout_16.addLayout(self.horizontalLayout_118) + self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_3) + self.gridLayout.addWidget(self.scrollArea_2, 0, 0, 1, 1) + self.SheetDockWidget.setWidget(self.dockWidgetContents_4) + MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.SheetDockWidget) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "PyRex")) + self.label.setText(_translate("MainWindow", "REGULAR EXPRESSION")) + self.NoMatchesLabel.setText(_translate("MainWindow", " 0 matches or wrong syntax")) + self.RegexTextEdit.setPlaceholderText(_translate("MainWindow", "insert your pattern")) + self.ProcessPushButton.setText(_translate("MainWindow", "Process")) + self.ProcessPushButton.setShortcut(_translate("MainWindow", "Return")) + self.label_2.setText(_translate("MainWindow", "TEST STRING")) + self.TestStringTextEdit.setPlaceholderText(_translate("MainWindow", "insert your test string here")) + self.label_3.setText(_translate("MainWindow", "MATCH INFORMATION")) + self.SheetDockWidget.setWindowTitle(_translate("MainWindow", "Regex Sheet")) + self.label_126.setText(_translate("MainWindow", "Regular Expression Basics")) + self.label_127.setText(_translate("MainWindow", ".")) + self.label_128.setText(_translate("MainWindow", "Any character except newline")) + self.label_129.setText(_translate("MainWindow", "a")) + self.label_130.setText(_translate("MainWindow", "The character a")) + self.label_131.setText(_translate("MainWindow", "ab")) + self.label_132.setText(_translate("MainWindow", "The string ab")) + self.label_133.setText(_translate("MainWindow", "a|b")) + self.label_134.setText(_translate("MainWindow", "a or b")) + self.label_135.setText(_translate("MainWindow", "a*")) + self.label_136.setText(_translate("MainWindow", "0 or more a\'s")) + self.label_137.setText(_translate("MainWindow", "\\")) + self.label_138.setText(_translate("MainWindow", "Escapes a special character")) + self.label_139.setText(_translate("MainWindow", "Regular Expression Quantifiers")) + self.label_140.setText(_translate("MainWindow", "*")) + self.label_141.setText(_translate("MainWindow", "0 or more")) + self.label_142.setText(_translate("MainWindow", "+")) + self.label_143.setText(_translate("MainWindow", "1 or more")) + self.label_144.setText(_translate("MainWindow", "?")) + self.label_145.setText(_translate("MainWindow", "0 or 1")) + self.label_146.setText(_translate("MainWindow", "{2}")) + self.label_147.setText(_translate("MainWindow", "Exactly 2")) + self.label_148.setText(_translate("MainWindow", "{2, 5}")) + self.label_149.setText(_translate("MainWindow", "Between 2 and 5")) + self.label_150.setText(_translate("MainWindow", "{2,}")) + self.label_151.setText(_translate("MainWindow", "2 or more")) + self.label_152.setText(_translate("MainWindow", "{,5}")) + self.label_153.setText(_translate("MainWindow", "Up to 5")) + self.label_154.setText(_translate("MainWindow", "ab")) + self.label_155.setText(_translate("MainWindow", "The string ab")) + self.label_156.setText(_translate("MainWindow", "Regular Expression Groups")) + self.label_157.setText(_translate("MainWindow", "(...)")) + self.label_158.setText(_translate("MainWindow", "Capturing group")) + self.label_159.setText(_translate("MainWindow", "(?P...)")) + self.label_160.setText(_translate("MainWindow", "Capturing group named Y")) + self.label_161.setText(_translate("MainWindow", "(?:...)")) + self.label_162.setText(_translate("MainWindow", "Non-capturing group")) + self.label_163.setText(_translate("MainWindow", "\\Y")) + self.label_164.setText(_translate("MainWindow", "Match the Y\'th captured group")) + self.label_165.setText(_translate("MainWindow", "(?P=Y)")) + self.label_166.setText(_translate("MainWindow", "Match the named group Y")) + self.label_167.setText(_translate("MainWindow", "(?#...)")) + self.label_168.setText(_translate("MainWindow", "Comment")) + self.label_169.setText(_translate("MainWindow", "{2}")) + self.label_170.setText(_translate("MainWindow", "Exactly 2")) + self.label_171.setText(_translate("MainWindow", "Regular Expression Character Classes")) + self.label_172.setText(_translate("MainWindow", "[ab-d]")) + self.label_173.setText(_translate("MainWindow", "One character of: a, b, c, d")) + self.label_174.setText(_translate("MainWindow", "[^ab-d]")) + self.label_175.setText(_translate("MainWindow", "One character except: a, b, c, d")) + self.label_176.setText(_translate("MainWindow", "[b]")) + self.label_177.setText(_translate("MainWindow", "Backspace character")) + self.label_178.setText(_translate("MainWindow", "\\d")) + self.label_179.setText(_translate("MainWindow", "One digit")) + self.label_180.setText(_translate("MainWindow", "\\D")) + self.label_181.setText(_translate("MainWindow", "One non-digit")) + self.label_182.setText(_translate("MainWindow", "\\s")) + self.label_183.setText(_translate("MainWindow", "One whitespace")) + self.label_184.setText(_translate("MainWindow", "\\S")) + self.label_185.setText(_translate("MainWindow", "One non-whitespace")) + self.label_186.setText(_translate("MainWindow", "\\w")) + self.label_187.setText(_translate("MainWindow", "One word character")) + self.label_188.setText(_translate("MainWindow", "\\W")) + self.label_189.setText(_translate("MainWindow", "One non-word character")) + self.label_190.setText(_translate("MainWindow", "Regular Expression Assertions")) + self.label_191.setText(_translate("MainWindow", "^")) + self.label_192.setText(_translate("MainWindow", "Start of string")) + self.label_193.setText(_translate("MainWindow", "\\A")) + self.label_194.setText(_translate("MainWindow", "Start of string, ignores m flag")) + self.label_195.setText(_translate("MainWindow", "$")) + self.label_196.setText(_translate("MainWindow", "End of string")) + self.label_197.setText(_translate("MainWindow", "\\Z")) + self.label_198.setText(_translate("MainWindow", "End of string, ignores m flag")) + self.label_199.setText(_translate("MainWindow", "\\b")) + self.label_200.setText(_translate("MainWindow", "Word boundary")) + self.label_201.setText(_translate("MainWindow", "\\B")) + self.label_202.setText(_translate("MainWindow", "Non-word boundary")) + self.label_203.setText(_translate("MainWindow", "(?=...)")) + self.label_204.setText(_translate("MainWindow", "Positive lookahead")) + self.label_205.setText(_translate("MainWindow", "(?!...)")) + self.label_206.setText(_translate("MainWindow", "Negative lookahead")) + self.label_207.setText(_translate("MainWindow", "(?<=...)")) + self.label_208.setText(_translate("MainWindow", "Positive lookbehind")) + self.label_209.setText(_translate("MainWindow", "(?")) + self.label_243.setText(_translate("MainWindow", "Insert entire match")) + self.label_244.setText(_translate("MainWindow", "\\g")) + self.label_245.setText(_translate("MainWindow", "Insert match Y (name or number)")) + self.label_246.setText(_translate("MainWindow", "\\Y")) + self.label_247.setText(_translate("MainWindow", "Insert group numbered Y")) +import src_rc + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + MainWindow = QtWidgets.QMainWindow() + ui = Ui_MainWindow() + ui.setupUi(MainWindow) + MainWindow.show() + sys.exit(app.exec_()) diff --git a/requirements.txt b/requirements.txt new file mode 100755 index 0000000..98a0b8a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +PyQt5==5.15.1 +PyQt5-sip==12.8.1 diff --git a/src_rc.py b/src_rc.py new file mode 100755 index 0000000..110a341 --- /dev/null +++ b/src_rc.py @@ -0,0 +1,1547 @@ +# -*- coding: utf-8 -*- + +# Resource object code +# +# Created by: The Resource Compiler for PyQt5 (Qt v5.15.1) +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore + +qt_resource_data = b"\ +\x00\x00\x13\x8a\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x88\x00\x00\x00\x81\x08\x06\x00\x00\x00\x1b\xb5\xf2\x9a\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x28\x0b\x00\x00\x28\x0b\ +\x01\xa9\x5a\x5f\x0f\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x13\x17\x49\x44\ +\x41\x54\x78\x9c\xed\x9d\x7b\xbc\x55\xd3\xf6\xc0\xbf\xe3\x3c\xf4\ +\x38\xa7\x53\xe9\xa9\x24\x91\x47\x0f\x52\xb7\x9f\x90\x5e\x4a\x12\ +\xee\x95\x84\xeb\x75\x43\xf4\x0b\x79\x24\x7e\x11\x57\x14\xe2\x76\ +\xb9\xb8\xa8\xeb\x71\xf3\xf3\x0c\xbf\xfa\x79\x45\x92\x92\x12\x7d\ +\x28\x51\x12\xe9\x21\xa4\x97\x1e\xa7\x73\xaa\x73\x4e\x8d\xfb\xc7\ +\x3c\x3b\xfb\xec\xbd\xd6\xde\x6b\x3f\xd7\xdc\xc7\xfe\x7e\x3e\xe7\ +\x53\x67\xee\xb5\xe6\x1c\x67\xed\xb1\xe6\x63\xcc\x31\xc7\x10\x7e\ +\x07\xa8\x6a\x63\xa0\x1d\xd0\x12\x68\x01\x34\x03\x9a\x03\x4d\x81\ +\x22\xa0\x16\x50\xa7\xf2\x27\xaf\xf2\xb6\xad\x95\xff\x56\x00\x9b\ +\x83\x7e\x7e\x01\x56\x01\xcb\x81\x6f\x80\xd5\x22\xb2\x2f\x2d\x7f\ +\x88\x0f\x88\xdf\x02\x24\x1b\x55\x6d\x0d\x9c\x04\x9c\x00\xb4\x07\ +\xda\x02\x0d\x52\xd8\xe4\x6e\x60\x21\xf0\x01\x30\x1b\xf8\x54\x44\ +\xf6\xa4\xb0\xbd\xb4\x92\xf1\x0a\xa2\xaa\x4d\x81\x33\x81\x7e\x40\ +\x57\x4c\xaf\xe0\x27\x25\xc0\x54\x60\x32\x30\x27\xd3\x7b\x97\x8c\ +\x54\x10\x55\x3d\x18\xb8\x14\xf8\x13\xd0\x19\xc8\xf1\x57\x22\x57\ +\xd6\x02\x8f\x00\x8f\x55\xa7\x5e\xc5\x4a\x54\x35\x4f\x55\xcf\x56\ +\xd5\xb7\x54\xb5\x42\x33\x8b\x55\xaa\x7a\x81\xaa\x66\xe4\x0b\x69\ +\x35\xaa\x9a\xa3\xaa\x83\x54\x75\x85\xaf\x5f\x71\x72\x98\xa5\xaa\ +\xcd\xfc\x7e\xa6\xb1\x60\xb5\x46\xab\x6a\x3f\xe0\x41\xa0\x8d\xdf\ +\xb2\x24\x91\x75\x40\x3f\x11\xf9\xda\x6f\x41\xbc\x60\xa5\x82\xa8\ +\x6a\x01\x30\x01\x18\x8a\xa5\x32\x26\xc8\x26\xe0\x44\x11\xf9\xde\ +\x6f\x41\xa2\x61\xe5\xc3\x57\xd5\x39\x40\x8f\x28\x97\x95\x03\xef\ +\x01\x33\x80\x35\xc0\x3e\x8c\x6d\xa3\x0f\x70\x06\x50\x3b\x75\x12\ +\x26\x85\x65\x40\x67\x11\xd9\xed\xb7\x20\x19\x85\xaa\x16\xa8\x6a\ +\x79\x94\xb1\xfc\x1d\x55\x3d\x22\x42\x1d\x07\xa9\xea\xb3\xa9\x9c\ +\x4c\x24\x89\xbb\xd3\xf9\x6c\xab\x05\xaa\xda\x35\xca\x43\x7d\x44\ +\x55\x3d\x2d\x6b\x55\xf5\xc6\xd4\x7f\xc7\x09\xb1\x4d\x55\xeb\xa6\ +\xfa\x99\x26\x82\x8d\xf6\x03\xd7\x9e\x01\x78\x13\xb8\xc1\xab\xf1\ +\x49\x44\x1e\xc2\xd8\x21\x6c\xa5\x2e\xf0\xdf\x7e\x0b\x11\x09\x1b\ +\x15\xe4\x70\x97\xf2\xdd\xc0\xb5\x71\x58\x26\x47\x63\xf6\x4f\x6c\ +\xe5\x42\xbf\x05\x88\x84\x8d\x0a\xd2\xd0\xa5\x7c\x9a\x88\xfc\x10\ +\x6b\x65\x22\xb2\x13\x78\x2a\x31\x91\x52\xca\xb1\xaa\xea\xf6\x52\ +\xf8\x8e\x8d\x0a\x52\xdf\xa5\xfc\x9d\x04\xea\x9c\x9e\xc0\xbd\xe9\ +\xe0\x2c\xbf\x05\x70\xc3\x46\x05\x39\xd0\xa5\x7c\x55\x02\x75\xae\ +\x4e\xe0\xde\x74\x70\x92\xdf\x02\xb8\x61\xa3\x82\xd4\x73\x29\xaf\ +\x48\xa0\xce\xb2\x04\xee\x4d\x07\x5d\xfc\x16\xc0\x0d\x1b\x15\xc4\ +\x6d\x88\x69\x9e\x40\x9d\x2d\x12\xb8\x37\x1d\x1c\xa2\xc6\x6d\xc1\ +\x3a\x6c\x54\x90\x5a\x2e\xe5\xbd\x13\xa8\x33\x91\x7b\xd3\xc5\xd1\ +\x7e\x0b\xe0\x84\x8d\x0a\x92\xeb\x52\x7e\x9e\xaa\x16\xc5\x5a\x99\ +\xaa\xe6\x02\x97\x25\x26\x52\x5a\x38\xd2\x6f\x01\x9c\xb0\x51\x41\ +\xf2\x5c\xca\x1b\x02\x77\xc6\x51\xdf\x50\x8c\xeb\xa1\xed\x44\x32\ +\x10\xfa\x46\x26\x29\x08\xc0\x8d\xaa\x7a\xa9\xd7\x8a\x54\xb5\x27\ +\xc6\x5d\x20\x13\x38\xd4\x6f\x01\x9c\xc8\x34\x05\x11\x60\xb2\xaa\ +\x8e\x55\xd5\x9a\x6e\x17\xa9\x6a\xae\xaa\x5e\x83\xd9\xe9\xad\x91\ +\x6c\x01\x53\x44\x23\xbf\x05\x70\xc2\xba\xed\x7e\x55\x2d\xc5\x7d\ +\xa2\x1a\xcc\x0f\x18\x0b\xe9\x0c\x8c\xef\x67\x05\x70\x30\x66\xbb\ +\xff\x32\xcc\x31\x87\x4c\x62\xb9\x88\xb4\xf5\x5b\x88\x50\x6c\x54\ +\x90\x12\xec\xf7\xe5\x48\x05\x9b\x45\xc4\xba\x5e\xc4\xc6\x21\x26\ +\xa3\x8f\x09\x24\x80\x95\xdb\xfe\x59\x05\xb1\x87\x7c\x55\x8d\x34\ +\xff\xf2\x85\xac\x82\xd8\x85\xeb\xc4\xdb\x2f\x6c\x54\x90\xbd\x7e\ +\x0b\xe0\x23\xd6\xcd\xbd\xac\xeb\xd2\x80\xd6\xd8\x37\x79\x6e\x8c\ +\x39\xa8\x9d\x6a\xac\x7b\x61\xad\x53\x10\x11\xd9\xe6\xb7\x0c\xa1\ +\xa8\x6a\xba\x6c\x29\x89\xec\x58\xa7\x04\xeb\x34\xf6\x77\x8e\x75\ +\x0a\x92\x50\x0f\xa2\xaa\x2d\x80\xe3\x31\x27\xea\xeb\x03\x85\x0e\ +\x97\x15\x02\xf9\x1e\xaa\x13\xdc\x7d\x41\xfc\x26\x5d\x93\x47\xeb\ +\xe6\x5f\x31\x8f\xf5\xaa\xda\x09\x18\x0c\x0c\xc4\x04\x62\xc9\x92\ +\x3c\x5e\x01\xb6\x61\x7a\x92\xf5\x18\x2f\xba\x1f\x81\x8d\x40\x29\ +\x50\x0c\x6c\x4f\x67\x48\x09\xcf\x0a\xa2\xaa\x6d\x30\xc7\x21\xfb\ +\xa7\x4e\x9c\x2c\x1e\xd8\x0d\x7c\x07\x7c\x8b\x89\x72\x34\x17\x98\ +\x27\x22\xbb\x52\xd1\x58\x54\x05\xa9\x34\xde\x8c\x03\x6e\x26\x3b\ +\x67\xb1\x95\x3d\xc0\xc7\xc0\xcb\xc0\xcb\x22\xb2\x23\x59\x15\x47\ +\x54\x10\x55\x6d\x80\x89\x96\xd3\x3d\x59\x0d\x66\x49\x39\xa5\xc0\ +\xab\xc0\xfd\x22\xb2\x3c\xd1\xca\x5c\x15\x44\x55\xeb\x03\xef\x03\ +\x9d\x12\x6d\x24\x8b\x2f\xec\x05\x5e\x04\xee\x4a\x24\x8a\x80\xa3\ +\x82\x54\xae\xfb\xe7\x60\x02\xc1\x65\xc9\x6c\x76\x03\x63\x80\x09\ +\x22\x12\xf3\x2a\xc9\x6d\x4e\xf1\x0f\xb2\xca\x51\x5d\xa8\x09\x8c\ +\x07\xe6\xa9\x6a\xab\x58\x6f\x0e\xeb\x41\x54\xf5\x8f\xc0\xeb\x49\ +\x10\x2c\x8b\x7d\x6c\x01\xce\x15\x91\x39\x5e\x6f\xa8\xa2\x20\xaa\ +\x5a\x0b\xf8\x1a\x4b\xfd\x23\xb3\x24\x85\x32\x60\xb0\x88\xbc\xe4\ +\xe5\xe2\xd0\x21\x66\x04\x59\xe5\xa8\xee\x1c\x00\x3c\xa7\xaa\x17\ +\x78\xb9\x78\x7f\x0f\xa2\xaa\xb5\x31\xa1\x9c\xac\x73\x7b\xcb\x92\ +\x12\xca\x81\x01\x22\xf2\x76\xa4\x8b\x82\xf7\x62\x86\x90\x0c\xe5\ +\xa8\x28\x83\xe5\x73\x3d\x5e\x2c\x50\x50\x0f\x72\x72\xa1\x56\x11\ +\x14\x1e\x68\x7e\xcf\x92\x0e\xf2\x81\x97\x54\xf5\x84\x48\x11\x17\ +\x83\x7b\x90\x2f\x80\x0e\x09\x37\xbb\x7d\x03\x5c\x99\xc0\x31\xd3\ +\x82\xfa\xd0\xf4\x70\x68\xd3\x1d\x3a\xf4\x85\xf6\xbd\x21\xd7\x3a\ +\xaf\x84\xea\xc4\x72\xa0\x8b\x88\x14\x3b\x7d\x28\x00\xaa\xda\x16\ +\x13\x75\x2f\x71\x12\x55\x90\x50\x9a\x1c\x06\x03\x6e\x83\x9e\x83\ +\x4d\x4f\x93\x25\x15\x4c\x12\x11\xc7\x50\x58\x81\x49\xea\xa0\x34\ +\x0a\x13\x1b\x1b\x56\xc1\xc4\x21\x30\xb6\x0f\xec\xd8\xe4\xb7\x34\ +\xd5\x95\xab\x54\xb5\x8f\xd3\x07\x01\x05\x39\x35\x8d\xc2\xc4\xc7\ +\xb2\x39\x70\xfb\x49\x50\xbc\xd9\x6f\x49\xaa\x23\x02\x3c\xa6\xaa\ +\x61\x7e\x3b\xa2\xaa\x75\x30\x06\x14\x2f\x4e\x3d\xd1\x71\x1b\x62\ +\x46\xbf\x0b\x75\x5c\xc2\x8f\xed\xde\x09\x25\x5b\xe1\x97\x95\xf0\ +\xcd\x7c\xf8\xea\x7d\x53\xe6\xc4\x71\xfd\xe0\xd6\xb7\x41\xb2\x1b\ +\xcb\x29\x60\x98\x88\x4c\x0c\x2e\x10\x55\xed\x86\xf1\x29\x48\x0e\ +\x6e\x0a\x32\xe9\x67\xa8\x7f\x90\xb7\x3a\x8a\xb7\xc0\x2b\x77\xc2\ +\x8c\xc7\x9c\x3f\xbf\x72\x22\x9c\x3a\x34\x7e\x19\xb3\xb8\xf1\x33\ +\x70\x84\x88\x94\x06\x0a\x72\x80\x63\xfd\x93\xc7\x85\x3a\x0d\xe0\ +\x8a\x7f\x9a\x1f\x27\xde\xca\x94\x03\xfb\x19\x47\x33\x4c\x1e\x9e\ +\xfd\xe4\x60\x73\xec\x8c\xd3\xae\x81\x8e\xa7\x87\x97\xaf\xff\x16\ +\x7e\x5e\x91\x7e\x79\x7e\x1f\x0c\xd7\xa0\xbc\x36\x79\xc0\x21\x3e\ +\x0a\x13\x9d\xbe\xc3\x60\xb1\x43\x04\xcc\xb5\x4b\xa0\xd9\x51\xc9\ +\x6b\x67\x6f\x39\x6c\x5c\x0d\x3b\x36\xff\xb6\x5a\xaa\xd3\x00\x8a\ +\x1a\x41\xd3\xd6\xbf\xa7\x25\x76\x5b\xa0\x17\x26\x07\x1f\x79\x98\ +\x90\x09\xf6\x72\x74\x37\xe7\xf2\x6d\x49\x08\x9e\xbc\xab\x18\x3e\ +\x9e\x02\x8b\xa7\x9b\x89\xf1\x2e\x47\x5b\x91\x31\xde\xb5\xef\x05\ +\x27\x9d\x0f\x27\x9c\xeb\x6d\x82\xbc\xf5\x67\x98\xee\x10\x05\x3c\ +\xef\x00\x38\xe7\x36\xc8\x8f\xd3\x51\x5e\x15\xde\x78\x00\x76\x6e\ +\xad\x5a\x5e\xa7\x01\x9c\x35\x12\x24\x29\x67\xce\x2e\x22\x48\x41\ +\x1a\x27\xa3\xc6\x94\x51\x50\x0f\xf2\x6b\x40\x79\x48\xca\xb7\x8a\ +\x04\x22\x5b\xee\xad\x80\xe9\x0f\xc3\xd4\x7b\xcc\xea\x29\x1a\x25\ +\x5b\xe1\xd3\xa9\xe6\xa7\x45\x7b\xb8\xfc\x11\x68\xd7\x2b\xf2\x3d\ +\xf5\x9b\x41\xe9\x36\x98\x39\x29\xfc\xb3\x9d\x5b\xe0\x0a\x97\x09\ +\x78\x34\xde\x9c\x00\x2f\x8c\xaa\x5a\x96\x9b\x07\xb7\xbd\x9b\x2c\ +\xe5\x00\x18\xa0\xaa\xc3\x44\xa4\x2c\x07\x28\x48\x56\xad\x29\x61\ +\x6f\x85\xb3\x32\x14\xb8\x45\xcb\x8c\x42\xc9\x36\x18\xd7\x17\x9e\ +\x1b\xe9\x4d\x39\x42\x59\xb7\x14\xc6\x9e\x0a\xef\xba\x4c\xa0\x83\ +\xb9\xfc\x51\x38\xca\x21\x46\xee\x8c\xc7\xe1\xa3\x17\x62\x6f\xfb\ +\xbb\x4f\xe1\xa5\xd1\xe1\xe5\x17\x3f\x00\xc7\x24\x35\x90\x63\x7d\ +\xa0\x27\x98\x49\xaa\x97\x68\x3e\xfe\x51\xbc\xd9\x74\xab\xa1\x78\ +\x5d\x32\x07\xb3\x69\x2d\xdc\xd1\x15\x96\xcd\x76\xfe\xbc\x6e\x13\ +\x38\xf2\x44\xe8\xd8\xdf\xf4\x10\x07\xb7\x75\x1e\x4e\xf6\xed\x85\ +\x67\x86\xc3\xec\x67\x22\xb7\x97\x9b\x0f\xd7\xbd\x68\xba\xff\x50\ +\x9e\xba\xda\xd8\x7d\xbc\x52\xbc\x19\x1e\x1c\x64\xe6\x4a\xc1\x74\ +\xbb\x08\xce\xb8\xd1\x7b\x3d\xde\xe9\x0d\x66\x88\xb1\x7b\xf6\xf5\ +\xdd\x27\xce\xe5\x87\xff\x57\x6c\xf5\x94\x6c\x83\x7b\xfb\xc1\x4f\ +\x21\x67\xb0\xf3\x6b\x42\xef\x21\xc6\xae\xd2\xc2\x61\x41\x57\xb2\ +\x15\x16\xbc\x0a\xd3\xee\x35\x0a\x16\xcc\x33\xc3\xa1\x75\x17\x68\ +\x11\x21\xda\x55\xa3\x96\x70\xdd\x0b\x70\x6f\x7f\xd0\xa0\xf3\x4e\ +\xbb\x76\xc0\x43\xe7\xc1\xb8\x8f\xa3\xcf\x47\x74\x1f\xfc\xf3\x52\ +\xd8\xb2\xae\x6a\x79\xab\x8e\x30\xf4\xc9\xc8\xf7\xc6\xcf\x29\x60\ +\x7a\x10\xbb\xf3\xb9\x7e\xf2\x5a\x78\x59\xab\x4e\x66\x75\x11\x0b\ +\x4f\x5d\x1d\xae\x1c\x07\x1d\x01\xf7\x7f\x6e\x86\x02\x27\xe5\x00\ +\x33\x94\xf5\xb9\x0a\x1e\x58\x0c\xed\x7a\x56\xfd\x6c\x4f\x29\x3c\ +\x7f\x73\xf4\xb6\x3b\x9c\x06\x83\x1c\x22\x78\xae\x5e\x0c\xcf\x8e\ +\x88\x7e\xff\xeb\x0f\x84\xaf\xe4\x8a\x1a\xc1\xc8\x69\x70\x40\xca\ +\x06\x80\x8e\xaa\x5a\x98\x83\xf1\x7a\xb6\x93\xd5\x8b\x60\x9e\x83\ +\x67\x5c\x9f\x2b\x63\xab\xe7\xab\x59\x30\x3f\xa4\x9e\x46\x2d\xe1\ +\xee\x8f\xcc\x30\xe2\x85\x82\xfa\x30\x72\x2a\x34\x0c\xb1\x0a\x7c\ +\xf1\x2e\xfc\xe8\x21\x81\xe5\xc0\xdb\xcd\xd0\x15\xca\x7b\x4f\xc0\ +\x82\x57\xdc\xef\x5b\xfe\x11\x4c\xb9\xa3\x6a\x59\x6e\x1e\xdc\x38\ +\xc5\xfc\x0d\xa9\x23\x17\x68\x9f\x03\x6c\x4f\x65\x2b\x71\xb3\x65\ +\x1d\x3c\x70\x76\xd5\x6e\x19\x8c\xed\xa3\xd7\xe5\xb1\xd5\xf5\x4a\ +\xc8\xdb\x2b\x39\x30\xe2\x55\x33\xe7\x88\x85\x82\xfa\x70\x7e\x48\ +\x9a\x39\x55\x98\xfd\xef\xe8\xf7\x4a\x0e\x0c\x7f\x0e\x1a\x3b\x38\ +\x96\x4f\xbc\xd2\x79\x3e\xb2\x63\x13\x3c\xfc\x67\x33\x51\x0f\xe6\ +\x92\x09\xd1\x57\x51\xc9\xa1\x43\x0e\xe6\x90\xb0\x3d\xec\xdb\x0b\ +\xf3\x5f\x86\x5b\x3a\x86\x8f\xb9\xf9\x35\x60\xd8\xd3\xc6\x96\xe0\ +\x95\x75\x4b\x61\xc5\xfc\xaa\x65\x27\x5f\x18\xfb\x1c\x26\xc0\x49\ +\x17\x40\xad\x3a\x55\xcb\xbe\x99\xe7\xed\xde\xc2\x03\xe1\xa6\xd7\ +\xc2\xe7\x1c\x81\xf9\x48\x79\x50\x67\xae\xfb\xe0\xd1\x4b\xe0\xd7\ +\x9f\xaa\x5e\xdb\xe3\x52\xe8\x7f\x7d\xec\x72\xc7\x47\x9b\x3c\xd2\ +\x95\xae\x6b\xf3\x5a\x28\x0b\x39\x5f\x5c\x56\x6a\xc6\xf1\x92\xad\ +\xb0\x71\x8d\xf9\x32\x17\x4e\x0b\x7f\x28\x60\xba\xd5\x6b\xff\x17\ +\x8e\xea\x1a\x5b\xbb\x8b\x1c\x72\x09\xc5\x3a\x44\x05\x93\x5f\xc3\ +\x4c\x4c\xbf\x7a\xff\xb7\xb2\xd5\x8b\xcc\x97\xeb\xc5\xf8\xd5\xaa\ +\x93\x99\xf3\x4c\x0a\x91\x21\x30\x1f\x19\xf2\xb8\xf9\x7d\xda\x7d\ +\xb0\x64\x46\xd5\x6b\x0e\xef\x6c\x36\x2a\xd3\x47\x8b\x3c\xd2\x95\ +\x6c\x67\xf4\x89\xf1\xdf\x5b\x78\xa0\x19\x73\x8f\x71\xf4\x69\x89\ +\x4c\xa8\x7f\x6c\xcd\x42\x38\xfa\xe4\xf8\x65\x01\x33\xb9\x0d\x56\ +\x90\x8a\x32\xa3\xd4\x4d\x3c\x66\x16\xeb\x3d\x04\xbe\x5d\x10\xbe\ +\x4c\x7e\xef\x09\x68\xdb\x03\xea\x35\x0d\x1f\x16\xeb\x36\x36\x73\ +\xa0\xd4\x4d\x4a\x9d\x68\x91\x87\xf1\x49\xb4\x13\xc9\x31\xeb\xfc\ +\x4b\xfe\x16\xfb\x7c\x01\x4c\x37\x1d\xda\xfd\xd7\x6d\x02\x4b\x3f\ +\x48\x4c\xae\x12\x87\x28\x59\x3b\x7f\xf5\xae\x20\x00\x43\x1e\x83\ +\x35\x8b\x4d\xcf\x11\xcc\xa4\xab\xa0\x66\x81\x19\x6a\x03\xe4\xe6\ +\x9b\x39\x53\x83\xb4\xa7\xbd\x69\x6c\xaf\x82\xb4\x3c\xd6\x3c\x94\ +\x83\x12\xc8\x92\x51\xb2\x0d\x4a\x43\xe6\xe0\x1b\xbe\x37\x96\xd0\ +\x64\x13\xba\x37\x12\x8d\xfc\x9a\x30\xe2\x35\x18\xd5\xb9\xaa\x45\ +\x77\xd7\x0e\xf3\x13\xcc\x5f\x1e\x34\x4e\xdc\xe9\xa7\x20\x07\x58\ +\x82\x85\xb1\xb1\xf8\x61\xa9\xb7\xe5\x63\x24\x8a\xb7\x24\x47\x16\ +\x2f\x54\xc4\x61\x4e\x6a\x72\x98\x59\xd9\x44\xda\xfc\xeb\x7e\x09\ +\xf4\xbb\x36\x7e\xb9\x12\xa3\x20\x4f\x44\x8a\x55\xf5\x2b\xa0\x63\ +\x4a\x9b\xba\x67\x01\x14\xb9\xec\x0b\xae\x5c\x08\x8f\x5e\x5c\xb5\ +\x5b\xd5\x7d\xf0\xc8\xc5\x70\xd7\x87\x70\xd8\x1f\xe2\x6b\x33\x9e\ +\xbd\x96\x74\xd3\xe9\x0c\xb3\xbb\xfb\x7f\xe3\xc2\x3f\x3b\xe4\x18\ +\x18\xfa\xaf\xf4\xcb\xf4\x1b\x79\x81\x03\x27\xf3\x48\xb5\x82\x34\ +\x6c\xe9\xbe\x7f\xd2\xe4\x30\xd8\xb6\x3e\xdc\xaa\xb8\xa7\x04\xee\ +\x3f\x0b\xee\xf9\x24\xdc\x40\xe5\x85\xd0\x7d\x0b\x80\x06\x07\xc3\ +\xc9\x17\xc5\x5e\x57\x34\x9a\xb6\x8e\xff\x5e\xb7\x8d\xc7\x0d\xdf\ +\x1b\xc7\xa8\x96\x89\x1f\x57\x8a\x93\xb2\x80\x82\xbc\x07\x0c\xf7\ +\x4b\x0a\xc0\x6c\x38\xad\xff\xce\xcc\xe4\x83\xd9\xba\x1e\xee\x3d\ +\x1d\xc6\xce\x8f\xfd\xd4\x5d\xa1\x43\x86\xd5\x82\xfa\x70\xd1\xf8\ +\xf8\xe5\x4c\x36\x2b\xe6\x87\x6f\xdf\x07\xd8\x53\x6a\x8c\x85\xe3\ +\x3f\x73\xde\xf0\x4b\x3d\x65\x81\xc1\x6f\x16\x50\xe2\x87\x04\x55\ +\xb8\xec\x61\xe7\xa5\xec\x8f\x5f\xc3\x84\x01\xb1\xfb\x80\x14\x3a\ +\x3c\x54\x9b\x8e\x4d\x6c\x5d\xef\xbc\x43\x1b\xcc\xa6\x35\xf0\xf8\ +\xe0\x70\x8b\x72\x7a\xd8\x91\x03\x50\x19\x21\xef\xfd\x28\x17\xa7\ +\x9e\xdc\x7c\x18\xf1\x0a\x34\x77\x48\x00\xb9\x6c\x8e\xd9\x70\x8b\ +\x85\xc2\x03\x4d\x9d\xc1\x6c\xdb\x00\xdb\x37\xc6\x2d\x62\xd2\x28\ +\xdf\x03\x13\xce\x31\x4a\x12\xcc\x71\xfd\xc2\xaf\xfd\xfc\x2d\x63\ +\x38\x4b\x3f\xbf\x04\x4f\x9f\xe3\xf0\x60\x49\x01\x05\xf5\xe1\xd6\ +\xe9\xce\xbb\xb5\x1f\x3c\x1d\xdb\x83\xca\xcd\x83\xd6\x21\x26\x75\ +\xdd\x07\x5f\xbe\x97\x98\x8c\xc9\x60\xf2\xf5\xe1\xae\x0c\xed\x7a\ +\xc1\xa8\xb7\xe0\x54\x87\x53\x90\x53\xfe\x6a\x36\x06\xd3\xcb\x86\ +\x60\x05\x79\x03\x73\x80\xca\x7f\x1a\xb7\x32\x7b\x16\x4e\x7b\x2e\ +\x2f\x8f\x36\x7b\x35\x5e\x69\x7f\x4a\x78\xd9\xdc\xe7\xe3\x97\x2d\ +\x19\xcc\xfe\x77\xb8\x2b\x62\xbd\xa6\x70\xc3\x4b\xc6\x39\x7a\xf0\ +\x43\xe1\x13\xd3\xc0\xde\xcc\xe6\x1f\xd2\x27\x27\xac\xda\xaf\x20\ +\x22\xb2\x07\x78\x2e\x9d\xad\x47\xa4\x4d\x77\xe7\x25\x9e\x2a\x3c\ +\x7e\x99\xf7\x0d\xb2\x63\x1d\x8c\x62\x4b\x66\xc0\xd7\x1f\x26\x26\ +\x5f\xbc\xac\xfa\x3c\x7c\xa8\xcc\xc9\x35\x4e\x45\x01\x6b\x71\x7e\ +\x4d\xb3\xb5\x50\x33\x24\xb2\x79\xc0\xab\x2c\xd4\x3f\x37\x75\x2c\ +\x0f\xb5\xd0\x3c\x8c\x4d\x46\xb3\x1e\x7f\x81\x01\xb7\x86\x97\x97\ +\xef\x86\xbf\x9d\x6d\x56\x3d\xd1\x38\xba\x1b\x34\x6f\x13\x5e\xfe\ +\xc4\x15\xc9\x39\x0c\xbe\xa7\xc4\x38\x33\x7b\xa1\x78\x33\xfc\x7d\ +\x60\xd5\x5d\x5b\x30\xbe\x22\xa1\x3d\x5d\xb3\xa3\x7e\xdb\xb8\x0b\ +\x66\xe5\x42\x98\x7c\x43\x7c\xb2\xc6\x4e\x55\x05\x11\x91\x35\xc0\ +\x94\x74\xb5\xee\x89\x0b\xc6\x41\x97\x81\xe1\xe5\xc5\x5b\xe0\xbe\ +\xfe\xd1\x57\x25\x22\x70\xde\x98\xf0\xf2\x0d\xdf\xc3\xf8\x33\xc3\ +\x27\x89\x5e\x51\x85\x45\x6f\xc3\xc8\x0e\xf0\xbe\x07\x63\xd6\xbe\ +\xbd\xf0\xf0\x85\xe1\x6e\x8b\xed\x7a\xc1\xc0\x3b\x9c\xef\xe9\x7e\ +\x09\xf4\x72\x48\x1a\x3e\x73\x22\x7c\xf8\x6c\xec\x32\xc7\x46\x39\ +\xf0\xb9\x93\x8d\xf7\x3e\x6c\xca\x3a\x20\x39\x66\x9b\xff\xf0\xce\ +\xe1\x9f\xfd\xb2\xd2\xd8\x09\x42\xdf\xc8\x50\x4e\x18\xe4\xec\xcd\ +\xb5\x72\x21\xdc\x72\x9c\xf1\x36\x0b\x75\xca\x71\x63\xf7\x4e\x98\ +\x33\x19\x46\x1e\x6b\x14\x6c\x83\xc7\x18\xb5\x2f\xdf\x0e\x5f\xce\ +\xac\x5a\x56\xb7\x89\x19\x5a\x22\x1d\xca\xba\xfc\x51\x67\xaf\xb7\ +\x27\x87\xc1\x9a\x2f\xbc\xb5\x1d\x1f\x8b\x44\xa4\x34\x4c\x41\x44\ +\x64\x19\x26\x1f\xad\x3d\xd4\xa8\x0d\xb7\xbc\x6e\xac\xa0\xa1\xac\ +\x98\x0f\x8f\x0d\x76\xf6\x7c\x0f\x20\x02\xd7\x4c\x36\xdb\xf4\xa1\ +\x6c\xdf\x68\xde\xec\xeb\x8e\x80\xe7\x6e\x86\xcf\xde\x30\xbe\xab\ +\xdb\x37\x9a\xde\x69\xdd\x32\xb3\xb5\xff\xf6\x3f\xcc\x71\x89\x2b\ +\x1a\x9a\x39\xd0\xba\xa5\xde\xe5\x5f\x38\x0d\x5e\xbf\x3f\x44\xa6\ +\x4a\x0f\xb3\x68\xde\xf9\x35\x0a\xcc\x7c\xa4\x46\x48\xb6\xb2\xb2\ +\x5d\xf0\xf7\x73\x9d\x77\x96\x93\xc3\x5c\x70\x8f\xb4\xdc\x18\x93\ +\x51\xa0\x28\xe6\x6a\x93\x71\xba\xdf\x8d\x35\x5f\xc0\x5f\xbb\x39\ +\x87\x86\x38\x7b\x14\x5c\x18\x65\x09\xbc\x69\xad\xb3\x67\x7b\xa2\ +\x74\x38\xcd\x84\xb7\x70\xe2\xa7\x6f\xe0\xb6\x2e\xe1\x3b\xb4\x03\ +\x6f\x87\xf3\xc7\x7a\x6f\x63\xd6\x53\xe1\x4e\x46\x00\x7f\x38\xd3\ +\xbc\x3c\xc9\x0f\x87\x71\xb2\x88\xcc\x77\xac\x55\x44\x36\x62\xb2\ +\x3b\xd8\xc5\xa1\xc7\x99\x2e\xd9\xe9\x61\xfc\xff\x78\xf3\x10\x23\ +\xd1\xa8\x25\x8c\x5b\x00\x5d\x3d\x45\x80\xf4\x4e\x6d\x97\x94\xb7\ +\xbb\x8a\x8d\x31\x2c\x54\x39\xda\xf6\x80\x41\x63\x62\x6b\xa3\xf7\ +\x10\xe8\xfa\xe7\xf0\xf2\xcf\xdf\x82\xa9\xf7\xc6\x56\x57\x74\x36\ +\x00\x0b\x20\x72\x7a\x8f\x27\x01\x87\x53\xd3\x3e\xd3\xf9\x8f\x70\ +\xf1\xfd\xce\x9f\x3d\x75\x35\x2c\x89\x62\x04\x2b\xa8\x07\xd7\xbf\ +\x04\x77\xcc\x4c\xcc\xb3\xac\xa0\x9e\xf1\x0f\xbd\x73\x36\xdc\xe0\ +\x60\x97\x09\x2c\xc7\x7f\x0a\x71\xb7\x29\x6a\x04\xd7\xbf\x18\xdf\ +\x61\xf0\xab\x26\x39\x0f\x93\xaf\x8e\x89\xfe\x77\xc7\xc6\x0b\x81\ +\xa4\x45\xd1\xd2\x81\x34\x07\x16\x11\xcb\xf9\xdd\xdd\x3b\x9d\xb7\ +\xae\xcf\x19\x1d\xee\xec\x9b\x08\xef\x3c\xea\xec\xbb\x5a\xbb\x08\ +\xfe\xf4\x3f\xde\xbf\x80\x75\xcb\x8c\x5d\x64\xf9\x5c\x63\x5b\x71\ +\xf3\x21\xa9\x59\x68\x0e\x2a\x1d\xd6\xd9\x84\xa4\x68\xd7\x33\xdc\ +\x8c\x1f\xcc\xfa\x6f\xe1\x03\x87\x93\x77\x9d\xce\x80\x36\x2e\x07\ +\xd2\xbd\xb0\xf6\x4b\x98\xf7\x62\x78\x79\x51\x43\x38\xf3\xa6\x64\ +\x9d\xcf\x6d\x17\x08\x8d\xe9\x25\xa1\x50\x77\xcc\x3e\x4d\x72\x42\ +\x54\xd9\xce\x9e\x12\xa3\x24\x3b\x7f\x35\x9b\x83\xb5\x8a\x4c\x6f\ +\x51\xb7\xf1\xef\x25\xec\xd5\x4c\x11\xe9\x1b\xf8\xc5\x93\xba\xa9\ +\xea\x50\x20\xad\xee\xd4\x59\x7c\xa3\x87\x88\xec\xf7\xf4\xf6\xf4\ +\x4a\x88\xc8\x24\xe0\xa6\x94\x89\x94\xc5\x16\x66\x04\x2b\x07\xc4\ +\x98\xf5\x52\x55\xef\x00\xee\x8e\x7a\x61\x96\x4c\x64\x37\xd0\x41\ +\x44\xbe\x0d\x2e\x8c\x69\x50\x15\x91\xb1\x98\x98\xee\x09\x44\x6f\ +\xc9\x62\x29\x63\x43\x95\x03\xe2\xc8\x9b\x0b\xa0\xaa\xbd\x30\x7b\ +\x36\xd9\xcc\x10\xd5\x83\x59\xc0\x69\x4e\x29\xcb\xe2\x5e\x13\x55\ +\x5a\x5b\x27\x02\x03\x12\x10\x2c\x8b\xff\xac\x02\x8e\x17\x11\xc7\ +\xf5\x7d\xdc\xeb\x36\x11\xd9\x28\x22\xe7\x00\x17\x03\x69\xf5\x62\ +\xc9\x92\x34\xd6\x00\xbd\xdd\x94\x03\x12\xe8\x41\x82\x51\xd5\x9a\ +\xc0\xd5\xc0\x28\xb2\xc3\x4e\xa6\xb0\x14\x38\x53\x44\xd6\x46\xba\ +\x28\x69\x61\xf1\x60\x7f\x3a\xd5\x73\x80\xab\x80\x1e\xc9\xae\x3f\ +\x4b\xd2\x78\x01\x18\x2a\x22\x51\x4f\x32\xa4\xec\x0b\x54\xd5\x66\ +\xc0\x69\x40\x5f\xa0\x1b\xd0\x3c\x55\x6d\x65\xf1\xcc\x0a\x60\x84\ +\x88\x38\xc4\xc4\x70\x26\x6d\x6f\xb8\xaa\xd6\x05\xda\x00\x47\x01\ +\xf5\x80\x76\x98\x30\xe0\xbb\x2b\xff\x6f\x77\xbc\xd6\xcc\xa5\x04\ +\x98\x09\xfc\x0b\x63\x08\x8b\xe9\x80\x8d\x35\x43\x80\xaa\x9e\x82\ +\x59\x6e\xa5\x92\x0a\x60\x5a\x8a\xdb\x48\x84\xed\x40\x2c\x5f\x60\ +\x09\xe1\x36\x29\xc5\x9c\x4e\xd8\x02\x7c\x05\x7c\x21\x22\x71\xfb\ +\x19\xdb\x94\x0c\x2e\x1d\x27\xfb\x76\x89\xc8\x79\x69\x68\xa7\xda\ +\x60\xd3\xf6\xa4\x4d\xca\x9a\xa5\x12\x9b\xbe\x94\x74\x04\xf4\x15\ +\x55\x8d\x33\x86\x77\x4a\xa9\x70\xcb\x3a\xe9\x37\x36\x29\x48\x3a\ +\x4e\x27\x17\x02\xbf\xa6\xa1\x9d\x58\x59\x08\x74\xf1\x5b\x08\x27\ +\x6c\x1a\x62\xec\x0d\xe8\x9b\x7a\xac\x59\x2c\x84\x92\x55\x10\x3b\ +\xb0\xe9\x7b\xa8\x82\x4d\x43\xcc\xae\xe8\x97\x58\xc9\x46\xe0\x1b\ +\x60\x33\xc6\x96\x73\x0c\xe0\xe2\xe6\xee\x4a\x56\x41\x3c\x60\x67\ +\x48\x70\x77\x66\x61\x9c\xa7\xe6\x05\x1b\x9f\x54\xf5\x00\x8c\xf5\ +\xf8\x2e\xa0\x93\xc7\xba\xac\x55\x10\x6b\x50\xd5\x1c\x55\x2d\x57\ +\xfb\x29\x57\xd5\xa8\x61\x07\xd5\xfc\x3d\xe3\x3d\xd6\xb9\x24\x1d\ +\xcf\x38\x1e\xac\xd1\xdc\xca\xb7\xd0\xa2\xf8\x50\xae\x0c\x17\x91\ +\xa8\xe9\xa6\x44\x64\x9f\x88\x8c\x02\x5c\x0e\xf1\x54\xc1\x9e\x88\ +\x0a\x21\x58\xa3\x20\x95\x58\x10\x1b\x2a\x22\x53\x43\x33\x53\x7b\ +\xe0\x36\x60\x71\x94\x6b\xec\x39\x2c\x1f\x82\x6d\x0a\xb2\xc6\x6f\ +\x01\xa2\xe0\x90\x15\x28\x32\x95\x3d\x63\xb4\xfb\xb2\x3d\x88\x47\ +\x3c\x44\x84\xf1\x8d\xaf\x45\x24\x86\x23\xfd\x55\x98\x41\xe4\x49\ +\x78\x56\x41\x3c\xe2\x31\xd8\x86\x2f\x2c\x8a\xf7\x46\x11\x29\xc3\ +\x78\x70\xb9\x91\x55\x10\x8f\x24\x18\x9c\x3d\xa5\x24\x6a\xa2\x8f\ +\x34\x01\xb7\xd6\x48\x68\x9b\x82\x7c\x86\xbd\x6f\x93\x43\xd8\xe6\ +\x98\x68\x18\xe1\x33\x1b\xf7\x87\x00\xcb\x14\xa4\xd2\x47\x32\xde\ +\x71\x3e\xd5\xc4\x1d\x30\x5d\x55\xf3\x81\x48\xd9\x13\x53\x16\x26\ +\x28\x51\xac\x52\x90\x4a\xe6\x47\xbf\xc4\x17\x8e\x51\x55\x87\x10\ +\xd0\x9e\xe8\x83\xc9\x66\xed\x86\xb5\x69\x29\x6c\x54\x90\x37\xfd\ +\x16\x20\x02\x77\xc5\x7a\x83\xaa\x8a\x87\xfb\xb2\x0a\x12\x03\xb3\ +\xb1\xb7\xcb\x3d\x4f\x55\x07\xc7\x78\xcf\x18\x20\x5a\x8a\x4d\x6b\ +\x2d\xc8\xd6\x29\x48\xe5\x92\xf0\x55\xbf\xe5\x88\xc0\x24\x55\x1d\ +\x12\xed\x22\x55\x15\x55\x1d\x03\xb8\x04\x41\xad\x82\xcd\xcb\x7b\ +\xfb\x50\xd5\x23\x55\xb5\x22\xe9\xdb\x6c\xc9\xe5\x6d\x55\xed\xa2\ +\x66\x08\x09\x96\x3d\x57\x55\x4f\x55\xd5\x05\x31\xd4\x65\xed\x91\ +\x0f\x6b\x3d\x99\x54\xf5\x79\x20\x05\xa9\xa1\x92\xce\xcf\xc0\x97\ +\x98\x61\xb1\x11\x66\xb5\x13\x69\x49\x1b\xca\x0f\x22\x92\xd2\x1c\ +\xeb\x89\x60\xb3\x82\x34\xc6\x9c\xeb\xb0\xf6\xed\x4a\x12\x4f\x8b\ +\x48\xd4\x21\xcb\x2f\xac\x9b\x83\x04\xa8\x8c\xd5\x7a\x36\x99\xeb\ +\x69\x16\x8d\x32\xe0\x76\xc0\x21\x39\x8c\x3d\x58\xdb\x83\x04\x50\ +\xd5\x1e\xc0\xeb\xc4\xee\xc6\x67\x33\x73\x81\xeb\x45\x24\xa5\xc1\ +\xd6\x93\x81\xb5\x3d\x48\x00\x11\xf9\x10\x38\x9e\xe8\x3e\x15\x99\ +\xc0\x27\x40\x5f\x11\xe9\x91\x09\xca\x91\x51\xa8\x6a\x9e\xaa\x0e\ +\x53\xd5\x0d\xc9\x5d\x8c\xa4\x9c\x12\x55\x9d\xac\xaa\x09\x84\x75\ +\xf6\x0f\xeb\x87\x98\x50\x54\xb5\x0e\x30\x12\x13\x83\xc4\x21\x6b\ +\x80\x15\xec\x01\xe6\x00\x53\x81\x29\x22\x92\x69\x0e\xd9\xfb\xc9\ +\x38\x05\x09\xa0\xaa\x79\xc0\xe9\xc0\x65\x40\x7f\xa0\x86\xbf\x12\ +\xf1\x1d\x26\x41\xf5\x74\x4c\x98\x05\x2b\x8f\x52\xc6\x4a\xc6\x2a\ +\x48\x30\xaa\x5a\x1b\xe8\x0a\xf4\x04\x7a\x61\x8e\x1b\xa4\x52\x61\ +\xd6\x62\xce\xc2\x2c\xc1\x64\x45\xf8\xb8\x72\xd5\x55\xed\xa8\x16\ +\x0a\x12\x8a\xaa\xe6\x02\xad\x30\x01\x6b\xda\x00\x87\x02\x4d\x30\ +\x06\xac\xc0\x4f\x20\xf6\x7c\x2e\x26\x2f\x4e\x09\x50\x0a\x14\x03\ +\x3b\x2a\x7f\xff\x09\x63\x08\xfb\x11\x58\x0f\xac\x04\x96\x57\x97\ +\xde\xc1\x0b\xff\x01\x8b\xd8\xca\x55\xcc\x48\x82\xa4\x00\x00\x00\ +\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x0a\x81\ +\x00\ +\x00\x3a\xee\x78\x9c\xed\x5b\x09\x90\x14\xd5\x19\x7e\xeb\x22\xab\ +\x88\xb5\x8b\x89\x44\x82\xca\x96\x11\xe3\x85\xa1\xa2\x92\x44\x4d\ +\x58\x8d\xa6\xd4\x48\xc2\x31\x33\x8b\x5c\x01\x39\xb2\x46\x44\x01\ +\x0d\x10\xae\x85\x50\x40\x50\x88\x41\x20\xa1\xe4\x46\xa3\x08\x0a\ +\x04\x04\x4c\x02\x59\xe4\x14\x30\x20\x1a\x2e\x39\x16\x41\xe5\x76\ +\xb9\x17\xd8\xee\x2f\xff\xd7\xaf\x9b\xe9\x99\x9d\xde\xe9\x99\x9d\ +\x9d\x25\x55\x79\x55\x5f\xbd\xe9\xee\xf7\xde\xff\xf5\xeb\x77\xfc\ +\xef\xff\xff\x51\x2a\x43\x65\xaa\xc6\x8d\x95\xe4\xb9\xea\xad\x86\ +\x4a\x35\x51\x4a\xe5\xe6\xda\xd7\x39\x4a\xed\x96\x7b\x39\x39\xfa\ +\xba\xa0\x86\x52\xc3\xa5\xc0\xad\x52\x46\xaa\xa8\x8e\x4a\xdf\xb7\ +\xd2\xcd\xea\xff\x29\x56\xca\xc7\xf7\x54\x10\x9d\x05\xaf\x0a\x96\ +\x08\x3e\x14\x6c\x17\xec\x12\xac\x17\xbc\xa7\x02\x98\x2c\x78\x56\ +\x70\x9f\x6a\x8f\xab\xaa\x9b\xb2\x95\x82\x68\x23\xd8\x2a\x40\x82\ +\x38\x2b\x98\xad\x42\x68\x2e\x79\xcd\xf4\x13\x47\x86\xc8\x9d\x9a\ +\x04\xef\x58\xd8\x2b\xef\xd1\x2e\xad\xf4\x83\xe8\x9e\x0c\xd7\x9a\ +\x4f\xe2\xc2\x8f\xfa\x63\x77\x5e\x21\x76\x5e\xdd\x01\x67\x22\x9e\ +\xb7\xc2\x5d\x69\xe1\x5e\x88\xcb\x44\xde\xee\x44\xb9\xd7\xe9\x04\ +\x63\xdb\x17\x30\x00\x8d\xc3\x27\x60\x34\xea\xed\x2a\x13\x40\xeb\ +\xb4\xf0\x0f\xa2\x71\x32\x7d\x3f\x68\x16\x4e\x3a\xdc\x1d\x2c\xd8\ +\x00\xd3\xc5\xff\xd9\xb4\xf0\x0f\xa0\x4b\x32\xfc\x27\x2f\x43\x49\ +\x34\xff\xcd\x7b\x61\xb8\xf8\x0f\x48\x0b\xff\x20\x46\x25\xc3\xbf\ +\xdd\x58\x9c\x89\xe6\xff\xca\x7b\xae\xfe\x0f\x62\x50\x9a\xf8\xcf\ +\x48\x86\x7f\x46\x08\x18\xbd\x00\xe6\xb9\x0b\x30\xca\x0c\x18\x73\ +\xd6\xc2\x94\x39\x1c\x2e\x13\x42\x61\x9a\xf8\x2f\xac\xcc\x7a\x99\ +\x99\x0f\xe3\xf2\xd6\x28\x8b\xf1\x6c\x48\x9a\xf8\x2f\x8a\xcb\x33\ +\x84\x97\x05\x7d\x12\x42\x10\x0f\x54\x39\xf7\x16\xa8\x2b\x72\x56\ +\xf9\xe8\xe7\x41\x82\x6e\x29\x43\x08\xcd\x64\x7f\xb8\x29\x21\xae\ +\x7a\x9d\x7f\x48\xea\xbe\x26\xf9\x47\x82\xe3\x95\x19\x37\x29\xc2\ +\x72\xc1\xdd\x71\xb9\x87\xf0\xb0\x4a\x4e\xaf\x49\x07\x4e\xca\x5a\ +\x9b\xe7\xc9\x3d\x88\x11\x97\x00\xc7\x78\x38\xa4\x5a\xa2\x5e\x39\ +\xee\x01\x8c\xbc\x04\xb8\xf9\x43\x08\x53\xa2\xb8\x3f\x21\xf7\xcd\ +\x6a\xe5\x94\x18\x4a\xad\xf5\x44\x8f\x99\xda\x82\x03\x5e\x65\x65\ +\xbd\xc6\x4d\xdd\x81\x6f\x3e\x15\xbf\xdd\xdc\xdf\x00\x6d\xc7\xc2\ +\xec\x3a\x11\x66\xf3\x97\x60\xde\xf6\x7c\xe4\xf3\x1b\x9f\xd6\x6d\ +\xb1\xcd\xe8\xba\x35\x6c\x39\xc4\x65\x21\x5f\xef\xd0\xd9\xee\xfb\ +\x7e\x15\x95\xbb\xa5\x07\x98\x8c\x09\xef\x7b\x7f\x9f\xec\x5f\x01\ +\x6f\xac\x80\x69\x98\x91\x3a\x02\xf1\xd9\x57\x30\x1e\x18\xa8\xcb\ +\x3d\x33\x19\x26\xef\xbd\xba\xb8\x7c\x5b\xa3\xe6\xeb\x67\xd3\x8a\ +\x7c\x8e\x83\x10\xde\x94\x3c\xb3\xa2\xbe\xf7\xc3\x5f\xf6\x54\x7c\ +\xb0\x45\x73\x9d\xbf\x1e\xe6\x83\x43\x60\x36\x94\x3a\xec\xfb\xee\ +\x53\x60\x7e\x7e\x04\x46\x87\x71\xe1\xba\x33\x3f\xd0\x3c\x5b\xbe\ +\x1c\xbe\xf7\xd8\x70\x98\xa6\xbc\xfb\xc6\x3d\x30\xae\x6c\xeb\x7b\ +\x0c\x6d\xb2\xd7\xca\x0a\xcb\xc5\xe3\xdf\x66\xac\xe6\x33\xf5\x5f\ +\xb1\x9f\xd7\x6a\xa7\xc7\x8d\xfb\x7a\x53\x31\x8c\x92\xd3\x30\xbe\ +\x23\x63\xe5\xfa\x02\x80\xe7\x81\x63\xa7\x60\x70\xec\x24\x30\x07\ +\x8e\x09\x46\x57\x96\xff\x9b\x2b\x35\x7f\xf6\xb9\x5f\xd9\xe4\x49\ +\xbe\x1b\x76\xc1\x58\xb1\x15\x06\xc7\x1d\xbf\x41\x02\xdc\x89\x53\ +\x82\xa5\x95\xe5\xbf\x72\x9b\x96\x7f\x4f\x5f\xe0\xee\x3e\xb1\x71\ +\x43\x41\xf9\x7a\xe4\xeb\xcc\x97\xc2\xb7\x93\x5a\xfb\xa8\x13\xec\ +\xaf\x2c\xff\xe5\x5b\xca\xcf\xd9\x68\x8c\x5d\x54\xbe\x6e\xab\xd1\ +\x7a\xcc\xf3\x79\xef\x19\x49\xf1\xdf\x62\x7f\x83\x4a\xf1\x9f\xb2\ +\x4c\x8f\x9f\x7b\xfb\x86\xd7\x3f\x07\x8f\x8f\xd0\xcf\x86\xbd\x13\ +\x59\x97\x6d\x1e\x3f\x03\xe3\xcb\x63\x30\x66\xad\x86\x79\xa1\x0c\ +\xc6\x43\x43\x13\x7e\x87\xb9\x82\x0b\x7e\xf9\x17\x1f\x82\xf1\x68\ +\x8c\x31\xfa\xc4\x48\xcd\xb1\xe7\xf4\xf2\xcf\x0a\x5e\x2b\xbf\xd6\ +\x70\xfe\xf2\xec\xc8\xb1\x43\xce\xbc\xfe\xf4\x73\x18\x87\x8e\xc3\ +\x70\xcf\xf3\xb8\x08\xe0\x79\xc9\x0f\xfa\xe5\xcf\xbe\xa2\xcc\x8f\ +\x76\xc3\x98\xb4\x14\x26\xd7\xfb\x1f\xfc\x4e\x9f\xad\x96\x7e\x02\ +\xf3\xec\x79\x18\x2f\xbe\x0e\x93\xfd\x5e\xb7\x0b\xf0\xcb\x51\x30\ +\x8f\x9e\x84\xb1\xff\x28\x8c\x2b\xda\x84\xdb\x9b\x5e\xa4\xdf\xe9\ +\xf7\x73\xc2\xef\x74\x47\x2f\xe0\x74\x29\x8c\xf5\x3b\x23\xcb\x56\ +\x88\x56\x68\x28\xf9\xbf\x13\x19\x3f\x4d\xfa\x01\xab\xb6\x85\xc7\ +\x35\xc7\x07\xcb\x70\xff\xfa\xeb\xca\xf0\x78\x76\xc0\x6f\xc6\x79\ +\xed\xb4\xc5\x7d\x99\xf7\xb9\x5f\xd4\x88\xda\x83\x3b\x4d\xd0\xcf\ +\x38\x1e\x7d\xf0\xff\xa7\xbd\xf7\xfe\x39\x5e\x59\xf6\x07\xd7\x10\ +\xf7\xb7\xa5\x2e\xc1\x35\x25\x5a\x0f\xe0\x1a\xda\xf9\x2f\x5a\x7f\ +\x78\x64\x18\xcc\xe8\xe7\x77\xf6\xd2\x6d\xd5\xe9\x18\x5b\x56\xe3\ +\x17\xf5\xf3\x58\xfa\x45\x04\xb8\x6f\x69\xdd\xe7\x17\x09\xce\x99\ +\xea\x87\x5b\xf7\xd4\xfa\xc3\x9e\x6a\xe7\xe4\x1f\xeb\x14\xf5\xcd\ +\xc8\xf3\x56\xb3\x4b\x80\x97\x1f\xfc\xbd\x1c\xf7\xb0\xfe\x3f\xf4\ +\x12\xe0\xe7\x85\x23\xd2\xc7\x5d\xad\x33\x79\x45\x29\x88\x8e\x4a\ +\xfb\x1c\xaa\x8b\x27\xed\x89\x87\x05\x9f\x2a\xfa\x41\x42\x18\x2f\ +\x78\x5c\x75\xc4\x15\x15\xf2\x76\x27\x6d\x77\x68\x24\xf5\x5a\xa9\ +\x54\xda\x40\x82\x38\x11\x87\xfb\x09\xdf\x1c\x2b\x93\x82\xa8\xff\ +\x3f\xce\xff\x91\x2a\x1a\x3b\x25\x69\xe1\x1f\x75\xde\x79\x74\x18\ +\x0e\x8b\x6e\xb6\xab\xdb\x44\xec\x13\x3d\x26\x96\x5d\xd3\x2f\x76\ +\xa5\x85\x7f\x00\x3f\x75\x64\x0e\x99\xad\xf7\x7b\x07\x3c\x53\xd5\ +\x7c\x32\x69\xfe\xab\xd3\xc2\x3f\x84\x07\x29\x4f\x74\xb6\x32\xea\ +\x5b\xd1\x7a\x7e\xf3\x51\x2e\x9f\x44\x22\x08\x60\x5a\x5a\xf8\xe7\ +\xe3\xfb\x94\x27\xba\xd7\x99\x58\xb6\x86\x8e\xe3\x93\x1c\x43\x21\ +\x3c\x93\x16\xfe\x2d\x71\xbd\x23\x73\xf1\xc6\xc8\xf1\x73\x42\xce\ +\x23\xdf\xee\x96\xd4\x39\xca\x50\xad\x91\x9b\x16\xfe\xda\xf7\xfb\ +\x35\xe5\x7e\x4b\x74\xfc\xd9\x6b\x60\x1e\x2c\xd1\xe7\xf0\xbc\xc2\ +\xa4\xed\x77\xf3\xd2\xc3\xdd\x4e\xf9\xf8\x61\xad\xb6\xd8\x9c\xa2\ +\x75\x73\x9d\x6a\x81\x6f\xa4\x95\xbf\x93\x42\xb8\x5f\xe4\x4f\x50\ +\xd4\x4f\x12\xe7\xcd\x73\x5f\xff\x84\x74\x83\xaa\x4a\x79\xa8\x61\ +\xc5\x70\x04\xd0\x49\x30\x4e\x78\xcd\xb7\xd6\xc3\x20\x76\x28\xad\ +\x4f\x6d\x50\x3c\x2f\x51\x6f\xd7\x31\x1c\x3f\x56\xdd\x70\x79\x75\ +\xd3\xbe\x14\x92\x75\xb2\x05\xf3\xe2\x06\x3a\x57\x19\x56\x5e\xa6\ +\xd4\x60\x3b\x6f\xca\xbc\xd4\x23\x2f\x09\xe7\x0d\x22\xf2\x4c\xdd\ +\x6e\x49\x96\xce\x29\x2c\x5b\xa9\x32\xe6\x59\x4a\x59\xca\x42\xa6\ +\x52\xc5\xcc\x33\xc2\x79\x91\x3b\x97\x54\x18\x95\xfb\x4a\x19\x1e\ +\x79\xa6\xdd\x8e\x93\x67\xd9\x72\xb2\xed\xbc\xa9\xcd\xcb\xea\x07\ +\x14\x35\x70\xe7\xa5\xf6\x7b\x55\x90\xc7\xec\x1f\xa7\x1f\x9d\x7e\ +\x45\x49\xb6\xce\x75\xbf\x33\x4e\x2b\x57\x90\xa7\x5c\x71\x5a\x39\ +\x89\xbc\xac\x47\xd2\xe7\xd2\xdb\x15\xfd\x6d\x44\x3e\xee\x54\xd4\ +\x5d\xab\x3a\xd1\xe7\xa8\x7d\xbc\x27\x3d\xd6\x8d\xa3\x4a\x9f\x2d\ +\x0a\x52\xbe\xee\x05\x30\x26\x91\x35\x4c\x74\x98\xe3\xc2\xe3\xa9\ +\x94\xc8\xb6\xf5\x8a\x8a\x40\xbf\xfb\xbc\x75\x7a\xbf\x1b\x39\xef\ +\xe2\x5e\xb7\x39\x25\xf2\x03\x18\x1c\x4f\xfe\xc3\x43\xb1\xdd\xad\ +\x2f\x88\xae\xc0\x6f\x91\x1a\xbd\x3d\x80\x59\xf1\xe4\x37\xe9\x87\ +\x62\x47\xf6\xf9\x32\x18\xd7\x74\xb2\xc6\x88\x99\x12\xf9\x41\x2c\ +\xf6\xf3\xcd\xe9\x8f\xe1\x37\x70\xec\x76\x16\x52\x23\x7f\x85\x87\ +\xcc\x05\x32\xc6\xde\x26\xb2\xda\x60\xee\xd5\x1d\xb0\xc0\x01\xaf\ +\xad\x67\xd4\x89\x92\x49\x6d\x50\xc7\xf2\x45\x73\xdf\xf3\xb2\xe3\ +\x87\xf0\xba\xe4\x13\x13\x82\x9e\x47\x9d\x55\x33\xd4\xf2\x78\xd7\ +\xfa\xd2\xee\x74\xa5\xe3\x08\x53\xa1\x03\x79\x61\x47\x39\xbd\x94\ +\x7b\xb7\xad\x3f\xa6\x09\xab\x2e\x7e\x1f\x6d\x2f\x8e\x77\x8e\x4f\ +\x3d\x68\x83\xd1\xfd\xbe\x2c\xfa\x19\xed\xb1\x5e\x7e\x2b\xfa\x0a\ +\x46\xcc\x85\xc9\x38\x2b\xda\x96\x69\xf3\xad\xdd\x5e\xdb\xa0\xa9\ +\x7b\x3b\xe5\xae\xed\xac\xef\xd5\xeb\xe6\x21\x3f\x80\x99\xd4\x79\ +\x63\x3d\xeb\x31\x15\xe6\xfb\x9b\x22\xe5\xd3\x77\xfc\xce\x5a\x98\ +\xbb\x0f\xc2\x18\xf0\x16\xcc\x3e\x6f\xc0\xfc\xc7\x66\x98\xe3\x96\ +\xe8\x72\x7f\x5c\x08\x93\xf6\x7e\xfa\x4d\x59\x96\xf5\xe9\x37\xcd\ +\xf0\xf6\x39\x7f\x26\x7d\x30\xd6\xaf\x7c\xda\xad\xe9\xdb\xab\xdb\ +\x25\xb2\xac\x63\xb3\xa6\xdd\xbd\xe8\x3f\x30\x86\xce\x81\xd9\x5f\ +\xf8\xd1\xbf\x9c\xe3\x61\xcf\xb6\xc1\x58\xcd\x0d\x7e\xe5\xbf\x30\ +\x13\x26\xdb\x8f\xf6\x25\x5d\xd7\x35\x5c\x86\xfd\xbf\xf7\xb0\x3e\ +\xb3\xdd\xf5\x42\xdc\x31\xc0\x79\x56\xe2\x57\x7e\xaf\x19\x30\xbf\ +\xb6\x7d\x9b\x0e\xe8\x83\xfe\x9b\x2b\xde\xb1\xfe\xaf\x01\xee\x43\ +\xf4\xdb\x7e\xf7\xb9\xb8\xf2\xa9\x43\xc7\x3c\xd7\x53\x3e\xfb\x8f\ +\x71\x07\xce\xbd\xfb\x06\x00\x3b\x0f\xc0\xc8\x72\xf9\x61\xf8\xcd\ +\x9d\x78\x3f\xfa\x06\xe8\xf3\xa4\x1f\x87\x7e\xf1\x2d\xfb\x61\x44\ +\xc4\xd2\x95\xc7\x1c\xe5\x31\xe7\x29\x9f\xe3\x6c\xab\xb4\xb1\x7a\ +\x3b\x0c\x9e\x27\x79\x9f\x6d\xd3\x2f\xc9\x78\x01\x7e\x63\xf6\x87\ +\x13\x0b\x31\x66\xa1\x96\x79\x55\x3b\x7d\xcd\x78\x81\x77\x3f\xac\ +\x70\xfc\xb5\x57\x1e\x71\x5f\xf4\xed\x04\xc7\xc0\xa4\xcf\x9e\x7e\ +\x38\xc7\xcf\xcf\xb6\xe8\xdf\xe4\x7b\x0f\x7f\x37\x1c\x87\x41\x3f\ +\x11\x7d\x5c\xb7\xba\xe2\x32\xc8\x83\x63\xc6\xdd\x87\x2e\xec\x57\ +\x8f\x21\x4b\xf2\xbe\x71\xbe\x51\x55\x80\xef\xf2\x73\x6b\xed\x69\ +\x8e\x1c\xf9\xfd\x55\x1a\x65\x5f\xb0\x62\x65\x23\xf7\x9d\xa6\x5e\ +\xf3\x20\x85\xe0\x5c\xa3\x5f\xb6\x91\xc7\xde\x77\xad\xac\x45\x3d\ +\x24\x7f\x45\x45\xee\x9b\x33\x9c\x7d\xde\x13\xde\x71\xd7\xc3\x14\ +\xe3\x17\xf3\x71\x9b\xf2\xf2\x6f\xc4\x4b\xda\x8f\x16\x6f\x6f\xf7\ +\x8a\xa9\x6b\x9a\x94\x4c\x77\xb2\xfd\x2f\x32\xe7\xcf\xdd\x3f\x00\ +\x1f\xdf\x50\x80\x2f\x7d\xf7\x79\x2b\xdc\x53\x69\xf9\x8c\x5f\x95\ +\xb6\xb8\x06\x38\x3a\x66\x60\xb4\x4f\x5b\x64\x3e\x6e\x49\xc1\xfb\ +\xf7\x96\xbd\xec\x9c\xdb\xff\x3b\x7e\x89\x2f\x5b\xe2\x69\xcb\x7e\ +\x51\x79\xf9\x41\xb6\x37\x77\x9d\xb6\x09\x9e\xf7\x1f\x8f\x30\xa7\ +\xd2\xb2\x99\x82\xb8\xae\x76\x3b\xac\x91\x3e\x30\xef\xe8\x85\xc3\ +\xb2\xbf\xc5\x8d\xcb\x10\x7c\x91\x92\xbe\x77\xa7\x10\x7e\x62\xf9\ +\xad\xb4\x0f\xcb\xab\xff\x77\x48\x99\x81\x96\xfe\x5c\x95\x89\xff\ +\x13\x0a\xe2\x66\xe5\x9c\xc1\x35\xae\x49\xa6\x29\xcb\x5c\x50\x9c\ +\x0d\x14\x66\x0a\x32\x34\x94\x1b\x2a\x5b\x0e\x72\x99\xc5\x4a\x65\ +\x14\x09\x0a\x95\xa7\xcd\x84\xba\x2c\x9f\x67\x0a\xb2\x8a\x74\xbd\ +\xc8\xf6\x9c\xf6\x29\x8b\x32\x25\xd1\x4e\x41\xb3\x44\xae\x72\xd9\ +\x29\xfc\x8e\x5a\x7e\x13\xbd\xc6\x4d\x94\xdf\x7f\xb0\xce\xfe\x41\ +\xdc\xe8\xab\x6e\x10\x4f\x47\x7d\x3b\xb3\x69\x21\x36\x8b\xbe\x76\ +\x48\x39\x7b\x53\xc5\xf5\x57\xbb\xeb\xcb\x5e\x7b\x80\xf3\x63\xc8\ +\x6c\xec\x55\xb4\x5f\xc6\xaf\xbf\xc7\x55\x7f\x8f\xac\x6f\xfb\xf2\ +\x0a\xf1\x49\xbd\xae\xd8\x67\xed\x03\xb1\xeb\xd0\xf6\xd2\xcd\x3e\ +\x13\x97\xba\xea\x6f\x54\x5a\x8f\x8c\xc6\x1a\x2b\xf6\x96\xbe\x53\ +\xbd\xd7\x2f\xf7\xbd\x76\xba\xc1\xff\x80\xb8\x62\x31\xa9\xf3\x3b\ +\xbf\xa9\x73\x50\x0f\xa1\x3e\xc4\x58\xca\x7b\xed\x58\xb3\xa8\x78\ +\xa2\xed\x36\x47\xeb\xda\x89\xb1\xa4\x7e\xca\x73\x33\x7f\x53\x67\ +\xa7\x6e\x43\x1d\x8a\x3a\x56\x54\x9c\xc7\x29\x6b\x3d\xb3\xaf\x19\ +\xe3\xc3\xd8\x13\xc6\xe6\x70\x5d\xe2\x19\x83\xff\xb9\xa1\xce\xcf\ +\x18\x17\xc6\x84\xb1\xbd\x28\xf9\x07\xdc\x9c\x79\x76\x60\x3c\xe5\ +\x73\xd3\x60\x0e\x9c\x05\x93\x31\x41\x3f\x13\xfd\x9e\xbe\x82\xdb\ +\x7b\x02\x2d\x5c\x71\x4d\xf2\xee\x2f\xd9\x73\x3f\x99\x7d\x7f\xbb\ +\xa5\xe3\xf0\xcc\x1b\xc4\x24\xeb\x9b\xe8\x6f\xe3\xfc\x0f\xd0\x81\ +\x5b\x07\xda\x7b\xd1\xa6\xec\xf1\x9f\xc0\xcc\xd6\x98\x2c\x7a\xff\ +\x5a\x39\x7b\x7d\x6c\xb7\xb7\xd3\x55\x7f\x52\xbc\xe1\x77\x65\x3b\ +\xac\x60\x5c\xd6\xa2\x8d\x31\xf6\x32\xee\xb9\x71\x92\x9c\x79\xc6\ +\x76\x1c\x8f\x23\x32\x67\xa2\xcf\xad\x67\x7d\xff\xe7\x2c\x88\x26\ +\xf2\x9e\x3d\x45\xde\x9f\x94\xb6\x0f\xfc\xd6\x5a\xd7\x62\xa4\xb2\ +\xc1\x4a\x95\x36\x50\xaa\xc4\x46\xb1\xac\x36\x85\x19\x31\xd6\x22\ +\xde\xa3\x1d\x38\xdb\x86\x94\x35\xa5\xee\x7f\x01\x06\x4f\x80\xa1\ +\ +\x00\x00\x0d\x85\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ +\x6e\x6f\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\ +\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\ +\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\ +\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x63\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\ +\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\ +\x67\x2f\x6e\x73\x23\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\ +\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\ +\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\ +\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\x3d\x22\ +\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\ +\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\x20\x20\x78\ +\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ +\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\ +\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\ +\x6f\x64\x69\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x2e\x73\x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\ +\x2e\x6e\x65\x74\x2f\x44\x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\ +\x69\x2d\x30\x2e\x64\x74\x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\ +\x73\x3a\x69\x6e\x6b\x73\x63\x61\x70\x65\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\ +\x6f\x72\x67\x2f\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x2f\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x22\x0a\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x20\x28\x34\x30\x33\x35\x61\x34\x66\x62\x34\x39\x2c\x20\x32\ +\x30\x32\x30\x2d\x30\x35\x2d\x30\x31\x29\x22\x0a\x20\x20\x20\x73\ +\x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\ +\x22\x63\x6f\x64\x65\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x69\x64\ +\x3d\x22\x73\x76\x67\x39\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\ +\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x0a\x20\x20\x20\x76\x69\x65\x77\ +\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x34\x20\x32\x34\x22\x0a\ +\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x34\x70\x78\x22\ +\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x34\x70\x78\x22\ +\x3e\x0a\x20\x20\x3c\x6d\x65\x74\x61\x64\x61\x74\x61\x0a\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\x6d\x65\x74\x61\x64\x61\x74\x61\x31\ +\x35\x22\x3e\x0a\x20\x20\x20\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\ +\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x63\x63\x3a\x57\x6f\x72\x6b\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ +\x3c\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x69\x6d\x61\x67\x65\ +\x2f\x73\x76\x67\x2b\x78\x6d\x6c\x3c\x2f\x64\x63\x3a\x66\x6f\x72\ +\x6d\x61\x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\ +\x3a\x74\x79\x70\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ +\x20\x72\x64\x66\x3a\x72\x65\x73\x6f\x75\x72\x63\x65\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\ +\x63\x2f\x64\x63\x6d\x69\x74\x79\x70\x65\x2f\x53\x74\x69\x6c\x6c\ +\x49\x6d\x61\x67\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\ +\x3c\x2f\x63\x63\x3a\x57\x6f\x72\x6b\x3e\x0a\x20\x20\x20\x20\x3c\ +\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\x3c\x2f\x6d\x65\ +\x74\x61\x64\x61\x74\x61\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x31\x33\x22\ +\x20\x2f\x3e\x0a\x20\x20\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\ +\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0a\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\ +\x6c\x61\x79\x65\x72\x3d\x22\x73\x76\x67\x39\x22\x0a\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\ +\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\x65\x64\x3d\x22\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\ +\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x2d\x38\x22\x0a\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\ +\x2d\x78\x3d\x22\x2d\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x63\x79\x3d\x22\x31\x32\x22\x0a\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\ +\x31\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\x32\x32\x2e\x34\x31\x36\x36\x36\ +\x37\x22\x0a\x20\x20\x20\x20\x20\x73\x68\x6f\x77\x67\x72\x69\x64\ +\x3d\x22\x66\x61\x6c\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x31\x31\x22\x0a\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\ +\x64\x6f\x77\x2d\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x34\x38\x22\ +\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\ +\x69\x6e\x64\x6f\x77\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\ +\x30\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ +\x3a\x70\x61\x67\x65\x73\x68\x61\x64\x6f\x77\x3d\x22\x32\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\ +\x67\x65\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x22\x0a\x20\x20\ +\x20\x20\x20\x67\x75\x69\x64\x65\x74\x6f\x6c\x65\x72\x61\x6e\x63\ +\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x72\x69\x64\ +\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\ +\x20\x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x74\x6f\x6c\x65\x72\x61\ +\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\ +\x72\x64\x65\x72\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x63\x6f\x6c\x6f\x72\ +\x3d\x22\x23\x36\x36\x36\x36\x36\x36\x22\x0a\x20\x20\x20\x20\x20\ +\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x66\x66\x66\x66\ +\x66\x66\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x21\x2d\x2d\x20\x55\x70\ +\x6c\x6f\x61\x64\x65\x64\x20\x74\x6f\x20\x53\x56\x47\x52\x65\x70\ +\x6f\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x76\ +\x67\x72\x65\x70\x6f\x2e\x63\x6f\x6d\x20\x2d\x2d\x3e\x0a\x20\x20\ +\x3c\x74\x69\x74\x6c\x65\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\x74\x69\x74\x6c\x65\x32\x22\x3e\x69\x63\x5f\x66\x6c\x75\x65\x6e\ +\x74\x5f\x63\x6f\x64\x65\x5f\x32\x34\x5f\x72\x65\x67\x75\x6c\x61\ +\x72\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x3c\x64\x65\x73\ +\x63\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x73\x63\x34\ +\x22\x3e\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x53\ +\x6b\x65\x74\x63\x68\x2e\x3c\x2f\x64\x65\x73\x63\x3e\x0a\x20\x20\ +\x3c\x67\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\ +\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\ +\x20\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\ +\x6e\x6f\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x3d\ +\x22\x6e\x6f\x6e\x65\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x72\x6f\ +\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x22\x0a\x20\x20\x20\ +\x20\x20\x73\x74\x72\x6f\x6b\x65\x3d\x22\x6e\x6f\x6e\x65\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\xf0\x9f\x94\x8d\x2d\x50\x72\ +\x6f\x64\x75\x63\x74\x2d\x49\x63\x6f\x6e\x73\x22\x3e\x0a\x20\x20\ +\x20\x20\x3c\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\ +\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\ +\x65\x3d\x22\x6e\x6f\x6e\x7a\x65\x72\x6f\x22\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x31\x32\x31\x32\x31\ +\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x69\x63\x5f\ +\x66\x6c\x75\x65\x6e\x74\x5f\x63\x6f\x64\x65\x5f\x32\x34\x5f\x72\ +\x65\x67\x75\x6c\x61\x72\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\ +\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\ +\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\ +\x66\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\xf0\x9f\x8e\xa8\x2d\x43\x6f\x6c\x6f\x72\x22\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x38\x2e\x30\x36\x35\x36\x31\ +\x38\x30\x31\x2c\x31\x38\x2e\x39\x34\x33\x32\x30\x38\x31\x20\x4c\ +\x31\x34\x2e\x35\x36\x35\x36\x31\x38\x2c\x34\x2e\x34\x34\x33\x32\ +\x30\x38\x30\x37\x20\x43\x31\x34\x2e\x37\x33\x35\x30\x35\x34\x35\ +\x2c\x34\x2e\x30\x36\x35\x32\x33\x34\x33\x33\x20\x31\x35\x2e\x31\ +\x37\x38\x38\x31\x38\x32\x2c\x33\x2e\x38\x39\x36\x31\x38\x31\x35\ +\x20\x31\x35\x2e\x35\x35\x36\x37\x39\x31\x39\x2c\x34\x2e\x30\x36\ +\x35\x36\x31\x38\x30\x31\x20\x43\x31\x35\x2e\x39\x30\x33\x32\x36\ +\x37\x39\x2c\x34\x2e\x32\x32\x30\x39\x33\x34\x38\x20\x31\x36\x2e\ +\x30\x37\x34\x31\x39\x32\x32\x2c\x34\x2e\x36\x30\x36\x37\x36\x32\ +\x36\x33\x20\x31\x35\x2e\x39\x36\x39\x37\x36\x34\x32\x2c\x34\x2e\ +\x39\x36\x31\x31\x32\x34\x37\x20\x4c\x31\x35\x2e\x39\x33\x34\x33\ +\x38\x32\x2c\x35\x2e\x30\x35\x36\x37\x39\x31\x39\x33\x20\x4c\x39\ +\x2e\x34\x33\x34\x33\x38\x31\x39\x39\x2c\x31\x39\x2e\x35\x35\x36\ +\x37\x39\x31\x39\x20\x43\x39\x2e\x32\x36\x34\x39\x34\x35\x34\x39\ +\x2c\x31\x39\x2e\x39\x33\x34\x37\x36\x35\x37\x20\x38\x2e\x38\x32\ +\x31\x31\x38\x31\x38\x31\x2c\x32\x30\x2e\x31\x30\x33\x38\x31\x38\ +\x35\x20\x38\x2e\x34\x34\x33\x32\x30\x38\x30\x37\x2c\x31\x39\x2e\ +\x39\x33\x34\x33\x38\x32\x20\x43\x38\x2e\x30\x39\x36\x37\x33\x32\ +\x31\x35\x2c\x31\x39\x2e\x37\x37\x39\x30\x36\x35\x32\x20\x37\x2e\ +\x39\x32\x35\x38\x30\x37\x38\x31\x2c\x31\x39\x2e\x33\x39\x33\x32\ +\x33\x37\x34\x20\x38\x2e\x30\x33\x30\x32\x33\x35\x37\x36\x2c\x31\ +\x39\x2e\x30\x33\x38\x38\x37\x35\x33\x20\x4c\x38\x2e\x30\x36\x35\ +\x36\x31\x38\x30\x31\x2c\x31\x38\x2e\x39\x34\x33\x32\x30\x38\x31\ +\x20\x4c\x31\x34\x2e\x35\x36\x35\x36\x31\x38\x2c\x34\x2e\x34\x34\ +\x33\x32\x30\x38\x30\x37\x20\x4c\x38\x2e\x30\x36\x35\x36\x31\x38\ +\x30\x31\x2c\x31\x38\x2e\x39\x34\x33\x32\x30\x38\x31\x20\x5a\x20\ +\x4d\x32\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x2c\x31\x31\x2e\x34\ +\x36\x39\x36\x36\x39\x39\x20\x4c\x36\x2e\x34\x36\x39\x36\x36\x39\ +\x39\x31\x2c\x37\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x20\x43\x36\ +\x2e\x37\x36\x32\x35\x36\x33\x31\x33\x2c\x36\x2e\x39\x32\x36\x37\ +\x37\x36\x37\x20\x37\x2e\x32\x33\x37\x34\x33\x36\x38\x37\x2c\x36\ +\x2e\x39\x32\x36\x37\x37\x36\x37\x20\x37\x2e\x35\x33\x30\x33\x33\ +\x30\x30\x39\x2c\x37\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x20\x43\ +\x37\x2e\x37\x39\x36\x35\x39\x36\x36\x35\x2c\x37\x2e\x34\x38\x35\ +\x39\x33\x36\x34\x38\x20\x37\x2e\x38\x32\x30\x38\x30\x32\x37\x2c\ +\x37\x2e\x39\x30\x32\x36\x30\x30\x31\x36\x20\x37\x2e\x36\x30\x32\ +\x39\x34\x38\x32\x34\x2c\x38\x2e\x31\x39\x36\x32\x31\x31\x36\x35\ +\x20\x4c\x37\x2e\x35\x33\x30\x33\x33\x30\x30\x39\x2c\x38\x2e\x32\ +\x38\x30\x33\x33\x30\x30\x39\x20\x4c\x33\x2e\x38\x31\x30\x36\x36\ +\x30\x31\x37\x2c\x31\x32\x20\x4c\x37\x2e\x35\x33\x30\x33\x33\x30\ +\x30\x39\x2c\x31\x35\x2e\x37\x31\x39\x36\x36\x39\x39\x20\x43\x37\ +\x2e\x38\x32\x33\x32\x32\x33\x33\x2c\x31\x36\x2e\x30\x31\x32\x35\ +\x36\x33\x31\x20\x37\x2e\x38\x32\x33\x32\x32\x33\x33\x2c\x31\x36\ +\x2e\x34\x38\x37\x34\x33\x36\x39\x20\x37\x2e\x35\x33\x30\x33\x33\ +\x30\x30\x39\x2c\x31\x36\x2e\x37\x38\x30\x33\x33\x30\x31\x20\x43\ +\x37\x2e\x32\x36\x34\x30\x36\x33\x35\x32\x2c\x31\x37\x2e\x30\x34\ +\x36\x35\x39\x36\x36\x20\x36\x2e\x38\x34\x37\x33\x39\x39\x38\x34\ +\x2c\x31\x37\x2e\x30\x37\x30\x38\x30\x32\x37\x20\x36\x2e\x35\x35\ +\x33\x37\x38\x38\x33\x35\x2c\x31\x36\x2e\x38\x35\x32\x39\x34\x38\ +\x32\x20\x4c\x36\x2e\x34\x36\x39\x36\x36\x39\x39\x31\x2c\x31\x36\ +\x2e\x37\x38\x30\x33\x33\x30\x31\x20\x4c\x32\x2e\x32\x31\x39\x36\ +\x36\x39\x39\x31\x2c\x31\x32\x2e\x35\x33\x30\x33\x33\x30\x31\x20\ +\x43\x31\x2e\x39\x35\x33\x34\x30\x33\x33\x35\x2c\x31\x32\x2e\x32\ +\x36\x34\x30\x36\x33\x35\x20\x31\x2e\x39\x32\x39\x31\x39\x37\x33\ +\x2c\x31\x31\x2e\x38\x34\x37\x33\x39\x39\x38\x20\x32\x2e\x31\x34\ +\x37\x30\x35\x31\x37\x36\x2c\x31\x31\x2e\x35\x35\x33\x37\x38\x38\ +\x33\x20\x4c\x32\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x2c\x31\x31\ +\x2e\x34\x36\x39\x36\x36\x39\x39\x20\x4c\x36\x2e\x34\x36\x39\x36\ +\x36\x39\x39\x31\x2c\x37\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x20\ +\x4c\x32\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x2c\x31\x31\x2e\x34\ +\x36\x39\x36\x36\x39\x39\x20\x5a\x20\x4d\x31\x36\x2e\x34\x36\x39\ +\x36\x36\x39\x39\x2c\x37\x2e\x32\x31\x39\x36\x36\x39\x39\x31\x20\ +\x43\x31\x36\x2e\x37\x33\x35\x39\x33\x36\x35\x2c\x36\x2e\x39\x35\ +\x33\x34\x30\x33\x33\x35\x20\x31\x37\x2e\x31\x35\x32\x36\x30\x30\ +\x32\x2c\x36\x2e\x39\x32\x39\x31\x39\x37\x33\x20\x31\x37\x2e\x34\ +\x34\x36\x32\x31\x31\x37\x2c\x37\x2e\x31\x34\x37\x30\x35\x31\x37\ +\x36\x20\x4c\x31\x37\x2e\x35\x33\x30\x33\x33\x30\x31\x2c\x37\x2e\ +\x32\x31\x39\x36\x36\x39\x39\x31\x20\x4c\x32\x31\x2e\x37\x38\x30\ +\x33\x33\x30\x31\x2c\x31\x31\x2e\x34\x36\x39\x36\x36\x39\x39\x20\ +\x43\x32\x32\x2e\x30\x34\x36\x35\x39\x36\x36\x2c\x31\x31\x2e\x37\ +\x33\x35\x39\x33\x36\x35\x20\x32\x32\x2e\x30\x37\x30\x38\x30\x32\ +\x37\x2c\x31\x32\x2e\x31\x35\x32\x36\x30\x30\x32\x20\x32\x31\x2e\ +\x38\x35\x32\x39\x34\x38\x32\x2c\x31\x32\x2e\x34\x34\x36\x32\x31\ +\x31\x37\x20\x4c\x32\x31\x2e\x37\x38\x30\x33\x33\x30\x31\x2c\x31\ +\x32\x2e\x35\x33\x30\x33\x33\x30\x31\x20\x4c\x31\x37\x2e\x35\x33\ +\x30\x33\x33\x30\x31\x2c\x31\x36\x2e\x37\x38\x30\x33\x33\x30\x31\ +\x20\x43\x31\x37\x2e\x32\x33\x37\x34\x33\x36\x39\x2c\x31\x37\x2e\ +\x30\x37\x33\x32\x32\x33\x33\x20\x31\x36\x2e\x37\x36\x32\x35\x36\ +\x33\x31\x2c\x31\x37\x2e\x30\x37\x33\x32\x32\x33\x33\x20\x31\x36\ +\x2e\x34\x36\x39\x36\x36\x39\x39\x2c\x31\x36\x2e\x37\x38\x30\x33\ +\x33\x30\x31\x20\x43\x31\x36\x2e\x32\x30\x33\x34\x30\x33\x34\x2c\ +\x31\x36\x2e\x35\x31\x34\x30\x36\x33\x35\x20\x31\x36\x2e\x31\x37\ +\x39\x31\x39\x37\x33\x2c\x31\x36\x2e\x30\x39\x37\x33\x39\x39\x38\ +\x20\x31\x36\x2e\x33\x39\x37\x30\x35\x31\x38\x2c\x31\x35\x2e\x38\ +\x30\x33\x37\x38\x38\x33\x20\x4c\x31\x36\x2e\x34\x36\x39\x36\x36\ +\x39\x39\x2c\x31\x35\x2e\x37\x31\x39\x36\x36\x39\x39\x20\x4c\x32\ +\x30\x2e\x31\x38\x39\x33\x33\x39\x38\x2c\x31\x32\x20\x4c\x31\x36\ +\x2e\x34\x36\x39\x36\x36\x39\x39\x2c\x38\x2e\x32\x38\x30\x33\x33\ +\x30\x30\x39\x20\x43\x31\x36\x2e\x31\x37\x36\x37\x37\x36\x37\x2c\ +\x37\x2e\x39\x38\x37\x34\x33\x36\x38\x37\x20\x31\x36\x2e\x31\x37\ +\x36\x37\x37\x36\x37\x2c\x37\x2e\x35\x31\x32\x35\x36\x33\x31\x33\ +\x20\x31\x36\x2e\x34\x36\x39\x36\x36\x39\x39\x2c\x37\x2e\x32\x31\ +\x39\x36\x36\x39\x39\x31\x20\x5a\x22\x20\x2f\x3e\x0a\x20\x20\x20\ +\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\ +\x76\x67\x3e\x0a\ +\x00\x00\x0e\xeb\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ +\x6e\x6f\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\ +\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\ +\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\ +\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x63\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\ +\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\ +\x67\x2f\x6e\x73\x23\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\ +\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\ +\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\ +\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\x3d\x22\ +\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\ +\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\x20\x20\x78\ +\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ +\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\ +\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\ +\x6f\x64\x69\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x2e\x73\x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\ +\x2e\x6e\x65\x74\x2f\x44\x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\ +\x69\x2d\x30\x2e\x64\x74\x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\ +\x73\x3a\x69\x6e\x6b\x73\x63\x61\x70\x65\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\ +\x6f\x72\x67\x2f\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x2f\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x22\x0a\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x20\x28\x34\x30\x33\x35\x61\x34\x66\x62\x34\x39\x2c\x20\x32\ +\x30\x32\x30\x2d\x30\x35\x2d\x30\x31\x29\x22\x0a\x20\x20\x20\x73\ +\x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\ +\x22\x73\x68\x65\x65\x74\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x69\ +\x64\x3d\x22\x73\x76\x67\x38\x36\x32\x22\x0a\x20\x20\x20\x76\x65\ +\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x0a\x20\x20\x20\x76\ +\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x34\x20\x32\ +\x34\x22\x0a\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x34\ +\x70\x78\x22\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x34\ +\x70\x78\x22\x3e\x0a\x20\x20\x3c\x6d\x65\x74\x61\x64\x61\x74\x61\ +\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x6d\x65\x74\x61\x64\x61\ +\x74\x61\x38\x36\x38\x22\x3e\x0a\x20\x20\x20\x20\x3c\x72\x64\x66\ +\x3a\x52\x44\x46\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x63\x63\x3a\ +\x57\x6f\x72\x6b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\ +\x66\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\x3e\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x3c\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x69\ +\x6d\x61\x67\x65\x2f\x73\x76\x67\x2b\x78\x6d\x6c\x3c\x2f\x64\x63\ +\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x3c\x64\x63\x3a\x74\x79\x70\x65\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x72\x64\x66\x3a\x72\x65\x73\x6f\x75\x72\x63\ +\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\ +\x72\x67\x2f\x64\x63\x2f\x64\x63\x6d\x69\x74\x79\x70\x65\x2f\x53\ +\x74\x69\x6c\x6c\x49\x6d\x61\x67\x65\x22\x20\x2f\x3e\x0a\x20\x20\ +\x20\x20\x20\x20\x3c\x2f\x63\x63\x3a\x57\x6f\x72\x6b\x3e\x0a\x20\ +\x20\x20\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\ +\x3c\x2f\x6d\x65\x74\x61\x64\x61\x74\x61\x3e\x0a\x20\x20\x3c\x64\ +\x65\x66\x73\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\ +\x73\x38\x36\x36\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x3a\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0a\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x75\x72\ +\x72\x65\x6e\x74\x2d\x6c\x61\x79\x65\x72\x3d\x22\x73\x76\x67\x38\ +\x36\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\ +\x65\x64\x3d\x22\x31\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x2d\ +\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ +\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x78\x3d\x22\x2d\x38\x22\x0a\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x79\x3d\ +\x22\x31\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x3a\x63\x78\x3d\x22\x31\x32\x22\x0a\x20\x20\x20\x20\x20\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\x32\ +\x32\x2e\x34\x31\x36\x36\x36\x37\x22\x0a\x20\x20\x20\x20\x20\x73\ +\x68\x6f\x77\x67\x72\x69\x64\x3d\x22\x66\x61\x6c\x73\x65\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\ +\x65\x77\x38\x36\x34\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x68\x65\x69\x67\ +\x68\x74\x3d\x22\x37\x34\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x77\x69\ +\x64\x74\x68\x3d\x22\x31\x32\x38\x30\x22\x0a\x20\x20\x20\x20\x20\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x73\x68\x61\ +\x64\x6f\x77\x3d\x22\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x6f\x70\x61\x63\x69\x74\ +\x79\x3d\x22\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x75\x69\x64\x65\ +\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\ +\x20\x20\x20\x20\x67\x72\x69\x64\x74\x6f\x6c\x65\x72\x61\x6e\x63\ +\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x6f\x62\x6a\x65\ +\x63\x74\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\ +\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x6f\x70\x61\x63\ +\x69\x74\x79\x3d\x22\x31\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\ +\x64\x65\x72\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x36\x36\x36\x36\x36\ +\x36\x22\x0a\x20\x20\x20\x20\x20\x70\x61\x67\x65\x63\x6f\x6c\x6f\ +\x72\x3d\x22\x23\x66\x66\x66\x66\x66\x66\x22\x20\x2f\x3e\x0a\x20\ +\x20\x3c\x21\x2d\x2d\x20\x55\x70\x6c\x6f\x61\x64\x65\x64\x20\x74\ +\x6f\x20\x53\x56\x47\x52\x65\x70\x6f\x20\x68\x74\x74\x70\x73\x3a\ +\x2f\x2f\x77\x77\x77\x2e\x73\x76\x67\x72\x65\x70\x6f\x2e\x63\x6f\ +\x6d\x20\x2d\x2d\x3e\x0a\x20\x20\x3c\x74\x69\x74\x6c\x65\x0a\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\x74\x69\x74\x6c\x65\x38\x35\x35\ +\x22\x3e\x69\x63\x5f\x66\x6c\x75\x65\x6e\x74\x5f\x74\x65\x78\x74\ +\x5f\x62\x75\x6c\x6c\x65\x74\x5f\x6c\x69\x73\x74\x5f\x73\x71\x75\ +\x61\x72\x65\x5f\x32\x34\x5f\x72\x65\x67\x75\x6c\x61\x72\x3c\x2f\ +\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\x3c\x64\x65\x73\x63\x0a\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x73\x63\x38\x35\x37\x22\ +\x3e\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\x74\x68\x20\x53\x6b\ +\x65\x74\x63\x68\x2e\x3c\x2f\x64\x65\x73\x63\x3e\x0a\x20\x20\x3c\ +\x67\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\ +\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\x20\ +\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\x22\x65\x76\x65\x6e\ +\x6f\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x3d\x22\ +\x6e\x6f\x6e\x65\x22\x0a\x20\x20\x20\x20\x20\x73\x74\x72\x6f\x6b\ +\x65\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x22\x0a\x20\x20\x20\x20\ +\x20\x73\x74\x72\x6f\x6b\x65\x3d\x22\x6e\x6f\x6e\x65\x22\x0a\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\xf0\x9f\x94\x8d\x2d\x53\x79\x73\ +\x74\x65\x6d\x2d\x49\x63\x6f\x6e\x73\x22\x3e\x0a\x20\x20\x20\x20\ +\x3c\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\ +\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x6e\x6f\x6e\x7a\x65\x72\x6f\x22\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x31\x32\x31\x32\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x69\x63\x5f\x66\x6c\ +\x75\x65\x6e\x74\x5f\x74\x65\x78\x74\x5f\x62\x75\x6c\x6c\x65\x74\ +\x5f\x6c\x69\x73\x74\x5f\x73\x71\x75\x61\x72\x65\x5f\x32\x34\x5f\ +\x72\x65\x67\x75\x6c\x61\x72\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\ +\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\ +\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\ +\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\ +\x22\xf0\x9f\x8e\xa8\x2d\x43\x6f\x6c\x6f\x72\x22\x0a\x20\x20\x20\ +\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x31\x38\x2e\x37\x35\x2c\ +\x33\x20\x43\x31\x39\x2e\x39\x34\x30\x38\x32\x35\x2c\x33\x20\x32\ +\x30\x2e\x39\x31\x35\x36\x34\x31\x37\x2c\x33\x2e\x39\x32\x35\x31\ +\x36\x32\x32\x32\x20\x32\x30\x2e\x39\x39\x34\x38\x30\x39\x2c\x35\ +\x2e\x30\x39\x35\x39\x35\x31\x32\x37\x20\x4c\x32\x31\x2c\x35\x2e\ +\x32\x35\x20\x4c\x32\x31\x2c\x31\x38\x2e\x37\x35\x20\x43\x32\x31\ +\x2c\x31\x39\x2e\x39\x34\x30\x38\x32\x35\x20\x32\x30\x2e\x30\x37\ +\x34\x38\x30\x31\x2c\x32\x30\x2e\x39\x31\x35\x36\x34\x31\x37\x20\ +\x31\x38\x2e\x39\x30\x34\x30\x34\x34\x31\x2c\x32\x30\x2e\x39\x39\ +\x34\x38\x30\x39\x20\x4c\x31\x38\x2e\x37\x35\x2c\x32\x31\x20\x4c\ +\x35\x2e\x32\x35\x2c\x32\x31\x20\x43\x34\x2e\x30\x35\x39\x31\x33\ +\x36\x36\x37\x2c\x32\x31\x20\x33\x2e\x30\x38\x34\x33\x35\x35\x31\ +\x34\x2c\x32\x30\x2e\x30\x37\x34\x38\x30\x31\x20\x33\x2e\x30\x30\ +\x35\x31\x39\x30\x38\x32\x2c\x31\x38\x2e\x39\x30\x34\x30\x34\x34\ +\x31\x20\x4c\x33\x2c\x31\x38\x2e\x37\x35\x20\x4c\x33\x2c\x35\x2e\ +\x32\x35\x20\x43\x33\x2c\x34\x2e\x30\x35\x39\x31\x33\x36\x36\x37\ +\x20\x33\x2e\x39\x32\x35\x31\x36\x32\x32\x32\x2c\x33\x2e\x30\x38\ +\x34\x33\x35\x35\x31\x34\x20\x35\x2e\x30\x39\x35\x39\x35\x31\x32\ +\x37\x2c\x33\x2e\x30\x30\x35\x31\x39\x30\x38\x32\x20\x4c\x35\x2e\ +\x32\x35\x2c\x33\x20\x4c\x31\x38\x2e\x37\x35\x2c\x33\x20\x5a\x20\ +\x4d\x31\x38\x2e\x37\x35\x2c\x34\x2e\x35\x20\x4c\x35\x2e\x32\x35\ +\x2c\x34\x2e\x35\x20\x43\x34\x2e\x38\x37\x30\x33\x30\x37\x35\x2c\ +\x34\x2e\x35\x20\x34\x2e\x35\x35\x36\x35\x30\x39\x35\x38\x2c\x34\ +\x2e\x37\x38\x32\x31\x35\x36\x38\x38\x20\x34\x2e\x35\x30\x36\x38\ +\x34\x36\x36\x38\x2c\x35\x2e\x31\x34\x38\x32\x33\x30\x31\x39\x20\ +\x4c\x34\x2e\x35\x2c\x35\x2e\x32\x35\x20\x4c\x34\x2e\x35\x2c\x31\ +\x38\x2e\x37\x35\x20\x43\x34\x2e\x35\x2c\x31\x39\x2e\x31\x32\x39\ +\x36\x38\x33\x33\x20\x34\x2e\x37\x38\x32\x31\x35\x36\x38\x38\x2c\ +\x31\x39\x2e\x34\x34\x33\x34\x38\x38\x39\x20\x35\x2e\x31\x34\x38\ +\x32\x33\x30\x31\x39\x2c\x31\x39\x2e\x34\x39\x33\x31\x35\x33\x31\ +\x20\x4c\x35\x2e\x32\x35\x2c\x31\x39\x2e\x35\x20\x4c\x31\x38\x2e\ +\x37\x35\x2c\x31\x39\x2e\x35\x20\x43\x31\x39\x2e\x31\x32\x39\x36\ +\x38\x33\x33\x2c\x31\x39\x2e\x35\x20\x31\x39\x2e\x34\x34\x33\x34\ +\x38\x38\x39\x2c\x31\x39\x2e\x32\x31\x37\x38\x33\x34\x37\x20\x31\ +\x39\x2e\x34\x39\x33\x31\x35\x33\x31\x2c\x31\x38\x2e\x38\x35\x31\ +\x37\x36\x37\x37\x20\x4c\x31\x39\x2e\x35\x2c\x31\x38\x2e\x37\x35\ +\x20\x4c\x31\x39\x2e\x35\x2c\x35\x2e\x32\x35\x20\x43\x31\x39\x2e\ +\x35\x2c\x34\x2e\x38\x37\x30\x33\x30\x37\x35\x20\x31\x39\x2e\x32\ +\x31\x37\x38\x33\x34\x37\x2c\x34\x2e\x35\x35\x36\x35\x30\x39\x35\ +\x38\x20\x31\x38\x2e\x38\x35\x31\x37\x36\x37\x37\x2c\x34\x2e\x35\ +\x30\x36\x38\x34\x36\x36\x38\x20\x4c\x31\x38\x2e\x37\x35\x2c\x34\ +\x2e\x35\x20\x5a\x20\x4d\x37\x2e\x37\x35\x2c\x31\x34\x2e\x37\x35\ +\x20\x43\x38\x2e\x33\x30\x32\x32\x38\x2c\x31\x34\x2e\x37\x35\x20\ +\x38\x2e\x37\x35\x2c\x31\x35\x2e\x31\x39\x37\x37\x20\x38\x2e\x37\ +\x35\x2c\x31\x35\x2e\x37\x35\x20\x43\x38\x2e\x37\x35\x2c\x31\x36\ +\x2e\x33\x30\x32\x33\x20\x38\x2e\x33\x30\x32\x32\x38\x2c\x31\x36\ +\x2e\x37\x35\x20\x37\x2e\x37\x35\x2c\x31\x36\x2e\x37\x35\x20\x43\ +\x37\x2e\x31\x39\x37\x37\x32\x2c\x31\x36\x2e\x37\x35\x20\x36\x2e\ +\x37\x35\x2c\x31\x36\x2e\x33\x30\x32\x33\x20\x36\x2e\x37\x35\x2c\ +\x31\x35\x2e\x37\x35\x20\x43\x36\x2e\x37\x35\x2c\x31\x35\x2e\x31\ +\x39\x37\x37\x20\x37\x2e\x31\x39\x37\x37\x32\x2c\x31\x34\x2e\x37\ +\x35\x20\x37\x2e\x37\x35\x2c\x31\x34\x2e\x37\x35\x20\x5a\x20\x4d\ +\x31\x36\x2e\x37\x34\x39\x39\x2c\x31\x35\x20\x43\x31\x37\x2e\x31\ +\x36\x34\x32\x2c\x31\x35\x20\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\ +\x35\x2e\x33\x33\x35\x38\x20\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\ +\x35\x2e\x37\x35\x20\x43\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\x36\ +\x2e\x31\x32\x39\x36\x38\x33\x33\x20\x31\x37\x2e\x32\x31\x37\x38\ +\x31\x38\x38\x2c\x31\x36\x2e\x34\x34\x33\x34\x38\x38\x39\x20\x31\ +\x36\x2e\x38\x35\x31\x36\x38\x38\x37\x2c\x31\x36\x2e\x34\x39\x33\ +\x31\x35\x33\x31\x20\x4c\x31\x36\x2e\x37\x34\x39\x39\x2c\x31\x36\ +\x2e\x35\x20\x4c\x31\x31\x2e\x32\x35\x30\x31\x2c\x31\x36\x2e\x35\ +\x20\x43\x31\x30\x2e\x38\x33\x35\x38\x2c\x31\x36\x2e\x35\x20\x31\ +\x30\x2e\x35\x30\x30\x31\x2c\x31\x36\x2e\x31\x36\x34\x32\x20\x31\ +\x30\x2e\x35\x30\x30\x31\x2c\x31\x35\x2e\x37\x35\x20\x43\x31\x30\ +\x2e\x35\x30\x30\x31\x2c\x31\x35\x2e\x33\x37\x30\x33\x31\x36\x37\ +\x20\x31\x30\x2e\x37\x38\x32\x31\x38\x31\x33\x2c\x31\x35\x2e\x30\ +\x35\x36\x35\x31\x31\x31\x20\x31\x31\x2e\x31\x34\x38\x33\x31\x31\ +\x33\x2c\x31\x35\x2e\x30\x30\x36\x38\x34\x36\x39\x20\x4c\x31\x31\ +\x2e\x32\x35\x30\x31\x2c\x31\x35\x20\x4c\x31\x36\x2e\x37\x34\x39\ +\x39\x2c\x31\x35\x20\x5a\x20\x4d\x37\x2e\x37\x35\x2c\x31\x31\x20\ +\x43\x38\x2e\x33\x30\x32\x32\x38\x2c\x31\x31\x20\x38\x2e\x37\x35\ +\x2c\x31\x31\x2e\x34\x34\x37\x37\x20\x38\x2e\x37\x35\x2c\x31\x32\ +\x20\x43\x38\x2e\x37\x35\x2c\x31\x32\x2e\x35\x35\x32\x33\x20\x38\ +\x2e\x33\x30\x32\x32\x38\x2c\x31\x33\x20\x37\x2e\x37\x35\x2c\x31\ +\x33\x20\x43\x37\x2e\x31\x39\x37\x37\x32\x2c\x31\x33\x20\x36\x2e\ +\x37\x35\x2c\x31\x32\x2e\x35\x35\x32\x33\x20\x36\x2e\x37\x35\x2c\ +\x31\x32\x20\x43\x36\x2e\x37\x35\x2c\x31\x31\x2e\x34\x34\x37\x37\ +\x20\x37\x2e\x31\x39\x37\x37\x32\x2c\x31\x31\x20\x37\x2e\x37\x35\ +\x2c\x31\x31\x20\x5a\x20\x4d\x31\x36\x2e\x37\x34\x39\x39\x2c\x31\ +\x31\x2e\x32\x35\x20\x43\x31\x37\x2e\x31\x36\x34\x32\x2c\x31\x31\ +\x2e\x32\x35\x20\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\x31\x2e\x35\ +\x38\x35\x38\x20\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\x32\x20\x43\ +\x31\x37\x2e\x34\x39\x39\x39\x2c\x31\x32\x2e\x34\x31\x34\x32\x20\ +\x31\x37\x2e\x31\x36\x34\x32\x2c\x31\x32\x2e\x37\x35\x20\x31\x36\ +\x2e\x37\x34\x39\x39\x2c\x31\x32\x2e\x37\x35\x20\x4c\x31\x31\x2e\ +\x32\x35\x30\x31\x2c\x31\x32\x2e\x37\x35\x20\x43\x31\x30\x2e\x38\ +\x33\x35\x38\x2c\x31\x32\x2e\x37\x35\x20\x31\x30\x2e\x35\x30\x30\ +\x31\x2c\x31\x32\x2e\x34\x31\x34\x32\x20\x31\x30\x2e\x35\x30\x30\ +\x31\x2c\x31\x32\x20\x43\x31\x30\x2e\x35\x30\x30\x31\x2c\x31\x31\ +\x2e\x35\x38\x35\x38\x20\x31\x30\x2e\x38\x33\x35\x38\x2c\x31\x31\ +\x2e\x32\x35\x20\x31\x31\x2e\x32\x35\x30\x31\x2c\x31\x31\x2e\x32\ +\x35\x20\x4c\x31\x36\x2e\x37\x34\x39\x39\x2c\x31\x31\x2e\x32\x35\ +\x20\x5a\x20\x4d\x37\x2e\x37\x35\x2c\x37\x2e\x32\x35\x20\x43\x38\ +\x2e\x33\x30\x32\x32\x38\x2c\x37\x2e\x32\x35\x20\x38\x2e\x37\x35\ +\x2c\x37\x2e\x36\x39\x37\x37\x32\x20\x38\x2e\x37\x35\x2c\x38\x2e\ +\x32\x35\x20\x43\x38\x2e\x37\x35\x2c\x38\x2e\x38\x30\x32\x32\x38\ +\x20\x38\x2e\x33\x30\x32\x32\x38\x2c\x39\x2e\x32\x35\x20\x37\x2e\ +\x37\x35\x2c\x39\x2e\x32\x35\x20\x43\x37\x2e\x31\x39\x37\x37\x32\ +\x2c\x39\x2e\x32\x35\x20\x36\x2e\x37\x35\x2c\x38\x2e\x38\x30\x32\ +\x32\x38\x20\x36\x2e\x37\x35\x2c\x38\x2e\x32\x35\x20\x43\x36\x2e\ +\x37\x35\x2c\x37\x2e\x36\x39\x37\x37\x32\x20\x37\x2e\x31\x39\x37\ +\x37\x32\x2c\x37\x2e\x32\x35\x20\x37\x2e\x37\x35\x2c\x37\x2e\x32\ +\x35\x20\x5a\x20\x4d\x31\x36\x2e\x37\x35\x2c\x37\x2e\x35\x20\x43\ +\x31\x37\x2e\x31\x36\x34\x32\x2c\x37\x2e\x35\x20\x31\x37\x2e\x35\ +\x2c\x37\x2e\x38\x33\x35\x37\x39\x20\x31\x37\x2e\x35\x2c\x38\x2e\ +\x32\x35\x20\x43\x31\x37\x2e\x35\x2c\x38\x2e\x36\x36\x34\x32\x31\ +\x20\x31\x37\x2e\x31\x36\x34\x32\x2c\x39\x20\x31\x36\x2e\x37\x35\ +\x2c\x39\x20\x4c\x31\x31\x2e\x32\x35\x2c\x39\x20\x43\x31\x30\x2e\ +\x38\x33\x35\x38\x2c\x39\x20\x31\x30\x2e\x35\x2c\x38\x2e\x36\x36\ +\x34\x32\x31\x20\x31\x30\x2e\x35\x2c\x38\x2e\x32\x35\x20\x43\x31\ +\x30\x2e\x35\x2c\x37\x2e\x38\x33\x35\x37\x39\x20\x31\x30\x2e\x38\ +\x33\x35\x38\x2c\x37\x2e\x35\x20\x31\x31\x2e\x32\x35\x2c\x37\x2e\ +\x35\x20\x4c\x31\x36\x2e\x37\x35\x2c\x37\x2e\x35\x20\x5a\x22\x20\ +\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x3c\x2f\ +\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x0a\xed\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ +\x6e\x6f\x22\x3f\x3e\x0a\x3c\x73\x76\x67\x0a\x20\x20\x20\x78\x6d\ +\x6c\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\ +\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\ +\x6e\x74\x73\x2f\x31\x2e\x31\x2f\x22\x0a\x20\x20\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x63\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\ +\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\ +\x67\x2f\x6e\x73\x23\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\ +\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\ +\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x30\x32\x2f\x32\ +\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\x61\x78\x2d\x6e\x73\x23\ +\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\x3d\x22\ +\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\ +\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0a\x20\x20\x20\x78\ +\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ +\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\ +\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x6f\x64\x69\x70\ +\x6f\x64\x69\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x2e\x73\x6f\x75\x72\x63\x65\x66\x6f\x72\x67\x65\ +\x2e\x6e\x65\x74\x2f\x44\x54\x44\x2f\x73\x6f\x64\x69\x70\x6f\x64\ +\x69\x2d\x30\x2e\x64\x74\x64\x22\x0a\x20\x20\x20\x78\x6d\x6c\x6e\ +\x73\x3a\x69\x6e\x6b\x73\x63\x61\x70\x65\x3d\x22\x68\x74\x74\x70\ +\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\ +\x6f\x72\x67\x2f\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x2f\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x22\x0a\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x20\x28\x34\x30\x33\x35\x61\x34\x66\x62\x34\x39\x2c\x20\x32\ +\x30\x32\x30\x2d\x30\x35\x2d\x30\x31\x29\x22\x0a\x20\x20\x20\x73\ +\x6f\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\ +\x22\x69\x6e\x66\x6f\x2e\x73\x76\x67\x22\x0a\x20\x20\x20\x69\x64\ +\x3d\x22\x73\x76\x67\x39\x22\x0a\x20\x20\x20\x76\x65\x72\x73\x69\ +\x6f\x6e\x3d\x22\x31\x2e\x31\x22\x0a\x20\x20\x20\x76\x69\x65\x77\ +\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\x32\x34\x20\x32\x34\x22\x0a\ +\x20\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x34\x70\x78\x22\ +\x0a\x20\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x34\x70\x78\x22\ +\x3e\x0a\x20\x20\x3c\x6d\x65\x74\x61\x64\x61\x74\x61\x0a\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\x6d\x65\x74\x61\x64\x61\x74\x61\x31\ +\x35\x22\x3e\x0a\x20\x20\x20\x20\x3c\x72\x64\x66\x3a\x52\x44\x46\ +\x3e\x0a\x20\x20\x20\x20\x20\x20\x3c\x63\x63\x3a\x57\x6f\x72\x6b\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\x66\x3a\x61\x62\ +\x6f\x75\x74\x3d\x22\x22\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ +\x3c\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x69\x6d\x61\x67\x65\ +\x2f\x73\x76\x67\x2b\x78\x6d\x6c\x3c\x2f\x64\x63\x3a\x66\x6f\x72\ +\x6d\x61\x74\x3e\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\ +\x3a\x74\x79\x70\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ +\x20\x72\x64\x66\x3a\x72\x65\x73\x6f\x75\x72\x63\x65\x3d\x22\x68\ +\x74\x74\x70\x3a\x2f\x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\ +\x63\x2f\x64\x63\x6d\x69\x74\x79\x70\x65\x2f\x53\x74\x69\x6c\x6c\ +\x49\x6d\x61\x67\x65\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x20\x20\ +\x3c\x2f\x63\x63\x3a\x57\x6f\x72\x6b\x3e\x0a\x20\x20\x20\x20\x3c\ +\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x0a\x20\x20\x3c\x2f\x6d\x65\ +\x74\x61\x64\x61\x74\x61\x3e\x0a\x20\x20\x3c\x64\x65\x66\x73\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x31\x33\x22\ +\x20\x2f\x3e\x0a\x20\x20\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\ +\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0a\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\ +\x6c\x61\x79\x65\x72\x3d\x22\x73\x76\x67\x39\x22\x0a\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\ +\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\x65\x64\x3d\x22\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\ +\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x2d\x38\x22\x0a\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\ +\x2d\x78\x3d\x22\x2d\x38\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x63\x79\x3d\x22\x31\x32\x22\x0a\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\ +\x31\x32\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\x32\x32\x2e\x34\x31\x36\x36\x36\ +\x37\x22\x0a\x20\x20\x20\x20\x20\x73\x68\x6f\x77\x67\x72\x69\x64\ +\x3d\x22\x66\x61\x6c\x73\x65\x22\x0a\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x31\x31\x22\x0a\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\ +\x64\x6f\x77\x2d\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x34\x38\x22\ +\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\ +\x69\x6e\x64\x6f\x77\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x32\x38\ +\x30\x22\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ +\x3a\x70\x61\x67\x65\x73\x68\x61\x64\x6f\x77\x3d\x22\x32\x22\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\ +\x67\x65\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x22\x0a\x20\x20\ +\x20\x20\x20\x67\x75\x69\x64\x65\x74\x6f\x6c\x65\x72\x61\x6e\x63\ +\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x67\x72\x69\x64\ +\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\ +\x20\x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x74\x6f\x6c\x65\x72\x61\ +\x6e\x63\x65\x3d\x22\x31\x30\x22\x0a\x20\x20\x20\x20\x20\x62\x6f\ +\x72\x64\x65\x72\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x31\x22\x0a\ +\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x63\x6f\x6c\x6f\x72\ +\x3d\x22\x23\x36\x36\x36\x36\x36\x36\x22\x0a\x20\x20\x20\x20\x20\ +\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x66\x66\x66\x66\ +\x66\x66\x22\x20\x2f\x3e\x0a\x20\x20\x3c\x21\x2d\x2d\x20\x55\x70\ +\x6c\x6f\x61\x64\x65\x64\x20\x74\x6f\x20\x53\x56\x47\x52\x65\x70\ +\x6f\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x76\ +\x67\x72\x65\x70\x6f\x2e\x63\x6f\x6d\x20\x2d\x2d\x3e\x0a\x20\x20\ +\x3c\x74\x69\x74\x6c\x65\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\x74\x69\x74\x6c\x65\x32\x22\x3e\x69\x63\x5f\x66\x6c\x75\x65\x6e\ +\x74\x5f\x62\x6f\x6f\x6b\x5f\x66\x6f\x72\x6d\x75\x6c\x61\x5f\x69\ +\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x5f\x32\x34\x5f\x72\x65\ +\x67\x75\x6c\x61\x72\x3c\x2f\x74\x69\x74\x6c\x65\x3e\x0a\x20\x20\ +\x3c\x64\x65\x73\x63\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\ +\x65\x73\x63\x34\x22\x3e\x43\x72\x65\x61\x74\x65\x64\x20\x77\x69\ +\x74\x68\x20\x53\x6b\x65\x74\x63\x68\x2e\x3c\x2f\x64\x65\x73\x63\ +\x3e\x0a\x20\x20\x3c\x67\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\ +\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\x66\x22\ +\x0a\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3d\ +\x22\x65\x76\x65\x6e\x6f\x64\x64\x22\x0a\x20\x20\x20\x20\x20\x66\ +\x69\x6c\x6c\x3d\x22\x6e\x6f\x6e\x65\x22\x0a\x20\x20\x20\x20\x20\ +\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x22\ +\x0a\x20\x20\x20\x20\x20\x73\x74\x72\x6f\x6b\x65\x3d\x22\x6e\x6f\ +\x6e\x65\x22\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\xf0\x9f\x94\ +\x8d\x2d\x53\x79\x73\x74\x65\x6d\x2d\x49\x63\x6f\x6e\x73\x22\x3e\ +\x0a\x20\x20\x20\x20\x3c\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x73\ +\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\ +\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x2d\ +\x72\x75\x6c\x65\x3d\x22\x6e\x6f\x6e\x7a\x65\x72\x6f\x22\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x66\x69\x6c\x6c\x3d\x22\x23\x32\x31\x32\ +\x31\x32\x31\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\x69\x63\x5f\x66\x6c\x75\x65\x6e\x74\x5f\x62\x6f\x6f\x6b\x5f\x66\ +\x6f\x72\x6d\x75\x6c\x61\x5f\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\ +\x6f\x6e\x5f\x32\x34\x5f\x72\x65\x67\x75\x6c\x61\x72\x22\x3e\x0a\ +\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\ +\x3a\x23\x66\x66\x66\x66\x66\x66\x22\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\xf0\x9f\x8e\xa8\x2d\x43\x6f\x6c\x6f\ +\x72\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\ +\x31\x38\x2c\x32\x20\x43\x31\x39\x2e\x33\x38\x30\x37\x2c\x32\x20\ +\x32\x30\x2e\x35\x2c\x33\x2e\x31\x31\x39\x32\x39\x20\x32\x30\x2e\ +\x35\x2c\x34\x2e\x35\x20\x4c\x32\x30\x2e\x35\x2c\x31\x38\x2e\x37\ +\x35\x20\x43\x32\x30\x2e\x35\x2c\x31\x39\x2e\x31\x36\x34\x32\x20\ +\x32\x30\x2e\x31\x36\x34\x32\x2c\x31\x39\x2e\x35\x20\x31\x39\x2e\ +\x37\x35\x2c\x31\x39\x2e\x35\x20\x4c\x35\x2e\x35\x2c\x31\x39\x2e\ +\x35\x20\x43\x35\x2e\x35\x2c\x32\x30\x2e\x30\x35\x32\x33\x20\x35\ +\x2e\x39\x34\x37\x37\x32\x2c\x32\x30\x2e\x35\x20\x36\x2e\x35\x2c\ +\x32\x30\x2e\x35\x20\x4c\x31\x39\x2e\x37\x35\x2c\x32\x30\x2e\x35\ +\x20\x43\x32\x30\x2e\x31\x36\x34\x32\x2c\x32\x30\x2e\x35\x20\x32\ +\x30\x2e\x35\x2c\x32\x30\x2e\x38\x33\x35\x38\x20\x32\x30\x2e\x35\ +\x2c\x32\x31\x2e\x32\x35\x20\x43\x32\x30\x2e\x35\x2c\x32\x31\x2e\ +\x36\x36\x34\x32\x20\x32\x30\x2e\x31\x36\x34\x32\x2c\x32\x32\x20\ +\x31\x39\x2e\x37\x35\x2c\x32\x32\x20\x4c\x36\x2e\x35\x2c\x32\x32\ +\x20\x43\x35\x2e\x31\x31\x39\x32\x39\x2c\x32\x32\x20\x34\x2c\x32\ +\x30\x2e\x38\x38\x30\x37\x20\x34\x2c\x31\x39\x2e\x35\x20\x4c\x34\ +\x2c\x34\x2e\x35\x20\x43\x34\x2c\x33\x2e\x31\x31\x39\x32\x39\x20\ +\x35\x2e\x31\x31\x39\x32\x39\x2c\x32\x20\x36\x2e\x35\x2c\x32\x20\ +\x4c\x31\x38\x2c\x32\x20\x5a\x20\x4d\x31\x38\x2c\x33\x2e\x35\x20\ +\x4c\x36\x2e\x35\x2c\x33\x2e\x35\x20\x43\x35\x2e\x39\x34\x37\x37\ +\x32\x2c\x33\x2e\x35\x20\x35\x2e\x35\x2c\x33\x2e\x39\x34\x37\x37\ +\x32\x20\x35\x2e\x35\x2c\x34\x2e\x35\x20\x4c\x35\x2e\x35\x2c\x31\ +\x38\x20\x4c\x31\x39\x2c\x31\x38\x20\x4c\x31\x39\x2c\x34\x2e\x35\ +\x20\x43\x31\x39\x2c\x33\x2e\x39\x34\x37\x37\x32\x20\x31\x38\x2e\ +\x35\x35\x32\x33\x2c\x33\x2e\x35\x20\x31\x38\x2c\x33\x2e\x35\x20\ +\x5a\x20\x4d\x31\x32\x2e\x32\x35\x2c\x39\x20\x43\x31\x32\x2e\x36\ +\x32\x39\x36\x38\x33\x33\x2c\x39\x20\x31\x32\x2e\x39\x34\x33\x34\ +\x38\x38\x39\x2c\x39\x2e\x32\x38\x32\x31\x35\x36\x38\x37\x20\x31\ +\x32\x2e\x39\x39\x33\x31\x35\x33\x31\x2c\x39\x2e\x36\x34\x38\x32\ +\x33\x30\x31\x39\x20\x4c\x31\x33\x2c\x39\x2e\x37\x35\x20\x4c\x31\ +\x33\x2c\x31\x34\x2e\x37\x35\x20\x43\x31\x33\x2c\x31\x35\x2e\x31\ +\x36\x34\x32\x20\x31\x32\x2e\x36\x36\x34\x32\x2c\x31\x35\x2e\x35\ +\x20\x31\x32\x2e\x32\x35\x2c\x31\x35\x2e\x35\x20\x43\x31\x31\x2e\ +\x38\x37\x30\x33\x31\x36\x37\x2c\x31\x35\x2e\x35\x20\x31\x31\x2e\ +\x35\x35\x36\x35\x31\x31\x31\x2c\x31\x35\x2e\x32\x31\x37\x38\x33\ +\x34\x37\x20\x31\x31\x2e\x35\x30\x36\x38\x34\x36\x39\x2c\x31\x34\ +\x2e\x38\x35\x31\x37\x36\x37\x37\x20\x4c\x31\x31\x2e\x35\x2c\x31\ +\x34\x2e\x37\x35\x20\x4c\x31\x31\x2e\x35\x2c\x39\x2e\x37\x35\x20\ +\x43\x31\x31\x2e\x35\x2c\x39\x2e\x33\x33\x35\x37\x39\x20\x31\x31\ +\x2e\x38\x33\x35\x38\x2c\x39\x20\x31\x32\x2e\x32\x35\x2c\x39\x20\ +\x5a\x20\x4d\x31\x32\x2e\x32\x35\x2c\x36\x20\x43\x31\x32\x2e\x38\ +\x30\x32\x33\x2c\x36\x20\x31\x33\x2e\x32\x35\x2c\x36\x2e\x34\x34\ +\x37\x37\x32\x20\x31\x33\x2e\x32\x35\x2c\x37\x20\x43\x31\x33\x2e\ +\x32\x35\x2c\x37\x2e\x35\x35\x32\x32\x38\x20\x31\x32\x2e\x38\x30\ +\x32\x33\x2c\x38\x20\x31\x32\x2e\x32\x35\x2c\x38\x20\x43\x31\x31\ +\x2e\x36\x39\x37\x37\x2c\x38\x20\x31\x31\x2e\x32\x35\x2c\x37\x2e\ +\x35\x35\x32\x32\x38\x20\x31\x31\x2e\x32\x35\x2c\x37\x20\x43\x31\ +\x31\x2e\x32\x35\x2c\x36\x2e\x34\x34\x37\x37\x32\x20\x31\x31\x2e\ +\x36\x39\x37\x37\x2c\x36\x20\x31\x32\x2e\x32\x35\x2c\x36\x20\x5a\ +\x22\x20\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\ +\x3c\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\ +\x00\x00\x14\x9f\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x88\x00\x00\x00\x81\x08\x06\x00\x00\x00\x1b\xb5\xf2\x9a\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x28\x0b\x00\x00\x28\x0b\ +\x01\xa9\x5a\x5f\x0f\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x14\x2c\x49\x44\ +\x41\x54\x78\x9c\xed\x9d\x79\x74\x54\x45\xd6\xc0\x7f\xd5\x69\x08\ +\x90\x84\x45\x76\x10\xc1\x91\x45\x08\x8a\xa0\x83\x20\x2a\x01\x51\ +\x11\x51\x07\xa4\x01\x61\x50\x54\x04\x5c\xd0\x11\xd7\x41\xd4\x28\ +\x8b\xe8\x30\xb8\x8d\x0b\x8a\xca\x0c\xa2\x90\x66\x51\x51\x14\x05\ +\x41\x44\x5c\x3e\x44\x50\x36\x45\x59\x5c\xd8\x77\x12\x48\x48\xd2\ +\xf5\xfd\x51\x89\x74\xfa\xbd\xee\x7e\xaf\xb7\x57\x81\xfe\x9d\xd3\ +\x87\x93\x7a\xaf\xaa\x2e\xdd\xf7\x55\xd5\xbb\xf7\xd6\x2d\xc1\x49\ +\x80\xec\x45\x1d\x2a\x90\x89\xa4\x31\x82\x46\xf8\x68\x80\xa0\x21\ +\x50\x0f\xa8\x0a\x54\x06\x32\x4a\x3e\xee\x92\x6a\xfb\x4b\xfe\x2d\ +\x02\xf6\xf8\x7d\x76\x20\xd8\x84\x64\x3d\x2e\x36\xd0\x92\xcd\x22\ +\x1b\x5f\x62\xff\x47\x89\x43\x38\x2d\x40\xac\x91\x1e\x9a\x22\xb9\ +\x00\x41\x07\xa0\x35\xd0\x0a\xa8\x19\xc7\x2e\xf3\x81\x6f\x90\x7c\ +\x8a\x8b\xc5\x1c\xe6\x6b\xf1\x21\x05\x71\xec\x2f\xa1\x94\x7b\x05\ +\x91\x1e\xea\x21\xe9\x89\xa0\x3b\xd0\x09\x35\x2a\x38\x49\x1e\x30\ +\x07\x98\x4a\x26\x4b\xca\xfb\xe8\x52\x2e\x15\x44\xf6\xe6\x54\xdc\ +\x5c\x8f\xe4\x1a\xe0\x3c\xc0\xe5\xb4\x4c\x41\xd8\x0a\x3c\x47\x2e\ +\x2f\x94\xd7\x51\xa5\xdc\x28\x88\xcc\xc2\x4d\x1d\x7a\x22\x19\x02\ +\x74\x07\x52\x9c\x96\xc9\x06\x9b\x91\x8c\x62\x16\x33\x05\x48\xa7\ +\x85\xb1\x83\xf6\x0a\x22\xb3\x71\xb1\x86\x6b\x11\x8c\x05\x9a\x3b\ +\x2d\x4f\x94\x7c\x4a\x0a\x83\xc4\x0c\xb6\x39\x2d\x88\x55\xb4\x56\ +\x10\xe9\xa1\x3b\x30\x09\x68\xe9\xb4\x2c\x31\xe4\x37\xa0\xbb\xf0\ +\xb2\xce\x69\x41\xac\xa0\xa5\x82\xc8\x41\xa4\x71\x94\x89\x08\x86\ +\xa1\xa9\x8c\x51\xb2\x1b\x17\x1d\xc5\x4c\x7e\x71\x5a\x90\x70\x68\ +\xf9\xe5\x4b\x0f\x4b\x80\xce\x61\x6e\x2b\x04\x3e\x46\xb2\x00\x17\ +\x5b\x90\xf8\x80\x86\x08\xba\x21\xb9\x12\xa8\x12\x6f\x39\xa3\x64\ +\x2d\x69\x9c\x27\xa6\x92\xef\xb4\x20\xa1\xd0\x4e\x41\xe4\x20\xd2\ +\xc8\xe7\x00\xc7\x0d\x56\x66\x7c\x84\x8f\x3b\xc5\x6c\x36\x9a\xb6\ +\xd1\x9b\xfa\xb8\x99\x80\xe4\xfa\xf8\x48\x19\x23\x24\x63\xc4\x2c\ +\x1e\x71\x5a\x8c\x50\xe8\xf7\x7a\x58\xc0\x39\x84\x52\x0e\xc1\xf3\ +\x64\x72\x65\x30\xe5\x00\x10\x73\xd8\x2e\x72\xb8\x01\xc1\xc8\x78\ +\x88\x18\x33\x04\x77\x4a\x0f\xd5\x9c\x16\x23\x14\xfa\x29\x88\xa4\ +\x59\x88\xab\xf3\x68\xc5\x3f\xac\x1a\x9f\x44\x0e\x4f\x23\x79\x2e\ +\x46\x92\xc5\x83\x6a\x08\x86\x3b\x2d\x44\x28\xf4\x53\x10\xc1\x19\ +\x41\xae\xe4\x03\x77\xd8\xb6\x4c\x0a\x1e\x02\x76\x44\x2b\x56\xdc\ +\x90\x0c\x70\x5a\x84\x50\xe8\xa7\x20\x3e\x6a\x99\x96\x4b\xe6\x0a\ +\x2f\xbf\xda\x6d\x4e\x78\xc9\x45\x30\x25\x6a\xb9\xe2\xc7\xd9\xb2\ +\x5f\xd0\x87\xc2\x71\xf4\x53\x10\x41\x8d\x20\xe5\x1f\x46\xdc\xa6\ +\x64\x7e\xc4\x75\x13\x41\x31\x57\x39\x2d\x42\x30\xf4\x53\x10\x38\ +\xc5\xb4\x54\xb0\x29\x8a\x36\x37\x47\x51\x37\xfe\xb8\xb8\xc0\x69\ +\x11\x82\xa1\xa3\x82\x54\x37\x2d\x2d\xa6\x28\x8a\x36\x8f\x45\x51\ +\x37\xfe\x48\xce\x77\x5a\x84\x60\xe8\xa8\x20\xc1\xa6\x98\x86\x11\ +\xb7\xe8\xa2\x51\xc4\x75\x13\xc3\x69\xd2\xe3\x78\x98\x82\x29\x3a\ +\x2a\x48\x65\xd3\x52\x17\x97\x44\xdc\xa2\x2f\x8a\xba\x89\x42\x72\ +\xa6\xd3\x22\x98\xa1\xa3\x82\x98\xbb\xf1\x25\x7d\xe5\x40\xaa\xda\ +\x6d\x4c\x7a\x48\x01\x6e\x8c\x56\xa8\xb8\x23\xf4\xf4\x54\xeb\xa8\ +\x20\xc1\xac\xa8\xb5\x38\xc6\xa3\xb6\x5b\x93\x0c\x43\x85\x1e\xea\ +\x4d\x68\x03\xa1\x63\x94\x27\x05\x01\xb8\x5b\xf6\xb1\xee\x5f\x91\ +\x7d\xc8\x42\x30\x29\x06\x32\xc5\x1f\x41\x13\xa7\x45\x30\x23\xd4\ +\x8f\xe1\x14\xa1\x64\x12\x08\xa6\xca\xbe\x34\xa3\x0a\xe3\x82\x79\ +\x42\xa5\x87\x14\x04\xc3\x91\x4c\x02\x2a\xc6\x47\xcc\x98\x53\xdb\ +\x69\x01\xcc\xd0\xcf\x9b\xeb\xe1\x08\xc1\x16\xaa\x65\xf9\x15\xc1\ +\x14\x24\x0b\x70\xb3\x95\x7c\x8a\xa8\xc8\xa9\x14\xd3\x0d\xc1\x8d\ +\x40\x66\x9c\x45\x8d\x35\xeb\x85\x97\x56\x4e\x0b\x11\x88\x8e\x0a\ +\x92\x87\xfe\xb1\x1c\xf1\x60\x8f\xf0\xea\x37\x8a\xe8\xb8\x06\x29\ +\xd7\xdb\x04\xa2\x40\x4b\xb7\x7f\x52\x41\xf4\xa1\x82\xcc\xd2\x6f\ +\x4d\x98\x54\x10\x9d\xa8\x4d\x25\xa7\x45\x08\x44\x47\x05\x29\x76\ +\x5a\x00\xc7\x28\xd2\x6f\xed\xa5\xdd\x90\x46\x21\x4d\xa9\xa2\xd9\ +\xe2\xb9\x90\x3a\xc0\x86\xb8\xf7\xe3\xd6\xef\x81\xd5\x4e\x41\xc4\ +\x3b\x1c\x70\x5a\x86\x40\xa4\x87\xd4\x84\x74\xe4\x8e\xca\x63\x1d\ +\x17\xb4\xd3\xd8\x93\x9a\xa3\xfa\x29\x48\x54\x23\x88\xec\x4f\x23\ +\x7c\xb4\x07\xea\xe1\xa3\x06\x90\x6e\x72\x5b\x3a\x82\x0a\xe1\x1b\ +\x43\xe0\x0a\x12\x0b\xe2\x34\x32\x41\x8b\x47\x9f\x7e\xeb\x2f\xdb\ +\x73\xbd\xec\x47\x3b\x24\x83\x91\x5c\x0b\x34\x88\x83\x4c\x27\x2f\ +\x92\x1c\x04\x07\x10\x14\xe1\x63\x3b\x82\x4d\x08\x7e\xa7\x98\x5d\ +\xb8\x38\x42\x05\x0e\xd3\x9c\x83\x89\x4c\x29\x61\x59\x41\x64\x3f\ +\x5a\xe2\x63\x22\xd0\x23\x8e\xf2\x24\x09\x4f\x3e\xb0\x11\xf8\x09\ +\xc1\x7a\x24\x4b\x81\x65\xc2\xcb\xd1\x78\x74\x16\x56\x41\x64\x16\ +\x6e\x6a\x31\x16\xc1\x7d\x24\xd7\x2c\xba\x52\x00\x2c\x07\x66\x50\ +\x91\x19\x62\x3a\x87\x62\xd5\x70\x48\x05\x91\xbd\xa8\x89\x9b\x39\ +\xc0\xc5\xb1\xea\x30\x49\xdc\x39\x82\xc4\x4b\x0a\x4f\x8a\x99\xac\ +\x8f\xb6\xb1\xa0\x0a\x22\x07\x50\x83\x42\x16\x02\xed\xa2\xed\x24\ +\x89\x23\x14\x03\x6f\xe1\xe2\xb1\x68\xb2\x08\x98\x2a\x88\xbc\x82\ +\x54\xd2\x59\x02\x74\x88\xb4\xe1\x24\xda\x90\x8f\x20\x1b\xc9\x44\ +\xe1\xb5\xff\x96\x64\xbe\xa6\x48\xe3\x19\x92\xca\x71\xa2\x50\x09\ +\xc9\x04\x60\x99\xf4\x70\xba\xdd\xca\x86\x11\x44\x7a\xb8\x1a\x78\ +\x37\x16\x92\x25\xd1\x8e\xbd\x48\xfa\x88\x59\x2c\xb1\x5a\xa1\x8c\ +\x82\x48\x0f\x95\x81\x75\xa0\x67\x7c\x64\x92\x98\x70\x0c\xc1\x60\ +\x91\xc3\xdb\x56\x6e\x0e\x9c\x62\x46\x92\x54\x8e\x13\x9d\x8a\x48\ +\xa6\xc9\x3e\xf4\xb7\x72\xf3\x9f\x23\x88\xbc\x8a\x2a\x54\x62\x0b\ +\x9a\x06\xcf\x26\x89\x39\x85\x40\x2f\xe1\xe5\x83\x50\x37\x1d\xf7\ +\xc5\x54\x66\x08\x32\x06\xca\xe1\xae\x08\x2d\xad\x9a\x4d\x24\xe4\ +\x1d\x00\x5f\x31\x1c\x3d\x04\xb9\xfb\xd4\xdf\x49\x12\x41\x05\xe0\ +\x6d\xe9\xa1\x43\xa8\x8c\x8b\xc7\x47\x10\x0f\xab\x80\x36\x51\x77\ +\x5b\xad\x2e\xbc\x1a\x45\xbe\x96\xbc\xfd\xb0\xe3\x17\x58\xbf\x14\ +\x56\x7f\x0c\x6b\x16\x41\xb1\x76\x4e\xce\x13\x89\xf5\x14\x70\xbe\ +\x78\x8f\xc3\x66\x17\x05\x80\xf4\xd0\x0a\x58\x1b\x93\xee\xa2\x55\ +\x90\x40\x76\x6e\x82\xb9\xe3\x61\xc9\x54\x35\xd2\x24\x89\x3d\x82\ +\xc9\x22\xc7\x3c\x15\x96\x5a\xa4\x4a\x3c\x09\x15\xc8\x0e\x75\xff\ +\x02\xc3\xa7\xc0\xc3\x0b\xa1\x6a\x72\x79\x14\x17\x24\x43\x65\x5f\ +\xba\x99\x5d\x52\x0a\x22\xb8\x34\xa1\x02\x45\x42\x66\x16\x8c\x5d\ +\x0e\x19\xe6\x19\xaa\x92\x44\x85\x40\xf2\x82\x1c\x6a\x8c\xdb\x71\ +\xcb\xab\xc9\x00\xda\xc7\x5d\x84\x71\xdd\xe1\xf0\x1e\xf3\x6b\x95\ +\xd2\x21\xad\x06\xd4\x6b\x0a\x67\x76\x82\xb3\xba\xa9\xb2\x40\xea\ +\x35\x85\x11\xd3\xe0\x89\x2b\x41\x9e\xbc\xc1\xef\x71\xa2\x39\x07\ +\xb8\x19\x78\xd9\xbf\x50\xc8\x3e\x5c\x84\x60\x69\xcc\xba\x09\xb6\ +\x06\x19\xd6\x00\xf6\x6f\xb7\xd6\x46\x46\x4d\xe8\xfb\x18\x5c\x7e\ +\xbb\xf9\xf5\x57\x87\xc3\x27\x93\x23\x97\x31\x49\x30\xb6\x91\x4f\ +\x33\x31\x8f\x23\xa5\x05\x2e\x5c\x9c\xed\xa4\x44\xa6\x1c\xde\x0b\ +\xaf\xdd\xa1\x3e\x66\xf4\xd4\x3b\x3f\x6e\x39\xa6\x01\x95\xcb\x66\ +\x4f\x70\xe1\xd3\x38\x77\xc6\x82\x17\xe0\x3b\x93\xe4\x86\xf5\x9b\ +\x43\x83\x16\x89\x97\xe7\x64\x40\x32\x42\xfa\x99\x3f\x5c\x08\x4e\ +\x73\x52\x9e\xb0\x7c\xfc\x92\x79\x79\xe3\xe8\x4d\x36\x65\x48\xa9\ +\xa0\x14\xaf\xc5\x05\xf0\xd7\x6b\xd4\xe7\xcc\x0b\x95\x22\xba\xca\ +\xd3\xd9\x45\x51\xd3\x0a\x0f\x5d\x4a\xff\x70\x03\xa7\x3a\x28\x4c\ +\x78\x36\x7c\x6e\x5e\x5e\x3d\x06\x39\xdf\x2a\x67\xc0\x05\xfd\xa0\ +\x6d\x0f\xb5\x30\xae\x9c\x61\x7e\x5f\xde\x7e\x58\xb3\x18\x96\xcf\ +\x84\xaf\x66\x59\x5b\x20\xd7\x68\x00\x3d\xee\x34\x96\x17\x1d\x83\ +\x39\xe3\xa1\x30\xc2\x43\x1e\x84\x80\xab\xef\x87\xf4\x80\x5c\x7f\ +\x87\xf7\xc2\xbc\x89\x20\x63\x70\xa0\x95\x64\x20\xf0\x29\x28\x05\ +\xa9\x13\x7d\x8b\x71\x24\xef\x00\x14\x16\x40\x85\x80\xbd\x4b\xee\ +\x28\xf2\xc2\xa4\xb8\xa1\xc7\x5d\xd0\xfb\x21\xf5\xf6\x14\x8e\xb4\ +\x1a\x70\x7e\x6f\xf5\xf9\x6d\x0d\xbc\x7e\x27\xac\x5d\x1c\xba\xce\ +\xfe\x6d\x50\xa5\x3a\x5c\x3a\xcc\x78\x2d\xbd\x26\xbc\x16\x64\x01\ +\x1e\x8e\xab\xee\x85\x81\x13\xca\x96\x15\x17\xc1\xf8\xee\xb1\x51\ +\x0e\x00\x41\x2f\xe9\xe1\x56\xe1\xe5\x98\x0b\x48\x8b\x4d\xab\x71\ +\x22\xc5\x6d\xae\x0c\x79\xfb\x8d\x65\x56\x48\xab\x0e\xa3\x3f\x86\ +\x41\x13\xad\x29\x47\x20\x8d\x5a\xc3\xc3\x9f\x40\xf7\x20\x0b\x68\ +\x7f\x5e\x1f\x01\x3f\x2e\x37\x96\x5f\x7e\x1b\x5c\x34\xd0\x7e\xdf\ +\xcd\xce\x87\xeb\xc6\x19\xcb\xdf\xbc\x1f\x7e\x58\x64\xbf\xbd\xe0\ +\xd4\x40\x92\x05\xca\x50\x66\x25\x9b\x8f\x73\x64\xd4\x52\xc3\x6a\ +\x20\x56\x5f\x99\xfd\xa9\xdd\x18\xc6\x7c\x01\x99\x5d\xcc\xaf\x1f\ +\xdc\x09\x3f\x7d\x09\xdf\xcd\x57\x23\xc4\xef\xeb\xcc\xa7\x13\x57\ +\x0a\xdc\xf4\x3c\x74\xb9\x29\x74\x7f\xc5\x85\xf0\xdc\x00\x35\xfc\ +\x07\x32\xe4\x45\x65\xd7\xb1\x4a\x46\x2d\x18\xe9\x55\x6b\x25\x7f\ +\x3e\x9f\x0e\x1f\x3c\x6d\xbd\x1d\xab\x94\xa4\x1d\x75\xa3\xfb\xe9\ +\x91\xcd\x82\x44\x3e\xfe\xf2\x7f\xf6\xda\x49\xab\x0e\xa3\x3e\x82\ +\x86\x01\xe9\x48\x0b\xf3\x61\xd1\x14\x65\x57\xf9\x6d\x8d\x49\xbd\ +\x1a\xd0\xd1\x03\xbd\x46\x29\x05\xf3\xe7\xa6\xe7\xe1\xe7\xaf\xe1\ +\xb7\x10\x6e\xac\xdd\x5b\xe1\xb9\x81\x30\x6a\x3e\x08\xbf\xf0\x9b\ +\xca\x55\xe1\xee\x1c\x18\x7d\x41\xf8\xf5\x88\x70\xc1\x1d\xff\x83\ +\x9a\x01\xf9\x80\x37\x7f\x07\x93\x6f\x09\x5d\x37\x52\x24\x5d\x41\ +\x8d\x20\x7a\x9f\xe7\xda\xa1\x8f\xb1\x6c\xf3\x4a\x38\xb4\xdb\x5e\ +\x3b\x43\x5e\x34\x2a\xc7\xf6\x8d\xf0\xc0\xb9\x6a\x2a\x30\x53\x0e\ +\x50\x53\xd9\xc2\x57\xe0\xfe\xb6\xb0\x76\x49\xd9\x6b\xa9\x55\xe0\ +\xef\xff\x0a\xdf\xf7\xea\x05\xe0\x7d\xcc\x58\x7e\x7a\x5b\xb8\xc1\ +\x42\x12\xc6\x6b\xee\x87\xb6\x57\x94\x2d\x3b\xb4\x1b\x26\xf6\x82\ +\x63\x71\xd9\x2f\x05\xd0\x56\x7a\x48\x77\x81\xc6\x67\xa6\x9d\xde\ +\x0e\x2e\xbc\xce\x58\xbe\xf0\x55\x7b\xed\x9c\x75\x09\x74\x0a\x68\ +\x67\xf7\x56\x78\xe4\x22\x35\x8d\x58\x21\x6f\x3f\x4c\xec\x0d\x7b\ +\x02\x4e\x24\x39\xa7\x3b\x9c\x6a\x21\xf7\xdc\xec\xb1\x6a\xea\x0a\ +\xe4\xb2\x5b\xa1\x63\xdf\xe0\xf5\x5a\x5e\x04\xfd\xc6\x94\x2d\x2b\ +\x2e\x82\xa7\xfb\xa9\xff\x43\xfc\x48\xc1\x45\x6b\x17\x70\x30\x9e\ +\xbd\x44\x4c\xcd\x46\x70\xff\x3b\x65\x87\x65\x80\x6d\x3f\xc2\xe2\ +\xd7\xed\xb5\xd5\x37\xe0\xe9\x95\x3e\x98\xe4\x51\x6b\x0e\x3b\xe4\ +\xed\x87\x99\x01\x47\xcc\x09\x01\x5d\x2c\x24\x72\x96\x3e\x78\x7e\ +\x10\xec\x32\x39\x78\x62\xf8\xab\xe6\xeb\x91\xaa\xb5\xe1\xae\xb7\ +\xd5\x42\xdd\x9f\x69\xf7\x86\x7f\x8b\x8a\x05\xc5\xb4\x71\x01\x11\ +\xac\xf6\xe2\x88\x2b\x05\x3a\xf5\x87\xa7\xbe\x33\xce\xb9\x85\x05\ +\xf0\xd2\xcd\xca\x96\x60\x95\x46\xad\xa1\x45\xa7\xb2\x65\xcb\xde\ +\xb2\xbf\x86\x29\x65\xf9\x0c\x38\x1a\x10\x5b\x73\xe6\x85\xd6\xea\ +\xe6\xee\x83\x7f\xf7\x31\xae\x39\x4a\xd7\x23\x15\xfc\x92\x08\x08\ +\x97\x72\x4c\x9e\x12\x70\x86\xc1\x67\xff\x83\xf9\xcf\xda\x97\x3b\ +\x12\x04\x2d\xdd\x24\xea\xb8\xae\x5a\x8d\xa1\x62\xc0\x0b\x53\xc5\ +\x2a\x6a\x1e\x4f\xab\x01\x75\x9a\xa8\x1f\xb3\x7d\x2f\xe3\x97\x02\ +\x6a\x58\xfd\xcf\xf5\xf0\xe3\x17\xf6\xfa\x6d\x67\xb2\xd7\xdc\xee\ +\x14\xe5\x4f\x61\x81\x5a\x98\x9e\xe5\x17\x3e\x71\x7a\x3b\xf5\xe3\ +\x5a\x31\x7e\x6d\x5e\xa9\xd6\x3c\xc3\x02\x64\x28\x5d\x8f\x4c\xb9\ +\x4d\xfd\xdd\xeb\x9f\xd0\xe6\xf2\xb2\xf7\xfc\xb2\x42\x39\x2a\x13\ +\x47\x23\x37\x92\xcd\x09\x49\xf8\x34\xee\xcb\xc8\xeb\xe6\xee\x53\ +\x73\xee\x0f\x0b\xed\xd7\x0d\x8c\x8f\xcd\xcf\x85\x0d\xcb\x22\x97\ +\x05\xd4\xe2\xd6\x5f\x41\xdc\x15\x95\x52\xef\xb4\xb8\xc3\x71\xd1\ +\x14\x68\xde\xd1\xf8\x9a\x7c\xd9\xad\xb0\xee\x33\x38\xb0\xc3\x38\ +\x2d\x1e\xdc\xa5\xd6\x40\xf1\x5b\x94\x9a\xd1\xc8\x8d\x8b\xf5\xc4\ +\xc8\x00\x17\x73\xa4\x4f\xbd\xe7\x4f\xbb\xcf\xfe\x7a\x01\xd4\x30\ +\x1d\x38\xfc\x1f\xdc\x09\xad\xbb\x46\x27\x57\x9a\x49\x9e\x9b\xf4\ +\x53\xac\x2b\x08\xc0\x94\xdb\xa1\x49\x5b\x35\x72\xf8\x33\xec\x15\ +\xc8\xcf\x2b\xeb\xff\x29\x2e\x54\x6b\xa6\xbd\xbf\x45\x26\x6f\xe4\ +\xd4\x71\x23\xa3\xdf\x01\x1e\x17\xb6\x7e\xaf\xbe\x94\xed\x3f\x45\ +\xde\x46\x5a\x75\xa8\x12\x90\x9f\xb6\xee\x19\xca\x12\x1a\x6b\x02\ +\x7d\x23\xe1\x28\xcc\x87\x49\x7d\x60\xc2\x8a\xb2\x16\xdd\xca\x55\ +\xd5\xc7\x9f\xff\x8e\x54\x41\xdc\x89\x27\xcd\x45\x01\xab\x41\xbf\ +\xdc\x58\x9c\xd6\xda\xda\xeb\x63\x28\x32\x6a\xc6\x46\x16\x2b\xb8\ +\x23\xc8\x73\xb7\x73\x93\x7a\xb3\x09\xe5\xfc\x5b\x3a\x0d\x3e\xfa\ +\x4f\xe4\x72\x45\x47\x9a\x5b\xbc\xc7\x61\xe9\xe1\x07\xa0\x6d\xd8\ +\xdb\xa3\xe1\xa1\x8e\x70\x68\x97\xf9\xb5\xa6\xed\x61\xc4\x9b\x65\ +\x87\x55\xe1\x82\x3b\xdf\x84\x47\x3b\xc3\xa6\x6f\x23\xeb\x33\x12\ +\x5f\x4b\xa2\x59\xf9\x81\xf2\xee\x5e\x3b\xda\x78\xed\xd7\x1f\x60\ +\xf2\xd0\xc4\xcb\x74\x1c\xb7\x7a\xc1\x16\x2c\x43\xc6\x59\x41\xf6\ +\x6c\x0d\xee\x3f\xd9\xb9\x09\xaa\xd7\x37\x5a\x15\x53\xd3\xe0\x81\ +\x79\xf0\x50\x07\xa3\x81\xca\x0a\x81\x7e\x0b\x80\xbd\xbf\xc3\xb2\ +\xe9\xf6\xdb\x0a\xc7\x8e\x9f\x23\xaf\x1b\xcc\xf1\x58\xf7\x0c\x15\ +\x8f\xb2\x75\x75\xe4\x6d\x47\xc7\x31\xa5\x20\x3e\x3e\x46\x30\xc2\ +\x29\x29\x00\xe5\x70\xaa\xdf\x4c\xad\xe4\xfd\xa9\x51\x1f\x46\x7d\ +\x08\x0f\x77\xb2\xbf\xeb\x2e\x77\x9f\xb1\x2c\x6f\x3f\x4c\x7f\x30\ +\x72\x39\x63\x4d\x8b\x4e\x46\xf7\x7d\x29\xa9\x55\x94\xb1\xf0\xc1\ +\xf3\xcc\x1d\x7e\xf1\xe7\x58\xe9\xb6\x87\x45\x40\x9e\x13\x12\x94\ +\xe1\x8d\xbb\xcc\x5f\x65\x4f\x6d\x05\xf7\xce\xb5\x1f\x03\x92\x6b\ +\xf2\xa5\xea\xb4\x6d\xa2\x46\x7d\x73\x0f\xad\x3f\xb5\x9b\xc0\x6d\ +\x53\x8d\x16\xe5\xc4\x70\xc8\x05\x50\x92\x21\x2f\x02\x23\x43\x8c\ +\x29\x2e\x84\x49\x7d\xe1\x0f\x93\xac\xd7\x99\x59\xca\xe1\x66\x87\ +\xdc\x7d\xaa\x4d\x7f\xaa\xd7\x85\x6a\x1a\xc4\x48\x55\x48\x85\x7b\ +\xe7\x28\x25\xf1\x67\xd5\x47\xc6\x7b\xcf\xed\xa9\x0c\x67\x89\x67\ +\xc7\x71\xb5\x94\xc4\x61\x62\x8e\x80\xbc\xfd\xf0\x44\x0f\x73\x6f\ +\x6d\xd7\x9b\xed\x7d\x51\xc5\x45\xf0\x73\x80\x49\x5d\xb8\xe0\xec\ +\xcb\xa2\x93\x31\x16\x0c\x7e\xd6\x18\xca\xb0\x76\x31\x4c\xe8\x09\ +\x9f\xbc\x6c\xbc\xbf\xdf\xe3\xca\x31\x98\x58\x76\x1e\x57\x90\x3c\ +\xde\x03\x1c\x99\xe8\x0c\xec\xda\xac\x7c\x16\x66\x3e\x97\xfe\xe3\ +\x94\xaf\xc6\x2a\x6b\x3e\x35\x96\x5d\xfc\xf7\xc8\x65\x8b\x05\x5d\ +\x6e\x34\x86\x22\x1e\xd8\x01\xcf\x5c\xa7\xf6\x1f\x4f\xbd\xdb\xb8\ +\x30\x2d\xf5\xcd\xd4\x4a\x60\x8c\xb9\x60\xd3\x9f\x0a\x22\x3e\xa4\ +\x00\xc1\xb4\xc4\xf5\x1e\x86\xf5\x4b\xcd\x5f\xf1\x84\x80\xdb\xde\ +\xb0\xee\x20\xfb\xde\xc4\x28\xd6\xe6\x72\x68\xd5\x39\x3a\xf9\x22\ +\xe5\x2f\xe7\x1a\xa7\x4a\x5f\xb1\x0a\x2a\x2a\xb5\x16\x17\xe6\x2b\ +\xd7\x42\x7e\x6e\xd9\xfb\x4a\xa3\xca\x02\xe3\x73\xe3\x85\x64\x7d\ +\xd9\x95\x8f\x8b\x67\xd1\xc9\x68\xf6\xd9\x7f\x61\xee\x13\xc6\xf2\ +\x0a\x95\xe0\xbe\x77\xd4\x5b\x4f\x38\x36\x7c\x0e\x7f\x98\x18\x8b\ +\x6f\x7d\x2d\x36\x9b\xc1\x53\xd3\x54\x30\xb3\x15\x32\x6a\xc1\x3d\ +\xb3\xcb\x7a\x6d\x41\xc5\x8a\x04\x8e\x74\xdb\x7e\x3c\xee\xb8\xf3\ +\xa7\x69\x7b\x18\xfc\x4c\x64\xb2\xda\x25\x50\x41\xc4\x0c\xb6\x20\ +\x98\x99\x98\xde\x2d\x32\x63\x34\x7c\x3d\xdb\x58\x9e\x51\x13\xfe\ +\x39\x3f\xfc\x5b\x89\x94\x90\x93\x6d\x2c\xaf\x7b\x06\x3c\xf8\xbe\ +\x71\x91\x68\x15\x21\xa0\xdd\x95\x30\x71\x35\x74\xb3\x60\xcc\x72\ +\xa5\xc0\x5d\x6f\x19\xc3\x16\xd7\x2e\x86\xd9\x63\xcc\xeb\x2c\x9d\ +\x06\x8b\xdf\x30\x96\x5f\x3a\x1c\x3a\xdf\x60\x5f\x66\x7b\x14\x52\ +\xc0\xb7\xc6\x77\xa7\x62\x9e\x40\xa7\x53\x9f\xa4\x4f\xb9\xf9\x7f\ +\x59\x61\xbc\x56\xaf\xa9\xb2\x13\x04\x3e\x91\x81\x7c\xe5\x35\x8f\ +\xe6\x6a\xda\x1e\x9e\x5a\xa5\xa2\xcd\x02\x83\x72\x82\x51\x29\x1d\ +\xb2\x06\xc3\xc4\xef\x95\x82\xd5\x3d\xc3\x5a\xbd\xfe\x63\xe1\xec\ +\x80\x24\x0a\x07\x77\xaa\xa9\x25\x54\xde\x93\xd7\x47\x98\x47\xbd\ +\xdd\xf2\x12\x34\x39\xc7\x5a\xdf\x91\xb1\x52\xcc\xe3\x88\x41\x41\ +\xc4\x6c\xd6\x22\x98\x12\xcf\x9e\x6d\x53\x70\x04\x9e\xba\x46\x59\ +\x41\x03\x69\xd1\x09\x6e\x9f\x6a\x1e\xf9\x5e\x8a\x94\xf0\xc2\x60\ +\xe5\xa6\x0f\xa4\x5a\x1d\xf5\x64\x3f\xb7\x11\x06\xfd\x0b\xce\xbb\ +\x5a\xc5\xae\x56\xab\xa3\x46\xa7\x46\x99\xca\xb5\x7f\xe5\x3f\xd4\ +\x76\x89\xd7\xf6\xa8\x35\x50\x23\x1b\x3b\x56\xdb\xf7\x82\x6b\x1e\ +\x08\x90\xa9\x24\xc2\x2c\x5c\x74\x7e\x41\x9e\x5a\x8f\x14\x1c\x29\ +\x5b\x5e\xb1\x32\xdc\x33\xcb\xdc\xb3\x1c\x1b\x96\x42\xb0\x4c\xcb\ +\xbd\xa8\x83\x9b\x8d\x40\x55\xb3\xeb\x21\x89\xc5\xee\xfe\x60\x34\ +\x39\x07\x1e\xff\xdc\x3c\x35\xc4\x3b\x13\xe0\xad\x30\xaf\xc0\xb5\ +\x1b\x9b\x47\xb6\x47\xcb\xea\x05\x2a\xbd\x85\x19\x0d\xcf\x84\xf1\ +\x5f\x1b\x3d\xb4\xb3\xc7\xc2\xcc\x87\xad\xf7\x71\xc9\x10\x63\x90\ +\x11\xc0\xb7\xef\xab\x87\x27\xd6\xe9\x30\x04\x17\x8a\x1c\xbe\x30\ +\x35\xcf\x89\xb9\xec\x02\xee\x8b\x6d\x8f\x31\x60\xcb\x2a\x35\x24\ +\x9b\x7d\x19\x7f\x7b\x50\x7d\x89\xa1\xd8\xbd\x15\x46\x77\x84\x2f\ +\x66\xc4\x56\xae\x23\x41\xc2\x7a\x2b\x67\x28\x63\x58\xa0\x72\xac\ +\xfb\x0c\xbc\xd9\xf6\xfa\x58\x34\x05\xbe\x30\x49\x6d\x7a\x6e\x4f\ +\xe8\x3d\xca\x5e\x5b\xe1\xd9\x49\x2b\xbe\x84\x50\xc7\x7b\x78\x79\ +\x15\x30\xd9\x5a\xef\x30\x2b\xde\x83\x37\x1f\x30\xbf\x36\xe4\x45\ +\x68\x13\xc6\x08\x96\x77\x00\x9e\xbd\x0e\xc6\x5c\x1a\x5d\x64\x59\ +\xde\x01\x15\x1f\xfa\x58\x17\x78\xc6\xc4\x2e\x53\xfa\x3a\xde\xb0\ +\x65\xd9\xf2\x43\xbb\xe1\xd9\x01\x91\xe5\x5b\x7b\x65\x98\xf9\x34\ +\xe9\xc9\x0e\xff\xff\xb6\xc7\xf4\xd2\x43\x8b\x42\x1f\x07\xe2\xa1\ +\x21\xb0\x12\x3b\xfb\x77\x2b\xa5\x9b\xbb\xae\xe7\x8c\x33\x06\xfb\ +\x46\xc3\x15\x23\xcc\x63\x57\x8f\x1c\x82\x77\x9f\xb4\xfe\x03\x34\ +\xca\x54\x76\x91\x96\x17\x2b\xdb\x4a\xb0\x18\x92\xfc\x5c\xb5\x51\ +\x69\xd3\x0a\x95\x92\x62\xed\x12\xa3\x19\xdf\x9f\xfa\xcd\xa1\xab\ +\xc9\xce\xbb\x95\x1f\xc0\xfa\x20\x1b\xd2\xad\xd0\xf8\x6c\xb8\x70\ +\x80\xb1\xfc\xd0\x1e\x78\xff\xdf\xb1\xda\x9f\x9b\x59\x9a\x1a\x33\ +\xfc\x81\x42\x7d\xb9\x18\xc9\x42\xb0\x70\xee\xdc\x89\x40\x6a\x9a\ +\x52\x92\xf4\x53\x94\x73\xf0\xe8\x21\x35\x5a\x1c\xdc\x75\xb2\xa4\ +\xbd\xfa\x44\x78\xf9\x73\x38\xb2\x14\xae\x2c\xfb\x30\x0c\x81\x89\ +\x83\x20\xc9\x09\x87\xa0\xb3\xc8\x39\x9e\x92\xcc\x92\x0f\x59\xcc\ +\x62\x32\x70\x4f\xdc\x84\x4a\xa2\x0b\x0b\xfc\x95\x03\x6c\x9c\x41\ +\x27\xbc\x4c\x42\xf0\x48\xf8\x3b\x93\x94\x53\xf2\x71\x61\xc8\x78\ +\x63\x2b\x0a\x45\xe4\x30\x06\x18\x02\xd8\xd8\xda\x96\xa4\x5c\x20\ +\x18\x23\x66\x62\xd8\x42\x60\x3b\x4c\x49\x78\x79\x0d\x41\x77\xc0\ +\xe6\xf6\xfa\x24\x1a\xb3\x08\xc9\x93\x66\x17\x22\xde\x53\x57\x62\ +\x6d\x7d\x19\xe8\x15\xb1\x58\x49\x74\x60\x13\x45\xb4\x17\x73\xcd\ +\x63\x81\xa2\xde\x74\x29\xfb\x30\x10\xc1\x78\xd0\x3c\x5b\x62\x12\ +\x33\xb6\x90\x42\x17\x31\x83\x2d\xc1\x6e\x88\x3a\x12\x56\xcc\x62\ +\x3a\x69\xb4\x40\xbd\xe5\x24\xa7\x9d\xf2\xc3\x1a\x8a\xc9\x0a\xa5\ +\x1c\x10\x83\x11\xc4\x1f\x79\x05\xa9\x64\xd0\x1b\xc9\x50\xa0\x73\ +\xac\xdb\x4f\x12\x23\x04\xd3\x49\x65\x98\x98\x16\x7e\x27\x43\xdc\ +\x7e\x40\xd9\x9f\x06\x14\x71\x39\x2e\x2e\x43\x72\x11\x60\x62\x17\ +\x4f\x92\x60\x7e\x44\x30\x52\xe4\x60\x12\x1c\x63\x4e\xc2\x9e\x70\ +\xe9\xa1\x1a\x2e\x5a\x22\x69\x81\xa4\x3a\x92\x4c\x04\xad\x51\x29\ +\xb0\x32\xd1\x3d\x5f\x6b\xf9\x25\x0f\xf8\x04\xc9\x2b\xb4\x66\x41\ +\xa9\x13\xce\x2a\xda\x4c\x01\xd2\x43\x57\x20\xa6\xc9\x3e\x4d\x28\ +\x42\x30\x37\xce\x7d\x44\xc3\x41\xa4\x8d\x1f\x50\x92\x47\xa0\x4d\ +\x4a\x20\x11\xec\xc5\xc7\x5e\x24\x3f\xb0\x97\x55\x62\x49\xe4\x71\ +\xc6\x16\xe3\xec\x12\x80\x8f\xbc\xe8\x97\xcc\x61\x39\x2a\x72\x08\ +\x91\x31\x2e\x49\x20\x8e\xec\xe7\x33\x25\x45\x23\x65\x4d\xf2\x27\ +\x3a\xfd\x28\x89\x48\xe8\x2b\xe4\x00\xf4\xcb\x09\x91\x4b\x51\xb0\ +\x53\x27\x9d\x46\x1f\x05\xb1\x33\xf7\x46\x4e\x3a\x85\x98\x6c\xf9\ +\x77\x98\x54\xbe\x01\xce\x77\x5a\x0c\x33\xf4\x99\x62\x7c\x1a\x27\ +\xf4\x8d\x3f\xda\xbc\x2c\x04\xa2\x8f\x82\xb8\x4f\x6a\x05\xd1\xe7\ +\x77\x08\x40\x9f\x29\x06\x12\x9a\xdf\x31\x86\xec\x02\x36\x00\x7b\ +\x50\xb6\x9c\xb3\x80\x6a\x21\x6b\x18\x49\x2a\x48\x58\x5c\x1c\x4c\ +\xc8\x2a\x24\x76\x2c\x42\xf0\x38\xad\x58\xe6\x6f\x7c\x92\x1e\x2a\ +\x22\xb9\x0c\xc1\x63\x40\x3b\x8b\x6d\x25\x15\x24\x2c\x2d\xd8\xc7\ +\x5a\x8a\xd0\x49\x26\x73\x8a\x80\xbb\x85\x17\xd3\xd4\x83\xc2\xcb\ +\x31\xe0\x7d\x99\xcd\x7c\xd6\x30\x1e\x41\x90\x3d\x1a\x65\xab\xc5\ +\x54\xc2\x18\xa2\x8d\xe6\x96\x3c\x85\x41\x4e\x5e\xd6\x08\xc1\x88\ +\x60\xca\x51\xe6\xb6\x6c\x7c\x62\x16\x0f\x06\x0b\xc4\x09\x40\x9f\ +\x8c\x0a\x01\x68\xa3\x20\x25\x04\xc9\x93\xa9\x0d\x73\x44\x8e\xcd\ +\xe8\xfe\xd6\x8c\x02\xbe\x0b\x73\x97\x3e\x9b\xe5\x03\xd0\x4d\x41\ +\xb6\x38\x2d\x40\x48\x5c\x3c\x6a\xb7\x8a\xc8\xc6\x87\x08\x5b\x2f\ +\x39\x82\x58\x42\x60\xb2\xaf\x50\x1b\xd6\x89\x99\x04\x39\x96\x2a\ +\x0c\x92\x05\x84\x3e\x97\x27\xa9\x20\x96\x90\xd8\xc8\x86\x9f\x60\ +\x24\x2b\x23\xad\x5a\xb2\x70\x0d\xa5\x5c\x49\x05\xb1\x88\xc5\xf3\ +\xc1\x1c\x21\x5a\x13\x7d\xa8\x05\xb8\xb6\x46\x42\xbd\x14\xa4\x12\ +\x2b\xd0\xf7\x69\x3a\x25\xca\xfa\xc1\x73\x65\x09\x0d\xfd\x43\x25\ +\x68\xa5\x20\x25\x31\x92\x91\xcd\xf3\xf1\x46\xd0\x26\xd2\xaa\x72\ +\x28\x15\x80\xe0\x47\x57\xf8\xb0\x99\x63\x3c\x71\x68\xa5\x20\x00\ +\x48\x6c\x9e\x39\x96\x30\xce\x92\xd7\x12\x59\x6a\xa2\x7d\x74\x83\ +\x10\x61\x06\x2e\x22\x3c\x46\x3c\xfe\xe8\xa7\x20\x2e\xe6\x39\x2d\ +\x42\x50\x94\xf9\xdc\x16\x12\x44\xd8\x7a\x32\xa9\x20\xd6\x91\x2c\ +\x06\x4d\x87\x5c\x41\x5f\xe9\x61\xb0\xad\x3a\x1e\xb2\x81\xbf\x86\ +\xbc\x47\xea\x6b\x41\xd6\x4e\x41\x84\x97\x63\x48\xbc\x4e\xcb\x11\ +\x82\xc9\xb2\x0f\x61\x92\xa1\xa9\x91\x43\xf6\x25\x1b\x08\x9f\xa9\ +\xce\xa5\xef\xeb\xbd\x96\x4e\x22\xd9\x8f\xe6\xf8\x58\x47\x62\xc2\ +\x10\x23\x65\x3e\x3e\x1e\x67\x36\xdf\x08\x8e\x1f\x0b\x29\x3d\xa4\ +\x00\x5d\x81\xc7\x81\x0e\x41\x6b\xfb\x53\x44\xdd\x92\xc4\x81\xda\ +\xa1\xa5\x82\x00\xc8\xbe\xbc\x89\x64\xa0\xd3\x72\x58\x60\x1b\xf0\ +\x3d\x82\x03\x48\x6a\x03\x6d\x08\xf5\x4a\x6b\xe4\x57\xe1\xa5\x71\ +\xf8\xdb\x9c\x41\x5f\xd7\x7a\x21\x23\x71\x73\x29\xfa\x6f\xa8\x6a\ +\x00\x34\x88\xe2\x68\xd9\x38\x1c\xc1\x19\x3b\xb4\x5b\x83\x94\x52\ +\x32\xe4\xfe\x8d\xf2\x1b\x69\x16\x8e\x63\xc0\x68\x76\x93\xd0\xa3\ +\xb4\xed\xa2\xed\x14\x53\x8a\xf4\xd0\x19\x78\x17\xfb\x61\x7c\x3a\ +\xb3\x14\xb8\x4b\x78\x59\xe5\xb4\x20\xe1\xd0\x5e\x41\xe0\xcf\x45\ +\xeb\x0c\xe2\x7d\x74\x6b\xfc\xf9\x0a\x78\x44\x78\xf5\x9e\x56\xfc\ +\x29\x17\x0a\x02\x20\xb3\x70\x53\x9b\x5b\x80\x6c\xf4\x5f\x97\xf8\ +\x73\x04\x89\x17\xc1\x14\xe1\x25\x8a\xd4\xce\xce\x50\x6e\x14\xa4\ +\x14\x79\x35\x19\xa4\x72\x2f\x30\x14\xa8\xe7\xb4\x3c\x41\x28\x00\ +\x96\x00\x73\x80\x99\xc2\x1b\x32\x16\x44\x6b\xca\x9d\x82\x94\x22\ +\xb3\x70\x53\x87\x2b\x90\xdc\x08\xf4\x00\x12\x74\x4e\x57\x50\x36\ +\x96\x1c\x50\x3d\x9f\x02\x16\xe8\xba\x95\xd2\x2e\xe5\x56\x41\xfc\ +\x91\x57\x51\x85\x4a\x74\x42\x92\x85\xa0\x0b\x6a\xbb\x41\x3c\x15\ +\x66\x2b\xb0\x01\xc1\x6a\xe0\x4b\x0a\x59\xae\xab\xa1\x2b\x5a\x4e\ +\x08\x05\x09\xa4\xc4\x9a\x79\x3a\x82\x96\xf8\x68\x89\xa0\x09\x50\ +\x17\x65\xc0\x2a\xfd\x94\xe6\x9e\x4f\x41\x9d\x8b\x93\x07\x1c\x01\ +\x0e\x03\x87\x80\x3c\x24\x7f\xe0\x62\x1b\x3e\x7e\x47\xb0\x1d\xf8\ +\x99\x02\xd6\x9f\x28\xa3\x83\x15\xfe\x1f\x10\xf9\x6f\x27\x14\x10\ +\x41\x3f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +" + +qt_resource_name = b"\ +\x00\x05\ +\x00\x6f\xa6\x53\ +\x00\x69\ +\x00\x63\x00\x6f\x00\x6e\x00\x73\ +\x00\x08\ +\x05\xe2\x59\x27\ +\x00\x6c\ +\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\ +\x00\x08\ +\x0a\x61\x42\x7f\ +\x00\x69\ +\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x69\x00\x63\x00\x6f\ +\x00\x08\ +\x05\xa8\x57\x87\ +\x00\x63\ +\x00\x6f\x00\x64\x00\x65\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x09\ +\x0b\xc7\xa9\x07\ +\x00\x73\ +\x00\x68\x00\x65\x00\x65\x00\x74\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x08\ +\x04\xd2\x54\xc7\ +\x00\x69\ +\x00\x6e\x00\x66\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x0e\ +\x0a\xf7\x9f\x27\ +\x00\x77\ +\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x49\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ +" + +qt_resource_struct_v1 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x03\ +\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x8b\ +\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x13\ +\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x00\x26\x00\x01\x00\x00\x00\x01\x00\x00\x13\x8e\ +\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x45\x7c\ +\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x2b\x9c\ +" + +qt_resource_struct_v2 = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x03\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3a\x8b\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x1e\x13\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +\x00\x00\x00\x26\x00\x01\x00\x00\x00\x01\x00\x00\x13\x8e\ +\x00\x00\x01\x75\xda\x86\xa2\xd0\ +\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x00\x45\x7c\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x2b\x9c\ +\x00\x00\x01\x75\x39\x03\xa6\xb0\ +" + +qt_version = [int(v) for v in QtCore.qVersion().split('.')] +if qt_version < [5, 8, 0]: + rcc_version = 1 + qt_resource_struct = qt_resource_struct_v1 +else: + rcc_version = 2 + qt_resource_struct = qt_resource_struct_v2 + +def qInitResources(): + QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources()